From 8269b17aa76614e3e36ac61beab1eea4674729aa Mon Sep 17 00:00:00 2001 From: "saarsena@gmail.com" Date: Tue, 24 Mar 2026 10:46:22 -0400 Subject: [PATCH] first --- .github/README.txt | 1 + .github/workflows/build-linux.yml | 21 + .github/workflows/build-mac.yml | 25 + .github/workflows/build-mingw.yml | 27 + .github/workflows/build-windows.yml | 27 + LICENSE.txt | 338 + Linux/CodeBlocks/QuakeSpasm-SDL2.cbp | 357 + Linux/CodeBlocks/QuakeSpasm.cbp | 356 + ....sourceforge.quakespasm.Quakespasm.desktop | 11 + ...ceforge.quakespasm.Quakespasm.metainfo.xml | 70 + Linux/sgml/Makefile.sgml | 6 + Linux/sgml/Quakespasm.sgml | 748 + Linux/sgml/sgml2rawtxt | 4 + MacOSX/AppController.h | 45 + MacOSX/AppController.m | 211 + MacOSX/Build_Instructions.md | 68 + MacOSX/English.lproj/InfoPlist.strings | Bin 0 -> 536 bytes .../English.lproj/Launcher.nib/designable.nib | 2705 ++++ .../Launcher.nib/keyedobjects.nib | Bin 0 -> 21291 bytes MacOSX/Info.plist | 41 + MacOSX/Launcher-Info.plist | 20 + MacOSX/QuakeArgument.h | 36 + MacOSX/QuakeArgument.m | 80 + MacOSX/QuakeArguments.h | 40 + MacOSX/QuakeArguments.m | 223 + MacOSX/QuakeSpasm.icns | Bin 0 -> 144338 bytes MacOSX/QuakeSpasm.xcodeproj/project.pbxproj | 2307 +++ .../contents.xcworkspacedata | 7 + .../xcschemes/QuakeSpasm-SDL2-M1.xcscheme | 78 + .../xcschemes/QuakeSpasm-SDL2-x64.xcscheme | 78 + .../xcschemes/QuakeSpasm.xcscheme | 98 + .../QuakeSpasmPPC.xcodeproj/project.pbxproj | 1074 ++ MacOSX/SDL.framework/Headers | 1 + MacOSX/SDL.framework/License.rtf | 283 + MacOSX/SDL.framework/ReadMe.txt | 171 + MacOSX/SDL.framework/Resources | 1 + MacOSX/SDL.framework/SDL | 1 + MacOSX/SDL.framework/UniversalBinaryNotes.rtf | 150 + MacOSX/SDL.framework/Versions/A/Headers/SDL.h | 101 + .../Versions/A/Headers/SDL_active.h | 63 + .../Versions/A/Headers/SDL_audio.h | 284 + .../Versions/A/Headers/SDL_byteorder.h | 29 + .../Versions/A/Headers/SDL_cdrom.h | 202 + .../Versions/A/Headers/SDL_config.h | 45 + .../Versions/A/Headers/SDL_config_macosx.h | 151 + .../Versions/A/Headers/SDL_copying.h | 22 + .../Versions/A/Headers/SDL_cpuinfo.h | 69 + .../Versions/A/Headers/SDL_endian.h | 273 + .../Versions/A/Headers/SDL_error.h | 72 + .../Versions/A/Headers/SDL_events.h | 356 + .../Versions/A/Headers/SDL_getenv.h | 28 + .../Versions/A/Headers/SDL_joystick.h | 187 + .../Versions/A/Headers/SDL_keyboard.h | 135 + .../Versions/A/Headers/SDL_keysym.h | 326 + .../Versions/A/Headers/SDL_loadso.h | 78 + .../Versions/A/Headers/SDL_main.h | 106 + .../Versions/A/Headers/SDL_mouse.h | 143 + .../Versions/A/Headers/SDL_mutex.h | 177 + .../Versions/A/Headers/SDL_name.h | 11 + .../Versions/A/Headers/SDL_opengl.h | 7348 +++++++++ .../Versions/A/Headers/SDL_platform.h | 110 + .../Versions/A/Headers/SDL_quit.h | 55 + .../Versions/A/Headers/SDL_rwops.h | 155 + .../Versions/A/Headers/SDL_stdinc.h | 626 + .../Versions/A/Headers/SDL_syswm.h | 232 + .../Versions/A/Headers/SDL_thread.h | 118 + .../Versions/A/Headers/SDL_timer.h | 125 + .../Versions/A/Headers/SDL_types.h | 28 + .../Versions/A/Headers/SDL_version.h | 91 + .../Versions/A/Headers/SDL_video.h | 952 ++ .../Versions/A/Headers/begin_code.h | 179 + .../Versions/A/Headers/close_code.h | 45 + .../Versions/A/Resources/Info.plist | 42 + .../A/Resources/SDLMain.nib/objects.nib | Bin 0 -> 1701 bytes MacOSX/SDL.framework/Versions/A/SDL | Bin 0 -> 1069956 bytes .../Versions/A/devel-lite/ReadMeDevLite.txt | 12 + .../Versions/A/devel-lite/SDLMain.h | 16 + .../Versions/A/devel-lite/SDLMain.m | 402 + MacOSX/SDL.framework/Versions/Current | 1 + MacOSX/SDL2.framework/Headers | 1 + MacOSX/SDL2.framework/Resources | 1 + MacOSX/SDL2.framework/SDL2 | 1 + .../SDL2.framework/Versions/A/Headers/SDL.h | 232 + .../Versions/A/Headers/SDL_assert.h | 320 + .../Versions/A/Headers/SDL_atomic.h | 395 + .../Versions/A/Headers/SDL_audio.h | 1462 ++ .../Versions/A/Headers/SDL_bits.h | 126 + .../Versions/A/Headers/SDL_blendmode.h | 198 + .../Versions/A/Headers/SDL_clipboard.h | 94 + .../Versions/A/Headers/SDL_config.h | 55 + .../Versions/A/Headers/SDL_config_macosx.h | 279 + .../Versions/A/Headers/SDL_cpuinfo.h | 563 + .../Versions/A/Headers/SDL_endian.h | 357 + .../Versions/A/Headers/SDL_error.h | 163 + .../Versions/A/Headers/SDL_events.h | 1150 ++ .../Versions/A/Headers/SDL_filesystem.h | 145 + .../Versions/A/Headers/SDL_gamecontroller.h | 1002 ++ .../Versions/A/Headers/SDL_gesture.h | 117 + .../Versions/A/Headers/SDL_haptic.h | 1341 ++ .../Versions/A/Headers/SDL_hidapi.h | 451 + .../Versions/A/Headers/SDL_hints.h | 2182 +++ .../Versions/A/Headers/SDL_joystick.h | 946 ++ .../Versions/A/Headers/SDL_keyboard.h | 337 + .../Versions/A/Headers/SDL_keycode.h | 353 + .../Versions/A/Headers/SDL_loadso.h | 115 + .../Versions/A/Headers/SDL_locale.h | 103 + .../Versions/A/Headers/SDL_log.h | 404 + .../Versions/A/Headers/SDL_main.h | 235 + .../Versions/A/Headers/SDL_messagebox.h | 193 + .../Versions/A/Headers/SDL_metal.h | 113 + .../Versions/A/Headers/SDL_misc.h | 79 + .../Versions/A/Headers/SDL_mouse.h | 454 + .../Versions/A/Headers/SDL_mutex.h | 471 + .../Versions/A/Headers/SDL_name.h | 33 + .../Versions/A/Headers/SDL_opengl.h | 2183 +++ .../Versions/A/Headers/SDL_opengl_glext.h | 11180 +++++++++++++ .../Versions/A/Headers/SDL_opengles.h | 39 + .../Versions/A/Headers/SDL_opengles2.h | 52 + .../Versions/A/Headers/SDL_opengles2_gl2.h | 621 + .../Versions/A/Headers/SDL_opengles2_gl2ext.h | 2050 +++ .../A/Headers/SDL_opengles2_gl2platform.h | 30 + .../A/Headers/SDL_opengles2_khrplatform.h | 282 + .../Versions/A/Headers/SDL_pixels.h | 652 + .../Versions/A/Headers/SDL_platform.h | 243 + .../Versions/A/Headers/SDL_power.h | 88 + .../Versions/A/Headers/SDL_quit.h | 58 + .../Versions/A/Headers/SDL_rect.h | 376 + .../Versions/A/Headers/SDL_render.h | 1908 +++ .../Versions/A/Headers/SDL_revision.h | 2 + .../Versions/A/Headers/SDL_rwops.h | 855 + .../Versions/A/Headers/SDL_scancode.h | 413 + .../Versions/A/Headers/SDL_sensor.h | 301 + .../Versions/A/Headers/SDL_shape.h | 155 + .../Versions/A/Headers/SDL_stdinc.h | 763 + .../Versions/A/Headers/SDL_surface.h | 997 ++ .../Versions/A/Headers/SDL_system.h | 575 + .../Versions/A/Headers/SDL_syswm.h | 386 + .../Versions/A/Headers/SDL_thread.h | 464 + .../Versions/A/Headers/SDL_timer.h | 222 + .../Versions/A/Headers/SDL_touch.h | 150 + .../Versions/A/Headers/SDL_types.h | 29 + .../Versions/A/Headers/SDL_version.h | 188 + .../Versions/A/Headers/SDL_video.h | 2089 +++ .../Versions/A/Headers/SDL_vulkan.h | 219 + .../Versions/A/Headers/begin_code.h | 187 + .../Versions/A/Headers/close_code.h | 40 + .../Versions/A/Resources/Info.plist | 50 + .../Versions/A/Resources/License.txt | 19 + .../Versions/A/Resources/ReadMe.txt | 32 + .../Versions/A/Resources/default.metallib | Bin 0 -> 21952 bytes MacOSX/SDL2.framework/Versions/A/SDL2 | Bin 0 -> 4649424 bytes MacOSX/SDL2.framework/Versions/Current | 1 + MacOSX/SDLApplication.h | 29 + MacOSX/SDLApplication.m | 44 + MacOSX/SDLMain.h | 16 + MacOSX/SDLMain.m | 113 + MacOSX/ScreenInfo.h | 38 + MacOSX/ScreenInfo.m | 61 + MacOSX/codecs/include/FLAC/callback.h | 185 + MacOSX/codecs/include/FLAC/export.h | 97 + MacOSX/codecs/include/FLAC/format.h | 1023 ++ MacOSX/codecs/include/FLAC/ordinals.h | 86 + MacOSX/codecs/include/FLAC/stream_decoder.h | 1559 ++ MacOSX/codecs/include/flac_config.txt | 3 + MacOSX/codecs/include/mad.h | 1009 ++ MacOSX/codecs/include/mikmod.h | 880 + MacOSX/codecs/include/mikmod_config.txt | 2 + MacOSX/codecs/include/mpg123.h | 1215 ++ MacOSX/codecs/include/mpg123_config.txt | 5 + MacOSX/codecs/include/ogg/config_types.h | 25 + MacOSX/codecs/include/ogg/ogg.h | 210 + MacOSX/codecs/include/ogg/os_types.h | 147 + MacOSX/codecs/include/opus/opus.h | 906 ++ MacOSX/codecs/include/opus/opus_defines.h | 659 + MacOSX/codecs/include/opus/opus_multistream.h | 660 + MacOSX/codecs/include/opus/opus_types.h | 159 + MacOSX/codecs/include/opus/opusfile.h | 2164 +++ MacOSX/codecs/include/opusfile.h | 3 + MacOSX/codecs/include/vorbis/codec.h | 242 + MacOSX/codecs/include/vorbis/vorbisfile.h | 205 + MacOSX/codecs/include/xmp.h | 407 + MacOSX/codecs/lib/libFLAC.dylib | Bin 0 -> 360540 bytes MacOSX/codecs/lib/libmad.dylib | Bin 0 -> 514539 bytes MacOSX/codecs/lib/libmikmod.dylib | Bin 0 -> 877900 bytes MacOSX/codecs/lib/libmpg123.dylib | Bin 0 -> 805966 bytes MacOSX/codecs/lib/libogg.dylib | Bin 0 -> 152235 bytes MacOSX/codecs/lib/libopus.dylib | Bin 0 -> 569548 bytes MacOSX/codecs/lib/libopusfile.dylib | Bin 0 -> 236496 bytes MacOSX/codecs/lib/libvorbis.dylib | Bin 0 -> 747726 bytes MacOSX/codecs/lib/libvorbisfile.dylib | Bin 0 -> 203138 bytes MacOSX/codecs/lib/libxmp.dylib | Bin 0 -> 1815769 bytes Misc/QuakeSpasm_512.png | Bin 0 -> 51125 bytes Misc/fitzquake080.txt | 417 + Misc/fitzquake080sdl.txt | 89 + Misc/fitzquake085.txt | 532 + Misc/fix_externaltex.patch | 113 + Misc/mk_header.c | 102 + Misc/qs_pak/Makefile | 18 + Misc/qs_pak/default.cfg | 118 + Misc/qs_pak/default.cfg.diff | 76 + Misc/qs_pak/gfx/conback.lmp | Bin 0 -> 327688 bytes Misc/qs_pak/maps/e1m1.diff | 18 + Misc/qs_pak/maps/e1m1@c49d.ent | 1970 +++ Misc/qs_pak/maps/e1m2.diff | 28 + Misc/qs_pak/maps/e1m2@0caa.ent | 3019 ++++ Misc/qs_pak/maps/e1m4.diff | 30 + Misc/qs_pak/maps/e1m4@958e.ent | 3171 ++++ Misc/qs_pak/maps/e2m2.diff | 54 + Misc/qs_pak/maps/e2m2@fbfe.ent | 2005 +++ Misc/qs_pak/maps/e2m3.diff | 74 + Misc/qs_pak/maps/e2m3@237a.ent | 2865 ++++ Misc/qs_pak/maps/e2m7.diff | 22 + Misc/qs_pak/maps/e2m7@10a8.ent | 3633 +++++ Misc/qs_pak/mkpak.sh | 131 + Misc/systest.c | 256 + Quake/Makefile | 299 + Quake/Makefile.darwin | 336 + Quake/Makefile.emscripten | 261 + Quake/Makefile.w32 | 292 + Quake/Makefile.w64 | 285 + Quake/Makefile.wat | 245 + Quake/anorm_dots.h | 580 + Quake/anorms.h | 182 + Quake/arch_def.h | 178 + Quake/bgmusic.c | 478 + Quake/bgmusic.h | 43 + Quake/bspfile.h | 425 + Quake/build_cross_haiku32-sdl2.sh | 17 + Quake/build_cross_haiku64-sdl2.sh | 16 + Quake/build_cross_osx-sdl2.sh | 41 + Quake/build_cross_osx.sh | 57 + Quake/build_cross_win32-sdl2.sh | 21 + Quake/build_cross_win32.sh | 23 + Quake/build_cross_win64-sdl2.sh | 21 + Quake/build_cross_win64.sh | 21 + Quake/cd_null.c | 53 + Quake/cd_sdl.c | 593 + Quake/cdaudio.h | 35 + Quake/cfgfile.c | 175 + Quake/cfgfile.h | 42 + Quake/chase.c | 118 + Quake/cl_demo.c | 501 + Quake/cl_input.c | 454 + Quake/cl_main.c | 841 + Quake/cl_parse.c | 1330 ++ Quake/cl_tent.c | 361 + Quake/client.h | 379 + Quake/cmd.c | 869 + Quake/cmd.h | 127 + Quake/common.c | 3034 ++++ Quake/common.h | 415 + Quake/console.c | 1316 ++ Quake/console.h | 69 + Quake/crc.c | 94 + Quake/crc.h | 33 + Quake/cvar.c | 652 + Quake/cvar.h | 143 + Quake/default_cfg.h | 92 + Quake/detect.sh | 62 + Quake/draw.h | 48 + Quake/filenames.h | 193 + Quake/gl_draw.c | 772 + Quake/gl_fog.c | 427 + Quake/gl_mesh.c | 603 + Quake/gl_model.c | 3413 ++++ Quake/gl_model.h | 520 + Quake/gl_refrag.c | 221 + Quake/gl_rlight.c | 421 + Quake/gl_rmain.c | 1160 ++ Quake/gl_rmisc.c | 645 + Quake/gl_screen.c | 1116 ++ Quake/gl_sky.c | 1138 ++ Quake/gl_texmgr.c | 1656 ++ Quake/gl_texmgr.h | 108 + Quake/gl_vidsdl.c | 2394 +++ Quake/gl_warp.c | 277 + Quake/gl_warp_sin.h | 84 + Quake/glquake.h | 439 + Quake/host.c | 955 ++ Quake/host_cmd.c | 2411 +++ Quake/ideas/turn_manager.c | 320 + Quake/ideas/turn_systems.c | 1404 ++ Quake/image.c | 666 + Quake/image.h | 38 + Quake/in_sdl.c | 1160 ++ Quake/input.h | 56 + Quake/keys.c | 1247 ++ Quake/keys.h | 201 + Quake/lodepng.c | 6665 ++++++++ Quake/lodepng.h | 2085 +++ Quake/main_sdl.c | 163 + Quake/mathlib.c | 474 + Quake/mathlib.h | 123 + Quake/menu.c | 2794 ++++ Quake/menu.h | 75 + Quake/miniz.c | 2282 +++ Quake/miniz.h | 726 + Quake/modelgen.h | 141 + Quake/net.h | 115 + Quake/net_bsd.c | 96 + Quake/net_defs.h | 260 + Quake/net_dgrm.c | 1421 ++ Quake/net_dgrm.h | 39 + Quake/net_loop.c | 250 + Quake/net_loop.h | 40 + Quake/net_main.c | 906 ++ Quake/net_sys.h | 200 + Quake/net_udp.c | 480 + Quake/net_udp.h | 45 + Quake/net_win.c | 121 + Quake/net_wins.c | 544 + Quake/net_wins.h | 45 + Quake/net_wipx.c | 448 + Quake/net_wipx.h | 45 + Quake/pl_linux.c | 98 + Quake/pl_osx.m | 99 + Quake/pl_win.c | 114 + Quake/platform.h | 48 + Quake/pr_cmds.c | 1858 +++ Quake/pr_comp.h | 197 + Quake/pr_edict.c | 1422 ++ Quake/pr_exec.c | 653 + Quake/progdefs.h | 28 + Quake/progdefs.q1 | 143 + Quake/progs.h | 154 + Quake/protocol.h | 279 + Quake/q_ctype.h | 99 + Quake/q_sound.h | 190 + Quake/q_stdinc.h | 258 + Quake/qs_bmp.h | 189 + Quake/quakedef.h | 349 + Quake/quakespasm.pak | Bin 0 -> 558464 bytes Quake/r_alias.c | 1006 ++ Quake/r_brush.c | 1028 ++ Quake/r_part.c | 1020 ++ Quake/r_sprite.c | 196 + Quake/r_world.c | 1329 ++ Quake/render.h | 176 + Quake/resource.h | 26 + Quake/sbar.c | 1336 ++ Quake/sbar.h | 46 + Quake/screen.h | 84 + Quake/server.h | 247 + Quake/sh_game.c | 374 + Quake/sh_game.h | 276 + Quake/sh_input.c | 152 + Quake/sh_marine.c | 282 + Quake/snd_codec.c | 331 + Quake/snd_codec.h | 107 + Quake/snd_codeci.h | 57 + Quake/snd_dma.c | 1065 ++ Quake/snd_flac.c | 390 + Quake/snd_flac.h | 13 + Quake/snd_mem.c | 364 + Quake/snd_mikmod.c | 221 + Quake/snd_mikmod.h | 13 + Quake/snd_mix.c | 527 + Quake/snd_modplug.c | 125 + Quake/snd_modplug.h | 12 + Quake/snd_mp3.c | 461 + Quake/snd_mp3.h | 14 + Quake/snd_mp3tag.c | 405 + Quake/snd_mpg123.c | 263 + Quake/snd_opus.c | 211 + Quake/snd_opus.h | 13 + Quake/snd_sdl.c | 212 + Quake/snd_umx.c | 413 + Quake/snd_umx.h | 12 + Quake/snd_vorbis.c | 205 + Quake/snd_vorbis.h | 13 + Quake/snd_wave.c | 275 + Quake/snd_wave.h | 13 + Quake/snd_xmp.c | 193 + Quake/snd_xmp.h | 12 + Quake/spritegn.h | 117 + Quake/stb_image_write.h | 684 + Quake/strl_fn.h | 16 + Quake/strlcat.c | 59 + Quake/strlcpy.c | 55 + Quake/sv_main.c | 1625 ++ Quake/sv_move.c | 419 + Quake/sv_phys.c | 1241 ++ Quake/sv_user.c | 627 + Quake/sys.h | 73 + Quake/sys_sdl_unix.c | 565 + Quake/sys_sdl_win.c | 443 + Quake/vid.h | 93 + Quake/view.c | 975 ++ Quake/view.h | 40 + Quake/wad.c | 370 + Quake/wad.h | 99 + Quake/world.c | 937 ++ Quake/world.h | 87 + Quake/wsaerror.h | 91 + Quake/zone.c | 989 ++ Quake/zone.h | 140 + Quakespasm-Music.txt | 93 + Quakespasm.html | 926 ++ Quakespasm.txt | 1346 ++ Windows/CodeBlocks/QuakeSpasm-SDL2.cbp | 379 + Windows/CodeBlocks/QuakeSpasm.cbp | 378 + Windows/QuakeSpasm-old.ico | Bin 0 -> 3262 bytes Windows/QuakeSpasm.ico | Bin 0 -> 41468 bytes Windows/QuakeSpasm.rc | 4 + Windows/SDL/BUGS | 18 + Windows/SDL/COPYING | 458 + Windows/SDL/README-SDL.txt | 13 + Windows/SDL/bin/sdl-config | 58 + Windows/SDL/include/SDL.h | 101 + Windows/SDL/include/SDL_active.h | 63 + Windows/SDL/include/SDL_audio.h | 284 + Windows/SDL/include/SDL_byteorder.h | 29 + Windows/SDL/include/SDL_cdrom.h | 202 + Windows/SDL/include/SDL_config.h | 45 + Windows/SDL/include/SDL_config_win32.h | 193 + Windows/SDL/include/SDL_copying.h | 22 + Windows/SDL/include/SDL_cpuinfo.h | 69 + Windows/SDL/include/SDL_endian.h | 264 + Windows/SDL/include/SDL_error.h | 72 + Windows/SDL/include/SDL_events.h | 356 + Windows/SDL/include/SDL_getenv.h | 28 + Windows/SDL/include/SDL_joystick.h | 187 + Windows/SDL/include/SDL_keyboard.h | 135 + Windows/SDL/include/SDL_keysym.h | 326 + Windows/SDL/include/SDL_loadso.h | 78 + Windows/SDL/include/SDL_main.h | 106 + Windows/SDL/include/SDL_mouse.h | 143 + Windows/SDL/include/SDL_mutex.h | 177 + Windows/SDL/include/SDL_name.h | 11 + Windows/SDL/include/SDL_opengl.h | 7348 +++++++++ Windows/SDL/include/SDL_platform.h | 110 + Windows/SDL/include/SDL_quit.h | 55 + Windows/SDL/include/SDL_rwops.h | 155 + Windows/SDL/include/SDL_stdinc.h | 626 + Windows/SDL/include/SDL_syswm.h | 232 + Windows/SDL/include/SDL_thread.h | 118 + Windows/SDL/include/SDL_timer.h | 125 + Windows/SDL/include/SDL_types.h | 28 + Windows/SDL/include/SDL_version.h | 91 + Windows/SDL/include/SDL_video.h | 952 ++ Windows/SDL/include/begin_code.h | 179 + Windows/SDL/include/close_code.h | 45 + Windows/SDL/lib/SDL.dll | Bin 0 -> 329728 bytes Windows/SDL/lib/SDL.lib | Bin 0 -> 42360 bytes Windows/SDL/lib/SDLmain.lib | Bin 0 -> 8270 bytes Windows/SDL/lib/libSDL.dll.a | Bin 0 -> 125732 bytes Windows/SDL/lib/libSDLmain.a | Bin 0 -> 4702 bytes Windows/SDL/lib64/SDL.dll | Bin 0 -> 331776 bytes Windows/SDL/lib64/SDL.lib | Bin 0 -> 41354 bytes Windows/SDL/lib64/SDLmain.lib | Bin 0 -> 11526 bytes Windows/SDL/lib64/libSDL.dll.a | Bin 0 -> 126120 bytes Windows/SDL/lib64/libSDLmain.a | Bin 0 -> 4416 bytes Windows/SDL/main/SDL_win32_main.c | 402 + Windows/SDL/watcom/SDL.def | 208 + Windows/SDL/watcom/SDL.exp | 205 + Windows/SDL/watcom/SDL.lib | Bin 0 -> 28672 bytes Windows/SDL/watcom/def2lbc.awk | 38 + Windows/SDL/watcom/makefile | 11 + Windows/SDL2/BUGS.txt | 16 + Windows/SDL2/LICENSE.txt | 18 + Windows/SDL2/README-SDL.txt | 13 + Windows/SDL2/README.md | 17 + Windows/SDL2/WhatsNew.txt | 889 ++ Windows/SDL2/bin/sdl2-config | 56 + Windows/SDL2/include/SDL.h | 234 + Windows/SDL2/include/SDL_assert.h | 324 + Windows/SDL2/include/SDL_atomic.h | 408 + Windows/SDL2/include/SDL_audio.h | 1502 ++ Windows/SDL2/include/SDL_bits.h | 132 + Windows/SDL2/include/SDL_blendmode.h | 199 + Windows/SDL2/include/SDL_clipboard.h | 141 + Windows/SDL2/include/SDL_config.h | 59 + Windows/SDL2/include/SDL_config_windows.h | 333 + Windows/SDL2/include/SDL_cpuinfo.h | 603 + Windows/SDL2/include/SDL_egl.h | 2351 +++ Windows/SDL2/include/SDL_endian.h | 396 + Windows/SDL2/include/SDL_error.h | 163 + Windows/SDL2/include/SDL_events.h | 1196 ++ Windows/SDL2/include/SDL_filesystem.h | 149 + Windows/SDL2/include/SDL_gamecontroller.h | 1110 ++ Windows/SDL2/include/SDL_gesture.h | 117 + Windows/SDL2/include/SDL_guid.h | 107 + Windows/SDL2/include/SDL_haptic.h | 1354 ++ Windows/SDL2/include/SDL_hidapi.h | 443 + Windows/SDL2/include/SDL_hints.h | 3303 ++++ Windows/SDL2/include/SDL_joystick.h | 1088 ++ Windows/SDL2/include/SDL_keyboard.h | 361 + Windows/SDL2/include/SDL_keycode.h | 358 + Windows/SDL2/include/SDL_loadso.h | 117 + Windows/SDL2/include/SDL_locale.h | 103 + Windows/SDL2/include/SDL_log.h | 405 + Windows/SDL2/include/SDL_main.h | 282 + Windows/SDL2/include/SDL_messagebox.h | 196 + Windows/SDL2/include/SDL_metal.h | 114 + Windows/SDL2/include/SDL_misc.h | 79 + Windows/SDL2/include/SDL_mouse.h | 464 + Windows/SDL2/include/SDL_mutex.h | 545 + Windows/SDL2/include/SDL_name.h | 33 + Windows/SDL2/include/SDL_opengl.h | 2126 +++ Windows/SDL2/include/SDL_opengl_glext.h | 13213 ++++++++++++++++ Windows/SDL2/include/SDL_opengles.h | 38 + Windows/SDL2/include/SDL_opengles2.h | 51 + Windows/SDL2/include/SDL_opengles2_gl2.h | 656 + Windows/SDL2/include/SDL_opengles2_gl2ext.h | 4033 +++++ .../SDL2/include/SDL_opengles2_gl2platform.h | 27 + .../SDL2/include/SDL_opengles2_khrplatform.h | 311 + Windows/SDL2/include/SDL_pixels.h | 686 + Windows/SDL2/include/SDL_platform.h | 275 + Windows/SDL2/include/SDL_power.h | 87 + Windows/SDL2/include/SDL_quit.h | 50 + Windows/SDL2/include/SDL_rect.h | 376 + Windows/SDL2/include/SDL_render.h | 1932 +++ Windows/SDL2/include/SDL_revision.h | 7 + Windows/SDL2/include/SDL_rwops.h | 844 + Windows/SDL2/include/SDL_scancode.h | 438 + Windows/SDL2/include/SDL_sensor.h | 329 + Windows/SDL2/include/SDL_shape.h | 155 + Windows/SDL2/include/SDL_stdinc.h | 873 + Windows/SDL2/include/SDL_surface.h | 1001 ++ Windows/SDL2/include/SDL_system.h | 642 + Windows/SDL2/include/SDL_syswm.h | 386 + Windows/SDL2/include/SDL_thread.h | 468 + Windows/SDL2/include/SDL_timer.h | 222 + Windows/SDL2/include/SDL_touch.h | 150 + Windows/SDL2/include/SDL_types.h | 24 + Windows/SDL2/include/SDL_version.h | 205 + Windows/SDL2/include/SDL_video.h | 2228 +++ Windows/SDL2/include/SDL_vulkan.h | 219 + Windows/SDL2/include/begin_code.h | 189 + Windows/SDL2/include/close_code.h | 40 + Windows/SDL2/lib/SDL2.dll | Bin 0 -> 1912320 bytes Windows/SDL2/lib/SDL2.lib | Bin 0 -> 188076 bytes Windows/SDL2/lib/SDL2main.lib | Bin 0 -> 3944 bytes Windows/SDL2/lib/libSDL2.dll.a | Bin 0 -> 565178 bytes Windows/SDL2/lib/libSDL2main.a | Bin 0 -> 2078 bytes Windows/SDL2/lib64/SDL2.dll | Bin 0 -> 1785856 bytes Windows/SDL2/lib64/SDL2.lib | Bin 0 -> 183824 bytes Windows/SDL2/lib64/SDL2main.lib | Bin 0 -> 5102 bytes Windows/SDL2/lib64/libSDL2.dll.a | Bin 0 -> 553152 bytes Windows/SDL2/lib64/libSDL2main.a | Bin 0 -> 1960 bytes Windows/SDL2/main/SDL_windows.h | 169 + Windows/SDL2/main/SDL_windows_main.c | 114 + Windows/SDL2/watcom/SDL2.def | 848 + Windows/SDL2/watcom/SDL2.exp | 845 + Windows/SDL2/watcom/SDL2.lib | Bin 0 -> 135168 bytes Windows/SDL2/watcom/def2lbc.awk | 38 + Windows/SDL2/watcom/makefile | 11 + Windows/VS2005/quakespasm-sdl2.vcproj | 964 ++ Windows/VS2005/quakespasm.sln | 36 + Windows/VS2005/quakespasm.vcproj | 968 ++ Windows/VisualStudio/quakespasm-sdl2.vcxproj | 370 + .../quakespasm-sdl2.vcxproj.filters | 461 + Windows/VisualStudio/quakespasm.sln | 39 + Windows/VisualStudio/quakespasm.vcxproj | 371 + .../VisualStudio/quakespasm.vcxproj.filters | 464 + Windows/codecs/include/FLAC/callback.h | 185 + Windows/codecs/include/FLAC/export.h | 97 + Windows/codecs/include/FLAC/format.h | 1023 ++ Windows/codecs/include/FLAC/ordinals.h | 86 + Windows/codecs/include/FLAC/stream_decoder.h | 1559 ++ Windows/codecs/include/flac_config.txt | 3 + Windows/codecs/include/mad.h | 1005 ++ Windows/codecs/include/mikmod.h | 880 + Windows/codecs/include/mikmod_config.txt | 2 + Windows/codecs/include/mpg123.h | 1223 ++ Windows/codecs/include/mpg123_config.txt | 7 + Windows/codecs/include/ogg/config_types.h | 25 + Windows/codecs/include/ogg/ogg.h | 210 + Windows/codecs/include/ogg/os_types.h | 147 + Windows/codecs/include/opus/opus.h | 906 ++ Windows/codecs/include/opus/opus_defines.h | 665 + .../codecs/include/opus/opus_multistream.h | 660 + Windows/codecs/include/opus/opus_types.h | 159 + Windows/codecs/include/opus/opusfile.h | 2164 +++ Windows/codecs/include/opusfile.h | 3 + Windows/codecs/include/vorbis/codec.h | 242 + Windows/codecs/include/vorbis/vorbisfile.h | 205 + Windows/codecs/include/xmp.h | 407 + Windows/codecs/x64/libFLAC-8.dll | Bin 0 -> 70144 bytes Windows/codecs/x64/libFLAC.dll.a | Bin 0 -> 98562 bytes Windows/codecs/x64/libFLAC.lib | Bin 0 -> 36584 bytes Windows/codecs/x64/libmad-0.dll | Bin 0 -> 92672 bytes Windows/codecs/x64/libmad.dll.a | Bin 0 -> 26068 bytes Windows/codecs/x64/libmad.lib | Bin 0 -> 9546 bytes Windows/codecs/x64/libmikmod-3.dll | Bin 0 -> 176640 bytes Windows/codecs/x64/libmikmod.dll.a | Bin 0 -> 86652 bytes Windows/codecs/x64/libmikmod.lib | Bin 0 -> 26322 bytes Windows/codecs/x64/libmpg123-0.dll | Bin 0 -> 171520 bytes Windows/codecs/x64/libmpg123.dll.a | Bin 0 -> 58262 bytes Windows/codecs/x64/libmpg123.lib | Bin 0 -> 20628 bytes Windows/codecs/x64/libogg-0.dll | Bin 0 -> 25600 bytes Windows/codecs/x64/libogg.dll.a | Bin 0 -> 45156 bytes Windows/codecs/x64/libogg.lib | Bin 0 -> 16200 bytes Windows/codecs/x64/libopus-0.dll | Bin 0 -> 124928 bytes Windows/codecs/x64/libopus.dll.a | Bin 0 -> 16052 bytes Windows/codecs/x64/libopus.lib | Bin 0 -> 7198 bytes Windows/codecs/x64/libopusfile-0.dll | Bin 0 -> 46592 bytes Windows/codecs/x64/libopusfile.dll.a | Bin 0 -> 34484 bytes Windows/codecs/x64/libopusfile.lib | Bin 0 -> 12832 bytes Windows/codecs/x64/libvorbis-0.dll | Bin 0 -> 170496 bytes Windows/codecs/x64/libvorbis.dll.a | Bin 0 -> 24984 bytes Windows/codecs/x64/libvorbis.lib | Bin 0 -> 10304 bytes Windows/codecs/x64/libvorbisfile-3.dll | Bin 0 -> 32768 bytes Windows/codecs/x64/libvorbisfile.dll.a | Bin 0 -> 22890 bytes Windows/codecs/x64/libvorbisfile.lib | Bin 0 -> 8562 bytes Windows/codecs/x64/libxmp.dll | Bin 0 -> 397824 bytes Windows/codecs/x64/libxmp.dll.a | Bin 0 -> 27974 bytes Windows/codecs/x64/libxmp.lib | Bin 0 -> 10662 bytes Windows/codecs/x86-watcom/FLAC.lib | Bin 0 -> 84992 bytes Windows/codecs/x86-watcom/libxmp.lib | Bin 0 -> 532480 bytes Windows/codecs/x86-watcom/mad.lib | Bin 0 -> 122368 bytes Windows/codecs/x86-watcom/mikmod.lib | Bin 0 -> 248320 bytes Windows/codecs/x86-watcom/mpg123.lib | Bin 0 -> 231936 bytes Windows/codecs/x86-watcom/ogg.lib | Bin 0 -> 17920 bytes Windows/codecs/x86-watcom/opus.lib | Bin 0 -> 148480 bytes Windows/codecs/x86-watcom/opusfile.lib | Bin 0 -> 44032 bytes Windows/codecs/x86-watcom/vorbis.lib | Bin 0 -> 175104 bytes Windows/codecs/x86-watcom/vorbisfile.lib | Bin 0 -> 25088 bytes Windows/codecs/x86/libFLAC-8.dll | Bin 0 -> 62976 bytes Windows/codecs/x86/libFLAC.dll.a | Bin 0 -> 98116 bytes Windows/codecs/x86/libFLAC.lib | Bin 0 -> 37070 bytes Windows/codecs/x86/libmad-0.dll | Bin 0 -> 84992 bytes Windows/codecs/x86/libmad.dll.a | Bin 0 -> 25910 bytes Windows/codecs/x86/libmad.lib | Bin 0 -> 9732 bytes Windows/codecs/x86/libmikmod-3.dll | Bin 0 -> 180224 bytes Windows/codecs/x86/libmikmod.dll.a | Bin 0 -> 86290 bytes Windows/codecs/x86/libmikmod.lib | Bin 0 -> 26898 bytes Windows/codecs/x86/libmpg123-0.dll | Bin 0 -> 167936 bytes Windows/codecs/x86/libmpg123.dll.a | Bin 0 -> 59732 bytes Windows/codecs/x86/libmpg123.lib | Bin 0 -> 21304 bytes Windows/codecs/x86/libogg-0.dll | Bin 0 -> 18944 bytes Windows/codecs/x86/libogg.dll.a | Bin 0 -> 44868 bytes Windows/codecs/x86/libogg.lib | Bin 0 -> 16554 bytes Windows/codecs/x86/libopus-0.dll | Bin 0 -> 108544 bytes Windows/codecs/x86/libopus.dll.a | Bin 0 -> 16004 bytes Windows/codecs/x86/libopus.lib | Bin 0 -> 7318 bytes Windows/codecs/x86/libopusfile-0.dll | Bin 0 -> 43520 bytes Windows/codecs/x86/libopusfile.dll.a | Bin 0 -> 34372 bytes Windows/codecs/x86/libopusfile.lib | Bin 0 -> 13276 bytes Windows/codecs/x86/libvorbis-0.dll | Bin 0 -> 150016 bytes Windows/codecs/x86/libvorbis.dll.a | Bin 0 -> 24908 bytes Windows/codecs/x86/libvorbis.lib | Bin 0 -> 10484 bytes Windows/codecs/x86/libvorbisfile-3.dll | Bin 0 -> 28160 bytes Windows/codecs/x86/libvorbisfile.dll.a | Bin 0 -> 22824 bytes Windows/codecs/x86/libvorbisfile.lib | Bin 0 -> 8736 bytes Windows/codecs/x86/libxmp.dll | Bin 0 -> 408576 bytes Windows/codecs/x86/libxmp.dll.a | Bin 0 -> 27802 bytes Windows/codecs/x86/libxmp.lib | Bin 0 -> 10868 bytes Windows/misc/include/msinttypes/README.txt | 6 + Windows/misc/include/msinttypes/changelog.txt | 154 + Windows/misc/include/msinttypes/inttypes.h | 306 + Windows/misc/include/msinttypes/stdint.h | 259 + 652 files changed, 273930 insertions(+) create mode 120000 .github/README.txt create mode 100644 .github/workflows/build-linux.yml create mode 100644 .github/workflows/build-mac.yml create mode 100644 .github/workflows/build-mingw.yml create mode 100644 .github/workflows/build-windows.yml create mode 100644 LICENSE.txt create mode 100644 Linux/CodeBlocks/QuakeSpasm-SDL2.cbp create mode 100644 Linux/CodeBlocks/QuakeSpasm.cbp create mode 100644 Linux/net.sourceforge.quakespasm.Quakespasm.desktop create mode 100644 Linux/net.sourceforge.quakespasm.Quakespasm.metainfo.xml create mode 100644 Linux/sgml/Makefile.sgml create mode 100644 Linux/sgml/Quakespasm.sgml create mode 100755 Linux/sgml/sgml2rawtxt create mode 100644 MacOSX/AppController.h create mode 100644 MacOSX/AppController.m create mode 100644 MacOSX/Build_Instructions.md create mode 100644 MacOSX/English.lproj/InfoPlist.strings create mode 100644 MacOSX/English.lproj/Launcher.nib/designable.nib create mode 100644 MacOSX/English.lproj/Launcher.nib/keyedobjects.nib create mode 100644 MacOSX/Info.plist create mode 100644 MacOSX/Launcher-Info.plist create mode 100644 MacOSX/QuakeArgument.h create mode 100644 MacOSX/QuakeArgument.m create mode 100644 MacOSX/QuakeArguments.h create mode 100644 MacOSX/QuakeArguments.m create mode 100644 MacOSX/QuakeSpasm.icns create mode 100644 MacOSX/QuakeSpasm.xcodeproj/project.pbxproj create mode 100644 MacOSX/QuakeSpasm.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-M1.xcscheme create mode 100644 MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-x64.xcscheme create mode 100644 MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm.xcscheme create mode 100644 MacOSX/QuakeSpasmPPC.xcodeproj/project.pbxproj create mode 120000 MacOSX/SDL.framework/Headers create mode 100644 MacOSX/SDL.framework/License.rtf create mode 100644 MacOSX/SDL.framework/ReadMe.txt create mode 120000 MacOSX/SDL.framework/Resources create mode 120000 MacOSX/SDL.framework/SDL create mode 100644 MacOSX/SDL.framework/UniversalBinaryNotes.rtf create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_active.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_audio.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_byteorder.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_cdrom.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_config.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_config_macosx.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_copying.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_cpuinfo.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_error.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_events.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_getenv.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_joystick.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_keyboard.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_keysym.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_loadso.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_main.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_mouse.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_mutex.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_name.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_platform.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_quit.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_rwops.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_stdinc.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_syswm.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_thread.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_timer.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_types.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_version.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/begin_code.h create mode 100644 MacOSX/SDL.framework/Versions/A/Headers/close_code.h create mode 100644 MacOSX/SDL.framework/Versions/A/Resources/Info.plist create mode 100644 MacOSX/SDL.framework/Versions/A/Resources/SDLMain.nib/objects.nib create mode 100755 MacOSX/SDL.framework/Versions/A/SDL create mode 100644 MacOSX/SDL.framework/Versions/A/devel-lite/ReadMeDevLite.txt create mode 100644 MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.h create mode 100644 MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.m create mode 120000 MacOSX/SDL.framework/Versions/Current create mode 120000 MacOSX/SDL2.framework/Headers create mode 120000 MacOSX/SDL2.framework/Resources create mode 120000 MacOSX/SDL2.framework/SDL2 create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_assert.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_atomic.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_audio.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_bits.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_blendmode.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_clipboard.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_config.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_endian.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_error.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_events.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_filesystem.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_gesture.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_haptic.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_hidapi.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_hints.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_joystick.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_keyboard.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_keycode.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_loadso.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_locale.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_log.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_main.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_messagebox.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_metal.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_misc.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_mouse.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_mutex.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_name.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_pixels.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_platform.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_power.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_quit.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_rect.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_render.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_revision.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_rwops.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_scancode.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_sensor.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_shape.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_stdinc.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_surface.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_system.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_syswm.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_thread.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_timer.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_touch.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_types.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_version.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_video.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/SDL_vulkan.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/begin_code.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Headers/close_code.h create mode 100644 MacOSX/SDL2.framework/Versions/A/Resources/Info.plist create mode 100644 MacOSX/SDL2.framework/Versions/A/Resources/License.txt create mode 100644 MacOSX/SDL2.framework/Versions/A/Resources/ReadMe.txt create mode 100644 MacOSX/SDL2.framework/Versions/A/Resources/default.metallib create mode 100755 MacOSX/SDL2.framework/Versions/A/SDL2 create mode 120000 MacOSX/SDL2.framework/Versions/Current create mode 100644 MacOSX/SDLApplication.h create mode 100644 MacOSX/SDLApplication.m create mode 100644 MacOSX/SDLMain.h create mode 100644 MacOSX/SDLMain.m create mode 100644 MacOSX/ScreenInfo.h create mode 100644 MacOSX/ScreenInfo.m create mode 100644 MacOSX/codecs/include/FLAC/callback.h create mode 100644 MacOSX/codecs/include/FLAC/export.h create mode 100644 MacOSX/codecs/include/FLAC/format.h create mode 100644 MacOSX/codecs/include/FLAC/ordinals.h create mode 100644 MacOSX/codecs/include/FLAC/stream_decoder.h create mode 100644 MacOSX/codecs/include/flac_config.txt create mode 100644 MacOSX/codecs/include/mad.h create mode 100644 MacOSX/codecs/include/mikmod.h create mode 100644 MacOSX/codecs/include/mikmod_config.txt create mode 100644 MacOSX/codecs/include/mpg123.h create mode 100644 MacOSX/codecs/include/mpg123_config.txt create mode 100644 MacOSX/codecs/include/ogg/config_types.h create mode 100644 MacOSX/codecs/include/ogg/ogg.h create mode 100644 MacOSX/codecs/include/ogg/os_types.h create mode 100644 MacOSX/codecs/include/opus/opus.h create mode 100644 MacOSX/codecs/include/opus/opus_defines.h create mode 100644 MacOSX/codecs/include/opus/opus_multistream.h create mode 100644 MacOSX/codecs/include/opus/opus_types.h create mode 100644 MacOSX/codecs/include/opus/opusfile.h create mode 100644 MacOSX/codecs/include/opusfile.h create mode 100644 MacOSX/codecs/include/vorbis/codec.h create mode 100644 MacOSX/codecs/include/vorbis/vorbisfile.h create mode 100644 MacOSX/codecs/include/xmp.h create mode 100755 MacOSX/codecs/lib/libFLAC.dylib create mode 100755 MacOSX/codecs/lib/libmad.dylib create mode 100755 MacOSX/codecs/lib/libmikmod.dylib create mode 100755 MacOSX/codecs/lib/libmpg123.dylib create mode 100755 MacOSX/codecs/lib/libogg.dylib create mode 100755 MacOSX/codecs/lib/libopus.dylib create mode 100755 MacOSX/codecs/lib/libopusfile.dylib create mode 100755 MacOSX/codecs/lib/libvorbis.dylib create mode 100755 MacOSX/codecs/lib/libvorbisfile.dylib create mode 100755 MacOSX/codecs/lib/libxmp.dylib create mode 100644 Misc/QuakeSpasm_512.png create mode 100644 Misc/fitzquake080.txt create mode 100644 Misc/fitzquake080sdl.txt create mode 100644 Misc/fitzquake085.txt create mode 100644 Misc/fix_externaltex.patch create mode 100644 Misc/mk_header.c create mode 100644 Misc/qs_pak/Makefile create mode 100644 Misc/qs_pak/default.cfg create mode 100644 Misc/qs_pak/default.cfg.diff create mode 100644 Misc/qs_pak/gfx/conback.lmp create mode 100644 Misc/qs_pak/maps/e1m1.diff create mode 100644 Misc/qs_pak/maps/e1m1@c49d.ent create mode 100644 Misc/qs_pak/maps/e1m2.diff create mode 100644 Misc/qs_pak/maps/e1m2@0caa.ent create mode 100644 Misc/qs_pak/maps/e1m4.diff create mode 100644 Misc/qs_pak/maps/e1m4@958e.ent create mode 100644 Misc/qs_pak/maps/e2m2.diff create mode 100644 Misc/qs_pak/maps/e2m2@fbfe.ent create mode 100644 Misc/qs_pak/maps/e2m3.diff create mode 100644 Misc/qs_pak/maps/e2m3@237a.ent create mode 100644 Misc/qs_pak/maps/e2m7.diff create mode 100644 Misc/qs_pak/maps/e2m7@10a8.ent create mode 100755 Misc/qs_pak/mkpak.sh create mode 100644 Misc/systest.c create mode 100644 Quake/Makefile create mode 100644 Quake/Makefile.darwin create mode 100644 Quake/Makefile.emscripten create mode 100644 Quake/Makefile.w32 create mode 100644 Quake/Makefile.w64 create mode 100644 Quake/Makefile.wat create mode 100644 Quake/anorm_dots.h create mode 100644 Quake/anorms.h create mode 100644 Quake/arch_def.h create mode 100644 Quake/bgmusic.c create mode 100644 Quake/bgmusic.h create mode 100644 Quake/bspfile.h create mode 100755 Quake/build_cross_haiku32-sdl2.sh create mode 100755 Quake/build_cross_haiku64-sdl2.sh create mode 100755 Quake/build_cross_osx-sdl2.sh create mode 100755 Quake/build_cross_osx.sh create mode 100755 Quake/build_cross_win32-sdl2.sh create mode 100755 Quake/build_cross_win32.sh create mode 100755 Quake/build_cross_win64-sdl2.sh create mode 100755 Quake/build_cross_win64.sh create mode 100644 Quake/cd_null.c create mode 100644 Quake/cd_sdl.c create mode 100644 Quake/cdaudio.h create mode 100644 Quake/cfgfile.c create mode 100644 Quake/cfgfile.h create mode 100644 Quake/chase.c create mode 100644 Quake/cl_demo.c create mode 100644 Quake/cl_input.c create mode 100644 Quake/cl_main.c create mode 100644 Quake/cl_parse.c create mode 100644 Quake/cl_tent.c create mode 100644 Quake/client.h create mode 100644 Quake/cmd.c create mode 100644 Quake/cmd.h create mode 100644 Quake/common.c create mode 100644 Quake/common.h create mode 100644 Quake/console.c create mode 100644 Quake/console.h create mode 100644 Quake/crc.c create mode 100644 Quake/crc.h create mode 100644 Quake/cvar.c create mode 100644 Quake/cvar.h create mode 100644 Quake/default_cfg.h create mode 100755 Quake/detect.sh create mode 100644 Quake/draw.h create mode 100644 Quake/filenames.h create mode 100644 Quake/gl_draw.c create mode 100644 Quake/gl_fog.c create mode 100644 Quake/gl_mesh.c create mode 100644 Quake/gl_model.c create mode 100644 Quake/gl_model.h create mode 100644 Quake/gl_refrag.c create mode 100644 Quake/gl_rlight.c create mode 100644 Quake/gl_rmain.c create mode 100644 Quake/gl_rmisc.c create mode 100644 Quake/gl_screen.c create mode 100644 Quake/gl_sky.c create mode 100644 Quake/gl_texmgr.c create mode 100644 Quake/gl_texmgr.h create mode 100644 Quake/gl_vidsdl.c create mode 100644 Quake/gl_warp.c create mode 100644 Quake/gl_warp_sin.h create mode 100644 Quake/glquake.h create mode 100644 Quake/host.c create mode 100644 Quake/host_cmd.c create mode 100644 Quake/ideas/turn_manager.c create mode 100644 Quake/ideas/turn_systems.c create mode 100644 Quake/image.c create mode 100644 Quake/image.h create mode 100644 Quake/in_sdl.c create mode 100644 Quake/input.h create mode 100644 Quake/keys.c create mode 100644 Quake/keys.h create mode 100644 Quake/lodepng.c create mode 100644 Quake/lodepng.h create mode 100644 Quake/main_sdl.c create mode 100644 Quake/mathlib.c create mode 100644 Quake/mathlib.h create mode 100644 Quake/menu.c create mode 100644 Quake/menu.h create mode 100644 Quake/miniz.c create mode 100644 Quake/miniz.h create mode 100644 Quake/modelgen.h create mode 100644 Quake/net.h create mode 100644 Quake/net_bsd.c create mode 100644 Quake/net_defs.h create mode 100644 Quake/net_dgrm.c create mode 100644 Quake/net_dgrm.h create mode 100644 Quake/net_loop.c create mode 100644 Quake/net_loop.h create mode 100644 Quake/net_main.c create mode 100644 Quake/net_sys.h create mode 100644 Quake/net_udp.c create mode 100644 Quake/net_udp.h create mode 100644 Quake/net_win.c create mode 100644 Quake/net_wins.c create mode 100644 Quake/net_wins.h create mode 100644 Quake/net_wipx.c create mode 100644 Quake/net_wipx.h create mode 100644 Quake/pl_linux.c create mode 100644 Quake/pl_osx.m create mode 100644 Quake/pl_win.c create mode 100644 Quake/platform.h create mode 100644 Quake/pr_cmds.c create mode 100644 Quake/pr_comp.h create mode 100644 Quake/pr_edict.c create mode 100644 Quake/pr_exec.c create mode 100644 Quake/progdefs.h create mode 100644 Quake/progdefs.q1 create mode 100644 Quake/progs.h create mode 100644 Quake/protocol.h create mode 100644 Quake/q_ctype.h create mode 100644 Quake/q_sound.h create mode 100644 Quake/q_stdinc.h create mode 100644 Quake/qs_bmp.h create mode 100644 Quake/quakedef.h create mode 100644 Quake/quakespasm.pak create mode 100644 Quake/r_alias.c create mode 100644 Quake/r_brush.c create mode 100644 Quake/r_part.c create mode 100644 Quake/r_sprite.c create mode 100644 Quake/r_world.c create mode 100644 Quake/render.h create mode 100644 Quake/resource.h create mode 100644 Quake/sbar.c create mode 100644 Quake/sbar.h create mode 100644 Quake/screen.h create mode 100644 Quake/server.h create mode 100644 Quake/sh_game.c create mode 100644 Quake/sh_game.h create mode 100644 Quake/sh_input.c create mode 100644 Quake/sh_marine.c create mode 100644 Quake/snd_codec.c create mode 100644 Quake/snd_codec.h create mode 100644 Quake/snd_codeci.h create mode 100644 Quake/snd_dma.c create mode 100644 Quake/snd_flac.c create mode 100644 Quake/snd_flac.h create mode 100644 Quake/snd_mem.c create mode 100644 Quake/snd_mikmod.c create mode 100644 Quake/snd_mikmod.h create mode 100644 Quake/snd_mix.c create mode 100644 Quake/snd_modplug.c create mode 100644 Quake/snd_modplug.h create mode 100644 Quake/snd_mp3.c create mode 100644 Quake/snd_mp3.h create mode 100644 Quake/snd_mp3tag.c create mode 100644 Quake/snd_mpg123.c create mode 100644 Quake/snd_opus.c create mode 100644 Quake/snd_opus.h create mode 100644 Quake/snd_sdl.c create mode 100644 Quake/snd_umx.c create mode 100644 Quake/snd_umx.h create mode 100644 Quake/snd_vorbis.c create mode 100644 Quake/snd_vorbis.h create mode 100644 Quake/snd_wave.c create mode 100644 Quake/snd_wave.h create mode 100644 Quake/snd_xmp.c create mode 100644 Quake/snd_xmp.h create mode 100644 Quake/spritegn.h create mode 100644 Quake/stb_image_write.h create mode 100644 Quake/strl_fn.h create mode 100644 Quake/strlcat.c create mode 100644 Quake/strlcpy.c create mode 100644 Quake/sv_main.c create mode 100644 Quake/sv_move.c create mode 100644 Quake/sv_phys.c create mode 100644 Quake/sv_user.c create mode 100644 Quake/sys.h create mode 100644 Quake/sys_sdl_unix.c create mode 100644 Quake/sys_sdl_win.c create mode 100644 Quake/vid.h create mode 100644 Quake/view.c create mode 100644 Quake/view.h create mode 100644 Quake/wad.c create mode 100644 Quake/wad.h create mode 100644 Quake/world.c create mode 100644 Quake/world.h create mode 100644 Quake/wsaerror.h create mode 100644 Quake/zone.c create mode 100644 Quake/zone.h create mode 100644 Quakespasm-Music.txt create mode 100644 Quakespasm.html create mode 100644 Quakespasm.txt create mode 100644 Windows/CodeBlocks/QuakeSpasm-SDL2.cbp create mode 100644 Windows/CodeBlocks/QuakeSpasm.cbp create mode 100644 Windows/QuakeSpasm-old.ico create mode 100644 Windows/QuakeSpasm.ico create mode 100644 Windows/QuakeSpasm.rc create mode 100644 Windows/SDL/BUGS create mode 100644 Windows/SDL/COPYING create mode 100644 Windows/SDL/README-SDL.txt create mode 100755 Windows/SDL/bin/sdl-config create mode 100644 Windows/SDL/include/SDL.h create mode 100644 Windows/SDL/include/SDL_active.h create mode 100644 Windows/SDL/include/SDL_audio.h create mode 100644 Windows/SDL/include/SDL_byteorder.h create mode 100644 Windows/SDL/include/SDL_cdrom.h create mode 100644 Windows/SDL/include/SDL_config.h create mode 100644 Windows/SDL/include/SDL_config_win32.h create mode 100644 Windows/SDL/include/SDL_copying.h create mode 100644 Windows/SDL/include/SDL_cpuinfo.h create mode 100644 Windows/SDL/include/SDL_endian.h create mode 100644 Windows/SDL/include/SDL_error.h create mode 100644 Windows/SDL/include/SDL_events.h create mode 100644 Windows/SDL/include/SDL_getenv.h create mode 100644 Windows/SDL/include/SDL_joystick.h create mode 100644 Windows/SDL/include/SDL_keyboard.h create mode 100644 Windows/SDL/include/SDL_keysym.h create mode 100644 Windows/SDL/include/SDL_loadso.h create mode 100644 Windows/SDL/include/SDL_main.h create mode 100644 Windows/SDL/include/SDL_mouse.h create mode 100644 Windows/SDL/include/SDL_mutex.h create mode 100644 Windows/SDL/include/SDL_name.h create mode 100644 Windows/SDL/include/SDL_opengl.h create mode 100644 Windows/SDL/include/SDL_platform.h create mode 100644 Windows/SDL/include/SDL_quit.h create mode 100644 Windows/SDL/include/SDL_rwops.h create mode 100644 Windows/SDL/include/SDL_stdinc.h create mode 100644 Windows/SDL/include/SDL_syswm.h create mode 100644 Windows/SDL/include/SDL_thread.h create mode 100644 Windows/SDL/include/SDL_timer.h create mode 100644 Windows/SDL/include/SDL_types.h create mode 100644 Windows/SDL/include/SDL_version.h create mode 100644 Windows/SDL/include/SDL_video.h create mode 100644 Windows/SDL/include/begin_code.h create mode 100644 Windows/SDL/include/close_code.h create mode 100644 Windows/SDL/lib/SDL.dll create mode 100644 Windows/SDL/lib/SDL.lib create mode 100644 Windows/SDL/lib/SDLmain.lib create mode 100644 Windows/SDL/lib/libSDL.dll.a create mode 100644 Windows/SDL/lib/libSDLmain.a create mode 100644 Windows/SDL/lib64/SDL.dll create mode 100644 Windows/SDL/lib64/SDL.lib create mode 100644 Windows/SDL/lib64/SDLmain.lib create mode 100644 Windows/SDL/lib64/libSDL.dll.a create mode 100644 Windows/SDL/lib64/libSDLmain.a create mode 100644 Windows/SDL/main/SDL_win32_main.c create mode 100644 Windows/SDL/watcom/SDL.def create mode 100644 Windows/SDL/watcom/SDL.exp create mode 100644 Windows/SDL/watcom/SDL.lib create mode 100644 Windows/SDL/watcom/def2lbc.awk create mode 100644 Windows/SDL/watcom/makefile create mode 100644 Windows/SDL2/BUGS.txt create mode 100644 Windows/SDL2/LICENSE.txt create mode 100644 Windows/SDL2/README-SDL.txt create mode 100644 Windows/SDL2/README.md create mode 100644 Windows/SDL2/WhatsNew.txt create mode 100755 Windows/SDL2/bin/sdl2-config create mode 100644 Windows/SDL2/include/SDL.h create mode 100644 Windows/SDL2/include/SDL_assert.h create mode 100644 Windows/SDL2/include/SDL_atomic.h create mode 100644 Windows/SDL2/include/SDL_audio.h create mode 100644 Windows/SDL2/include/SDL_bits.h create mode 100644 Windows/SDL2/include/SDL_blendmode.h create mode 100644 Windows/SDL2/include/SDL_clipboard.h create mode 100644 Windows/SDL2/include/SDL_config.h create mode 100644 Windows/SDL2/include/SDL_config_windows.h create mode 100644 Windows/SDL2/include/SDL_cpuinfo.h create mode 100644 Windows/SDL2/include/SDL_egl.h create mode 100644 Windows/SDL2/include/SDL_endian.h create mode 100644 Windows/SDL2/include/SDL_error.h create mode 100644 Windows/SDL2/include/SDL_events.h create mode 100644 Windows/SDL2/include/SDL_filesystem.h create mode 100644 Windows/SDL2/include/SDL_gamecontroller.h create mode 100644 Windows/SDL2/include/SDL_gesture.h create mode 100644 Windows/SDL2/include/SDL_guid.h create mode 100644 Windows/SDL2/include/SDL_haptic.h create mode 100644 Windows/SDL2/include/SDL_hidapi.h create mode 100644 Windows/SDL2/include/SDL_hints.h create mode 100644 Windows/SDL2/include/SDL_joystick.h create mode 100644 Windows/SDL2/include/SDL_keyboard.h create mode 100644 Windows/SDL2/include/SDL_keycode.h create mode 100644 Windows/SDL2/include/SDL_loadso.h create mode 100644 Windows/SDL2/include/SDL_locale.h create mode 100644 Windows/SDL2/include/SDL_log.h create mode 100644 Windows/SDL2/include/SDL_main.h create mode 100644 Windows/SDL2/include/SDL_messagebox.h create mode 100644 Windows/SDL2/include/SDL_metal.h create mode 100644 Windows/SDL2/include/SDL_misc.h create mode 100644 Windows/SDL2/include/SDL_mouse.h create mode 100644 Windows/SDL2/include/SDL_mutex.h create mode 100644 Windows/SDL2/include/SDL_name.h create mode 100644 Windows/SDL2/include/SDL_opengl.h create mode 100644 Windows/SDL2/include/SDL_opengl_glext.h create mode 100644 Windows/SDL2/include/SDL_opengles.h create mode 100644 Windows/SDL2/include/SDL_opengles2.h create mode 100644 Windows/SDL2/include/SDL_opengles2_gl2.h create mode 100644 Windows/SDL2/include/SDL_opengles2_gl2ext.h create mode 100644 Windows/SDL2/include/SDL_opengles2_gl2platform.h create mode 100644 Windows/SDL2/include/SDL_opengles2_khrplatform.h create mode 100644 Windows/SDL2/include/SDL_pixels.h create mode 100644 Windows/SDL2/include/SDL_platform.h create mode 100644 Windows/SDL2/include/SDL_power.h create mode 100644 Windows/SDL2/include/SDL_quit.h create mode 100644 Windows/SDL2/include/SDL_rect.h create mode 100644 Windows/SDL2/include/SDL_render.h create mode 100644 Windows/SDL2/include/SDL_revision.h create mode 100644 Windows/SDL2/include/SDL_rwops.h create mode 100644 Windows/SDL2/include/SDL_scancode.h create mode 100644 Windows/SDL2/include/SDL_sensor.h create mode 100644 Windows/SDL2/include/SDL_shape.h create mode 100644 Windows/SDL2/include/SDL_stdinc.h create mode 100644 Windows/SDL2/include/SDL_surface.h create mode 100644 Windows/SDL2/include/SDL_system.h create mode 100644 Windows/SDL2/include/SDL_syswm.h create mode 100644 Windows/SDL2/include/SDL_thread.h create mode 100644 Windows/SDL2/include/SDL_timer.h create mode 100644 Windows/SDL2/include/SDL_touch.h create mode 100644 Windows/SDL2/include/SDL_types.h create mode 100644 Windows/SDL2/include/SDL_version.h create mode 100644 Windows/SDL2/include/SDL_video.h create mode 100644 Windows/SDL2/include/SDL_vulkan.h create mode 100644 Windows/SDL2/include/begin_code.h create mode 100644 Windows/SDL2/include/close_code.h create mode 100644 Windows/SDL2/lib/SDL2.dll create mode 100644 Windows/SDL2/lib/SDL2.lib create mode 100644 Windows/SDL2/lib/SDL2main.lib create mode 100644 Windows/SDL2/lib/libSDL2.dll.a create mode 100644 Windows/SDL2/lib/libSDL2main.a create mode 100644 Windows/SDL2/lib64/SDL2.dll create mode 100644 Windows/SDL2/lib64/SDL2.lib create mode 100644 Windows/SDL2/lib64/SDL2main.lib create mode 100644 Windows/SDL2/lib64/libSDL2.dll.a create mode 100644 Windows/SDL2/lib64/libSDL2main.a create mode 100644 Windows/SDL2/main/SDL_windows.h create mode 100644 Windows/SDL2/main/SDL_windows_main.c create mode 100644 Windows/SDL2/watcom/SDL2.def create mode 100644 Windows/SDL2/watcom/SDL2.exp create mode 100644 Windows/SDL2/watcom/SDL2.lib create mode 100644 Windows/SDL2/watcom/def2lbc.awk create mode 100644 Windows/SDL2/watcom/makefile create mode 100644 Windows/VS2005/quakespasm-sdl2.vcproj create mode 100644 Windows/VS2005/quakespasm.sln create mode 100644 Windows/VS2005/quakespasm.vcproj create mode 100644 Windows/VisualStudio/quakespasm-sdl2.vcxproj create mode 100644 Windows/VisualStudio/quakespasm-sdl2.vcxproj.filters create mode 100644 Windows/VisualStudio/quakespasm.sln create mode 100644 Windows/VisualStudio/quakespasm.vcxproj create mode 100644 Windows/VisualStudio/quakespasm.vcxproj.filters create mode 100644 Windows/codecs/include/FLAC/callback.h create mode 100644 Windows/codecs/include/FLAC/export.h create mode 100644 Windows/codecs/include/FLAC/format.h create mode 100644 Windows/codecs/include/FLAC/ordinals.h create mode 100644 Windows/codecs/include/FLAC/stream_decoder.h create mode 100644 Windows/codecs/include/flac_config.txt create mode 100644 Windows/codecs/include/mad.h create mode 100644 Windows/codecs/include/mikmod.h create mode 100644 Windows/codecs/include/mikmod_config.txt create mode 100644 Windows/codecs/include/mpg123.h create mode 100644 Windows/codecs/include/mpg123_config.txt create mode 100644 Windows/codecs/include/ogg/config_types.h create mode 100644 Windows/codecs/include/ogg/ogg.h create mode 100644 Windows/codecs/include/ogg/os_types.h create mode 100644 Windows/codecs/include/opus/opus.h create mode 100644 Windows/codecs/include/opus/opus_defines.h create mode 100644 Windows/codecs/include/opus/opus_multistream.h create mode 100644 Windows/codecs/include/opus/opus_types.h create mode 100644 Windows/codecs/include/opus/opusfile.h create mode 100644 Windows/codecs/include/opusfile.h create mode 100644 Windows/codecs/include/vorbis/codec.h create mode 100644 Windows/codecs/include/vorbis/vorbisfile.h create mode 100644 Windows/codecs/include/xmp.h create mode 100644 Windows/codecs/x64/libFLAC-8.dll create mode 100644 Windows/codecs/x64/libFLAC.dll.a create mode 100644 Windows/codecs/x64/libFLAC.lib create mode 100644 Windows/codecs/x64/libmad-0.dll create mode 100644 Windows/codecs/x64/libmad.dll.a create mode 100644 Windows/codecs/x64/libmad.lib create mode 100644 Windows/codecs/x64/libmikmod-3.dll create mode 100644 Windows/codecs/x64/libmikmod.dll.a create mode 100644 Windows/codecs/x64/libmikmod.lib create mode 100644 Windows/codecs/x64/libmpg123-0.dll create mode 100644 Windows/codecs/x64/libmpg123.dll.a create mode 100644 Windows/codecs/x64/libmpg123.lib create mode 100644 Windows/codecs/x64/libogg-0.dll create mode 100644 Windows/codecs/x64/libogg.dll.a create mode 100644 Windows/codecs/x64/libogg.lib create mode 100644 Windows/codecs/x64/libopus-0.dll create mode 100644 Windows/codecs/x64/libopus.dll.a create mode 100644 Windows/codecs/x64/libopus.lib create mode 100644 Windows/codecs/x64/libopusfile-0.dll create mode 100644 Windows/codecs/x64/libopusfile.dll.a create mode 100644 Windows/codecs/x64/libopusfile.lib create mode 100644 Windows/codecs/x64/libvorbis-0.dll create mode 100644 Windows/codecs/x64/libvorbis.dll.a create mode 100644 Windows/codecs/x64/libvorbis.lib create mode 100644 Windows/codecs/x64/libvorbisfile-3.dll create mode 100644 Windows/codecs/x64/libvorbisfile.dll.a create mode 100644 Windows/codecs/x64/libvorbisfile.lib create mode 100644 Windows/codecs/x64/libxmp.dll create mode 100644 Windows/codecs/x64/libxmp.dll.a create mode 100644 Windows/codecs/x64/libxmp.lib create mode 100644 Windows/codecs/x86-watcom/FLAC.lib create mode 100644 Windows/codecs/x86-watcom/libxmp.lib create mode 100644 Windows/codecs/x86-watcom/mad.lib create mode 100644 Windows/codecs/x86-watcom/mikmod.lib create mode 100644 Windows/codecs/x86-watcom/mpg123.lib create mode 100644 Windows/codecs/x86-watcom/ogg.lib create mode 100644 Windows/codecs/x86-watcom/opus.lib create mode 100644 Windows/codecs/x86-watcom/opusfile.lib create mode 100644 Windows/codecs/x86-watcom/vorbis.lib create mode 100644 Windows/codecs/x86-watcom/vorbisfile.lib create mode 100644 Windows/codecs/x86/libFLAC-8.dll create mode 100644 Windows/codecs/x86/libFLAC.dll.a create mode 100644 Windows/codecs/x86/libFLAC.lib create mode 100644 Windows/codecs/x86/libmad-0.dll create mode 100644 Windows/codecs/x86/libmad.dll.a create mode 100644 Windows/codecs/x86/libmad.lib create mode 100644 Windows/codecs/x86/libmikmod-3.dll create mode 100644 Windows/codecs/x86/libmikmod.dll.a create mode 100644 Windows/codecs/x86/libmikmod.lib create mode 100644 Windows/codecs/x86/libmpg123-0.dll create mode 100644 Windows/codecs/x86/libmpg123.dll.a create mode 100644 Windows/codecs/x86/libmpg123.lib create mode 100644 Windows/codecs/x86/libogg-0.dll create mode 100644 Windows/codecs/x86/libogg.dll.a create mode 100644 Windows/codecs/x86/libogg.lib create mode 100644 Windows/codecs/x86/libopus-0.dll create mode 100644 Windows/codecs/x86/libopus.dll.a create mode 100644 Windows/codecs/x86/libopus.lib create mode 100644 Windows/codecs/x86/libopusfile-0.dll create mode 100644 Windows/codecs/x86/libopusfile.dll.a create mode 100644 Windows/codecs/x86/libopusfile.lib create mode 100644 Windows/codecs/x86/libvorbis-0.dll create mode 100644 Windows/codecs/x86/libvorbis.dll.a create mode 100644 Windows/codecs/x86/libvorbis.lib create mode 100644 Windows/codecs/x86/libvorbisfile-3.dll create mode 100644 Windows/codecs/x86/libvorbisfile.dll.a create mode 100644 Windows/codecs/x86/libvorbisfile.lib create mode 100644 Windows/codecs/x86/libxmp.dll create mode 100644 Windows/codecs/x86/libxmp.dll.a create mode 100644 Windows/codecs/x86/libxmp.lib create mode 100644 Windows/misc/include/msinttypes/README.txt create mode 100644 Windows/misc/include/msinttypes/changelog.txt create mode 100644 Windows/misc/include/msinttypes/inttypes.h create mode 100644 Windows/misc/include/msinttypes/stdint.h diff --git a/.github/README.txt b/.github/README.txt new file mode 120000 index 0000000..92b6bbf --- /dev/null +++ b/.github/README.txt @@ -0,0 +1 @@ +../Quakespasm.txt \ No newline at end of file diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 0000000..c325e92 --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,21 @@ +name: Linux + +on: [push, pull_request] + +jobs: + build-linux: + name: Build Linux + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + compiler: ["clang", "gcc"] + + steps: + - uses: actions/checkout@v4 + + - name: Install Dependencies + run: sudo apt update && sudo apt install libmad0-dev libsdl2-dev libvorbis-dev + + - name: Build ${{ matrix.compiler }} + run: make --jobs=3 --keep-going --directory=Quake CC=${{ matrix.compiler }} USE_SDL2=1 diff --git a/.github/workflows/build-mac.yml b/.github/workflows/build-mac.yml new file mode 100644 index 0000000..1b1fc81 --- /dev/null +++ b/.github/workflows/build-mac.yml @@ -0,0 +1,25 @@ +name: macOS + +on: [push, pull_request] + +jobs: + build-mac-os: + name: Build macOS + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + architecture: [x64, M1] + + steps: + - uses: actions/checkout@v4 + + - name: Build ${{ matrix.architecture }} + shell: bash + run: | + set -o pipefail + xcodebuild \ + -project MacOSX/QuakeSpasm.xcodeproj \ + -configuration Release \ + -target QuakeSpasm-SDL2-${{ matrix.architecture }} \ + | xcpretty diff --git a/.github/workflows/build-mingw.yml b/.github/workflows/build-mingw.yml new file mode 100644 index 0000000..b5dc7ef --- /dev/null +++ b/.github/workflows/build-mingw.yml @@ -0,0 +1,27 @@ +name: Windows (MinGW) + +on: [push, pull_request] + +jobs: + build-linux: + name: Build MinGW + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + config: + - target: win32 + package: i686-win32 + - target: win64 + package: x86-64 + + steps: + - uses: actions/checkout@v4 + + - name: Install Dependencies + run: sudo apt update && sudo apt install gcc-mingw-w64-${{ matrix.config.package }} + + - name: Build MinGW ${{ matrix.config.target }} + run: | + export MAKEFLAGS=--jobs=3\ --keep-going + cd Quake && ./build_cross_${{ matrix.config.target }}-sdl2.sh diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml new file mode 100644 index 0000000..3050be2 --- /dev/null +++ b/.github/workflows/build-windows.yml @@ -0,0 +1,27 @@ +name: Windows (MSVC) + +on: [push, pull_request] + +jobs: + build-windows: + name: Build Windows + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + platform: [x64, Win32] + + steps: + - uses: actions/checkout@v4 + - uses: microsoft/setup-msbuild@v2 + + - name: Build ${{ matrix.platform }} + run: | + $options = @( ` + '-property:Configuration=Release', ` + '-property:Platform=${{ matrix.platform }}', ` + '-maxcpucount', ` + '-verbosity:minimal' ` + ) + & msbuild Windows\VisualStudio\quakespasm.sln $options + if (-not $?) { throw "Build failed" } diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..9efa6fb --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,338 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Moe Ghoul, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Linux/CodeBlocks/QuakeSpasm-SDL2.cbp b/Linux/CodeBlocks/QuakeSpasm-SDL2.cbp new file mode 100644 index 0000000..8e3d29b --- /dev/null +++ b/Linux/CodeBlocks/QuakeSpasm-SDL2.cbp @@ -0,0 +1,357 @@ + + + + + + diff --git a/Linux/CodeBlocks/QuakeSpasm.cbp b/Linux/CodeBlocks/QuakeSpasm.cbp new file mode 100644 index 0000000..9178096 --- /dev/null +++ b/Linux/CodeBlocks/QuakeSpasm.cbp @@ -0,0 +1,356 @@ + + + + + + diff --git a/Linux/net.sourceforge.quakespasm.Quakespasm.desktop b/Linux/net.sourceforge.quakespasm.Quakespasm.desktop new file mode 100644 index 0000000..c06a803 --- /dev/null +++ b/Linux/net.sourceforge.quakespasm.Quakespasm.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Quakespasm +Comment=A modernised fork of the Quake engine +Exec=quakespasm +Icon=net.sourceforge.quakespasm.Quakespasm +StartupNotify=true +PrefersNonDefaultGPU=true +Terminal=false +Type=Application +Categories=Game;Shooter; +Keywords=quake;first;person;shooter; diff --git a/Linux/net.sourceforge.quakespasm.Quakespasm.metainfo.xml b/Linux/net.sourceforge.quakespasm.Quakespasm.metainfo.xml new file mode 100644 index 0000000..6a340aa --- /dev/null +++ b/Linux/net.sourceforge.quakespasm.Quakespasm.metainfo.xml @@ -0,0 +1,70 @@ + + + net.sourceforge.quakespasm.Quakespasm + Quakespasm + Quakespasm contributors + A modern port of the original Quake engine + CC0-1.0 + GPL-2.0-only + https://quakespasm.sourceforge.net/ + https://sourceforge.net/projects/quakespasm/ + net.sourceforge.quakespasm.Quakespasm.desktop + +

Quakespasm is a *Nix friendly Quake Engine based on the SDL port of the popular FitzQuake. + It includes some new features, important fixes, and aims for portability and 64 bit correctness.

+

Features:

+
    +
  • Supports Windows, Mac OS X, Linux, other unices.
  • +
  • Well tested on both 32 bit and 64 bit platforms.
  • +
  • Well tested on both little endian and big endian platforms.
  • +
  • OpenGL improvements. In-game resolution changing.
  • +
  • Widescreen FOV (field of view) support and automatic Hor+ FOV scaling.
  • +
  • Improved sound support. Support for OGG, MP3, Opus and WAV external music files.
  • +
  • Improved game controller support using SDL2.
  • +
  • Countless bug fixes, security fixes and other improvements.
  • +
  • Support for playing the 'Quake 2021 re-release' content
  • +
+

Quakespasm requires a copy of the Quake game data, at the least in the form of the shareware data file + pak0.pak. In order to set this up, open (and if necessary create) the directory + ~/.var/app/net.sourceforge.quakespasm.Quakespasm/data on your computer and copy the id1 directory + from a copy of Quake there. Quakespasm will notify you on startup if it cannot find or access the game data.

+
+ + + https://a.fsdn.com/con/app/proj/quakespasm/screenshots/ad_1.png/max/max/1 + Arcane Dimensions + + + https://a.fsdn.com/con/app/proj/quakespasm/screenshots/spasm0000.png/max/max/1 + Arcane Dimensions + + + https://a.fsdn.com/con/app/proj/quakespasm/screenshots/253088.jpg/max/max/1 + 2021 re-release support + + + https://a.fsdn.com/con/app/proj/quakespasm/screenshots/spasm0000-2173.png/max/max/1 + Horde of Zendar + + + https://a.fsdn.com/con/app/proj/quakespasm/screenshots/ad_2.png/max/max/1 + The Crucial Error + + + https://a.fsdn.com/con/app/proj/quakespasm/screenshots/ad_7.png/max/max/1 + Arcane Dimensions secret level + + + + Game + + + + + + intense + intense + moderate + + https://sourceforge.net/projects/quakespasm/support +
diff --git a/Linux/sgml/Makefile.sgml b/Linux/sgml/Makefile.sgml new file mode 100644 index 0000000..b5e21f2 --- /dev/null +++ b/Linux/sgml/Makefile.sgml @@ -0,0 +1,6 @@ +# sgml tools are from linuxdoc-tools +default: Quakespasm.sgml + sgml2html -s 0 -T 2 Quakespasm.sgml 2>/dev/null +all: default text +text txt: Quakespasm.sgml + ./sgml2rawtxt Quakespasm diff --git a/Linux/sgml/Quakespasm.sgml b/Linux/sgml/Quakespasm.sgml new file mode 100644 index 0000000..4f1c05f --- /dev/null +++ b/Linux/sgml/Quakespasm.sgml @@ -0,0 +1,748 @@ + +
+QuakeSpasm +<toc> + +<em>Page last edited: February 2026.</em> + +<sect>About<p> +QuakeSpasm is a modern cross-platform Quake engine based on FitzQuake. +</p><p> +It includes support for 64 bit CPUs and custom music playback, a new +sound driver, some graphical niceities, and numerous bug-fixes and other improvements. +</p><p> +Quakespasm utilizes SDL-1.2 or SDL2 frameworks, choose one which works best for you. +SDL2 has nicer features, smoother mouse input and better support for newer operating systems, +but no CD-ROM support. + +<sect>Downloads<p> +<itemize> +<item><url url="http://quakespasm.sourceforge.net/download.htm" name="Project Downloads"> +<item><url url="https://sourceforge.net/p/quakespasm/quakespasm/ci/master/tree/" name="Latest code repository"> +<item><url url="https://github.com/sezero/quakespasm" name="Github mirror."> +</itemize> + +<sect>Hints<p> +<em>Visit the <url url="https://celephais.net/fitzquake/" name="FitzQuake homepage"> for a full run-down of the engine's commands and variables.</em> +<itemize> +<item>To disable some changes, use "<bf>quakespasm -fitz</bf>" +<item>Quakespasm's custom data is stored in "quakespasm.pak". Install this file alongside your id1 directory to enable the custom console background and other minor features. +<item>For different sound backend drivers use :<newline> +"<bf>SDL_AUDIODRIVER=</bf><em>DRIVER</em><bf> ./quakespasm</bf>"<newline> +where DRIVER may be alsa, dsp, pulse, esd ... +<item><bf>Shift+Escape</bf> draws the Console. +<item>From the console, use <bf>UP</bf> to browse the command line history and +<bf>TAB</bf> to autocomplete command and map names. +<item>There is currently no CD Music volume support and SDL2 doesn't support CD audio. cd_sdl.c needs replacing with cd_linux.c, cd_bsd.c etc.. +<item>In windows, alternative CD drives are accessible by<newline> +"<bf>quakespasm -cddev F</bf>" (for example) +<item>Quakespasm allows loading new games (mods) on the fly with<newline> +"<bf>game</bf> <em>GAMENAME {-quoth/hipnotic/rogue}</em>" +<item>Use "<bf>quakespasm -condebug</bf>" to save console log to "qconsole.log". SDL2 builds no longer generate stdout.txt/stderr.txt. +</itemize> +</p> + +<sect1>Music Playback<p> +Quakespasm can play various external music formats, including MP3, OGG and FLAC. +<itemize> +<item>Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music". +<item>Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG. +<item>Use the "-noextmusic" option to disable this feature. +<item>As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed". +<item>See <url url="Quakespasm-Music.txt"> for more details. +</itemize> + +<sect1>Controller Support<p> +The SDL2 variant of Quakespasm supports Xbox 360 style game controllers. +<p> +The default configuration uses the left analog stick for movement and the right for looking. +<p> +If your controller doesn't work you can try placing <url url="https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt" name="this file"> in your Quake directory, it is a community-maintained database that adds support for more controllers to SDL2. + +<sect2>Cvars<p> +<itemize> +<item>joy_deadzone_look - Fraction of look stick travel to be deadzone, between 0 and 1. Default is 0.175. +<item>joy_deadzone_move - Same as above, but for the move stick. Default is 0.175. +<item>joy_deadzone_trigger - Fraction of trigger range required to register a button press on the analog triggers, between 0 and 1. Default 0.2. +<item>joy_outer_threshold_look - Outer deadzone for the look stick, between 0 and 1. Default 0.02. +<item>joy_outer_threshold_move - Outer deadzone for the move stick, between 0 and 1. Default 0.02. +<item>joy_sensitivity_yaw/pitch - Max angular speed in degrees/second when looking. Defaults are 240 for yaw (turning left/right) and 130 for pitch (up/down). +<item>joy_exponent - For the look stick, the stick displacement (between 0 and 1) is raised to this power. Default is 2. A value of 1 would give a linear relationship between stick displacement and fraction of the maximum angular speed. +<item>joy_exponent_move - Same as joy_exponent but for the move stick. Default is 2. +<item>joy_invert - Set to 1 to invert the vertical axis of the look stick. +<item>joy_swapmovelook - Set to 1 to swap the left and right analog stick functions. Default is 0, move on the left stick, look on the right stick. +<item>joy_enable - Set to 0 to disable controller support. Default is 1. +</itemize> + +<sect2>Buttons<p> +Some of the controller buttons are hardcoded to allow navigating the menu: + +<itemize> +<item>Back - alias for TAB +<item>Start - alias for ESC +<item>DPad, analog sticks - mapped to arrow keys +<item>A Button - alias for ENTER in menus +<item>B Button - alias for ESC in menus +</itemize> + +These buttons can be bound normally: + +<itemize> +<item>LTRIGGER - Left trigger +<item>RTRIGGER - Right trigger +<item>LSHOULDER - Left shoulder button +<item>RSHOULDER - Right shoulder button +<item>LTHUMB - Clicking the left thumbstick +<item>RTHUMB - Clicking the right thumbstick +<item>ABUTTON +<item>BBUTTON +<item>XBUTTON +<item>YBUTTON +</itemize> + +quakespasm.pak contains a default.cfg which has been updated to give some default bindings. L/R shoulder buttons are bound to weapon switching, and L/R triggers are jump and attack. +<p> +The controller support started as Jeremiah Sypult's implementation in Quakespasm-Rift, and also uses ideas/code from LordHavoc's DarkPlaces. + + +<sect>Compiling and Installation<p> +<p>See the Downloads section to get the sourcecode, then below for platform specific instructions. +Quakespasm can also be built with the cross-platform Codeblocks. +<newline> +Quakespasm's (optional) custom data is now stored in the file <bf>quakespasm.pak</bf>. This file should be placed alongside your quakespasm binary and <bf>id1</bf> directory.</p> + +<sect1>Linux/Unix<p> +After extracting the source tarball, "cd Quake" and edit the Makefile for music options. +</p><p><em>Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.</em> +</p><p>Then type "make" to compile the program, and copy the "quakespasm" binary (and "quakespasm.pak") to your Quake game directory. +<newline> +Compile time options include +<itemize> +<item><bf>make DO_USERDIRS=1</bf> to include user directories support +<item><bf>make DEBUG=1</bf> for debugging +<item><bf>make SDL_CONFIG=</bf><em>/PATH/TO/sdl-config</em> for unusual SDL installations +<item><bf>make USE_SDL2=1</bf> to compile against SDL2 instead of SDL-1.2 +</itemize> +<sect1>Windows<p> +QuakeSpasm developers cross-compile windows binaries using <url url="http://mingw-w64.sf.net" name="MinGW-w64"> and <url url="https://mingw.osdn.io" name="MinGW">. +The project can also be built using Microsoft Visual Studio 2005 and newer versions.</p> +<sect1>Mac OS X<p> +A Quakespasm App (including program launcher and update framework) can be made using the <bf>Xcode</bf> template found in the MacOSX directory. +Alternatively, have a look at <bf>Makefile.darwin</bf> for more instructions on building from a console. +</p> +<sect1>Escripten<p> +Use <bf>Makefile.escripten</bf> to build. Build depends on third party library <url url="https://github.com/ptitSeb/gl4es" name="gl4es">. +See <url url="https://github.com/ololoken/ems-runner-quakespasm"> for a launcher. +</p> + +<sect1>Quake '2021 re-release'<p> +QuakeSpasm 0.94 has support for playing the 2021 re-release content: Copy the quakespasm binary to your rerelease installation and run as you normally do.</p> + + +<sect>Changes<p> + +<sect1>Changes in 0.97.0<p> +<itemize> +<item> Valve BSP, WAD, and external texture support. +<item> The maps console command now takes an optional ModName, e.g.: maps ad or maps id1 +<item> New maps_mod console command to list maps only from the active mod. +<item> Add support for -userdir cmdline arg to override the hardcoded user directory. +<item> Reset r_skyfog between maps. +<item> Bump MAX_MODELS/MAX_MOD_KNOWN from 2048 to 4096 (needed by qbj3_hcm from Quake Brutalist Jam 3.) +<item> Support for type 3 (uncompressed grayscale) TGA files (needed by qbj3_rabbit from Quake Brutalist Jam 3.) +<item> Fixes to type 1 (paletted) TGA files support. +<item> SV_PushMove: preserve pusher solid field instead of overwriting with SOLID_BSP. +<item> Fix svc_clientdata weapon byte potentially not being written for mission packs. +<item> Don't spawn monsters when starting map with nomonsters 1. +<item> Disable EXT_packed_pixels support on big endian systems. +<item> Allow any supported music type to be considered as cdrip. +<item> snd_mpg123 now uses 64 bit-only libmpg123 api if built against mpg123 >= 1.33.0 +<item> Initial escripten wasm port. +<item> Code cleanups, minor fixes, updates to third party code. +<item> Thanks to Andrei Drexler, Alexey Lysiuk, Roman Turchin, Justin, Jesse Elliott and Alexander Tsoy for patches. +</itemize> +</p> + +<sect1>Changes in 0.96.3<p> +<itemize> +<item> Fix potential infinite loop when playing sounds with loop start >= end (e.g. misc/forcefield.wav from Madfox's kaptlog.zip) +<item> Fix possible overflow when resampling very big sounds (e.g. gram1.wav from the 'A day like no other' mod.) +<item> Change Sky_ClipPoly to allocate on the heap in if MAX_CLIP_VERTS limit is reached (e.g. with lim_daviddg from Liminal Spaces Jam) +<item> Minor code cleanups. Updates to third party code. +<item> Thanks to Andrei Drexler, Vincent Sonnier, Alexey Lysiuk, and Jaycie Ewald for patches. +</itemize> +</p> + +<sect1>Changes in 0.96.2<p> +<itemize> +<item> Fix stack buffer overrun Mod_PolyForUnlitSurface: fixes crash when loading lim_daviddg.bsp from Liminal Spaces Jam. +<item> Fix potential buffer overflow in progs global string functions. +<item> Fix potential buffer overflow in Mod_LoadAliasFrame() +<item> Optimize BoxOnPlaneSide() +<item> Reserve enough space in PF_makestatic() for worst case scenarios. +<item> Improve handling of huge entities in SV_FindTouchedLeafs() +<item> Warn about bad maps with only 1 or 2 edges per face (e.g.: mj4m?, alk_dancing, ej3_bizz, rotj_entsoy...) +<item> Apply FOV gun scaling for r_showtris +<item> Sliders with visible values in options menu. +<item> game command now refuses setting a non-existing game directory +<item> Fix build in C23 mode. +<item> Minor code cleanups. Updated third party code, e.g. SDL, music codecs, etc. +<item> Thanks to Andrei Drexler, Alexey Lysiuk, Diordany van Hemert, and Jaime Moreira for patches. +</itemize> +</p> + +<sect1>Changes in 0.96.1<p> +<itemize> +<item> Fix demo recording as client-only after connection to server (was broken by signon changes in 0.96.0. Thanks to Jozsef Szalontai for issue report.) +<item> Fix potential buffer overflow in COM_Parse(), e.g. with maps with oversized 'wad' fields. (Thanks to Andrei Drexler.) +<item> Minor code cleanups. +</itemize> +</p> + +<sect1>Changes in 0.96.0<p> +<itemize> +<item> <url url="https://github.com/sezero/quakespasm/pull/51" name="Adjustments"> to joystick defaults and behaviour. See the "Controller support / Cvars" section above. +<item> Fix for a mouse grabbing issue on macOS. +<item> Add missing support for <em>-ip</em> command line option on unix / macOS. +<item> Backport angled sprites code from FTEQW (spriteframetype: 2, must have 8 frames per group.) +<item> Bump the progs execution runaway loop limit to 16M. +<item> Add signon buffer fragmentation to fix SZ_GetSpace errors on certain maps when using protocol 999. +<item> Increased MAX_DATAGRAM to 64000 to overcome packet overflows. +<item> Bump the MAXALIASFRAMES limit to 1024. +<item> Fix arrays to have proper sizes in gl mesh code, reflecting MAXALIASTRIS and MAXALIASVERTS correctly. (fixes SIGSEGV in mj4m4/mj4m5.) +<item> Increased default value of gl_farclip to 65536. +<item> Increase chase cam target trace distance to allow for chasecam to function in large open maps (useful e.g. for the func_vehicle mod.) +<item> Raised default maximum number of particles to 16384 (can be set up to 32768 with -particles on the command line.) +<item> Fix on-screen keyboard showing up suddenly on Steam Deck when starting a map. +<item> Fix viewmodel interpolation with >10Hz animations. +<item> Fix a memory leak when exiting game in SDL2 builds. +<item> Fix a possible crash when handling clipboard data on macOS. +<item> Fix a potential crash after loading of saved game. +<item> Fix possible out-of-bound reads when handling progs type sizes. +<item> Fix Dutch angle VP_PARALLEL_UPRIGHT sprites. +<item> Fix an issue with lights blending by using 10 bit color depth for lightmaps. (For GLSL mode only.) Disable with "-nopackedpixels", if necessary. +<item> No relative motions when the window is not focused. +<item> Status bar and intermission screen tweaks. +<item> Properly display monster counts > 3 digits. +<item> Fix console animation with scr_conspeed <= 0. +<item> Fix mouselook not working upon game quickload during a demo play. +<item> Haiku operating system support. +<item> Fix console when server is run noninteractively with stdin redirected from /dev/null. +<item> Updated Visual Studio project files. +<item> Minor code cleanups. Updated third party code, e.g. SDL, music codecs, etc. +<item> Thanks to Andrei Drexler, Alexey Lysiuk, Andrey Budko, Boris I. Bendovsky, Chris Cowan, Maciej Olędzki, Simon McVittie, OscarL, Eric Wasylishen, Jaycie Ewald and Spike for patches. +</itemize> +</p> + +<sect1>Changes in 0.95.1<p> +<itemize> +<item> Allow mixing lit and unlit textures in the same map. +<item> Water texture mipmapping support - fixes glistening effect on distant water. +<item> Fix screen flashes in some maps with AMD's new drivers. +<item> Defend against zero-sized textures, e.g. __TB_empty in qbj_grue.bsp +<item> Fix possible file pointer leak in game load code. +<item> Minor code cleanups. Updated third party code, e.g. SDL, music codecs, etc. +<item> Thanks to 'temx' for his patches. +</itemize> +</p> + +<sect1>Changes in 0.95.0<p> +<itemize> +<item> Add support for lit water (patch contributed by Josiah Jack, with fixes from Eric Wasylishen.) +<item> Add model scale support -- requires protocol 999. (Original patch contributed by Josiah Jack with fixes from temx and Andrei Drexler. Thanks to Eric Wasylishen, MH and Spike for useful discussions.) +<item> Add sv_cheats cvar for 2021 rerelease (patch from Andrei Drexler). +<item> Clear the startdemo list on game change (patch by Andrei Drexler). +<item> Try light trace from entity origin first (patch by Andrei Drexler). +<item> Backport a few fixes to the bundled SDL2-2.0.22 version. +</itemize> +</p> + +<sect1>Changes in 0.94.7<p> +<itemize> +<item> Fix console history buffer wrapping. +<item> Fix wrong external texture use after vid_restart. +<item> Update lodepng from mainstream git. +<item> Miscellaneous source code cleanups. +</itemize> +</p> + +<sect1>Changes in 0.94.6<p> +<itemize> +<item> Server protocol size check fixes for sounds and particles. +<item> An invalid memory access fix in the jpg screenshot writer. +<item> Basic dependency tracking in Makefiles. +<item> Backported a few fixes to the bundled SDL2-2.0.22 version. +<item> Minor build fix for C++ compilers. +<item> Other small improvements elsewhere in the code. +</itemize> +</p> + +<sect1>Changes in 0.94.5<p> +<itemize> +<item> Compatibility with new SDL2 versioning scheme. +<item> Revised min/max/clamp macros' usage. +<item> Fixed a potential undefined behavior in R_DrawAliasModel. +<item> Fixed parsing of the time argument of svc_fog server message. (it has been broken for more than 20 years and has never seem to have been used.) +<item> image: support for type 1 (paletted) TGA files. +<item> Other small improvements elsewhere in the code. +<item> Backported a few fixes to the bundled SDL2-2.0.22 version. +</itemize> +</p> + +<sect1>Changes in 0.94.4<p> +<itemize> +<item> Fixed getting stuck with loading plaque upon attempting to load a bad save from the menu +<item> Fixed SZ_GetSpace server crashes, e.g. in ad_magna or ad_mountain +<item> Fixed intermission camera angles during demo playback +<item> Don't reset onground flag on every new server message +<item> Re-enabled title demos by default (turn off with cl_startdemos 0) +<item> Don't autoplay next demo after a timedemo +<item> Fixed bad parsing of cdtrack in hipdemo1 from Scourge of Armagon +<item> Fixed serverinfo off-by-one nummodels/numsounds for protocol 15 +<item> Support for Quake 2021 update 3 +<item> Implemented quad/pentagram dlights for Quake 2021 rerelease +<item> Implemented 2021 rerelease localsound builtin & svc_localsound (56) +<item> Several other improvements to Quake 2021 rerelease support +<item> Several other small fixes and improvements all over the code +<item> Updated third party code (SDL, lodepng, miniz, some of the codecs, etc.) +<item> Thanks to Andrei Drexler, 'atsb' and 'temx' for their several patches. +</itemize> +</p> + +<sect1>Changes in 0.94.3<p> +<itemize> +<item> Handle sky textures with non-standard sizes and warn about them (e.g. ad_tears) +<item> Allow loading textures not aligned to 16 pixels and warn about them (eg. the horde2 map of Dimension of the Machine from 2021 rerelease update/2.) +<item> Updated included SDL2 to latest version 2.0.18. +</itemize> +</p> + +<sect1>Changes in 0.94.2<p> +<itemize> +<item> 2021 rerelease: Support for playing the latest update. +<item> 2021 rerelease: Fix pitch black models in lit areas in DOTM. +<item> 2021 rerelease: Fix black candles in the DOTM start map. +<item> 2021 rerelease: Look for QuakeEX.kpf under userdir, too. +</itemize> +</p> + +<sect1>Changes in 0.94.1<p> +<itemize> +<item> Fix lightmap issues after vkQuake surface mark/cull optimizations merge (sf.net bug/50) +</itemize> +</p> + +<sect1>Changes in 0.94.0<p> +<itemize> +<item> Initial support for playing the 'Quake 2021 re-release' content (thanks to Andrei Drexler for bulk of the work, Guillaume Plourde for Q64 bsp format support.) +<item> Fix rendering bug when cl_bobcycle was set to zero (sf.net bug/41) +<item> Fixed buffer overflow with large char skybox names (sf.net bug/38) +<item> Fixed a missing MAXALIASFRAMES bounds check (sf.net bug/37) +<item> OpenGL: workaround Intel UHD 600 driver bug (sf.net bug/39) +<item> OpenGL: merged surface mark & cull optimizations from vkQuake. +<item> Compensate viewmodel distortion at fov > 90 (based on code from Qrack, thanks to Andrei Drexler for the patch.) +<item> Raised MAX_GLTEXTURES limit from 2048 to 4096 for now. +<item> Changed 'model has a skin taller than 480' error into a warning +<item> Reject lit files if they're the wrong size (eg hipnotic/start.bsp vs id1/start.lit or just a bsp that no longer has any coloured lits, etc) +<item> External ent files are now versioned using 4 digit crc of the original map's ents, like e1m1@c49d.ent, which is much safer. The old method (e.g. e1m1.ent) still works but isn't recommended. +<item> Support for external vis files. +<item> Save: remove CR/LFs from level name to avoids broken saves, e.g. with autumn_sp map. +<item> Music: improvements to mp3 tag detection / skipping. +<item> Music: umx loader fix for malformed / crafted files. +<item> New console command music_jump: Jump to given order in music, like Unreal's music change - only for module (tracker) music. +<item> Updated third-party libraries (music codecs, SDL, etc.) Other minor fixes, tidy-ups and protability tweaks. +<item> Source repository moved to git. +</itemize> +</p> + +<sect1>Changes in 0.93.2<p> +<itemize> +<item> Lightmaps are now dynamically allocated (from QSS), and BLOCK_WIDTH/HEIGHT raised from 128 to 256. +<item> Fixed several uncheked limits that would crash the Slayer's Testaments mod (sf.net bug #33). +<item> Raised MAXALIASTRIS from 2048 to 4096, so that the Slayer's Testaments mod works. +<item> Fixed 'pants' and 'shirt' types so that those textures load correctly on platforms where char type is unsigned by default (sf.net bug #28). +<item> Windows audio: WASAPI-enabled SDL2 dlls function properly now. +<item> Update the third-party libraries. Other fixes/cleanups. +</itemize> +</p> + +<sect1>Changes in 0.93.1<p> +<itemize> +<item> Fixed a fog regression which was introduced in 0.93.0. +<item> Fixed a crash (buffer overflow) with invalid vis data. +<item> Fixed buttons crushing players in 64-bit builds. +<item> Change controller movement to use cubic easing by default; added "joy_exponent_move" cvar. +<item> config.cfg is no longer written in case of a Sys_Error. +<item> Fixed Opus encoded cd tracks not being recognized as ripped tracks. +<item> Update the third-party libraries. Other fixes/cleanups. +</itemize> +</p> + +<sect1>Changes in 0.93.0<p> +<itemize> +<item> Raise default "joy_deadzone_trigger" cvar to 0.2. +<item> Raise console buffer size to 1MB. +<item> Raise MAX_STATIC_ENTITIES from 512 to 4096. +<item> Raise MAX_STACK_DEPTH from 32 to 64. +<item> Raise command buffer size from 8K to 256K to support large configs. +<item> Remove MAX_EFRAGS and MAX_MAP_LEAFS limits. +<item> Remove "Loadgame buffer overflow" limit, which could happen when loading DP or QSS saves. +<item> Adjust "exceeds standard limit of" debug warnings to include the actual QS limit. +<item> Change "game" command to now exec quake.rc. +<item> Change "games" / "mods" commands to list all subdirectories. +<item> Restore vid_refreshrate from fitzquake-0.85 for SDL2 builds. +<item> Alpha-masked model support. (MF_HOLEY: 0x4000). +<item> Invalid skin index now draws skin 0 (WinQuake behaviour) instead of blue checkerboard. +<item> Change default screenshot format to png. The 'screenshot' command now supports optional format (tga, png or jpg) and quality (1-100) arguments. +<item> Revert "always run" changes from 0.85.9 and move the QuakeSpasm customizations to a new "cl_alwaysrun" cvar: Set to 1 in order to scale forward/side/up speed by "cl_movespeedkey" (usually 2), and to make "speedkey" act as "slowkey". +<item> Change the "always run" menu option to offer three choices: +<verb> +off (cl_alwaysrun 0, cl_forwardspeed 200, cl_backspeed 200) +vanilla (cl_alwaysrun 0, cl_forwardspeed 400, cl_backspeed 400) +quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200) +</verb> +<item> New "r_scale" cvar. Set to 2, 3, or 4 to render the view at 1/2, 1/3, or 1/4 resolution. +<item> New "r_viewmodel_quake" cvar. Set to 1 for WinQuake gun position (from MarkV). +<item> New "find" / "apropos" command, searches for commands/cvar names for the given substring (from Spike). +<item> New "randmap" command for loading a random map. +<item> New "gl_cshiftpercent_contents", "gl_cshiftpercent_damage", "gl_cshiftpercent_bonus", "gl_cshiftpercent_powerup" cvars for tuning the strength of specic view blends. +<item> GL2 renderer: use a GLSL shader for world faces. Fixes reports of integrated+discrete GPU laptops having inconsistent fog rendering. +<item> Fix macOS startup delay (avoid calling gethostbyname() for ".local" hostnames). +<item> Fix memory corruption in PF_lightstyle with out of bounds lightstyles. +<item> Fix crash in BoundPoly with polygons extending beyond +/-9999. +<item> Fix QS window to stay on the current monitor when changing video modes (SDL2 only). +<item> Fix possible freeze in SV_TouchLinks regardless of what QC does in the touch function. +<item> Fix for maps with empty strings for vector keys (e.g. "origin"); don't read uninitialized memory. +<item> Support for Open Watcom compiler. +<item> Update the third-party libraries. +</itemize> +</p> + +<sect1>Changes in 0.92.1<p> +<itemize> +<item> Fixed large menu scale factors (was broken in 0.92.0). +<item> Fixed PAUSE key (was broken in 0.92.0). +<item> Updated some of the third-party libraries. +</itemize> +</p> + +<sect1>Changes in 0.92.0<p> +<itemize> +<item> SDL2 Game Controller support. +<item> Contrast support with new "contrast" cvar, behaving the same as MarkV. It may be a useful alternative to the existing gamma control for laptops in a bright environment, etc. Raising contrast gives less of a gray/washed out look than raising gamma, but at a disadvantage: colors near white get clipped to white. +<item> RMQ protocol (999) support, adapted from RMQEngine. +<item> New "-protocol x" command line option. Accepted values for 'x' are 15 (NetQuake), 666 (FitzQuake, default), and 999 (RMQ). +<item> New "setpos" console command. +<item> New "vid_borderless" cvar for getting a borderless window. +<item> Increased MAX_MAP_LEAFS from 65535 to 70000 and MAX_LIGHTMAPS from 256 to 512 in order to handle the oms3 map pack. +<item> Server edicts are now allocated using malloc instead of allocating on the hunk. +<item> gl_clear now defaults to 1. +<item> Fix items falling out of the world on oms3.bsp on SSE builds. +<item> Worked around an OSX 10.6 driver bug when using FSAA, which was leading to an unplayable HOM effect on the rest of the screen. +<item> Fix wrong trace endpoint from the tracepos console command. +<item> Updated some of the third-party libraries. Other fixes/clean-ups. +</itemize> +</p> + +<sect1>Changes in 0.91.0<p> +<sect2>Bugfixes +<itemize> +<item> Fix unwanted fog mode change upon video restart. +<item> Work around Intel 855 bug in status bar drawing with "r_oldwater 0" and "scr_sbaralpha 0". +<item> Fix an obscure GLSL bug where changing gamma would result in the screen turning to noise. +<item> Fix GLSL gamma causing the tiled screen border to turn white when "sizedown" is used. +<item> Fix an alias model VBO renderer bug where a model not precached during map start wouldn't be drawn. +<item> Fix the order of OpenGL context creation and window creation in SDL2 video. +<item> Fix a calling convention issue in windows DPI awareness function pointers. +<item> Fix a random texture recoloring after video mode change. +<item> Fix a liquid turning to garbage after several video mode changes and "r_oldwater 0". +<item> Fix a wrong alpha-sorting bug introduced in 0.90.1. +<item> Fix "flush" command not reloading mdl's from disk (bug introduced in 0.90.1). +<item> Prevent a possible buffer overflow in Cbuf_Execute (old Q1/Q2 bug). +<item> Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug). +</itemize> +<sect2>Visual improvements +<itemize> +<item> New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning specific liquid opacities (from DirectQ/RMQEngine, non-archived, default to 0), and new worldspawn keys _wateralpha, _lavaalpha, _slimealpha, _telealpha, _skyfog (unique to Quakespasm, similar to the behaviour of the "fog" worldspawn key). +<item> GLSL gamma is now supported on older hardware without NPOT extension. +</itemize> +<sect2>Interface improvements +<itemize> +<item> New r_pos command to show player position. +<item> NaN detection in traceline with "developer 1" set now warns instead of errors. +</itemize> +<sect2>Code cleanup / Other +<itemize> +<item> Update third-party libraries. +</itemize> +<sect2>Raised limits +<itemize> +<item> Default max_edicts 8192 (was 2048) and no longer saved to config.cfg. +<item> Default heapsize 256 MB (was 64 MB). +<item> Default zone 4 MB (was 384 KB). +<item> Raised MAX_SFX to 1024 (was 512). +</itemize> +</p> + +<sect1>Changes in 0.90.1<p> +<sect2>Bugfixes +<itemize> +<item> Fix dynamic light artifact where changing lightmap are rendered one frame late (bug introduced in 0.90.0). +<item> Fix texture memory leak when changing video modes with SDL2. +<item> Fix a rare incorrect mdl lighting on 64-bit builds. <url url="https://forums.insideqc.com/viewtopic.php?f=3&t=5620" name="(details here.)"> +<item> Fix fullbrights turning black after "kill" command (bug introduced in 0.90.0). +<item> Clear all fog values on map change to prevent colored fog carrying over to jam3_tronyn.bsp. +<item> Allow loading saves with } character in quoted strings, fixes issue with retrojam1_skacky.bsp. +<item> Fix viewmodel not lerping on extended-limit maps. +<item> Fix crash on out-of-bounds skin number. +</itemize> +<sect2>Performance +<itemize> +<item> Use multithreaded OpenGL on OS X for better performance. +<item> New, faster mdl renderer using GLSL. Disable with "-noglslalias". +</itemize> +<sect2>Visual improvements +<itemize> +<item> New gamma correction implementation using GLSL. Fixes all known gamma issues (affecting the full display, persisting after quitting, or darkening the screen on OS X). Disable with "-noglslgamma". +<item> Use high-quality water by default (r_oldwater 0). +<item> Shadows use stencil buffer to avoid overlapping artifacts (from MarkV.) +<item> r_noshadow_list cvar added (from MarkV.) +</itemize> +<sect2>Interface improvements +<itemize> +<item> Support pausing demo playback with the "pause" command. +<item> Autocompletion for "game", "record", "playdemo". +<item> Experimental windowed fullscreen mode available with vid_desktopfullscreen 1 (only in SDL2 builds, takes effect upon entering fullscreen mode the next time.) +<item> Silence "exceeded standard limit" messages unless developer cvar is >= 1. +<item> Some spam moved from developer 1 to 2: "can't find tga/lit/ent", "trying to load ent", "bad chunk length", "meshing", "PR_AlocStringSlots: realloc'ing" +</itemize> +<sect2>Code cleanup +<itemize> +<item> Clean up IDE project files to build on fresh systems. +<item> Update 3rd-party libraries. +</itemize> +</p> + +<sect1>Changes in 0.90.0<p> +<itemize> +<item> Fix issues on Windows systems with DPI scaling.</item> +<item> Unix/Mac user directories support. Disabled by default,<newline> +'make DO_USERDIRS=1' to enable it. +<item> SDL2 support. Disabled by default, 'make USE_SDL2=1' to enable it. +<item> Revised keyboard input code. +<item> Revised/improved the 'game' command, i.e. on-the-fly mod changing. It now accepts an optional second argument for mission packs or quoth support i.e. -hipnotic, -rogue, or -quoth. For example, for WarpSpasm: "game warp -quoth" +<item> Command line: "-game {quoth/hipnotic/rogue}" is now treated the same as -quoth, -hipnotic, or -rogue. +<item> Console speed now resolution-independent. +<item> Disabled gl_zfix, which caused glitches and is undesirable for new maps. Replacement .ent files to fix z-fighting for several id1 maps added to quakespasm.pak. +<item> PF_VarString buffer bumped to 1024, avoids truncated centerprints from the 'In The Shadows' mod. +<item> Support for opengl non-power-of-two-textures extension (disable with command line: "-notexturenpot".) +<item> Support for OpenGL vertex buffer objects (VBO, OpenGL 1.5 or newer) for world and brush models (disable with command line: "-novbo".) +<item> Antialiasing (FSAA) support (command line: -fsaa x, where x can be 0, 2, 4, 8). +<item> Fence textures support. +<item> Dynamic light speedup. Speedup loading of tga and pcx external images. +<item> Brush model drawing speedup. +<item> Support for BSP2 and 2PSB map formats. +<item> Support for Opus, FLAC, and tracker music (S3M, IT, UMX, etc.), as compile-time options. +<item> Music and sfx now mixed at 44100 Hz to avoid downsampling music. Low-pass filter applied to the sfx if -sndspeed is 11025 (the default), to preserve the same sound quality as 0.85.9. New -mixspeed option sets the rate for mixing sfx and music, and output to the OS (default 44100), setting it to 11025 reverts to 0.85.9 behaviour. New snd_filterquality cvar, value can be between 1 (emulate OS X resampler) and 5 (emulate Windows resampler), controls the sound of the low-pass filter. +<item> Better Hor+ field of view (FOV) scaling behavior. +<item> Better cross-map demo playback support. +<item> Fix screenshots when screen width isn't a multiple of 4. +<item> Fix a lighting glitch due to floating point precision. +<item> Fix a looping sounds glitch. +<item> Fix a vulnerability in file extension handling. Tighten path handling safety. +<item> Initialize opengl with 24-bit depth buffer at 32 bpp. +<item> Reset all models upon gamedir changes. (Fixes failures with mods using custom content.) +<item> Fix broken behavior upon gamedir changes if -basedir is specified on the command line. +<item> NET_MAXMESSAGE and MAX_MSGLEN limits bumped to 64000. +<item> MAX_EFRAGS bumped to 4096, and MAX_CHANNELS to 1024. +<item> MAX_ENT_LEAFS bumped from 16 to 32 to work around disappearing or flickering brush models in some situations. Also, if an entity is visible from MAX_ENT_LEAFS or more leafs, we now always send it to the client. +<item> Fix cvar cycle command not working sometimes. +<item> Host_Error upon missing models. (Prevents segmentation faults.) +<item> Change sv_aim default value to 1 (i.e. turn off autoaim) +<item> Add 'prev' and 'next' keywords to the 'cd' command. +<item> Work around a linux cdrom issue (playback might not start for a while after a stop). +<item> Quakespasm content customization moved from engine-embedded into a new optional quakespasm.pak file. +<item> Version bumped to 0.90.0 (because Quakespasm has a decent life of it's own) +<item> Other fixes and clean-ups. +</itemize> +</p> + +<sect1>Changes in 0.85.9<p> +<itemize> +<item> Fixes for several undefined behaviors in C code (gcc-4.8 support.) +<item> Implemented Hor+ style field of view (FOV) scaling, useful for widescreen resolutions. Configured by new cvar fov_adapt: set it to 1 and your fov will be scaled automatically according to the resolution. Enabled by default. +<item> Adjusted string buffers for PR_ValueString and friends to fix crashes with excessively long global strings seen in some rude mods. +<item> Toned down warning messages from PF_VarString() a bit. +<item> Fixed Fitzquake's map existence check in changelevel (used to leak file handles which would end up in a Sys_Error() due to consuming all free handles if many maps reside not in pak files.) +<item> Fixes/cleanups in chat mode handling. Client no longer gets stuck in chat mode upon disconnect. +<item> Mouse grab/key_dest fixes and key cleanups. +<item> The "speedkey" now acts as "slowkey" when "always run" is on. +<item> Support for demo recording after connection to server. (thanks to Baker for a patch) +<item> Corner case fixes in COM_Parse() for quoted strings and support for C-style /*..*/ comments. +<item> Changed lightmaps to GL_RGBA instead of GL_RGB. +<item> Better parse for opengl extensions list (from quakeforge.) +<item> Vsync saving/loading fixes. +<item> Fixed pointfile loading. +<item> Multiple cleanups in gl_vidsdl.c. +<item> Opus music decoding support (as an optional patch only.) +<item> Several other minor fixes/cleanups. +</itemize> +</p> + +<sect1>Changes in 0.85.8<p> +<itemize> +<item> Made Quake shareware 1.00 and 1.01 versions to be recognized properly. +<item> Fixed control-character handling in unicode mode. Keyboard input tweaks. +<item> Made the keypad keys to send separate key events in game mode. +<item> Text pasting support from OS clipboard to console. (windows and macosx.) +<item> Support for the Apple (Command) key on macosx. +<item> Fixed increased (more than 32) dynamic lights. +<item> Music playback: Made sure that the file's channels count is supported. +<item> Support for Solaris. +<item> Switched to using libmad instead of libmpg123 for MP3 playback on Mac OS X. +<item> Better support for building the Mac OS X version using a makefile, support for cross-compiling on Linux. +<item> Fixed a minor intermissions glitch. +<item> Increased string buffer size from 256 to 384 for PF_VarString to work around broken mods such as UQC. +<item> Restored original behavior for Quake registered version detection. +<item> Minor demo recording/playback tweaks. +<item> Minor tweaks to the scale menu option. +<item> unbindall before loading stored bindings (configurable by new cvar cfg_unbindall, enabled by default.) +<item> New icon. +<item> Miscellaneous source code cleanups. +</itemize> +</p> + +<sect1>Changes in 0.85.7<p> +<itemize> +<item> Added support for cross-level demo playback +<item> gl_texturemode is reimplemented as a cvar with a callback and the setting is automatically saved to the config +<item> Fixed execution of external files without a newline at the end +<item> Reduced memory usage during reloading of textures +<item> Fixed compilation on GNU/kFreeBSD (Debian bug #657793) +<item> Fixed backspace key on Mac OS X +<item> Disable mouse acceleration in Mac OS X +<item> Worked around recursive calling of the anisotropic filter callback +<item> Console word wrap and long input line fixes +<item> Verified correct compilation by clang (using v3.0) +<item> Several other small changes mostly invisible to the end-user +</itemize> +</p> + +<sect1>Changes in 0.85.6<p> +<itemize> +<item> More work for string buffer safety +<item> Reverted v0.85.5 change of not allowing deathmatch and coop cvars to be set at the same time (was reported for possibility of causing compatibility issues with mods) +<item> Several cleanups/changes in the cvar layer +<item> Minor SDL video fixes. +</itemize> +</p> + +<sect1>Changes in 0.85.5<p> +<itemize> +<item> SDL input driver updated adding native keymap and dead key support to the console +<item> Fixed a crash in net play in maps with extended limits +<item> Verified successful compilation using gcc-4.6.x +<item> Added workaround against GL texture flicker (z fighting), controlled by new cvar 'gl_zfix' +<item> Read video variables early so that a vid_restart isn't necessary after init +<item> mlook and lookspring fixes +<item> Added support for loading external entity files, controlled by new cvar 'external_ents' +<item> Made mp3 playback to allocate system memory instead of zone +<item> Some updates to the progs interpreter code +<item> Fixed r_nolerp_list parsing code of fitzquake +<item> Made sure that deathmatch and coop are not set at the same time +<item> Several code updates from uHexen2 project, several code cleanups. +</itemize> +</p> + +<sect1>Changes in 0.85.4<p> +<itemize> +<item> Implement music (OGG, MP3, WAV) playback +<item> A better fix for the infamous SV_TouchLinks problem, no more hard lockups with maps such as "whiteroom" +<item> Add support for mouse buttons 4 and 5 +<item> Fix the "unalias" console command +<item> Restore the "screen size" menu item +<item> Fixed an erroneous protocol check in the server code +<item> Raised the default zone memory size to 384 kb +<item> Raised the default max_edicts from 1024 to 2048 +<item> Revised lit file loading, the lit file must be from the same game directory as the map itself or from a searchpath with a higher priority +<item> Fixed rest of the compiler warnings +<item> Other minor sound and cdaudio updates +</itemize> +</p> + +<sect1>Changes in 0.85.3<p> +<itemize> +<item> Fix the "-dedicated" option (thanks Oz) and add platform specific networking code (default) rather than SDL_net +<item> Much needed OSX framework stuff from Kristian +<item> Add a persistent history feature (thanks Baker) +<item> Add a slider for scr_sbaralpha, which now defaults to 0.95 (slightly transparent, allowing for a nicer status bar) +<item> Allow player messages longer than 32 characters +<item> Sockaddr fix for FreeBSD/OSX/etc networking +<item> Connect status bar size to the scale slider +<item> Include an ISNAN (is not-a-number) fix to catch the occassional quake C bug giving traceline problems +<item> Enumerate options menus +<item> Add a "prev weapon" menu item (from Sander) +<item> Small fix to Sound Block/Unblock on win32 +<item> Lots of code fixes (some from uhexen2) +<item> Sys_Error calls Host_Shutdown +<item> Added MS Visual Studio support +<item> Add a "-cd" option to let the CD Player work in dedicated mode, and some other CD tweaks. +</itemize> + +<sect1>Changes in 0.85.2<p> +<itemize> +<item> Replace the old "Screen size" slider with a "Scale" slider +<item> Don't constantly open and close condebug log +<item> Heap of C clean-ups +<item> Fix mapname sorting +<item> Alias the "mods" command to "games" +<item> Block/Unblock sound upon focus loss/gain +<item> NAT (networking protocol) fix +<item> SDLNet_ResolveHost bug-fix allowing connection to ports other than 26000 +<item> Bumped array size of sv_main.c::localmodels from 5 to 6 fixing an old fitzquake-0.85 bug which used to cause segfaults depending on the compiler. +<item> Accept commandline options like "+connect ip:port" +</itemize> + +<sect1>Changes in 0.85.1<p> +<itemize> +<item>64 bit CPU support +<item>Restructured SDL sound driver +<item>Custom conback +<item>Tweaked the command line completion and added a map/changelevel autocompletion function +<item>Alt+Enter toggles fullscreen +<item>Disable Draw_BeginDisc which causes core dumps when called excessively +<item>Show helpful info on start-up +<item>Include real map name (sv.name) and skill in the status bar +<item>Remove confirm quit dialog +<item>Don't spam the console with PackFile seek requests +<item>Default to window mode +<item>Withdraw console when playing demos +<item>Don't play demos on program init +<item>Default heapsize is 64 MB. +<item>Changes to default console alpha, speed +<item>Changes to cvar persistence gl_flashblend (default 0), r_shadow, r_wateralpha, r_dynamic, r_novis. +</itemize> + +<sect>Copyright<p> +<itemize> +<item>Quake and Quakespasm are released under the <url url="http://www.gnu.org/licenses/gpl-2.0.html" name="GNU GENERAL PUBLIC LICENSE Version 2"> +<item>Quakespasm console background image by <bf>AAS</bf>, released under the +<url url="http://creativecommons.org/licenses/by/3.0/legalcode" name="CREATIVE COMMONS PUBLIC LICENSE"> +</itemize> + +<sect>Contact<p> +<itemize> +<item><url url="https://sourceforge.net/projects/quakespasm/" name="QuakeSpasm Project page"> +<item><url url="https://sourceforge.net/p/quakespasm/bugs/" name="Bug reports"> +</itemize> + +<sect>Links<p> +<itemize> +<item><url url="http://quakespasm.sourceforge.net" name="QuakeSpasm Homepage"> +<item><url url="http://quakespasm.sourceforge.net/download.htm" name="Downloads"> +<item><url url="https://celephais.net/fitzquake/" name="FitzQuake Homepage"> +<item><url url="https://celephais.net/board/view_thread.php?id=60452" name="Func Quakespasm forum"> +<item><url url="https://forums.insideqc.com" name="Inside3D forums"> +</itemize> + +</article> diff --git a/Linux/sgml/sgml2rawtxt b/Linux/sgml/sgml2rawtxt new file mode 100755 index 0000000..d87d2d3 --- /dev/null +++ b/Linux/sgml/sgml2rawtxt @@ -0,0 +1,4 @@ +#!/bin/bash +sgml2txt -b 2 "$1" +cat "$1.txt" | sed -e 's/[^m]*m//g' -e 's/.//g' >tmp$$ +mv tmp$$ "$1.txt" diff --git a/MacOSX/AppController.h b/MacOSX/AppController.h new file mode 100644 index 0000000..8e559d6 --- /dev/null +++ b/MacOSX/AppController.h @@ -0,0 +1,45 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import <Carbon/Carbon.h> +#import <Cocoa/Cocoa.h> +#import "QuakeArguments.h" + +extern NSString *FQPrefCommandLineKey; +extern NSString *FQPrefFullscreenKey; +extern NSString *FQPrefScreenModeKey; + +@interface AppController : NSObject { + IBOutlet NSWindow *launcherWindow; + IBOutlet NSTextField *paramTextField; + IBOutlet NSPopUpButton *screenModePopUp; + IBOutlet NSButton *fullscreenCheckBox; + + NSMutableArray *screenModes; + QuakeArguments *arguments; +} + +- (IBAction)changeScreenMode:(id)sender; +- (IBAction)launchQuake:(id)sender; +- (IBAction)cancel:(id)sender; + +- (NSArray *)screenModes; + +@end diff --git a/MacOSX/AppController.m b/MacOSX/AppController.m new file mode 100644 index 0000000..b20f5a5 --- /dev/null +++ b/MacOSX/AppController.m @@ -0,0 +1,211 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +#import "AppController.h" +#import "ScreenInfo.h" +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#import <SDL2/SDL.h> +#else +#import <SDL/SDL.h> +#endif +#else +#import "SDL.h" +#endif +#import "SDLMain.h" + +NSString *FQPrefCommandLineKey = @"CommandLine"; +NSString *FQPrefFullscreenKey = @"Fullscreen"; +NSString *FQPrefScreenModeKey = @"ScreenMode"; + +@implementation AppController + ++(void) initialize { + NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; + + [defaults setObject:@"" forKey:FQPrefCommandLineKey]; + [defaults setObject:[NSNumber numberWithBool:YES] forKey:FQPrefFullscreenKey]; + [defaults setObject:[NSNumber numberWithInt:0] forKey:FQPrefScreenModeKey]; + + [[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; +} + +- (id)init { + int i; +#ifndef USE_SDL2 + int j; + int flags; + int bpps[3] = {32, 24, 16}; + SDL_PixelFormat format; + SDL_Rect **modes; +#endif + ScreenInfo *info; + + self = [super init]; + if (!self) + return nil; + + screenModes = [[NSMutableArray alloc] init]; + [screenModes addObject:@"Default or command line arguments"]; + + if (SDL_InitSubSystem(SDL_INIT_VIDEO) == -1) + return self; + +#if defined(USE_SDL2) + { + const int sdlmodes = SDL_GetNumDisplayModes(0); + for (i = 0; i < sdlmodes; i++) + { + SDL_DisplayMode mode; + if (SDL_GetDisplayMode(0, i, &mode) == 0) + { + info = [[ScreenInfo alloc] initWithWidth:mode.w height:mode.h bpp:SDL_BITSPERPIXEL(mode.format)]; + [screenModes addObject:info]; + [info release]; + } + } + } +#else + flags = SDL_OPENGL | SDL_FULLSCREEN; + format.palette = NULL; + + for (i = 0; i < 3; i++) { + format.BitsPerPixel = bpps[i]; + modes = SDL_ListModes(&format, flags); + + if (modes == (SDL_Rect **)0 || modes == (SDL_Rect **)-1) + continue; + + for (j = 0; modes[j]; j++) { + info = [[ScreenInfo alloc] initWithWidth:modes[j]->w height:modes[j]->h bpp:bpps[i]]; + [screenModes addObject:info]; + [info release]; + } + } +#endif + + SDL_QuitSubSystem(SDL_INIT_VIDEO); + + arguments = [[QuakeArguments alloc] initWithArguments:gArgv + 1 count:gArgc - 1]; + return self; +} + +- (NSArray *)screenModes { + return screenModes; +} + +#ifndef MAC_OS_X_VERSION_10_13 +#define NSControlStateValueOff NSOffState +#define NSControlStateValueOn NSOnState +#endif +- (void)awakeFromNib { + if ([arguments count] > 0) { + [paramTextField setStringValue:[arguments description]]; + if ([arguments argument:@"-window"] != nil) + [fullscreenCheckBox setState:NSControlStateValueOff]; + } else { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [paramTextField setStringValue:[defaults stringForKey:FQPrefCommandLineKey]]; + + BOOL fullscreen = [defaults boolForKey:FQPrefFullscreenKey]; + [fullscreenCheckBox setState:fullscreen ? NSControlStateValueOn : NSControlStateValueOff]; + + int screenModeIndex = [defaults integerForKey:FQPrefScreenModeKey]; + [screenModePopUp selectItemAtIndex:screenModeIndex]; + } +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + if ([arguments argument:@"-nolauncher"] != nil) { + [arguments removeArgument:@"-nolauncher"]; + [self launchQuake:self]; + } else { + [launcherWindow center]; + [launcherWindow makeKeyAndOrderFront:self]; + } +} + +- (IBAction)changeScreenMode:(id)sender { + int index = [screenModePopUp indexOfSelectedItem]; + [fullscreenCheckBox setEnabled:index != 0]; +} + +- (IBAction)launchQuake:(id)sender { + [arguments parseArguments:[paramTextField stringValue]]; + + int index = [screenModePopUp indexOfSelectedItem]; + if (index > 0) { + ScreenInfo *info = [screenModes objectAtIndex:index]; + + int width = [info width]; + int height = [info height]; + int bpp = [info bpp]; + + [arguments addArgument:@"-width" withValue:[NSString stringWithFormat:@"%d", width]]; + [arguments addArgument:@"-height" withValue:[NSString stringWithFormat:@"%d", height]]; + [arguments addArgument:@"-bpp" withValue:[NSString stringWithFormat:@"%d", bpp]]; + } + + [arguments removeArgument:@"-fullscreen"]; + [arguments removeArgument:@"-window"]; + BOOL fullscreen = [fullscreenCheckBox state] == NSControlStateValueOn; + if (fullscreen) + [arguments addArgument:@"-fullscreen"]; + else + [arguments addArgument:@"-window"]; + + NSString *path = [NSString stringWithCString:gArgv[0] encoding:NSASCIIStringEncoding]; + + int i; + for (i = 0; i < 4; i++) + path = [path stringByDeletingLastPathComponent]; + + NSFileManager *fileManager = [NSFileManager defaultManager]; + [fileManager changeCurrentDirectoryPath:path]; + + int argc = [arguments count] + 1; + char *argv[argc]; + + argv[0] = gArgv[0]; + [arguments setArguments:argv + 1]; + + [launcherWindow close]; + + // update the defaults + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:[paramTextField stringValue] forKey:FQPrefCommandLineKey]; + [defaults setObject:[NSNumber numberWithBool:[fullscreenCheckBox state] == NSControlStateValueOn] forKey:FQPrefFullscreenKey]; + [defaults setObject:[NSNumber numberWithInt:index] forKey:FQPrefScreenModeKey]; + [defaults synchronize]; + + int status = SDL_main (argc, argv); + exit(status); +} + +- (IBAction)cancel:(id)sender { + exit(0); +} + +- (void) dealloc { + [screenModes release]; + [super dealloc]; +} + + +@end diff --git a/MacOSX/Build_Instructions.md b/MacOSX/Build_Instructions.md new file mode 100644 index 0000000..556511a --- /dev/null +++ b/MacOSX/Build_Instructions.md @@ -0,0 +1,68 @@ +# Building QuakeSpasm +## Prerequisites +Since Apple has dropped support for Mac OS 10.4 and PowerPC from XCode 4, you need to hack your developer tools a bit. You need XCode 3.2.6 from here: + +http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792 + +Then, you need the XCode 4.2 installer from the Mac App Store. Don't start the installation yet. + +If you already have XCode 4 installed, you must uninstall it using the following command from a terminal: + +sudo /<XCode 4 path>/Library/uninstall-devtools --mode=all + +You must reboot your machine after that. + +Now you need to first install XCode 3.2.6 and then XCode 4.2. Then, you will add support for Mac OS 10.4 and 10.5 as well as PowerPC from XCode 3 to XCode 4. But first things first: + +### Install XCode 3 +If you are on Mac OS 10.7 (Lion), you must launch the XCode 3.2.6 installer from the terminal like so: + +export COMMAND_LINE_INSTALL=1 +open "/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg" + +Otherwise, the installation will fail. Do not install "System Tools" or "Unix Development". You probably don't want to install the iOS SDKs either. You do want to install "Mac OS X 10.4 SDK" however - this is essential. Set "/XCode3" as the destination folder. + +### Install XCode 4 +Launch the installer from the App Store. Be aware that on some systems, you need to launch the installer manually: Right Click on "Install Xcode" and select Show Package Contents. Then navigate to "Contents/Resources" and double click on "Xcode.mpkg". Select "/XCode4" as the destination folder. + +### Restore 10.4 and 10.5 SDK support +Open a terminal and run the following commands: + +cd /XCode4/SDKs +sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk . +sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk . + +### Restore GCC 4.0 support (which gives you PowerPC support) +In your terminal, run the following commands: + +cd /XCode4/usr/bin +sudo ln -s /Xcode3/usr/bin/*4.0* . + +sudo ln -s "/XCode3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" "/XCode4/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins" + +sudo mkdir -p /XCode4/usr/libexec/gcc +sudo ln -sf /XCode3/usr/libexec/gcc/powerpc-apple-darwin10 /XCode4/usr/libexec/gcc/powerpc-apple-darwin10 + +sudo mkdir -p /XCode4/usr/lib/gcc +sudo ln -sf /XCode3/usr/lib/gcc/powerpc-apple-darwin10 /XCode4/usr/lib/gcc/powerpc-apple-darwin10 + +This should be it. The guides in the link collection at the end of this documents contain information about changing the "as" command also, but I didn't have to do this on my systems. If you run into problems, let me know: kristian.duske@gmail.com + +## Building QuakeSpasm +Now you can build QuakeSpasm. Simply open the project file using XCode 4.2 and make sure that "QuakeSpasm > My Mac 64-bit" is selected as the scheme in the toolbar. Select "Product > Run" from the menu to run and debug QuakeSpasm. This will not produce a universal binary however. To produce a universal binary for Intel 64bit, Intel 32bit and PowerPC 32bit, you need to select "Product > Archive" from the menu. This will create an application archive that contains the universal binary. + +# Useful Links +- XCode 3.2.6: +http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792 + +- Install XCode 3 on 10.7: +http://anatomicwax.tumblr.com/post/8064949186/installing-xcode-3-2-6-on-lion-redux + +- Restore support for 10.4, 10.5 and PPC to XCode 4.0: +http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4 + +- Scripts that automate the above: +https://github.com/thinkyhead/Legacy-XCode-Scripts + +# Author +Kristian Duske, kristian.duske@gmail.com diff --git a/MacOSX/English.lproj/InfoPlist.strings b/MacOSX/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..5d73b7c003c4380fc5cc05fcc6c435eb979f99e9 GIT binary patch literal 536 zcmbu5Ukd?I5XH~4PjT}oAtgy(Z241CY<XW6D|Tru#fQglFOj;QwB0+iXU?2CckZ{U zN-`R0uZ05bw9!>dg<xl5sw2o=3DFQ&+(Z6W<P{w(|ELUf3;SYOB~?}6^VCyUC)gpp zrN-#TM57L;s0p>e_W39U^v0lVN2jldc`0*dU!HuB6n}}<Z`B&UT559FeyH`)$lkAT zX}Fvj^ghaE=6QHJ@aEjX8i)B7>agl+kj<$Wu*kmHt(Z~EcT#yd9n05%t;C>-rnVZA Q&+YzP^PZb@RsM7G0M@)(761SM literal 0 HcmV?d00001 diff --git a/MacOSX/English.lproj/Launcher.nib/designable.nib b/MacOSX/English.lproj/Launcher.nib/designable.nib new file mode 100644 index 0000000..ab71083 --- /dev/null +++ b/MacOSX/English.lproj/Launcher.nib/designable.nib @@ -0,0 +1,2705 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1040</int> + <string key="IBDocument.SystemVersion">11C74</string> + <string key="IBDocument.InterfaceBuilderVersion">1938</string> + <string key="IBDocument.AppKitVersion">1138.23</string> + <string key="IBDocument.HIToolboxVersion">567.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">1938</string> + </object> + <object class="NSArray" key="IBDocument.IntegratedClassDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSUserDefaultsController</string> + <string>NSPopUpButton</string> + <string>NSMenuItem</string> + <string>NSMenu</string> + <string>NSButtonCell</string> + <string>NSButton</string> + <string>NSTextFieldCell</string> + <string>NSBox</string> + <string>NSCustomObject</string> + <string>NSView</string> + <string>NSWindowTemplate</string> + <string>NSTextField</string> + <string>NSPopUpButtonCell</string> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <string key="NS.key.0">PluginDependencyRecalculationVersion</string> + <integer value="1" key="NS.object.0"/> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1021"> + <string key="NSClassName">SDLMain</string> + </object> + <object class="NSCustomObject" id="1014"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1050"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSMenu" id="649796088"> + <string key="NSTitle">AMainMenu</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="694149608"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">QuakeSpasm</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="346376208"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="354112804"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="110575045"> + <string key="NSTitle">QuakeSpasm</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="238522557"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <string key="NSTitle">About QuakeSpasm</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="304266470"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="609285721"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Preferences…</string> + <string key="NSKeyEquiv">,</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="481834944"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1046388886"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Services</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="752062318"> + <string key="NSTitle">Services</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string key="NSName">_NSServicesMenu</string> + </object> + </object> + <object class="NSMenuItem" id="646227648"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="755159360"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Hide QuakeSpasm</string> + <string key="NSKeyEquiv">h</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="342932134"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Hide Others</string> + <string key="NSKeyEquiv">h</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="908899353"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Show All</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1056857174"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="632727374"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Quit QuakeSpasm</string> + <string key="NSKeyEquiv">q</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + <string key="NSName">_NSAppleMenu</string> + </object> + </object> + <object class="NSMenuItem" id="379814623"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">File</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="720053764"> + <string key="NSTitle">File</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="705341025"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">New</string> + <string key="NSKeyEquiv">n</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="722745758"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Open…</string> + <string key="NSKeyEquiv">o</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1025936716"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Open Recent</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="1065607017"> + <string key="NSTitle">Open Recent</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="759406840"> + <reference key="NSMenu" ref="1065607017"/> + <string key="NSTitle">Clear Menu</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + <string key="NSName">_NSRecentDocumentsMenu</string> + </object> + </object> + <object class="NSMenuItem" id="425164168"> + <reference key="NSMenu" ref="720053764"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="776162233"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Close</string> + <string key="NSKeyEquiv">w</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1023925487"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Save</string> + <string key="NSKeyEquiv">s</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="117038363"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Save As…</string> + <string key="NSKeyEquiv">S</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="579971712"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Revert to Saved</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1010469920"> + <reference key="NSMenu" ref="720053764"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="294629803"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Page Setup...</string> + <string key="NSKeyEquiv">P</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSToolTip"/> + </object> + <object class="NSMenuItem" id="49223823"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Print…</string> + <string key="NSKeyEquiv">p</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="952259628"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Edit</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="789758025"> + <string key="NSTitle">Edit</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="1058277027"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Undo</string> + <string key="NSKeyEquiv">z</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="790794224"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Redo</string> + <string key="NSKeyEquiv">Z</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1040322652"> + <reference key="NSMenu" ref="789758025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="296257095"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Cut</string> + <string key="NSKeyEquiv">x</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="860595796"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Copy</string> + <string key="NSKeyEquiv">c</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="29853731"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Paste</string> + <string key="NSKeyEquiv">v</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="437104165"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Delete</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="583158037"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Select All</string> + <string key="NSKeyEquiv">a</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="212016141"> + <reference key="NSMenu" ref="789758025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="892235320"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Find</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="963351320"> + <string key="NSTitle">Find</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="447796847"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Find…</string> + <string key="NSKeyEquiv">f</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">1</int> + </object> + <object class="NSMenuItem" id="326711663"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Find Next</string> + <string key="NSKeyEquiv">g</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">2</int> + </object> + <object class="NSMenuItem" id="270902937"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Find Previous</string> + <string key="NSKeyEquiv">G</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">3</int> + </object> + <object class="NSMenuItem" id="159080638"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Use Selection for Find</string> + <string key="NSKeyEquiv">e</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">7</int> + </object> + <object class="NSMenuItem" id="88285865"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Jump to Selection</string> + <string key="NSKeyEquiv">j</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="972420730"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Spelling and Grammar</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="769623530"> + <string key="NSTitle">Spelling and Grammar</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="679648819"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Show Spelling…</string> + <string key="NSKeyEquiv">:</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="96193923"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Check Spelling</string> + <string key="NSKeyEquiv">;</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="948374510"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Check Spelling While Typing</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="967646866"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Check Grammar With Spelling</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="507821607"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Substitutions</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="698887838"> + <string key="NSTitle">Substitutions</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="605118523"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Copy/Paste</string> + <string key="NSKeyEquiv">f</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">1</int> + </object> + <object class="NSMenuItem" id="197661976"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Quotes</string> + <string key="NSKeyEquiv">g</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">2</int> + </object> + <object class="NSMenuItem" id="708854459"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Links</string> + <string key="NSKeyEquiv">G</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <int key="NSTag">3</int> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="676164635"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Speech</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="785027613"> + <string key="NSTitle">Speech</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="731782645"> + <reference key="NSMenu" ref="785027613"/> + <string key="NSTitle">Start Speaking</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="680220178"> + <reference key="NSMenu" ref="785027613"/> + <string key="NSTitle">Stop Speaking</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="626404410"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Format</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="502084290"> + <string key="NSTitle">Format</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="519768076"> + <reference key="NSMenu" ref="502084290"/> + <string key="NSTitle">Show Fonts</string> + <string key="NSKeyEquiv">t</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="1028416764"> + <reference key="NSMenu" ref="502084290"/> + <string key="NSTitle">Show Colors</string> + <string key="NSKeyEquiv">C</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="586577488"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">View</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="466310130"> + <string key="NSTitle">View</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="102151532"> + <reference key="NSMenu" ref="466310130"/> + <string key="NSTitle">Show Toolbar</string> + <string key="NSKeyEquiv">t</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="237841660"> + <reference key="NSMenu" ref="466310130"/> + <string key="NSTitle">Customize Toolbar…</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="713487014"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Window</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="835318025"> + <string key="NSTitle">Window</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="1011231497"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Minimize</string> + <string key="NSKeyEquiv">m</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="575023229"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Zoom</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="299356726"> + <reference key="NSMenu" ref="835318025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + <object class="NSMenuItem" id="625202149"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Bring All to Front</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + <string key="NSName">_NSWindowsMenu</string> + </object> + </object> + <object class="NSMenuItem" id="391199113"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Help</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="374024848"> + <string key="NSTitle">Help</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="238773614"> + <reference key="NSMenu" ref="374024848"/> + <string key="NSTitle">NewApplication Help</string> + <string key="NSKeyEquiv">?</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + </object> + </object> + </object> + </object> + </object> + <string key="NSName">_NSMainMenu</string> + </object> + <object class="NSWindowTemplate" id="972006081"> + <int key="NSWindowStyleMask">3</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{772, 577}, {511, 251}}</string> + <int key="NSWTFlags">1954022400</int> + <string key="NSWindowTitle">QuakeSpasm</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <nil key="NSUserInterfaceItemIdentifier"/> + <object class="NSView" key="NSWindowView" id="439893737"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="114086328"> + <reference key="NSNextResponder" ref="439893737"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{378, 12}, {124, 32}}</string> + <reference key="NSSuperview" ref="439893737"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="424703913"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Start</string> + <object class="NSFont" key="NSSupport" id="291399836"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="114086328"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">1</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSBox" id="810026123"> + <reference key="NSNextResponder" ref="439893737"/> + <int key="NSvFlags">12</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSView" id="97588186"> + <reference key="NSNextResponder" ref="810026123"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTextField" id="855675066"> + <reference key="NSNextResponder" ref="97588186"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{15, 127}, {172, 17}}</string> + <reference key="NSSuperview" ref="97588186"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="115727040"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="811869973"> + <int key="NSCellFlags">67239488</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Command line parameters</string> + <reference key="NSSupport" ref="291399836"/> + <reference key="NSControlView" ref="855675066"/> + <object class="NSColor" key="NSBackgroundColor" id="240731113"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor" id="1019739469"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <object class="NSColor" key="NSColor" id="761839494"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + </object> + <object class="NSTextField" id="115727040"> + <reference key="NSNextResponder" ref="97588186"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{18, 97}, {440, 22}}</string> + <reference key="NSSuperview" ref="97588186"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="711594049"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="960828514"> + <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="291399836"/> + <reference key="NSControlView" ref="115727040"/> + <bool key="NSDrawsBackground">YES</bool> + <object class="NSColor" key="NSBackgroundColor" id="367672930"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textColor</string> + <reference key="NSColor" ref="761839494"/> + </object> + </object> + </object> + <object class="NSTextField" id="711594049"> + <reference key="NSNextResponder" ref="97588186"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{15, 54}, {175, 17}}</string> + <reference key="NSSuperview" ref="97588186"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="739545509"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="589702307"> + <int key="NSCellFlags">67239488</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Resolution and color depth</string> + <reference key="NSSupport" ref="291399836"/> + <reference key="NSControlView" ref="711594049"/> + <reference key="NSBackgroundColor" ref="240731113"/> + <reference key="NSTextColor" ref="1019739469"/> + </object> + </object> + <object class="NSPopUpButton" id="745888445"> + <reference key="NSNextResponder" ref="97588186"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{15, 22}, {446, 26}}</string> + <reference key="NSSuperview" ref="97588186"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="765364824"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSPopUpButtonCell" key="NSCell" id="749402784"> + <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags2">2048</int> + <reference key="NSSupport" ref="291399836"/> + <reference key="NSControlView" ref="745888445"/> + <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags2">1</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + <object class="NSMenuItem" key="NSMenuItem" id="529867463"> + <reference key="NSMenu" ref="764703514"/> + <bool key="NSIsDisabled">YES</bool> + <string key="NSTitle">Item 1</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <int key="NSState">1</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="749402784"/> + </object> + <bool key="NSMenuItemRespectAlignment">YES</bool> + <object class="NSMenu" key="NSMenu" id="764703514"> + <string key="NSTitle">OtherViews</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="529867463"/> + <object class="NSMenuItem" id="614627850"> + <reference key="NSMenu" ref="764703514"/> + <string key="NSTitle">Item 2</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="749402784"/> + </object> + <object class="NSMenuItem" id="743472145"> + <reference key="NSMenu" ref="764703514"/> + <string key="NSTitle">Item 3</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="346376208"/> + <reference key="NSMixedImage" ref="354112804"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="749402784"/> + </object> + </object> + </object> + <int key="NSPreferredEdge">1</int> + <bool key="NSUsesItemFromMenu">YES</bool> + <bool key="NSAltersState">YES</bool> + <int key="NSArrowPosition">2</int> + </object> + </object> + <object class="NSButton" id="739545509"> + <reference key="NSNextResponder" ref="97588186"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{374, 52}, {86, 18}}</string> + <reference key="NSSuperview" ref="97588186"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="745888445"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="721358094"> + <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Fullscreen</string> + <reference key="NSSupport" ref="291399836"/> + <reference key="NSControlView" ref="739545509"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSSwitch</string> + </object> + <object class="NSButtonImageSource" key="NSAlternateImage"> + <string key="NSImageName">NSSwitch</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrame">{{1, 1}, {480, 159}}</string> + <reference key="NSSuperview" ref="810026123"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="855675066"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + </object> + </object> + <string key="NSFrame">{{17, 56}, {482, 175}}</string> + <reference key="NSSuperview" ref="439893737"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="97588186"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <string key="NSOffsets">{0, 0}</string> + <object class="NSTextFieldCell" key="NSTitleCell"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Settings</string> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">11</double> + <int key="NSfFlags">3100</int> + </object> + <reference key="NSBackgroundColor" ref="367672930"/> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> + </object> + </object> + <reference key="NSContentView" ref="97588186"/> + <int key="NSBorderType">1</int> + <int key="NSBoxType">0</int> + <int key="NSTitlePosition">2</int> + <bool key="NSTransparent">NO</bool> + </object> + <object class="NSButton" id="765364824"> + <reference key="NSNextResponder" ref="439893737"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{254, 12}, {124, 32}}</string> + <reference key="NSSuperview" ref="439893737"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="114086328"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="99746102"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Cancel</string> + <reference key="NSSupport" ref="291399836"/> + <reference key="NSControlView" ref="765364824"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{511, 251}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="810026123"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + </object> + <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string> + <string key="NSMaxSize">{10000000000000, 10000000000000}</string> + <bool key="NSWindowIsRestorable">YES</bool> + </object> + <object class="NSCustomObject" id="561825427"> + <string key="NSClassName">AppController</string> + </object> + <object class="NSUserDefaultsController" id="412016019"> + <bool key="NSSharedInstance">YES</bool> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="1050"/> + <reference key="destination" ref="561825427"/> + </object> + <int key="connectionID">464</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performMiniaturize:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1011231497"/> + </object> + <int key="connectionID">37</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">arrangeInFront:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="625202149"/> + </object> + <int key="connectionID">39</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">print:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="49223823"/> + </object> + <int key="connectionID">86</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">runPageLayout:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="294629803"/> + </object> + <int key="connectionID">87</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">clearRecentDocuments:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="759406840"/> + </object> + <int key="connectionID">127</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performClose:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="776162233"/> + </object> + <int key="connectionID">193</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleContinuousSpellChecking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="948374510"/> + </object> + <int key="connectionID">222</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">undo:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1058277027"/> + </object> + <int key="connectionID">223</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copy:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="860595796"/> + </object> + <int key="connectionID">224</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">checkSpelling:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="96193923"/> + </object> + <int key="connectionID">225</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">paste:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="29853731"/> + </object> + <int key="connectionID">226</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">stopSpeaking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="680220178"/> + </object> + <int key="connectionID">227</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cut:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="296257095"/> + </object> + <int key="connectionID">228</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showGuessPanel:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="679648819"/> + </object> + <int key="connectionID">230</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">redo:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="790794224"/> + </object> + <int key="connectionID">231</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">selectAll:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="583158037"/> + </object> + <int key="connectionID">232</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">startSpeaking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="731782645"/> + </object> + <int key="connectionID">233</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">delete:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="437104165"/> + </object> + <int key="connectionID">235</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performZoom:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="575023229"/> + </object> + <int key="connectionID">240</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="447796847"/> + </object> + <int key="connectionID">241</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">centerSelectionInVisibleArea:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="88285865"/> + </object> + <int key="connectionID">245</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleGrammarChecking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="967646866"/> + </object> + <int key="connectionID">347</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleSmartInsertDelete:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="605118523"/> + </object> + <int key="connectionID">355</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticQuoteSubstitution:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="197661976"/> + </object> + <int key="connectionID">356</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticLinkDetection:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="708854459"/> + </object> + <int key="connectionID">357</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showHelp:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="238773614"/> + </object> + <int key="connectionID">360</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontColorPanel:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1028416764"/> + </object> + <int key="connectionID">361</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1023925487"/> + </object> + <int key="connectionID">362</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveDocumentAs:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="117038363"/> + </object> + <int key="connectionID">363</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">revertDocumentToSaved:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="579971712"/> + </object> + <int key="connectionID">364</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">runToolbarCustomizationPalette:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="237841660"/> + </object> + <int key="connectionID">365</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleToolbarShown:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="102151532"/> + </object> + <int key="connectionID">366</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="755159360"/> + </object> + <int key="connectionID">367</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hideOtherApplications:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="342932134"/> + </object> + <int key="connectionID">368</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">terminate:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="632727374"/> + </object> + <int key="connectionID">369</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">unhideAllApplications:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="908899353"/> + </object> + <int key="connectionID">370</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">newDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="705341025"/> + </object> + <int key="connectionID">373</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="722745758"/> + </object> + <int key="connectionID">374</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="972006081"/> + <reference key="destination" ref="561825427"/> + </object> + <int key="connectionID">415</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">launchQuake:</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="114086328"/> + </object> + <int key="connectionID">378</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">paramTextField</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="115727040"/> + </object> + <int key="connectionID">412</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">launcherWindow</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="972006081"/> + </object> + <int key="connectionID">414</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cancel:</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="765364824"/> + </object> + <int key="connectionID">418</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">screenModePopUp</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="745888445"/> + </object> + <int key="connectionID">452</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">fullscreenCheckBox</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="739545509"/> + </object> + <int key="connectionID">453</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">changeScreenMode:</string> + <reference key="source" ref="561825427"/> + <reference key="destination" ref="745888445"/> + </object> + <int key="connectionID">455</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">content: screenModes</string> + <reference key="source" ref="745888445"/> + <reference key="destination" ref="561825427"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="745888445"/> + <reference key="NSDestination" ref="561825427"/> + <string key="NSLabel">content: screenModes</string> + <string key="NSBinding">content</string> + <string key="NSKeyPath">screenModes</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">449</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <object class="NSArray" key="object" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <reference key="children" ref="1048"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1021"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1014"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1050"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="649796088"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="713487014"/> + <reference ref="694149608"/> + <reference ref="391199113"/> + <reference ref="952259628"/> + <reference ref="379814623"/> + <reference ref="586577488"/> + <reference ref="626404410"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">MainMenu</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="713487014"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="835318025"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">56</int> + <reference key="object" ref="694149608"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="110575045"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">103</int> + <reference key="object" ref="391199113"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="374024848"/> + </object> + <reference key="parent" ref="649796088"/> + <string key="objectName">1</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">217</int> + <reference key="object" ref="952259628"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="789758025"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">83</int> + <reference key="object" ref="379814623"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="720053764"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">81</int> + <reference key="object" ref="720053764"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1023925487"/> + <reference ref="117038363"/> + <reference ref="49223823"/> + <reference ref="722745758"/> + <reference ref="705341025"/> + <reference ref="1025936716"/> + <reference ref="294629803"/> + <reference ref="776162233"/> + <reference ref="425164168"/> + <reference ref="579971712"/> + <reference ref="1010469920"/> + </object> + <reference key="parent" ref="379814623"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">75</int> + <reference key="object" ref="1023925487"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">3</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">80</int> + <reference key="object" ref="117038363"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">8</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">78</int> + <reference key="object" ref="49223823"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">6</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">72</int> + <reference key="object" ref="722745758"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">82</int> + <reference key="object" ref="705341025"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">9</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">124</int> + <reference key="object" ref="1025936716"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1065607017"/> + </object> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">77</int> + <reference key="object" ref="294629803"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">5</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">73</int> + <reference key="object" ref="776162233"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">1</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">79</int> + <reference key="object" ref="425164168"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">7</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">112</int> + <reference key="object" ref="579971712"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">10</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">74</int> + <reference key="object" ref="1010469920"/> + <reference key="parent" ref="720053764"/> + <string key="objectName">2</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">125</int> + <reference key="object" ref="1065607017"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="759406840"/> + </object> + <reference key="parent" ref="1025936716"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">126</int> + <reference key="object" ref="759406840"/> + <reference key="parent" ref="1065607017"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">205</int> + <reference key="object" ref="789758025"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="437104165"/> + <reference ref="583158037"/> + <reference ref="1058277027"/> + <reference ref="212016141"/> + <reference ref="296257095"/> + <reference ref="29853731"/> + <reference ref="860595796"/> + <reference ref="1040322652"/> + <reference ref="790794224"/> + <reference ref="892235320"/> + <reference ref="972420730"/> + <reference ref="676164635"/> + <reference ref="507821607"/> + </object> + <reference key="parent" ref="952259628"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">202</int> + <reference key="object" ref="437104165"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">198</int> + <reference key="object" ref="583158037"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">207</int> + <reference key="object" ref="1058277027"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">214</int> + <reference key="object" ref="212016141"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">199</int> + <reference key="object" ref="296257095"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">203</int> + <reference key="object" ref="29853731"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">197</int> + <reference key="object" ref="860595796"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">206</int> + <reference key="object" ref="1040322652"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">215</int> + <reference key="object" ref="790794224"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">218</int> + <reference key="object" ref="892235320"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="963351320"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">216</int> + <reference key="object" ref="972420730"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="769623530"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">200</int> + <reference key="object" ref="769623530"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="948374510"/> + <reference ref="96193923"/> + <reference ref="679648819"/> + <reference ref="967646866"/> + </object> + <reference key="parent" ref="972420730"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">219</int> + <reference key="object" ref="948374510"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">201</int> + <reference key="object" ref="96193923"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">204</int> + <reference key="object" ref="679648819"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">220</int> + <reference key="object" ref="963351320"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="270902937"/> + <reference ref="88285865"/> + <reference ref="159080638"/> + <reference ref="326711663"/> + <reference ref="447796847"/> + </object> + <reference key="parent" ref="892235320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">213</int> + <reference key="object" ref="270902937"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">210</int> + <reference key="object" ref="88285865"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">221</int> + <reference key="object" ref="159080638"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">208</int> + <reference key="object" ref="326711663"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">209</int> + <reference key="object" ref="447796847"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">106</int> + <reference key="object" ref="374024848"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="238773614"/> + </object> + <reference key="parent" ref="391199113"/> + <string key="objectName">2</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">111</int> + <reference key="object" ref="238773614"/> + <reference key="parent" ref="374024848"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">57</int> + <reference key="object" ref="110575045"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="238522557"/> + <reference ref="755159360"/> + <reference ref="908899353"/> + <reference ref="632727374"/> + <reference ref="646227648"/> + <reference ref="609285721"/> + <reference ref="481834944"/> + <reference ref="304266470"/> + <reference ref="1046388886"/> + <reference ref="1056857174"/> + <reference ref="342932134"/> + </object> + <reference key="parent" ref="694149608"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">58</int> + <reference key="object" ref="238522557"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">134</int> + <reference key="object" ref="755159360"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">150</int> + <reference key="object" ref="908899353"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">136</int> + <reference key="object" ref="632727374"/> + <reference key="parent" ref="110575045"/> + <string key="objectName">1111</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">144</int> + <reference key="object" ref="646227648"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">129</int> + <reference key="object" ref="609285721"/> + <reference key="parent" ref="110575045"/> + <string key="objectName">121</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">143</int> + <reference key="object" ref="481834944"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">236</int> + <reference key="object" ref="304266470"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">131</int> + <reference key="object" ref="1046388886"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="752062318"/> + </object> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">149</int> + <reference key="object" ref="1056857174"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">145</int> + <reference key="object" ref="342932134"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">130</int> + <reference key="object" ref="752062318"/> + <reference key="parent" ref="1046388886"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="835318025"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="299356726"/> + <reference ref="625202149"/> + <reference ref="575023229"/> + <reference ref="1011231497"/> + </object> + <reference key="parent" ref="713487014"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">92</int> + <reference key="object" ref="299356726"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="625202149"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">239</int> + <reference key="object" ref="575023229"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="1011231497"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">295</int> + <reference key="object" ref="586577488"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="466310130"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">296</int> + <reference key="object" ref="466310130"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="102151532"/> + <reference ref="237841660"/> + </object> + <reference key="parent" ref="586577488"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">297</int> + <reference key="object" ref="102151532"/> + <reference key="parent" ref="466310130"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">298</int> + <reference key="object" ref="237841660"/> + <reference key="parent" ref="466310130"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">299</int> + <reference key="object" ref="626404410"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="502084290"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">300</int> + <reference key="object" ref="502084290"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="519768076"/> + <reference ref="1028416764"/> + </object> + <reference key="parent" ref="626404410"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">344</int> + <reference key="object" ref="519768076"/> + <reference key="parent" ref="502084290"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">345</int> + <reference key="object" ref="1028416764"/> + <reference key="parent" ref="502084290"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">211</int> + <reference key="object" ref="676164635"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="785027613"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">212</int> + <reference key="object" ref="785027613"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="680220178"/> + <reference ref="731782645"/> + </object> + <reference key="parent" ref="676164635"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">195</int> + <reference key="object" ref="680220178"/> + <reference key="parent" ref="785027613"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">196</int> + <reference key="object" ref="731782645"/> + <reference key="parent" ref="785027613"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">346</int> + <reference key="object" ref="967646866"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">348</int> + <reference key="object" ref="507821607"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="698887838"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">349</int> + <reference key="object" ref="698887838"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="605118523"/> + <reference ref="197661976"/> + <reference ref="708854459"/> + </object> + <reference key="parent" ref="507821607"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">350</int> + <reference key="object" ref="605118523"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">351</int> + <reference key="object" ref="197661976"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">354</int> + <reference key="object" ref="708854459"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">371</int> + <reference key="object" ref="972006081"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="439893737"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">372</int> + <reference key="object" ref="439893737"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="114086328"/> + <reference ref="810026123"/> + <reference ref="765364824"/> + </object> + <reference key="parent" ref="972006081"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">375</int> + <reference key="object" ref="561825427"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">376</int> + <reference key="object" ref="114086328"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="424703913"/> + </object> + <reference key="parent" ref="439893737"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">377</int> + <reference key="object" ref="424703913"/> + <reference key="parent" ref="114086328"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">395</int> + <reference key="object" ref="810026123"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="855675066"/> + <reference ref="115727040"/> + <reference ref="711594049"/> + <reference ref="745888445"/> + <reference ref="739545509"/> + </object> + <reference key="parent" ref="439893737"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">397</int> + <reference key="object" ref="855675066"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="811869973"/> + </object> + <reference key="parent" ref="810026123"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">398</int> + <reference key="object" ref="115727040"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="960828514"/> + </object> + <reference key="parent" ref="810026123"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">399</int> + <reference key="object" ref="711594049"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="589702307"/> + </object> + <reference key="parent" ref="810026123"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">400</int> + <reference key="object" ref="745888445"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="749402784"/> + </object> + <reference key="parent" ref="810026123"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">401</int> + <reference key="object" ref="749402784"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="764703514"/> + </object> + <reference key="parent" ref="745888445"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">402</int> + <reference key="object" ref="764703514"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="743472145"/> + <reference ref="614627850"/> + <reference ref="529867463"/> + </object> + <reference key="parent" ref="749402784"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">403</int> + <reference key="object" ref="743472145"/> + <reference key="parent" ref="764703514"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">404</int> + <reference key="object" ref="614627850"/> + <reference key="parent" ref="764703514"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">405</int> + <reference key="object" ref="529867463"/> + <reference key="parent" ref="764703514"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">406</int> + <reference key="object" ref="589702307"/> + <reference key="parent" ref="711594049"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">407</int> + <reference key="object" ref="960828514"/> + <reference key="parent" ref="115727040"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">408</int> + <reference key="object" ref="811869973"/> + <reference key="parent" ref="855675066"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">410</int> + <reference key="object" ref="765364824"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="99746102"/> + </object> + <reference key="parent" ref="439893737"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">411</int> + <reference key="object" ref="99746102"/> + <reference key="parent" ref="765364824"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">419</int> + <reference key="object" ref="412016019"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">450</int> + <reference key="object" ref="739545509"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="721358094"/> + </object> + <reference key="parent" ref="810026123"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">451</int> + <reference key="object" ref="721358094"/> + <reference key="parent" ref="739545509"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>-1.IBPluginDependency</string> + <string>-2.IBPluginDependency</string> + <string>-3.IBPluginDependency</string> + <string>103.IBPluginDependency</string> + <string>106.IBPluginDependency</string> + <string>111.IBPluginDependency</string> + <string>112.IBPluginDependency</string> + <string>124.IBPluginDependency</string> + <string>125.IBPluginDependency</string> + <string>126.IBPluginDependency</string> + <string>129.IBPluginDependency</string> + <string>130.IBPluginDependency</string> + <string>131.IBPluginDependency</string> + <string>134.IBPluginDependency</string> + <string>136.IBPluginDependency</string> + <string>143.IBPluginDependency</string> + <string>144.IBPluginDependency</string> + <string>145.IBPluginDependency</string> + <string>149.IBPluginDependency</string> + <string>150.IBPluginDependency</string> + <string>19.IBPluginDependency</string> + <string>195.IBPluginDependency</string> + <string>196.IBPluginDependency</string> + <string>197.IBPluginDependency</string> + <string>198.IBPluginDependency</string> + <string>199.IBPluginDependency</string> + <string>200.IBPluginDependency</string> + <string>201.IBPluginDependency</string> + <string>202.IBPluginDependency</string> + <string>203.IBPluginDependency</string> + <string>204.IBPluginDependency</string> + <string>205.IBPluginDependency</string> + <string>206.IBPluginDependency</string> + <string>207.IBPluginDependency</string> + <string>208.IBPluginDependency</string> + <string>209.IBPluginDependency</string> + <string>210.IBPluginDependency</string> + <string>211.IBPluginDependency</string> + <string>212.IBPluginDependency</string> + <string>213.IBPluginDependency</string> + <string>214.IBPluginDependency</string> + <string>215.IBPluginDependency</string> + <string>216.IBPluginDependency</string> + <string>217.IBPluginDependency</string> + <string>218.IBPluginDependency</string> + <string>219.IBPluginDependency</string> + <string>220.IBPluginDependency</string> + <string>221.IBPluginDependency</string> + <string>23.IBPluginDependency</string> + <string>236.IBPluginDependency</string> + <string>239.IBPluginDependency</string> + <string>24.IBPluginDependency</string> + <string>29.IBPluginDependency</string> + <string>295.IBPluginDependency</string> + <string>296.IBPluginDependency</string> + <string>297.IBPluginDependency</string> + <string>298.IBPluginDependency</string> + <string>299.IBPluginDependency</string> + <string>300.IBPluginDependency</string> + <string>344.IBPluginDependency</string> + <string>345.IBPluginDependency</string> + <string>346.IBPluginDependency</string> + <string>348.IBPluginDependency</string> + <string>349.IBPluginDependency</string> + <string>350.IBPluginDependency</string> + <string>351.IBPluginDependency</string> + <string>354.IBPluginDependency</string> + <string>371.IBPluginDependency</string> + <string>371.IBWindowTemplateEditedContentRect</string> + <string>371.NSWindowTemplate.visibleAtLaunch</string> + <string>372.IBPluginDependency</string> + <string>375.IBPluginDependency</string> + <string>376.IBPluginDependency</string> + <string>377.IBPluginDependency</string> + <string>395.IBPluginDependency</string> + <string>395.IBUserGuides</string> + <string>397.IBPluginDependency</string> + <string>398.IBPluginDependency</string> + <string>399.IBPluginDependency</string> + <string>400.IBPluginDependency</string> + <string>401.IBPluginDependency</string> + <string>402.IBPluginDependency</string> + <string>403.IBPluginDependency</string> + <string>404.IBPluginDependency</string> + <string>405.IBPluginDependency</string> + <string>406.IBPluginDependency</string> + <string>407.IBPluginDependency</string> + <string>408.IBPluginDependency</string> + <string>410.IBPluginDependency</string> + <string>411.IBPluginDependency</string> + <string>419.IBPluginDependency</string> + <string>450.IBPluginDependency</string> + <string>451.IBPluginDependency</string> + <string>5.IBPluginDependency</string> + <string>56.IBPluginDependency</string> + <string>57.IBPluginDependency</string> + <string>58.IBPluginDependency</string> + <string>72.IBPluginDependency</string> + <string>73.IBPluginDependency</string> + <string>74.IBPluginDependency</string> + <string>75.IBPluginDependency</string> + <string>77.IBPluginDependency</string> + <string>78.IBPluginDependency</string> + <string>79.IBPluginDependency</string> + <string>80.IBPluginDependency</string> + <string>81.IBPluginDependency</string> + <string>82.IBPluginDependency</string> + <string>83.IBPluginDependency</string> + <string>92.IBPluginDependency</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{888, 364}, {511, 251}}</string> + <integer value="0"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableArray"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <reference key="dict.values" ref="0"/> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <reference key="dict.values" ref="0"/> + </object> + <nil key="sourceID"/> + <int key="maxID">519</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">AppController</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>cancel:</string> + <string>changeScreenMode:</string> + <string>launchQuake:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>cancel:</string> + <string>changeScreenMode:</string> + <string>launchQuake:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">cancel:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">changeScreenMode:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">launchQuake:</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>fullscreenCheckBox</string> + <string>launcherWindow</string> + <string>paramTextField</string> + <string>screenModePopUp</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSButton</string> + <string>NSWindow</string> + <string>NSTextField</string> + <string>NSPopUpButton</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>fullscreenCheckBox</string> + <string>launcherWindow</string> + <string>paramTextField</string> + <string>screenModePopUp</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">fullscreenCheckBox</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">launcherWindow</string> + <string key="candidateClassName">NSWindow</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">paramTextField</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">screenModePopUp</string> + <string key="candidateClassName">NSPopUpButton</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/AppController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDocument</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>printDocument:</string> + <string>revertDocumentToSaved:</string> + <string>runPageLayout:</string> + <string>saveDocument:</string> + <string>saveDocumentAs:</string> + <string>saveDocumentTo:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>printDocument:</string> + <string>revertDocumentToSaved:</string> + <string>runPageLayout:</string> + <string>saveDocument:</string> + <string>saveDocumentAs:</string> + <string>saveDocumentTo:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">printDocument:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">revertDocumentToSaved:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">runPageLayout:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">saveDocument:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">saveDocumentAs:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">saveDocumentTo:</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/NSDocument.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">SDLMain</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/SDLMain.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1040" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <real value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMenuCheckmark</string> + <string>NSMenuMixedState</string> + <string>NSSwitch</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>{9, 8}</string> + <string>{7, 2}</string> + <string>{15, 15}</string> + </object> + </object> + </data> +</archive> diff --git a/MacOSX/English.lproj/Launcher.nib/keyedobjects.nib b/MacOSX/English.lproj/Launcher.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..ab29189228dc594722ef6a65d421dd70a5847e9d GIT binary patch literal 21291 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 YUAU}pllwJZLfpTV2KVpQe+ysyUt1F1X#fBK literal 0 HcmV?d00001 diff --git a/MacOSX/Info.plist b/MacOSX/Info.plist new file mode 100644 index 0000000..ed99f64 --- /dev/null +++ b/MacOSX/Info.plist @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIconFile</key> + <string>QuakeSpasm</string> + <key>CFBundleIdentifier</key> + <string>net.sf.quakespasm.QuakeSpasm</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>0.97.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>LSApplicationCategoryType</key> + <string>public.app-category.action-games</string> + <key>LSMinimumSystemVersionByArchitecture</key> + <dict> + <key>i386</key> + <string>10.4.0</string> + <key>ppc</key> + <string>10.4.0</string> + <key>x86_64</key> + <string>10.6.0</string> + <key>arm64</key> + <string>11.0.0</string> + </dict> + <key>NSMainNibFile</key> + <string>Launcher</string> + <key>NSPrincipalClass</key> + <string>SDLApplication</string> +</dict> +</plist> diff --git a/MacOSX/Launcher-Info.plist b/MacOSX/Launcher-Info.plist new file mode 100644 index 0000000..7b94435 --- /dev/null +++ b/MacOSX/Launcher-Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIdentifier</key> + <string>com.yourcompany.Launcher</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> +</dict> +</plist> diff --git a/MacOSX/QuakeArgument.h b/MacOSX/QuakeArgument.h new file mode 100644 index 0000000..604daa2 --- /dev/null +++ b/MacOSX/QuakeArgument.h @@ -0,0 +1,36 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import <Cocoa/Cocoa.h> + + +@interface QuakeArgument : NSObject { + NSString *name; + NSString *value; +} + +- (id)initWithArgument:(NSString *)n; +- (id)initWithArgument:(NSString *)n andValue:(NSString *)v; + +- (NSString *)name; +- (NSString *)value; + +- (BOOL)hasValue; +@end diff --git a/MacOSX/QuakeArgument.m b/MacOSX/QuakeArgument.m new file mode 100644 index 0000000..cdf3d16 --- /dev/null +++ b/MacOSX/QuakeArgument.m @@ -0,0 +1,80 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import "QuakeArgument.h" + + +@implementation QuakeArgument + +- (id)initWithArgument:(NSString *)n { + + return [self initWithArgument:n andValue:nil]; +} + +- (id)initWithArgument:(NSString *)n andValue:(NSString *)v { + + self = [super init]; + if (self == nil) + return nil; + + name = [n retain]; + if (v != nil) + value = [v retain]; + + return self; +} + +- (NSString *)name { + + return name; +} + +- (NSString *)value { + + return value; +} + +- (BOOL)hasValue { + + return value != nil; +} + +- (NSString *)description { + + NSMutableString *buffer = [[NSMutableString alloc] init]; + + [buffer appendString:name]; + if ([self hasValue]) { + [buffer appendString:@" "]; + [buffer appendString:value]; + } + + return buffer; +} + +- (void) dealloc +{ + [name release]; + [value release]; + + [super dealloc]; +} + +@end diff --git a/MacOSX/QuakeArguments.h b/MacOSX/QuakeArguments.h new file mode 100644 index 0000000..ffba1f3 --- /dev/null +++ b/MacOSX/QuakeArguments.h @@ -0,0 +1,40 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import <Cocoa/Cocoa.h> +#import "QuakeArgument.h" + + +@interface QuakeArguments : NSObject { + NSMutableArray *quakeArgs; +} + +- (id)initWithArguments:(char **)argv count:(int)argc; +- (void)parseArguments:(NSString *)args; + +- (void)addArgument:(NSString *)arg; +- (void)addArgument:(NSString *)arg withValue:(NSString *)value; + +- (QuakeArgument *)argument:(NSString *)name; +- (void)removeArgument:(NSString *)arg; + +- (int)count; +- (void)setArguments:(char **)args; +@end diff --git a/MacOSX/QuakeArguments.m b/MacOSX/QuakeArguments.m new file mode 100644 index 0000000..d632388 --- /dev/null +++ b/MacOSX/QuakeArguments.m @@ -0,0 +1,223 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import "QuakeArguments.h" +#import "QuakeArgument.h" + +@implementation QuakeArguments + +- (id)init { + self = [super init]; + if (!self) + return nil; + + quakeArgs = [[NSMutableArray alloc] init]; + return self; +} + +- (id)initWithArguments:(char **)argv count:(int)argc { + int i; + NSString *next; + NSString *current; + QuakeArgument *argument; + + self = [self init]; + if (!self) + return nil; + + if (argc > 0) { + for (i = 0; argv[i]; i++) { + current = [NSString stringWithCString:argv[i] encoding:NSASCIIStringEncoding]; + if (i < argc-1) { + next = [NSString stringWithCString:argv[i+1] encoding:NSASCIIStringEncoding]; + } else { + next = nil; + } + + if (next != nil && [next characterAtIndex:0] != '-' && [next characterAtIndex:0] != '+') { + argument = [[QuakeArgument alloc] initWithArgument:current andValue:next]; + i++; + } else { + argument = [[QuakeArgument alloc] initWithArgument:current]; + } + [quakeArgs addObject:argument]; + [argument release]; + } + } + + return self; +} + +- (void)parseArguments:(NSString *)args { + int i; + NSMutableString *word = nil; + NSMutableArray *words = [[NSMutableArray alloc] init]; + BOOL quoted = FALSE; + + [quakeArgs removeAllObjects]; + + for (i = 0; i < [args length]; i++) { + const unichar c = [args characterAtIndex:i]; + + if (c == ' ' && !quoted) { + // complete the current word, if any. + if (word != nil) { + [words addObject:word]; + [word release]; + word = nil; + } + + // ignore the space + continue; + } + + if (c == '"') { + quoted = !quoted; + continue; + } + + // other characters just get inserted. + + // start a word if needed + if (word == nil) { + word = [[NSMutableString alloc] init]; + } + [word appendFormat:@"%C", c]; + } + + // complete the current word, if any + if (word != nil) { + [words addObject:word]; + [word release]; + word = nil; + } + + NSString *current; + NSString *next; + QuakeArgument *argument = nil; + + for (i = 0; i < [words count];) { + current = [words objectAtIndex:i++]; + if (i < [words count]) { + next = [words objectAtIndex:i++]; + unichar c = [next characterAtIndex:0]; + if (c != '-' && c != '+') + argument = [[QuakeArgument alloc] initWithArgument:current andValue:next]; + else + i--; + + } + + if (argument == nil) { + argument = [[QuakeArgument alloc] initWithArgument:current]; + } + + [quakeArgs addObject:argument]; + [argument release]; + argument = nil; + } +} + +- (void)addArgument:(NSString *)name { + QuakeArgument *argument = [[QuakeArgument alloc] initWithArgument:name]; + [quakeArgs addObject:argument]; + + [argument release]; +} + +- (void)addArgument:(NSString *)name withValue:(NSString *)value { + QuakeArgument *argument = [[QuakeArgument alloc] initWithArgument:name andValue:value]; + [quakeArgs addObject:argument]; + + [argument release]; +} + +- (void)removeArgument:(NSString *)arg { + [quakeArgs removeObject:arg]; +} + +- (QuakeArgument *)argument:(NSString *)name { + NSEnumerator *enumerator = [quakeArgs objectEnumerator]; + QuakeArgument *argument; + + while ((argument = [enumerator nextObject])) { + if ([name isEqualToString:[argument name]]) + return argument; + } + + return nil; +} + +- (int)count { + int c = 0; + + NSEnumerator *enumerator = [quakeArgs objectEnumerator]; + QuakeArgument *argument; + + while ((argument = [enumerator nextObject])) { + c++; + if ([argument hasValue]) + c++; + } + + return c; +} + +- (void)setArguments:(char **)args { + int i = 0; + + NSEnumerator *enumerator = [quakeArgs objectEnumerator]; + QuakeArgument *argument; + + while ((argument = [enumerator nextObject])) { + args[i++] = (char *)[[argument name] cStringUsingEncoding:NSASCIIStringEncoding]; + + if ([argument hasValue]) + args[i++] = (char *)[[argument value] cStringUsingEncoding:NSASCIIStringEncoding]; + } +} + +- (NSString *)description { + int i; + NSMutableString *buffer = [[NSMutableString alloc] init]; + + for (i = 0; i < [quakeArgs count]; i++) { + if (i > 0) + [buffer appendString:@" "]; + + QuakeArgument *argument = [quakeArgs objectAtIndex:i]; + [buffer appendString:[argument name]]; + + if ([argument hasValue]) { + [buffer appendString:@" "]; + [buffer appendString:[argument value]]; + } + } + + return buffer; +} + +- (void) dealloc { + [quakeArgs release]; + [super dealloc]; +} + + +@end diff --git a/MacOSX/QuakeSpasm.icns b/MacOSX/QuakeSpasm.icns new file mode 100644 index 0000000000000000000000000000000000000000..e0f9cc170584c60df0b1f1b4642614d5ddf90248 GIT binary patch literal 144338 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 literal 0 HcmV?d00001 diff --git a/MacOSX/QuakeSpasm.xcodeproj/project.pbxproj b/MacOSX/QuakeSpasm.xcodeproj/project.pbxproj new file mode 100644 index 0000000..29ccd2a --- /dev/null +++ b/MacOSX/QuakeSpasm.xcodeproj/project.pbxproj @@ -0,0 +1,2307 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; + 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; + 002F3A2E09D0888800EBEB88 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A2C09D0888800EBEB88 /* SDLMain.m */; }; + 002F3C0109D093BD00EBEB88 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C0009D093BD00EBEB88 /* OpenGL.framework */; }; + 2A57A25027FCC36000E38B7E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 2A57A25127FCC36000E38B7E /* Launcher.nib in Resources */ = {isa = PBXBuildFile; fileRef = 48B9E7860D340B1E0001CACF /* Launcher.nib */; }; + 2A57A25227FCC36000E38B7E /* QuakeSpasm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */; }; + 2A57A25427FCC36000E38B7E /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A2C09D0888800EBEB88 /* SDLMain.m */; }; + 2A57A25527FCC36000E38B7E /* chase.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78100D2EEA5400CB2E4C /* chase.c */; }; + 2A57A25627FCC36000E38B7E /* cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78110D2EEA5400CB2E4C /* cmd.c */; }; + 2A57A25727FCC36000E38B7E /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78120D2EEA5400CB2E4C /* common.c */; }; + 2A57A25827FCC36000E38B7E /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78130D2EEA5400CB2E4C /* console.c */; }; + 2A57A25927FCC36000E38B7E /* crc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78140D2EEA5400CB2E4C /* crc.c */; }; + 2A57A25A27FCC36000E38B7E /* cvar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78150D2EEA5400CB2E4C /* cvar.c */; }; + 2A57A25B27FCC36000E38B7E /* host_cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78160D2EEA5400CB2E4C /* host_cmd.c */; }; + 2A57A25C27FCC36000E38B7E /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78170D2EEA5400CB2E4C /* host.c */; }; + 2A57A25D27FCC36000E38B7E /* mathlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78180D2EEA5400CB2E4C /* mathlib.c */; }; + 2A57A25E27FCC36000E38B7E /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78190D2EEA5400CB2E4C /* menu.c */; }; + 2A57A25F27FCC36000E38B7E /* pr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */; }; + 2A57A26027FCC36000E38B7E /* pr_edict.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781B0D2EEA5400CB2E4C /* pr_edict.c */; }; + 2A57A26127FCC36000E38B7E /* pr_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781C0D2EEA5400CB2E4C /* pr_exec.c */; }; + 2A57A26227FCC36000E38B7E /* sbar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781D0D2EEA5400CB2E4C /* sbar.c */; }; + 2A57A26327FCC36000E38B7E /* view.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781F0D2EEA5400CB2E4C /* view.c */; }; + 2A57A26427FCC36000E38B7E /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78200D2EEA5400CB2E4C /* wad.c */; }; + 2A57A26527FCC36000E38B7E /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78210D2EEA5400CB2E4C /* world.c */; }; + 2A57A26627FCC36000E38B7E /* zone.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78220D2EEA5400CB2E4C /* zone.c */; }; + 2A57A26727FCC36000E38B7E /* in_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78360D2EEA6D00CB2E4C /* in_sdl.c */; }; + 2A57A26827FCC36000E38B7E /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78370D2EEA6D00CB2E4C /* keys.c */; }; + 2A57A26927FCC36000E38B7E /* cl_demo.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */; }; + 2A57A26A27FCC36000E38B7E /* cl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783B0D2EEAAB00CB2E4C /* cl_input.c */; }; + 2A57A26B27FCC36000E38B7E /* cl_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783C0D2EEAAB00CB2E4C /* cl_main.c */; }; + 2A57A26C27FCC36000E38B7E /* cl_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */; }; + 2A57A26D27FCC36000E38B7E /* cl_tent.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */; }; + 2A57A26E27FCC36000E38B7E /* net_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783F0D2EEAAB00CB2E4C /* net_main.c */; }; + 2A57A26F27FCC36000E38B7E /* sv_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78410D2EEAAB00CB2E4C /* sv_main.c */; }; + 2A57A27027FCC36000E38B7E /* sv_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78420D2EEAAB00CB2E4C /* sv_move.c */; }; + 2A57A27127FCC36000E38B7E /* sv_phys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78430D2EEAAB00CB2E4C /* sv_phys.c */; }; + 2A57A27227FCC36000E38B7E /* sv_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78440D2EEAAB00CB2E4C /* sv_user.c */; }; + 2A57A27327FCC36000E38B7E /* cd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78500D2EEAC300CB2E4C /* cd_sdl.c */; }; + 2A57A27427FCC36000E38B7E /* snd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78540D2EEAC300CB2E4C /* snd_sdl.c */; }; + 2A57A27527FCC36000E38B7E /* gl_draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785A0D2EEAF000CB2E4C /* gl_draw.c */; }; + 2A57A27627FCC36000E38B7E /* gl_fog.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785B0D2EEAF000CB2E4C /* gl_fog.c */; }; + 2A57A27727FCC36000E38B7E /* gl_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */; }; + 2A57A27827FCC36000E38B7E /* gl_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785D0D2EEAF000CB2E4C /* gl_model.c */; }; + 2A57A27927FCC36000E38B7E /* gl_refrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */; }; + 2A57A27A27FCC36000E38B7E /* gl_rlight.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */; }; + 2A57A27B27FCC36000E38B7E /* gl_rmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78600D2EEAF000CB2E4C /* gl_rmain.c */; }; + 2A57A27C27FCC36000E38B7E /* gl_rmisc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */; }; + 2A57A27D27FCC36000E38B7E /* gl_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78620D2EEAF000CB2E4C /* gl_screen.c */; }; + 2A57A27E27FCC36000E38B7E /* gl_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78630D2EEAF000CB2E4C /* gl_sky.c */; }; + 2A57A27F27FCC36000E38B7E /* gl_texmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */; }; + 2A57A28027FCC36000E38B7E /* gl_vidsdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */; }; + 2A57A28127FCC36000E38B7E /* gl_warp.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78670D2EEAF000CB2E4C /* gl_warp.c */; }; + 2A57A28227FCC36000E38B7E /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78680D2EEAF000CB2E4C /* image.c */; }; + 2A57A28327FCC36000E38B7E /* r_alias.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78690D2EEAF000CB2E4C /* r_alias.c */; }; + 2A57A28427FCC36000E38B7E /* r_brush.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786A0D2EEAF000CB2E4C /* r_brush.c */; }; + 2A57A28527FCC36000E38B7E /* r_part.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786B0D2EEAF000CB2E4C /* r_part.c */; }; + 2A57A28627FCC36000E38B7E /* r_sprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786C0D2EEAF000CB2E4C /* r_sprite.c */; }; + 2A57A28727FCC36000E38B7E /* r_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786D0D2EEAF000CB2E4C /* r_world.c */; }; + 2A57A28827FCC36000E38B7E /* net_dgrm.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D280D3004A70004D61B /* net_dgrm.c */; }; + 2A57A28927FCC36000E38B7E /* net_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D2A0D3004A80004D61B /* net_loop.c */; }; + 2A57A28A27FCC36000E38B7E /* snd_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C80D31A22A00E7920A /* snd_dma.c */; }; + 2A57A28B27FCC36000E38B7E /* snd_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C90D31A22A00E7920A /* snd_mem.c */; }; + 2A57A28C27FCC36000E38B7E /* snd_mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577CA0D31A22A00E7920A /* snd_mix.c */; }; + 2A57A28D27FCC36000E38B7E /* main_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 48243B130D33F01A00C29F8F /* main_sdl.c */; }; + 2A57A28E27FCC36000E38B7E /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7A60D340BEA0001CACF /* AppController.m */; }; + 2A57A28F27FCC36000E38B7E /* SDLApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7BF0D340EA80001CACF /* SDLApplication.m */; }; + 2A57A29027FCC36000E38B7E /* ScreenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */; }; + 2A57A29127FCC36000E38B7E /* QuakeArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */; }; + 2A57A29227FCC36000E38B7E /* QuakeArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */; }; + 2A57A29327FCC36000E38B7E /* pl_osx.m in Sources */ = {isa = PBXBuildFile; fileRef = 48895DB80D4914A000849ABF /* pl_osx.m */; }; + 2A57A29427FCC36000E38B7E /* sys_sdl_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 4847CD5E12057F94000B560F /* sys_sdl_unix.c */; }; + 2A57A29527FCC36000E38B7E /* net_bsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1412102F400015BF15 /* net_bsd.c */; }; + 2A57A29627FCC36000E38B7E /* net_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1612102F400015BF15 /* net_udp.c */; }; + 2A57A29727FCC36000E38B7E /* bgmusic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0A112D5B9AE006DD66E /* bgmusic.c */; }; + 2A57A29827FCC36000E38B7E /* snd_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0AC12D5B9ED006DD66E /* snd_codec.c */; }; + 2A57A29927FCC36000E38B7E /* snd_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */; }; + 2A57A29A27FCC36000E38B7E /* snd_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B412D5BA1A006DD66E /* snd_wave.c */; }; + 2A57A29B27FCC36000E38B7E /* snd_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4854B1B01340C646004C9F45 /* snd_mp3.c */; }; + 2A57A29C27FCC36000E38B7E /* snd_mikmod.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */; }; + 2A57A29D27FCC36000E38B7E /* snd_umx.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B012D5BA1A006DD66E /* snd_umx.c */; }; + 2A57A29E27FCC36000E38B7E /* cfgfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B021C20714A5FF7E003F18D6 /* cfgfile.c */; }; + 2A57A29F27FCC36000E38B7E /* strlcat.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FA14AA34940011B754 /* strlcat.c */; }; + 2A57A2A027FCC36000E38B7E /* strlcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FB14AA34940011B754 /* strlcpy.c */; }; + 2A57A2A127FCC36000E38B7E /* snd_opus.c in Sources */ = {isa = PBXBuildFile; fileRef = 4885A84A179740A0000EC703 /* snd_opus.c */; }; + 2A57A2A227FCC36000E38B7E /* snd_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = 482812FF179C3F13004E1D61 /* snd_flac.c */; }; + 2A57A2A327FCC36000E38B7E /* snd_mp3tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 63D6EB3423A255900047028C /* snd_mp3tag.c */; }; + 2A57A2A427FCC36000E38B7E /* miniz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8426EA45B900E036E2 /* miniz.c */; }; + 2A57A2A527FCC36000E38B7E /* snd_xmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8F26EA46F500E036E2 /* snd_xmp.c */; }; + 2A57A2A627FCC36000E38B7E /* snd_modplug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6314786E27F1AEB20023B20A /* snd_modplug.c */; }; + 2A57A2A827FCC36000E38B7E /* libFLAC.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 2A57A2A927FCC36000E38B7E /* libopus.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 2A57A2AA27FCC36000E38B7E /* libopusfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 2A57A2AB27FCC36000E38B7E /* libmad.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 2A57A2AC27FCC36000E38B7E /* libogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 2A57A2AD27FCC36000E38B7E /* libvorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 2A57A2AE27FCC36000E38B7E /* libvorbisfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 2A57A2AF27FCC36000E38B7E /* libxmp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + 2A57A2B027FCC36000E38B7E /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 488EF23614B83A370021DD41 /* IOKit.framework */; }; + 2A57A2B127FCC36000E38B7E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 2A57A2B227FCC36000E38B7E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C0009D093BD00EBEB88 /* OpenGL.framework */; }; + 2A57A2B327FCC36000E38B7E /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 664D990519CF6E16000D395C /* SDL2.framework */; }; + 2A57A2B527FCC36000E38B7E /* SDL2.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 664D990519CF6E16000D395C /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2B727FCC36000E38B7E /* libFLAC.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2B827FCC36000E38B7E /* libopus.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2B927FCC36000E38B7E /* libopusfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2BA27FCC36000E38B7E /* libmad.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2BB27FCC36000E38B7E /* libogg.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2BC27FCC36000E38B7E /* libvorbis.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2BD27FCC36000E38B7E /* libvorbisfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2BE27FCC36000E38B7E /* libxmp.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A2C027FCC36000E38B7E /* quakespasm.pak in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C061DBAB48000C373C0 /* quakespasm.pak */; }; + 2A57A2C127FCC36000E38B7E /* LICENSE.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C021DBAB47000C373C0 /* LICENSE.txt */; }; + 2A57A2C227FCC36000E38B7E /* Quakespasm-Music.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C031DBAB47000C373C0 /* Quakespasm-Music.txt */; }; + 2A57A2C327FCC36000E38B7E /* Quakespasm.html in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C041DBAB47000C373C0 /* Quakespasm.html */; }; + 2A57A2C427FCC36000E38B7E /* Quakespasm.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C051DBAB47000C373C0 /* Quakespasm.txt */; }; + 2A57A2CC27FCC36A00E38B7E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 2A57A2CD27FCC36A00E38B7E /* Launcher.nib in Resources */ = {isa = PBXBuildFile; fileRef = 48B9E7860D340B1E0001CACF /* Launcher.nib */; }; + 2A57A2CE27FCC36A00E38B7E /* QuakeSpasm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */; }; + 2A57A2D027FCC36A00E38B7E /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A2C09D0888800EBEB88 /* SDLMain.m */; }; + 2A57A2D127FCC36A00E38B7E /* chase.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78100D2EEA5400CB2E4C /* chase.c */; }; + 2A57A2D227FCC36A00E38B7E /* cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78110D2EEA5400CB2E4C /* cmd.c */; }; + 2A57A2D327FCC36A00E38B7E /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78120D2EEA5400CB2E4C /* common.c */; }; + 2A57A2D427FCC36A00E38B7E /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78130D2EEA5400CB2E4C /* console.c */; }; + 2A57A2D527FCC36A00E38B7E /* crc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78140D2EEA5400CB2E4C /* crc.c */; }; + 2A57A2D627FCC36A00E38B7E /* cvar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78150D2EEA5400CB2E4C /* cvar.c */; }; + 2A57A2D727FCC36A00E38B7E /* host_cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78160D2EEA5400CB2E4C /* host_cmd.c */; }; + 2A57A2D827FCC36A00E38B7E /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78170D2EEA5400CB2E4C /* host.c */; }; + 2A57A2D927FCC36A00E38B7E /* mathlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78180D2EEA5400CB2E4C /* mathlib.c */; }; + 2A57A2DA27FCC36A00E38B7E /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78190D2EEA5400CB2E4C /* menu.c */; }; + 2A57A2DB27FCC36A00E38B7E /* pr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */; }; + 2A57A2DC27FCC36A00E38B7E /* pr_edict.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781B0D2EEA5400CB2E4C /* pr_edict.c */; }; + 2A57A2DD27FCC36A00E38B7E /* pr_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781C0D2EEA5400CB2E4C /* pr_exec.c */; }; + 2A57A2DE27FCC36A00E38B7E /* sbar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781D0D2EEA5400CB2E4C /* sbar.c */; }; + 2A57A2DF27FCC36A00E38B7E /* view.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781F0D2EEA5400CB2E4C /* view.c */; }; + 2A57A2E027FCC36A00E38B7E /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78200D2EEA5400CB2E4C /* wad.c */; }; + 2A57A2E127FCC36A00E38B7E /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78210D2EEA5400CB2E4C /* world.c */; }; + 2A57A2E227FCC36A00E38B7E /* zone.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78220D2EEA5400CB2E4C /* zone.c */; }; + 2A57A2E327FCC36A00E38B7E /* in_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78360D2EEA6D00CB2E4C /* in_sdl.c */; }; + 2A57A2E427FCC36A00E38B7E /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78370D2EEA6D00CB2E4C /* keys.c */; }; + 2A57A2E527FCC36A00E38B7E /* cl_demo.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */; }; + 2A57A2E627FCC36A00E38B7E /* cl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783B0D2EEAAB00CB2E4C /* cl_input.c */; }; + 2A57A2E727FCC36A00E38B7E /* cl_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783C0D2EEAAB00CB2E4C /* cl_main.c */; }; + 2A57A2E827FCC36A00E38B7E /* cl_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */; }; + 2A57A2E927FCC36A00E38B7E /* cl_tent.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */; }; + 2A57A2EA27FCC36A00E38B7E /* net_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783F0D2EEAAB00CB2E4C /* net_main.c */; }; + 2A57A2EB27FCC36A00E38B7E /* sv_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78410D2EEAAB00CB2E4C /* sv_main.c */; }; + 2A57A2EC27FCC36A00E38B7E /* sv_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78420D2EEAAB00CB2E4C /* sv_move.c */; }; + 2A57A2ED27FCC36A00E38B7E /* sv_phys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78430D2EEAAB00CB2E4C /* sv_phys.c */; }; + 2A57A2EE27FCC36A00E38B7E /* sv_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78440D2EEAAB00CB2E4C /* sv_user.c */; }; + 2A57A2EF27FCC36A00E38B7E /* cd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78500D2EEAC300CB2E4C /* cd_sdl.c */; }; + 2A57A2F027FCC36A00E38B7E /* snd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78540D2EEAC300CB2E4C /* snd_sdl.c */; }; + 2A57A2F127FCC36A00E38B7E /* gl_draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785A0D2EEAF000CB2E4C /* gl_draw.c */; }; + 2A57A2F227FCC36A00E38B7E /* gl_fog.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785B0D2EEAF000CB2E4C /* gl_fog.c */; }; + 2A57A2F327FCC36A00E38B7E /* gl_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */; }; + 2A57A2F427FCC36A00E38B7E /* gl_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785D0D2EEAF000CB2E4C /* gl_model.c */; }; + 2A57A2F527FCC36A00E38B7E /* gl_refrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */; }; + 2A57A2F627FCC36A00E38B7E /* gl_rlight.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */; }; + 2A57A2F727FCC36A00E38B7E /* gl_rmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78600D2EEAF000CB2E4C /* gl_rmain.c */; }; + 2A57A2F827FCC36A00E38B7E /* gl_rmisc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */; }; + 2A57A2F927FCC36A00E38B7E /* gl_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78620D2EEAF000CB2E4C /* gl_screen.c */; }; + 2A57A2FA27FCC36A00E38B7E /* gl_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78630D2EEAF000CB2E4C /* gl_sky.c */; }; + 2A57A2FB27FCC36A00E38B7E /* gl_texmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */; }; + 2A57A2FC27FCC36A00E38B7E /* gl_vidsdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */; }; + 2A57A2FD27FCC36A00E38B7E /* gl_warp.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78670D2EEAF000CB2E4C /* gl_warp.c */; }; + 2A57A2FE27FCC36A00E38B7E /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78680D2EEAF000CB2E4C /* image.c */; }; + 2A57A2FF27FCC36A00E38B7E /* r_alias.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78690D2EEAF000CB2E4C /* r_alias.c */; }; + 2A57A30027FCC36A00E38B7E /* r_brush.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786A0D2EEAF000CB2E4C /* r_brush.c */; }; + 2A57A30127FCC36A00E38B7E /* r_part.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786B0D2EEAF000CB2E4C /* r_part.c */; }; + 2A57A30227FCC36A00E38B7E /* r_sprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786C0D2EEAF000CB2E4C /* r_sprite.c */; }; + 2A57A30327FCC36A00E38B7E /* r_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786D0D2EEAF000CB2E4C /* r_world.c */; }; + 2A57A30427FCC36A00E38B7E /* net_dgrm.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D280D3004A70004D61B /* net_dgrm.c */; }; + 2A57A30527FCC36A00E38B7E /* net_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D2A0D3004A80004D61B /* net_loop.c */; }; + 2A57A30627FCC36A00E38B7E /* snd_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C80D31A22A00E7920A /* snd_dma.c */; }; + 2A57A30727FCC36A00E38B7E /* snd_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C90D31A22A00E7920A /* snd_mem.c */; }; + 2A57A30827FCC36A00E38B7E /* snd_mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577CA0D31A22A00E7920A /* snd_mix.c */; }; + 2A57A30927FCC36A00E38B7E /* main_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 48243B130D33F01A00C29F8F /* main_sdl.c */; }; + 2A57A30A27FCC36A00E38B7E /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7A60D340BEA0001CACF /* AppController.m */; }; + 2A57A30B27FCC36A00E38B7E /* SDLApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7BF0D340EA80001CACF /* SDLApplication.m */; }; + 2A57A30C27FCC36A00E38B7E /* ScreenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */; }; + 2A57A30D27FCC36A00E38B7E /* QuakeArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */; }; + 2A57A30E27FCC36A00E38B7E /* QuakeArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */; }; + 2A57A30F27FCC36A00E38B7E /* pl_osx.m in Sources */ = {isa = PBXBuildFile; fileRef = 48895DB80D4914A000849ABF /* pl_osx.m */; }; + 2A57A31027FCC36A00E38B7E /* sys_sdl_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 4847CD5E12057F94000B560F /* sys_sdl_unix.c */; }; + 2A57A31127FCC36A00E38B7E /* net_bsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1412102F400015BF15 /* net_bsd.c */; }; + 2A57A31227FCC36A00E38B7E /* net_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1612102F400015BF15 /* net_udp.c */; }; + 2A57A31327FCC36A00E38B7E /* bgmusic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0A112D5B9AE006DD66E /* bgmusic.c */; }; + 2A57A31427FCC36A00E38B7E /* snd_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0AC12D5B9ED006DD66E /* snd_codec.c */; }; + 2A57A31527FCC36A00E38B7E /* snd_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */; }; + 2A57A31627FCC36A00E38B7E /* snd_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B412D5BA1A006DD66E /* snd_wave.c */; }; + 2A57A31727FCC36A00E38B7E /* snd_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4854B1B01340C646004C9F45 /* snd_mp3.c */; }; + 2A57A31827FCC36A00E38B7E /* snd_mikmod.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */; }; + 2A57A31927FCC36A00E38B7E /* snd_umx.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B012D5BA1A006DD66E /* snd_umx.c */; }; + 2A57A31A27FCC36A00E38B7E /* cfgfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B021C20714A5FF7E003F18D6 /* cfgfile.c */; }; + 2A57A31B27FCC36A00E38B7E /* strlcat.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FA14AA34940011B754 /* strlcat.c */; }; + 2A57A31C27FCC36A00E38B7E /* strlcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FB14AA34940011B754 /* strlcpy.c */; }; + 2A57A31D27FCC36A00E38B7E /* snd_opus.c in Sources */ = {isa = PBXBuildFile; fileRef = 4885A84A179740A0000EC703 /* snd_opus.c */; }; + 2A57A31E27FCC36A00E38B7E /* snd_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = 482812FF179C3F13004E1D61 /* snd_flac.c */; }; + 2A57A31F27FCC36A00E38B7E /* snd_mp3tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 63D6EB3423A255900047028C /* snd_mp3tag.c */; }; + 2A57A32027FCC36A00E38B7E /* miniz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8426EA45B900E036E2 /* miniz.c */; }; + 2A57A32127FCC36A00E38B7E /* snd_xmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8F26EA46F500E036E2 /* snd_xmp.c */; }; + 2A57A32227FCC36A00E38B7E /* snd_modplug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6314786E27F1AEB20023B20A /* snd_modplug.c */; }; + 2A57A32427FCC36A00E38B7E /* libFLAC.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 2A57A32527FCC36A00E38B7E /* libopus.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 2A57A32627FCC36A00E38B7E /* libopusfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 2A57A32727FCC36A00E38B7E /* libmad.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 2A57A32827FCC36A00E38B7E /* libogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 2A57A32927FCC36A00E38B7E /* libvorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 2A57A32A27FCC36A00E38B7E /* libvorbisfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 2A57A32B27FCC36A00E38B7E /* libxmp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + 2A57A32C27FCC36A00E38B7E /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 488EF23614B83A370021DD41 /* IOKit.framework */; }; + 2A57A32D27FCC36A00E38B7E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 2A57A32E27FCC36A00E38B7E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C0009D093BD00EBEB88 /* OpenGL.framework */; }; + 2A57A32F27FCC36A00E38B7E /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 664D990519CF6E16000D395C /* SDL2.framework */; }; + 2A57A33127FCC36A00E38B7E /* SDL2.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 664D990519CF6E16000D395C /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33327FCC36A00E38B7E /* libFLAC.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33427FCC36A00E38B7E /* libopus.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33527FCC36A00E38B7E /* libopusfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33627FCC36A00E38B7E /* libmad.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33727FCC36A00E38B7E /* libogg.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33827FCC36A00E38B7E /* libvorbis.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33927FCC36A00E38B7E /* libvorbisfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33A27FCC36A00E38B7E /* libxmp.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 2A57A33C27FCC36A00E38B7E /* quakespasm.pak in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C061DBAB48000C373C0 /* quakespasm.pak */; }; + 2A57A33D27FCC36A00E38B7E /* LICENSE.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C021DBAB47000C373C0 /* LICENSE.txt */; }; + 2A57A33E27FCC36A00E38B7E /* Quakespasm-Music.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C031DBAB47000C373C0 /* Quakespasm-Music.txt */; }; + 2A57A33F27FCC36A00E38B7E /* Quakespasm.html in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C041DBAB47000C373C0 /* Quakespasm.html */; }; + 2A57A34027FCC36A00E38B7E /* Quakespasm.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C051DBAB47000C373C0 /* Quakespasm.txt */; }; + 32CA4F630368D1EE00C91783 /* snd_umx.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B012D5BA1A006DD66E /* snd_umx.c */; }; + 48134A1812102F400015BF15 /* net_bsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1412102F400015BF15 /* net_bsd.c */; }; + 48134A1912102F400015BF15 /* net_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1612102F400015BF15 /* net_udp.c */; }; + 4818B0A312D5B9AE006DD66E /* bgmusic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0A112D5B9AE006DD66E /* bgmusic.c */; }; + 4818B0AE12D5B9ED006DD66E /* snd_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0AC12D5B9ED006DD66E /* snd_codec.c */; }; + 4818B0B712D5BA1A006DD66E /* snd_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */; }; + 4818B0B812D5BA1A006DD66E /* snd_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B412D5BA1A006DD66E /* snd_wave.c */; }; + 48243B140D33F01A00C29F8F /* main_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 48243B130D33F01A00C29F8F /* main_sdl.c */; }; + 482812FD179C3EF4004E1D61 /* libFLAC.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 482812FE179C3EFF004E1D61 /* libFLAC.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 48281301179C3F13004E1D61 /* snd_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = 482812FF179C3F13004E1D61 /* snd_flac.c */; }; + 483A78230D2EEA5400CB2E4C /* chase.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78100D2EEA5400CB2E4C /* chase.c */; }; + 483A78240D2EEA5400CB2E4C /* cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78110D2EEA5400CB2E4C /* cmd.c */; }; + 483A78250D2EEA5400CB2E4C /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78120D2EEA5400CB2E4C /* common.c */; }; + 483A78260D2EEA5400CB2E4C /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78130D2EEA5400CB2E4C /* console.c */; }; + 483A78270D2EEA5400CB2E4C /* crc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78140D2EEA5400CB2E4C /* crc.c */; }; + 483A78280D2EEA5400CB2E4C /* cvar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78150D2EEA5400CB2E4C /* cvar.c */; }; + 483A78290D2EEA5400CB2E4C /* host_cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78160D2EEA5400CB2E4C /* host_cmd.c */; }; + 483A782A0D2EEA5400CB2E4C /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78170D2EEA5400CB2E4C /* host.c */; }; + 483A782B0D2EEA5400CB2E4C /* mathlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78180D2EEA5400CB2E4C /* mathlib.c */; }; + 483A782C0D2EEA5400CB2E4C /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78190D2EEA5400CB2E4C /* menu.c */; }; + 483A782D0D2EEA5400CB2E4C /* pr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */; }; + 483A782E0D2EEA5400CB2E4C /* pr_edict.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781B0D2EEA5400CB2E4C /* pr_edict.c */; }; + 483A782F0D2EEA5400CB2E4C /* pr_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781C0D2EEA5400CB2E4C /* pr_exec.c */; }; + 483A78300D2EEA5400CB2E4C /* sbar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781D0D2EEA5400CB2E4C /* sbar.c */; }; + 483A78320D2EEA5400CB2E4C /* view.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781F0D2EEA5400CB2E4C /* view.c */; }; + 483A78330D2EEA5400CB2E4C /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78200D2EEA5400CB2E4C /* wad.c */; }; + 483A78340D2EEA5400CB2E4C /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78210D2EEA5400CB2E4C /* world.c */; }; + 483A78350D2EEA5400CB2E4C /* zone.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78220D2EEA5400CB2E4C /* zone.c */; }; + 483A78380D2EEA6D00CB2E4C /* in_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78360D2EEA6D00CB2E4C /* in_sdl.c */; }; + 483A78390D2EEA6D00CB2E4C /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78370D2EEA6D00CB2E4C /* keys.c */; }; + 483A78450D2EEAAB00CB2E4C /* cl_demo.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */; }; + 483A78460D2EEAAB00CB2E4C /* cl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783B0D2EEAAB00CB2E4C /* cl_input.c */; }; + 483A78470D2EEAAB00CB2E4C /* cl_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783C0D2EEAAB00CB2E4C /* cl_main.c */; }; + 483A78480D2EEAAB00CB2E4C /* cl_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */; }; + 483A78490D2EEAAB00CB2E4C /* cl_tent.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */; }; + 483A784A0D2EEAAB00CB2E4C /* net_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783F0D2EEAAB00CB2E4C /* net_main.c */; }; + 483A784C0D2EEAAB00CB2E4C /* sv_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78410D2EEAAB00CB2E4C /* sv_main.c */; }; + 483A784D0D2EEAAB00CB2E4C /* sv_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78420D2EEAAB00CB2E4C /* sv_move.c */; }; + 483A784E0D2EEAAB00CB2E4C /* sv_phys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78430D2EEAAB00CB2E4C /* sv_phys.c */; }; + 483A784F0D2EEAAB00CB2E4C /* sv_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78440D2EEAAB00CB2E4C /* sv_user.c */; }; + 483A78550D2EEAC300CB2E4C /* cd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78500D2EEAC300CB2E4C /* cd_sdl.c */; }; + 483A78590D2EEAC300CB2E4C /* snd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78540D2EEAC300CB2E4C /* snd_sdl.c */; }; + 483A786E0D2EEAF000CB2E4C /* gl_draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785A0D2EEAF000CB2E4C /* gl_draw.c */; }; + 483A786F0D2EEAF000CB2E4C /* gl_fog.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785B0D2EEAF000CB2E4C /* gl_fog.c */; }; + 483A78700D2EEAF000CB2E4C /* gl_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */; }; + 483A78710D2EEAF000CB2E4C /* gl_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785D0D2EEAF000CB2E4C /* gl_model.c */; }; + 483A78720D2EEAF000CB2E4C /* gl_refrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */; }; + 483A78730D2EEAF000CB2E4C /* gl_rlight.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */; }; + 483A78740D2EEAF000CB2E4C /* gl_rmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78600D2EEAF000CB2E4C /* gl_rmain.c */; }; + 483A78750D2EEAF000CB2E4C /* gl_rmisc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */; }; + 483A78760D2EEAF000CB2E4C /* gl_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78620D2EEAF000CB2E4C /* gl_screen.c */; }; + 483A78770D2EEAF000CB2E4C /* gl_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78630D2EEAF000CB2E4C /* gl_sky.c */; }; + 483A78780D2EEAF000CB2E4C /* snd_mikmod.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */; }; + 483A78790D2EEAF000CB2E4C /* gl_texmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */; }; + 483A787A0D2EEAF000CB2E4C /* gl_vidsdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */; }; + 483A787B0D2EEAF000CB2E4C /* gl_warp.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78670D2EEAF000CB2E4C /* gl_warp.c */; }; + 483A787C0D2EEAF000CB2E4C /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78680D2EEAF000CB2E4C /* image.c */; }; + 483A787D0D2EEAF000CB2E4C /* r_alias.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78690D2EEAF000CB2E4C /* r_alias.c */; }; + 483A787E0D2EEAF000CB2E4C /* r_brush.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786A0D2EEAF000CB2E4C /* r_brush.c */; }; + 483A787F0D2EEAF000CB2E4C /* r_part.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786B0D2EEAF000CB2E4C /* r_part.c */; }; + 483A78800D2EEAF000CB2E4C /* r_sprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786C0D2EEAF000CB2E4C /* r_sprite.c */; }; + 483A78810D2EEAF000CB2E4C /* r_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786D0D2EEAF000CB2E4C /* r_world.c */; }; + 4847CD5F12057F94000B560F /* sys_sdl_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 4847CD5E12057F94000B560F /* sys_sdl_unix.c */; }; + 484AA4B40D3FF6C0005D917A /* QuakeSpasm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */; }; + 4854B1B11340C646004C9F45 /* snd_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4854B1B01340C646004C9F45 /* snd_mp3.c */; }; + 486577CB0D31A22A00E7920A /* snd_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C80D31A22A00E7920A /* snd_dma.c */; }; + 486577CC0D31A22A00E7920A /* snd_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C90D31A22A00E7920A /* snd_mem.c */; }; + 486577CD0D31A22A00E7920A /* snd_mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577CA0D31A22A00E7920A /* snd_mix.c */; }; + 48728D2D0D3004A80004D61B /* net_dgrm.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D280D3004A70004D61B /* net_dgrm.c */; }; + 48728D2E0D3004A80004D61B /* net_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D2A0D3004A80004D61B /* net_loop.c */; }; + 4885A84C179740A0000EC703 /* snd_opus.c in Sources */ = {isa = PBXBuildFile; fileRef = 4885A84A179740A0000EC703 /* snd_opus.c */; }; + 4885A84F179740CA000EC703 /* libopus.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 4885A850179740CA000EC703 /* libopusfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 4885A851179740D7000EC703 /* libopus.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 4885A852179740D7000EC703 /* libopusfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 48895DB90D4914A000849ABF /* pl_osx.m in Sources */ = {isa = PBXBuildFile; fileRef = 48895DB80D4914A000849ABF /* pl_osx.m */; }; + 489D8D2F0D3A630D00AA4471 /* ScreenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */; }; + 48A7C1FC14AA34940011B754 /* strlcat.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FA14AA34940011B754 /* strlcat.c */; }; + 48A7C1FD14AA34940011B754 /* strlcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FB14AA34940011B754 /* strlcpy.c */; }; + 48B9E7880D340B1E0001CACF /* Launcher.nib in Resources */ = {isa = PBXBuildFile; fileRef = 48B9E7860D340B1E0001CACF /* Launcher.nib */; }; + 48B9E7A70D340BEA0001CACF /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7A60D340BEA0001CACF /* AppController.m */; }; + 48B9E7C00D340EA80001CACF /* SDLApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7BF0D340EA80001CACF /* SDLApplication.m */; }; + 48C85E3B0D3AD10E00797678 /* QuakeArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */; }; + 48E2EC7815FB500400B8D476 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 488EF23614B83A370021DD41 /* IOKit.framework */; }; + 48E2EC7D15FB507A00B8D476 /* libmad.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 48E2EC7E15FB507A00B8D476 /* libogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 48E2EC7F15FB507A00B8D476 /* libvorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 48E2EC8015FB507A00B8D476 /* libvorbisfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 48E2EC8615FB516600B8D476 /* libmad.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 48E2EC8715FB516600B8D476 /* libogg.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 48E2EC8815FB516600B8D476 /* libvorbis.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 48E2EC8915FB516600B8D476 /* libvorbisfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 48FE585B0D3A82C8006BB491 /* QuakeArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */; }; + 6314786F27F1AEBD0023B20A /* snd_modplug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6314786E27F1AEB20023B20A /* snd_modplug.c */; }; + 6314787127F1AEC00023B20A /* snd_modplug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6314786E27F1AEB20023B20A /* snd_modplug.c */; }; + 6348AF8626EA45B900E036E2 /* miniz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8426EA45B900E036E2 /* miniz.c */; }; + 6348AF8726EA45B900E036E2 /* miniz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8426EA45B900E036E2 /* miniz.c */; }; + 6348AF9126EA46F500E036E2 /* snd_xmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8F26EA46F500E036E2 /* snd_xmp.c */; }; + 6348AF9226EA46F500E036E2 /* snd_xmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6348AF8F26EA46F500E036E2 /* snd_xmp.c */; }; + 63D6EB3523A255900047028C /* snd_mp3tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 63D6EB3423A255900047028C /* snd_mp3tag.c */; }; + 63D6EB3623A255900047028C /* snd_mp3tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 63D6EB3423A255900047028C /* snd_mp3tag.c */; }; + 664D988A19CF6B78000D395C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 664D988B19CF6B78000D395C /* Launcher.nib in Resources */ = {isa = PBXBuildFile; fileRef = 48B9E7860D340B1E0001CACF /* Launcher.nib */; }; + 664D988C19CF6B78000D395C /* QuakeSpasm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */; }; + 664D988E19CF6B78000D395C /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A2C09D0888800EBEB88 /* SDLMain.m */; }; + 664D988F19CF6B78000D395C /* chase.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78100D2EEA5400CB2E4C /* chase.c */; }; + 664D989019CF6B78000D395C /* cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78110D2EEA5400CB2E4C /* cmd.c */; }; + 664D989119CF6B78000D395C /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78120D2EEA5400CB2E4C /* common.c */; }; + 664D989219CF6B78000D395C /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78130D2EEA5400CB2E4C /* console.c */; }; + 664D989319CF6B78000D395C /* crc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78140D2EEA5400CB2E4C /* crc.c */; }; + 664D989419CF6B78000D395C /* cvar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78150D2EEA5400CB2E4C /* cvar.c */; }; + 664D989519CF6B78000D395C /* host_cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78160D2EEA5400CB2E4C /* host_cmd.c */; }; + 664D989619CF6B78000D395C /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78170D2EEA5400CB2E4C /* host.c */; }; + 664D989719CF6B78000D395C /* mathlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78180D2EEA5400CB2E4C /* mathlib.c */; }; + 664D989819CF6B78000D395C /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78190D2EEA5400CB2E4C /* menu.c */; }; + 664D989919CF6B78000D395C /* pr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */; }; + 664D989A19CF6B78000D395C /* pr_edict.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781B0D2EEA5400CB2E4C /* pr_edict.c */; }; + 664D989B19CF6B78000D395C /* pr_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781C0D2EEA5400CB2E4C /* pr_exec.c */; }; + 664D989C19CF6B78000D395C /* sbar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781D0D2EEA5400CB2E4C /* sbar.c */; }; + 664D989D19CF6B78000D395C /* view.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781F0D2EEA5400CB2E4C /* view.c */; }; + 664D989E19CF6B78000D395C /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78200D2EEA5400CB2E4C /* wad.c */; }; + 664D989F19CF6B78000D395C /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78210D2EEA5400CB2E4C /* world.c */; }; + 664D98A019CF6B78000D395C /* zone.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78220D2EEA5400CB2E4C /* zone.c */; }; + 664D98A119CF6B78000D395C /* in_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78360D2EEA6D00CB2E4C /* in_sdl.c */; }; + 664D98A219CF6B78000D395C /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78370D2EEA6D00CB2E4C /* keys.c */; }; + 664D98A319CF6B78000D395C /* cl_demo.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */; }; + 664D98A419CF6B78000D395C /* cl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783B0D2EEAAB00CB2E4C /* cl_input.c */; }; + 664D98A519CF6B78000D395C /* cl_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783C0D2EEAAB00CB2E4C /* cl_main.c */; }; + 664D98A619CF6B78000D395C /* cl_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */; }; + 664D98A719CF6B78000D395C /* cl_tent.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */; }; + 664D98A819CF6B78000D395C /* net_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783F0D2EEAAB00CB2E4C /* net_main.c */; }; + 664D98A919CF6B78000D395C /* sv_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78410D2EEAAB00CB2E4C /* sv_main.c */; }; + 664D98AA19CF6B78000D395C /* sv_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78420D2EEAAB00CB2E4C /* sv_move.c */; }; + 664D98AB19CF6B78000D395C /* sv_phys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78430D2EEAAB00CB2E4C /* sv_phys.c */; }; + 664D98AC19CF6B78000D395C /* sv_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78440D2EEAAB00CB2E4C /* sv_user.c */; }; + 664D98AD19CF6B78000D395C /* cd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78500D2EEAC300CB2E4C /* cd_sdl.c */; }; + 664D98AE19CF6B78000D395C /* snd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78540D2EEAC300CB2E4C /* snd_sdl.c */; }; + 664D98AF19CF6B78000D395C /* gl_draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785A0D2EEAF000CB2E4C /* gl_draw.c */; }; + 664D98B019CF6B78000D395C /* gl_fog.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785B0D2EEAF000CB2E4C /* gl_fog.c */; }; + 664D98B119CF6B78000D395C /* gl_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */; }; + 664D98B219CF6B78000D395C /* gl_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785D0D2EEAF000CB2E4C /* gl_model.c */; }; + 664D98B319CF6B78000D395C /* gl_refrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */; }; + 664D98B419CF6B78000D395C /* gl_rlight.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */; }; + 664D98B519CF6B78000D395C /* gl_rmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78600D2EEAF000CB2E4C /* gl_rmain.c */; }; + 664D98B619CF6B78000D395C /* gl_rmisc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */; }; + 664D98B719CF6B78000D395C /* gl_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78620D2EEAF000CB2E4C /* gl_screen.c */; }; + 664D98B819CF6B78000D395C /* gl_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78630D2EEAF000CB2E4C /* gl_sky.c */; }; + 664D98B919CF6B78000D395C /* gl_texmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */; }; + 664D98BA19CF6B78000D395C /* gl_vidsdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */; }; + 664D98BB19CF6B78000D395C /* gl_warp.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78670D2EEAF000CB2E4C /* gl_warp.c */; }; + 664D98BC19CF6B78000D395C /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78680D2EEAF000CB2E4C /* image.c */; }; + 664D98BD19CF6B78000D395C /* r_alias.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78690D2EEAF000CB2E4C /* r_alias.c */; }; + 664D98BE19CF6B78000D395C /* r_brush.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786A0D2EEAF000CB2E4C /* r_brush.c */; }; + 664D98BF19CF6B78000D395C /* r_part.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786B0D2EEAF000CB2E4C /* r_part.c */; }; + 664D98C019CF6B78000D395C /* r_sprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786C0D2EEAF000CB2E4C /* r_sprite.c */; }; + 664D98C119CF6B78000D395C /* r_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786D0D2EEAF000CB2E4C /* r_world.c */; }; + 664D98C219CF6B78000D395C /* net_dgrm.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D280D3004A70004D61B /* net_dgrm.c */; }; + 664D98C319CF6B78000D395C /* net_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D2A0D3004A80004D61B /* net_loop.c */; }; + 664D98C419CF6B78000D395C /* snd_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C80D31A22A00E7920A /* snd_dma.c */; }; + 664D98C519CF6B78000D395C /* snd_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C90D31A22A00E7920A /* snd_mem.c */; }; + 664D98C619CF6B78000D395C /* snd_mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577CA0D31A22A00E7920A /* snd_mix.c */; }; + 664D98C719CF6B78000D395C /* main_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 48243B130D33F01A00C29F8F /* main_sdl.c */; }; + 664D98C819CF6B78000D395C /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7A60D340BEA0001CACF /* AppController.m */; }; + 664D98C919CF6B78000D395C /* SDLApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7BF0D340EA80001CACF /* SDLApplication.m */; }; + 664D98CA19CF6B78000D395C /* ScreenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */; }; + 664D98CB19CF6B78000D395C /* QuakeArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */; }; + 664D98CC19CF6B78000D395C /* QuakeArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */; }; + 664D98CD19CF6B78000D395C /* pl_osx.m in Sources */ = {isa = PBXBuildFile; fileRef = 48895DB80D4914A000849ABF /* pl_osx.m */; }; + 664D98CE19CF6B78000D395C /* sys_sdl_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 4847CD5E12057F94000B560F /* sys_sdl_unix.c */; }; + 664D98CF19CF6B78000D395C /* net_bsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1412102F400015BF15 /* net_bsd.c */; }; + 664D98D019CF6B78000D395C /* net_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1612102F400015BF15 /* net_udp.c */; }; + 664D98D119CF6B78000D395C /* bgmusic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0A112D5B9AE006DD66E /* bgmusic.c */; }; + 664D98D219CF6B78000D395C /* snd_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0AC12D5B9ED006DD66E /* snd_codec.c */; }; + 664D98D319CF6B78000D395C /* snd_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */; }; + 664D98D419CF6B78000D395C /* snd_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B412D5BA1A006DD66E /* snd_wave.c */; }; + 664D98D519CF6B78000D395C /* snd_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4854B1B01340C646004C9F45 /* snd_mp3.c */; }; + 664D98D619CF6B78000D395C /* snd_mikmod.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */; }; + 664D98D719CF6B78000D395C /* snd_umx.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B012D5BA1A006DD66E /* snd_umx.c */; }; + 664D98D819CF6B78000D395C /* cfgfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B021C20714A5FF7E003F18D6 /* cfgfile.c */; }; + 664D98D919CF6B78000D395C /* strlcat.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FA14AA34940011B754 /* strlcat.c */; }; + 664D98DA19CF6B78000D395C /* strlcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FB14AA34940011B754 /* strlcpy.c */; }; + 664D98DB19CF6B78000D395C /* snd_opus.c in Sources */ = {isa = PBXBuildFile; fileRef = 4885A84A179740A0000EC703 /* snd_opus.c */; }; + 664D98DC19CF6B78000D395C /* snd_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = 482812FF179C3F13004E1D61 /* snd_flac.c */; }; + 664D98DE19CF6B78000D395C /* libFLAC.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 664D98DF19CF6B78000D395C /* libopus.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 664D98E019CF6B78000D395C /* libopusfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 664D98E119CF6B78000D395C /* libmad.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 664D98E219CF6B78000D395C /* libogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 664D98E319CF6B78000D395C /* libvorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 664D98E419CF6B78000D395C /* libvorbisfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 664D98E519CF6B78000D395C /* libxmp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + 664D98E619CF6B78000D395C /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 488EF23614B83A370021DD41 /* IOKit.framework */; }; + 664D98E919CF6B78000D395C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 664D98EA19CF6B78000D395C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C0009D093BD00EBEB88 /* OpenGL.framework */; }; + 664D98EE19CF6B78000D395C /* libFLAC.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 664D98EF19CF6B78000D395C /* libopus.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 664D98F019CF6B78000D395C /* libopusfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 664D98F119CF6B78000D395C /* libmad.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 664D98F219CF6B78000D395C /* libogg.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 664D98F319CF6B78000D395C /* libvorbis.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 664D98F419CF6B78000D395C /* libvorbisfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 664D98F519CF6B78000D395C /* libxmp.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + 664D990619CF6E16000D395C /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 664D990519CF6E16000D395C /* SDL2.framework */; }; + 664D990719CF6E33000D395C /* SDL2.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 664D990519CF6E16000D395C /* SDL2.framework */; }; + 66991C071DBAB4A600C373C0 /* quakespasm.pak in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C061DBAB48000C373C0 /* quakespasm.pak */; }; + 66991C081DBAB4A600C373C0 /* LICENSE.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C021DBAB47000C373C0 /* LICENSE.txt */; }; + 66991C091DBAB4A600C373C0 /* Quakespasm-Music.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C031DBAB47000C373C0 /* Quakespasm-Music.txt */; }; + 66991C0A1DBAB4A600C373C0 /* Quakespasm.html in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C041DBAB47000C373C0 /* Quakespasm.html */; }; + 66991C0B1DBAB4A600C373C0 /* Quakespasm.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C051DBAB47000C373C0 /* Quakespasm.txt */; }; + 66991C0D1DBAB4B300C373C0 /* quakespasm.pak in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C061DBAB48000C373C0 /* quakespasm.pak */; }; + 66991C0E1DBAB4B300C373C0 /* LICENSE.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C021DBAB47000C373C0 /* LICENSE.txt */; }; + 66991C0F1DBAB4B300C373C0 /* Quakespasm-Music.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C031DBAB47000C373C0 /* Quakespasm-Music.txt */; }; + 66991C101DBAB4B300C373C0 /* Quakespasm.html in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C041DBAB47000C373C0 /* Quakespasm.html */; }; + 66991C111DBAB4B300C373C0 /* Quakespasm.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 66991C051DBAB47000C373C0 /* Quakespasm.txt */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + A4E3AF2A05D43FCC000F1B47 /* libxmp.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + A4E3AF6205D43FCC000F1B47 /* libxmp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + B021C20914A5FF7E003F18D6 /* cfgfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B021C20714A5FF7E003F18D6 /* cfgfile.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 002F39FD09D0883400EBEB88 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A2B427FCC36000E38B7E /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 2A57A2B527FCC36000E38B7E /* SDL2.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A2B627FCC36000E38B7E /* Copy Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 2A57A2B727FCC36000E38B7E /* libFLAC.dylib in Copy Libraries */, + 2A57A2B827FCC36000E38B7E /* libopus.dylib in Copy Libraries */, + 2A57A2B927FCC36000E38B7E /* libopusfile.dylib in Copy Libraries */, + 2A57A2BA27FCC36000E38B7E /* libmad.dylib in Copy Libraries */, + 2A57A2BB27FCC36000E38B7E /* libogg.dylib in Copy Libraries */, + 2A57A2BC27FCC36000E38B7E /* libvorbis.dylib in Copy Libraries */, + 2A57A2BD27FCC36000E38B7E /* libvorbisfile.dylib in Copy Libraries */, + 2A57A2BE27FCC36000E38B7E /* libxmp.dylib in Copy Libraries */, + ); + name = "Copy Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A2BF27FCC36000E38B7E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 2A57A2C027FCC36000E38B7E /* quakespasm.pak in CopyFiles */, + 2A57A2C127FCC36000E38B7E /* LICENSE.txt in CopyFiles */, + 2A57A2C227FCC36000E38B7E /* Quakespasm-Music.txt in CopyFiles */, + 2A57A2C327FCC36000E38B7E /* Quakespasm.html in CopyFiles */, + 2A57A2C427FCC36000E38B7E /* Quakespasm.txt in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A33027FCC36A00E38B7E /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 2A57A33127FCC36A00E38B7E /* SDL2.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A33227FCC36A00E38B7E /* Copy Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 2A57A33327FCC36A00E38B7E /* libFLAC.dylib in Copy Libraries */, + 2A57A33427FCC36A00E38B7E /* libopus.dylib in Copy Libraries */, + 2A57A33527FCC36A00E38B7E /* libopusfile.dylib in Copy Libraries */, + 2A57A33627FCC36A00E38B7E /* libmad.dylib in Copy Libraries */, + 2A57A33727FCC36A00E38B7E /* libogg.dylib in Copy Libraries */, + 2A57A33827FCC36A00E38B7E /* libvorbis.dylib in Copy Libraries */, + 2A57A33927FCC36A00E38B7E /* libvorbisfile.dylib in Copy Libraries */, + 2A57A33A27FCC36A00E38B7E /* libxmp.dylib in Copy Libraries */, + ); + name = "Copy Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A33B27FCC36A00E38B7E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 2A57A33C27FCC36A00E38B7E /* quakespasm.pak in CopyFiles */, + 2A57A33D27FCC36A00E38B7E /* LICENSE.txt in CopyFiles */, + 2A57A33E27FCC36A00E38B7E /* Quakespasm-Music.txt in CopyFiles */, + 2A57A33F27FCC36A00E38B7E /* Quakespasm.html in CopyFiles */, + 2A57A34027FCC36A00E38B7E /* Quakespasm.txt in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 48692C131340A46800A0F098 /* Copy Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 482812FE179C3EFF004E1D61 /* libFLAC.dylib in Copy Libraries */, + 4885A851179740D7000EC703 /* libopus.dylib in Copy Libraries */, + 4885A852179740D7000EC703 /* libopusfile.dylib in Copy Libraries */, + 48E2EC8615FB516600B8D476 /* libmad.dylib in Copy Libraries */, + 48E2EC8715FB516600B8D476 /* libogg.dylib in Copy Libraries */, + 48E2EC8815FB516600B8D476 /* libvorbis.dylib in Copy Libraries */, + 48E2EC8915FB516600B8D476 /* libvorbisfile.dylib in Copy Libraries */, + A4E3AF2A05D43FCC000F1B47 /* libxmp.dylib in Copy Libraries */, + ); + name = "Copy Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; + 664D98EB19CF6B78000D395C /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 664D990719CF6E33000D395C /* SDL2.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 664D98ED19CF6B78000D395C /* Copy Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 664D98EE19CF6B78000D395C /* libFLAC.dylib in Copy Libraries */, + 664D98EF19CF6B78000D395C /* libopus.dylib in Copy Libraries */, + 664D98F019CF6B78000D395C /* libopusfile.dylib in Copy Libraries */, + 664D98F119CF6B78000D395C /* libmad.dylib in Copy Libraries */, + 664D98F219CF6B78000D395C /* libogg.dylib in Copy Libraries */, + 664D98F319CF6B78000D395C /* libvorbis.dylib in Copy Libraries */, + 664D98F419CF6B78000D395C /* libvorbisfile.dylib in Copy Libraries */, + 664D98F519CF6B78000D395C /* libxmp.dylib in Copy Libraries */, + ); + name = "Copy Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; + 66991C001DBAB3F500C373C0 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 66991C071DBAB4A600C373C0 /* quakespasm.pak in CopyFiles */, + 66991C081DBAB4A600C373C0 /* LICENSE.txt in CopyFiles */, + 66991C091DBAB4A600C373C0 /* Quakespasm-Music.txt in CopyFiles */, + 66991C0A1DBAB4A600C373C0 /* Quakespasm.html in CopyFiles */, + 66991C0B1DBAB4A600C373C0 /* Quakespasm.txt in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 66991C0C1DBAB4AF00C373C0 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 66991C0D1DBAB4B300C373C0 /* quakespasm.pak in CopyFiles */, + 66991C0E1DBAB4B300C373C0 /* LICENSE.txt in CopyFiles */, + 66991C0F1DBAB4B300C373C0 /* Quakespasm-Music.txt in CopyFiles */, + 66991C101DBAB4B300C373C0 /* Quakespasm.html in CopyFiles */, + 66991C111DBAB4B300C373C0 /* Quakespasm.txt in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL.framework; sourceTree = SOURCE_ROOT; }; + 002F3A2B09D0888800EBEB88 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = "<group>"; }; + 002F3A2C09D0888800EBEB88 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = "<group>"; }; + 002F3C0009D093BD00EBEB88 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; + 2A57A2C827FCC36000E38B7E /* QuakeSpasm-SDL2-x64.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "QuakeSpasm-SDL2-x64.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2A57A34427FCC36A00E38B7E /* QuakeSpasm-SDL2-M1.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "QuakeSpasm-SDL2-M1.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 48134A1412102F400015BF15 /* net_bsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_bsd.c; path = ../Quake/net_bsd.c; sourceTree = SOURCE_ROOT; }; + 48134A1512102F400015BF15 /* net_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_defs.h; path = ../Quake/net_defs.h; sourceTree = SOURCE_ROOT; }; + 48134A1612102F400015BF15 /* net_udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_udp.c; path = ../Quake/net_udp.c; sourceTree = SOURCE_ROOT; }; + 48134A1712102F400015BF15 /* net_udp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_udp.h; path = ../Quake/net_udp.h; sourceTree = SOURCE_ROOT; }; + 4818B0A112D5B9AE006DD66E /* bgmusic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bgmusic.c; path = ../Quake/bgmusic.c; sourceTree = SOURCE_ROOT; }; + 4818B0A212D5B9AE006DD66E /* bgmusic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bgmusic.h; path = ../Quake/bgmusic.h; sourceTree = SOURCE_ROOT; }; + 4818B0AC12D5B9ED006DD66E /* snd_codec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_codec.c; path = ../Quake/snd_codec.c; sourceTree = SOURCE_ROOT; }; + 4818B0AD12D5B9ED006DD66E /* snd_codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_codec.h; path = ../Quake/snd_codec.h; sourceTree = SOURCE_ROOT; }; + 4818B0AF12D5BA1A006DD66E /* snd_codeci.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_codeci.h; path = ../Quake/snd_codeci.h; sourceTree = SOURCE_ROOT; }; + 4818B0B012D5BA1A006DD66E /* snd_umx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_umx.c; path = ../Quake/snd_umx.c; sourceTree = SOURCE_ROOT; }; + 4818B0B112D5BA1A006DD66E /* snd_mp3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_mp3.h; path = ../Quake/snd_mp3.h; sourceTree = SOURCE_ROOT; }; + 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_vorbis.c; path = ../Quake/snd_vorbis.c; sourceTree = SOURCE_ROOT; }; + 4818B0B312D5BA1A006DD66E /* snd_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_vorbis.h; path = ../Quake/snd_vorbis.h; sourceTree = SOURCE_ROOT; }; + 4818B0B412D5BA1A006DD66E /* snd_wave.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_wave.c; path = ../Quake/snd_wave.c; sourceTree = SOURCE_ROOT; }; + 4818B0B512D5BA1A006DD66E /* snd_wave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_wave.h; path = ../Quake/snd_wave.h; sourceTree = SOURCE_ROOT; }; + 48243B130D33F01A00C29F8F /* main_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = main_sdl.c; path = ../Quake/main_sdl.c; sourceTree = SOURCE_ROOT; }; + 482812FC179C3EF4004E1D61 /* libFLAC.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libFLAC.dylib; path = codecs/lib/libFLAC.dylib; sourceTree = "<group>"; }; + 482812FF179C3F13004E1D61 /* snd_flac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_flac.c; path = ../Quake/snd_flac.c; sourceTree = "<group>"; }; + 48281300179C3F13004E1D61 /* snd_flac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_flac.h; path = ../Quake/snd_flac.h; sourceTree = "<group>"; }; + 483A77E60D2EE97700CB2E4C /* cmd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cmd.h; path = ../Quake/cmd.h; sourceTree = SOURCE_ROOT; }; + 483A77E70D2EE97700CB2E4C /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = ../Quake/common.h; sourceTree = SOURCE_ROOT; }; + 483A77E80D2EE97700CB2E4C /* console.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = console.h; path = ../Quake/console.h; sourceTree = SOURCE_ROOT; }; + 483A77E90D2EE97700CB2E4C /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crc.h; path = ../Quake/crc.h; sourceTree = SOURCE_ROOT; }; + 483A77EA0D2EE97700CB2E4C /* cvar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cvar.h; path = ../Quake/cvar.h; sourceTree = SOURCE_ROOT; }; + 483A77EB0D2EE97700CB2E4C /* mathlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mathlib.h; path = ../Quake/mathlib.h; sourceTree = SOURCE_ROOT; }; + 483A77EC0D2EE97700CB2E4C /* menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = menu.h; path = ../Quake/menu.h; sourceTree = SOURCE_ROOT; }; + 483A77ED0D2EE97700CB2E4C /* pr_comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pr_comp.h; path = ../Quake/pr_comp.h; sourceTree = SOURCE_ROOT; }; + 483A77EE0D2EE97700CB2E4C /* progdefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = progdefs.h; path = ../Quake/progdefs.h; sourceTree = SOURCE_ROOT; }; + 483A77EF0D2EE97700CB2E4C /* progs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = progs.h; path = ../Quake/progs.h; sourceTree = SOURCE_ROOT; }; + 483A77F00D2EE97700CB2E4C /* quakedef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = quakedef.h; path = ../Quake/quakedef.h; sourceTree = SOURCE_ROOT; }; + 483A77F10D2EE97700CB2E4C /* sbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sbar.h; path = ../Quake/sbar.h; sourceTree = SOURCE_ROOT; }; + 483A77F20D2EE97700CB2E4C /* sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sys.h; path = ../Quake/sys.h; sourceTree = SOURCE_ROOT; }; + 483A77F30D2EE97700CB2E4C /* view.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = view.h; path = ../Quake/view.h; sourceTree = SOURCE_ROOT; }; + 483A77F40D2EE97700CB2E4C /* wad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wad.h; path = ../Quake/wad.h; sourceTree = SOURCE_ROOT; }; + 483A77F50D2EE97700CB2E4C /* world.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = world.h; path = ../Quake/world.h; sourceTree = SOURCE_ROOT; }; + 483A77F60D2EE97700CB2E4C /* zone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zone.h; path = ../Quake/zone.h; sourceTree = SOURCE_ROOT; }; + 483A77F70D2EE98D00CB2E4C /* input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = input.h; path = ../Quake/input.h; sourceTree = SOURCE_ROOT; }; + 483A77F80D2EE98D00CB2E4C /* keys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = keys.h; path = ../Quake/keys.h; sourceTree = SOURCE_ROOT; }; + 483A77F90D2EE9A900CB2E4C /* client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = client.h; path = ../Quake/client.h; sourceTree = SOURCE_ROOT; }; + 483A77FA0D2EE9A900CB2E4C /* net.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net.h; path = ../Quake/net.h; sourceTree = SOURCE_ROOT; }; + 483A77FB0D2EE9A900CB2E4C /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = protocol.h; path = ../Quake/protocol.h; sourceTree = SOURCE_ROOT; }; + 483A77FC0D2EE9A900CB2E4C /* server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = server.h; path = ../Quake/server.h; sourceTree = SOURCE_ROOT; }; + 483A77FD0D2EE9BD00CB2E4C /* cdaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cdaudio.h; path = ../Quake/cdaudio.h; sourceTree = SOURCE_ROOT; }; + 483A77FE0D2EE9BD00CB2E4C /* q_sound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = q_sound.h; path = ../Quake/q_sound.h; sourceTree = SOURCE_ROOT; }; + 483A77FF0D2EE9F300CB2E4C /* anorm_dots.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = anorm_dots.h; path = ../Quake/anorm_dots.h; sourceTree = SOURCE_ROOT; }; + 483A78000D2EE9F300CB2E4C /* anorms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = anorms.h; path = ../Quake/anorms.h; sourceTree = SOURCE_ROOT; }; + 483A78010D2EE9F300CB2E4C /* bspfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bspfile.h; path = ../Quake/bspfile.h; sourceTree = SOURCE_ROOT; }; + 483A78030D2EE9F300CB2E4C /* draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = draw.h; path = ../Quake/draw.h; sourceTree = SOURCE_ROOT; }; + 483A78040D2EE9F300CB2E4C /* gl_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl_model.h; path = ../Quake/gl_model.h; sourceTree = SOURCE_ROOT; }; + 483A78050D2EE9F300CB2E4C /* gl_texmgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl_texmgr.h; path = ../Quake/gl_texmgr.h; sourceTree = SOURCE_ROOT; }; + 483A78060D2EE9F300CB2E4C /* gl_warp_sin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl_warp_sin.h; path = ../Quake/gl_warp_sin.h; sourceTree = SOURCE_ROOT; }; + 483A78070D2EE9F300CB2E4C /* glquake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glquake.h; path = ../Quake/glquake.h; sourceTree = SOURCE_ROOT; }; + 483A78080D2EE9F300CB2E4C /* image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = image.h; path = ../Quake/image.h; sourceTree = SOURCE_ROOT; }; + 483A78090D2EE9F300CB2E4C /* modelgen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = modelgen.h; path = ../Quake/modelgen.h; sourceTree = SOURCE_ROOT; }; + 483A780A0D2EE9F300CB2E4C /* render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = render.h; path = ../Quake/render.h; sourceTree = SOURCE_ROOT; }; + 483A780B0D2EE9F300CB2E4C /* screen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = screen.h; path = ../Quake/screen.h; sourceTree = SOURCE_ROOT; }; + 483A780C0D2EE9F300CB2E4C /* spritegn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spritegn.h; path = ../Quake/spritegn.h; sourceTree = SOURCE_ROOT; }; + 483A780D0D2EE9F300CB2E4C /* vid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = vid.h; path = ../Quake/vid.h; sourceTree = SOURCE_ROOT; }; + 483A780E0D2EEA0F00CB2E4C /* progdefs.q1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = progdefs.q1; path = ../Quake/progdefs.q1; sourceTree = SOURCE_ROOT; }; + 483A78100D2EEA5400CB2E4C /* chase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chase.c; path = ../Quake/chase.c; sourceTree = SOURCE_ROOT; }; + 483A78110D2EEA5400CB2E4C /* cmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmd.c; path = ../Quake/cmd.c; sourceTree = SOURCE_ROOT; }; + 483A78120D2EEA5400CB2E4C /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = common.c; path = ../Quake/common.c; sourceTree = SOURCE_ROOT; }; + 483A78130D2EEA5400CB2E4C /* console.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = console.c; path = ../Quake/console.c; sourceTree = SOURCE_ROOT; }; + 483A78140D2EEA5400CB2E4C /* crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = crc.c; path = ../Quake/crc.c; sourceTree = SOURCE_ROOT; }; + 483A78150D2EEA5400CB2E4C /* cvar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cvar.c; path = ../Quake/cvar.c; sourceTree = SOURCE_ROOT; }; + 483A78160D2EEA5400CB2E4C /* host_cmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = host_cmd.c; path = ../Quake/host_cmd.c; sourceTree = SOURCE_ROOT; }; + 483A78170D2EEA5400CB2E4C /* host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = host.c; path = ../Quake/host.c; sourceTree = SOURCE_ROOT; }; + 483A78180D2EEA5400CB2E4C /* mathlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mathlib.c; path = ../Quake/mathlib.c; sourceTree = SOURCE_ROOT; }; + 483A78190D2EEA5400CB2E4C /* menu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = menu.c; path = ../Quake/menu.c; sourceTree = SOURCE_ROOT; }; + 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pr_cmds.c; path = ../Quake/pr_cmds.c; sourceTree = SOURCE_ROOT; }; + 483A781B0D2EEA5400CB2E4C /* pr_edict.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pr_edict.c; path = ../Quake/pr_edict.c; sourceTree = SOURCE_ROOT; }; + 483A781C0D2EEA5400CB2E4C /* pr_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pr_exec.c; path = ../Quake/pr_exec.c; sourceTree = SOURCE_ROOT; }; + 483A781D0D2EEA5400CB2E4C /* sbar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sbar.c; path = ../Quake/sbar.c; sourceTree = SOURCE_ROOT; }; + 483A781F0D2EEA5400CB2E4C /* view.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = view.c; path = ../Quake/view.c; sourceTree = SOURCE_ROOT; }; + 483A78200D2EEA5400CB2E4C /* wad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = wad.c; path = ../Quake/wad.c; sourceTree = SOURCE_ROOT; }; + 483A78210D2EEA5400CB2E4C /* world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = world.c; path = ../Quake/world.c; sourceTree = SOURCE_ROOT; }; + 483A78220D2EEA5400CB2E4C /* zone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = zone.c; path = ../Quake/zone.c; sourceTree = SOURCE_ROOT; }; + 483A78360D2EEA6D00CB2E4C /* in_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = in_sdl.c; path = ../Quake/in_sdl.c; sourceTree = SOURCE_ROOT; }; + 483A78370D2EEA6D00CB2E4C /* keys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = keys.c; path = ../Quake/keys.c; sourceTree = SOURCE_ROOT; }; + 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_demo.c; path = ../Quake/cl_demo.c; sourceTree = SOURCE_ROOT; }; + 483A783B0D2EEAAB00CB2E4C /* cl_input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_input.c; path = ../Quake/cl_input.c; sourceTree = SOURCE_ROOT; }; + 483A783C0D2EEAAB00CB2E4C /* cl_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_main.c; path = ../Quake/cl_main.c; sourceTree = SOURCE_ROOT; }; + 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_parse.c; path = ../Quake/cl_parse.c; sourceTree = SOURCE_ROOT; }; + 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_tent.c; path = ../Quake/cl_tent.c; sourceTree = SOURCE_ROOT; }; + 483A783F0D2EEAAB00CB2E4C /* net_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_main.c; path = ../Quake/net_main.c; sourceTree = SOURCE_ROOT; }; + 483A78410D2EEAAB00CB2E4C /* sv_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_main.c; path = ../Quake/sv_main.c; sourceTree = SOURCE_ROOT; }; + 483A78420D2EEAAB00CB2E4C /* sv_move.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_move.c; path = ../Quake/sv_move.c; sourceTree = SOURCE_ROOT; }; + 483A78430D2EEAAB00CB2E4C /* sv_phys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_phys.c; path = ../Quake/sv_phys.c; sourceTree = SOURCE_ROOT; }; + 483A78440D2EEAAB00CB2E4C /* sv_user.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_user.c; path = ../Quake/sv_user.c; sourceTree = SOURCE_ROOT; }; + 483A78500D2EEAC300CB2E4C /* cd_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cd_sdl.c; path = ../Quake/cd_sdl.c; sourceTree = SOURCE_ROOT; }; + 483A78540D2EEAC300CB2E4C /* snd_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_sdl.c; path = ../Quake/snd_sdl.c; sourceTree = SOURCE_ROOT; }; + 483A785A0D2EEAF000CB2E4C /* gl_draw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_draw.c; path = ../Quake/gl_draw.c; sourceTree = SOURCE_ROOT; }; + 483A785B0D2EEAF000CB2E4C /* gl_fog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_fog.c; path = ../Quake/gl_fog.c; sourceTree = SOURCE_ROOT; }; + 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_mesh.c; path = ../Quake/gl_mesh.c; sourceTree = SOURCE_ROOT; }; + 483A785D0D2EEAF000CB2E4C /* gl_model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_model.c; path = ../Quake/gl_model.c; sourceTree = SOURCE_ROOT; }; + 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_refrag.c; path = ../Quake/gl_refrag.c; sourceTree = SOURCE_ROOT; }; + 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_rlight.c; path = ../Quake/gl_rlight.c; sourceTree = SOURCE_ROOT; }; + 483A78600D2EEAF000CB2E4C /* gl_rmain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_rmain.c; path = ../Quake/gl_rmain.c; sourceTree = SOURCE_ROOT; }; + 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_rmisc.c; path = ../Quake/gl_rmisc.c; sourceTree = SOURCE_ROOT; }; + 483A78620D2EEAF000CB2E4C /* gl_screen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_screen.c; path = ../Quake/gl_screen.c; sourceTree = SOURCE_ROOT; }; + 483A78630D2EEAF000CB2E4C /* gl_sky.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_sky.c; path = ../Quake/gl_sky.c; sourceTree = SOURCE_ROOT; }; + 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mikmod.c; path = ../Quake/snd_mikmod.c; sourceTree = SOURCE_ROOT; }; + 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_texmgr.c; path = ../Quake/gl_texmgr.c; sourceTree = SOURCE_ROOT; }; + 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_vidsdl.c; path = ../Quake/gl_vidsdl.c; sourceTree = SOURCE_ROOT; }; + 483A78670D2EEAF000CB2E4C /* gl_warp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_warp.c; path = ../Quake/gl_warp.c; sourceTree = SOURCE_ROOT; }; + 483A78680D2EEAF000CB2E4C /* image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = image.c; path = ../Quake/image.c; sourceTree = SOURCE_ROOT; }; + 483A78690D2EEAF000CB2E4C /* r_alias.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_alias.c; path = ../Quake/r_alias.c; sourceTree = SOURCE_ROOT; }; + 483A786A0D2EEAF000CB2E4C /* r_brush.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_brush.c; path = ../Quake/r_brush.c; sourceTree = SOURCE_ROOT; }; + 483A786B0D2EEAF000CB2E4C /* r_part.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_part.c; path = ../Quake/r_part.c; sourceTree = SOURCE_ROOT; }; + 483A786C0D2EEAF000CB2E4C /* r_sprite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_sprite.c; path = ../Quake/r_sprite.c; sourceTree = SOURCE_ROOT; }; + 483A786D0D2EEAF000CB2E4C /* r_world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_world.c; path = ../Quake/r_world.c; sourceTree = SOURCE_ROOT; }; + 4846EB500D329BEB00A108DE /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = ../Quake/platform.h; sourceTree = SOURCE_ROOT; }; + 4847CD5E12057F94000B560F /* sys_sdl_unix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sys_sdl_unix.c; path = ../Quake/sys_sdl_unix.c; sourceTree = SOURCE_ROOT; }; + 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = QuakeSpasm.icns; sourceTree = "<group>"; }; + 4854B1B01340C646004C9F45 /* snd_mp3.c */ = {isa = PBXFileReference; comments = "NOTE: snd_mp3.c and snd_mpg123.c are mutually exclusive - build only one."; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mp3.c; path = ../Quake/snd_mp3.c; sourceTree = SOURCE_ROOT; }; + 486577C80D31A22A00E7920A /* snd_dma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_dma.c; path = ../Quake/snd_dma.c; sourceTree = SOURCE_ROOT; }; + 486577C90D31A22A00E7920A /* snd_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mem.c; path = ../Quake/snd_mem.c; sourceTree = SOURCE_ROOT; }; + 486577CA0D31A22A00E7920A /* snd_mix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mix.c; path = ../Quake/snd_mix.c; sourceTree = SOURCE_ROOT; }; + 48728D280D3004A70004D61B /* net_dgrm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_dgrm.c; path = ../Quake/net_dgrm.c; sourceTree = SOURCE_ROOT; }; + 48728D290D3004A80004D61B /* net_dgrm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_dgrm.h; path = ../Quake/net_dgrm.h; sourceTree = SOURCE_ROOT; }; + 48728D2A0D3004A80004D61B /* net_loop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_loop.c; path = ../Quake/net_loop.c; sourceTree = SOURCE_ROOT; }; + 48728D2B0D3004A80004D61B /* net_loop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_loop.h; path = ../Quake/net_loop.h; sourceTree = SOURCE_ROOT; }; + 4885A84A179740A0000EC703 /* snd_opus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_opus.c; path = ../Quake/snd_opus.c; sourceTree = "<group>"; }; + 4885A84B179740A0000EC703 /* snd_opus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_opus.h; path = ../Quake/snd_opus.h; sourceTree = "<group>"; }; + 4885A84D179740CA000EC703 /* libopus.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopus.dylib; path = codecs/lib/libopus.dylib; sourceTree = "<group>"; }; + 4885A84E179740CA000EC703 /* libopusfile.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopusfile.dylib; path = codecs/lib/libopusfile.dylib; sourceTree = "<group>"; }; + 48895DB80D4914A000849ABF /* pl_osx.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = pl_osx.m; path = ../Quake/pl_osx.m; sourceTree = SOURCE_ROOT; }; + 488EF23614B83A370021DD41 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 489D8D2D0D3A630D00AA4471 /* ScreenInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScreenInfo.h; sourceTree = "<group>"; }; + 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScreenInfo.m; sourceTree = "<group>"; }; + 48A7C1F914AA34940011B754 /* strl_fn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = strl_fn.h; path = ../Quake/strl_fn.h; sourceTree = "<group>"; }; + 48A7C1FA14AA34940011B754 /* strlcat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = strlcat.c; path = ../Quake/strlcat.c; sourceTree = "<group>"; }; + 48A7C1FB14AA34940011B754 /* strlcpy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = strlcpy.c; path = ../Quake/strlcpy.c; sourceTree = "<group>"; }; + 48B9E7870D340B1E0001CACF /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Launcher.nib; sourceTree = "<group>"; }; + 48B9E7A50D340BEA0001CACF /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; }; + 48B9E7A60D340BEA0001CACF /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; }; + 48B9E7BE0D340EA80001CACF /* SDLApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLApplication.h; sourceTree = "<group>"; }; + 48B9E7BF0D340EA80001CACF /* SDLApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLApplication.m; sourceTree = "<group>"; }; + 48C85E390D3AD10E00797678 /* QuakeArgument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuakeArgument.h; sourceTree = "<group>"; }; + 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuakeArgument.m; sourceTree = "<group>"; }; + 48E2EC7915FB507A00B8D476 /* libmad.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmad.dylib; path = codecs/lib/libmad.dylib; sourceTree = "<group>"; }; + 48E2EC7A15FB507A00B8D476 /* libogg.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libogg.dylib; path = codecs/lib/libogg.dylib; sourceTree = "<group>"; }; + 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libvorbis.dylib; path = codecs/lib/libvorbis.dylib; sourceTree = "<group>"; }; + 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libvorbisfile.dylib; path = codecs/lib/libvorbisfile.dylib; sourceTree = "<group>"; }; + 48FE58590D3A82C8006BB491 /* QuakeArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuakeArguments.h; sourceTree = "<group>"; }; + 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuakeArguments.m; sourceTree = "<group>"; }; + 6314786D27F1AE850023B20A /* snd_modplug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_modplug.h; path = ../Quake/snd_modplug.h; sourceTree = SOURCE_ROOT; }; + 6314786E27F1AEB20023B20A /* snd_modplug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_modplug.c; path = ../Quake/snd_modplug.c; sourceTree = SOURCE_ROOT; }; + 631F459F26EA4AF60054208C /* snd_mpg123.c */ = {isa = PBXFileReference; comments = "NOTE: snd_mp3.c and snd_mpg123.c are mutually exclusive - build only one."; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mpg123.c; path = ../Quake/snd_mpg123.c; sourceTree = SOURCE_ROOT; }; + 6348AF7D26EA437E00E036E2 /* default_cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = default_cfg.h; path = ../Quake/default_cfg.h; sourceTree = SOURCE_ROOT; }; + 6348AF7E26EA438E00E036E2 /* arch_def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arch_def.h; path = ../Quake/arch_def.h; sourceTree = SOURCE_ROOT; }; + 6348AF7F26EA439C00E036E2 /* filenames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filenames.h; path = ../Quake/filenames.h; sourceTree = SOURCE_ROOT; }; + 6348AF8026EA45A600E036E2 /* lodepng.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lodepng.c; path = ../Quake/lodepng.c; sourceTree = SOURCE_ROOT; }; + 6348AF8126EA45A600E036E2 /* lodepng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lodepng.h; path = ../Quake/lodepng.h; sourceTree = SOURCE_ROOT; }; + 6348AF8426EA45B900E036E2 /* miniz.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = miniz.c; path = ../Quake/miniz.c; sourceTree = SOURCE_ROOT; }; + 6348AF8526EA45B900E036E2 /* miniz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = miniz.h; path = ../Quake/miniz.h; sourceTree = SOURCE_ROOT; }; + 6348AF8826EA466800E036E2 /* net_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_sys.h; path = ../Quake/net_sys.h; sourceTree = SOURCE_ROOT; }; + 6348AF8926EA468900E036E2 /* q_ctype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = q_ctype.h; path = ../Quake/q_ctype.h; sourceTree = SOURCE_ROOT; }; + 6348AF8A26EA469F00E036E2 /* q_stdinc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = q_stdinc.h; path = ../Quake/q_stdinc.h; sourceTree = SOURCE_ROOT; }; + 6348AF8B26EA469F00E036E2 /* qs_bmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qs_bmp.h; path = ../Quake/qs_bmp.h; sourceTree = SOURCE_ROOT; }; + 6348AF8C26EA46B700E036E2 /* snd_mikmod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_mikmod.h; path = ../Quake/snd_mikmod.h; sourceTree = SOURCE_ROOT; }; + 6348AF8D26EA46D300E036E2 /* snd_umx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_umx.h; path = ../Quake/snd_umx.h; sourceTree = SOURCE_ROOT; }; + 6348AF8E26EA46E600E036E2 /* stb_image_write.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_image_write.h; path = ../Quake/stb_image_write.h; sourceTree = SOURCE_ROOT; }; + 6348AF8F26EA46F500E036E2 /* snd_xmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_xmp.c; path = ../Quake/snd_xmp.c; sourceTree = SOURCE_ROOT; }; + 6348AF9026EA46F500E036E2 /* snd_xmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_xmp.h; path = ../Quake/snd_xmp.h; sourceTree = SOURCE_ROOT; }; + 63D6EB3423A255900047028C /* snd_mp3tag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mp3tag.c; path = ../Quake/snd_mp3tag.c; sourceTree = SOURCE_ROOT; }; + 664D98F919CF6B78000D395C /* QuakeSpasm-SDL2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "QuakeSpasm-SDL2.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 664D990519CF6E16000D395C /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL2.framework; sourceTree = SOURCE_ROOT; }; + 66991C021DBAB47000C373C0 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE.txt; path = ../LICENSE.txt; sourceTree = "<group>"; }; + 66991C031DBAB47000C373C0 /* Quakespasm-Music.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "Quakespasm-Music.txt"; path = "../Quakespasm-Music.txt"; sourceTree = "<group>"; }; + 66991C041DBAB47000C373C0 /* Quakespasm.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = Quakespasm.html; path = ../Quakespasm.html; sourceTree = "<group>"; }; + 66991C051DBAB47000C373C0 /* Quakespasm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = Quakespasm.txt; path = ../Quakespasm.txt; sourceTree = "<group>"; }; + 66991C061DBAB48000C373C0 /* quakespasm.pak */ = {isa = PBXFileReference; lastKnownFileType = file; name = quakespasm.pak; path = ../Quake/quakespasm.pak; sourceTree = "<group>"; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; + 8D1107320486CEB800E47090 /* QuakeSpasm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuakeSpasm.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B021C20714A5FF7E003F18D6 /* cfgfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cfgfile.c; path = ../Quake/cfgfile.c; sourceTree = SOURCE_ROOT; }; + B021C20814A5FF7E003F18D6 /* cfgfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cfgfile.h; path = ../Quake/cfgfile.h; sourceTree = SOURCE_ROOT; }; + F5F5DE80017CB4370103A810 /* libxmp.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxmp.dylib; path = codecs/lib/libxmp.dylib; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2A57A2A727FCC36000E38B7E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A57A2A827FCC36000E38B7E /* libFLAC.dylib in Frameworks */, + 2A57A2A927FCC36000E38B7E /* libopus.dylib in Frameworks */, + 2A57A2AA27FCC36000E38B7E /* libopusfile.dylib in Frameworks */, + 2A57A2AB27FCC36000E38B7E /* libmad.dylib in Frameworks */, + 2A57A2AC27FCC36000E38B7E /* libogg.dylib in Frameworks */, + 2A57A2AD27FCC36000E38B7E /* libvorbis.dylib in Frameworks */, + 2A57A2AE27FCC36000E38B7E /* libvorbisfile.dylib in Frameworks */, + 2A57A2AF27FCC36000E38B7E /* libxmp.dylib in Frameworks */, + 2A57A2B027FCC36000E38B7E /* IOKit.framework in Frameworks */, + 2A57A2B127FCC36000E38B7E /* Cocoa.framework in Frameworks */, + 2A57A2B227FCC36000E38B7E /* OpenGL.framework in Frameworks */, + 2A57A2B327FCC36000E38B7E /* SDL2.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A32327FCC36A00E38B7E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A57A32427FCC36A00E38B7E /* libFLAC.dylib in Frameworks */, + 2A57A32527FCC36A00E38B7E /* libopus.dylib in Frameworks */, + 2A57A32627FCC36A00E38B7E /* libopusfile.dylib in Frameworks */, + 2A57A32727FCC36A00E38B7E /* libmad.dylib in Frameworks */, + 2A57A32827FCC36A00E38B7E /* libogg.dylib in Frameworks */, + 2A57A32927FCC36A00E38B7E /* libvorbis.dylib in Frameworks */, + 2A57A32A27FCC36A00E38B7E /* libvorbisfile.dylib in Frameworks */, + 2A57A32B27FCC36A00E38B7E /* libxmp.dylib in Frameworks */, + 2A57A32C27FCC36A00E38B7E /* IOKit.framework in Frameworks */, + 2A57A32D27FCC36A00E38B7E /* Cocoa.framework in Frameworks */, + 2A57A32E27FCC36A00E38B7E /* OpenGL.framework in Frameworks */, + 2A57A32F27FCC36A00E38B7E /* SDL2.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 664D98DD19CF6B78000D395C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 664D98DE19CF6B78000D395C /* libFLAC.dylib in Frameworks */, + 664D98DF19CF6B78000D395C /* libopus.dylib in Frameworks */, + 664D98E019CF6B78000D395C /* libopusfile.dylib in Frameworks */, + 664D98E119CF6B78000D395C /* libmad.dylib in Frameworks */, + 664D98E219CF6B78000D395C /* libogg.dylib in Frameworks */, + 664D98E319CF6B78000D395C /* libvorbis.dylib in Frameworks */, + 664D98E419CF6B78000D395C /* libvorbisfile.dylib in Frameworks */, + 664D98E519CF6B78000D395C /* libxmp.dylib in Frameworks */, + 664D98E619CF6B78000D395C /* IOKit.framework in Frameworks */, + 664D98E919CF6B78000D395C /* Cocoa.framework in Frameworks */, + 664D98EA19CF6B78000D395C /* OpenGL.framework in Frameworks */, + 664D990619CF6E16000D395C /* SDL2.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 482812FD179C3EF4004E1D61 /* libFLAC.dylib in Frameworks */, + 4885A84F179740CA000EC703 /* libopus.dylib in Frameworks */, + 4885A850179740CA000EC703 /* libopusfile.dylib in Frameworks */, + 48E2EC7D15FB507A00B8D476 /* libmad.dylib in Frameworks */, + 48E2EC7E15FB507A00B8D476 /* libogg.dylib in Frameworks */, + 48E2EC7F15FB507A00B8D476 /* libvorbis.dylib in Frameworks */, + 48E2EC8015FB507A00B8D476 /* libvorbisfile.dylib in Frameworks */, + A4E3AF6205D43FCC000F1B47 /* libxmp.dylib in Frameworks */, + 48E2EC7815FB500400B8D476 /* IOKit.framework in Frameworks */, + 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */, + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 002F3C0109D093BD00EBEB88 /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 488EF23614B83A370021DD41 /* IOKit.framework */, + 664D990519CF6E16000D395C /* SDL2.framework */, + 002F39F909D0881F00EBEB88 /* SDL.framework */, + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 002F3C0009D093BD00EBEB88 /* OpenGL.framework */, + ); + name = "Linked Frameworks"; + sourceTree = "<group>"; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = "<group>"; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* QuakeSpasm.app */, + 664D98F919CF6B78000D395C /* QuakeSpasm-SDL2.app */, + 2A57A2C827FCC36000E38B7E /* QuakeSpasm-SDL2-x64.app */, + 2A57A34427FCC36A00E38B7E /* QuakeSpasm-SDL2-M1.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 29B97314FDCFA39411CA2CEA /* QuakeSpasm */ = { + isa = PBXGroup; + children = ( + 482812FC179C3EF4004E1D61 /* libFLAC.dylib */, + 4885A84D179740CA000EC703 /* libopus.dylib */, + 4885A84E179740CA000EC703 /* libopusfile.dylib */, + 48E2EC7915FB507A00B8D476 /* libmad.dylib */, + 48E2EC7A15FB507A00B8D476 /* libogg.dylib */, + 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */, + 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */, + F5F5DE80017CB4370103A810 /* libxmp.dylib */, + 48243B060D33ED0A00C29F8F /* MacOSX */, + 483A77D80D2EE8C500CB2E4C /* Quake */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 66991C011DBAB43000C373C0 /* Release Archive Files */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + indentWidth = 8; + name = QuakeSpasm; + sourceTree = "<group>"; + tabWidth = 8; + usesTabs = 1; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */, + 48B9E7860D340B1E0001CACF /* Launcher.nib */, + 8D1107310486CEB800E47090 /* Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; + 48243B060D33ED0A00C29F8F /* MacOSX */ = { + isa = PBXGroup; + children = ( + 48B9E7A50D340BEA0001CACF /* AppController.h */, + 48B9E7A60D340BEA0001CACF /* AppController.m */, + 48FE58590D3A82C8006BB491 /* QuakeArguments.h */, + 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */, + 489D8D2D0D3A630D00AA4471 /* ScreenInfo.h */, + 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */, + 48B9E7BE0D340EA80001CACF /* SDLApplication.h */, + 48B9E7BF0D340EA80001CACF /* SDLApplication.m */, + 002F3A2B09D0888800EBEB88 /* SDLMain.h */, + 002F3A2C09D0888800EBEB88 /* SDLMain.m */, + 48C85E390D3AD10E00797678 /* QuakeArgument.h */, + 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */, + ); + name = MacOSX; + sourceTree = "<group>"; + }; + 483A77D80D2EE8C500CB2E4C /* Quake */ = { + isa = PBXGroup; + children = ( + 483A77D90D2EE8D400CB2E4C /* Generic */, + 483A77DA0D2EE8DA00CB2E4C /* Input */, + 483A77DD0D2EE8F100CB2E4C /* Network */, + 483A77DC0D2EE8ED00CB2E4C /* Sound */, + 483A77DB0D2EE8E600CB2E4C /* Video */, + ); + name = Quake; + sourceTree = "<group>"; + }; + 483A77D90D2EE8D400CB2E4C /* Generic */ = { + isa = PBXGroup; + children = ( + 483A77DE0D2EE8FB00CB2E4C /* Headers */, + B021C20714A5FF7E003F18D6 /* cfgfile.c */, + 483A78100D2EEA5400CB2E4C /* chase.c */, + 483A78110D2EEA5400CB2E4C /* cmd.c */, + 483A78120D2EEA5400CB2E4C /* common.c */, + 483A78130D2EEA5400CB2E4C /* console.c */, + 483A78140D2EEA5400CB2E4C /* crc.c */, + 6348AF8426EA45B900E036E2 /* miniz.c */, + 483A78150D2EEA5400CB2E4C /* cvar.c */, + 483A78170D2EEA5400CB2E4C /* host.c */, + 483A78160D2EEA5400CB2E4C /* host_cmd.c */, + 48243B130D33F01A00C29F8F /* main_sdl.c */, + 483A78180D2EEA5400CB2E4C /* mathlib.c */, + 483A78190D2EEA5400CB2E4C /* menu.c */, + 48895DB80D4914A000849ABF /* pl_osx.m */, + 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */, + 483A781B0D2EEA5400CB2E4C /* pr_edict.c */, + 483A781C0D2EEA5400CB2E4C /* pr_exec.c */, + 483A780E0D2EEA0F00CB2E4C /* progdefs.q1 */, + 483A781D0D2EEA5400CB2E4C /* sbar.c */, + 48A7C1FA14AA34940011B754 /* strlcat.c */, + 48A7C1FB14AA34940011B754 /* strlcpy.c */, + 4847CD5E12057F94000B560F /* sys_sdl_unix.c */, + 483A781F0D2EEA5400CB2E4C /* view.c */, + 483A78200D2EEA5400CB2E4C /* wad.c */, + 483A78210D2EEA5400CB2E4C /* world.c */, + 483A78220D2EEA5400CB2E4C /* zone.c */, + ); + name = Generic; + sourceTree = "<group>"; + }; + 483A77DA0D2EE8DA00CB2E4C /* Input */ = { + isa = PBXGroup; + children = ( + 483A77DF0D2EE90500CB2E4C /* Headers */, + 483A78360D2EEA6D00CB2E4C /* in_sdl.c */, + 483A78370D2EEA6D00CB2E4C /* keys.c */, + ); + name = Input; + sourceTree = "<group>"; + }; + 483A77DB0D2EE8E600CB2E4C /* Video */ = { + isa = PBXGroup; + children = ( + 483A77E20D2EE91500CB2E4C /* Headers */, + 483A785A0D2EEAF000CB2E4C /* gl_draw.c */, + 483A785B0D2EEAF000CB2E4C /* gl_fog.c */, + 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */, + 483A785D0D2EEAF000CB2E4C /* gl_model.c */, + 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */, + 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */, + 483A78600D2EEAF000CB2E4C /* gl_rmain.c */, + 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */, + 483A78620D2EEAF000CB2E4C /* gl_screen.c */, + 483A78630D2EEAF000CB2E4C /* gl_sky.c */, + 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */, + 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */, + 483A78670D2EEAF000CB2E4C /* gl_warp.c */, + 483A78680D2EEAF000CB2E4C /* image.c */, + 6348AF8026EA45A600E036E2 /* lodepng.c */, + 483A78690D2EEAF000CB2E4C /* r_alias.c */, + 483A786A0D2EEAF000CB2E4C /* r_brush.c */, + 483A786B0D2EEAF000CB2E4C /* r_part.c */, + 483A786C0D2EEAF000CB2E4C /* r_sprite.c */, + 483A786D0D2EEAF000CB2E4C /* r_world.c */, + ); + name = Video; + sourceTree = "<group>"; + }; + 483A77DC0D2EE8ED00CB2E4C /* Sound */ = { + isa = PBXGroup; + children = ( + 483A77E10D2EE91000CB2E4C /* Headers */, + 4818B0A112D5B9AE006DD66E /* bgmusic.c */, + 483A78500D2EEAC300CB2E4C /* cd_sdl.c */, + 4818B0AC12D5B9ED006DD66E /* snd_codec.c */, + 486577C80D31A22A00E7920A /* snd_dma.c */, + 482812FF179C3F13004E1D61 /* snd_flac.c */, + 486577C90D31A22A00E7920A /* snd_mem.c */, + 486577CA0D31A22A00E7920A /* snd_mix.c */, + 483A78540D2EEAC300CB2E4C /* snd_sdl.c */, + 4854B1B01340C646004C9F45 /* snd_mp3.c */, + 631F459F26EA4AF60054208C /* snd_mpg123.c */, + 63D6EB3423A255900047028C /* snd_mp3tag.c */, + 4885A84A179740A0000EC703 /* snd_opus.c */, + 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */, + 6314786E27F1AEB20023B20A /* snd_modplug.c */, + 6348AF8F26EA46F500E036E2 /* snd_xmp.c */, + 4818B0B012D5BA1A006DD66E /* snd_umx.c */, + 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */, + 4818B0B412D5BA1A006DD66E /* snd_wave.c */, + ); + name = Sound; + sourceTree = "<group>"; + }; + 483A77DD0D2EE8F100CB2E4C /* Network */ = { + isa = PBXGroup; + children = ( + 483A77E00D2EE90B00CB2E4C /* Headers */, + 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */, + 483A783B0D2EEAAB00CB2E4C /* cl_input.c */, + 483A783C0D2EEAAB00CB2E4C /* cl_main.c */, + 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */, + 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */, + 48134A1412102F400015BF15 /* net_bsd.c */, + 48728D280D3004A70004D61B /* net_dgrm.c */, + 48728D2A0D3004A80004D61B /* net_loop.c */, + 483A783F0D2EEAAB00CB2E4C /* net_main.c */, + 48134A1612102F400015BF15 /* net_udp.c */, + 483A78410D2EEAAB00CB2E4C /* sv_main.c */, + 483A78420D2EEAAB00CB2E4C /* sv_move.c */, + 483A78430D2EEAAB00CB2E4C /* sv_phys.c */, + 483A78440D2EEAAB00CB2E4C /* sv_user.c */, + ); + name = Network; + sourceTree = "<group>"; + }; + 483A77DE0D2EE8FB00CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 6348AF7E26EA438E00E036E2 /* arch_def.h */, + B021C20814A5FF7E003F18D6 /* cfgfile.h */, + 483A77E60D2EE97700CB2E4C /* cmd.h */, + 483A77E70D2EE97700CB2E4C /* common.h */, + 483A77E80D2EE97700CB2E4C /* console.h */, + 483A77E90D2EE97700CB2E4C /* crc.h */, + 6348AF8526EA45B900E036E2 /* miniz.h */, + 483A77EA0D2EE97700CB2E4C /* cvar.h */, + 6348AF7D26EA437E00E036E2 /* default_cfg.h */, + 6348AF7F26EA439C00E036E2 /* filenames.h */, + 483A77EB0D2EE97700CB2E4C /* mathlib.h */, + 483A77EC0D2EE97700CB2E4C /* menu.h */, + 4846EB500D329BEB00A108DE /* platform.h */, + 483A77ED0D2EE97700CB2E4C /* pr_comp.h */, + 483A77EE0D2EE97700CB2E4C /* progdefs.h */, + 483A77EF0D2EE97700CB2E4C /* progs.h */, + 483A77F00D2EE97700CB2E4C /* quakedef.h */, + 6348AF8926EA468900E036E2 /* q_ctype.h */, + 6348AF8A26EA469F00E036E2 /* q_stdinc.h */, + 483A77F10D2EE97700CB2E4C /* sbar.h */, + 48A7C1F914AA34940011B754 /* strl_fn.h */, + 483A77F20D2EE97700CB2E4C /* sys.h */, + 483A77F30D2EE97700CB2E4C /* view.h */, + 483A77F40D2EE97700CB2E4C /* wad.h */, + 483A77F50D2EE97700CB2E4C /* world.h */, + 483A77F60D2EE97700CB2E4C /* zone.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77DF0D2EE90500CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 483A77F70D2EE98D00CB2E4C /* input.h */, + 483A77F80D2EE98D00CB2E4C /* keys.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77E00D2EE90B00CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 483A77F90D2EE9A900CB2E4C /* client.h */, + 483A77FA0D2EE9A900CB2E4C /* net.h */, + 48134A1512102F400015BF15 /* net_defs.h */, + 48728D290D3004A80004D61B /* net_dgrm.h */, + 48728D2B0D3004A80004D61B /* net_loop.h */, + 48134A1712102F400015BF15 /* net_udp.h */, + 6348AF8826EA466800E036E2 /* net_sys.h */, + 483A77FB0D2EE9A900CB2E4C /* protocol.h */, + 483A77FC0D2EE9A900CB2E4C /* server.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77E10D2EE91000CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 4818B0A212D5B9AE006DD66E /* bgmusic.h */, + 483A77FD0D2EE9BD00CB2E4C /* cdaudio.h */, + 483A77FE0D2EE9BD00CB2E4C /* q_sound.h */, + 4818B0AD12D5B9ED006DD66E /* snd_codec.h */, + 4818B0AF12D5BA1A006DD66E /* snd_codeci.h */, + 6348AF8C26EA46B700E036E2 /* snd_mikmod.h */, + 6314786D27F1AE850023B20A /* snd_modplug.h */, + 6348AF9026EA46F500E036E2 /* snd_xmp.h */, + 6348AF8D26EA46D300E036E2 /* snd_umx.h */, + 48281300179C3F13004E1D61 /* snd_flac.h */, + 4818B0B112D5BA1A006DD66E /* snd_mp3.h */, + 4885A84B179740A0000EC703 /* snd_opus.h */, + 4818B0B312D5BA1A006DD66E /* snd_vorbis.h */, + 4818B0B512D5BA1A006DD66E /* snd_wave.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77E20D2EE91500CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 483A77FF0D2EE9F300CB2E4C /* anorm_dots.h */, + 483A78000D2EE9F300CB2E4C /* anorms.h */, + 483A78010D2EE9F300CB2E4C /* bspfile.h */, + 483A78030D2EE9F300CB2E4C /* draw.h */, + 483A78040D2EE9F300CB2E4C /* gl_model.h */, + 483A78050D2EE9F300CB2E4C /* gl_texmgr.h */, + 483A78060D2EE9F300CB2E4C /* gl_warp_sin.h */, + 483A78070D2EE9F300CB2E4C /* glquake.h */, + 483A78080D2EE9F300CB2E4C /* image.h */, + 6348AF8126EA45A600E036E2 /* lodepng.h */, + 6348AF8E26EA46E600E036E2 /* stb_image_write.h */, + 483A78090D2EE9F300CB2E4C /* modelgen.h */, + 483A780A0D2EE9F300CB2E4C /* render.h */, + 483A780B0D2EE9F300CB2E4C /* screen.h */, + 483A780C0D2EE9F300CB2E4C /* spritegn.h */, + 483A780D0D2EE9F300CB2E4C /* vid.h */, + 6348AF8B26EA469F00E036E2 /* qs_bmp.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 66991C011DBAB43000C373C0 /* Release Archive Files */ = { + isa = PBXGroup; + children = ( + 66991C061DBAB48000C373C0 /* quakespasm.pak */, + 66991C021DBAB47000C373C0 /* LICENSE.txt */, + 66991C031DBAB47000C373C0 /* Quakespasm-Music.txt */, + 66991C041DBAB47000C373C0 /* Quakespasm.html */, + 66991C051DBAB47000C373C0 /* Quakespasm.txt */, + ); + name = "Release Archive Files"; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2A57A24E27FCC36000E38B7E /* QuakeSpasm-SDL2-x64 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2A57A2C527FCC36000E38B7E /* Build configuration list for PBXNativeTarget "QuakeSpasm-SDL2-x64" */; + buildPhases = ( + 2A57A24F27FCC36000E38B7E /* Resources */, + 2A57A25327FCC36000E38B7E /* Sources */, + 2A57A2A727FCC36000E38B7E /* Frameworks */, + 2A57A2B427FCC36000E38B7E /* Copy Frameworks */, + 2A57A2B627FCC36000E38B7E /* Copy Libraries */, + 2A57A2BF27FCC36000E38B7E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "QuakeSpasm-SDL2-x64"; + productInstallPath = "$(HOME)/Applications"; + productName = QuakeSpasm; + productReference = 2A57A2C827FCC36000E38B7E /* QuakeSpasm-SDL2-x64.app */; + productType = "com.apple.product-type.application"; + }; + 2A57A2CA27FCC36A00E38B7E /* QuakeSpasm-SDL2-M1 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2A57A34127FCC36A00E38B7E /* Build configuration list for PBXNativeTarget "QuakeSpasm-SDL2-M1" */; + buildPhases = ( + 2A57A2CB27FCC36A00E38B7E /* Resources */, + 2A57A2CF27FCC36A00E38B7E /* Sources */, + 2A57A32327FCC36A00E38B7E /* Frameworks */, + 2A57A33027FCC36A00E38B7E /* Copy Frameworks */, + 2A57A33227FCC36A00E38B7E /* Copy Libraries */, + 2A57A33B27FCC36A00E38B7E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "QuakeSpasm-SDL2-M1"; + productInstallPath = "$(HOME)/Applications"; + productName = QuakeSpasm; + productReference = 2A57A34427FCC36A00E38B7E /* QuakeSpasm-SDL2-M1.app */; + productType = "com.apple.product-type.application"; + }; + 664D988819CF6B78000D395C /* QuakeSpasm-SDL2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 664D98F619CF6B78000D395C /* Build configuration list for PBXNativeTarget "QuakeSpasm-SDL2" */; + buildPhases = ( + 664D988919CF6B78000D395C /* Resources */, + 664D988D19CF6B78000D395C /* Sources */, + 664D98DD19CF6B78000D395C /* Frameworks */, + 664D98EB19CF6B78000D395C /* Copy Frameworks */, + 664D98ED19CF6B78000D395C /* Copy Libraries */, + 66991C001DBAB3F500C373C0 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "QuakeSpasm-SDL2"; + productInstallPath = "$(HOME)/Applications"; + productName = QuakeSpasm; + productReference = 664D98F919CF6B78000D395C /* QuakeSpasm-SDL2.app */; + productType = "com.apple.product-type.application"; + }; + 8D1107260486CEB800E47090 /* QuakeSpasm */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "QuakeSpasm" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + 002F39FD09D0883400EBEB88 /* Copy Frameworks */, + 48692C131340A46800A0F098 /* Copy Libraries */, + 66991C0C1DBAB4AF00C373C0 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = QuakeSpasm; + productInstallPath = "$(HOME)/Applications"; + productName = QuakeSpasm; + productReference = 8D1107320486CEB800E47090 /* QuakeSpasm.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0420; + }; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "QuakeSpasm" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* QuakeSpasm */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* QuakeSpasm */, + 664D988819CF6B78000D395C /* QuakeSpasm-SDL2 */, + 2A57A24E27FCC36000E38B7E /* QuakeSpasm-SDL2-x64 */, + 2A57A2CA27FCC36A00E38B7E /* QuakeSpasm-SDL2-M1 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2A57A24F27FCC36000E38B7E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A57A25027FCC36000E38B7E /* InfoPlist.strings in Resources */, + 2A57A25127FCC36000E38B7E /* Launcher.nib in Resources */, + 2A57A25227FCC36000E38B7E /* QuakeSpasm.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A2CB27FCC36A00E38B7E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A57A2CC27FCC36A00E38B7E /* InfoPlist.strings in Resources */, + 2A57A2CD27FCC36A00E38B7E /* Launcher.nib in Resources */, + 2A57A2CE27FCC36A00E38B7E /* QuakeSpasm.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 664D988919CF6B78000D395C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 664D988A19CF6B78000D395C /* InfoPlist.strings in Resources */, + 664D988B19CF6B78000D395C /* Launcher.nib in Resources */, + 664D988C19CF6B78000D395C /* QuakeSpasm.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 48B9E7880D340B1E0001CACF /* Launcher.nib in Resources */, + 484AA4B40D3FF6C0005D917A /* QuakeSpasm.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2A57A25327FCC36000E38B7E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A57A25427FCC36000E38B7E /* SDLMain.m in Sources */, + 2A57A25527FCC36000E38B7E /* chase.c in Sources */, + 2A57A25627FCC36000E38B7E /* cmd.c in Sources */, + 2A57A25727FCC36000E38B7E /* common.c in Sources */, + 2A57A25827FCC36000E38B7E /* console.c in Sources */, + 2A57A25927FCC36000E38B7E /* crc.c in Sources */, + 2A57A25A27FCC36000E38B7E /* cvar.c in Sources */, + 2A57A25B27FCC36000E38B7E /* host_cmd.c in Sources */, + 2A57A25C27FCC36000E38B7E /* host.c in Sources */, + 2A57A25D27FCC36000E38B7E /* mathlib.c in Sources */, + 2A57A25E27FCC36000E38B7E /* menu.c in Sources */, + 2A57A25F27FCC36000E38B7E /* pr_cmds.c in Sources */, + 2A57A26027FCC36000E38B7E /* pr_edict.c in Sources */, + 2A57A26127FCC36000E38B7E /* pr_exec.c in Sources */, + 2A57A26227FCC36000E38B7E /* sbar.c in Sources */, + 2A57A26327FCC36000E38B7E /* view.c in Sources */, + 2A57A26427FCC36000E38B7E /* wad.c in Sources */, + 2A57A26527FCC36000E38B7E /* world.c in Sources */, + 2A57A26627FCC36000E38B7E /* zone.c in Sources */, + 2A57A26727FCC36000E38B7E /* in_sdl.c in Sources */, + 2A57A26827FCC36000E38B7E /* keys.c in Sources */, + 2A57A26927FCC36000E38B7E /* cl_demo.c in Sources */, + 2A57A26A27FCC36000E38B7E /* cl_input.c in Sources */, + 2A57A26B27FCC36000E38B7E /* cl_main.c in Sources */, + 2A57A26C27FCC36000E38B7E /* cl_parse.c in Sources */, + 2A57A26D27FCC36000E38B7E /* cl_tent.c in Sources */, + 2A57A26E27FCC36000E38B7E /* net_main.c in Sources */, + 2A57A26F27FCC36000E38B7E /* sv_main.c in Sources */, + 2A57A27027FCC36000E38B7E /* sv_move.c in Sources */, + 2A57A27127FCC36000E38B7E /* sv_phys.c in Sources */, + 2A57A27227FCC36000E38B7E /* sv_user.c in Sources */, + 2A57A27327FCC36000E38B7E /* cd_sdl.c in Sources */, + 2A57A27427FCC36000E38B7E /* snd_sdl.c in Sources */, + 2A57A27527FCC36000E38B7E /* gl_draw.c in Sources */, + 2A57A27627FCC36000E38B7E /* gl_fog.c in Sources */, + 2A57A27727FCC36000E38B7E /* gl_mesh.c in Sources */, + 2A57A27827FCC36000E38B7E /* gl_model.c in Sources */, + 2A57A27927FCC36000E38B7E /* gl_refrag.c in Sources */, + 2A57A27A27FCC36000E38B7E /* gl_rlight.c in Sources */, + 2A57A27B27FCC36000E38B7E /* gl_rmain.c in Sources */, + 2A57A27C27FCC36000E38B7E /* gl_rmisc.c in Sources */, + 2A57A27D27FCC36000E38B7E /* gl_screen.c in Sources */, + 2A57A27E27FCC36000E38B7E /* gl_sky.c in Sources */, + 2A57A27F27FCC36000E38B7E /* gl_texmgr.c in Sources */, + 2A57A28027FCC36000E38B7E /* gl_vidsdl.c in Sources */, + 2A57A28127FCC36000E38B7E /* gl_warp.c in Sources */, + 2A57A28227FCC36000E38B7E /* image.c in Sources */, + 2A57A28327FCC36000E38B7E /* r_alias.c in Sources */, + 2A57A28427FCC36000E38B7E /* r_brush.c in Sources */, + 2A57A28527FCC36000E38B7E /* r_part.c in Sources */, + 2A57A28627FCC36000E38B7E /* r_sprite.c in Sources */, + 2A57A28727FCC36000E38B7E /* r_world.c in Sources */, + 2A57A28827FCC36000E38B7E /* net_dgrm.c in Sources */, + 2A57A28927FCC36000E38B7E /* net_loop.c in Sources */, + 2A57A28A27FCC36000E38B7E /* snd_dma.c in Sources */, + 2A57A28B27FCC36000E38B7E /* snd_mem.c in Sources */, + 2A57A28C27FCC36000E38B7E /* snd_mix.c in Sources */, + 2A57A28D27FCC36000E38B7E /* main_sdl.c in Sources */, + 2A57A28E27FCC36000E38B7E /* AppController.m in Sources */, + 2A57A28F27FCC36000E38B7E /* SDLApplication.m in Sources */, + 2A57A29027FCC36000E38B7E /* ScreenInfo.m in Sources */, + 2A57A29127FCC36000E38B7E /* QuakeArguments.m in Sources */, + 2A57A29227FCC36000E38B7E /* QuakeArgument.m in Sources */, + 2A57A29327FCC36000E38B7E /* pl_osx.m in Sources */, + 2A57A29427FCC36000E38B7E /* sys_sdl_unix.c in Sources */, + 2A57A29527FCC36000E38B7E /* net_bsd.c in Sources */, + 2A57A29627FCC36000E38B7E /* net_udp.c in Sources */, + 2A57A29727FCC36000E38B7E /* bgmusic.c in Sources */, + 2A57A29827FCC36000E38B7E /* snd_codec.c in Sources */, + 2A57A29927FCC36000E38B7E /* snd_vorbis.c in Sources */, + 2A57A29A27FCC36000E38B7E /* snd_wave.c in Sources */, + 2A57A29B27FCC36000E38B7E /* snd_mp3.c in Sources */, + 2A57A29C27FCC36000E38B7E /* snd_mikmod.c in Sources */, + 2A57A29D27FCC36000E38B7E /* snd_umx.c in Sources */, + 2A57A29E27FCC36000E38B7E /* cfgfile.c in Sources */, + 2A57A29F27FCC36000E38B7E /* strlcat.c in Sources */, + 2A57A2A027FCC36000E38B7E /* strlcpy.c in Sources */, + 2A57A2A127FCC36000E38B7E /* snd_opus.c in Sources */, + 2A57A2A227FCC36000E38B7E /* snd_flac.c in Sources */, + 2A57A2A327FCC36000E38B7E /* snd_mp3tag.c in Sources */, + 2A57A2A427FCC36000E38B7E /* miniz.c in Sources */, + 2A57A2A527FCC36000E38B7E /* snd_xmp.c in Sources */, + 2A57A2A627FCC36000E38B7E /* snd_modplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2A57A2CF27FCC36A00E38B7E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A57A2D027FCC36A00E38B7E /* SDLMain.m in Sources */, + 2A57A2D127FCC36A00E38B7E /* chase.c in Sources */, + 2A57A2D227FCC36A00E38B7E /* cmd.c in Sources */, + 2A57A2D327FCC36A00E38B7E /* common.c in Sources */, + 2A57A2D427FCC36A00E38B7E /* console.c in Sources */, + 2A57A2D527FCC36A00E38B7E /* crc.c in Sources */, + 2A57A2D627FCC36A00E38B7E /* cvar.c in Sources */, + 2A57A2D727FCC36A00E38B7E /* host_cmd.c in Sources */, + 2A57A2D827FCC36A00E38B7E /* host.c in Sources */, + 2A57A2D927FCC36A00E38B7E /* mathlib.c in Sources */, + 2A57A2DA27FCC36A00E38B7E /* menu.c in Sources */, + 2A57A2DB27FCC36A00E38B7E /* pr_cmds.c in Sources */, + 2A57A2DC27FCC36A00E38B7E /* pr_edict.c in Sources */, + 2A57A2DD27FCC36A00E38B7E /* pr_exec.c in Sources */, + 2A57A2DE27FCC36A00E38B7E /* sbar.c in Sources */, + 2A57A2DF27FCC36A00E38B7E /* view.c in Sources */, + 2A57A2E027FCC36A00E38B7E /* wad.c in Sources */, + 2A57A2E127FCC36A00E38B7E /* world.c in Sources */, + 2A57A2E227FCC36A00E38B7E /* zone.c in Sources */, + 2A57A2E327FCC36A00E38B7E /* in_sdl.c in Sources */, + 2A57A2E427FCC36A00E38B7E /* keys.c in Sources */, + 2A57A2E527FCC36A00E38B7E /* cl_demo.c in Sources */, + 2A57A2E627FCC36A00E38B7E /* cl_input.c in Sources */, + 2A57A2E727FCC36A00E38B7E /* cl_main.c in Sources */, + 2A57A2E827FCC36A00E38B7E /* cl_parse.c in Sources */, + 2A57A2E927FCC36A00E38B7E /* cl_tent.c in Sources */, + 2A57A2EA27FCC36A00E38B7E /* net_main.c in Sources */, + 2A57A2EB27FCC36A00E38B7E /* sv_main.c in Sources */, + 2A57A2EC27FCC36A00E38B7E /* sv_move.c in Sources */, + 2A57A2ED27FCC36A00E38B7E /* sv_phys.c in Sources */, + 2A57A2EE27FCC36A00E38B7E /* sv_user.c in Sources */, + 2A57A2EF27FCC36A00E38B7E /* cd_sdl.c in Sources */, + 2A57A2F027FCC36A00E38B7E /* snd_sdl.c in Sources */, + 2A57A2F127FCC36A00E38B7E /* gl_draw.c in Sources */, + 2A57A2F227FCC36A00E38B7E /* gl_fog.c in Sources */, + 2A57A2F327FCC36A00E38B7E /* gl_mesh.c in Sources */, + 2A57A2F427FCC36A00E38B7E /* gl_model.c in Sources */, + 2A57A2F527FCC36A00E38B7E /* gl_refrag.c in Sources */, + 2A57A2F627FCC36A00E38B7E /* gl_rlight.c in Sources */, + 2A57A2F727FCC36A00E38B7E /* gl_rmain.c in Sources */, + 2A57A2F827FCC36A00E38B7E /* gl_rmisc.c in Sources */, + 2A57A2F927FCC36A00E38B7E /* gl_screen.c in Sources */, + 2A57A2FA27FCC36A00E38B7E /* gl_sky.c in Sources */, + 2A57A2FB27FCC36A00E38B7E /* gl_texmgr.c in Sources */, + 2A57A2FC27FCC36A00E38B7E /* gl_vidsdl.c in Sources */, + 2A57A2FD27FCC36A00E38B7E /* gl_warp.c in Sources */, + 2A57A2FE27FCC36A00E38B7E /* image.c in Sources */, + 2A57A2FF27FCC36A00E38B7E /* r_alias.c in Sources */, + 2A57A30027FCC36A00E38B7E /* r_brush.c in Sources */, + 2A57A30127FCC36A00E38B7E /* r_part.c in Sources */, + 2A57A30227FCC36A00E38B7E /* r_sprite.c in Sources */, + 2A57A30327FCC36A00E38B7E /* r_world.c in Sources */, + 2A57A30427FCC36A00E38B7E /* net_dgrm.c in Sources */, + 2A57A30527FCC36A00E38B7E /* net_loop.c in Sources */, + 2A57A30627FCC36A00E38B7E /* snd_dma.c in Sources */, + 2A57A30727FCC36A00E38B7E /* snd_mem.c in Sources */, + 2A57A30827FCC36A00E38B7E /* snd_mix.c in Sources */, + 2A57A30927FCC36A00E38B7E /* main_sdl.c in Sources */, + 2A57A30A27FCC36A00E38B7E /* AppController.m in Sources */, + 2A57A30B27FCC36A00E38B7E /* SDLApplication.m in Sources */, + 2A57A30C27FCC36A00E38B7E /* ScreenInfo.m in Sources */, + 2A57A30D27FCC36A00E38B7E /* QuakeArguments.m in Sources */, + 2A57A30E27FCC36A00E38B7E /* QuakeArgument.m in Sources */, + 2A57A30F27FCC36A00E38B7E /* pl_osx.m in Sources */, + 2A57A31027FCC36A00E38B7E /* sys_sdl_unix.c in Sources */, + 2A57A31127FCC36A00E38B7E /* net_bsd.c in Sources */, + 2A57A31227FCC36A00E38B7E /* net_udp.c in Sources */, + 2A57A31327FCC36A00E38B7E /* bgmusic.c in Sources */, + 2A57A31427FCC36A00E38B7E /* snd_codec.c in Sources */, + 2A57A31527FCC36A00E38B7E /* snd_vorbis.c in Sources */, + 2A57A31627FCC36A00E38B7E /* snd_wave.c in Sources */, + 2A57A31727FCC36A00E38B7E /* snd_mp3.c in Sources */, + 2A57A31827FCC36A00E38B7E /* snd_mikmod.c in Sources */, + 2A57A31927FCC36A00E38B7E /* snd_umx.c in Sources */, + 2A57A31A27FCC36A00E38B7E /* cfgfile.c in Sources */, + 2A57A31B27FCC36A00E38B7E /* strlcat.c in Sources */, + 2A57A31C27FCC36A00E38B7E /* strlcpy.c in Sources */, + 2A57A31D27FCC36A00E38B7E /* snd_opus.c in Sources */, + 2A57A31E27FCC36A00E38B7E /* snd_flac.c in Sources */, + 2A57A31F27FCC36A00E38B7E /* snd_mp3tag.c in Sources */, + 2A57A32027FCC36A00E38B7E /* miniz.c in Sources */, + 2A57A32127FCC36A00E38B7E /* snd_xmp.c in Sources */, + 2A57A32227FCC36A00E38B7E /* snd_modplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 664D988D19CF6B78000D395C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 664D988E19CF6B78000D395C /* SDLMain.m in Sources */, + 664D988F19CF6B78000D395C /* chase.c in Sources */, + 664D989019CF6B78000D395C /* cmd.c in Sources */, + 664D989119CF6B78000D395C /* common.c in Sources */, + 664D989219CF6B78000D395C /* console.c in Sources */, + 664D989319CF6B78000D395C /* crc.c in Sources */, + 664D989419CF6B78000D395C /* cvar.c in Sources */, + 664D989519CF6B78000D395C /* host_cmd.c in Sources */, + 664D989619CF6B78000D395C /* host.c in Sources */, + 664D989719CF6B78000D395C /* mathlib.c in Sources */, + 664D989819CF6B78000D395C /* menu.c in Sources */, + 664D989919CF6B78000D395C /* pr_cmds.c in Sources */, + 664D989A19CF6B78000D395C /* pr_edict.c in Sources */, + 664D989B19CF6B78000D395C /* pr_exec.c in Sources */, + 664D989C19CF6B78000D395C /* sbar.c in Sources */, + 664D989D19CF6B78000D395C /* view.c in Sources */, + 664D989E19CF6B78000D395C /* wad.c in Sources */, + 664D989F19CF6B78000D395C /* world.c in Sources */, + 664D98A019CF6B78000D395C /* zone.c in Sources */, + 664D98A119CF6B78000D395C /* in_sdl.c in Sources */, + 664D98A219CF6B78000D395C /* keys.c in Sources */, + 664D98A319CF6B78000D395C /* cl_demo.c in Sources */, + 664D98A419CF6B78000D395C /* cl_input.c in Sources */, + 664D98A519CF6B78000D395C /* cl_main.c in Sources */, + 664D98A619CF6B78000D395C /* cl_parse.c in Sources */, + 664D98A719CF6B78000D395C /* cl_tent.c in Sources */, + 664D98A819CF6B78000D395C /* net_main.c in Sources */, + 664D98A919CF6B78000D395C /* sv_main.c in Sources */, + 664D98AA19CF6B78000D395C /* sv_move.c in Sources */, + 664D98AB19CF6B78000D395C /* sv_phys.c in Sources */, + 664D98AC19CF6B78000D395C /* sv_user.c in Sources */, + 664D98AD19CF6B78000D395C /* cd_sdl.c in Sources */, + 664D98AE19CF6B78000D395C /* snd_sdl.c in Sources */, + 664D98AF19CF6B78000D395C /* gl_draw.c in Sources */, + 664D98B019CF6B78000D395C /* gl_fog.c in Sources */, + 664D98B119CF6B78000D395C /* gl_mesh.c in Sources */, + 664D98B219CF6B78000D395C /* gl_model.c in Sources */, + 664D98B319CF6B78000D395C /* gl_refrag.c in Sources */, + 664D98B419CF6B78000D395C /* gl_rlight.c in Sources */, + 664D98B519CF6B78000D395C /* gl_rmain.c in Sources */, + 664D98B619CF6B78000D395C /* gl_rmisc.c in Sources */, + 664D98B719CF6B78000D395C /* gl_screen.c in Sources */, + 664D98B819CF6B78000D395C /* gl_sky.c in Sources */, + 664D98B919CF6B78000D395C /* gl_texmgr.c in Sources */, + 664D98BA19CF6B78000D395C /* gl_vidsdl.c in Sources */, + 664D98BB19CF6B78000D395C /* gl_warp.c in Sources */, + 664D98BC19CF6B78000D395C /* image.c in Sources */, + 664D98BD19CF6B78000D395C /* r_alias.c in Sources */, + 664D98BE19CF6B78000D395C /* r_brush.c in Sources */, + 664D98BF19CF6B78000D395C /* r_part.c in Sources */, + 664D98C019CF6B78000D395C /* r_sprite.c in Sources */, + 664D98C119CF6B78000D395C /* r_world.c in Sources */, + 664D98C219CF6B78000D395C /* net_dgrm.c in Sources */, + 664D98C319CF6B78000D395C /* net_loop.c in Sources */, + 664D98C419CF6B78000D395C /* snd_dma.c in Sources */, + 664D98C519CF6B78000D395C /* snd_mem.c in Sources */, + 664D98C619CF6B78000D395C /* snd_mix.c in Sources */, + 664D98C719CF6B78000D395C /* main_sdl.c in Sources */, + 664D98C819CF6B78000D395C /* AppController.m in Sources */, + 664D98C919CF6B78000D395C /* SDLApplication.m in Sources */, + 664D98CA19CF6B78000D395C /* ScreenInfo.m in Sources */, + 664D98CB19CF6B78000D395C /* QuakeArguments.m in Sources */, + 664D98CC19CF6B78000D395C /* QuakeArgument.m in Sources */, + 664D98CD19CF6B78000D395C /* pl_osx.m in Sources */, + 664D98CE19CF6B78000D395C /* sys_sdl_unix.c in Sources */, + 664D98CF19CF6B78000D395C /* net_bsd.c in Sources */, + 664D98D019CF6B78000D395C /* net_udp.c in Sources */, + 664D98D119CF6B78000D395C /* bgmusic.c in Sources */, + 664D98D219CF6B78000D395C /* snd_codec.c in Sources */, + 664D98D319CF6B78000D395C /* snd_vorbis.c in Sources */, + 664D98D419CF6B78000D395C /* snd_wave.c in Sources */, + 664D98D519CF6B78000D395C /* snd_mp3.c in Sources */, + 664D98D619CF6B78000D395C /* snd_mikmod.c in Sources */, + 664D98D719CF6B78000D395C /* snd_umx.c in Sources */, + 664D98D819CF6B78000D395C /* cfgfile.c in Sources */, + 664D98D919CF6B78000D395C /* strlcat.c in Sources */, + 664D98DA19CF6B78000D395C /* strlcpy.c in Sources */, + 664D98DB19CF6B78000D395C /* snd_opus.c in Sources */, + 664D98DC19CF6B78000D395C /* snd_flac.c in Sources */, + 63D6EB3623A255900047028C /* snd_mp3tag.c in Sources */, + 6348AF8726EA45B900E036E2 /* miniz.c in Sources */, + 6348AF9226EA46F500E036E2 /* snd_xmp.c in Sources */, + 6314786F27F1AEBD0023B20A /* snd_modplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002F3A2E09D0888800EBEB88 /* SDLMain.m in Sources */, + 483A78230D2EEA5400CB2E4C /* chase.c in Sources */, + 483A78240D2EEA5400CB2E4C /* cmd.c in Sources */, + 483A78250D2EEA5400CB2E4C /* common.c in Sources */, + 483A78260D2EEA5400CB2E4C /* console.c in Sources */, + 483A78270D2EEA5400CB2E4C /* crc.c in Sources */, + 483A78280D2EEA5400CB2E4C /* cvar.c in Sources */, + 483A78290D2EEA5400CB2E4C /* host_cmd.c in Sources */, + 483A782A0D2EEA5400CB2E4C /* host.c in Sources */, + 483A782B0D2EEA5400CB2E4C /* mathlib.c in Sources */, + 483A782C0D2EEA5400CB2E4C /* menu.c in Sources */, + 483A782D0D2EEA5400CB2E4C /* pr_cmds.c in Sources */, + 483A782E0D2EEA5400CB2E4C /* pr_edict.c in Sources */, + 483A782F0D2EEA5400CB2E4C /* pr_exec.c in Sources */, + 483A78300D2EEA5400CB2E4C /* sbar.c in Sources */, + 483A78320D2EEA5400CB2E4C /* view.c in Sources */, + 483A78330D2EEA5400CB2E4C /* wad.c in Sources */, + 483A78340D2EEA5400CB2E4C /* world.c in Sources */, + 483A78350D2EEA5400CB2E4C /* zone.c in Sources */, + 483A78380D2EEA6D00CB2E4C /* in_sdl.c in Sources */, + 483A78390D2EEA6D00CB2E4C /* keys.c in Sources */, + 483A78450D2EEAAB00CB2E4C /* cl_demo.c in Sources */, + 483A78460D2EEAAB00CB2E4C /* cl_input.c in Sources */, + 483A78470D2EEAAB00CB2E4C /* cl_main.c in Sources */, + 483A78480D2EEAAB00CB2E4C /* cl_parse.c in Sources */, + 483A78490D2EEAAB00CB2E4C /* cl_tent.c in Sources */, + 483A784A0D2EEAAB00CB2E4C /* net_main.c in Sources */, + 483A784C0D2EEAAB00CB2E4C /* sv_main.c in Sources */, + 483A784D0D2EEAAB00CB2E4C /* sv_move.c in Sources */, + 483A784E0D2EEAAB00CB2E4C /* sv_phys.c in Sources */, + 483A784F0D2EEAAB00CB2E4C /* sv_user.c in Sources */, + 483A78550D2EEAC300CB2E4C /* cd_sdl.c in Sources */, + 483A78590D2EEAC300CB2E4C /* snd_sdl.c in Sources */, + 483A786E0D2EEAF000CB2E4C /* gl_draw.c in Sources */, + 483A786F0D2EEAF000CB2E4C /* gl_fog.c in Sources */, + 483A78700D2EEAF000CB2E4C /* gl_mesh.c in Sources */, + 483A78710D2EEAF000CB2E4C /* gl_model.c in Sources */, + 483A78720D2EEAF000CB2E4C /* gl_refrag.c in Sources */, + 483A78730D2EEAF000CB2E4C /* gl_rlight.c in Sources */, + 483A78740D2EEAF000CB2E4C /* gl_rmain.c in Sources */, + 483A78750D2EEAF000CB2E4C /* gl_rmisc.c in Sources */, + 483A78760D2EEAF000CB2E4C /* gl_screen.c in Sources */, + 483A78770D2EEAF000CB2E4C /* gl_sky.c in Sources */, + 483A78790D2EEAF000CB2E4C /* gl_texmgr.c in Sources */, + 483A787A0D2EEAF000CB2E4C /* gl_vidsdl.c in Sources */, + 483A787B0D2EEAF000CB2E4C /* gl_warp.c in Sources */, + 483A787C0D2EEAF000CB2E4C /* image.c in Sources */, + 483A787D0D2EEAF000CB2E4C /* r_alias.c in Sources */, + 483A787E0D2EEAF000CB2E4C /* r_brush.c in Sources */, + 483A787F0D2EEAF000CB2E4C /* r_part.c in Sources */, + 483A78800D2EEAF000CB2E4C /* r_sprite.c in Sources */, + 483A78810D2EEAF000CB2E4C /* r_world.c in Sources */, + 48728D2D0D3004A80004D61B /* net_dgrm.c in Sources */, + 48728D2E0D3004A80004D61B /* net_loop.c in Sources */, + 486577CB0D31A22A00E7920A /* snd_dma.c in Sources */, + 486577CC0D31A22A00E7920A /* snd_mem.c in Sources */, + 486577CD0D31A22A00E7920A /* snd_mix.c in Sources */, + 48243B140D33F01A00C29F8F /* main_sdl.c in Sources */, + 48B9E7A70D340BEA0001CACF /* AppController.m in Sources */, + 48B9E7C00D340EA80001CACF /* SDLApplication.m in Sources */, + 489D8D2F0D3A630D00AA4471 /* ScreenInfo.m in Sources */, + 48FE585B0D3A82C8006BB491 /* QuakeArguments.m in Sources */, + 48C85E3B0D3AD10E00797678 /* QuakeArgument.m in Sources */, + 48895DB90D4914A000849ABF /* pl_osx.m in Sources */, + 4847CD5F12057F94000B560F /* sys_sdl_unix.c in Sources */, + 48134A1812102F400015BF15 /* net_bsd.c in Sources */, + 48134A1912102F400015BF15 /* net_udp.c in Sources */, + 4818B0A312D5B9AE006DD66E /* bgmusic.c in Sources */, + 4818B0AE12D5B9ED006DD66E /* snd_codec.c in Sources */, + 4818B0B712D5BA1A006DD66E /* snd_vorbis.c in Sources */, + 4818B0B812D5BA1A006DD66E /* snd_wave.c in Sources */, + 4854B1B11340C646004C9F45 /* snd_mp3.c in Sources */, + 483A78780D2EEAF000CB2E4C /* snd_mikmod.c in Sources */, + 32CA4F630368D1EE00C91783 /* snd_umx.c in Sources */, + B021C20914A5FF7E003F18D6 /* cfgfile.c in Sources */, + 48A7C1FC14AA34940011B754 /* strlcat.c in Sources */, + 48A7C1FD14AA34940011B754 /* strlcpy.c in Sources */, + 4885A84C179740A0000EC703 /* snd_opus.c in Sources */, + 48281301179C3F13004E1D61 /* snd_flac.c in Sources */, + 63D6EB3523A255900047028C /* snd_mp3tag.c in Sources */, + 6348AF8626EA45B900E036E2 /* miniz.c in Sources */, + 6348AF9126EA46F500E036E2 /* snd_xmp.c in Sources */, + 6314787127F1AEC00023B20A /* snd_modplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; + 48B9E7860D340B1E0001CACF /* Launcher.nib */ = { + isa = PBXVariantGroup; + children = ( + 48B9E7870D340B1E0001CACF /* English */, + ); + name = Launcher.nib; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 2A57A2C627FCC36000E38B7E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_SDL2, + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + MACOSX_DEPLOYMENT_TARGET = 10.11; + PRODUCT_NAME = "$(TARGET_NAME)"; + VALID_ARCHS = x86_64; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + 2A57A2C727FCC36000E38B7E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = x86_64; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_SDL2, + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + MACOSX_DEPLOYMENT_TARGET = 10.11; + PRODUCT_NAME = "$(TARGET_NAME)"; + VALID_ARCHS = x86_64; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 2A57A34227FCC36A00E38B7E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_SDL2, + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_NAME = "$(TARGET_NAME)"; + VALID_ARCHS = arm64; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + 2A57A34327FCC36A00E38B7E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = arm64; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_SDL2, + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + VALID_ARCHS = arm64; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 664D98F719CF6B78000D395C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_SDL2, + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + PRODUCT_NAME = "QuakeSpasm-SDL2"; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + 664D98F819CF6B78000D395C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + x86_64, + i386, + ); + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_SDL2, + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + OTHER_CFLAGS = ""; + "OTHER_CFLAGS[arch=i386]" = ( + "-arch", + i386, + ); + OTHER_LDFLAGS = ""; + "OTHER_LDFLAGS[arch=i386]" = ( + "-arch", + i386, + ); + "OTHER_LDFLAGS[arch=ppc]" = ( + "-arch", + ppc, + ); + PRODUCT_NAME = "QuakeSpasm-SDL2"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + "\"$(SRCROOT)/codecs/lib\"", + ); + PRODUCT_NAME = QuakeSpasm; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + "\"$(SRCROOT)/codecs/lib\"", + ); + OTHER_CFLAGS = ""; + "OTHER_CFLAGS[arch=i386]" = ( + "-arch", + i386, + ); + "OTHER_CFLAGS[arch=ppc]" = ( + "-arch", + ppc, + ); + OTHER_LDFLAGS = ""; + "OTHER_LDFLAGS[arch=i386]" = ( + "-arch", + i386, + ); + "OTHER_LDFLAGS[arch=ppc]" = ( + "-arch", + ppc, + ); + PRODUCT_NAME = QuakeSpasm; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + x86_64, + i386, + ); + FRAMEWORK_SEARCH_PATHS = ( + "$(SRCROOT)", + "$(FRAMEWORK_SEARCH_PATHS)", + ); + GCC_MODEL_TUNING = G3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + SDL_FRAMEWORK, + ); + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks"; + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.6; + ONLY_ACTIVE_ARCH = NO; + OTHER_CFLAGS = ""; + PREBINDING = NO; + SDKROOT = macosx; + "SDKROOT[arch=i386]" = macosx; + "SDKROOT[arch=ppc]" = macosx; + "SDKROOT[arch=x86_64]" = macosx; + STRIP_INSTALLED_PRODUCT = NO; + VALID_ARCHS = "i386 x86_64"; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COPY_PHASE_STRIP = NO; + DEPLOYMENT_POSTPROCESSING = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SRCROOT)", + "$(FRAMEWORK_SEARCH_PATHS)", + ); + GCC_MODEL_TUNING = G3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "GL_SILENCE_DEPRECATION=1", + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + LD_RUNPATH_SEARCH_PATHS = "@executable_path/../Frameworks"; + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.6; + ONLY_ACTIVE_ARCH = NO; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + "OTHER_LDFLAGS[arch=i386]" = ( + "-mmacosx-version-min=10.4", + "-arch", + i386, + ); + "OTHER_LDFLAGS[arch=ppc]" = ( + "-mmacosx-version-min=10.4", + "-arch", + ppc, + ); + PREBINDING = NO; + SDKROOT = macosx; + "SDKROOT[arch=i386]" = macosx; + "SDKROOT[arch=ppc]" = macosx; + "SDKROOT[arch=x86_64]" = macosx; + STRIP_INSTALLED_PRODUCT = NO; + VALID_ARCHS = "i386 x86_64 ppc"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2A57A2C527FCC36000E38B7E /* Build configuration list for PBXNativeTarget "QuakeSpasm-SDL2-x64" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2A57A2C627FCC36000E38B7E /* Debug */, + 2A57A2C727FCC36000E38B7E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2A57A34127FCC36A00E38B7E /* Build configuration list for PBXNativeTarget "QuakeSpasm-SDL2-M1" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2A57A34227FCC36A00E38B7E /* Debug */, + 2A57A34327FCC36A00E38B7E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 664D98F619CF6B78000D395C /* Build configuration list for PBXNativeTarget "QuakeSpasm-SDL2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 664D98F719CF6B78000D395C /* Debug */, + 664D98F819CF6B78000D395C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "QuakeSpasm" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "QuakeSpasm" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/MacOSX/QuakeSpasm.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/MacOSX/QuakeSpasm.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..e978855 --- /dev/null +++ b/MacOSX/QuakeSpasm.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:QuakeSpasm.xcodeproj"> + </FileRef> +</Workspace> diff --git a/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-M1.xcscheme b/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-M1.xcscheme new file mode 100644 index 0000000..b876f0a --- /dev/null +++ b/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-M1.xcscheme @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1310" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "2A57A2CA27FCC36A00E38B7E" + BuildableName = "QuakeSpasm-SDL2-M1.app" + BlueprintName = "QuakeSpasm-SDL2-M1" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "2A57A2CA27FCC36A00E38B7E" + BuildableName = "QuakeSpasm-SDL2-M1.app" + BlueprintName = "QuakeSpasm-SDL2-M1" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "2A57A2CA27FCC36A00E38B7E" + BuildableName = "QuakeSpasm-SDL2-M1.app" + BlueprintName = "QuakeSpasm-SDL2-M1" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-x64.xcscheme b/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-x64.xcscheme new file mode 100644 index 0000000..a4a25a0 --- /dev/null +++ b/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm-SDL2-x64.xcscheme @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1310" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "2A57A24E27FCC36000E38B7E" + BuildableName = "QuakeSpasm-SDL2-64.app" + BlueprintName = "QuakeSpasm-SDL2-64" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <Testables> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "2A57A24E27FCC36000E38B7E" + BuildableName = "QuakeSpasm-SDL2-64.app" + BlueprintName = "QuakeSpasm-SDL2-64" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "2A57A24E27FCC36000E38B7E" + BuildableName = "QuakeSpasm-SDL2-64.app" + BlueprintName = "QuakeSpasm-SDL2-64" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm.xcscheme b/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm.xcscheme new file mode 100644 index 0000000..90de053 --- /dev/null +++ b/MacOSX/QuakeSpasm.xcodeproj/xcshareddata/xcschemes/QuakeSpasm.xcscheme @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + version = "1.8"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D1107260486CEB800E47090" + BuildableName = "QuakeSpasm.app" + BlueprintName = "QuakeSpasm"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + shouldUseLaunchSchemeArgsEnv = "YES" + buildConfiguration = "Debug"> + <Testables> + </Testables> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D1107260486CEB800E47090" + BuildableName = "QuakeSpasm.app" + BlueprintName = "QuakeSpasm" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </MacroExpansion> + </TestAction> + <LaunchAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + displayScaleIsEnabled = "NO" + displayScale = "1.00" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Debug" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + allowLocationSimulation = "YES"> + <BuildableProductRunnable> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D1107260486CEB800E47090" + BuildableName = "QuakeSpasm.app" + BlueprintName = "QuakeSpasm" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <CommandLineArguments> + <CommandLineArgument + argument = "-basedir /Applications/Quake" + isEnabled = "YES"> + </CommandLineArgument> + <CommandLineArgument + argument = "-nolauncher" + isEnabled = "NO"> + </CommandLineArgument> + </CommandLineArguments> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + displayScaleIsEnabled = "NO" + displayScale = "1.00" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Release" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "8D1107260486CEB800E47090" + BuildableName = "QuakeSpasm.app" + BlueprintName = "QuakeSpasm" + ReferencedContainer = "container:QuakeSpasm.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/MacOSX/QuakeSpasmPPC.xcodeproj/project.pbxproj b/MacOSX/QuakeSpasmPPC.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5db296e --- /dev/null +++ b/MacOSX/QuakeSpasmPPC.xcodeproj/project.pbxproj @@ -0,0 +1,1074 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; + 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; }; + 002F3A2E09D0888800EBEB88 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A2C09D0888800EBEB88 /* SDLMain.m */; }; + 002F3C0109D093BD00EBEB88 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C0009D093BD00EBEB88 /* OpenGL.framework */; }; + 32CA4F630368D1EE00C91783 /* snd_umx.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B012D5BA1A006DD66E /* snd_umx.c */; }; + 48134A1812102F400015BF15 /* net_bsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1412102F400015BF15 /* net_bsd.c */; }; + 48134A1912102F400015BF15 /* net_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 48134A1612102F400015BF15 /* net_udp.c */; }; + 4818B0A312D5B9AE006DD66E /* bgmusic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0A112D5B9AE006DD66E /* bgmusic.c */; }; + 4818B0AE12D5B9ED006DD66E /* snd_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0AC12D5B9ED006DD66E /* snd_codec.c */; }; + 4818B0B712D5BA1A006DD66E /* snd_vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */; }; + 4818B0B812D5BA1A006DD66E /* snd_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 4818B0B412D5BA1A006DD66E /* snd_wave.c */; }; + 48243B140D33F01A00C29F8F /* main_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 48243B130D33F01A00C29F8F /* main_sdl.c */; }; + 482812FD179C3EF4004E1D61 /* libFLAC.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 482812FE179C3EFF004E1D61 /* libFLAC.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 482812FC179C3EF4004E1D61 /* libFLAC.dylib */; }; + 48281301179C3F13004E1D61 /* snd_flac.c in Sources */ = {isa = PBXBuildFile; fileRef = 482812FF179C3F13004E1D61 /* snd_flac.c */; }; + 483A78230D2EEA5400CB2E4C /* chase.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78100D2EEA5400CB2E4C /* chase.c */; }; + 483A78240D2EEA5400CB2E4C /* cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78110D2EEA5400CB2E4C /* cmd.c */; }; + 483A78250D2EEA5400CB2E4C /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78120D2EEA5400CB2E4C /* common.c */; }; + 483A78260D2EEA5400CB2E4C /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78130D2EEA5400CB2E4C /* console.c */; }; + 483A78270D2EEA5400CB2E4C /* crc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78140D2EEA5400CB2E4C /* crc.c */; }; + 483A78280D2EEA5400CB2E4C /* cvar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78150D2EEA5400CB2E4C /* cvar.c */; }; + 483A78290D2EEA5400CB2E4C /* host_cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78160D2EEA5400CB2E4C /* host_cmd.c */; }; + 483A782A0D2EEA5400CB2E4C /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78170D2EEA5400CB2E4C /* host.c */; }; + 483A782B0D2EEA5400CB2E4C /* mathlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78180D2EEA5400CB2E4C /* mathlib.c */; }; + 483A782C0D2EEA5400CB2E4C /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78190D2EEA5400CB2E4C /* menu.c */; }; + 483A782D0D2EEA5400CB2E4C /* pr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */; }; + 483A782E0D2EEA5400CB2E4C /* pr_edict.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781B0D2EEA5400CB2E4C /* pr_edict.c */; }; + 483A782F0D2EEA5400CB2E4C /* pr_exec.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781C0D2EEA5400CB2E4C /* pr_exec.c */; }; + 483A78300D2EEA5400CB2E4C /* sbar.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781D0D2EEA5400CB2E4C /* sbar.c */; }; + 483A78320D2EEA5400CB2E4C /* view.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A781F0D2EEA5400CB2E4C /* view.c */; }; + 483A78330D2EEA5400CB2E4C /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78200D2EEA5400CB2E4C /* wad.c */; }; + 483A78340D2EEA5400CB2E4C /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78210D2EEA5400CB2E4C /* world.c */; }; + 483A78350D2EEA5400CB2E4C /* zone.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78220D2EEA5400CB2E4C /* zone.c */; }; + 483A78380D2EEA6D00CB2E4C /* in_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78360D2EEA6D00CB2E4C /* in_sdl.c */; }; + 483A78390D2EEA6D00CB2E4C /* keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78370D2EEA6D00CB2E4C /* keys.c */; }; + 483A78450D2EEAAB00CB2E4C /* cl_demo.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */; }; + 483A78460D2EEAAB00CB2E4C /* cl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783B0D2EEAAB00CB2E4C /* cl_input.c */; }; + 483A78470D2EEAAB00CB2E4C /* cl_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783C0D2EEAAB00CB2E4C /* cl_main.c */; }; + 483A78480D2EEAAB00CB2E4C /* cl_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */; }; + 483A78490D2EEAAB00CB2E4C /* cl_tent.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */; }; + 483A784A0D2EEAAB00CB2E4C /* net_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A783F0D2EEAAB00CB2E4C /* net_main.c */; }; + 483A784C0D2EEAAB00CB2E4C /* sv_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78410D2EEAAB00CB2E4C /* sv_main.c */; }; + 483A784D0D2EEAAB00CB2E4C /* sv_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78420D2EEAAB00CB2E4C /* sv_move.c */; }; + 483A784E0D2EEAAB00CB2E4C /* sv_phys.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78430D2EEAAB00CB2E4C /* sv_phys.c */; }; + 483A784F0D2EEAAB00CB2E4C /* sv_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78440D2EEAAB00CB2E4C /* sv_user.c */; }; + 483A78550D2EEAC300CB2E4C /* cd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78500D2EEAC300CB2E4C /* cd_sdl.c */; }; + 483A78590D2EEAC300CB2E4C /* snd_sdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78540D2EEAC300CB2E4C /* snd_sdl.c */; }; + 483A786E0D2EEAF000CB2E4C /* gl_draw.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785A0D2EEAF000CB2E4C /* gl_draw.c */; }; + 483A786F0D2EEAF000CB2E4C /* gl_fog.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785B0D2EEAF000CB2E4C /* gl_fog.c */; }; + 483A78700D2EEAF000CB2E4C /* gl_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */; }; + 483A78710D2EEAF000CB2E4C /* gl_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785D0D2EEAF000CB2E4C /* gl_model.c */; }; + 483A78720D2EEAF000CB2E4C /* gl_refrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */; }; + 483A78730D2EEAF000CB2E4C /* gl_rlight.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */; }; + 483A78740D2EEAF000CB2E4C /* gl_rmain.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78600D2EEAF000CB2E4C /* gl_rmain.c */; }; + 483A78750D2EEAF000CB2E4C /* gl_rmisc.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */; }; + 483A78760D2EEAF000CB2E4C /* gl_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78620D2EEAF000CB2E4C /* gl_screen.c */; }; + 483A78770D2EEAF000CB2E4C /* gl_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78630D2EEAF000CB2E4C /* gl_sky.c */; }; + 483A78780D2EEAF000CB2E4C /* snd_mikmod.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */; }; + 483A78790D2EEAF000CB2E4C /* gl_texmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */; }; + 483A787A0D2EEAF000CB2E4C /* gl_vidsdl.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */; }; + 483A787B0D2EEAF000CB2E4C /* gl_warp.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78670D2EEAF000CB2E4C /* gl_warp.c */; }; + 483A787C0D2EEAF000CB2E4C /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78680D2EEAF000CB2E4C /* image.c */; }; + 483A787D0D2EEAF000CB2E4C /* r_alias.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A78690D2EEAF000CB2E4C /* r_alias.c */; }; + 483A787E0D2EEAF000CB2E4C /* r_brush.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786A0D2EEAF000CB2E4C /* r_brush.c */; }; + 483A787F0D2EEAF000CB2E4C /* r_part.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786B0D2EEAF000CB2E4C /* r_part.c */; }; + 483A78800D2EEAF000CB2E4C /* r_sprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786C0D2EEAF000CB2E4C /* r_sprite.c */; }; + 483A78810D2EEAF000CB2E4C /* r_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 483A786D0D2EEAF000CB2E4C /* r_world.c */; }; + 4847CD5F12057F94000B560F /* sys_sdl_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 4847CD5E12057F94000B560F /* sys_sdl_unix.c */; }; + 484AA4B40D3FF6C0005D917A /* QuakeSpasm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */; }; + 4854B1B11340C646004C9F45 /* snd_mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4854B1B01340C646004C9F45 /* snd_mp3.c */; }; + 486577CB0D31A22A00E7920A /* snd_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C80D31A22A00E7920A /* snd_dma.c */; }; + 486577CC0D31A22A00E7920A /* snd_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577C90D31A22A00E7920A /* snd_mem.c */; }; + 486577CD0D31A22A00E7920A /* snd_mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 486577CA0D31A22A00E7920A /* snd_mix.c */; }; + 48728D2D0D3004A80004D61B /* net_dgrm.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D280D3004A70004D61B /* net_dgrm.c */; }; + 48728D2E0D3004A80004D61B /* net_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 48728D2A0D3004A80004D61B /* net_loop.c */; }; + 4885A84C179740A0000EC703 /* snd_opus.c in Sources */ = {isa = PBXBuildFile; fileRef = 4885A84A179740A0000EC703 /* snd_opus.c */; }; + 4885A84F179740CA000EC703 /* libopus.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 4885A850179740CA000EC703 /* libopusfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 4885A851179740D7000EC703 /* libopus.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84D179740CA000EC703 /* libopus.dylib */; }; + 4885A852179740D7000EC703 /* libopusfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 4885A84E179740CA000EC703 /* libopusfile.dylib */; }; + 48895DB90D4914A000849ABF /* pl_osx.m in Sources */ = {isa = PBXBuildFile; fileRef = 48895DB80D4914A000849ABF /* pl_osx.m */; }; + 489D8D2F0D3A630D00AA4471 /* ScreenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */; }; + 48A7C1FC14AA34940011B754 /* strlcat.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FA14AA34940011B754 /* strlcat.c */; }; + 48A7C1FD14AA34940011B754 /* strlcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = 48A7C1FB14AA34940011B754 /* strlcpy.c */; }; + 48B9E7880D340B1E0001CACF /* Launcher.nib in Resources */ = {isa = PBXBuildFile; fileRef = 48B9E7860D340B1E0001CACF /* Launcher.nib */; }; + 48B9E7A70D340BEA0001CACF /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7A60D340BEA0001CACF /* AppController.m */; }; + 48B9E7C00D340EA80001CACF /* SDLApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9E7BF0D340EA80001CACF /* SDLApplication.m */; }; + 48C85E3B0D3AD10E00797678 /* QuakeArgument.m in Sources */ = {isa = PBXBuildFile; fileRef = 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */; }; + 48E2EC7815FB500400B8D476 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 488EF23614B83A370021DD41 /* IOKit.framework */; }; + 48E2EC7D15FB507A00B8D476 /* libmad.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 48E2EC7E15FB507A00B8D476 /* libogg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 48E2EC7F15FB507A00B8D476 /* libvorbis.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 48E2EC8015FB507A00B8D476 /* libvorbisfile.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 48E2EC8615FB516600B8D476 /* libmad.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7915FB507A00B8D476 /* libmad.dylib */; }; + 48E2EC8715FB516600B8D476 /* libogg.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7A15FB507A00B8D476 /* libogg.dylib */; }; + 48E2EC8815FB516600B8D476 /* libvorbis.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */; }; + 48E2EC8915FB516600B8D476 /* libvorbisfile.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */; }; + 48FE585B0D3A82C8006BB491 /* QuakeArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */; }; + 6314789727F1AF3C0023B20A /* snd_modplug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6314789627F1AF3C0023B20A /* snd_modplug.c */; }; + 6339437D26EA495D000D25C3 /* miniz.c in Sources */ = {isa = PBXBuildFile; fileRef = 6339437B26EA495D000D25C3 /* miniz.c */; }; + 6339438726EA49FE000D25C3 /* snd_xmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6339438526EA49FE000D25C3 /* snd_xmp.c */; }; + 63D6EB5F23A2563B0047028C /* snd_mp3tag.c in Sources */ = {isa = PBXBuildFile; fileRef = 63D6EB5E23A2563B0047028C /* snd_mp3tag.c */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + A4E3AF2A05D43FCC000F1B47 /* libxmp.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + A4E3AF6205D43FCC000F1B47 /* libxmp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5DE80017CB4370103A810 /* libxmp.dylib */; }; + B021C20914A5FF7E003F18D6 /* cfgfile.c in Sources */ = {isa = PBXBuildFile; fileRef = B021C20714A5FF7E003F18D6 /* cfgfile.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 002F39FD09D0883400EBEB88 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 48692C131340A46800A0F098 /* Copy Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 482812FE179C3EFF004E1D61 /* libFLAC.dylib in Copy Libraries */, + 4885A851179740D7000EC703 /* libopus.dylib in Copy Libraries */, + 4885A852179740D7000EC703 /* libopusfile.dylib in Copy Libraries */, + 48E2EC8615FB516600B8D476 /* libmad.dylib in Copy Libraries */, + 48E2EC8715FB516600B8D476 /* libogg.dylib in Copy Libraries */, + 48E2EC8815FB516600B8D476 /* libvorbis.dylib in Copy Libraries */, + 48E2EC8915FB516600B8D476 /* libvorbisfile.dylib in Copy Libraries */, + A4E3AF2A05D43FCC000F1B47 /* libxmp.dylib in Copy Libraries */, + ); + name = "Copy Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL.framework; sourceTree = SOURCE_ROOT; }; + 002F3A2B09D0888800EBEB88 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = "<group>"; }; + 002F3A2C09D0888800EBEB88 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; sourceTree = "<group>"; }; + 002F3C0009D093BD00EBEB88 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; + 48134A1412102F400015BF15 /* net_bsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_bsd.c; path = ../Quake/net_bsd.c; sourceTree = SOURCE_ROOT; }; + 48134A1512102F400015BF15 /* net_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_defs.h; path = ../Quake/net_defs.h; sourceTree = SOURCE_ROOT; }; + 48134A1612102F400015BF15 /* net_udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_udp.c; path = ../Quake/net_udp.c; sourceTree = SOURCE_ROOT; }; + 48134A1712102F400015BF15 /* net_udp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_udp.h; path = ../Quake/net_udp.h; sourceTree = SOURCE_ROOT; }; + 4818B0A112D5B9AE006DD66E /* bgmusic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bgmusic.c; path = ../Quake/bgmusic.c; sourceTree = SOURCE_ROOT; }; + 4818B0A212D5B9AE006DD66E /* bgmusic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bgmusic.h; path = ../Quake/bgmusic.h; sourceTree = SOURCE_ROOT; }; + 4818B0AC12D5B9ED006DD66E /* snd_codec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_codec.c; path = ../Quake/snd_codec.c; sourceTree = SOURCE_ROOT; }; + 4818B0AD12D5B9ED006DD66E /* snd_codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_codec.h; path = ../Quake/snd_codec.h; sourceTree = SOURCE_ROOT; }; + 4818B0AF12D5BA1A006DD66E /* snd_codeci.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_codeci.h; path = ../Quake/snd_codeci.h; sourceTree = SOURCE_ROOT; }; + 4818B0B012D5BA1A006DD66E /* snd_umx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_umx.c; path = ../Quake/snd_umx.c; sourceTree = SOURCE_ROOT; }; + 4818B0B112D5BA1A006DD66E /* snd_mp3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_mp3.h; path = ../Quake/snd_mp3.h; sourceTree = SOURCE_ROOT; }; + 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_vorbis.c; path = ../Quake/snd_vorbis.c; sourceTree = SOURCE_ROOT; }; + 4818B0B312D5BA1A006DD66E /* snd_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_vorbis.h; path = ../Quake/snd_vorbis.h; sourceTree = SOURCE_ROOT; }; + 4818B0B412D5BA1A006DD66E /* snd_wave.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_wave.c; path = ../Quake/snd_wave.c; sourceTree = SOURCE_ROOT; }; + 4818B0B512D5BA1A006DD66E /* snd_wave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_wave.h; path = ../Quake/snd_wave.h; sourceTree = SOURCE_ROOT; }; + 48243B130D33F01A00C29F8F /* main_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = main_sdl.c; path = ../Quake/main_sdl.c; sourceTree = SOURCE_ROOT; }; + 482812FC179C3EF4004E1D61 /* libFLAC.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libFLAC.dylib; path = codecs/lib/libFLAC.dylib; sourceTree = "<group>"; }; + 482812FF179C3F13004E1D61 /* snd_flac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_flac.c; path = ../Quake/snd_flac.c; sourceTree = "<group>"; }; + 48281300179C3F13004E1D61 /* snd_flac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_flac.h; path = ../Quake/snd_flac.h; sourceTree = "<group>"; }; + 483A77E60D2EE97700CB2E4C /* cmd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cmd.h; path = ../Quake/cmd.h; sourceTree = SOURCE_ROOT; }; + 483A77E70D2EE97700CB2E4C /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = ../Quake/common.h; sourceTree = SOURCE_ROOT; }; + 483A77E80D2EE97700CB2E4C /* console.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = console.h; path = ../Quake/console.h; sourceTree = SOURCE_ROOT; }; + 483A77E90D2EE97700CB2E4C /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crc.h; path = ../Quake/crc.h; sourceTree = SOURCE_ROOT; }; + 483A77EA0D2EE97700CB2E4C /* cvar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cvar.h; path = ../Quake/cvar.h; sourceTree = SOURCE_ROOT; }; + 483A77EB0D2EE97700CB2E4C /* mathlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mathlib.h; path = ../Quake/mathlib.h; sourceTree = SOURCE_ROOT; }; + 483A77EC0D2EE97700CB2E4C /* menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = menu.h; path = ../Quake/menu.h; sourceTree = SOURCE_ROOT; }; + 483A77ED0D2EE97700CB2E4C /* pr_comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pr_comp.h; path = ../Quake/pr_comp.h; sourceTree = SOURCE_ROOT; }; + 483A77EE0D2EE97700CB2E4C /* progdefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = progdefs.h; path = ../Quake/progdefs.h; sourceTree = SOURCE_ROOT; }; + 483A77EF0D2EE97700CB2E4C /* progs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = progs.h; path = ../Quake/progs.h; sourceTree = SOURCE_ROOT; }; + 483A77F00D2EE97700CB2E4C /* quakedef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = quakedef.h; path = ../Quake/quakedef.h; sourceTree = SOURCE_ROOT; }; + 483A77F10D2EE97700CB2E4C /* sbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sbar.h; path = ../Quake/sbar.h; sourceTree = SOURCE_ROOT; }; + 483A77F20D2EE97700CB2E4C /* sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sys.h; path = ../Quake/sys.h; sourceTree = SOURCE_ROOT; }; + 483A77F30D2EE97700CB2E4C /* view.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = view.h; path = ../Quake/view.h; sourceTree = SOURCE_ROOT; }; + 483A77F40D2EE97700CB2E4C /* wad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wad.h; path = ../Quake/wad.h; sourceTree = SOURCE_ROOT; }; + 483A77F50D2EE97700CB2E4C /* world.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = world.h; path = ../Quake/world.h; sourceTree = SOURCE_ROOT; }; + 483A77F60D2EE97700CB2E4C /* zone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zone.h; path = ../Quake/zone.h; sourceTree = SOURCE_ROOT; }; + 483A77F70D2EE98D00CB2E4C /* input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = input.h; path = ../Quake/input.h; sourceTree = SOURCE_ROOT; }; + 483A77F80D2EE98D00CB2E4C /* keys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = keys.h; path = ../Quake/keys.h; sourceTree = SOURCE_ROOT; }; + 483A77F90D2EE9A900CB2E4C /* client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = client.h; path = ../Quake/client.h; sourceTree = SOURCE_ROOT; }; + 483A77FA0D2EE9A900CB2E4C /* net.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net.h; path = ../Quake/net.h; sourceTree = SOURCE_ROOT; }; + 483A77FB0D2EE9A900CB2E4C /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = protocol.h; path = ../Quake/protocol.h; sourceTree = SOURCE_ROOT; }; + 483A77FC0D2EE9A900CB2E4C /* server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = server.h; path = ../Quake/server.h; sourceTree = SOURCE_ROOT; }; + 483A77FD0D2EE9BD00CB2E4C /* cdaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cdaudio.h; path = ../Quake/cdaudio.h; sourceTree = SOURCE_ROOT; }; + 483A77FE0D2EE9BD00CB2E4C /* q_sound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = q_sound.h; path = ../Quake/q_sound.h; sourceTree = SOURCE_ROOT; }; + 483A77FF0D2EE9F300CB2E4C /* anorm_dots.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = anorm_dots.h; path = ../Quake/anorm_dots.h; sourceTree = SOURCE_ROOT; }; + 483A78000D2EE9F300CB2E4C /* anorms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = anorms.h; path = ../Quake/anorms.h; sourceTree = SOURCE_ROOT; }; + 483A78010D2EE9F300CB2E4C /* bspfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bspfile.h; path = ../Quake/bspfile.h; sourceTree = SOURCE_ROOT; }; + 483A78030D2EE9F300CB2E4C /* draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = draw.h; path = ../Quake/draw.h; sourceTree = SOURCE_ROOT; }; + 483A78040D2EE9F300CB2E4C /* gl_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl_model.h; path = ../Quake/gl_model.h; sourceTree = SOURCE_ROOT; }; + 483A78050D2EE9F300CB2E4C /* gl_texmgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl_texmgr.h; path = ../Quake/gl_texmgr.h; sourceTree = SOURCE_ROOT; }; + 483A78060D2EE9F300CB2E4C /* gl_warp_sin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl_warp_sin.h; path = ../Quake/gl_warp_sin.h; sourceTree = SOURCE_ROOT; }; + 483A78070D2EE9F300CB2E4C /* glquake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glquake.h; path = ../Quake/glquake.h; sourceTree = SOURCE_ROOT; }; + 483A78080D2EE9F300CB2E4C /* image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = image.h; path = ../Quake/image.h; sourceTree = SOURCE_ROOT; }; + 483A78090D2EE9F300CB2E4C /* modelgen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = modelgen.h; path = ../Quake/modelgen.h; sourceTree = SOURCE_ROOT; }; + 483A780A0D2EE9F300CB2E4C /* render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = render.h; path = ../Quake/render.h; sourceTree = SOURCE_ROOT; }; + 483A780B0D2EE9F300CB2E4C /* screen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = screen.h; path = ../Quake/screen.h; sourceTree = SOURCE_ROOT; }; + 483A780C0D2EE9F300CB2E4C /* spritegn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spritegn.h; path = ../Quake/spritegn.h; sourceTree = SOURCE_ROOT; }; + 483A780D0D2EE9F300CB2E4C /* vid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = vid.h; path = ../Quake/vid.h; sourceTree = SOURCE_ROOT; }; + 483A780E0D2EEA0F00CB2E4C /* progdefs.q1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = progdefs.q1; path = ../Quake/progdefs.q1; sourceTree = SOURCE_ROOT; }; + 483A78100D2EEA5400CB2E4C /* chase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chase.c; path = ../Quake/chase.c; sourceTree = SOURCE_ROOT; }; + 483A78110D2EEA5400CB2E4C /* cmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmd.c; path = ../Quake/cmd.c; sourceTree = SOURCE_ROOT; }; + 483A78120D2EEA5400CB2E4C /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = common.c; path = ../Quake/common.c; sourceTree = SOURCE_ROOT; }; + 483A78130D2EEA5400CB2E4C /* console.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = console.c; path = ../Quake/console.c; sourceTree = SOURCE_ROOT; }; + 483A78140D2EEA5400CB2E4C /* crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = crc.c; path = ../Quake/crc.c; sourceTree = SOURCE_ROOT; }; + 483A78150D2EEA5400CB2E4C /* cvar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cvar.c; path = ../Quake/cvar.c; sourceTree = SOURCE_ROOT; }; + 483A78160D2EEA5400CB2E4C /* host_cmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = host_cmd.c; path = ../Quake/host_cmd.c; sourceTree = SOURCE_ROOT; }; + 483A78170D2EEA5400CB2E4C /* host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = host.c; path = ../Quake/host.c; sourceTree = SOURCE_ROOT; }; + 483A78180D2EEA5400CB2E4C /* mathlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mathlib.c; path = ../Quake/mathlib.c; sourceTree = SOURCE_ROOT; }; + 483A78190D2EEA5400CB2E4C /* menu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = menu.c; path = ../Quake/menu.c; sourceTree = SOURCE_ROOT; }; + 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pr_cmds.c; path = ../Quake/pr_cmds.c; sourceTree = SOURCE_ROOT; }; + 483A781B0D2EEA5400CB2E4C /* pr_edict.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pr_edict.c; path = ../Quake/pr_edict.c; sourceTree = SOURCE_ROOT; }; + 483A781C0D2EEA5400CB2E4C /* pr_exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pr_exec.c; path = ../Quake/pr_exec.c; sourceTree = SOURCE_ROOT; }; + 483A781D0D2EEA5400CB2E4C /* sbar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sbar.c; path = ../Quake/sbar.c; sourceTree = SOURCE_ROOT; }; + 483A781F0D2EEA5400CB2E4C /* view.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = view.c; path = ../Quake/view.c; sourceTree = SOURCE_ROOT; }; + 483A78200D2EEA5400CB2E4C /* wad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = wad.c; path = ../Quake/wad.c; sourceTree = SOURCE_ROOT; }; + 483A78210D2EEA5400CB2E4C /* world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = world.c; path = ../Quake/world.c; sourceTree = SOURCE_ROOT; }; + 483A78220D2EEA5400CB2E4C /* zone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = zone.c; path = ../Quake/zone.c; sourceTree = SOURCE_ROOT; }; + 483A78360D2EEA6D00CB2E4C /* in_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = in_sdl.c; path = ../Quake/in_sdl.c; sourceTree = SOURCE_ROOT; }; + 483A78370D2EEA6D00CB2E4C /* keys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = keys.c; path = ../Quake/keys.c; sourceTree = SOURCE_ROOT; }; + 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_demo.c; path = ../Quake/cl_demo.c; sourceTree = SOURCE_ROOT; }; + 483A783B0D2EEAAB00CB2E4C /* cl_input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_input.c; path = ../Quake/cl_input.c; sourceTree = SOURCE_ROOT; }; + 483A783C0D2EEAAB00CB2E4C /* cl_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_main.c; path = ../Quake/cl_main.c; sourceTree = SOURCE_ROOT; }; + 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_parse.c; path = ../Quake/cl_parse.c; sourceTree = SOURCE_ROOT; }; + 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cl_tent.c; path = ../Quake/cl_tent.c; sourceTree = SOURCE_ROOT; }; + 483A783F0D2EEAAB00CB2E4C /* net_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_main.c; path = ../Quake/net_main.c; sourceTree = SOURCE_ROOT; }; + 483A78410D2EEAAB00CB2E4C /* sv_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_main.c; path = ../Quake/sv_main.c; sourceTree = SOURCE_ROOT; }; + 483A78420D2EEAAB00CB2E4C /* sv_move.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_move.c; path = ../Quake/sv_move.c; sourceTree = SOURCE_ROOT; }; + 483A78430D2EEAAB00CB2E4C /* sv_phys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_phys.c; path = ../Quake/sv_phys.c; sourceTree = SOURCE_ROOT; }; + 483A78440D2EEAAB00CB2E4C /* sv_user.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_user.c; path = ../Quake/sv_user.c; sourceTree = SOURCE_ROOT; }; + 483A78500D2EEAC300CB2E4C /* cd_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cd_sdl.c; path = ../Quake/cd_sdl.c; sourceTree = SOURCE_ROOT; }; + 483A78540D2EEAC300CB2E4C /* snd_sdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_sdl.c; path = ../Quake/snd_sdl.c; sourceTree = SOURCE_ROOT; }; + 483A785A0D2EEAF000CB2E4C /* gl_draw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_draw.c; path = ../Quake/gl_draw.c; sourceTree = SOURCE_ROOT; }; + 483A785B0D2EEAF000CB2E4C /* gl_fog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_fog.c; path = ../Quake/gl_fog.c; sourceTree = SOURCE_ROOT; }; + 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_mesh.c; path = ../Quake/gl_mesh.c; sourceTree = SOURCE_ROOT; }; + 483A785D0D2EEAF000CB2E4C /* gl_model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_model.c; path = ../Quake/gl_model.c; sourceTree = SOURCE_ROOT; }; + 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_refrag.c; path = ../Quake/gl_refrag.c; sourceTree = SOURCE_ROOT; }; + 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_rlight.c; path = ../Quake/gl_rlight.c; sourceTree = SOURCE_ROOT; }; + 483A78600D2EEAF000CB2E4C /* gl_rmain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_rmain.c; path = ../Quake/gl_rmain.c; sourceTree = SOURCE_ROOT; }; + 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_rmisc.c; path = ../Quake/gl_rmisc.c; sourceTree = SOURCE_ROOT; }; + 483A78620D2EEAF000CB2E4C /* gl_screen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_screen.c; path = ../Quake/gl_screen.c; sourceTree = SOURCE_ROOT; }; + 483A78630D2EEAF000CB2E4C /* gl_sky.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_sky.c; path = ../Quake/gl_sky.c; sourceTree = SOURCE_ROOT; }; + 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mikmod.c; path = ../Quake/snd_mikmod.c; sourceTree = SOURCE_ROOT; }; + 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_texmgr.c; path = ../Quake/gl_texmgr.c; sourceTree = SOURCE_ROOT; }; + 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_vidsdl.c; path = ../Quake/gl_vidsdl.c; sourceTree = SOURCE_ROOT; }; + 483A78670D2EEAF000CB2E4C /* gl_warp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gl_warp.c; path = ../Quake/gl_warp.c; sourceTree = SOURCE_ROOT; }; + 483A78680D2EEAF000CB2E4C /* image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = image.c; path = ../Quake/image.c; sourceTree = SOURCE_ROOT; }; + 483A78690D2EEAF000CB2E4C /* r_alias.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_alias.c; path = ../Quake/r_alias.c; sourceTree = SOURCE_ROOT; }; + 483A786A0D2EEAF000CB2E4C /* r_brush.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_brush.c; path = ../Quake/r_brush.c; sourceTree = SOURCE_ROOT; }; + 483A786B0D2EEAF000CB2E4C /* r_part.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_part.c; path = ../Quake/r_part.c; sourceTree = SOURCE_ROOT; }; + 483A786C0D2EEAF000CB2E4C /* r_sprite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_sprite.c; path = ../Quake/r_sprite.c; sourceTree = SOURCE_ROOT; }; + 483A786D0D2EEAF000CB2E4C /* r_world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r_world.c; path = ../Quake/r_world.c; sourceTree = SOURCE_ROOT; }; + 4846EB500D329BEB00A108DE /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = ../Quake/platform.h; sourceTree = SOURCE_ROOT; }; + 4847CD5E12057F94000B560F /* sys_sdl_unix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sys_sdl_unix.c; path = ../Quake/sys_sdl_unix.c; sourceTree = SOURCE_ROOT; }; + 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = QuakeSpasm.icns; sourceTree = "<group>"; }; + 4854B1B01340C646004C9F45 /* snd_mp3.c */ = {isa = PBXFileReference; comments = "NOTE: snd_mp3.c and snd_mpg123.c are mutually exclusive - build only one."; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mp3.c; path = ../Quake/snd_mp3.c; sourceTree = SOURCE_ROOT; }; + 486577C80D31A22A00E7920A /* snd_dma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_dma.c; path = ../Quake/snd_dma.c; sourceTree = SOURCE_ROOT; }; + 486577C90D31A22A00E7920A /* snd_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mem.c; path = ../Quake/snd_mem.c; sourceTree = SOURCE_ROOT; }; + 486577CA0D31A22A00E7920A /* snd_mix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mix.c; path = ../Quake/snd_mix.c; sourceTree = SOURCE_ROOT; }; + 48728D280D3004A70004D61B /* net_dgrm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_dgrm.c; path = ../Quake/net_dgrm.c; sourceTree = SOURCE_ROOT; }; + 48728D290D3004A80004D61B /* net_dgrm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_dgrm.h; path = ../Quake/net_dgrm.h; sourceTree = SOURCE_ROOT; }; + 48728D2A0D3004A80004D61B /* net_loop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = net_loop.c; path = ../Quake/net_loop.c; sourceTree = SOURCE_ROOT; }; + 48728D2B0D3004A80004D61B /* net_loop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_loop.h; path = ../Quake/net_loop.h; sourceTree = SOURCE_ROOT; }; + 4885A84A179740A0000EC703 /* snd_opus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_opus.c; path = ../Quake/snd_opus.c; sourceTree = "<group>"; }; + 4885A84B179740A0000EC703 /* snd_opus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_opus.h; path = ../Quake/snd_opus.h; sourceTree = "<group>"; }; + 4885A84D179740CA000EC703 /* libopus.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopus.dylib; path = codecs/lib/libopus.dylib; sourceTree = "<group>"; }; + 4885A84E179740CA000EC703 /* libopusfile.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopusfile.dylib; path = codecs/lib/libopusfile.dylib; sourceTree = "<group>"; }; + 48895DB80D4914A000849ABF /* pl_osx.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = pl_osx.m; path = ../Quake/pl_osx.m; sourceTree = SOURCE_ROOT; }; + 488EF23614B83A370021DD41 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 489D8D2D0D3A630D00AA4471 /* ScreenInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScreenInfo.h; sourceTree = "<group>"; }; + 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScreenInfo.m; sourceTree = "<group>"; }; + 48A7C1F914AA34940011B754 /* strl_fn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = strl_fn.h; path = ../Quake/strl_fn.h; sourceTree = "<group>"; }; + 48A7C1FA14AA34940011B754 /* strlcat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = strlcat.c; path = ../Quake/strlcat.c; sourceTree = "<group>"; }; + 48A7C1FB14AA34940011B754 /* strlcpy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = strlcpy.c; path = ../Quake/strlcpy.c; sourceTree = "<group>"; }; + 48B9E7870D340B1E0001CACF /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Launcher.nib; sourceTree = "<group>"; }; + 48B9E7A50D340BEA0001CACF /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; }; + 48B9E7A60D340BEA0001CACF /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; }; + 48B9E7BE0D340EA80001CACF /* SDLApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLApplication.h; sourceTree = "<group>"; }; + 48B9E7BF0D340EA80001CACF /* SDLApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLApplication.m; sourceTree = "<group>"; }; + 48C85E390D3AD10E00797678 /* QuakeArgument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuakeArgument.h; sourceTree = "<group>"; }; + 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuakeArgument.m; sourceTree = "<group>"; }; + 48E2EC7915FB507A00B8D476 /* libmad.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmad.dylib; path = codecs/lib/libmad.dylib; sourceTree = "<group>"; }; + 48E2EC7A15FB507A00B8D476 /* libogg.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libogg.dylib; path = codecs/lib/libogg.dylib; sourceTree = "<group>"; }; + 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libvorbis.dylib; path = codecs/lib/libvorbis.dylib; sourceTree = "<group>"; }; + 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libvorbisfile.dylib; path = codecs/lib/libvorbisfile.dylib; sourceTree = "<group>"; }; + 48FE58590D3A82C8006BB491 /* QuakeArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuakeArguments.h; sourceTree = "<group>"; }; + 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuakeArguments.m; sourceTree = "<group>"; }; + 6314789527F1AF1A0023B20A /* snd_modplug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_modplug.h; path = ../Quake/snd_modplug.h; sourceTree = SOURCE_ROOT; }; + 6314789627F1AF3C0023B20A /* snd_modplug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_modplug.c; path = ../Quake/snd_modplug.c; sourceTree = SOURCE_ROOT; }; + 6339437326EA48EA000D25C3 /* arch_def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arch_def.h; path = ../Quake/arch_def.h; sourceTree = SOURCE_ROOT; }; + 6339437626EA48F9000D25C3 /* default_cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = default_cfg.h; path = ../Quake/default_cfg.h; sourceTree = SOURCE_ROOT; }; + 6339437726EA4907000D25C3 /* filenames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filenames.h; path = ../Quake/filenames.h; sourceTree = SOURCE_ROOT; }; + 6339437826EA4917000D25C3 /* lodepng.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lodepng.c; path = ../Quake/lodepng.c; sourceTree = SOURCE_ROOT; }; + 6339437926EA4917000D25C3 /* lodepng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lodepng.h; path = ../Quake/lodepng.h; sourceTree = SOURCE_ROOT; }; + 6339437B26EA495D000D25C3 /* miniz.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = miniz.c; path = ../Quake/miniz.c; sourceTree = SOURCE_ROOT; }; + 6339437C26EA495D000D25C3 /* miniz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = miniz.h; path = ../Quake/miniz.h; sourceTree = SOURCE_ROOT; }; + 6339437E26EA4998000D25C3 /* net_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net_sys.h; path = ../Quake/net_sys.h; sourceTree = SOURCE_ROOT; }; + 6339437F26EA49AA000D25C3 /* q_ctype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = q_ctype.h; path = ../Quake/q_ctype.h; sourceTree = SOURCE_ROOT; }; + 6339438026EA49B7000D25C3 /* q_stdinc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = q_stdinc.h; path = ../Quake/q_stdinc.h; sourceTree = SOURCE_ROOT; }; + 6339438126EA49B7000D25C3 /* qs_bmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qs_bmp.h; path = ../Quake/qs_bmp.h; sourceTree = SOURCE_ROOT; }; + 6339438226EA49CC000D25C3 /* snd_mikmod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_mikmod.h; path = ../Quake/snd_mikmod.h; sourceTree = SOURCE_ROOT; }; + 6339438326EA49DD000D25C3 /* snd_umx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_umx.h; path = ../Quake/snd_umx.h; sourceTree = SOURCE_ROOT; }; + 6339438426EA49EA000D25C3 /* stb_image_write.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_image_write.h; path = ../Quake/stb_image_write.h; sourceTree = SOURCE_ROOT; }; + 6339438526EA49FE000D25C3 /* snd_xmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_xmp.c; path = ../Quake/snd_xmp.c; sourceTree = SOURCE_ROOT; }; + 6339438626EA49FE000D25C3 /* snd_xmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_xmp.h; path = ../Quake/snd_xmp.h; sourceTree = SOURCE_ROOT; }; + 6339438826EA4A25000D25C3 /* snd_mpg123.c */ = {isa = PBXFileReference; comments = "NOTE: snd_mp3.c and snd_mpg123.c are mutually exclusive - build only one."; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mpg123.c; path = ../Quake/snd_mpg123.c; sourceTree = SOURCE_ROOT; }; + 63D6EB5E23A2563B0047028C /* snd_mp3tag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snd_mp3tag.c; path = ../Quake/snd_mp3tag.c; sourceTree = SOURCE_ROOT; }; + 664D98FB19CF6B78000D395C /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Info copy.plist"; sourceTree = "<group>"; }; + 664D990519CF6E16000D395C /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SDL2.framework; sourceTree = SOURCE_ROOT; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; + 8D1107320486CEB800E47090 /* QuakeSpasm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuakeSpasm.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B021C20714A5FF7E003F18D6 /* cfgfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cfgfile.c; path = ../Quake/cfgfile.c; sourceTree = SOURCE_ROOT; }; + B021C20814A5FF7E003F18D6 /* cfgfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cfgfile.h; path = ../Quake/cfgfile.h; sourceTree = SOURCE_ROOT; }; + F5F5DE80017CB4370103A810 /* libxmp.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxmp.dylib; path = codecs/lib/libxmp.dylib; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 482812FD179C3EF4004E1D61 /* libFLAC.dylib in Frameworks */, + 4885A84F179740CA000EC703 /* libopus.dylib in Frameworks */, + 4885A850179740CA000EC703 /* libopusfile.dylib in Frameworks */, + 48E2EC7D15FB507A00B8D476 /* libmad.dylib in Frameworks */, + 48E2EC7E15FB507A00B8D476 /* libogg.dylib in Frameworks */, + 48E2EC7F15FB507A00B8D476 /* libvorbis.dylib in Frameworks */, + 48E2EC8015FB507A00B8D476 /* libvorbisfile.dylib in Frameworks */, + A4E3AF6205D43FCC000F1B47 /* libxmp.dylib in Frameworks */, + 48E2EC7815FB500400B8D476 /* IOKit.framework in Frameworks */, + 002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */, + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 002F3C0109D093BD00EBEB88 /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 488EF23614B83A370021DD41 /* IOKit.framework */, + 664D990519CF6E16000D395C /* SDL2.framework */, + 002F39F909D0881F00EBEB88 /* SDL.framework */, + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 002F3C0009D093BD00EBEB88 /* OpenGL.framework */, + ); + name = "Linked Frameworks"; + sourceTree = "<group>"; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = "<group>"; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* QuakeSpasm.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 29B97314FDCFA39411CA2CEA /* QuakeSpasm */ = { + isa = PBXGroup; + children = ( + 482812FC179C3EF4004E1D61 /* libFLAC.dylib */, + 4885A84D179740CA000EC703 /* libopus.dylib */, + 4885A84E179740CA000EC703 /* libopusfile.dylib */, + 48E2EC7915FB507A00B8D476 /* libmad.dylib */, + 48E2EC7A15FB507A00B8D476 /* libogg.dylib */, + 48E2EC7B15FB507A00B8D476 /* libvorbis.dylib */, + 48E2EC7C15FB507A00B8D476 /* libvorbisfile.dylib */, + F5F5DE80017CB4370103A810 /* libxmp.dylib */, + 48243B060D33ED0A00C29F8F /* MacOSX */, + 483A77D80D2EE8C500CB2E4C /* Quake */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + indentWidth = 4; + name = QuakeSpasm; + sourceTree = "<group>"; + tabWidth = 4; + usesTabs = 1; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 484AA4B30D3FF6C0005D917A /* QuakeSpasm.icns */, + 48B9E7860D340B1E0001CACF /* Launcher.nib */, + 8D1107310486CEB800E47090 /* Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + 664D98FB19CF6B78000D395C /* Info copy.plist */, + ); + name = Resources; + sourceTree = "<group>"; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; + 48243B060D33ED0A00C29F8F /* MacOSX */ = { + isa = PBXGroup; + children = ( + 48B9E7A50D340BEA0001CACF /* AppController.h */, + 48B9E7A60D340BEA0001CACF /* AppController.m */, + 48FE58590D3A82C8006BB491 /* QuakeArguments.h */, + 48FE585A0D3A82C8006BB491 /* QuakeArguments.m */, + 489D8D2D0D3A630D00AA4471 /* ScreenInfo.h */, + 489D8D2E0D3A630D00AA4471 /* ScreenInfo.m */, + 48B9E7BE0D340EA80001CACF /* SDLApplication.h */, + 48B9E7BF0D340EA80001CACF /* SDLApplication.m */, + 002F3A2B09D0888800EBEB88 /* SDLMain.h */, + 002F3A2C09D0888800EBEB88 /* SDLMain.m */, + 48C85E390D3AD10E00797678 /* QuakeArgument.h */, + 48C85E3A0D3AD10E00797678 /* QuakeArgument.m */, + ); + name = MacOSX; + sourceTree = "<group>"; + }; + 483A77D80D2EE8C500CB2E4C /* Quake */ = { + isa = PBXGroup; + children = ( + 483A77D90D2EE8D400CB2E4C /* Generic */, + 483A77DA0D2EE8DA00CB2E4C /* Input */, + 483A77DD0D2EE8F100CB2E4C /* Network */, + 483A77DC0D2EE8ED00CB2E4C /* Sound */, + 483A77DB0D2EE8E600CB2E4C /* Video */, + ); + name = Quake; + sourceTree = "<group>"; + }; + 483A77D90D2EE8D400CB2E4C /* Generic */ = { + isa = PBXGroup; + children = ( + 483A77DE0D2EE8FB00CB2E4C /* Headers */, + B021C20714A5FF7E003F18D6 /* cfgfile.c */, + 483A78100D2EEA5400CB2E4C /* chase.c */, + 483A78110D2EEA5400CB2E4C /* cmd.c */, + 483A78120D2EEA5400CB2E4C /* common.c */, + 483A78130D2EEA5400CB2E4C /* console.c */, + 483A78140D2EEA5400CB2E4C /* crc.c */, + 6339437B26EA495D000D25C3 /* miniz.c */, + 483A78150D2EEA5400CB2E4C /* cvar.c */, + 483A78170D2EEA5400CB2E4C /* host.c */, + 483A78160D2EEA5400CB2E4C /* host_cmd.c */, + 48243B130D33F01A00C29F8F /* main_sdl.c */, + 483A78180D2EEA5400CB2E4C /* mathlib.c */, + 483A78190D2EEA5400CB2E4C /* menu.c */, + 48895DB80D4914A000849ABF /* pl_osx.m */, + 483A781A0D2EEA5400CB2E4C /* pr_cmds.c */, + 483A781B0D2EEA5400CB2E4C /* pr_edict.c */, + 483A781C0D2EEA5400CB2E4C /* pr_exec.c */, + 483A780E0D2EEA0F00CB2E4C /* progdefs.q1 */, + 483A781D0D2EEA5400CB2E4C /* sbar.c */, + 48A7C1FA14AA34940011B754 /* strlcat.c */, + 48A7C1FB14AA34940011B754 /* strlcpy.c */, + 4847CD5E12057F94000B560F /* sys_sdl_unix.c */, + 483A781F0D2EEA5400CB2E4C /* view.c */, + 483A78200D2EEA5400CB2E4C /* wad.c */, + 483A78210D2EEA5400CB2E4C /* world.c */, + 483A78220D2EEA5400CB2E4C /* zone.c */, + ); + name = Generic; + sourceTree = "<group>"; + }; + 483A77DA0D2EE8DA00CB2E4C /* Input */ = { + isa = PBXGroup; + children = ( + 483A77DF0D2EE90500CB2E4C /* Headers */, + 483A78360D2EEA6D00CB2E4C /* in_sdl.c */, + 483A78370D2EEA6D00CB2E4C /* keys.c */, + ); + name = Input; + sourceTree = "<group>"; + }; + 483A77DB0D2EE8E600CB2E4C /* Video */ = { + isa = PBXGroup; + children = ( + 483A77E20D2EE91500CB2E4C /* Headers */, + 483A785A0D2EEAF000CB2E4C /* gl_draw.c */, + 483A785B0D2EEAF000CB2E4C /* gl_fog.c */, + 483A785C0D2EEAF000CB2E4C /* gl_mesh.c */, + 483A785D0D2EEAF000CB2E4C /* gl_model.c */, + 483A785E0D2EEAF000CB2E4C /* gl_refrag.c */, + 483A785F0D2EEAF000CB2E4C /* gl_rlight.c */, + 483A78600D2EEAF000CB2E4C /* gl_rmain.c */, + 483A78610D2EEAF000CB2E4C /* gl_rmisc.c */, + 483A78620D2EEAF000CB2E4C /* gl_screen.c */, + 483A78630D2EEAF000CB2E4C /* gl_sky.c */, + 483A78650D2EEAF000CB2E4C /* gl_texmgr.c */, + 483A78660D2EEAF000CB2E4C /* gl_vidsdl.c */, + 483A78670D2EEAF000CB2E4C /* gl_warp.c */, + 483A78680D2EEAF000CB2E4C /* image.c */, + 6339437826EA4917000D25C3 /* lodepng.c */, + 483A78690D2EEAF000CB2E4C /* r_alias.c */, + 483A786A0D2EEAF000CB2E4C /* r_brush.c */, + 483A786B0D2EEAF000CB2E4C /* r_part.c */, + 483A786C0D2EEAF000CB2E4C /* r_sprite.c */, + 483A786D0D2EEAF000CB2E4C /* r_world.c */, + ); + name = Video; + sourceTree = "<group>"; + }; + 483A77DC0D2EE8ED00CB2E4C /* Sound */ = { + isa = PBXGroup; + children = ( + 483A77E10D2EE91000CB2E4C /* Headers */, + 4818B0A112D5B9AE006DD66E /* bgmusic.c */, + 483A78500D2EEAC300CB2E4C /* cd_sdl.c */, + 4818B0AC12D5B9ED006DD66E /* snd_codec.c */, + 486577C80D31A22A00E7920A /* snd_dma.c */, + 482812FF179C3F13004E1D61 /* snd_flac.c */, + 486577C90D31A22A00E7920A /* snd_mem.c */, + 486577CA0D31A22A00E7920A /* snd_mix.c */, + 483A78540D2EEAC300CB2E4C /* snd_sdl.c */, + 4854B1B01340C646004C9F45 /* snd_mp3.c */, + 6339438826EA4A25000D25C3 /* snd_mpg123.c */, + 63D6EB5E23A2563B0047028C /* snd_mp3tag.c */, + 4885A84A179740A0000EC703 /* snd_opus.c */, + 483A78640D2EEAF000CB2E4C /* snd_mikmod.c */, + 6314789627F1AF3C0023B20A /* snd_modplug.c */, + 6339438526EA49FE000D25C3 /* snd_xmp.c */, + 4818B0B012D5BA1A006DD66E /* snd_umx.c */, + 4818B0B212D5BA1A006DD66E /* snd_vorbis.c */, + 4818B0B412D5BA1A006DD66E /* snd_wave.c */, + ); + name = Sound; + sourceTree = "<group>"; + }; + 483A77DD0D2EE8F100CB2E4C /* Network */ = { + isa = PBXGroup; + children = ( + 483A77E00D2EE90B00CB2E4C /* Headers */, + 483A783A0D2EEAAB00CB2E4C /* cl_demo.c */, + 483A783B0D2EEAAB00CB2E4C /* cl_input.c */, + 483A783C0D2EEAAB00CB2E4C /* cl_main.c */, + 483A783D0D2EEAAB00CB2E4C /* cl_parse.c */, + 483A783E0D2EEAAB00CB2E4C /* cl_tent.c */, + 48134A1412102F400015BF15 /* net_bsd.c */, + 48728D280D3004A70004D61B /* net_dgrm.c */, + 48728D2A0D3004A80004D61B /* net_loop.c */, + 483A783F0D2EEAAB00CB2E4C /* net_main.c */, + 48134A1612102F400015BF15 /* net_udp.c */, + 483A78410D2EEAAB00CB2E4C /* sv_main.c */, + 483A78420D2EEAAB00CB2E4C /* sv_move.c */, + 483A78430D2EEAAB00CB2E4C /* sv_phys.c */, + 483A78440D2EEAAB00CB2E4C /* sv_user.c */, + ); + name = Network; + sourceTree = "<group>"; + }; + 483A77DE0D2EE8FB00CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 6339437326EA48EA000D25C3 /* arch_def.h */, + B021C20814A5FF7E003F18D6 /* cfgfile.h */, + 483A77E60D2EE97700CB2E4C /* cmd.h */, + 483A77E70D2EE97700CB2E4C /* common.h */, + 483A77E80D2EE97700CB2E4C /* console.h */, + 483A77E90D2EE97700CB2E4C /* crc.h */, + 6339437626EA48F9000D25C3 /* default_cfg.h */, + 6339437726EA4907000D25C3 /* filenames.h */, + 6339437C26EA495D000D25C3 /* miniz.h */, + 483A77EA0D2EE97700CB2E4C /* cvar.h */, + 483A77EB0D2EE97700CB2E4C /* mathlib.h */, + 483A77EC0D2EE97700CB2E4C /* menu.h */, + 4846EB500D329BEB00A108DE /* platform.h */, + 483A77ED0D2EE97700CB2E4C /* pr_comp.h */, + 483A77EE0D2EE97700CB2E4C /* progdefs.h */, + 483A77EF0D2EE97700CB2E4C /* progs.h */, + 483A77F00D2EE97700CB2E4C /* quakedef.h */, + 6339438026EA49B7000D25C3 /* q_stdinc.h */, + 6339437F26EA49AA000D25C3 /* q_ctype.h */, + 483A77F10D2EE97700CB2E4C /* sbar.h */, + 48A7C1F914AA34940011B754 /* strl_fn.h */, + 483A77F20D2EE97700CB2E4C /* sys.h */, + 483A77F30D2EE97700CB2E4C /* view.h */, + 483A77F40D2EE97700CB2E4C /* wad.h */, + 483A77F50D2EE97700CB2E4C /* world.h */, + 483A77F60D2EE97700CB2E4C /* zone.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77DF0D2EE90500CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 483A77F70D2EE98D00CB2E4C /* input.h */, + 483A77F80D2EE98D00CB2E4C /* keys.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77E00D2EE90B00CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 483A77F90D2EE9A900CB2E4C /* client.h */, + 483A77FA0D2EE9A900CB2E4C /* net.h */, + 48134A1512102F400015BF15 /* net_defs.h */, + 48728D290D3004A80004D61B /* net_dgrm.h */, + 48728D2B0D3004A80004D61B /* net_loop.h */, + 48134A1712102F400015BF15 /* net_udp.h */, + 6339437E26EA4998000D25C3 /* net_sys.h */, + 483A77FB0D2EE9A900CB2E4C /* protocol.h */, + 483A77FC0D2EE9A900CB2E4C /* server.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77E10D2EE91000CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 4818B0A212D5B9AE006DD66E /* bgmusic.h */, + 483A77FD0D2EE9BD00CB2E4C /* cdaudio.h */, + 483A77FE0D2EE9BD00CB2E4C /* q_sound.h */, + 4818B0AD12D5B9ED006DD66E /* snd_codec.h */, + 4818B0AF12D5BA1A006DD66E /* snd_codeci.h */, + 48281300179C3F13004E1D61 /* snd_flac.h */, + 4818B0B112D5BA1A006DD66E /* snd_mp3.h */, + 4885A84B179740A0000EC703 /* snd_opus.h */, + 4818B0B312D5BA1A006DD66E /* snd_vorbis.h */, + 4818B0B512D5BA1A006DD66E /* snd_wave.h */, + 6339438226EA49CC000D25C3 /* snd_mikmod.h */, + 6314789527F1AF1A0023B20A /* snd_modplug.h */, + 6339438626EA49FE000D25C3 /* snd_xmp.h */, + 6339438326EA49DD000D25C3 /* snd_umx.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; + 483A77E20D2EE91500CB2E4C /* Headers */ = { + isa = PBXGroup; + children = ( + 483A77FF0D2EE9F300CB2E4C /* anorm_dots.h */, + 483A78000D2EE9F300CB2E4C /* anorms.h */, + 483A78010D2EE9F300CB2E4C /* bspfile.h */, + 483A78030D2EE9F300CB2E4C /* draw.h */, + 483A78040D2EE9F300CB2E4C /* gl_model.h */, + 483A78050D2EE9F300CB2E4C /* gl_texmgr.h */, + 483A78060D2EE9F300CB2E4C /* gl_warp_sin.h */, + 483A78070D2EE9F300CB2E4C /* glquake.h */, + 483A78080D2EE9F300CB2E4C /* image.h */, + 6339437926EA4917000D25C3 /* lodepng.h */, + 6339438426EA49EA000D25C3 /* stb_image_write.h */, + 6339438126EA49B7000D25C3 /* qs_bmp.h */, + 483A78090D2EE9F300CB2E4C /* modelgen.h */, + 483A780A0D2EE9F300CB2E4C /* render.h */, + 483A780B0D2EE9F300CB2E4C /* screen.h */, + 483A780C0D2EE9F300CB2E4C /* spritegn.h */, + 483A780D0D2EE9F300CB2E4C /* vid.h */, + ); + name = Headers; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* QuakeSpasm */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "QuakeSpasm" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + 002F39FD09D0883400EBEB88 /* Copy Frameworks */, + 48692C131340A46800A0F098 /* Copy Libraries */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = QuakeSpasm; + productInstallPath = "$(HOME)/Applications"; + productName = QuakeSpasm; + productReference = 8D1107320486CEB800E47090 /* QuakeSpasm.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0420; + }; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "QuakeSpasmPPC" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* QuakeSpasm */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* QuakeSpasm */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 48B9E7880D340B1E0001CACF /* Launcher.nib in Resources */, + 484AA4B40D3FF6C0005D917A /* QuakeSpasm.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002F3A2E09D0888800EBEB88 /* SDLMain.m in Sources */, + 483A78230D2EEA5400CB2E4C /* chase.c in Sources */, + 483A78240D2EEA5400CB2E4C /* cmd.c in Sources */, + 483A78250D2EEA5400CB2E4C /* common.c in Sources */, + 483A78260D2EEA5400CB2E4C /* console.c in Sources */, + 483A78270D2EEA5400CB2E4C /* crc.c in Sources */, + 483A78280D2EEA5400CB2E4C /* cvar.c in Sources */, + 483A78290D2EEA5400CB2E4C /* host_cmd.c in Sources */, + 483A782A0D2EEA5400CB2E4C /* host.c in Sources */, + 483A782B0D2EEA5400CB2E4C /* mathlib.c in Sources */, + 483A782C0D2EEA5400CB2E4C /* menu.c in Sources */, + 483A782D0D2EEA5400CB2E4C /* pr_cmds.c in Sources */, + 483A782E0D2EEA5400CB2E4C /* pr_edict.c in Sources */, + 483A782F0D2EEA5400CB2E4C /* pr_exec.c in Sources */, + 483A78300D2EEA5400CB2E4C /* sbar.c in Sources */, + 483A78320D2EEA5400CB2E4C /* view.c in Sources */, + 483A78330D2EEA5400CB2E4C /* wad.c in Sources */, + 483A78340D2EEA5400CB2E4C /* world.c in Sources */, + 483A78350D2EEA5400CB2E4C /* zone.c in Sources */, + 483A78380D2EEA6D00CB2E4C /* in_sdl.c in Sources */, + 483A78390D2EEA6D00CB2E4C /* keys.c in Sources */, + 483A78450D2EEAAB00CB2E4C /* cl_demo.c in Sources */, + 483A78460D2EEAAB00CB2E4C /* cl_input.c in Sources */, + 483A78470D2EEAAB00CB2E4C /* cl_main.c in Sources */, + 483A78480D2EEAAB00CB2E4C /* cl_parse.c in Sources */, + 483A78490D2EEAAB00CB2E4C /* cl_tent.c in Sources */, + 483A784A0D2EEAAB00CB2E4C /* net_main.c in Sources */, + 483A784C0D2EEAAB00CB2E4C /* sv_main.c in Sources */, + 483A784D0D2EEAAB00CB2E4C /* sv_move.c in Sources */, + 483A784E0D2EEAAB00CB2E4C /* sv_phys.c in Sources */, + 483A784F0D2EEAAB00CB2E4C /* sv_user.c in Sources */, + 483A78550D2EEAC300CB2E4C /* cd_sdl.c in Sources */, + 483A78590D2EEAC300CB2E4C /* snd_sdl.c in Sources */, + 483A786E0D2EEAF000CB2E4C /* gl_draw.c in Sources */, + 483A786F0D2EEAF000CB2E4C /* gl_fog.c in Sources */, + 483A78700D2EEAF000CB2E4C /* gl_mesh.c in Sources */, + 483A78710D2EEAF000CB2E4C /* gl_model.c in Sources */, + 483A78720D2EEAF000CB2E4C /* gl_refrag.c in Sources */, + 483A78730D2EEAF000CB2E4C /* gl_rlight.c in Sources */, + 483A78740D2EEAF000CB2E4C /* gl_rmain.c in Sources */, + 483A78750D2EEAF000CB2E4C /* gl_rmisc.c in Sources */, + 483A78760D2EEAF000CB2E4C /* gl_screen.c in Sources */, + 483A78770D2EEAF000CB2E4C /* gl_sky.c in Sources */, + 483A78790D2EEAF000CB2E4C /* gl_texmgr.c in Sources */, + 483A787A0D2EEAF000CB2E4C /* gl_vidsdl.c in Sources */, + 483A787B0D2EEAF000CB2E4C /* gl_warp.c in Sources */, + 483A787C0D2EEAF000CB2E4C /* image.c in Sources */, + 483A787D0D2EEAF000CB2E4C /* r_alias.c in Sources */, + 483A787E0D2EEAF000CB2E4C /* r_brush.c in Sources */, + 483A787F0D2EEAF000CB2E4C /* r_part.c in Sources */, + 483A78800D2EEAF000CB2E4C /* r_sprite.c in Sources */, + 483A78810D2EEAF000CB2E4C /* r_world.c in Sources */, + 48728D2D0D3004A80004D61B /* net_dgrm.c in Sources */, + 48728D2E0D3004A80004D61B /* net_loop.c in Sources */, + 486577CB0D31A22A00E7920A /* snd_dma.c in Sources */, + 486577CC0D31A22A00E7920A /* snd_mem.c in Sources */, + 486577CD0D31A22A00E7920A /* snd_mix.c in Sources */, + 48243B140D33F01A00C29F8F /* main_sdl.c in Sources */, + 48B9E7A70D340BEA0001CACF /* AppController.m in Sources */, + 48B9E7C00D340EA80001CACF /* SDLApplication.m in Sources */, + 489D8D2F0D3A630D00AA4471 /* ScreenInfo.m in Sources */, + 48FE585B0D3A82C8006BB491 /* QuakeArguments.m in Sources */, + 48C85E3B0D3AD10E00797678 /* QuakeArgument.m in Sources */, + 48895DB90D4914A000849ABF /* pl_osx.m in Sources */, + 4847CD5F12057F94000B560F /* sys_sdl_unix.c in Sources */, + 48134A1812102F400015BF15 /* net_bsd.c in Sources */, + 48134A1912102F400015BF15 /* net_udp.c in Sources */, + 4818B0A312D5B9AE006DD66E /* bgmusic.c in Sources */, + 4818B0AE12D5B9ED006DD66E /* snd_codec.c in Sources */, + 4818B0B712D5BA1A006DD66E /* snd_vorbis.c in Sources */, + 4818B0B812D5BA1A006DD66E /* snd_wave.c in Sources */, + 4854B1B11340C646004C9F45 /* snd_mp3.c in Sources */, + 483A78780D2EEAF000CB2E4C /* snd_mikmod.c in Sources */, + 32CA4F630368D1EE00C91783 /* snd_umx.c in Sources */, + B021C20914A5FF7E003F18D6 /* cfgfile.c in Sources */, + 48A7C1FC14AA34940011B754 /* strlcat.c in Sources */, + 48A7C1FD14AA34940011B754 /* strlcpy.c in Sources */, + 4885A84C179740A0000EC703 /* snd_opus.c in Sources */, + 48281301179C3F13004E1D61 /* snd_flac.c in Sources */, + 63D6EB5F23A2563B0047028C /* snd_mp3tag.c in Sources */, + 6339437D26EA495D000D25C3 /* miniz.c in Sources */, + 6339438726EA49FE000D25C3 /* snd_xmp.c in Sources */, + 6314789727F1AF3C0023B20A /* snd_modplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; + 48B9E7860D340B1E0001CACF /* Launcher.nib */ = { + isa = PBXVariantGroup; + children = ( + 48B9E7870D340B1E0001CACF /* English */, + ); + name = Launcher.nib; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 667B970C1C390232008775FA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ppc; + COPY_PHASE_STRIP = NO; + DEPLOYMENT_POSTPROCESSING = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + OTHER_CFLAGS = ""; + "OTHER_CFLAGS[arch=i386]" = "-arch i386"; + "OTHER_CFLAGS[arch=ppc]" = "-arch ppc"; + "OTHER_LDFLAGS[arch=i386]" = "-arch i386"; + "OTHER_LDFLAGS[arch=ppc]" = "-arch ppc"; + PRODUCT_NAME = QuakeSpasm; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 667B970D1C390232008775FA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + x86_64, + i386, + ppc, + ); + DEPLOYMENT_POSTPROCESSING = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SRCROOT)", + "$(FRAMEWORK_SEARCH_PATHS)", + ); + GCC_MODEL_TUNING = G3; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.4; + "MACOSX_DEPLOYMENT_TARGET[arch=i386]" = 10.4; + "MACOSX_DEPLOYMENT_TARGET[arch=ppc]" = 10.4; + "MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.6; + ONLY_ACTIVE_ARCH = NO; + OTHER_CFLAGS = ""; + "OTHER_CFLAGS[arch=ppc]" = "-arch ppc"; + OTHER_LDFLAGS = ""; + "OTHER_LDFLAGS[arch=i386]" = "-mmacosx-version-min=10.4 -arch i386"; + "OTHER_LDFLAGS[arch=ppc]" = "-mmacosx-version-min=10.4 -arch ppc"; + PREBINDING = NO; + "SDKROOT[arch=i386]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; + "SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; + "SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; + VALID_ARCHS = "i386 x86_64 ppc"; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ppc; + COPY_PHASE_STRIP = NO; + DEPLOYMENT_POSTPROCESSING = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(SRCROOT)/codecs/lib", + ); + OTHER_CFLAGS = ""; + "OTHER_CFLAGS[arch=i386]" = "-arch i386"; + "OTHER_CFLAGS[arch=ppc]" = "-arch ppc"; + "OTHER_LDFLAGS[arch=i386]" = "-arch i386"; + "OTHER_LDFLAGS[arch=ppc]" = "-arch ppc"; + PRODUCT_NAME = QuakeSpasm; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + x86_64, + i386, + ppc, + ); + DEPLOYMENT_POSTPROCESSING = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SRCROOT)", + "$(FRAMEWORK_SEARCH_PATHS)", + ); + GCC_MODEL_TUNING = G3; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_CODEC_MP3, + USE_CODEC_VORBIS, + USE_CODEC_WAVE, + USE_CODEC_FLAC, + USE_CODEC_OPUS, + USE_CODEC_XMP, + USE_CODEC_UMX, + SDL_FRAMEWORK, + ); + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + codecs/include, + "$(HEADER_SEARCH_PATHS)", + ); + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.4; + "MACOSX_DEPLOYMENT_TARGET[arch=i386]" = 10.4; + "MACOSX_DEPLOYMENT_TARGET[arch=ppc]" = 10.4; + "MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.6; + ONLY_ACTIVE_ARCH = NO; + OTHER_CFLAGS = ""; + "OTHER_CFLAGS[arch=ppc]" = "-arch ppc"; + OTHER_LDFLAGS = ""; + "OTHER_LDFLAGS[arch=i386]" = "-mmacosx-version-min=10.4 -arch i386"; + "OTHER_LDFLAGS[arch=ppc]" = "-mmacosx-version-min=10.4 -arch ppc"; + PREBINDING = NO; + "SDKROOT[arch=i386]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; + "SDKROOT[arch=ppc]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; + "SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk"; + VALID_ARCHS = "i386 x86_64 ppc"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "QuakeSpasm" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4C08A954540054247B /* Release */, + 667B970C1C390232008775FA /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "QuakeSpasmPPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF5008A954540054247B /* Release */, + 667B970D1C390232008775FA /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/MacOSX/SDL.framework/Headers b/MacOSX/SDL.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/MacOSX/SDL.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/MacOSX/SDL.framework/License.rtf b/MacOSX/SDL.framework/License.rtf new file mode 100644 index 0000000..706980d --- /dev/null +++ b/MacOSX/SDL.framework/License.rtf @@ -0,0 +1,283 @@ +{\rtf1\mac\ansicpg10000\cocoartf102 +{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Oblique; +} +{\colortbl;\red255\green255\blue255;\red64\green64\blue64;} +\paperw11900\paperh16840\margl1440\margr1440\vieww9080\viewh13160\viewkind0 +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\qc + +\f0\b\fs36 \cf0 GNU LESSER GENERAL PUBLIC LICENSE +\fs24 \ +Version 2.1, February 1999 +\f1\b0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\qc + +\f2\i \cf0 Copyright (C) 1991, 1999 Free Software Foundation, Inc.\ + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\ + Everyone is permitted to copy and distribute verbatim copies\ + of this license document, but changing it is not allowed.\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f1\i0 \cf0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf2 [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]\cf0 \ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\qc + +\f0\b \cf0 Preamble +\f1\b0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\ +\ +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\ +\ +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\ +\ +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\ +\ +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\ +\ +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\ +\ +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\ +\ +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\ +\ +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We this license for certain libraries in order to permit linking those libraries into non-free programs.\ +\ +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.\ +\ +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.\ +\ +For example, on rare occasions, there may be a special need to encourage widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\ +\ +Another cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.\ +\ +Although the Lesser General Public License is Less protective of the users' freedom, it does insure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\ +\ +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\ +\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\qc + +\f0\b \cf0 GNU LESSER GENERAL PUBLIC LICENSE\ +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f1\b0 \cf0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b \cf0 0. +\f1\b0 This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".\ +\ +A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\ +\ +The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)\ +\ +"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\ +\ +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.\ + \ + +\f0\b 1. +\f1\b0 You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\ +\ +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\ +\ + +\f0\b 2. +\f1\b0 You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li240\ql\qnatural + +\f0\b \cf0 a) +\f1\b0 The modified work must itself be a software library.\ +\ + +\f0\b b) +\f1\b0 You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\ +\ + +\f0\b c) +\f1\b0 You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\ +\ + +\f0\b d) +\f1\b0 If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\ +\ +(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\ +\ +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\ +\ +In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b \cf0 3. +\f1\b0 You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.\ +\ +Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\ +\ +This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\ +\ + +\f0\b 4. +\f1\b0 You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\ +\ +If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\ +\ + +\f0\b 5. +\f1\b0 A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\ +\ +However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\ +\ +When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.\ +\ +If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)\ +\ +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\ +\ + +\f0\b 6. +\f1\b0 As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\ +\ +You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li240\ql\qnatural + +\f0\b \cf0 a) +\f1\b0 Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\ +\ + +\f0\b b) +\f1\b0 Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\ +\ + +\f0\b c) +\f1\b0 Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\ +\ + +\f0\b d) +\f1\b0 If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\ +\ + +\f0\b e) +\f1\b0 Verify that the user has already received a copy of these materials or that you have already sent this user a copy.\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\ +\ +It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b \cf0 7. +\f1\b0 You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li240\ql\qnatural + +\f0\b \cf0 a) +\f1\b0 Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.\ +\ + +\f0\b b) +\f1\b0 Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b \cf0 8. +\f1\b0 You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\ +\ + +\f0\b 9. +\f1\b0 You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\ +\ + +\f0\b 10. +\f1\b0 Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\ +\ + +\f0\b 11. +\f1\b0 If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\ +\ +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\ +\ +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\ +\ +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\ +\ + +\f0\b 12. +\f1\b0 If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\ +\ + +\f0\b 13. +\f1\b0 The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\ +\ +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\ +\ + +\f0\b 14. +\f1\b0 If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\qc + +\f0\b \cf0 NO WARRANTY +\f1\b0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b \cf0 15. +\f1\b0 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\ +\ + +\f0\b 16. +\f1\b0 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\qc + +\f0\b \cf0 END OF TERMS AND CONDITIONS +\f1\b0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +\ +How to Apply These Terms to Your New Libraries\ +\ +If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\ +\ +To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\ +\ +\pard\tx220\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li240\ql\qnatural +\cf0 <one line to give the library's name and a brief idea of what it does.>\ +Copyright (C) <year> <name of author>\ +\ +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\ +\ +This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\ +\ +You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +Also add information on how to contact you by electronic and paper mail.\ +\ +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\li240\ql\qnatural +\cf0 Yoyodyne, Inc., hereby disclaims all copyright interest in the library\ +`Frob' (a library for tweaking knobs) written by James Random Hacker.\ +\ +<signature of Ty Coon>, 1 April 1990\ +Ty Coon, President of Vice\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural +\cf0 \ +That's all there is to it!\ +\ +} \ No newline at end of file diff --git a/MacOSX/SDL.framework/ReadMe.txt b/MacOSX/SDL.framework/ReadMe.txt new file mode 100644 index 0000000..0731150 --- /dev/null +++ b/MacOSX/SDL.framework/ReadMe.txt @@ -0,0 +1,171 @@ +The Simple DirectMedia Layer (SDL for short) is a cross-platform +library designed to make it easy to write multi-media software, +such as games and emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the GNU LGPL license: +http://www.gnu.org/copyleft/lesser.html + + +This packages contains the SDL.framework for OS X. +Conforming with Apple guidelines, this framework +contains both the SDL runtime component and development header files. + + +To Install: +Copy the SDL.framework to /Library/Frameworks + +You may alternatively install it in <Your home directory>/Library/Frameworks +if your access privileges are not high enough. +(Be aware that the Xcode templates we provide in the SDL Developer Extras +package may require some adjustment for your system if you do this.) + + +Known Issues: +??? + + +Additional References: + + - Screencast tutorials for getting started with OpenSceneGraph/Mac OS X are + available at: + http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials/MacOSXTips + Though these are OpenSceneGraph centric, the same exact concepts apply to + SDL, thus the videos are recommended for everybody getting started with + developing on Mac OS X. (You can skim over the PlugIns stuff since SDL + doesn't have any PlugIns to worry about.) + + + +(Partial) History of PB/Xcode projects: +2009-09-21 - Added 64-bit for Snow Leopard. 10.4 is the new minimum requirement. + Removed 'no X11' targets as + new codebase will assume you have them. Also removed specific #defines + for X11, but needed to add search path to /usr/X11R6/include + +2007-12-31 - Enabled strip -x in the Xcode settings and removed it + from the Build DMG script. + Added a per-arch setting for the Deployment targets for OTHER_LDFLAGS_ppc + to re-enable prebinding. + Need to remember to copy these changes to the SDL satellite projects. + +2007-12-30 - Updated documentation to reflect new installation paths for + Xcode project templates under Leopard (Xcode 2.5/3.0). + +????-??-?? - Added extra targets for building formal releases against the + 10.2 SDK so we don't have to keep modifying the settings. + +????-??-?? - Added fancy DMG (background logo) support with automation. + +2006-05-09 - Added shell script phase to deal with new SDL_config.h + behavior. Encountered what seems to be an Xcode bug with + multiple files of the same name, even when conditional compiling + is controlled by custom #defines (SDL_sysloadso.c). Multiple or + undefined symbols are the result of this. + Recommended that macosx/SDL_sysloadso.c be modified to directly + include the dlopen version of the file via #ifdef's so only + one version needs to exist. Filed a formal bug report with Apple + about this (4542369). + +2006-03-22 - gcc 4 visibility features have been added to the code base so I + enabled the switch in Xcode to take advantage of it. Be aware that only + our x86 builds will be exposed to this feature as we still build ppc + with gcc 3.3. + + Christian Walther has sent me some great feedback on things that are + broken, so I have made some of these fixes. Among the issues are + compatibility and current library versions are not set to 1 (breaks + backwards compatibility), documentation errors, resource copying + location problems for the SDLTest apps, missing HAVE_OPENGL and + OpenGL.framework linking in testgl. + (Eric Wing) + +2006-03-17 - Because the X11 headers are not installed by default with Xcode, + we decided to offer two variants of the same targets (one with X11 stuff + and one without). By default, since the X11 stuff does not necessarily + conflict with the native stuff, we build the libraries with the X11 stuff + so advanced developers can access it by default. However, in the case + that a developer did not install X11 (or just doesn't want the extra bloat), + the user may directly select those targets and build those instead. + + Once again, we are attempting to remove the exported symbols file. If + I recall correctly, the clashing symbol problems we got were related + to the CD-ROM code which was formerly in C++. Now that the C++ code + has been purged, we are speculating that we might be able to remove + the exports file safely. The long term solution is to utilize gcc 4's + visibility features. + + For the developer extras package, I changed the package format + from a .pkg based installer to a .dmg to avoid requiring + administrator/root to access contents, for better + transparency, and to allow users to more easily control which components + they actually want to install. + I also made changes and updates to the PB/Xcode project templates (see Developer ReadMe). + (Eric Wing) + +2006-03-07 - The entire code base has been reorganized and platform specific + defines have been pushed into header files (SDL_config_*.h). This means + that defines that previously had to be defined in the Xcode projects can + be removed (which I have started doing). Furthermore, it appears that the + MMX/SSE code has been rewritten and refactored so it now compiles without + nasm and without making us do strange things to support OS X. However, this + Xcode project still employs architecture specific build options in order to + achieve the mandated 10.2 compatibility. As a result of the code base changes, + there are new public headers. But also as a result of these changes, there are + also new headers that qualify as "PrivateHeaders". Private Headers are headers + that must be exported because a public header includes them, but users shouldn't + directly invoke these. SDL_config_macosx.h and SDL_config_dreamcast.h are + examples of this. We have considered marking these headers as Private, but it + requires that the public headers invoke them via framework conventions, i.e. + #include <FrameworkName/Header.h> + e.g. + #include <SDL/SDL_config_macosx.h> + and not + #include "SDL_config_macosx.h" + However this imposes the restriction that non-framework distributions must + place their headers in a directory called SDL/ (and not SDL11/ like FreeBSD). + Currently, I do not believe this would pose a problem for any of the current + distributions (Fink, DarwinPorts). Or alternatively, users could be + expected/forced to also include the header path: + -I/Library/Frameworks/SDL.framework/PrivateHeaders, + but most people would probably not read the documentation on this. + But currently, we have decided to be conservative and have opted not to + use the PrivateHeaders feature. + (Eric Wing) + +2006-01-31 - Updates to build Universal Binaries while retaining 10.2 compatibility. + We were unable to get MMX/SSE support enabled. It is believed that a rewrite of + the assembly code will be necessary to make it position independent and not + require nasm. Altivec has finally been enabled for PPC. (Eric Wing) + +2005-09-?? - Had to add back the exports file because it was causing build problems + for some cases. (Eric Wing) + +2005-08-21 - First entry in history. Updated for SDL 1.2.9 and Xcode 2.1. Getting + ready for Universal Binaries. Removed the .pkg system for .dmg for due to problems + with broken packages in the past several SDL point releases. Removed usage of SDL + exports file because it has become another point of failure. Introduced new documentation + about SDLMain and how to compile in an devel-lite section of the SDL.dmg. (Eric Wing) + +Before history: +SDL 1.2.6? to 1.2.8 +Started updating Project Builder projects to Xcode for Panther and Tiger. Also removed +the system that split the single framework into separate runtime and headers frameworks. +This is against Apple conventions and causes problems on multiuser systems. +We now distribute a single framework. +The .pkg system has repeatedly been broken with every new release of OS X. +With 1.2.8, started migrating stuff to .dmg based system to simplify distribution process. +Tried updating the exports file and Perl script generation system for changing syntax. (Eric Wing) + +Pre-SDL 1.2.6 +Created Project Builder projects for SDL and .pkg based distribution system. (Darrell Walisser) + + + + + + + + diff --git a/MacOSX/SDL.framework/Resources b/MacOSX/SDL.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/MacOSX/SDL.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/MacOSX/SDL.framework/SDL b/MacOSX/SDL.framework/SDL new file mode 120000 index 0000000..35e94c3 --- /dev/null +++ b/MacOSX/SDL.framework/SDL @@ -0,0 +1 @@ +Versions/Current/SDL \ No newline at end of file diff --git a/MacOSX/SDL.framework/UniversalBinaryNotes.rtf b/MacOSX/SDL.framework/UniversalBinaryNotes.rtf new file mode 100644 index 0000000..5585ecb --- /dev/null +++ b/MacOSX/SDL.framework/UniversalBinaryNotes.rtf @@ -0,0 +1,150 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf110 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 LucidaGrande;\f2\fmodern\fcharset0 Courier-Oblique; +} +{\colortbl;\red255\green255\blue255;} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 64-bit Universal Binary Notes:\ + +\b0 \ +SDL 1.2.14 is our first release with Snow Leopard on the market. In order to make SDL compile and run in 64-bit, we had to remove code that depended on deprecated Mac APIs and move over to more modern Mac APIs.\ +\ +In addition, Apple has stopped shipping gcc 3.3 and the 10.3 SDK.\ +\ +Because of all these combined factors, we have made the decision to make Mac OS X 10.4 the new minimum requirement for SDL.\ +\ +Our official SDL.framework is compiled as a 3-way Universal Binary (64-bit Intel, 32-bit Intel, 32-bit PowerPC.)\ +\ +Certain APIs that SDL relies on were not made 64-bit ready by Apple until 10.6. This means even though 10.5 had preliminary 64-bit support, SDL will not compile or run correctly in 64-bit mode on 10.5. So there are two fallout items from this.\ +\ +First, you can only compile 64-bit code on Snow Leopard or greater (which removes the possibility of 64-bit PowerPC). \ +\ +Second, this presents a corner-case where if you have a 64-bit Intel executable in your Universal binary and try to run on 10.5 on an 64-bit Intel Mac, it will launch and crash. To force 10.5 to use the 32-bit version instead of the 64-bit, you should set the LaunchServices key, LSMinimumSystemVersionByArchitecture, in your application's Info.plist. Our SDL/Xcode templates for Snow Leopard already set this up for you.\ +\ +\ +One additional fallout item is we had to remove the SDL Custom Cocoa Xcode template project. It depended on NSQuickTimeView which was deprecated and removed from the SDL codebase. It may still be possible to recreate the behavior that this template demonstrated, but we would need a volunteer to investigate this.\ +\ +\ +\ +In addition, the SDL satellite projects were affected by the 64-bit transition.\ +\ +- SDL_mixer depended on legacy Quicktime for midi playback support. We had to disable midi. (Recall that we also disabled MP3 support awhile back because we never got SMPEG working during the Tiger/Intel transition.) To fix this, we would need a native Core Audio backend for SDL_mixer.\ +\ +- Since we have changed the baseline to 10.4, we took this opportunity to switch SDL_image over to a new native ImageIO based backend. This makes the binary about 10x smaller, greatly simplifies our maintenance requirements and build process as we no longer have to maintain build systems for 3rd party dependencies, and gives us access to more image formats.\ +\ +- The static library target for SDL_ttf no longer works because we no longer have access to a libfreetype.a. We have been relying on Apple's supplied libfreetype.a, but they stopped shipping a static version starting in 10.5 which means we have no static 64-bit version. But since 10.4 is our new baseline, all these systems should have libfreetype.dylib installed, so it shouldn't be much of a problem to use SDL_ttf as a dynamic library which dynamically links to libfreetype.\ +\ +\ +-Eric Wing 2009-09-23\ + +\b \ +\ +\ +\ +Universal Binary Notes: (historical, somewhat obsolete)\ + +\b0 \ +Below is an overview of what we had to do to build Universal Binaries for SDL (and satellites). The document is provided to help others understand what the heck we had to do to get this to work so they know (and don't break) any settings we have set to accomplish this. It also describes areas of problems for those who might attempt to fix them after us.\ +\ +\ +It turns out that developing a Universal Binary for SDL was a painful process, but not for the typical reasons affecting most other developers. SDL is already platform clean and has an Xcode project which are usually the two biggest obstacles. (The only real code bug we had to fix was in SDL_mixer, but that was due to a Quicktime issue so we can blame the Quicktime authors.)\ +\ +But developing a Universal Binary was painful to us for several reasons:\ +\ +\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural +\ls1\ilvl0\cf0 {\listtext \'95 }SDL must retain compatibility with 10.2 (Jaguar)\ +\ +{\listtext \'95 }SDL has processor specific optimizations (Altivec, MMX/SSE)\ +\ +{\listtext \'95 }The SDL satellites (SDL_mixer, SDL_image, SDL_ttf) have 3rd party dependencies which we currently statically link against. All of these dependencies needed to be updated/recompiled with the same above constraints.\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural +\cf0 \ +For retaining compatibility with 10.2, we have experimentally determined that there is no reliable way to use gcc 4.0.x to compile a binary that works under Jaguar. With the gcc 4.0 that shipped in Xcode 2.1, libgcc_s was automatically linked against. This library does not exist on systems prior to 10.3.9. After filing a bug report, Apple removed this automatic linking in gcc 4.0.1 which shipped with Xcode 2.2, but we discovered that we suffered from undefined symbols to things in the printf family library. (They seem to be new symbols related to printing long doubles, etc.)\ +\ +So to accomplish our compatibility goals, we had to find and exploit some lesser known features of Xcode that allow us to specify architecture specific build flags found here:\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural +{\field{\*\fldinst{HYPERLINK "http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/05_07_bs_building_product/chapter_33_section_6.html#//apple_ref/doc/uid/TP40002693-SW3"}}{\fldrslt \cf0 http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/05_07_bs_building_product/chapter_33_section_6.html#//apple_ref/doc/uid/TP40002693-SW3}}\ +\ +The first and most important of these is the +\f1 GCC_VERSION flag which lets us set gcc 3.3 for PowerPC and gcc 4.0 for Intel.\ +\ +But we also needed to verify other options such as the deployment target and SDK. Experimentally, we found that the Deployment target did very little for us except retain prebinding. Setting it to anything less than 10.4 allows for prebinding to remain active.\ +\ +For the SDK's, we found that Apple does link against different versions of system components. But experimentally, we discovered we could still link to the 10.4u SDK and things would still work on Jaguar. Ideally we should probably link to the 10.2.8 SDK for PowerPC. But in reality, most people don't install the 10.2.8 SDK on their system (it is not a default component) so we didn't want to confuse people as setting this would likely cause people's compile to fail the first time they try and they would have to understand the reason for this. We did leave the architecture specific SDKROOT option set explicitly to make it easy to change in case we need to.\ +\ +For the Altivec and MMX/SSE options, we had to use architecture specific build flags. Furthermore, to use SSE, we also had to include the assembly code. This caused us problems because there is no easy way to tell Xcode to use files only for a specific architecture. So the PowerPC side got confused on the .asm files and would fail to compile. \ +\ +Pushing forward, we ignored PPC for the moment to see if we could at least build an optimized x86 build and then use lipo manually to merge the results. We encountered additional problems. First the alignment needed to be changed for reasons outside my knowledge base. We changed all instances of .align 16 to .align 8. This seemed to fix the compile problems. But at the linking stage, we got errors such as:\ +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li640\fi-640\ql\qnatural\pardirnatural + +\f2\i\fs22 \cf0 ld: /Users/ewing/DEVELOPMENT/CODETEST/UniversalBinarySDL/SDL12/Xcode/SDL/build/SDL.build/Deployment/Framework.build/Objects-normal/i386/SDL_yuv_mmx.o has local relocation entries in non-writable section (__TEXT,__text)\ +/usr/bin/libtool: internal link edit command failed\ +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f1\i0\fs24 \cf0 \ +Our belief is that the assembly code is not position independent and thus will not work for us. We double checked for any OS X gcc flags that control position independence, but everything seemed to be in order. As such, we cannot compile MMX/SSE optimizations until they are rewritten, preferably without the nasm requirement to accommodate the dual PPC/x86 Xcode limitations.\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural +\cf0 \ +So for now, we have unchecked (checkbox) the assembly specific files in the Xcode project and have removed the -DUSE_ASMBLIT flag from OTHER_CFLAGS_i386. To reactivate this stuff, you will need to recheck the boxes and re-add the flag.\ +\ +The files are\ +SDL_mixer_MMX.c/h\ +The files under hermes\ +and SDL_yuv_mmx.c\ +\ +\ +\ +For the SDL satellites, it was more of the same. The painful part was that the 3rd library dependencies needed to be rebuilt. (Some of our libraries were out of date, so this was an opportunity to update them.) But this meant changing those build systems as well. \ +\ +These are the versions I used:\ +libpng-1.2.8\ +libjpeg-6b\ +libogg-1.1.3\ +libvorbis-1.1.2\ +smpeg cvs\ +\ +We found that Apple already had a libfreetype in the 10.4u SDK so we just used that one which seemed to work. (For the record, the question did come up of why we statically link against this when it seems to be a standard component on Panther and Tiger. We double checked, and it did not seem to be in Jaguar. So that's why.)\ +\ +The old libpng turned out to be from the 1.0.x branch so we needed to replace all the headers we had as well. Updating to the 1.2.x branch didn't seem to cause any problems we could detect.\ +\ +libpng and libjpeg lack an Xcode project so we mucked with their build system to produce Universal Binaries. But since we needed PPC to be compiled with 3.3 and Intel to be compiled with 4.0, it ended up that we built multiple times changing the compiler, and then using lipo to strip and combine the binaries.\ +\ +libogg/libvorbis did contain Xcode projects, but didn't build static libraries so we had to add that. We also discovered that not building with gcc 3.3 caused us addition missing symbol runtime problems with float versions of math functions (sinf, sqrtf, etc).\ +\ +It seems that once upon a time, the SDL_mixer framework supported MP3's via SMPEG, but this disappeared at some point. I don't know why or how this happened. But I also don't know how SMPEG was ever used with the framework as there was no preexisting infrastructure as with the other libraries. So I have attempted to correct this oversight, however, the SMPEG framework itself has MMX code which has also turned out to be problematic. I am getting compiler errors of " +\f2\i\fs22 Unknown pseudo-op:" +\f1\i0\fs24 for +\f2\i\fs22 .type +\f1\i0\fs24 and +\f2\i\fs22 .size. +\f1\i0\fs24 \ +So SMPEG is currently compiled without MMX optimizations.\ +\ +\ +\ +\ +Addendum: \ +2006-03-06:\ +The main SDL code base (not the satellites) have undergone an overhaul. The required platform specific defines have been moved out of the build system into platform specific header files (SDL_config_*.h). This allows us to simplify the Xcode projects somewhat, but we still must maintain the architecture specific build options to invoke gcc 3.3 to maintain our mandated 10.2 compatibilty requirement.\ +\ +Also it appears that the MMX/SSE code has been rewritten as well so that the obstacles we faced in compiling in these optimizations are no longer problems. The binaries we produce should now contain the processor specific optimizations. (Remember this note only applies to SDL and not the satellites, such as SMPEG.)\ +\ +\ +\ +Contributers:\ +Eric Wing (Xcode projects, 3rd party dependencies, documentation)\ +Christian Walther (10.2.8 and 10.3.9 testing/verification)\ +Ryan Gordon (converted C++ code in SDL/OSX code base to pure C)\ +Martin Storsj\'f6 (libgcc_s testing/verification)\ +Stephane Marchesin (MMX/SSE code expert)\ +\ +\ +\ +\ +\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural + +\f0 \cf0 \ +} \ No newline at end of file diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL.h new file mode 100644 index 0000000..6087b7c --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL.h @@ -0,0 +1,101 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL.h + * Main include header for the SDL library + */ + +#ifndef _SDL_H +#define _SDL_H + +#include "SDL_main.h" +#include "SDL_stdinc.h" +#include "SDL_audio.h" +#include "SDL_cdrom.h" +#include "SDL_cpuinfo.h" +#include "SDL_endian.h" +#include "SDL_error.h" +#include "SDL_events.h" +#include "SDL_loadso.h" +#include "SDL_mutex.h" +#include "SDL_rwops.h" +#include "SDL_thread.h" +#include "SDL_timer.h" +#include "SDL_video.h" +#include "SDL_version.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL.h + * @note As of version 0.5, SDL is loaded dynamically into the application + */ + +/** @name SDL_INIT Flags + * These are the flags which may be passed to SDL_Init() -- you should + * specify the subsystems which you will be using in your application. + */ +/*@{*/ +#define SDL_INIT_TIMER 0x00000001 +#define SDL_INIT_AUDIO 0x00000010 +#define SDL_INIT_VIDEO 0x00000020 +#define SDL_INIT_CDROM 0x00000100 +#define SDL_INIT_JOYSTICK 0x00000200 +#define SDL_INIT_NOPARACHUTE 0x00100000 /**< Don't catch fatal signals */ +#define SDL_INIT_EVENTTHREAD 0x01000000 /**< Not supported on all OS's */ +#define SDL_INIT_EVERYTHING 0x0000FFFF +/*@}*/ + +/** This function loads the SDL dynamically linked library and initializes + * the subsystems specified by 'flags' (and those satisfying dependencies) + * Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup + * signal handlers for some commonly ignored fatal signals (like SIGSEGV) + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** This function initializes specific SDL subsystems */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** This function cleans up specific SDL subsystems */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** This function returns mask of the specified subsystems which have + * been initialized. + * If 'flags' is 0, it returns a mask of all initialized subsystems. + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** This function cleans up all initialized subsystems and unloads the + * dynamically linked library. You should call it upon all exit conditions. + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_H */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_active.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_active.h new file mode 100644 index 0000000..cd854e8 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_active.h @@ -0,0 +1,63 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_active.h + * Include file for SDL application focus event handling + */ + +#ifndef _SDL_active_h +#define _SDL_active_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name The available application states */ +/*@{*/ +#define SDL_APPMOUSEFOCUS 0x01 /**< The app has mouse coverage */ +#define SDL_APPINPUTFOCUS 0x02 /**< The app has input focus */ +#define SDL_APPACTIVE 0x04 /**< The application is active */ +/*@}*/ + +/* Function prototypes */ +/** + * This function returns the current state of the application, which is a + * bitwise combination of SDL_APPMOUSEFOCUS, SDL_APPINPUTFOCUS, and + * SDL_APPACTIVE. If SDL_APPACTIVE is set, then the user is able to + * see your application, otherwise it has been iconified or disabled. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetAppState(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_active_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_audio.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_audio.h new file mode 100644 index 0000000..e879c98 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_audio.h @@ -0,0 +1,284 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_audio.h + * Access to the raw audio mixing buffer for the SDL library + */ + +#ifndef _SDL_audio_h +#define _SDL_audio_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_endian.h" +#include "SDL_mutex.h" +#include "SDL_thread.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * When filling in the desired audio spec structure, + * - 'desired->freq' should be the desired audio frequency in samples-per-second. + * - 'desired->format' should be the desired audio format. + * - 'desired->samples' is the desired size of the audio buffer, in samples. + * This number should be a power of two, and may be adjusted by the audio + * driver to a value more suitable for the hardware. Good values seem to + * range between 512 and 8096 inclusive, depending on the application and + * CPU speed. Smaller values yield faster response time, but can lead + * to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. A stereo sample consists of both right + * and left channels in LR ordering. + * Note that the number of samples is directly related to time by the + * following formula: ms = (samples*1000)/freq + * - 'desired->size' is the size in bytes of the audio buffer, and is + * calculated by SDL_OpenAudio(). + * - 'desired->silence' is the value used to set the buffer to silence, + * and is calculated by SDL_OpenAudio(). + * - 'desired->callback' should be set to a function that will be called + * when the audio device is ready for more data. It is passed a pointer + * to the audio buffer, and the length in bytes of the audio buffer. + * This function usually runs in a separate thread, and so you should + * protect data structures that it accesses by calling SDL_LockAudio() + * and SDL_UnlockAudio() in your code. + * - 'desired->userdata' is passed as the first parameter to your callback + * function. + * + * @note The calculated values in this structure are calculated by SDL_OpenAudio() + * + */ +typedef struct SDL_AudioSpec { + int freq; /**< DSP frequency -- samples per second */ + Uint16 format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in samples (power of 2) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + /** + * This function is called when the audio device needs more data. + * + * @param[out] stream A pointer to the audio data buffer + * @param[in] len The length of the audio buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + */ + void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len); + void *userdata; +} SDL_AudioSpec; + +/** + * @name Audio format flags + * defaults to LSB byte order + */ +/*@{*/ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB + +/** + * @name Native audio byte ordering + */ +/*@{*/ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#endif +/*@}*/ + +/*@}*/ + + +/** A structure to hold a set of audio conversion filters and buffers */ +typedef struct SDL_AudioCVT { + int needed; /**< Set to 1 if conversion possible */ + Uint16 src_format; /**< Source audio format */ + Uint16 dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + void (SDLCALL *filters[10])(struct SDL_AudioCVT *cvt, Uint16 format); + int filter_index; /**< Current audio conversion function */ +} SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * @name Audio Init and Quit + * These functions are used internally, and should not be used unless you + * have a specific need to specify the audio driver you want to use. + * You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/*@{*/ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/*@}*/ + +/** + * This function fills the given character buffer with the name of the + * current audio driver, and returns a pointer to it if the audio driver has + * been initialized. It returns NULL if no driver has been initialized. + */ +extern DECLSPEC char * SDLCALL SDL_AudioDriverName(char *namebuf, int maxlen); + +/** + * This function opens the audio device with the desired parameters, and + * returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by 'obtained'. If 'obtained' is NULL, the audio + * data passed to the callback function will be guaranteed to be in the + * requested format, and will be automatically converted to the hardware + * audio format if necessary. This function returns -1 if it failed + * to open the audio device, or couldn't set up the audio thread. + * + * The audio device starts out playing silence when it's opened, and should + * be enabled for playing by calling SDL_PauseAudio(0) when you are ready + * for your audio callback function to be called. Since the audio driver + * may modify the requested size of the audio buffer, you should allocate + * any local mixing buffers after you open the audio device. + * + * @sa SDL_AudioSpec + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); + +typedef enum { + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_audiostatus; + +/** Get the current audio state */ +extern DECLSPEC SDL_audiostatus SDLCALL SDL_GetAudioStatus(void); + +/** + * This function pauses and unpauses the audio callback processing. + * It should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * This function loads a WAVE from the data source, automatically freeing + * that source if 'freesrc' is non-zero. For example, to load a WAVE file, + * you could do: + * @code SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...); @endcode + * + * If this function succeeds, it returns the given SDL_AudioSpec, + * filled with the audio data format of the wave data, and sets + * 'audio_buf' to a malloc()'d buffer containing the audio data, + * and sets 'audio_len' to the length of that audio buffer, in bytes. + * You need to free the audio buffer with SDL_FreeWAV() when you are + * done with it. + * + * This function returns NULL and sets the SDL error message if the + * wave file cannot be opened, uses an unknown data format, or is + * corrupt. Currently raw and MS-ADPCM WAVE files are supported. + */ +extern DECLSPEC SDL_AudioSpec * SDLCALL SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); + +/** Compatibility convenience function -- loads a WAV from a file */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * This function frees data previously allocated with SDL_LoadWAV_RW() + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 *audio_buf); + +/** + * This function takes a source format and rate and a destination format + * and rate, and initializes the 'cvt' structure with information needed + * by SDL_ConvertAudio() to convert a buffer of audio data from one format + * to the other. + * + * @return This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT *cvt, + Uint16 src_format, Uint8 src_channels, int src_rate, + Uint16 dst_format, Uint8 dst_channels, int dst_rate); + +/** + * Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(), + * created an audio buffer cvt->buf, and filled it with cvt->len bytes of + * audio data in the source format, this function will convert it in-place + * to the desired format. + * The data conversion may expand the size of the audio data, so the buffer + * cvt->buf should be allocated after the cvt structure is initialized by + * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long. + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT *cvt); + + +#define SDL_MIX_MAXVOLUME 128 +/** + * This takes two audio buffers of the playing audio format and mixes + * them, performing addition, volume adjustment, and overflow clipping. + * The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume. Note this does not change hardware volume. + * This is provided for convenience -- you can mix your own audio data. + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume); + +/** + * @name Audio Locks + * The lock manipulated by these functions protects the callback function. + * During a LockAudio/UnlockAudio pair, you can be guaranteed that the + * callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); +/*@}*/ + +/** + * This function shuts down audio processing and closes the audio device. + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_audio_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_byteorder.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_byteorder.h new file mode 100644 index 0000000..47332c3 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_byteorder.h @@ -0,0 +1,29 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_byteorder.h + * @deprecated Use SDL_endian.h instead + */ + +/* DEPRECATED */ +#include "SDL_endian.h" diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_cdrom.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_cdrom.h new file mode 100644 index 0000000..febb19d --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_cdrom.h @@ -0,0 +1,202 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_cdrom.h + * This is the CD-audio control API for Simple DirectMedia Layer + */ + +#ifndef _SDL_cdrom_h +#define _SDL_cdrom_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file SDL_cdrom.h + * In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_CDROM flag. This causes SDL to scan the system + * for CD-ROM drives, and load appropriate drivers. + */ + +/** The maximum number of CD-ROM tracks on a disk */ +#define SDL_MAX_TRACKS 99 + +/** @name Track Types + * The types of CD-ROM track possible + */ +/*@{*/ +#define SDL_AUDIO_TRACK 0x00 +#define SDL_DATA_TRACK 0x04 +/*@}*/ + +/** The possible states which a CD-ROM drive can be in. */ +typedef enum { + CD_TRAYEMPTY, + CD_STOPPED, + CD_PLAYING, + CD_PAUSED, + CD_ERROR = -1 +} CDstatus; + +/** Given a status, returns true if there's a disk in the drive */ +#define CD_INDRIVE(status) ((int)(status) > 0) + +typedef struct SDL_CDtrack { + Uint8 id; /**< Track number */ + Uint8 type; /**< Data or audio track */ + Uint16 unused; + Uint32 length; /**< Length, in frames, of this track */ + Uint32 offset; /**< Offset, in frames, from start of disk */ +} SDL_CDtrack; + +/** This structure is only current as of the last call to SDL_CDStatus() */ +typedef struct SDL_CD { + int id; /**< Private drive identifier */ + CDstatus status; /**< Current drive status */ + + /** The rest of this structure is only valid if there's a CD in drive */ + /*@{*/ + int numtracks; /**< Number of tracks on disk */ + int cur_track; /**< Current track position */ + int cur_frame; /**< Current frame offset within current track */ + SDL_CDtrack track[SDL_MAX_TRACKS+1]; + /*@}*/ +} SDL_CD; + +/** @name Frames / MSF Conversion Functions + * Conversion functions from frames to Minute/Second/Frames and vice versa + */ +/*@{*/ +#define CD_FPS 75 +#define FRAMES_TO_MSF(f, M,S,F) { \ + int value = f; \ + *(F) = value%CD_FPS; \ + value /= CD_FPS; \ + *(S) = value%60; \ + value /= 60; \ + *(M) = value; \ +} +#define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) +/*@}*/ + +/* CD-audio API functions: */ + +/** + * Returns the number of CD-ROM drives on the system, or -1 if + * SDL_Init() has not been called with the SDL_INIT_CDROM flag. + */ +extern DECLSPEC int SDLCALL SDL_CDNumDrives(void); + +/** + * Returns a human-readable, system-dependent identifier for the CD-ROM. + * Example: + * - "/dev/cdrom" + * - "E:" + * - "/dev/disk/ide/1/master" + */ +extern DECLSPEC const char * SDLCALL SDL_CDName(int drive); + +/** + * Opens a CD-ROM drive for access. It returns a drive handle on success, + * or NULL if the drive was invalid or busy. This newly opened CD-ROM + * becomes the default CD used when other CD functions are passed a NULL + * CD-ROM handle. + * Drives are numbered starting with 0. Drive 0 is the system default CD-ROM. + */ +extern DECLSPEC SDL_CD * SDLCALL SDL_CDOpen(int drive); + +/** + * This function returns the current status of the given drive. + * If the drive has a CD in it, the table of contents of the CD and current + * play position of the CD will be stored in the SDL_CD structure. + */ +extern DECLSPEC CDstatus SDLCALL SDL_CDStatus(SDL_CD *cdrom); + +/** + * Play the given CD starting at 'start_track' and 'start_frame' for 'ntracks' + * tracks and 'nframes' frames. If both 'ntrack' and 'nframe' are 0, play + * until the end of the CD. This function will skip data tracks. + * This function should only be called after calling SDL_CDStatus() to + * get track information about the CD. + * For example: + * @code + * // Play entire CD: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) + * SDL_CDPlayTracks(cdrom, 0, 0, 0, 0); + * // Play last track: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) { + * SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0); + * } + * // Play first and second track and 10 seconds of third track: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) + * SDL_CDPlayTracks(cdrom, 0, 0, 2, 10); + * @endcode + * + * @return This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_CDPlayTracks(SDL_CD *cdrom, + int start_track, int start_frame, int ntracks, int nframes); + +/** + * Play the given CD starting at 'start' frame for 'length' frames. + * @return It returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_CDPlay(SDL_CD *cdrom, int start, int length); + +/** Pause play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDPause(SDL_CD *cdrom); + +/** Resume play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDResume(SDL_CD *cdrom); + +/** Stop play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDStop(SDL_CD *cdrom); + +/** Eject CD-ROM + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDEject(SDL_CD *cdrom); + +/** Closes the handle for the CD-ROM drive */ +extern DECLSPEC void SDLCALL SDL_CDClose(SDL_CD *cdrom); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_video_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_config.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_config.h new file mode 100644 index 0000000..09ba38a --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_config.h @@ -0,0 +1,45 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_h +#define _SDL_config_h + +#include "SDL_platform.h" + +/* Add any platform that doesn't build using the configure system */ +#if defined(__DREAMCAST__) +#include "SDL_config_dreamcast.h" +#elif defined(__MACOS__) +#include "SDL_config_macos.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__SYMBIAN32__) +#include "SDL_config_symbian.h" /* must be before win32! */ +#elif defined(__WIN32__) +#include "SDL_config_win32.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" +#else +#include "SDL_config_minimal.h" +#endif /* platform config */ + +#endif /* _SDL_config_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_macosx.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_macosx.h new file mode 100644 index 0000000..c05712e --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_macosx.h @@ -0,0 +1,151 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_macosx_h +#define _SDL_config_macosx_h + +#include "SDL_platform.h" + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include <AvailabilityMacros.h> + +/* This is a set of defines to configure the SDL features */ + +#define SDL_HAS_64BIT_TYPE 1 + +/* Useful headers */ +/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */ +#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) ) +#define HAVE_ALLOCA_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#define SDL_CDROM_MACOSX 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_IOKIT 1 + +/* Enable various shared object loading systems */ +#ifdef __ppc__ +/* For Mac OS X 10.2 compatibility */ +#define SDL_LOADSO_DLCOMPAT 1 +#else +#define SDL_LOADSO_DLOPEN 1 +#endif + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +#if ((defined TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON)) +#define SDL_VIDEO_DRIVER_TOOLBOX 1 +#else +#define SDL_VIDEO_DRIVER_QUARTZ 1 +#endif +#define SDL_VIDEO_DRIVER_DGA 1 +#define SDL_VIDEO_DRIVER_X11 1 +#define SDL_VIDEO_DRIVER_X11_DGAMOUSE 1 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER "/usr/X11R6/lib/libXrender.1.dylib" +#define SDL_VIDEO_DRIVER_X11_VIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_XINERAMA 1 +#define SDL_VIDEO_DRIVER_X11_XME 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XV 1 +#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32 1 + +/* Enable OpenGL support */ +#define SDL_VIDEO_OPENGL 1 +#define SDL_VIDEO_OPENGL_GLX 1 + +/* Disable screensaver */ +#define SDL_VIDEO_DISABLE_SCREENSAVER 1 + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* _SDL_config_macosx_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_copying.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_copying.h new file mode 100644 index 0000000..b5b64f2 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_copying.h @@ -0,0 +1,22 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_cpuinfo.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_cpuinfo.h new file mode 100644 index 0000000..4200d6d --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_cpuinfo.h @@ -0,0 +1,69 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_cpuinfo.h + * CPU feature detection for SDL + */ + +#ifndef _SDL_cpuinfo_h +#define _SDL_cpuinfo_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This function returns true if the CPU has the RDTSC instruction */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** This function returns true if the CPU has MMX features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** This function returns true if the CPU has MMX Ext. features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMXExt(void); + +/** This function returns true if the CPU has 3DNow features */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** This function returns true if the CPU has 3DNow! Ext. features */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNowExt(void); + +/** This function returns true if the CPU has SSE features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** This function returns true if the CPU has SSE2 features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** This function returns true if the CPU has AltiVec features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_cpuinfo_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h new file mode 100644 index 0000000..ffaea61 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h @@ -0,0 +1,273 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_endian.h + * Functions for reading and writing endian-specific values + */ + +#ifndef _SDL_endian_h +#define _SDL_endian_h + +#include "SDL_stdinc.h" + +/** @name SDL_ENDIANs + * The two types of endianness + */ +/*@{*/ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/*@}*/ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include <endian.h> +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__sun) && defined(__SVR4) /* Solaris */ +#include <sys/byteorder.h> +#if defined(_LITTLE_ENDIAN) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif defined(_BIG_ENDIAN) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include <endian.h> +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include <sys/endian.h> +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) || defined(__sparc) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name SDL_Swap Functions + * Use inline functions for compilers that support them, and static + * functions for those that do not. Because these functions become + * static for compilers that do not support inline functions, this + * header should only be included in files that actually use them. + */ +/*@{*/ +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0" : "=Q" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x)); + return (Uint16)result; +} +#elif defined(__GNUC__) && defined(__aarch64__) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + return __builtin_bswap16(x); +} +#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__)) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +static __inline__ Uint16 SDL_Swap16(Uint16 x) { + return SDL_static_cast(Uint16, ((x<<8)|(x>>8))); +} +#endif + +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23" : "=&r" (result) : "0" (x>>24), "r" (x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r" (result) : "0" (result), "r" (x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x)); + return result; +} +#elif defined(__GNUC__) && defined(__aarch64__) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + return __builtin_bswap32(x); +} +#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__)) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +static __inline__ Uint32 SDL_Swap32(Uint32 x) { + return SDL_static_cast(Uint32, ((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24))); +} +#endif + +#ifdef SDL_HAS_64BIT_TYPE /**/ +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + union { + struct { Uint32 a,b; } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r" (v.s.a), "=r" (v.s.b) + : "0" (v.s.a), "1" (v.s.b)); + return v.u; +} +#elif defined(__GNUC__) && defined(__aarch64__) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + return __builtin_bswap64(x); +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif +#else /* SDL_HAS_64BIT_TYPE */ +/* This is mainly to keep compilers from complaining in SDL code. + * If there is no real 64-bit datatype, then compilers will complain about + * the fake 64-bit datatype that SDL provides when it compiles user code. + */ +#define SDL_Swap64(X) (X) +#endif /* SDL_HAS_64BIT_TYPE */ +/*@}*/ + +/** + * @name SDL_SwapLE and SDL_SwapBE Functions + * Byteswap item from the specified endianness to the native endianness + */ +/*@{*/ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#endif +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_endian_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_error.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_error.h new file mode 100644 index 0000000..4e1cce3 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_error.h @@ -0,0 +1,72 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_error.h + * Simple error message routines for SDL + */ + +#ifndef _SDL_error_h +#define _SDL_error_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Public functions + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_SetError(const char *fmt, ...); +extern DECLSPEC char * SDLCALL SDL_GetError(void); +extern DECLSPEC void SDLCALL SDL_ClearError(void); +/*@}*/ + +/** + * @name Private functions + * @internal Private error message function - used internally + */ +/*@{*/ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +typedef enum { + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +extern DECLSPEC void SDLCALL SDL_Error(SDL_errorcode code); +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_error_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_events.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_events.h new file mode 100644 index 0000000..94b4202 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_events.h @@ -0,0 +1,356 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_events.h + * Include file for SDL event handling + */ + +#ifndef _SDL_events_h +#define _SDL_events_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_active.h" +#include "SDL_keyboard.h" +#include "SDL_mouse.h" +#include "SDL_joystick.h" +#include "SDL_quit.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name General keyboard/mouse state definitions */ +/*@{*/ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 +/*@}*/ + +/** Event enumerations */ +typedef enum { + SDL_NOEVENT = 0, /**< Unused (do not remove) */ + SDL_ACTIVEEVENT, /**< Application loses/gains visibility */ + SDL_KEYDOWN, /**< Keys pressed */ + SDL_KEYUP, /**< Keys released */ + SDL_MOUSEMOTION, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_JOYAXISMOTION, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_QUIT, /**< User-requested quit */ + SDL_SYSWMEVENT, /**< System specific event */ + SDL_EVENT_RESERVEDA, /**< Reserved for future use.. */ + SDL_EVENT_RESERVEDB, /**< Reserved for future use.. */ + SDL_VIDEORESIZE, /**< User resized video mode */ + SDL_VIDEOEXPOSE, /**< Screen needs to be redrawn */ + SDL_EVENT_RESERVED2, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED3, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED4, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED5, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED6, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED7, /**< Reserved for future use.. */ + /** Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */ + SDL_USEREVENT = 24, + /** This last event is only for bounding internal arrays + * It is the number of bits in the event mask datatype -- Uint32 + */ + SDL_NUMEVENTS = 32 +} SDL_EventType; + +/** @name Predefined event masks */ +/*@{*/ +#define SDL_EVENTMASK(X) (1<<(X)) +typedef enum { + SDL_ACTIVEEVENTMASK = SDL_EVENTMASK(SDL_ACTIVEEVENT), + SDL_KEYDOWNMASK = SDL_EVENTMASK(SDL_KEYDOWN), + SDL_KEYUPMASK = SDL_EVENTMASK(SDL_KEYUP), + SDL_KEYEVENTMASK = SDL_EVENTMASK(SDL_KEYDOWN)| + SDL_EVENTMASK(SDL_KEYUP), + SDL_MOUSEMOTIONMASK = SDL_EVENTMASK(SDL_MOUSEMOTION), + SDL_MOUSEBUTTONDOWNMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN), + SDL_MOUSEBUTTONUPMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONUP), + SDL_MOUSEEVENTMASK = SDL_EVENTMASK(SDL_MOUSEMOTION)| + SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)| + SDL_EVENTMASK(SDL_MOUSEBUTTONUP), + SDL_JOYAXISMOTIONMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION), + SDL_JOYBALLMOTIONMASK = SDL_EVENTMASK(SDL_JOYBALLMOTION), + SDL_JOYHATMOTIONMASK = SDL_EVENTMASK(SDL_JOYHATMOTION), + SDL_JOYBUTTONDOWNMASK = SDL_EVENTMASK(SDL_JOYBUTTONDOWN), + SDL_JOYBUTTONUPMASK = SDL_EVENTMASK(SDL_JOYBUTTONUP), + SDL_JOYEVENTMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION)| + SDL_EVENTMASK(SDL_JOYBALLMOTION)| + SDL_EVENTMASK(SDL_JOYHATMOTION)| + SDL_EVENTMASK(SDL_JOYBUTTONDOWN)| + SDL_EVENTMASK(SDL_JOYBUTTONUP), + SDL_VIDEORESIZEMASK = SDL_EVENTMASK(SDL_VIDEORESIZE), + SDL_VIDEOEXPOSEMASK = SDL_EVENTMASK(SDL_VIDEOEXPOSE), + SDL_QUITMASK = SDL_EVENTMASK(SDL_QUIT), + SDL_SYSWMEVENTMASK = SDL_EVENTMASK(SDL_SYSWMEVENT) +} SDL_EventMask ; +#define SDL_ALLEVENTS 0xFFFFFFFF +/*@}*/ + +/** Application visibility event structure */ +typedef struct SDL_ActiveEvent { + Uint8 type; /**< SDL_ACTIVEEVENT */ + Uint8 gain; /**< Whether given states were gained or lost (1/0) */ + Uint8 state; /**< A mask of the focus states */ +} SDL_ActiveEvent; + +/** Keyboard event structure */ +typedef struct SDL_KeyboardEvent { + Uint8 type; /**< SDL_KEYDOWN or SDL_KEYUP */ + Uint8 which; /**< The keyboard device index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + SDL_keysym keysym; +} SDL_KeyboardEvent; + +/** Mouse motion event structure */ +typedef struct SDL_MouseMotionEvent { + Uint8 type; /**< SDL_MOUSEMOTION */ + Uint8 which; /**< The mouse device index */ + Uint8 state; /**< The current button state */ + Uint16 x, y; /**< The X/Y coordinates of the mouse */ + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** Mouse button event structure */ +typedef struct SDL_MouseButtonEvent { + Uint8 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */ + Uint8 which; /**< The mouse device index */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint16 x, y; /**< The X/Y coordinates of the mouse at press time */ +} SDL_MouseButtonEvent; + +/** Joystick axis motion event structure */ +typedef struct SDL_JoyAxisEvent { + Uint8 type; /**< SDL_JOYAXISMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 axis; /**< The joystick axis index */ + Sint16 value; /**< The axis value (range: -32768 to 32767) */ +} SDL_JoyAxisEvent; + +/** Joystick trackball motion event structure */ +typedef struct SDL_JoyBallEvent { + Uint8 type; /**< SDL_JOYBALLMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 ball; /**< The joystick trackball index */ + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** Joystick hat position change event structure */ +typedef struct SDL_JoyHatEvent { + Uint8 type; /**< SDL_JOYHATMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value: + * SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP + * SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT + * SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN + * Note that zero means the POV is centered. + */ +} SDL_JoyHatEvent; + +/** Joystick button event structure */ +typedef struct SDL_JoyButtonEvent { + Uint8 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */ + Uint8 which; /**< The joystick device index */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ +} SDL_JoyButtonEvent; + +/** The "window resized" event + * When you get this event, you are responsible for setting a new video + * mode with the new width and height. + */ +typedef struct SDL_ResizeEvent { + Uint8 type; /**< SDL_VIDEORESIZE */ + int w; /**< New width */ + int h; /**< New height */ +} SDL_ResizeEvent; + +/** The "screen redraw" event */ +typedef struct SDL_ExposeEvent { + Uint8 type; /**< SDL_VIDEOEXPOSE */ +} SDL_ExposeEvent; + +/** The "quit requested" event */ +typedef struct SDL_QuitEvent { + Uint8 type; /**< SDL_QUIT */ +} SDL_QuitEvent; + +/** A user-defined event type */ +typedef struct SDL_UserEvent { + Uint8 type; /**< SDL_USEREVENT through SDL_NUMEVENTS-1 */ + int code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + +/** If you want to use this event, you should include SDL_syswm.h */ +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; +typedef struct SDL_SysWMEvent { + Uint8 type; + SDL_SysWMmsg *msg; +} SDL_SysWMEvent; + +/** General event structure */ +typedef union SDL_Event { + Uint8 type; + SDL_ActiveEvent active; + SDL_KeyboardEvent key; + SDL_MouseMotionEvent motion; + SDL_MouseButtonEvent button; + SDL_JoyAxisEvent jaxis; + SDL_JoyBallEvent jball; + SDL_JoyHatEvent jhat; + SDL_JoyButtonEvent jbutton; + SDL_ResizeEvent resize; + SDL_ExposeEvent expose; + SDL_QuitEvent quit; + SDL_UserEvent user; + SDL_SysWMEvent syswm; +} SDL_Event; + + +/* Function prototypes */ + +/** Pumps the event loop, gathering events from the input devices. + * This function updates the event queue and internal input device state. + * This should only be run in the thread that sets the video mode. + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +typedef enum { + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Checks the event queue for messages and optionally returns them. + * + * If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to + * the back of the event queue. + * If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front + * of the event queue, matching 'mask', will be returned and will not + * be removed from the queue. + * If 'action' is SDL_GETEVENT, up to 'numevents' events at the front + * of the event queue, matching 'mask', will be returned and will be + * removed from the queue. + * + * @return + * This function returns the number of events actually stored, or -1 + * if there was an error. + * + * This function is thread-safe. + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event *events, int numevents, + SDL_eventaction action, Uint32 mask); + +/** Polls for currently pending events, and returns 1 if there are any pending + * events, or 0 if there are none available. If 'event' is not NULL, the next + * event is removed from the queue and stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event *event); + +/** Waits indefinitely for the next available event, returning 1, or 0 if there + * was an error while waiting for events. If 'event' is not NULL, the next + * event is removed from the queue and stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event *event); + +/** Add an event to the event queue. + * This function returns 0 on success, or -1 if the event queue was full + * or there was some other error. + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event *event); + +/** @name Event Filtering */ +/*@{*/ +typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); +/** + * This function sets up a filter to process all events before they + * change internal state and are posted to the internal event queue. + * + * The filter is protypted as: + * @code typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); @endcode + * + * If the filter returns 1, then the event will be added to the internal queue. + * If it returns 0, then the event will be dropped from the queue, but the + * internal state will still be updated. This allows selective filtering of + * dynamically arriving events. + * + * @warning Be very careful of what you do in the event filter function, as + * it may run in a different thread! + * + * There is one caveat when dealing with the SDL_QUITEVENT event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will + * be closed, otherwise the window will remain open if possible. + * If the quit event is generated by an interrupt signal, it will bypass the + * internal queue and be delivered to the application at the next event poll. + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter); + +/** + * Return the current event filter - can be used to "chain" filters. + * If there is no event filter set, this function returns NULL. + */ +extern DECLSPEC SDL_EventFilter SDLCALL SDL_GetEventFilter(void); +/*@}*/ + +/** @name Event State */ +/*@{*/ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 +/*@}*/ + +/** +* This function allows you to set the state of processing certain events. +* If 'state' is set to SDL_IGNORE, that event will be automatically dropped +* from the event queue and will not event be filtered. +* If 'state' is set to SDL_ENABLE, that event will be processed normally. +* If 'state' is set to SDL_QUERY, SDL_EventState() will return the +* current processing state of the specified event. +*/ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint8 type, int state); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_events_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_getenv.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_getenv.h new file mode 100644 index 0000000..bea6300 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_getenv.h @@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_getenv.h + * @deprecated Use SDL_stdinc.h instead + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_joystick.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_joystick.h new file mode 100644 index 0000000..708d1a9 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_joystick.h @@ -0,0 +1,187 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_joystick.h + * Include file for SDL joystick event handling + */ + +#ifndef _SDL_joystick_h +#define _SDL_joystick_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL_joystick.h + * @note In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + */ + +/** The joystick structure used to identify an SDL joystick */ +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* Function prototypes */ +/** + * Count the number of joysticks attached to the system + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * If no name can be found, this function returns NULL. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickName(int device_index); + +/** + * Open a joystick for use. + * + * @param[in] device_index + * The index passed as an argument refers to + * the N'th joystick on the system. This index is the value which will + * identify this joystick in future joystick events. + * + * @return This function returns a joystick identifier, or NULL if an error occurred. + */ +extern DECLSPEC SDL_Joystick * SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Returns 1 if the joystick has been opened, or 0 if it has not. + */ +extern DECLSPEC int SDLCALL SDL_JoystickOpened(int device_index); + +/** + * Get the device index of an opened joystick. + */ +extern DECLSPEC int SDLCALL SDL_JoystickIndex(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick + * + * Joystick trackballs have only relative motion events associated + * with them and their state cannot be polled. + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick + * events are enabled. + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and check the state of the joystick when you want joystick + * information. + * + * @param[in] state The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE. + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +/** + * Get the current state of an axis control on a joystick + * + * @param[in] axis The axis indices start at index 0. + * + * @return The state is a value ranging from -32768 to 32767. + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis); + +/** + * @name Hat Positions + * The return value of SDL_JoystickGetHat() is one of the following positions: + */ +/*@{*/ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/*@}*/ + +/** + * Get the current state of a POV hat on a joystick + * + * @param[in] hat The hat indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, int hat); + +/** + * Get the ball axis change since the last poll + * + * @param[in] ball The ball indices start at index 0. + * + * @return This returns 0, or -1 if you passed it invalid parameters. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick + * + * @param[in] button The button indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, int button); + +/** + * Close a joystick previously opened with SDL_JoystickOpen() + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_joystick_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_keyboard.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_keyboard.h new file mode 100644 index 0000000..9d7129c --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_keyboard.h @@ -0,0 +1,135 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_keyboard.h + * Include file for SDL keyboard event handling + */ + +#ifndef _SDL_keyboard_h +#define _SDL_keyboard_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_keysym.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** Keysym structure + * + * - The scancode is hardware dependent, and should not be used by general + * applications. If no hardware scancode is available, it will be 0. + * + * - The 'unicode' translated character is only available when character + * translation is enabled by the SDL_EnableUNICODE() API. If non-zero, + * this is a UNICODE character corresponding to the keypress. If the + * high 9 bits of the character are 0, then this maps to the equivalent + * ASCII character: + * @code + * char ch; + * if ( (keysym.unicode & 0xFF80) == 0 ) { + * ch = keysym.unicode & 0x7F; + * } else { + * An international character.. + * } + * @endcode + */ +typedef struct SDL_keysym { + Uint8 scancode; /**< hardware specific scancode */ + SDLKey sym; /**< SDL virtual keysym */ + SDLMod mod; /**< current key modifiers */ + Uint16 unicode; /**< translated character */ +} SDL_keysym; + +/** This is the mask which refers to all hotkey bindings */ +#define SDL_ALL_HOTKEYS 0xFFFFFFFF + +/* Function prototypes */ +/** + * Enable/Disable UNICODE translation of keyboard input. + * + * This translation has some overhead, so translation defaults off. + * + * @param[in] enable + * If 'enable' is 1, translation is enabled. + * If 'enable' is 0, translation is disabled. + * If 'enable' is -1, the translation state is not changed. + * + * @return It returns the previous state of keyboard translation. + */ +extern DECLSPEC int SDLCALL SDL_EnableUNICODE(int enable); + +#define SDL_DEFAULT_REPEAT_DELAY 500 +#define SDL_DEFAULT_REPEAT_INTERVAL 30 +/** + * Enable/Disable keyboard repeat. Keyboard repeat defaults to off. + * + * @param[in] delay + * 'delay' is the initial delay in ms between the time when a key is + * pressed, and keyboard repeat begins. + * + * @param[in] interval + * 'interval' is the time in ms between keyboard repeat events. + * + * If 'delay' is set to 0, keyboard repeat is disabled. + */ +extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval); +extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval); + +/** + * Get a snapshot of the current state of the keyboard. + * Returns an array of keystates, indexed by the SDLK_* syms. + * Usage: + * @code + * Uint8 *keystate = SDL_GetKeyState(NULL); + * if ( keystate[SDLK_RETURN] ) //... \<RETURN> is pressed. + * @endcode + */ +extern DECLSPEC Uint8 * SDLCALL SDL_GetKeyState(int *numkeys); + +/** + * Get the current key modifier state + */ +extern DECLSPEC SDLMod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state. + * This does not change the keyboard state, only the key modifier flags. + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDLMod modstate); + +/** + * Get the name of an SDL virtual keysym + */ +extern DECLSPEC char * SDLCALL SDL_GetKeyName(SDLKey key); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_keyboard_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_keysym.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_keysym.h new file mode 100644 index 0000000..f2ad12b --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_keysym.h @@ -0,0 +1,326 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_keysym_h +#define _SDL_keysym_h + +/** What we really want is a mapping of every raw key on the keyboard. + * To support international keyboards, we use the range 0xA1 - 0xFF + * as international virtual keycodes. We'll follow in the footsteps of X11... + * @brief The names of the keys + */ +typedef enum { + /** @name ASCII mapped keysyms + * The keyboard syms have been cleverly chosen to map to ASCII + */ + /*@{*/ + SDLK_UNKNOWN = 0, + SDLK_FIRST = 0, + SDLK_BACKSPACE = 8, + SDLK_TAB = 9, + SDLK_CLEAR = 12, + SDLK_RETURN = 13, + SDLK_PAUSE = 19, + SDLK_ESCAPE = 27, + SDLK_SPACE = 32, + SDLK_EXCLAIM = 33, + SDLK_QUOTEDBL = 34, + SDLK_HASH = 35, + SDLK_DOLLAR = 36, + SDLK_AMPERSAND = 38, + SDLK_QUOTE = 39, + SDLK_LEFTPAREN = 40, + SDLK_RIGHTPAREN = 41, + SDLK_ASTERISK = 42, + SDLK_PLUS = 43, + SDLK_COMMA = 44, + SDLK_MINUS = 45, + SDLK_PERIOD = 46, + SDLK_SLASH = 47, + SDLK_0 = 48, + SDLK_1 = 49, + SDLK_2 = 50, + SDLK_3 = 51, + SDLK_4 = 52, + SDLK_5 = 53, + SDLK_6 = 54, + SDLK_7 = 55, + SDLK_8 = 56, + SDLK_9 = 57, + SDLK_COLON = 58, + SDLK_SEMICOLON = 59, + SDLK_LESS = 60, + SDLK_EQUALS = 61, + SDLK_GREATER = 62, + SDLK_QUESTION = 63, + SDLK_AT = 64, + /* + Skip uppercase letters + */ + SDLK_LEFTBRACKET = 91, + SDLK_BACKSLASH = 92, + SDLK_RIGHTBRACKET = 93, + SDLK_CARET = 94, + SDLK_UNDERSCORE = 95, + SDLK_BACKQUOTE = 96, + SDLK_a = 97, + SDLK_b = 98, + SDLK_c = 99, + SDLK_d = 100, + SDLK_e = 101, + SDLK_f = 102, + SDLK_g = 103, + SDLK_h = 104, + SDLK_i = 105, + SDLK_j = 106, + SDLK_k = 107, + SDLK_l = 108, + SDLK_m = 109, + SDLK_n = 110, + SDLK_o = 111, + SDLK_p = 112, + SDLK_q = 113, + SDLK_r = 114, + SDLK_s = 115, + SDLK_t = 116, + SDLK_u = 117, + SDLK_v = 118, + SDLK_w = 119, + SDLK_x = 120, + SDLK_y = 121, + SDLK_z = 122, + SDLK_DELETE = 127, + /* End of ASCII mapped keysyms */ + /*@}*/ + + /** @name International keyboard syms */ + /*@{*/ + SDLK_WORLD_0 = 160, /* 0xA0 */ + SDLK_WORLD_1 = 161, + SDLK_WORLD_2 = 162, + SDLK_WORLD_3 = 163, + SDLK_WORLD_4 = 164, + SDLK_WORLD_5 = 165, + SDLK_WORLD_6 = 166, + SDLK_WORLD_7 = 167, + SDLK_WORLD_8 = 168, + SDLK_WORLD_9 = 169, + SDLK_WORLD_10 = 170, + SDLK_WORLD_11 = 171, + SDLK_WORLD_12 = 172, + SDLK_WORLD_13 = 173, + SDLK_WORLD_14 = 174, + SDLK_WORLD_15 = 175, + SDLK_WORLD_16 = 176, + SDLK_WORLD_17 = 177, + SDLK_WORLD_18 = 178, + SDLK_WORLD_19 = 179, + SDLK_WORLD_20 = 180, + SDLK_WORLD_21 = 181, + SDLK_WORLD_22 = 182, + SDLK_WORLD_23 = 183, + SDLK_WORLD_24 = 184, + SDLK_WORLD_25 = 185, + SDLK_WORLD_26 = 186, + SDLK_WORLD_27 = 187, + SDLK_WORLD_28 = 188, + SDLK_WORLD_29 = 189, + SDLK_WORLD_30 = 190, + SDLK_WORLD_31 = 191, + SDLK_WORLD_32 = 192, + SDLK_WORLD_33 = 193, + SDLK_WORLD_34 = 194, + SDLK_WORLD_35 = 195, + SDLK_WORLD_36 = 196, + SDLK_WORLD_37 = 197, + SDLK_WORLD_38 = 198, + SDLK_WORLD_39 = 199, + SDLK_WORLD_40 = 200, + SDLK_WORLD_41 = 201, + SDLK_WORLD_42 = 202, + SDLK_WORLD_43 = 203, + SDLK_WORLD_44 = 204, + SDLK_WORLD_45 = 205, + SDLK_WORLD_46 = 206, + SDLK_WORLD_47 = 207, + SDLK_WORLD_48 = 208, + SDLK_WORLD_49 = 209, + SDLK_WORLD_50 = 210, + SDLK_WORLD_51 = 211, + SDLK_WORLD_52 = 212, + SDLK_WORLD_53 = 213, + SDLK_WORLD_54 = 214, + SDLK_WORLD_55 = 215, + SDLK_WORLD_56 = 216, + SDLK_WORLD_57 = 217, + SDLK_WORLD_58 = 218, + SDLK_WORLD_59 = 219, + SDLK_WORLD_60 = 220, + SDLK_WORLD_61 = 221, + SDLK_WORLD_62 = 222, + SDLK_WORLD_63 = 223, + SDLK_WORLD_64 = 224, + SDLK_WORLD_65 = 225, + SDLK_WORLD_66 = 226, + SDLK_WORLD_67 = 227, + SDLK_WORLD_68 = 228, + SDLK_WORLD_69 = 229, + SDLK_WORLD_70 = 230, + SDLK_WORLD_71 = 231, + SDLK_WORLD_72 = 232, + SDLK_WORLD_73 = 233, + SDLK_WORLD_74 = 234, + SDLK_WORLD_75 = 235, + SDLK_WORLD_76 = 236, + SDLK_WORLD_77 = 237, + SDLK_WORLD_78 = 238, + SDLK_WORLD_79 = 239, + SDLK_WORLD_80 = 240, + SDLK_WORLD_81 = 241, + SDLK_WORLD_82 = 242, + SDLK_WORLD_83 = 243, + SDLK_WORLD_84 = 244, + SDLK_WORLD_85 = 245, + SDLK_WORLD_86 = 246, + SDLK_WORLD_87 = 247, + SDLK_WORLD_88 = 248, + SDLK_WORLD_89 = 249, + SDLK_WORLD_90 = 250, + SDLK_WORLD_91 = 251, + SDLK_WORLD_92 = 252, + SDLK_WORLD_93 = 253, + SDLK_WORLD_94 = 254, + SDLK_WORLD_95 = 255, /* 0xFF */ + /*@}*/ + + /** @name Numeric keypad */ + /*@{*/ + SDLK_KP0 = 256, + SDLK_KP1 = 257, + SDLK_KP2 = 258, + SDLK_KP3 = 259, + SDLK_KP4 = 260, + SDLK_KP5 = 261, + SDLK_KP6 = 262, + SDLK_KP7 = 263, + SDLK_KP8 = 264, + SDLK_KP9 = 265, + SDLK_KP_PERIOD = 266, + SDLK_KP_DIVIDE = 267, + SDLK_KP_MULTIPLY = 268, + SDLK_KP_MINUS = 269, + SDLK_KP_PLUS = 270, + SDLK_KP_ENTER = 271, + SDLK_KP_EQUALS = 272, + /*@}*/ + + /** @name Arrows + Home/End pad */ + /*@{*/ + SDLK_UP = 273, + SDLK_DOWN = 274, + SDLK_RIGHT = 275, + SDLK_LEFT = 276, + SDLK_INSERT = 277, + SDLK_HOME = 278, + SDLK_END = 279, + SDLK_PAGEUP = 280, + SDLK_PAGEDOWN = 281, + /*@}*/ + + /** @name Function keys */ + /*@{*/ + SDLK_F1 = 282, + SDLK_F2 = 283, + SDLK_F3 = 284, + SDLK_F4 = 285, + SDLK_F5 = 286, + SDLK_F6 = 287, + SDLK_F7 = 288, + SDLK_F8 = 289, + SDLK_F9 = 290, + SDLK_F10 = 291, + SDLK_F11 = 292, + SDLK_F12 = 293, + SDLK_F13 = 294, + SDLK_F14 = 295, + SDLK_F15 = 296, + /*@}*/ + + /** @name Key state modifier keys */ + /*@{*/ + SDLK_NUMLOCK = 300, + SDLK_CAPSLOCK = 301, + SDLK_SCROLLOCK = 302, + SDLK_RSHIFT = 303, + SDLK_LSHIFT = 304, + SDLK_RCTRL = 305, + SDLK_LCTRL = 306, + SDLK_RALT = 307, + SDLK_LALT = 308, + SDLK_RMETA = 309, + SDLK_LMETA = 310, + SDLK_LSUPER = 311, /**< Left "Windows" key */ + SDLK_RSUPER = 312, /**< Right "Windows" key */ + SDLK_MODE = 313, /**< "Alt Gr" key */ + SDLK_COMPOSE = 314, /**< Multi-key compose key */ + /*@}*/ + + /** @name Miscellaneous function keys */ + /*@{*/ + SDLK_HELP = 315, + SDLK_PRINT = 316, + SDLK_SYSREQ = 317, + SDLK_BREAK = 318, + SDLK_MENU = 319, + SDLK_POWER = 320, /**< Power Macintosh power key */ + SDLK_EURO = 321, /**< Some european keyboards */ + SDLK_UNDO = 322, /**< Atari keyboard has Undo */ + /*@}*/ + + /* Add any other keys here */ + + SDLK_LAST +} SDLKey; + +/** Enumeration of valid key mods (possibly OR'd together) */ +typedef enum { + KMOD_NONE = 0x0000, + KMOD_LSHIFT= 0x0001, + KMOD_RSHIFT= 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LMETA = 0x0400, + KMOD_RMETA = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_RESERVED = 0x8000 +} SDLMod; + +#define KMOD_CTRL (KMOD_LCTRL|KMOD_RCTRL) +#define KMOD_SHIFT (KMOD_LSHIFT|KMOD_RSHIFT) +#define KMOD_ALT (KMOD_LALT|KMOD_RALT) +#define KMOD_META (KMOD_LMETA|KMOD_RMETA) + +#endif /* _SDL_keysym_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_loadso.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_loadso.h new file mode 100644 index 0000000..0c5e536 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_loadso.h @@ -0,0 +1,78 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_loadso.h + * System dependent library loading routines + */ + +/** @file SDL_loadso.h + * Some things to keep in mind: + * - These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * - Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * - Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + + +#ifndef _SDL_loadso_h +#define _SDL_loadso_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This function dynamically loads a shared object and returns a pointer + * to the object handle (or NULL if there was an error). + * The 'sofile' parameter is a system dependent name of the object file. + */ +extern DECLSPEC void * SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Given an object handle, this function looks up the address of the + * named function in the shared object and returns it. This address + * is no longer valid after calling SDL_UnloadObject(). + */ +extern DECLSPEC void * SDLCALL SDL_LoadFunction(void *handle, const char *name); + +/** Unload a shared object from memory */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_loadso_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_main.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_main.h new file mode 100644 index 0000000..ab50ef1 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_main.h @@ -0,0 +1,106 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_main_h +#define _SDL_main_h + +#include "SDL_stdinc.h" + +/** @file SDL_main.h + * Redefine main() on Win32 and MacOS so that it is called by winmain.c + */ + +#if defined(__WIN32__) || \ + (defined(__MWERKS__) && !defined(__BEOS__)) || \ + defined(__MACOS__) || defined(__MACOSX__) || \ + defined(__SYMBIAN32__) || defined(QWS) + +#ifdef __cplusplus +#define C_LINKAGE "C" +#else +#define C_LINKAGE +#endif /* __cplusplus */ + +/** The application's main() function must be called with C linkage, + * and should be declared like this: + * @code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * @endcode + */ +#define main SDL_main + +/** The prototype for the application's main() function */ +extern C_LINKAGE int SDL_main(int argc, char *argv[]); + + +/** @name From the SDL library code -- needed for registering the app on Win32 */ +/*@{*/ +#ifdef __WIN32__ + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** This should be called from your WinMain() function, if any */ +extern DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst); +/** This can also be called, but is no longer necessary */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst); +/** This can also be called, but is no longer necessary (SDL_Quit calls it) */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); +#ifdef __cplusplus +} +#endif +#include "close_code.h" +#endif +/*@}*/ + +/** @name From the SDL library code -- needed for registering QuickDraw on MacOS */ +/*@{*/ +#if defined(__MACOS__) + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** Forward declaration so we don't need to include QuickDraw.h */ +struct QDGlobals; + +/** This should be called from your main() function, if any */ +extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); + +#ifdef __cplusplus +} +#endif +#include "close_code.h" +#endif +/*@}*/ + +#endif /* Need to redefine main()? */ + +#endif /* _SDL_main_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_mouse.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_mouse.h new file mode 100644 index 0000000..7c563b9 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_mouse.h @@ -0,0 +1,143 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_mouse.h + * Include file for SDL mouse event handling + */ + +#ifndef _SDL_mouse_h +#define _SDL_mouse_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct WMcursor WMcursor; /**< Implementation dependent */ +typedef struct SDL_Cursor { + SDL_Rect area; /**< The area of the mouse cursor */ + Sint16 hot_x, hot_y; /**< The "tip" of the cursor */ + Uint8 *data; /**< B/W cursor data */ + Uint8 *mask; /**< B/W cursor mask */ + Uint8 *save[2]; /**< Place to save cursor area */ + WMcursor *wm_cursor; /**< Window-manager cursor */ +} SDL_Cursor; + +/* Function prototypes */ +/** + * Retrieve the current state of the mouse. + * The current button state is returned as a button bitmask, which can + * be tested using the SDL_BUTTON(X) macros, and x and y are set to the + * current mouse cursor position. You can pass NULL for either x or y. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Retrieve the current state of the mouse. + * The current button state is returned as a button bitmask, which can + * be tested using the SDL_BUTTON(X) macros, and x and y are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState(). + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Set the position of the mouse cursor (generates a mouse motion event) + */ +extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y); + +/** + * Create a cursor using the specified data and mask (in MSB format). + * The cursor width must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * data mask resulting pixel on screen + * 0 1 White + * 1 1 Black + * 0 0 Transparent + * 1 0 Inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + */ +extern DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor + (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); + +/** + * Set the currently active cursor to the specified one. + * If the cursor is currently visible, the change will be immediately + * represented on the display. + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor *cursor); + +/** + * Returns the currently active cursor. + */ +extern DECLSPEC SDL_Cursor * SDLCALL SDL_GetCursor(void); + +/** + * Deallocates a cursor created with SDL_CreateCursor(). + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor *cursor); + +/** + * Toggle whether or not the cursor is shown on the screen. + * The cursor start off displayed, but can be turned off. + * SDL_ShowCursor() returns 1 if the cursor was being displayed + * before the call, or 0 if it was not. You can query the current + * state by passing a 'toggle' value of -1. + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/*@{*/ +/** Used as a mask when testing buttons in buttonstate + * Button 1: Left mouse button + * Button 2: Middle mouse button + * Button 3: Right mouse button + * Button 4: Mouse wheel up (may also be a real button) + * Button 5: Mouse wheel down (may also be a real button) + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_WHEELUP 4 +#define SDL_BUTTON_WHEELDOWN 5 +#define SDL_BUTTON_X1 6 +#define SDL_BUTTON_X2 7 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_mouse_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_mutex.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_mutex.h new file mode 100644 index 0000000..c8da9b1 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_mutex.h @@ -0,0 +1,177 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_mutex_h +#define _SDL_mutex_h + +/** @file SDL_mutex.h + * Functions to provide thread synchronization primitives + * + * @note These are independent of the other SDL routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** This is the timeout value which corresponds to never time out */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Mutex functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** The SDL mutex structure, defined in SDL_mutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** Create a mutex, initialized unlocked */ +extern DECLSPEC SDL_mutex * SDLCALL SDL_CreateMutex(void); + +#define SDL_LockMutex(m) SDL_mutexP(m) +/** Lock the mutex + * @return 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_mutexP(SDL_mutex *mutex); + +#define SDL_UnlockMutex(m) SDL_mutexV(m) +/** Unlock the mutex + * @return 0, or -1 on error + * + * It is an error to unlock a mutex that has not been locked by + * the current thread, and doing so results in undefined behavior. + */ +extern DECLSPEC int SDLCALL SDL_mutexV(SDL_mutex *mutex); + +/** Destroy a mutex */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex *mutex); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Semaphore functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** The SDL semaphore structure, defined in SDL_sem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** Create a semaphore, initialized with value, returns NULL on failure. */ +extern DECLSPEC SDL_sem * SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** Destroy a semaphore */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem *sem); + +/** + * This function suspends the calling thread until the semaphore pointed + * to by sem has a positive count. It then atomically decreases the semaphore + * count. + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem *sem); + +/** Non-blocking variant of SDL_SemWait(). + * @return 0 if the wait succeeds, + * SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem *sem); + +/** Variant of SDL_SemWait() with a timeout in milliseconds, returns 0 if + * the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait does not succeed in + * the allotted time, and -1 on error. + * + * On some platforms this function is implemented by looping with a delay + * of 1 ms, and so should be avoided if possible. + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 ms); + +/** Atomically increases the semaphore's count (not blocking). + * @return 0, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem *sem); + +/** Returns the current count of the semaphore */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem *sem); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Condition_variable_functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*@{*/ +/** The SDL condition variable structure, defined in SDL_cond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; +/*@}*/ + +/** Create a condition variable */ +extern DECLSPEC SDL_cond * SDLCALL SDL_CreateCond(void); + +/** Destroy a condition variable */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond *cond); + +/** Restart one of the threads that are waiting on the condition variable, + * @return 0 or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond *cond); + +/** Restart all threads that are waiting on the condition variable, + * @return 0 or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond *cond); + +/** Wait on the condition variable, unlocking the provided mutex. + * The mutex must be locked before entering this function! + * The mutex is re-locked once the condition variable is signaled. + * @return 0 when it is signaled, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond *cond, SDL_mutex *mut); + +/** Waits for at most 'ms' milliseconds, and returns 0 if the condition + * variable is signaled, SDL_MUTEX_TIMEDOUT if the condition is not + * signaled in the allotted time, and -1 on error. + * On some platforms this function is implemented by looping with a delay + * of 1 ms, and so should be avoided if possible. + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms); + +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_mutex_h */ + diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_name.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_name.h new file mode 100644 index 0000000..511619a --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_name.h @@ -0,0 +1,11 @@ + +#ifndef _SDLname_h_ +#define _SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* _SDLname_h_ */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h new file mode 100644 index 0000000..163872a --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h @@ -0,0 +1,7348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2021 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* This is a simple file to encapsulate the OpenGL API headers */ + +#include "SDL_config.h" + +#ifdef __WIN32__ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX +#define NOMINMAX /* Don't define min() and max() */ +#endif +#include <windows.h> +#endif +#ifndef NO_SDL_GLEXT +#define __glext_h_ /* Don't let gl.h include glext.h */ +#define __gl_glext_h_ /* Don't let gl.h include glext.h */ +#endif +#if defined(__MACOSX__) +#include <OpenGL/gl.h> /* Header File For The OpenGL Library */ +#include <OpenGL/glu.h> /* Header File For The GLU Library */ +#elif defined(__MACOS__) +#include <gl.h> /* Header File For The OpenGL Library */ +#include <glu.h> /* Header File For The GLU Library */ +#else +#include <GL/gl.h> /* Header File For The OpenGL Library */ +#include <GL/glu.h> /* Header File For The GLU Library */ +#endif +#ifndef NO_SDL_GLEXT +#undef __glext_h_ +#undef __gl_glext_h_ +#endif + +/** glext.h + * This is included here because glext.h is not available on some systems. + * If you don't want this version included, simply define "NO_SDL_GLEXT" + */ +#ifndef NO_SDL_GLEXT +#if !(defined(__glext_h_) || defined(__gl_glext_h_)) && !defined(GL_GLEXT_LEGACY) +#define __glext_h_ +#define __gl_glext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#include <windows.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/*************************************************************/ + +/* Header file version number, required by OpenGL ABI for Linux */ +/* glext.h last updated 2008/03/24 */ +/* Current version at http://www.opengl.org/registry/ */ +#define GL_GLEXT_VERSION 40 + +#ifndef GL_VERSION_1_2 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_RESCALE_NORMAL 0x803A +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#endif + +#ifndef GL_ARB_imaging +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_FUNC_ADD 0x8006 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BLEND_EQUATION 0x8009 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#endif + +#ifndef GL_VERSION_1_3 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#endif + +#ifndef GL_VERSION_1_4 +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#endif + +#ifndef GL_VERSION_1_5 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_SRC2_RGB GL_SOURCE2_RGB +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#endif + +#ifndef GL_VERSION_2_0 +#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_COORDS 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#endif + +#ifndef GL_VERSION_2_1 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +#endif + +#ifndef GL_ARB_multitexture +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#endif + +#ifndef GL_ARB_transpose_matrix +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#endif + +#ifndef GL_ARB_multisample +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#endif + +#ifndef GL_ARB_texture_env_add +#endif + +#ifndef GL_ARB_texture_cube_map +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif + +#ifndef GL_ARB_texture_compression +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#endif + +#ifndef GL_ARB_texture_border_clamp +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif + +#ifndef GL_ARB_point_parameters +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#endif + +#ifndef GL_ARB_vertex_blend +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#endif + +#ifndef GL_ARB_matrix_palette +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#endif + +#ifndef GL_ARB_texture_env_combine +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif + +#ifndef GL_ARB_texture_env_crossbar +#endif + +#ifndef GL_ARB_texture_env_dot3 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#endif + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif + +#ifndef GL_ARB_depth_texture +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif + +#ifndef GL_ARB_shadow +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif + +#ifndef GL_ARB_shadow_ambient +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif + +#ifndef GL_ARB_window_pos +#endif + +#ifndef GL_ARB_vertex_program +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +#endif + +#ifndef GL_ARB_fragment_program +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#endif + +#ifndef GL_ARB_vertex_buffer_object +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +#endif + +#ifndef GL_ARB_occlusion_query +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +#endif + +#ifndef GL_ARB_shader_objects +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +#endif + +#ifndef GL_ARB_vertex_shader +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +#endif + +#ifndef GL_ARB_fragment_shader +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#endif + +#ifndef GL_ARB_shading_language_100 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#endif + +#ifndef GL_ARB_texture_non_power_of_two +#endif + +#ifndef GL_ARB_point_sprite +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif + +#ifndef GL_ARB_fragment_program_shadow +#endif + +#ifndef GL_ARB_draw_buffers +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +#endif + +#ifndef GL_ARB_texture_rectangle +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif + +#ifndef GL_ARB_color_buffer_float +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +#endif + +#ifndef GL_ARB_half_float_pixel +#define GL_HALF_FLOAT_ARB 0x140B +#endif + +#ifndef GL_ARB_texture_float +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#endif + +#ifndef GL_ARB_pixel_buffer_object +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif + +#ifndef GL_EXT_abgr +#define GL_ABGR_EXT 0x8000 +#endif + +#ifndef GL_EXT_blend_color +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +#endif + +#ifndef GL_EXT_polygon_offset +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#endif + +#ifndef GL_EXT_texture +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif + +#ifndef GL_EXT_texture3D +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#endif + +#ifndef GL_SGIS_texture_filter4 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#endif + +#ifndef GL_EXT_subtexture +#endif + +#ifndef GL_EXT_copy_texture +#endif + +#ifndef GL_EXT_histogram +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#endif + +#ifndef GL_EXT_convolution +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#endif + +#ifndef GL_SGI_color_matrix +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif + +#ifndef GL_SGI_color_table +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#endif + +#ifndef GL_SGIS_pixel_texture +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#endif + +#ifndef GL_SGIX_pixel_texture +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#endif + +#ifndef GL_SGIS_texture4D +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#endif + +#ifndef GL_SGI_texture_color_table +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif + +#ifndef GL_EXT_cmyka +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif + +#ifndef GL_EXT_texture_object +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#endif + +#ifndef GL_SGIS_detail_texture +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#endif + +#ifndef GL_SGIS_sharpen_texture +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#endif + +#ifndef GL_EXT_packed_pixels +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif + +#ifndef GL_SGIS_texture_lod +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif + +#ifndef GL_SGIS_multisample +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#endif + +#ifndef GL_EXT_rescale_normal +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif + +#ifndef GL_EXT_vertex_array +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#endif + +#ifndef GL_EXT_misc_attribute +#endif + +#ifndef GL_SGIS_generate_mipmap +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif + +#ifndef GL_SGIX_clipmap +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif + +#ifndef GL_SGIX_shadow +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif + +#ifndef GL_SGIS_texture_border_clamp +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#endif + +#ifndef GL_EXT_blend_minmax +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 +#endif + +#ifndef GL_EXT_blend_subtract +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif + +#ifndef GL_EXT_blend_logic_op +#endif + +#ifndef GL_SGIX_interlace +#define GL_INTERLACE_SGIX 0x8094 +#endif + +#ifndef GL_SGIX_pixel_tiles +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif + +#ifndef GL_SGIS_texture_select +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif + +#ifndef GL_SGIX_sprite +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#endif + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif + +#ifndef GL_EXT_point_parameters +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#endif + +#ifndef GL_SGIS_point_parameters +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#endif + +#ifndef GL_SGIX_instruments +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#endif + +#ifndef GL_SGIX_texture_scale_bias +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif + +#ifndef GL_SGIX_framezoom +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#endif + +#ifndef GL_SGIX_tag_sample_buffer +#endif + +#ifndef GL_FfdMaskSGIX +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#endif + +#ifndef GL_SGIX_polynomial_ffd +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#endif + +#ifndef GL_SGIX_reference_plane +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#endif + +#ifndef GL_SGIX_flush_raster +#endif + +#ifndef GL_SGIX_depth_texture +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif + +#ifndef GL_SGIS_fog_function +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#endif + +#ifndef GL_SGIX_fog_offset +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif + +#ifndef GL_HP_image_transform +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#endif + +#ifndef GL_HP_convolution_border_modes +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif + +#ifndef GL_INGR_palette_buffer +#endif + +#ifndef GL_SGIX_texture_add_env +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif + +#ifndef GL_EXT_color_subtable +#endif + +#ifndef GL_PGI_vertex_hints +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif + +#ifndef GL_PGI_misc_hints +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#endif + +#ifndef GL_EXT_paletted_texture +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#endif + +#ifndef GL_EXT_clip_volume_hint +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif + +#ifndef GL_SGIX_list_priority +#define GL_LIST_PRIORITY_SGIX 0x8182 +#endif + +#ifndef GL_SGIX_ir_instrument1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif + +#ifndef GL_SGIX_texture_lod_bias +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif + +#ifndef GL_SGIX_shadow_ambient +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif + +#ifndef GL_EXT_index_texture +#endif + +#ifndef GL_EXT_index_material +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#endif + +#ifndef GL_EXT_index_func +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#endif + +#ifndef GL_EXT_index_array_formats +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif + +#ifndef GL_EXT_compiled_vertex_array +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#endif + +#ifndef GL_EXT_cull_vertex +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#endif + +#ifndef GL_SGIX_ycrcb +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif + +#ifndef GL_SGIX_fragment_lighting +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#endif + +#ifndef GL_IBM_rasterpos_clip +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif + +#ifndef GL_HP_texture_lighting +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif + +#ifndef GL_EXT_draw_range_elements +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#endif + +#ifndef GL_WIN_phong_shading +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif + +#ifndef GL_WIN_specular_fog +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif + +#ifndef GL_EXT_light_texture +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +/* reuse GL_FRAGMENT_DEPTH_EXT */ +#endif + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif + +#ifndef GL_SGIX_impact_pixel_texture +#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 +#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 +#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 +#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 +#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 +#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 +#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A +#endif + +#ifndef GL_EXT_bgra +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif + +#ifndef GL_SGIX_async +#define GL_ASYNC_MARKER_SGIX 0x8329 +#endif + +#ifndef GL_SGIX_async_pixel +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif + +#ifndef GL_SGIX_async_histogram +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif + +#ifndef GL_INTEL_texture_scissor +#endif + +#ifndef GL_INTEL_parallel_arrays +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#endif + +#ifndef GL_HP_occlusion_test +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif + +#ifndef GL_EXT_pixel_transform +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#endif + +#ifndef GL_EXT_pixel_transform_color_table +#endif + +#ifndef GL_EXT_shared_texture_palette +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif + +#ifndef GL_EXT_separate_specular_color +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif + +#ifndef GL_EXT_secondary_color +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#endif + +#ifndef GL_EXT_texture_perturb_normal +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#endif + +#ifndef GL_EXT_multi_draw_arrays +#endif + +#ifndef GL_EXT_fog_coord +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#endif + +#ifndef GL_REND_screen_coordinates +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif + +#ifndef GL_EXT_coordinate_frame +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#endif + +#ifndef GL_EXT_texture_env_combine +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif + +#ifndef GL_APPLE_specular_vector +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif + +#ifndef GL_APPLE_transform_hint +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif + +#ifndef GL_SGIX_fog_scale +#define GL_FOG_SCALE_SGIX 0x81FC +#define GL_FOG_SCALE_VALUE_SGIX 0x81FD +#endif + +#ifndef GL_SUNX_constant_data +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#endif + +#ifndef GL_SUN_global_alpha +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#endif + +#ifndef GL_SUN_triangle_list +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#endif + +#ifndef GL_SUN_vertex +#endif + +#ifndef GL_EXT_blend_func_separate +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#endif + +#ifndef GL_INGR_color_clamp +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif + +#ifndef GL_INGR_interlace_read +#define GL_INTERLACE_READ_INGR 0x8568 +#endif + +#ifndef GL_EXT_stencil_wrap +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif + +#ifndef GL_EXT_422_pixels +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif + +#ifndef GL_NV_texgen_reflection +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif + +#ifndef GL_EXT_texture_cube_map +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif + +#ifndef GL_SUN_convolution_border_modes +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif + +#ifndef GL_EXT_texture_env_add +#endif + +#ifndef GL_EXT_texture_lod_bias +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +#ifndef GL_EXT_vertex_weighting +#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT GL_MODELVIEW +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#endif + +#ifndef GL_NV_light_max_exponent +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif + +#ifndef GL_NV_vertex_array_range +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#endif + +#ifndef GL_NV_register_combiners +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +/* reuse GL_TEXTURE0_ARB */ +/* reuse GL_TEXTURE1_ARB */ +/* reuse GL_ZERO */ +/* reuse GL_NONE */ +/* reuse GL_FOG */ +#endif + +#ifndef GL_NV_fog_distance +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +/* reuse GL_EYE_PLANE */ +#endif + +#ifndef GL_NV_texgen_emboss +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif + +#ifndef GL_NV_blend_square +#endif + +#ifndef GL_NV_texture_env_combine4 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif + +#ifndef GL_MESA_resize_buffers +#endif + +#ifndef GL_MESA_window_pos +#endif + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif + +#ifndef GL_IBM_cull_vertex +#define GL_CULL_VERTEX_IBM 103050 +#endif + +#ifndef GL_IBM_multimode_draw_arrays +#endif + +#ifndef GL_IBM_vertex_array_lists +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#endif + +#ifndef GL_SGIX_subsample +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif + +#ifndef GL_SGIX_ycrcb_subsample +#endif + +#ifndef GL_SGIX_ycrcba +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif + +#ifndef GL_SGI_depth_pass_instrument +#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 +#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 +#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 +#endif + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif + +#ifndef GL_3DFX_multisample +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif + +#ifndef GL_3DFX_tbuffer +#endif + +#ifndef GL_EXT_multisample +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#endif + +#ifndef GL_SGIX_vertex_preclip +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif + +#ifndef GL_SGIX_convolution_accuracy +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif + +#ifndef GL_SGIX_resample +#define GL_PACK_RESAMPLE_SGIX 0x842C +#define GL_UNPACK_RESAMPLE_SGIX 0x842D +#define GL_RESAMPLE_REPLICATE_SGIX 0x842E +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif + +#ifndef GL_SGIS_point_line_texgen +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif + +#ifndef GL_SGIS_texture_color_mask +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#endif + +#ifndef GL_EXT_texture_env_dot3 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#endif + +#ifndef GL_ATI_texture_mirror_once +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#endif + +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif + +#ifndef GL_NV_evaluators +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#endif + +#ifndef GL_NV_packed_depth_stencil +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif + +#ifndef GL_NV_register_combiners2 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#endif + +#ifndef GL_NV_texture_compression_vtc +#endif + +#ifndef GL_NV_texture_rectangle +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#endif + +#ifndef GL_NV_texture_shader +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV +#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV +#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif + +#ifndef GL_NV_texture_shader2 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif + +#ifndef GL_NV_vertex_array_range2 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif + +#ifndef GL_NV_vertex_program +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#endif + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif + +#ifndef GL_SGIX_scalebias_hint +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif + +#ifndef GL_OML_interlace +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif + +#ifndef GL_OML_subsample +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif + +#ifndef GL_OML_resample +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif + +#ifndef GL_NV_copy_depth_to_color +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif + +#ifndef GL_ATI_envmap_bumpmap +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +#endif + +#ifndef GL_ATI_fragment_shader +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#endif + +#ifndef GL_ATI_pn_triangles +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#endif + +#ifndef GL_ATI_vertex_array_object +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#endif + +#ifndef GL_EXT_vertex_shader +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#endif + +#ifndef GL_ATI_vertex_streams +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#endif + +#ifndef GL_ATI_element_array +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#endif + +#ifndef GL_SUN_mesh_array +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#endif + +#ifndef GL_SUN_slice_accum +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif + +#ifndef GL_NV_multisample_filter_hint +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif + +#ifndef GL_NV_depth_clamp +#define GL_DEPTH_CLAMP_NV 0x864F +#endif + +#ifndef GL_NV_occlusion_query +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#endif + +#ifndef GL_NV_point_sprite +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#endif + +#ifndef GL_NV_texture_shader3 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif + +#ifndef GL_NV_vertex_program1_1 +#endif + +#ifndef GL_EXT_shadow_funcs +#endif + +#ifndef GL_EXT_stencil_two_side +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#endif + +#ifndef GL_ATI_text_fragment_shader +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#endif + +#ifndef GL_APPLE_client_storage +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#endif + +#ifndef GL_APPLE_element_array +#define GL_ELEMENT_ARRAY_APPLE 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A +#endif + +#ifndef GL_APPLE_fence +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +#endif + +#ifndef GL_APPLE_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#endif + +#ifndef GL_APPLE_vertex_array_range +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +#endif + +#ifndef GL_APPLE_ycbcr_422 +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#endif + +#ifndef GL_S3_s3tc +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#endif + +#ifndef GL_ATI_draw_buffers +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +#endif + +#ifndef GL_ATI_pixel_format_float +#define GL_TYPE_RGBA_FLOAT_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#endif + +#ifndef GL_ATI_texture_env_combine3 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#endif + +#ifndef GL_ATI_texture_float +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif + +#ifndef GL_NV_float_buffer +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif + +#ifndef GL_NV_fragment_program +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#endif + +#ifndef GL_NV_half_float +#define GL_HALF_FLOAT_NV 0x140B +#endif + +#ifndef GL_NV_pixel_data_range +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +#endif + +#ifndef GL_NV_primitive_restart +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#endif + +#ifndef GL_NV_texture_expand_normal +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#endif + +#ifndef GL_NV_vertex_program2 +#endif + +#ifndef GL_ATI_map_object_buffer +#endif + +#ifndef GL_ATI_separate_stencil +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +#endif + +#ifndef GL_ATI_vertex_attrib_array_object +#endif + +#ifndef GL_OES_read_format +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif + +#ifndef GL_EXT_depth_bounds_test +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +#endif + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#endif + +#ifndef GL_EXT_blend_equation_separate +#define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#endif + +#ifndef GL_MESA_pack_invert +#define GL_PACK_INVERT_MESA 0x8758 +#endif + +#ifndef GL_MESA_ycbcr_texture +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#endif + +#ifndef GL_EXT_pixel_buffer_object +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#endif + +#ifndef GL_NV_fragment_program_option +#endif + +#ifndef GL_NV_fragment_program2 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#endif + +#ifndef GL_NV_vertex_program2_option +/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ +/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */ +#endif + +#ifndef GL_NV_vertex_program3 +/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ +#endif + +#ifndef GL_EXT_framebuffer_object +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#endif + +#ifndef GL_GREMEDY_string_marker +#endif + +#ifndef GL_EXT_packed_depth_stencil +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif + +#ifndef GL_EXT_stencil_clear_tag +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#endif + +#ifndef GL_EXT_texture_sRGB +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif + +#ifndef GL_EXT_framebuffer_blit +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#endif + +#ifndef GL_EXT_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#endif + +#ifndef GL_MESAX_texture_stack +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#endif + +#ifndef GL_EXT_timer_query +#define GL_TIME_ELAPSED_EXT 0x88BF +#endif + +#ifndef GL_EXT_gpu_program_parameters +#endif + +#ifndef GL_APPLE_flush_buffer_range +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#endif + +#ifndef GL_NV_gpu_program4 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +#endif + +#ifndef GL_NV_geometry_program4 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#endif + +#ifndef GL_EXT_geometry_shader4 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */ +/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */ +/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */ +/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */ +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +/* reuse GL_LINES_ADJACENCY_EXT */ +/* reuse GL_LINE_STRIP_ADJACENCY_EXT */ +/* reuse GL_TRIANGLES_ADJACENCY_EXT */ +/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ +/* reuse GL_PROGRAM_POINT_SIZE_EXT */ +#endif + +#ifndef GL_NV_vertex_program4 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#endif + +#ifndef GL_EXT_gpu_shader4 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#endif + +#ifndef GL_EXT_draw_instanced +#endif + +#ifndef GL_EXT_packed_float +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#endif + +#ifndef GL_EXT_texture_array +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ +#endif + +#ifndef GL_EXT_texture_buffer_object +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#endif + +#ifndef GL_EXT_texture_compression_latc +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif + +#ifndef GL_EXT_texture_shared_exponent +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#endif + +#ifndef GL_NV_depth_buffer_float +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#endif + +#ifndef GL_NV_fragment_program4 +#endif + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#endif + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#endif + +#ifndef GL_NV_geometry_shader4 +#endif + +#ifndef GL_NV_parameter_buffer_object +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +#endif + +#ifndef GL_EXT_draw_buffers2 +#endif + +#ifndef GL_NV_transform_feedback +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#endif + +#ifndef GL_EXT_bindable_uniform +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#endif + +#ifndef GL_EXT_texture_integer +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#endif + +#ifndef GL_GREMEDY_frame_terminator +#endif + + +/*************************************************************/ + +#include <stddef.h> +#ifndef GL_VERSION_2_0 +/* GL type for program/shader text */ +typedef char GLchar; /* native character */ +#endif + +#ifndef GL_VERSION_1_5 +/* GL types for handling large vertex buffer objects */ +#ifdef __APPLE__ +typedef long GLintptr; +typedef long GLsizeiptr; +#else +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +#endif +#endif + +#ifndef GL_ARB_vertex_buffer_object +/* GL types for handling large vertex buffer objects */ +#ifdef __APPLE__ +typedef long GLintptrARB; +typedef long GLsizeiptrARB; +#else +typedef ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; +#endif +#endif + +#ifndef GL_ARB_shader_objects +/* GL types for handling shader object handles and program/shader text */ +typedef char GLcharARB; /* native character */ +#if defined(__APPLE__) +typedef void *GLhandleARB; /* shader object handle */ +#else +typedef unsigned int GLhandleARB; /* shader object handle */ +#endif +#endif + +/* GL types for "half" precision (s10e5) float data in host memory */ +#ifndef GL_ARB_half_float_pixel +typedef unsigned short GLhalfARB; +#endif + +#ifndef GL_NV_half_float +typedef unsigned short GLhalfNV; +#endif + +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glxext.h, so must be protected */ +#define GLEXT_64_TYPES_DEFINED +/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ +/* (as used in the GL_EXT_timer_query extension). */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include <inttypes.h> +#elif defined(__sun__) || defined(__digital__) +#include <inttypes.h> +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include <inttypes.h> +#elif defined(__SCO__) || defined(__USLC__) +#include <stdint.h> +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && (defined(__GNUC__)||defined(__WATCOMC__)) +#include <stdint.h> +#elif defined(_WIN32) +#if 0 /* handled by SDL_config_windows.h */ +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#endif /* */ +#elif defined(__MACOS__) /* handled by SDL_config_macos.h */ +#else +#include <inttypes.h> /* Fallback option */ +#endif +#endif + +#ifndef GL_EXT_timer_query +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); +GLAPI void APIENTRY glBlendEquation (GLenum); +GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); +GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); +GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogram (GLenum); +GLAPI void APIENTRY glResetMinmax (GLenum); +GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum); +GLAPI void APIENTRY glClientActiveTexture (GLenum); +GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); +#endif + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glFogCoordf (GLfloat); +GLAPI void APIENTRY glFogCoordfv (const GLfloat *); +GLAPI void APIENTRY glFogCoordd (GLdouble); +GLAPI void APIENTRY glFogCoorddv (const GLdouble *); +GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *); +GLAPI void APIENTRY glPointParameteri (GLenum, GLint); +GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *); +GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *); +GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *); +GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *); +GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *); +GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *); +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *); +GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *); +GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *); +GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *); +GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *); +GLAPI void APIENTRY glWindowPos2i (GLint, GLint); +GLAPI void APIENTRY glWindowPos2iv (const GLint *); +GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2sv (const GLshort *); +GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *); +GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *); +GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3iv (const GLint *); +GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3sv (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); +#endif + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsQuery (GLuint); +GLAPI void APIENTRY glBeginQuery (GLenum, GLuint); +GLAPI void APIENTRY glEndQuery (GLenum); +GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *); +GLAPI void APIENTRY glBindBuffer (GLenum, GLuint); +GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsBuffer (GLuint); +GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum); +GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *); +GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *); +GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum); +GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum); +GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); +typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); +#endif + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum); +GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *); +GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint); +GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint); +GLAPI void APIENTRY glAttachShader (GLuint, GLuint); +GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *); +GLAPI void APIENTRY glCompileShader (GLuint); +GLAPI GLuint APIENTRY glCreateProgram (void); +GLAPI GLuint APIENTRY glCreateShader (GLenum); +GLAPI void APIENTRY glDeleteProgram (GLuint); +GLAPI void APIENTRY glDeleteShader (GLuint); +GLAPI void APIENTRY glDetachShader (GLuint, GLuint); +GLAPI void APIENTRY glDisableVertexAttribArray (GLuint); +GLAPI void APIENTRY glEnableVertexAttribArray (GLuint); +GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *); +GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *); +GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *); +GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *); +GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *); +GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgram (GLuint); +GLAPI GLboolean APIENTRY glIsShader (GLuint); +GLAPI void APIENTRY glLinkProgram (GLuint); +GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *); +GLAPI void APIENTRY glUseProgram (GLuint); +GLAPI void APIENTRY glUniform1f (GLint, GLfloat); +GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform1i (GLint, GLint); +GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint); +GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glValidateProgram (GLuint); +GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTextureARB (GLenum); +GLAPI void APIENTRY glClientActiveTextureARB (GLenum); +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +#endif + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +#endif + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); +#endif + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#endif + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); +#endif + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#endif + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); +GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); +GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); +GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); +GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); +GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); +GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); +GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); +GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexBlendARB (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); +#endif + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); +GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); +GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); +GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#endif + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#endif + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#endif + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#endif + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#endif + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#endif + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); +GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); +GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); +GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); +GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); +GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); +GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); +GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +#endif + +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint); +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint); +GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *); +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *); +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *); +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *); +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *); +GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); +#endif + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */ +#endif + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint); +GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsBufferARB (GLuint); +GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); +GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); +GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); +GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum); +GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum); +GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); +typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); +#endif + +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsQueryARB (GLuint); +GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint); +GLAPI void APIENTRY glEndQueryARB (GLenum); +GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB); +GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum); +GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB); +GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum); +GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); +GLAPI void APIENTRY glCompileShaderARB (GLhandleARB); +GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); +GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB); +GLAPI void APIENTRY glLinkProgramARB (GLhandleARB); +GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB); +GLAPI void APIENTRY glValidateProgramARB (GLhandleARB); +GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat); +GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform1iARB (GLint, GLint); +GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint); +GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *); +GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *); +GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); +GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); +GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *); +GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); +GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *); +GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *); +GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#endif + +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *); +GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); +GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +#endif + +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +#endif + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +#endif + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +#endif + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +#endif + +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +#endif + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#endif + +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClampColorARB (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +#endif + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +#endif + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +#endif + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#endif + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#endif + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +#endif + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +#endif + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#endif + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#endif + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogramEXT (GLenum); +GLAPI void APIENTRY glResetMinmaxEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); +#endif + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +#endif + +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +#endif + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +#endif + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +#endif + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +#endif + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#endif + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#endif + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); +GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#endif + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#endif + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#endif + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#endif + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#endif + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +#endif + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#endif + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glArrayElementEXT (GLint); +GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); +GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); +GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#endif + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#endif + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#endif + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#endif + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#endif + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#endif + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#endif + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#endif + +#ifndef GL_SGIX_texture_select +#define GL_SGIX_texture_select 1 +#endif + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +#endif + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#endif + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); +GLAPI void APIENTRY glStartInstrumentsSGIX (void); +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +#endif + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#endif + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameZoomSGIX (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +#endif + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTagSampleBufferSGIX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +#endif + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); +GLAPI void APIENTRY glDeformSGIX (GLbitfield); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +#endif + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +#endif + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushRasterSGIX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); +#endif + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#endif + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +#endif + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#endif + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#endif + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#endif + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#endif + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glHintPGI (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); +#endif + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#endif + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); +GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); +GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); +GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +#endif + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#endif + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#endif + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#endif + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#endif + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +#endif + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +#endif + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#endif + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); +GLAPI void APIENTRY glUnlockArraysEXT (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); +#endif + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +#endif + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#endif + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +#endif + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#endif + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#endif + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +#endif + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#endif + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#endif + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyTextureEXT (GLenum); +GLAPI void APIENTRY glTextureLightEXT (GLenum); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +#endif + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#endif + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#endif + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +#endif + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#endif + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#endif + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); +GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +#endif + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#endif + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#endif + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#endif + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureNormalEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogCoordfEXT (GLfloat); +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); +GLAPI void APIENTRY glFogCoorddEXT (GLdouble); +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#endif + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); +GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); +GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); +GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glTangent3ivEXT (const GLint *); +GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glTangent3svEXT (const GLshort *); +GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); +GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); +GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); +GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); +GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); +GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#endif + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#endif + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#endif + +#ifndef GL_SGIX_fog_scale +#define GL_SGIX_fog_scale 1 +#endif + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFinishTextureSUNX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); +#endif + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +#endif + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); +#endif + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#endif + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif + +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#endif + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#endif + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#endif + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#endif + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#endif + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#endif + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#endif + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#endif + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); +#endif + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); +GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); +GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); +GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); +GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +#endif + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#endif + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#endif + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#endif + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glResizeBuffersMESA (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); +#endif + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +#endif + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#endif + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); +#endif + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +#endif + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#endif + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#endif + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#endif + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#endif + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTbufferMask3DFX (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +#endif + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +#endif + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#endif + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#endif + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#endif + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#endif + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); +#endif + +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +#endif + +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +#endif + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); +GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glFinishFenceNV (GLuint); +GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); +GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); +GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +#endif + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#endif + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#endif + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#endif + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#endif + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#endif + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); +GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); +GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); +GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +#endif + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#endif + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#endif + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#endif + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#endif + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#endif + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#endif + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +#endif + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); +GLAPI void APIENTRY glBeginFragmentShaderATI (void); +GLAPI void APIENTRY glEndFragmentShaderATI (void); +GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); +GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +#endif + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +#endif + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glFreeObjectBufferATI (GLuint); +GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +#endif + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVertexShaderEXT (void); +GLAPI void APIENTRY glEndVertexShaderEXT (void); +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); +GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *); +GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); +GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); +GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); +GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); +GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); +GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); +GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *); +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +#endif + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); +GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); +GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); +GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); +GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); +GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); +GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +#endif + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#endif + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#endif + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#endif + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); +GLAPI void APIENTRY glEndOcclusionQueryNV (void); +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); +GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +#endif + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#endif + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +#endif + +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); +#endif + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +#endif + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +#endif + +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *); +GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei); +GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#endif + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *); +GLAPI void APIENTRY glSetFenceAPPLE (GLuint); +GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint); +GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint); +GLAPI void APIENTRY glFinishFenceAPPLE (GLuint); +GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint); +GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +#endif + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint); +GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); +#endif + +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +#endif + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +#endif + +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +#endif + +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); +#endif + +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +/* This is really a WGL extension, but defines some associated GL enums. + * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string. + */ +#endif + +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +#endif + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#endif + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#endif + +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */ +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *); +GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *); +GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +#endif + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *); +GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV); +GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +#endif + +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *); +GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +#endif + +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveRestartNV (void); +GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +#endif + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +#endif + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +#endif + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint); +GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); +#endif + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#endif + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); +#endif + +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#endif + +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); +#endif + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +#endif + +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); +#endif + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +#endif + +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +#endif + +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +#endif + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +#endif + +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +#endif + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +#endif + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +#endif + +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint); +GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *); +GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *); +GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint); +GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *); +GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum); +GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGenerateMipmapEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +#endif + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string); +#endif + +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +#endif + +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); +#endif + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#endif + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +#endif + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *); +GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); +#endif + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#endif + +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); +#endif + +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *); +GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); +GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *); +GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); +GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *); +GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); +GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *); +GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); +GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *); +GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *); +GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *); +GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +#endif + +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint); +GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +#endif + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint); +GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +#endif + +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *); +GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *); +GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *); +GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint); +GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint); +GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +#endif + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif + +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +#endif + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +#endif + +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#endif + +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +#endif + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#endif + +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +#endif + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble); +GLAPI void APIENTRY glClearDepthdNV (GLdouble); +GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +#endif + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +#endif + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +#endif + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +#endif + +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *); +GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +#endif + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *); +GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *); +GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint); +GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint); +GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); +#endif + +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum); +GLAPI void APIENTRY glEndTransformFeedbackNV (void); +GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum); +GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr); +GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint); +GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum); +GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *); +GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *); +GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +#endif + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint); +GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint); +GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +#endif + +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *); +GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *); +GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#endif + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* GL_GLEXT_LEGACY */ +#endif /* NO_SDL_GLEXT */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_platform.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_platform.h new file mode 100644 index 0000000..bcbd7b6 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_platform.h @@ -0,0 +1,110 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_platform.h + * Try to get a standard set of platform defines + */ + +#ifndef _SDL_platform_h +#define _SDL_platform_h + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__BEOS__) +#undef __BEOS__ +#define __BEOS__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if defined(linux) || defined(__linux) || defined(__linux__) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(__APPLE__) +#undef __MACOSX__ +#define __MACOSX__ 1 +#elif defined(macintosh) +#undef __MACOS__ +#define __MACOS__ 1 +#endif +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif +#if defined(WIN32) || defined(_WIN32) +#undef __WIN32__ +#define __WIN32__ 1 +#endif + +#endif /* _SDL_platform_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_quit.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_quit.h new file mode 100644 index 0000000..abd2ec6 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_quit.h @@ -0,0 +1,55 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_quit.h + * Include file for SDL quit event handling + */ + +#ifndef _SDL_quit_h +#define _SDL_quit_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/** @file SDL_quit.h + * An SDL_QUITEVENT is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate SDL_QUITEVENT events as well. There is no way + * to determine the cause of an SDL_QUITEVENT, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + */ + +/** @file SDL_quit.h + * There are no functions directly affecting the quit event + */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUITMASK)) + +#endif /* _SDL_quit_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_rwops.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_rwops.h new file mode 100644 index 0000000..98361d7 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_rwops.h @@ -0,0 +1,155 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_rwops.h + * This file provides a general interface for SDL to read and write + * data sources. It can easily be extended to files, memory, etc. + */ + +#ifndef _SDL_rwops_h +#define _SDL_rwops_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the read/write operation structure -- very basic */ + +typedef struct SDL_RWops { + /** Seek to 'offset' relative to whence, one of stdio's whence values: + * SEEK_SET, SEEK_CUR, SEEK_END + * Returns the final offset in the data source. + */ + int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence); + + /** Read up to 'maxnum' objects each of size 'size' from the data + * source to the area pointed at by 'ptr'. + * Returns the number of objects read, or -1 if the read failed. + */ + int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum); + + /** Write exactly 'num' objects each of size 'objsize' from the area + * pointed at by 'ptr' to data source. + * Returns 'num', or -1 if the write failed. + */ + int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num); + + /** Close and free an allocated SDL_FSops structure */ + int (SDLCALL *close)(struct SDL_RWops *context); + + Uint32 type; + union { +#if defined(__WIN32__) && !defined(__SYMBIAN32__) + struct { + int append; + void *h; + struct { + void *data; + int size; + int left; + } buffer; + } win32io; +#endif +#ifdef HAVE_STDIO_H + struct { + int autoclose; + FILE *fp; + } stdio; +#endif + struct { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct { + void *data1; + } unknown; + } hidden; + +} SDL_RWops; + + +/** @name Functions to create SDL_RWops structures from various data sources */ +/*@{*/ + +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode); + +#ifdef HAVE_STDIO_H +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose); +#endif + +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size); +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size); + +extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void); +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area); + +/*@}*/ + +/** @name Seek Reference Points */ +/*@{*/ +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ +/*@}*/ + +/** @name Macros to easily read and write from an SDL_RWops structure */ +/*@{*/ +#define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence) +#define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR) +#define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n) +#define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n) +#define SDL_RWclose(ctx) (ctx)->close(ctx) +/*@}*/ + +/** @name Read an item of the specified endianness and return in native format */ +/*@{*/ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src); +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src); +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src); +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src); +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src); +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src); +/*@}*/ + +/** @name Write an item of native format to the specified endianness */ +/*@{*/ +extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value); +extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value); +extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value); +extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value); +extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value); +extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value); +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_rwops_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_stdinc.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_stdinc.h new file mode 100644 index 0000000..e8e542f --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_stdinc.h @@ -0,0 +1,626 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_stdinc.h + * This is a general header that includes C language support + */ + +#ifndef _SDL_stdinc_h +#define _SDL_stdinc_h + +#include "SDL_config.h" + + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef HAVE_STDIO_H +#include <stdio.h> +#endif +#if defined(STDC_HEADERS) +# include <stdlib.h> +# include <stddef.h> +# include <stdarg.h> +#else +# if defined(HAVE_STDLIB_H) +# include <stdlib.h> +# elif defined(HAVE_MALLOC_H) +# include <malloc.h> +# endif +# if defined(HAVE_STDDEF_H) +# include <stddef.h> +# endif +# if defined(HAVE_STDARG_H) +# include <stdarg.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#if defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#elif defined(HAVE_STDINT_H) +# include <stdint.h> +#endif +#ifdef HAVE_CTYPE_H +# include <ctype.h> +#endif +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +# include <iconv.h> +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include <alloca.h> +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include <malloc.h> +# define alloca _alloca +# elif defined(__WATCOMC__) +# include <malloc.h> +# elif defined(__BORLANDC__) +# include <malloc.h> +# elif defined(__DMC__) +# include <stdlib.h> +# elif defined(__AIX__) + #pragma alloca +# elif defined(__MRC__) + void *alloca (unsigned); +# else + void *alloca (size_t); +# endif +#endif + +/** The number of elements in an array */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/* Use proper C++ casts when compiled as C++ to be compatible with the option + -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above. */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression) +#define SDL_static_cast(type, expression) static_cast<type>(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#endif + +/** @name Basic data types */ +/*@{*/ +typedef enum { + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; + +typedef int8_t Sint8; +typedef uint8_t Uint8; +typedef int16_t Sint16; +typedef uint16_t Uint16; +typedef int32_t Sint32; +typedef uint32_t Uint32; + +#ifdef SDL_HAS_64BIT_TYPE +typedef int64_t Sint64; +#ifndef SYMBIAN32_GCCE +typedef uint64_t Uint64; +#endif +#else +/* This is really just a hack to prevent the compiler from complaining */ +typedef struct { + Uint32 hi; + Uint32 lo; +} Uint64, Sint64; +#endif + +/*@}*/ + +/** @name Make sure the types really have the right sizes */ +/*@{*/ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_dummy_ ## name[(x) * 2 - 1] + +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +/*@}*/ + +/** @name Enum Size Check + * Check to make sure enums are the size of ints, for structure packing. + * For both Watcom C/C++ and Borland C/C++ the compiler option that makes + * enums having the size of an int must be enabled. + * This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). + */ +/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ +#ifdef __MWERKS__ +#pragma enumsalwaysint on +#endif + +typedef enum { + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +#ifndef __NDS__ +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +/*@}*/ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_MALLOC +#define SDL_malloc malloc +#else +extern DECLSPEC void * SDLCALL SDL_malloc(size_t size); +#endif + +#ifdef HAVE_CALLOC +#define SDL_calloc calloc +#else +extern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size); +#endif + +#ifdef HAVE_REALLOC +#define SDL_realloc realloc +#else +extern DECLSPEC void * SDLCALL SDL_realloc(void *mem, size_t size); +#endif + +#ifdef HAVE_FREE +#define SDL_free free +#else +extern DECLSPEC void SDLCALL SDL_free(void *mem); +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +#ifdef HAVE_GETENV +#define SDL_getenv getenv +#else +extern DECLSPEC char * SDLCALL SDL_getenv(const char *name); +#endif + +#ifdef HAVE_PUTENV +#define SDL_putenv putenv +#else +extern DECLSPEC int SDLCALL SDL_putenv(const char *variable); +#endif + +#ifdef HAVE_QSORT +#define SDL_qsort qsort +#else +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, + int (*compare)(const void *, const void *)); +#endif + +#ifdef HAVE_ABS +#define SDL_abs abs +#else +#define SDL_abs(X) ((X) < 0 ? -(X) : (X)) +#endif + +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) + +#ifdef HAVE_CTYPE_H +#define SDL_isdigit(X) isdigit(X) +#define SDL_isspace(X) isspace(X) +#define SDL_toupper(X) toupper(X) +#define SDL_tolower(X) tolower(X) +#else +#define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9')) +#define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n')) +#define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X)) +#define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X)) +#endif + +#ifdef HAVE_MEMSET +#define SDL_memset memset +#else +extern DECLSPEC void * SDLCALL SDL_memset(void *dst, int c, size_t len); +#endif + +#if defined(__GNUC__) && defined(__i386__) +#define SDL_memset4(dst, val, len) \ +do { \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; stosl\n\t" \ + : "=&D" (u0), "=&a" (u1), "=&c" (u2) \ + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, len)) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memset4 +#define SDL_memset4(dst, val, len) \ +do { \ + unsigned _count = (len); \ + unsigned _n = (_count + 3) / 4; \ + Uint32 *_p = SDL_static_cast(Uint32 *, dst); \ + Uint32 _val = (val); \ + if (len == 0) break; \ + switch (_count % 4) { \ + case 0: do { *_p++ = _val; \ + case 3: *_p++ = _val; \ + case 2: *_p++ = _val; \ + case 1: *_p++ = _val; \ + } while ( --_n ); \ + } \ +} while(0) +#endif + +/* We can count on memcpy existing on Mac OS X and being well-tuned. */ +#if defined(__MACH__) && defined(__APPLE__) +#define SDL_memcpy(dst, src, len) memcpy(dst, src, len) +#elif defined(__GNUC__) && defined(__i386__) +#define SDL_memcpy(dst, src, len) \ +do { \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; movsl\n\t" \ + "testb $2,%b4\n\t" \ + "je 1f\n\t" \ + "movsw\n" \ + "1:\ttestb $1,%b4\n\t" \ + "je 2f\n\t" \ + "movsb\n" \ + "2:" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" (SDL_static_cast(unsigned, len)/4), "q" (len), "1" (dst),"2" (src) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memcpy +#ifdef HAVE_MEMCPY +#define SDL_memcpy memcpy +#elif defined(HAVE_BCOPY) +#define SDL_memcpy(d, s, n) bcopy((s), (d), (n)) +#else +extern DECLSPEC void * SDLCALL SDL_memcpy(void *dst, const void *src, size_t len); +#endif +#endif + +/* We can count on memcpy existing on Mac OS X and being well-tuned. */ +#if defined(__MACH__) && defined(__APPLE__) +#define SDL_memcpy4(dst, src, len) memcpy(dst, src, (len)*4) +#elif defined(__GNUC__) && defined(__i386__) +#define SDL_memcpy4(dst, src, len) \ +do { \ + int ecx, edi, esi; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; movsl" \ + : "=&c" (ecx), "=&D" (edi), "=&S" (esi) \ + : "0" (SDL_static_cast(unsigned, len)), "1" (dst), "2" (src) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memcpy4 +#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2) +#endif + +#if defined(__GNUC__) && defined(__i386__) +#define SDL_revcpy(dst, src, len) \ +do { \ + int u0, u1, u2; \ + char *dstp = SDL_static_cast(char *, dst); \ + char *srcp = SDL_static_cast(char *, src); \ + int n = (len); \ + if ( n >= 4 ) { \ + __asm__ __volatile__ ( \ + "std\n\t" \ + "rep ; movsl\n\t" \ + "cld\n\t" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" (n >> 2), \ + "1" (dstp+(n-4)), "2" (srcp+(n-4)) \ + : "memory" ); \ + } \ + switch (n & 3) { \ + case 3: dstp[2] = srcp[2]; \ + case 2: dstp[1] = srcp[1]; \ + case 1: dstp[0] = srcp[0]; \ + break; \ + default: \ + break; \ + } \ +} while(0) +#endif +#ifndef SDL_revcpy +extern DECLSPEC void * SDLCALL SDL_revcpy(void *dst, const void *src, size_t len); +#endif + +#ifdef HAVE_MEMMOVE +#define SDL_memmove memmove +#elif defined(HAVE_BCOPY) +#define SDL_memmove(d, s, n) bcopy((s), (d), (n)) +#else +#define SDL_memmove(dst, src, len) \ +do { \ + if ( dst < src ) { \ + SDL_memcpy(dst, src, len); \ + } else { \ + SDL_revcpy(dst, src, len); \ + } \ +} while(0) +#endif + +#ifdef HAVE_MEMCMP +#define SDL_memcmp memcmp +#else +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); +#endif + +#ifdef HAVE_STRLEN +#define SDL_strlen strlen +#else +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string); +#endif + +#ifdef HAVE_STRLCPY +#define SDL_strlcpy strlcpy +#else +extern DECLSPEC size_t SDLCALL SDL_strlcpy(char *dst, const char *src, size_t maxlen); +#endif + +#ifdef HAVE_STRLCAT +#define SDL_strlcat strlcat +#else +extern DECLSPEC size_t SDLCALL SDL_strlcat(char *dst, const char *src, size_t maxlen); +#endif + +#if defined(HAVE_STRDUP) && defined(_WIN32) +#define SDL_strdup _strdup +#elif defined(HAVE_STRDUP) +#define SDL_strdup strdup +#else +extern DECLSPEC char * SDLCALL SDL_strdup(const char *string); +#endif + +#ifdef HAVE__STRREV +#define SDL_strrev _strrev +#else +extern DECLSPEC char * SDLCALL SDL_strrev(char *string); +#endif + +#ifdef HAVE__STRUPR +#define SDL_strupr _strupr +#else +extern DECLSPEC char * SDLCALL SDL_strupr(char *string); +#endif + +#ifdef HAVE__STRLWR +#define SDL_strlwr _strlwr +#else +extern DECLSPEC char * SDLCALL SDL_strlwr(char *string); +#endif + +#ifdef HAVE_STRCHR +#define SDL_strchr strchr +#elif defined(HAVE_INDEX) +#define SDL_strchr index +#else +extern DECLSPEC char * SDLCALL SDL_strchr(const char *string, int c); +#endif + +#ifdef HAVE_STRRCHR +#define SDL_strrchr strrchr +#elif defined(HAVE_RINDEX) +#define SDL_strrchr rindex +#else +extern DECLSPEC char * SDLCALL SDL_strrchr(const char *string, int c); +#endif + +#ifdef HAVE_STRSTR +#define SDL_strstr strstr +#else +extern DECLSPEC char * SDLCALL SDL_strstr(const char *haystack, const char *needle); +#endif + +#ifdef HAVE_ITOA +#define SDL_itoa itoa +#else +#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix) +#endif + +#ifdef HAVE__LTOA +#define SDL_ltoa _ltoa +#else +extern DECLSPEC char * SDLCALL SDL_ltoa(long value, char *string, int radix); +#endif + +#ifdef HAVE__UITOA +#define SDL_uitoa _uitoa +#else +#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix) +#endif + +#ifdef HAVE__ULTOA +#define SDL_ultoa _ultoa +#else +extern DECLSPEC char * SDLCALL SDL_ultoa(unsigned long value, char *string, int radix); +#endif + +#ifdef HAVE_STRTOL +#define SDL_strtol strtol +#else +extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, int base); +#endif + +#ifdef HAVE_STRTOUL +#define SDL_strtoul strtoul +#else +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *string, char **endp, int base); +#endif + +#ifdef SDL_HAS_64BIT_TYPE + +#ifdef HAVE__I64TOA +#define SDL_lltoa _i64toa +#else +extern DECLSPEC char* SDLCALL SDL_lltoa(Sint64 value, char *string, int radix); +#endif + +#ifdef HAVE__UI64TOA +#define SDL_ulltoa _ui64toa +#else +extern DECLSPEC char* SDLCALL SDL_ulltoa(Uint64 value, char *string, int radix); +#endif + +#ifdef HAVE__STRTOI64 +#define SDL_strtoll _strtoi64 +#elif defined(HAVE_STRTOLL) +#define SDL_strtoll strtoll +#else +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int base); +#endif + +#ifdef HAVE__STRTOUI64 +#define SDL_strtoull _strtoui64 +#elif defined(HAVE_STRTOULL) +#define SDL_strtoull strtoull +#else +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *string, char **endp, int base); +#endif + +#endif /* SDL_HAS_64BIT_TYPE */ + +#ifdef HAVE_STRTOD +#define SDL_strtod strtod +#else +extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp); +#endif + +#ifdef HAVE_ATOI +#define SDL_atoi atoi +#else +#define SDL_atoi(X) SDL_strtol(X, NULL, 10) +#endif + +#ifdef HAVE_ATOF +#define SDL_atof atof +#else +#define SDL_atof(X) SDL_strtod(X, NULL) +#endif + +#ifdef HAVE_STRCMP +#define SDL_strcmp strcmp +#else +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +#endif + +#ifdef HAVE_STRNCMP +#define SDL_strncmp strncmp +#else +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +#endif + +#if defined(HAVE__STRICMP) +#define SDL_strcasecmp _stricmp +#elif defined(HAVE_STRCASECMP) +#define SDL_strcasecmp strcasecmp +#else +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +#endif + +#if defined(HAVE__STRNICMP) +#define SDL_strncasecmp _strnicmp +#elif defined(HAVE_STRNCASECMP) +#define SDL_strncasecmp strncasecmp +#else +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t maxlen); +#endif + +#ifdef HAVE_SSCANF +#define SDL_sscanf sscanf +#else +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...); +#endif + +#if defined(HAVE_SNPRINTF) && !(defined(__WATCOMC__) || defined(_WIN32)) +#define SDL_snprintf snprintf +#else +extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...); +#endif + +#if defined(HAVE_VSNPRINTF) && !(defined(__WATCOMC__) || defined(_WIN32)) +#define SDL_vsnprintf vsnprintf +#else +extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap); +#endif + +/** @name SDL_ICONV Error Codes + * The SDL implementation of iconv() returns these error codes + */ +/*@{*/ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 +/*@}*/ + +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +#define SDL_iconv_t iconv_t +#define SDL_iconv_open iconv_open +#define SDL_iconv_close iconv_close +#else +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +#endif +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +/** This function converts a string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + */ +extern DECLSPEC char * SDLCALL SDL_iconv_string(const char *tocode, const char *fromcode, const char *inbuf, size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_stdinc_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_syswm.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_syswm.h new file mode 100644 index 0000000..40845b6 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_syswm.h @@ -0,0 +1,232 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_syswm.h + * Include file for SDL custom system window manager hooks + */ + +#ifndef _SDL_syswm_h +#define _SDL_syswm_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_version.h" + +#ifndef SDL_PROTOTYPES_ONLY +# if defined(SDL_VIDEO_DRIVER_X11) +# if defined(__APPLE__) && defined(__MACH__) +# define Cursor X11Cursor /* conflicts with Quickdraw.h */ +# endif +# include <X11/Xlib.h> +# include <X11/Xatom.h> +# if defined(__APPLE__) && defined(__MACH__) +# undef Cursor +# endif +# elif defined(SDL_VIDEO_DRIVER_NANOX) +# include <microwin/nano-X.h> +# elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# include <windows.h> +# elif defined(SDL_VIDEO_DRIVER_PHOTON) +# include <sys/neutrino.h> +# include <Ph.h> +# endif +#endif + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL_syswm.h + * Your application has access to a special type of event 'SDL_SYSWMEVENT', + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState() + */ +struct SDL_SysWMinfo; +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + +#ifndef SDL_PROTOTYPES_ONLY + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) + +/** These are the various supported subsystems under UNIX */ +typedef enum { + SDL_SYSWM_X11 +} SDL_SYSWM_TYPE; + +/** The UNIX custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union { + XEvent xevent; + } event; +}; + +/** The UNIX custom window manager information structure. + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo { + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union { + struct { + Display *display; /**< The X11 display */ + Window window; /**< The X11 display window */ + /** These locking functions should be called around + * any X11 functions using the display variable, + * but not the gfxdisplay variable. + * They lock the event thread, so should not be + * called around event functions or from event filters. + */ + /*@{*/ + void (*lock_func)(void); + void (*unlock_func)(void); + /*@}*/ + + /** @name Introduced in SDL 1.0.2 */ + /*@{*/ + Window fswindow; /**< The X11 fullscreen window */ + Window wmwindow; /**< The X11 managed input window */ + /*@}*/ + + /** @name Introduced in SDL 1.2.12 */ + /*@{*/ + Display *gfxdisplay; /**< The X11 display to which rendering is done */ + /*@}*/ + } x11; + } info; +}; + +#elif defined(SDL_VIDEO_DRIVER_NANOX) + +/** The generic custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The windows custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version ; + GR_WINDOW_ID window ; /* The display window */ +}; + +#elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) + +/** The windows custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ +}; + +/** The windows custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + HWND window; /**< The Win32 display window */ + HGLRC hglrc; /**< The OpenGL context, if any */ +}; + +#elif defined(SDL_VIDEO_DRIVER_RISCOS) + +/** RISC OS custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int eventCode; /**< The window for the message */ + int pollBlock[64]; +}; + +/** The RISC OS custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + int wimpVersion; /**< Wimp version running under */ + int taskHandle; /**< The RISC OS task handle */ + int window; /**< The RISC OS display window */ +}; + +#elif defined(SDL_VIDEO_DRIVER_PHOTON) + +/** The QNX custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The QNX custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + int data; +}; + +#else + +/** The generic custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The generic custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + int data; +}; + +#endif /* video driver type */ + +#endif /* SDL_PROTOTYPES_ONLY */ + +/* Function prototypes */ +/** + * This function gives you custom hooks into the window manager information. + * It fills the structure pointed to by 'info' with custom information and + * returns 0 if the function is not implemented, 1 if the function is + * implemented and no error occurred, and -1 if the version member of + * the 'info' structure is not filled in or not supported. + * + * You typically use this function like this: + * @code + * SDL_SysWMinfo info; + * SDL_VERSION(&info.version); + * if ( SDL_GetWMInfo(&info) ) { ... } + * @endcode + */ +extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_syswm_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_thread.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_thread.h new file mode 100644 index 0000000..b7d5a91 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_thread.h @@ -0,0 +1,118 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_thread_h +#define _SDL_thread_h + +/** @file SDL_thread.h + * Header for the SDL thread management routines + * + * @note These are independent of the other SDL routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/* Thread synchronization primitives */ +#include "SDL_mutex.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/** Create a thread */ +#if ((defined(__WIN32__) && !defined(HAVE_LIBC)) || defined(__OS2__)) && !defined(__SYMBIAN32__) +/** + * We compile SDL into a DLL on OS/2. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL.DLL will + * be initialized for those threads, and not the RTL of the calling application! + * To solve this, we make a little hack here. + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL.DLL which uses this API, + * then the RTL of SDL.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD +#ifndef _WIN32_WCE +#include <process.h> /* This has _beginthread() and _endthread() defined! */ +#endif +#ifdef __EMX__ +#include <stdlib.h> +#endif + +#ifdef __OS2__ +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg); +typedef void (*pfnSDL_CurrentEndThread)(void); +#else +typedef uintptr_t (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, + unsigned (__stdcall *func)(void *), void *arg, + unsigned, unsigned *threadID); +typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); +#endif + +extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread); + +#ifdef __OS2__ +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthread, _endthread) +#elif defined(_WIN32_WCE) +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, NULL, NULL) +#else +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthreadex, _endthreadex) +#endif +#else +extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data); +#endif + +/** Get the 32-bit thread identifier for the current thread */ +extern DECLSPEC Uint32 SDLCALL SDL_ThreadID(void); + +/** Get the 32-bit thread identifier for the specified thread, + * equivalent to SDL_ThreadID() if the specified thread is NULL. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetThreadID(SDL_Thread *thread); + +/** Wait for a thread to finish. + * The return code for the thread function is placed in the area + * pointed to by 'status', if 'status' is not NULL. + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread *thread, int *status); + +/** Forcefully kill a thread without worrying about its state */ +extern DECLSPEC void SDLCALL SDL_KillThread(SDL_Thread *thread); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_thread_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_timer.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_timer.h new file mode 100644 index 0000000..d764d5f --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_timer.h @@ -0,0 +1,125 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_timer_h +#define _SDL_timer_h + +/** @file SDL_timer.h + * Header for the SDL time management routines + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the OS scheduler timeslice, in milliseconds */ +#define SDL_TIMESLICE 10 + +/** This is the maximum resolution of the SDL timer on all platforms */ +#define TIMER_RESOLUTION 10 /**< Experimentally determined */ + +/** + * Get the number of milliseconds since the SDL library initialization. + * Note that this value wraps if the program runs for more than ~49 days. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** Wait a specified number of milliseconds before returning */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** Function prototype for the timer callback function */ +typedef Uint32 (SDLCALL *SDL_TimerCallback)(Uint32 interval); + +/** + * Set a callback to run after the specified number of milliseconds has + * elapsed. The callback function is passed the current timer interval + * and returns the next timer interval. If the returned value is the + * same as the one passed in, the periodic alarm continues, otherwise a + * new alarm is scheduled. If the callback returns 0, the periodic alarm + * is cancelled. + * + * To cancel a currently running timer, call SDL_SetTimer(0, NULL); + * + * The timer callback function may run in a different thread than your + * main code, and so shouldn't call any functions from within itself. + * + * The maximum resolution of this timer is 10 ms, which means that if + * you request a 16 ms timer, your callback will run approximately 20 ms + * later on an unloaded system. If you wanted to set a flag signaling + * a frame update at 30 frames per second (every 33 ms), you might set a + * timer for 30 ms: + * @code SDL_SetTimer((33/10)*10, flag_update); @endcode + * + * If you use this function, you need to pass SDL_INIT_TIMER to SDL_Init(). + * + * Under UNIX, you should not use raise or use SIGALRM and this function + * in the same program, as it is implemented using setitimer(). You also + * should not use this function in multi-threaded applications as signals + * to multi-threaded apps have undefined behavior in some implementations. + * + * This function returns 0 if successful, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback); + +/** @name New timer API + * New timer API, supports multiple timers + * Written by Stephane Peter <megastep@lokigames.com> + */ +/*@{*/ + +/** + * Function prototype for the new timer callback function. + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL *SDL_NewTimerCallback)(Uint32 interval, void *param); + +/** Definition of the timer ID type */ +typedef struct _SDL_TimerID *SDL_TimerID; + +/** Add a new timer to the pool of timers already running. + * Returns a timer ID, or NULL when an error occurs. + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param); + +/** + * Remove one of the multiple timers knowing its ID. + * Returns a boolean value indicating success. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID t); + +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_timer_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_types.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_types.h new file mode 100644 index 0000000..79d8b28 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_types.h @@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_types.h + * @deprecated Use SDL_stdinc.h instead. + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_version.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_version.h new file mode 100644 index 0000000..4385ebf --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_version.h @@ -0,0 +1,91 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_version.h + * This header defines the current SDL version + */ + +#ifndef _SDL_version_h +#define _SDL_version_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name Version Number + * Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL + */ +/*@{*/ +#define SDL_MAJOR_VERSION 1 +#define SDL_MINOR_VERSION 2 +#define SDL_PATCHLEVEL 16 +/*@}*/ + +typedef struct SDL_version { + Uint8 major; + Uint8 minor; + Uint8 patch; +} SDL_version; + +/** + * This macro can be used to fill a version structure with the compile-time + * version of the SDL library. + */ +#define SDL_VERSION(X) \ +{ \ + (X)->major = SDL_MAJOR_VERSION; \ + (X)->minor = SDL_MINOR_VERSION; \ + (X)->patch = SDL_PATCHLEVEL; \ +} + +/** This macro turns the version numbers into a numeric value: + * (1,2,3) -> (1203) + * This assumes that there will never be more than 100 patchlevels + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** This is the version number macro for the current SDL version */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) + +/** This macro will evaluate to true if compiled with SDL at least X.Y.Z */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +/** This function gets the version of the dynamically linked SDL library. + * it should NOT be used to fill a version structure, instead you should + * use the SDL_Version() macro. + */ +extern DECLSPEC const SDL_version * SDLCALL SDL_Linked_Version(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_version_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h new file mode 100644 index 0000000..aa0459c --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h @@ -0,0 +1,952 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_video.h + * Header file for access to the SDL raw framebuffer window + */ + +#ifndef _SDL_video_h +#define _SDL_video_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name Transparency definitions + * These define alpha as the opacity of a surface + */ +/*@{*/ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/*@}*/ + +/** @name Useful data types */ +/*@{*/ +typedef struct SDL_Rect { + Sint16 x, y; + Uint16 w, h; +} SDL_Rect; + +typedef struct SDL_Color { + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 unused; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette { + int ncolors; + SDL_Color *colors; +} SDL_Palette; +/*@}*/ + +/** Everything in the pixel format structure is read-only */ +typedef struct SDL_PixelFormat { + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + + /** RGB color key information */ + Uint32 colorkey; + /** Alpha value information (per-surface alpha) */ + Uint8 alpha; +} SDL_PixelFormat; + +/** This structure should be treated as read-only, except for 'pixels', + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface { + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + Uint16 pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + int offset; /**< Private */ + + /** Hardware-specific surface info */ + struct private_hwdata *hwdata; + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + Uint32 unused1; /**< for binary compatibility */ + + /** Allow recursive locks */ + Uint32 locked; /**< Private */ + + /** info for fast blit mapping to other surfaces */ + struct SDL_BlitMap *map; /**< Private */ + + /** format version, bumped at every change to invalidate blit maps */ + unsigned int format_version; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** @name SDL_Surface Flags + * These are the currently supported flags for the SDL_surface + */ +/*@{*/ + +/** Available for SDL_CreateRGBSurface() or SDL_SetVideoMode() */ +/*@{*/ +#define SDL_SWSURFACE 0x00000000 /**< Surface is in system memory */ +#define SDL_HWSURFACE 0x00000001 /**< Surface is in video memory */ +#define SDL_ASYNCBLIT 0x00000004 /**< Use asynchronous blits if possible */ +/*@}*/ + +/** Available for SDL_SetVideoMode() */ +/*@{*/ +#define SDL_ANYFORMAT 0x10000000 /**< Allow any video depth/pixel-format */ +#define SDL_HWPALETTE 0x20000000 /**< Surface has exclusive palette */ +#define SDL_DOUBLEBUF 0x40000000 /**< Set up double-buffered video mode */ +#define SDL_TRIPLEBUF 0x40000100 /**< Set up triple-buffered video mode */ +#define SDL_FULLSCREEN 0x80000000 /**< Surface is a full screen display */ +#define SDL_OPENGL 0x00000002 /**< Create an OpenGL rendering context */ +#define SDL_OPENGLBLIT 0x0000000A /**< Create an OpenGL rendering context and use it for blitting */ +#define SDL_RESIZABLE 0x00000010 /**< This video mode may be resized */ +#define SDL_NOFRAME 0x00000020 /**< No window caption or edge frame */ +/*@}*/ + +/** Used internally (read-only) */ +/*@{*/ +#define SDL_HWACCEL 0x00000100 /**< Blit uses hardware acceleration */ +#define SDL_SRCCOLORKEY 0x00001000 /**< Blit uses a source color key */ +#define SDL_RLEACCELOK 0x00002000 /**< Private flag */ +#define SDL_RLEACCEL 0x00004000 /**< Surface is RLE encoded */ +#define SDL_SRCALPHA 0x00010000 /**< Blit uses source alpha blending */ +#define SDL_PREALLOC 0x01000000 /**< Surface uses preallocated memory */ +/*@}*/ + +/*@}*/ + +/** Evaluates to true if the surface needs to be locked before access */ +#define SDL_MUSTLOCK(surface) \ + (surface->offset || \ + ((surface->flags & (SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_RLEACCEL)) != 0)) + +/** typedef for private surface blitting functions */ +typedef int (*SDL_blit)(struct SDL_Surface *src, SDL_Rect *srcrect, + struct SDL_Surface *dst, SDL_Rect *dstrect); + + +/** Useful for determining the video hardware capabilities */ +typedef struct SDL_VideoInfo { + Uint32 hw_available :1; /**< Flag: Can you create hardware surfaces? */ + Uint32 wm_available :1; /**< Flag: Can you talk to a window manager? */ + Uint32 UnusedBits1 :6; + Uint32 UnusedBits2 :1; + Uint32 blit_hw :1; /**< Flag: Accelerated blits HW --> HW */ + Uint32 blit_hw_CC :1; /**< Flag: Accelerated blits with Colorkey */ + Uint32 blit_hw_A :1; /**< Flag: Accelerated blits with Alpha */ + Uint32 blit_sw :1; /**< Flag: Accelerated blits SW --> HW */ + Uint32 blit_sw_CC :1; /**< Flag: Accelerated blits with Colorkey */ + Uint32 blit_sw_A :1; /**< Flag: Accelerated blits with Alpha */ + Uint32 blit_fill :1; /**< Flag: Accelerated color fill */ + Uint32 UnusedBits3 :16; + Uint32 video_mem; /**< The total amount of video memory (in K) */ + SDL_PixelFormat *vfmt; /**< Value: The format of the video surface */ + int current_w; /**< Value: The current video mode width */ + int current_h; /**< Value: The current video mode height */ +} SDL_VideoInfo; + + +/** @name Overlay Formats + * The most common video overlay formats. + * For an explanation of these pixel formats, see: + * http://www.webartz.com/fourcc/indexyuv.htm + * + * For information on the relationship between color spaces, see: + * http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html + */ +/*@{*/ +#define SDL_YV12_OVERLAY 0x32315659 /**< Planar mode: Y + V + U (3 planes) */ +#define SDL_IYUV_OVERLAY 0x56555949 /**< Planar mode: Y + U + V (3 planes) */ +#define SDL_YUY2_OVERLAY 0x32595559 /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ +#define SDL_UYVY_OVERLAY 0x59565955 /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ +#define SDL_YVYU_OVERLAY 0x55595659 /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ +/*@}*/ + +/** The YUV hardware video overlay */ +typedef struct SDL_Overlay { + Uint32 format; /**< Read-only */ + int w, h; /**< Read-only */ + int planes; /**< Read-only */ + Uint16 *pitches; /**< Read-only */ + Uint8 **pixels; /**< Read-write */ + + /** @name Hardware-specific surface info */ + /*@{*/ + struct private_yuvhwfuncs *hwfuncs; + struct private_yuvhwdata *hwdata; + /*@{*/ + + /** @name Special flags */ + /*@{*/ + Uint32 hw_overlay :1; /**< Flag: This overlay hardware accelerated? */ + Uint32 UnusedBits :31; + /*@}*/ +} SDL_Overlay; + + +/** Public enumeration for setting the OpenGL window attributes. */ +typedef enum { + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_SWAP_CONTROL +} SDL_GLattr; + +/** @name flags for SDL_SetPalette() */ +/*@{*/ +#define SDL_LOGPAL 0x01 +#define SDL_PHYSPAL 0x02 +/*@}*/ + +/* Function prototypes */ + +/** + * @name Video Init and Quit + * These functions are used internally, and should not be used unless you + * have a specific need to specify the video driver you want to use. + * You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/*@{*/ +/** + * Initializes the video subsystem. Sets up a connection + * to the window manager, etc, and determines the current video mode and + * pixel format, but does not initialize a window or graphics mode. + * Note that event handling is activated by this routine. + * + * If you use both sound and video in your application, you need to call + * SDL_Init() before opening the sound device, otherwise under Win32 DirectX, + * you won't be able to set full-screen display modes. + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name, Uint32 flags); +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); +/*@}*/ + +/** + * This function fills the given character buffer with the name of the + * video driver, and returns a pointer to it if the video driver has + * been initialized. It returns NULL if no driver has been initialized. + */ +extern DECLSPEC char * SDLCALL SDL_VideoDriverName(char *namebuf, int maxlen); + +/** + * This function returns a pointer to the current display surface. + * If SDL is doing format conversion on the display surface, this + * function returns the publicly visible surface, not the real video + * surface. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetVideoSurface(void); + +/** + * This function returns a read-only pointer to information about the + * video hardware. If this is called before SDL_SetVideoMode(), the 'vfmt' + * member of the returned structure will contain the pixel format of the + * "best" video mode. + */ +extern DECLSPEC const SDL_VideoInfo * SDLCALL SDL_GetVideoInfo(void); + +/** + * Check to see if a particular video mode is supported. + * It returns 0 if the requested mode is not supported under any bit depth, + * or returns the bits-per-pixel of the closest available mode with the + * given width and height. If this bits-per-pixel is different from the + * one used when setting the video mode, SDL_SetVideoMode() will succeed, + * but will emulate the requested bits-per-pixel with a shadow surface. + * + * The arguments to SDL_VideoModeOK() are the same ones you would pass to + * SDL_SetVideoMode() + */ +extern DECLSPEC int SDLCALL SDL_VideoModeOK(int width, int height, int bpp, Uint32 flags); + +/** + * Return a pointer to an array of available screen dimensions for the + * given format and video flags, sorted largest to smallest. Returns + * NULL if there are no dimensions available for a particular format, + * or (SDL_Rect **)-1 if any dimension is okay for the given format. + * + * If 'format' is NULL, the mode list will be for the format given + * by SDL_GetVideoInfo()->vfmt + */ +extern DECLSPEC SDL_Rect ** SDLCALL SDL_ListModes(SDL_PixelFormat *format, Uint32 flags); + +/** + * Set up a video mode with the specified width, height and bits-per-pixel. + * + * If 'bpp' is 0, it is treated as the current display bits per pixel. + * + * If SDL_ANYFORMAT is set in 'flags', the SDL library will try to set the + * requested bits-per-pixel, but will return whatever video pixel format is + * available. The default is to emulate the requested pixel format if it + * is not natively available. + * + * If SDL_HWSURFACE is set in 'flags', the video surface will be placed in + * video memory, if possible, and you may have to call SDL_LockSurface() + * in order to access the raw framebuffer. Otherwise, the video surface + * will be created in system memory. + * + * If SDL_ASYNCBLIT is set in 'flags', SDL will try to perform rectangle + * updates asynchronously, but you must always lock before accessing pixels. + * SDL will wait for updates to complete before returning from the lock. + * + * If SDL_HWPALETTE is set in 'flags', the SDL library will guarantee + * that the colors set by SDL_SetColors() will be the colors you get. + * Otherwise, in 8-bit mode, SDL_SetColors() may not be able to set all + * of the colors exactly the way they are requested, and you should look + * at the video surface structure to determine the actual palette. + * If SDL cannot guarantee that the colors you request can be set, + * i.e. if the colormap is shared, then the video surface may be created + * under emulation in system memory, overriding the SDL_HWSURFACE flag. + * + * If SDL_FULLSCREEN is set in 'flags', the SDL library will try to set + * a fullscreen video mode. The default is to create a windowed mode + * if the current graphics system has a window manager. + * If the SDL library is able to set a fullscreen video mode, this flag + * will be set in the surface that is returned. + * + * If SDL_DOUBLEBUF is set in 'flags', the SDL library will try to set up + * two surfaces in video memory and swap between them when you call + * SDL_Flip(). This is usually slower than the normal single-buffering + * scheme, but prevents "tearing" artifacts caused by modifying video + * memory while the monitor is refreshing. It should only be used by + * applications that redraw the entire screen on every update. + * + * If SDL_RESIZABLE is set in 'flags', the SDL library will allow the + * window manager, if any, to resize the window at runtime. When this + * occurs, SDL will send a SDL_VIDEORESIZE event to you application, + * and you must respond to the event by re-calling SDL_SetVideoMode() + * with the requested size (or another size that suits the application). + * + * If SDL_NOFRAME is set in 'flags', the SDL library will create a window + * without any title bar or frame decoration. Fullscreen video modes have + * this flag set automatically. + * + * This function returns the video framebuffer surface, or NULL if it fails. + * + * If you rely on functionality provided by certain video flags, check the + * flags of the returned surface to make sure that functionality is available. + * SDL will fall back to reduced functionality if the exact flags you wanted + * are not available. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_SetVideoMode + (int width, int height, int bpp, Uint32 flags); + +/** @name SDL_Update Functions + * These functions should not be called while 'screen' is locked. + */ +/*@{*/ +/** + * Makes sure the given list of rectangles is updated on the given screen. + */ +extern DECLSPEC void SDLCALL SDL_UpdateRects + (SDL_Surface *screen, int numrects, SDL_Rect *rects); +/** + * If 'x', 'y', 'w' and 'h' are all 0, SDL_UpdateRect will update the entire + * screen. + */ +extern DECLSPEC void SDLCALL SDL_UpdateRect + (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h); +/*@}*/ + +/** + * On hardware that supports double-buffering, this function sets up a flip + * and returns. The hardware will wait for vertical retrace, and then swap + * video buffers before the next video surface blit or lock will return. + * On hardware that doesn not support double-buffering, this is equivalent + * to calling SDL_UpdateRect(screen, 0, 0, 0, 0); + * The SDL_DOUBLEBUF flag must have been passed to SDL_SetVideoMode() when + * setting the video mode for this function to perform hardware flipping. + * This function returns 0 if successful, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_Flip(SDL_Surface *screen); + +/** + * Set the gamma correction for each of the color channels. + * The gamma values range (approximately) between 0.1 and 10.0 + * + * If this function isn't supported directly by the hardware, it will + * be emulated using gamma ramps, if available. If successful, this + * function returns 0, otherwise it returns -1. + */ +extern DECLSPEC int SDLCALL SDL_SetGamma(float red, float green, float blue); + +/** + * Set the gamma translation table for the red, green, and blue channels + * of the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. + * The input is the index into the array, and the output is the 16-bit + * gamma value at that index, scaled to the output color precision. + * + * You may pass NULL for any of the channels to leave it unchanged. + * If the call succeeds, it will return 0. If the display driver or + * hardware does not support gamma translation, or otherwise fails, + * this function will return -1. + */ +extern DECLSPEC int SDLCALL SDL_SetGammaRamp(const Uint16 *red, const Uint16 *green, const Uint16 *blue); + +/** + * Retrieve the current values of the gamma translation tables. + * + * You must pass in valid pointers to arrays of 256 16-bit quantities. + * Any of the pointers may be NULL to ignore that channel. + * If the call succeeds, it will return 0. If the display driver or + * hardware does not support gamma translation, or otherwise fails, + * this function will return -1. + */ +extern DECLSPEC int SDLCALL SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue); + +/** + * Sets a portion of the colormap for the given 8-bit surface. If 'surface' + * is not a palettized surface, this function does nothing, returning 0. + * If all of the colors were set as passed to SDL_SetColors(), it will + * return 1. If not all the color entries were set exactly as given, + * it will return 0, and you should look at the surface palette to + * determine the actual color palette. + * + * When 'surface' is the surface associated with the current display, the + * display colormap will be updated with the requested colors. If + * SDL_HWPALETTE was set in SDL_SetVideoMode() flags, SDL_SetColors() + * will always return 1, and the palette is guaranteed to be set the way + * you desire, even if the window colormap has to be warped or run under + * emulation. + */ +extern DECLSPEC int SDLCALL SDL_SetColors(SDL_Surface *surface, + SDL_Color *colors, int firstcolor, int ncolors); + +/** + * Sets a portion of the colormap for a given 8-bit surface. + * 'flags' is one or both of: + * SDL_LOGPAL -- set logical palette, which controls how blits are mapped + * to/from the surface, + * SDL_PHYSPAL -- set physical palette, which controls how pixels look on + * the screen + * Only screens have physical palettes. Separate change of physical/logical + * palettes is only possible if the screen has SDL_HWPALETTE set. + * + * The return value is 1 if all colours could be set as requested, and 0 + * otherwise. + * + * SDL_SetColors() is equivalent to calling this function with + * flags = (SDL_LOGPAL|SDL_PHYSPAL). + */ +extern DECLSPEC int SDLCALL SDL_SetPalette(SDL_Surface *surface, int flags, + SDL_Color *colors, int firstcolor, + int ncolors); + +/** + * Maps an RGB triple to an opaque pixel value for a given pixel format + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB +(const SDL_PixelFormat * const format, + const Uint8 r, const Uint8 g, const Uint8 b); + +/** + * Maps an RGBA quadruple to a pixel value for a given pixel format + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA +(const SDL_PixelFormat * const format, + const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a); + +/** + * Maps a pixel value into the RGB components for a given pixel format + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * const fmt, + Uint8 *r, Uint8 *g, Uint8 *b); + +/** + * Maps a pixel value into the RGBA components for a given pixel format + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * const fmt, + Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); + +/** @sa SDL_CreateRGBSurface */ +#define SDL_AllocSurface SDL_CreateRGBSurface +/** + * Allocate and free an RGB surface (must be called after SDL_SetVideoMode) + * If the depth is 4 or 8 bits, an empty palette is allocated for the surface. + * If the depth is greater than 8 bits, the pixel format is set using the + * flags '[RGB]mask'. + * If the function runs out of memory, it will return NULL. + * + * The 'flags' tell what kind of surface to create. + * SDL_SWSURFACE means that the surface should be created in system memory. + * SDL_HWSURFACE means that the surface should be created in video memory, + * with the same format as the display surface. This is useful for surfaces + * that will not change much, to take advantage of hardware acceleration + * when being blitted to the display surface. + * SDL_ASYNCBLIT means that SDL will try to perform asynchronous blits with + * this surface, but you must always lock it before accessing the pixels. + * SDL will wait for current blits to finish before returning from the lock. + * SDL_SRCCOLORKEY indicates that the surface will be used for colorkey blits. + * If the hardware supports acceleration of colorkey blits between + * two surfaces in video memory, SDL will try to place the surface in + * video memory. If this isn't possible or if there is no hardware + * acceleration available, the surface will be placed in system memory. + * SDL_SRCALPHA means that the surface will be used for alpha blits and + * if the hardware supports hardware acceleration of alpha blits between + * two surfaces in video memory, to place the surface in video memory + * if possible, otherwise it will be placed in system memory. + * If the surface is created in video memory, blits will be _much_ faster, + * but the surface format must be identical to the video surface format, + * and the only way to access the pixels member of the surface is to use + * the SDL_LockSurface() and SDL_UnlockSurface() calls. + * If the requested surface actually resides in video memory, SDL_HWSURFACE + * will be set in the flags member of the returned surface. If for some + * reason the surface could not be placed in video memory, it will not have + * the SDL_HWSURFACE flag set, and will be created in system memory instead. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +/** @sa SDL_CreateRGBSurface */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, int height, int depth, int pitch, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface *surface); + +/** + * SDL_LockSurface() sets up a surface for directly accessing the pixels. + * Between calls to SDL_LockSurface()/SDL_UnlockSurface(), you can write + * to and read from 'surface->pixels', using the pixel format stored in + * 'surface->format'. Once you are done accessing the surface, you should + * use SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates + * to 0, then you can read and write to the surface at any time, and the + * pixel format of the surface will not change. In particular, if the + * SDL_HWSURFACE flag is not given when calling SDL_SetVideoMode(), you + * will not need to lock the display surface before accessing it. + * + * No operating system or library calls should be made between lock/unlock + * pairs, as critical system locks may be held during this time. + * + * SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked. + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface *surface); +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface); + +/** + * Load a surface from a seekable SDL data source (memory or file.) + * If 'freesrc' is non-zero, the source will be closed after being read. + * Returns the new surface, or NULL if there was an error. + * The new surface should be freed with SDL_FreeSurface(). + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, int freesrc); + +/** Convenience macro -- load a surface from a file */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data source (memory or file.) + * If 'freedst' is non-zero, the source will be closed after being written. + * Returns 0 if successful or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface *surface, SDL_RWops *dst, int freedst); + +/** Convenience macro -- save a surface to a file */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Sets the color key (transparent pixel) in a blittable surface. + * If 'flag' is SDL_SRCCOLORKEY (optionally OR'd with SDL_RLEACCEL), + * 'key' will be the transparent pixel in the source image of a blit. + * SDL_RLEACCEL requests RLE acceleration for the surface if present, + * and removes RLE acceleration if absent. + * If 'flag' is 0, this function clears any current color key. + * This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey + (SDL_Surface *surface, Uint32 flag, Uint32 key); + +/** + * This function sets the alpha value for the entire surface, as opposed to + * using the alpha component of each pixel. This value measures the range + * of transparency of the surface, 0 being completely transparent to 255 + * being completely opaque. An 'alpha' value of 255 causes blits to be + * opaque, the source pixels copied to the destination (the default). Note + * that per-surface alpha can be combined with colorkey transparency. + * + * If 'flag' is 0, alpha blending is disabled for the surface. + * If 'flag' is SDL_SRCALPHA, alpha blending is enabled for the surface. + * OR:ing the flag with SDL_RLEACCEL requests RLE acceleration for the + * surface; if SDL_RLEACCEL is not specified, the RLE accel will be removed. + * + * The 'alpha' parameter is ignored for surfaces that have an alpha channel. + */ +extern DECLSPEC int SDLCALL SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha); + +/** + * Sets the clipping rectangle for the destination surface in a blit. + * + * If the clip rectangle is NULL, clipping will be disabled. + * If the clip rectangle doesn't intersect the surface, the function will + * return SDL_FALSE and blits will be completely clipped. Otherwise the + * function returns SDL_TRUE and blits to the surface will be clipped to + * the intersection of the surface area and the clipping rectangle. + * + * Note that blits are automatically clipped to the edges of the source + * and destination surfaces. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface *surface, const SDL_Rect *rect); + +/** + * Gets the clipping rectangle for the destination surface in a blit. + * 'rect' must be a pointer to a valid rectangle which will be filled + * with the correct values. + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect); + +/** + * Creates a new surface of the specified format, and then copies and maps + * the given surface to it so the blit of the converted surface will be as + * fast as possible. If this function fails, it returns NULL. + * + * The 'flags' parameter is passed to SDL_CreateRGBSurface() and has those + * semantics. You can also pass SDL_RLEACCEL in the flags parameter and + * SDL will try to RLE accelerate colorkey and alpha blits in the resulting + * surface. + * + * This function is used internally by SDL_DisplayFormat(). + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_ConvertSurface + (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags); + +/** + * This performs a fast blit from the source surface to the destination + * surface. It assumes that the source and destination rectangles are + * the same size. If either 'srcrect' or 'dstrect' are NULL, the entire + * surface (src or dst) is copied. The final blit rectangles are saved + * in 'srcrect' and 'dstrect' after all clipping is performed. + * If the blit is successful, it returns 0, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without alpha and colorkey + * are defined as follows: + * + * RGBA->RGB: + * SDL_SRCALPHA set: + * alpha-blend (using alpha-channel). + * SDL_SRCCOLORKEY ignored. + * SDL_SRCALPHA not set: + * copy RGB. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source colour key, ignoring alpha in the + * comparison. + * + * RGB->RGBA: + * SDL_SRCALPHA set: + * alpha-blend (using the source per-surface alpha value); + * set destination alpha to opaque. + * SDL_SRCALPHA not set: + * copy RGB, set destination alpha to source per-surface alpha value. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source colour key. + * + * RGBA->RGBA: + * SDL_SRCALPHA set: + * alpha-blend (using the source alpha channel) the RGB values; + * leave destination alpha untouched. [Note: is this correct?] + * SDL_SRCCOLORKEY ignored. + * SDL_SRCALPHA not set: + * copy all of RGBA to the destination. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source colour key, ignoring alpha in the + * comparison. + * + * RGB->RGB: + * SDL_SRCALPHA set: + * alpha-blend (using the source per-surface alpha value). + * SDL_SRCALPHA not set: + * copy RGB. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source colour key. + * + * If either of the surfaces were in video memory, and the blit returns -2, + * the video memory was lost, so it should be reloaded with artwork and + * re-blitted: + * @code + * while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) { + * while ( SDL_LockSurface(image) < 0 ) + * Sleep(10); + * -- Write image pixels to image->pixels -- + * SDL_UnlockSurface(image); + * } + * @endcode + * + * This happens under DirectX 5.0 when the system switches away from your + * fullscreen application. The lock will also fail until you have access + * to the video memory again. + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** This is the public blit function, SDL_BlitSurface(), and it performs + * rectangle validation and clipping before passing it to SDL_LowerBlit() + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); +/** This is a semi-private blit function and it performs low-level surface + * blitting only. + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); + +/** + * This function performs a fast fill of the given rectangle with 'color' + * The given rectangle is clipped to the destination surface clip area + * and the final fill rectangle is saved in the passed in pointer. + * If 'dstrect' is NULL, the whole surface will be filled with 'color' + * The color should be a pixel of the format used by the surface, and + * can be generated by the SDL_MapRGB() function. + * This function returns 0 on success, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color); + +/** + * This function takes a surface and copies it to a new surface of the + * pixel format and colors of the video framebuffer, suitable for fast + * blitting onto the display surface. It calls SDL_ConvertSurface() + * + * If you want to take advantage of hardware colorkey or alpha blit + * acceleration, you should set the colorkey and alpha value before + * calling this function. + * + * If the conversion fails or runs out of memory, it returns NULL + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormat(SDL_Surface *surface); + +/** + * This function takes a surface and copies it to a new surface of the + * pixel format and colors of the video framebuffer (if possible), + * suitable for fast alpha blitting onto the display surface. + * The new surface will always have an alpha channel. + * + * If you want to take advantage of hardware colorkey or alpha blit + * acceleration, you should set the colorkey and alpha value before + * calling this function. + * + * If the conversion fails or runs out of memory, it returns NULL + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormatAlpha(SDL_Surface *surface); + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name YUV video surface overlay functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** This function creates a video output overlay + * Calling the returned surface an overlay is something of a misnomer because + * the contents of the display surface underneath the area where the overlay + * is shown is undefined - it may be overwritten with the converted YUV data. + */ +extern DECLSPEC SDL_Overlay * SDLCALL SDL_CreateYUVOverlay(int width, int height, + Uint32 format, SDL_Surface *display); + +/** Lock an overlay for direct access, and unlock it when you are done */ +extern DECLSPEC int SDLCALL SDL_LockYUVOverlay(SDL_Overlay *overlay); +extern DECLSPEC void SDLCALL SDL_UnlockYUVOverlay(SDL_Overlay *overlay); + +/** Blit a video overlay to the display surface. + * The contents of the video surface underneath the blit destination are + * not defined. + * The width and height of the destination rectangle may be different from + * that of the overlay, but currently only 2x scaling is supported. + */ +extern DECLSPEC int SDLCALL SDL_DisplayYUVOverlay(SDL_Overlay *overlay, SDL_Rect *dstrect); + +/** Free a video overlay */ +extern DECLSPEC void SDLCALL SDL_FreeYUVOverlay(SDL_Overlay *overlay); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name OpenGL support functions. */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Dynamically load an OpenGL library, or the default one if path is NULL + * + * If you do this, you need to retrieve all of the GL functions used in + * your program from the dynamic library using SDL_GL_GetProcAddress(). + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get the address of a GL function + */ +extern DECLSPEC void * SDLCALL SDL_GL_GetProcAddress(const char* proc); + +/** + * Set an attribute of the OpenGL subsystem before intialization. + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get an attribute of the OpenGL subsystem from the windowing + * interface, such as glX. This is of course different from getting + * the values from SDL's internal OpenGL subsystem, which only + * stores the values you request before initialization. + * + * Developers should track the values they pass into SDL_GL_SetAttribute + * themselves if they want to retrieve these values. + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int* value); + +/** + * Swap the OpenGL buffers, if double-buffering is supported. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapBuffers(void); + +/** @name OpenGL Internal Functions + * Internal functions that should not be called unless you have read + * and understood the source code for these functions. + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_GL_UpdateRects(int numrects, SDL_Rect* rects); +extern DECLSPEC void SDLCALL SDL_GL_Lock(void); +extern DECLSPEC void SDLCALL SDL_GL_Unlock(void); +/*@}*/ + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Window Manager Functions */ +/** These functions allow interaction with the window manager, if any. */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Sets the title and icon text of the display window (UTF-8 encoded) + */ +extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title, const char *icon); +/** + * Gets the title and icon text of the display window (UTF-8 encoded) + */ +extern DECLSPEC void SDLCALL SDL_WM_GetCaption(char **title, char **icon); + +/** + * Sets the icon for the display window. + * This function must be called before the first call to SDL_SetVideoMode(). + * It takes an icon surface, and a mask in MSB format. + * If 'mask' is NULL, the entire icon surface will be used as the icon. + */ +extern DECLSPEC void SDLCALL SDL_WM_SetIcon(SDL_Surface *icon, Uint8 *mask); + +/** + * This function iconifies the window, and returns 1 if it succeeded. + * If the function succeeds, it generates an SDL_APPACTIVE loss event. + * This function is a noop and returns 0 in non-windowed environments. + */ +extern DECLSPEC int SDLCALL SDL_WM_IconifyWindow(void); + +/** + * Toggle fullscreen mode without changing the contents of the screen. + * If the display surface does not require locking before accessing + * the pixel information, then the memory pointers will not change. + * + * If this function was able to toggle fullscreen mode (change from + * running in a window to fullscreen, or vice-versa), it will return 1. + * If it is not implemented, or fails, it returns 0. + * + * The next call to SDL_SetVideoMode() will set the mode fullscreen + * attribute based on the flags parameter - if SDL_FULLSCREEN is not + * set, then the display will be windowed by default where supported. + * + * This is currently only implemented in the X11 video driver. + */ +extern DECLSPEC int SDLCALL SDL_WM_ToggleFullScreen(SDL_Surface *surface); + +typedef enum { + SDL_GRAB_QUERY = -1, + SDL_GRAB_OFF = 0, + SDL_GRAB_ON = 1, + SDL_GRAB_FULLSCREEN /**< Used internally */ +} SDL_GrabMode; +/** + * This function allows you to set and query the input grab state of + * the application. It returns the new input grab state. + * + * Grabbing means that the mouse is confined to the application window, + * and nearly all keyboard input is passed directly to the application, + * and not interpreted by a window manager, if any. + */ +extern DECLSPEC SDL_GrabMode SDLCALL SDL_WM_GrabInput(SDL_GrabMode mode); + +/*@}*/ + +/** @internal Not in public API at the moment - do not use! */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_video_h */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/begin_code.h b/MacOSX/SDL.framework/Versions/A/Headers/begin_code.h new file mode 100644 index 0000000..1c8a2a0 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/begin_code.h @@ -0,0 +1,179 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file begin_code.h + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/** + * @file begin_code.h + * This shouldn't be nested -- included it around code only. + */ +#ifdef _begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define _begin_code_h + +/** + * @def DECLSPEC + * Some compilers use a special export keyword + */ +#ifndef DECLSPEC +# if defined(__BEOS__) || defined(__HAIKU__) +# if defined(__GNUC__) +# define DECLSPEC +# else +# define DECLSPEC __declspec(export) +# endif +# elif defined(__WIN32__) +# ifdef __BORLANDC__ +# ifdef BUILD_SDL +# define DECLSPEC +# else +# define DECLSPEC __declspec(dllimport) +# endif +# else +# define DECLSPEC __declspec(dllexport) +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/** + * @def SDLCALL + * By default SDL uses the C calling convention + */ +#ifndef SDLCALL +# if defined(__WIN32__) && !defined(__GNUC__) +# define SDLCALL __cdecl +# elif defined(__OS2__) + /* But on OS/2, we use the _System calling convention */ + /* to be compatible with every compiler */ +# if defined (__GNUC__) && !defined(_System) +# define _System /* For compatibility with old GCC/EMX */ +# endif +# define SDLCALL _System +# else +# define SDLCALL +# endif +#endif /* SDLCALL */ + +#ifdef __SYMBIAN32__ +#ifndef EKA2 +#undef DECLSPEC +#define DECLSPEC +#elif !defined(__WINS__) +#undef DECLSPEC +#define DECLSPEC __declspec(dllexport) +#endif /* !EKA2 */ +#endif /* __SYMBIAN32__ */ + +/** + * @file begin_code.h + * Force structure packing at 4 byte alignment. + * This is necessary if the header is included in code which has structure + * packing set to an alternate value, say for loading structures from disk. + * The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _M_X64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#elif (defined(__MWERKS__) && defined(__MACOS__)) +#pragma options align=mac68k4byte +#pragma enumsalwaysint on +#endif /* Compiler needs structure packing set */ + +/** + * @def SDL_INLINE_OKAY + * Set up compiler-specific options for inlining functions + */ +#ifndef SDL_INLINE_OKAY +#ifdef __GNUC__ +#define SDL_INLINE_OKAY +#else +/* Add any special compiler-specific cases here */ +#if defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__EABI__) +#ifndef __inline__ +#define __inline__ __inline +#endif +#define SDL_INLINE_OKAY +#else +#if !defined(__MRC__) && !defined(_SGI_SOURCE) +#ifndef __inline__ +#define __inline__ inline +#endif +#define SDL_INLINE_OKAY +#endif /* Not a funky compiler */ +#endif /* Visual C++ */ +#endif /* GNU C */ +#endif /* SDL_INLINE_OKAY */ + +/** + * @def __inline__ + * If inlining isn't supported, remove "__inline__", turning static + * inlined functions into static functions (resulting in code bloat + * in all files which include the offending header files) + */ +#ifndef SDL_INLINE_OKAY +#define __inline__ +#endif + +/** + * @def NULL + * Apparently this is needed by several Windows compilers + */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ diff --git a/MacOSX/SDL.framework/Versions/A/Headers/close_code.h b/MacOSX/SDL.framework/Versions/A/Headers/close_code.h new file mode 100644 index 0000000..7a97d88 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Headers/close_code.h @@ -0,0 +1,45 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file close_code.h + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef _begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef _begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#if (defined(__MWERKS__) && defined(__MACOS__)) +#pragma options align=reset +#pragma enumsalwaysint reset +#else +#pragma pack(pop) +#endif +#endif /* Compiler needs structure packing set */ diff --git a/MacOSX/SDL.framework/Versions/A/Resources/Info.plist b/MacOSX/SDL.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..179cf4f --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>BuildMachineOSBuild</key> + <string>11C74</string> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>SDL</string> + <key>CFBundleGetInfoString</key> + <string>http://www.libsdl.org</string> + <key>CFBundleIdentifier</key> + <string>SDL</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>Simple DirectMedia Layer</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>1.2.16</string> + <key>CFBundleSignature</key> + <string>SDLX</string> + <key>CFBundleVersion</key> + <string>1.2.16</string> + <key>DTCompiler</key> + <string></string> + <key>DTPlatformBuild</key> + <string>10M2518</string> + <key>DTPlatformVersion</key> + <string>PG</string> + <key>DTSDKBuild</key> + <string>10M2518</string> + <key>DTSDKName</key> + <string>macosx10.6</string> + <key>DTXcode</key> + <string>0400</string> + <key>DTXcodeBuild</key> + <string>10M2518</string> +</dict> +</plist> diff --git a/MacOSX/SDL.framework/Versions/A/Resources/SDLMain.nib/objects.nib b/MacOSX/SDL.framework/Versions/A/Resources/SDLMain.nib/objects.nib new file mode 100644 index 0000000000000000000000000000000000000000..9f697b0ee789b08c47c65d0f88be7ebaaa2ca3f8 GIT binary patch literal 1701 zcma)6&1)n@6t6bPW;Bx+*N@8@n1djTr}d<{*t1!}4mcCF4<4mwrp)wif6P{Q6L&9C zp{DR8ILs88a#==KB~&1U%^?F}Am|VX7~-F>ipU~@c=RCgRre&$8rC>-=;D3+e!uss z-W#8aZr5=&j0m<pI`)VeCSz=-WEHM1m2combj^-ziXJkSDOsrnHJWM2LL5ecml`j( z*i)uXeYRv3<H#<%*ouhbFB?hb@Z4g?YttnwU$47P#g3f7=MByb=c0hj3y_KZn4<4n zY}_$T6R}Qb(z^C`4&r%AIfTv=V&6uLO#)VOY{^M2>X{Ux5MhrRf3}*EO#@J&pwY~E zCqbOfmxDOUo#J*nh@;hykB^U010ZHgR$AA4I1FM^!IxV?>wu1U_A=&h)+K__g&MBh z^lWmI^9K7`d;=ax)}EsC5w2R19bs@myWr28?2D%Cu9^s;`}bGTEIQ%*s<Hlfj4nHS z-KpYHjYf^1n>3XqEk!j<LVi9+#;OG?xxDM16Z^k4zZ*M`_0_obB+a^u*$>i(fOW?> zhxV|~@19(F(RO^!?#Z#{j&5A9s~s2Kcl>Iwaz-wj3FEQ{DEW$hQu9g26R@?@9KbR( zQa?e;6dm93oIA;N8s2}&oB^3BZ<q>AZZZ`#ejU5@GjhHh<xfLS*!NR*{q~YnD9U*2 ziR=vyZRvETK!NT@O5a6y|9!P7q2ywJAhxAYQaq62U|(!Vu_eV$Pi#uj-xXacn9y$- zCU7zEqoVD@gC;P6ZL!-Ed;OtXk6hA!?dY||peM6pz}7m(6`;`H*SXjRobfC0<3ho4 zWbn8+fEdKZA=tB;D0jjn+Th79Ixc=S%q^|>KrVJ6YU-b{1-!j8mZKj;4>B{ST@ZbU z8SV?X55}^9Fx)ygg2gaVvMe~jz9}FGxF<6@>cx^(a>@%Ji3BcueAsURq39^tc&RJ3 zJ=bDmrfD8DfcEJS=0soDJO`*B*SorkxqwtLStNi3gYH*tQcd>CJGPJAVc=#PRK8S$ zNls>RWb1{)hz%Vvp(BQdtt2J(wFxHkObTN!BsDC>k&C0z5`J259|2gVie0>%Y#yz3 zTiYgX!C(#v_H;$h*D?7pAfBEAJBkSm0=RkeP+o#9?mVEVt$v}XskSH*YL6P1)bG@| zs15?POO2P+HbtMPhj-M^6n(0GrKqDeDB`L+uQn<AO#MdDcWVEJ>dh%d(Lfzh^sPFi z=r8pLHFD|^MQdv34JF@HgJspH#++&!k{Yi_)C6&}g{uoeC9oHX?ctR`uh+i;5Vq+O literal 0 HcmV?d00001 diff --git a/MacOSX/SDL.framework/Versions/A/SDL b/MacOSX/SDL.framework/Versions/A/SDL new file mode 100755 index 0000000000000000000000000000000000000000..cba74d7652f61ed8e92c6e74925f66bf3dd91238 GIT binary patch literal 1069956 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�T7-p)V8gKak-Wy53m4!B`v>fo>Zc24yR! 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ʼ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%0DQ!3dUnc-O21j@{(D=>7;_8jjLK(QwXVMZuub>g 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�-l7S`YH=mFb|Nw|35L5xbzD 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 H8;kuPyBd8d literal 0 HcmV?d00001 diff --git a/MacOSX/SDL.framework/Versions/A/devel-lite/ReadMeDevLite.txt b/MacOSX/SDL.framework/Versions/A/devel-lite/ReadMeDevLite.txt new file mode 100644 index 0000000..d2cd793 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/devel-lite/ReadMeDevLite.txt @@ -0,0 +1,12 @@ +This directory is for developers. This directory contains some basic essentials you will need for developing SDL based applications on OS X. The SDL-devel package contains all of this stuff plus more, so you can ignore this if you install the SDL-devel.pkg. The SDL-devel package contains Xcode templates, SDL documentation, and different variations of SDLmain and NIB files for SDL. + +To compile an SDL based application on OS X, SDLMain.m must be compiled into your program. (See the SDL FAQ). The SDL-devel.pkg includes Xcode templates which already do this for you. But for those who may not want to install the dev package, an SDLMain is provided here as a convenience. Be aware that there are different variations of SDLMain.m depending on what class of SDL application you make and they are intended to work with NIB files. Only one SDLMain variant is provided here and without any NIB files. You should look to the SDL-devel package for the others. We currently do not provide a SDLMain.a file, partly to call to attention that there are different variations of SDLmain. + +To build from the command line, your gcc line will look something like this: + +gcc -I/Library/Frameworks/SDL.framework/Headers MyProgram.c SDLmain.m -framework SDL -framework Cocoa + +An SDL/OpenGL based application might look like: + +gcc -I/Library/Frameworks/SDL.framework/Headers -I/System/Library/Frameworks/OpenGL.framework/Headers MyProgram.c SDLmain.m -framework SDL -framework Cocoa -framework OpenGL + diff --git a/MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.h b/MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.h new file mode 100644 index 0000000..c56d90c --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.h @@ -0,0 +1,16 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser <dwaliss1@purdue.edu> + Non-NIB-Code & other changes: Max Horn <max@quendi.de> + + Feel free to customize this file to suit your needs +*/ + +#ifndef _SDLMain_h_ +#define _SDLMain_h_ + +#import <Cocoa/Cocoa.h> + +@interface SDLMain : NSObject +@end + +#endif /* _SDLMain_h_ */ diff --git a/MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.m b/MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.m new file mode 100644 index 0000000..07d392e --- /dev/null +++ b/MacOSX/SDL.framework/Versions/A/devel-lite/SDLMain.m @@ -0,0 +1,402 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser <dwaliss1@purdue.edu> + Non-NIB-Code & other changes: Max Horn <max@quendi.de> + + Feel free to customize this file to suit your needs +*/ + +#include "SDL.h" +#include "SDLMain.h" +#include <sys/param.h> /* for MAXPATHLEN */ +#include <unistd.h> + +/* For some reaon, Apple removed setAppleMenu from the headers in 10.4, + but the method still is there and works. To avoid warnings, we declare + it ourselves here. */ +@interface NSApplication(SDL_Missing_Methods) +- (void)setAppleMenu:(NSMenu *)menu; +@end + +/* Use this flag to determine whether we use SDLMain.nib or not */ +#define SDL_USE_NIB_FILE 0 + +/* Use this flag to determine whether we use CPS (docking) or not */ +#define SDL_USE_CPS 1 +#ifdef SDL_USE_CPS +/* Portions of CPS.h */ +typedef struct CPSProcessSerNum +{ + UInt32 lo; + UInt32 hi; +} CPSProcessSerNum; + +extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); +extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); +extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); + +#endif /* SDL_USE_CPS */ + +static int gArgc; +static char **gArgv; +static BOOL gFinderLaunch; +static BOOL gCalledAppMainline = FALSE; + +static NSString *getApplicationName(void) +{ + const NSDictionary *dict; + NSString *appName = 0; + + /* Determine the application name */ + dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); + if (dict) + appName = [dict objectForKey: @"CFBundleName"]; + + if (![appName length]) + appName = [[NSProcessInfo processInfo] processName]; + + return appName; +} + +#if SDL_USE_NIB_FILE +/* A helper category for NSString */ +@interface NSString (ReplaceSubString) +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; +@end +#endif + +@interface NSApplication (SDLApplication) +@end + +@implementation NSApplication (SDLApplication) +/* Invoked from the Quit menu item */ +- (void)terminate:(id)sender +{ + /* Post a SDL_QUIT event */ + SDL_Event event; + event.type = SDL_QUIT; + SDL_PushEvent(&event); +} +@end + +/* The main class of the application, the application's delegate */ +@implementation SDLMain + +/* Set the working directory to the .app's parent directory */ +- (void) setupWorkingDirectory:(BOOL)shouldChdir +{ + if (shouldChdir) + { + char parentdir[MAXPATHLEN]; + CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); + CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); + if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) { + chdir(parentdir); /* chdir to the binary app's parent */ + } + CFRelease(url); + CFRelease(url2); + } +} + +#if SDL_USE_NIB_FILE + +/* Fix menu to contain the real app name instead of "SDL App" */ +- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName +{ + NSRange aRange; + NSEnumerator *enumerator; + NSMenuItem *menuItem; + + aRange = [[aMenu title] rangeOfString:@"SDL App"]; + if (aRange.length != 0) + [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; + + enumerator = [[aMenu itemArray] objectEnumerator]; + while ((menuItem = [enumerator nextObject])) + { + aRange = [[menuItem title] rangeOfString:@"SDL App"]; + if (aRange.length != 0) + [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; + if ([menuItem hasSubmenu]) + [self fixMenu:[menuItem submenu] withAppName:appName]; + } +} + +#else + +static void setApplicationMenu(void) +{ + /* warning: this code is very odd */ + NSMenu *appleMenu; + NSMenuItem *menuItem; + NSString *title; + NSString *appName; + + appName = getApplicationName(); + appleMenu = [[NSMenu alloc] initWithTitle:@""]; + + /* Add menu items */ + title = [@"About " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; + + [appleMenu addItem:[NSMenuItem separatorItem]]; + + title = [@"Hide " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; + + menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; + [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; + + [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; + + [appleMenu addItem:[NSMenuItem separatorItem]]; + + title = [@"Quit " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; + + + /* Put menu into the menubar */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:appleMenu]; + [[NSApp mainMenu] addItem:menuItem]; + + /* Tell the application object that this is now the application menu */ + [NSApp setAppleMenu:appleMenu]; + + /* Finally give up our references to the objects */ + [appleMenu release]; + [menuItem release]; +} + +/* Create a window menu */ +static void setupWindowMenu(void) +{ + NSMenu *windowMenu; + NSMenuItem *windowMenuItem; + NSMenuItem *menuItem; + + windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; + + /* "Minimize" item */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; + [windowMenu addItem:menuItem]; + [menuItem release]; + + /* Put menu into the menubar */ + windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; + [windowMenuItem setSubmenu:windowMenu]; + [[NSApp mainMenu] addItem:windowMenuItem]; + + /* Tell the application object that this is now the window menu */ + [NSApp setWindowsMenu:windowMenu]; + + /* Finally give up our references to the objects */ + [windowMenu release]; + [windowMenuItem release]; +} + +/* Replacement for NSApplicationMain */ +static void CustomApplicationMain (int argc, char **argv) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + SDLMain *sdlMain; + + /* Ensure the application object is initialised */ + [NSApplication sharedApplication]; + +#ifdef SDL_USE_CPS + { + CPSProcessSerNum PSN; + /* Tell the dock about us */ + if (!CPSGetCurrentProcess(&PSN)) + if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) + if (!CPSSetFrontProcess(&PSN)) + [NSApplication sharedApplication]; + } +#endif /* SDL_USE_CPS */ + + /* Set up the menubar */ + [NSApp setMainMenu:[[NSMenu alloc] init]]; + setApplicationMenu(); + setupWindowMenu(); + + /* Create SDLMain and make it the app delegate */ + sdlMain = [[SDLMain alloc] init]; + [NSApp setDelegate:sdlMain]; + + /* Start the main event loop */ + [NSApp run]; + + [sdlMain release]; + [pool release]; +} + +#endif + + +/* + * Catch document open requests...this lets us notice files when the app + * was launched by double-clicking a document, or when a document was + * dragged/dropped on the app's icon. You need to have a + * CFBundleDocumentsType section in your Info.plist to get this message, + * apparently. + * + * Files are added to gArgv, so to the app, they'll look like command line + * arguments. Previously, apps launched from the finder had nothing but + * an argv[0]. + * + * This message may be received multiple times to open several docs on launch. + * + * This message is ignored once the app's mainline has been called. + */ +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename +{ + const char *temparg; + size_t arglen; + char *arg; + char **newargv; + + if (!gFinderLaunch) /* MacOS is passing command line args. */ + return FALSE; + + if (gCalledAppMainline) /* app has started, ignore this document. */ + return FALSE; + + temparg = [filename UTF8String]; + arglen = SDL_strlen(temparg) + 1; + arg = (char *) SDL_malloc(arglen); + if (arg == NULL) + return FALSE; + + newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2)); + if (newargv == NULL) + { + SDL_free(arg); + return FALSE; + } + gArgv = newargv; + + SDL_strlcpy(arg, temparg, arglen); + gArgv[gArgc++] = arg; + gArgv[gArgc] = NULL; + return TRUE; +} + + +/* Called when the internal event loop has just started running */ +- (void) applicationDidFinishLaunching: (NSNotification *) note +{ + int status; + + /* Set the working directory to the .app's parent directory */ + [self setupWorkingDirectory:gFinderLaunch]; + +#if SDL_USE_NIB_FILE + /* Set the main menu to contain the real app name instead of "SDL App" */ + [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()]; +#endif + + /* Hand off to main application code */ + gCalledAppMainline = TRUE; + status = SDL_main (gArgc, gArgv); + + /* We're done, thank you for playing */ + exit(status); +} +@end + + +@implementation NSString (ReplaceSubString) + +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString +{ + unsigned int bufferSize; + unsigned int selfLen = [self length]; + unsigned int aStringLen = [aString length]; + unichar *buffer; + NSRange localRange; + NSString *result; + + bufferSize = selfLen + aStringLen - aRange.length; + buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar)); + + /* Get first part into buffer */ + localRange.location = 0; + localRange.length = aRange.location; + [self getCharacters:buffer range:localRange]; + + /* Get middle part into buffer */ + localRange.location = 0; + localRange.length = aStringLen; + [aString getCharacters:(buffer+aRange.location) range:localRange]; + + /* Get last part into buffer */ + localRange.location = aRange.location + aRange.length; + localRange.length = selfLen - localRange.location; + [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; + + /* Build output string */ + result = [NSString stringWithCharacters:buffer length:bufferSize]; + + NSDeallocateMemoryPages(buffer, bufferSize); + + return result; +} + +@end + + + +#ifdef main +# undef main +#endif + + +static int IsRootCwd() +{ + char buf[MAXPATHLEN]; + char *cwd = getcwd(buf, sizeof (buf)); + return (cwd && (strcmp(cwd, "/") == 0)); +} + +static int IsFinderLaunch(const int argc, char **argv) +{ + /* -psn_XXX is passed if we are launched from Finder, SOMETIMES */ + if ( (argc >= 2) && (strncmp(argv[1], "-psn", 4) == 0) ) { + return 1; + } else if ((argc == 1) && IsRootCwd()) { + /* we might still be launched from the Finder; on 10.9+, you might not + get the -psn command line anymore. If there's no + command line, and if our current working directory is "/", it + might as well be a Finder launch. */ + return 1; + } + return 0; /* not a Finder launch. */ +} + +/* Main entry point to executable - should *not* be SDL_main! */ +int main (int argc, char **argv) +{ + /* Copy the arguments into a global variable */ + if (IsFinderLaunch(argc, argv)) { + gArgv = (char **) SDL_malloc(sizeof (char *) * 2); + gArgv[0] = argv[0]; + gArgv[1] = NULL; + gArgc = 1; + gFinderLaunch = YES; + } else { + int i; + gArgc = argc; + gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); + for (i = 0; i <= argc; i++) + gArgv[i] = argv[i]; + gFinderLaunch = NO; + } + +#if SDL_USE_NIB_FILE + NSApplicationMain (argc, argv); +#else + CustomApplicationMain (argc, argv); +#endif + return 0; +} + diff --git a/MacOSX/SDL.framework/Versions/Current b/MacOSX/SDL.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/MacOSX/SDL.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/MacOSX/SDL2.framework/Headers b/MacOSX/SDL2.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/MacOSX/SDL2.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/MacOSX/SDL2.framework/Resources b/MacOSX/SDL2.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/MacOSX/SDL2.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/MacOSX/SDL2.framework/SDL2 b/MacOSX/SDL2.framework/SDL2 new file mode 120000 index 0000000..9dd4e4f --- /dev/null +++ b/MacOSX/SDL2.framework/SDL2 @@ -0,0 +1 @@ +Versions/Current/SDL2 \ No newline at end of file diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL.h new file mode 100644 index 0000000..7cdd324 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL.h @@ -0,0 +1,232 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include "SDL_main.h" +#include "SDL_stdinc.h" +#include "SDL_assert.h" +#include "SDL_atomic.h" +#include "SDL_audio.h" +#include "SDL_clipboard.h" +#include "SDL_cpuinfo.h" +#include "SDL_endian.h" +#include "SDL_error.h" +#include "SDL_events.h" +#include "SDL_filesystem.h" +#include "SDL_gamecontroller.h" +#include "SDL_haptic.h" +#include "SDL_hidapi.h" +#include "SDL_hints.h" +#include "SDL_joystick.h" +#include "SDL_loadso.h" +#include "SDL_log.h" +#include "SDL_messagebox.h" +#include "SDL_metal.h" +#include "SDL_mutex.h" +#include "SDL_power.h" +#include "SDL_render.h" +#include "SDL_rwops.h" +#include "SDL_sensor.h" +#include "SDL_shape.h" +#include "SDL_system.h" +#include "SDL_thread.h" +#include "SDL_timer.h" +#include "SDL_version.h" +#include "SDL_video.h" +#include "SDL_locale.h" +#include "SDL_misc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_assert.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_assert.h new file mode 100644 index 0000000..d658481 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_assert.h @@ -0,0 +1,320 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include <signal.h> + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_atomic.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_atomic.h new file mode 100644 index 0000000..d37ef53 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_atomic.h @@ -0,0 +1,395 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include "SDL_stdinc.h" +#include "SDL_platform.h" + +#include "begin_code.h" + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include <sys/cpuinline.h> + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include <mbarrier.h> +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include "close_code.h" + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_audio.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_audio.h new file mode 100644 index 0000000..ab25ec9 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_audio.h @@ -0,0 +1,1462 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_endian.h" +#include "SDL_mutex.h" +#include "SDL_thread.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR FC BL BR (quad + center) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_bits.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_bits.h new file mode 100644 index 0000000..22cb853 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * <seander@cs.stanford.edu>, released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_blendmode.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_blendmode.h new file mode 100644 index 0000000..08c9f9d --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = (srcA * dstA) + (dstA * (1-srcA)) */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_clipboard.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_clipboard.h new file mode 100644 index 0000000..9351363 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_clipboard.h @@ -0,0 +1,94 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_config.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_config.h new file mode 100644 index 0000000..7afefab --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_config.h @@ -0,0 +1,55 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include "SDL_platform.h" + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include "SDL_config_windows.h" +#elif defined(__WINRT__) +#include "SDL_config_winrt.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__IPHONEOS__) +#include "SDL_config_iphoneos.h" +#elif defined(__ANDROID__) +#include "SDL_config_android.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" +#elif defined(__EMSCRIPTEN__) +#include "SDL_config_emscripten.h" +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include "SDL_config_minimal.h" +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h new file mode 100644 index 0000000..ca02098 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h @@ -0,0 +1,279 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include "SDL_platform.h" + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include <AvailabilityMacros.h> + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include(<immintrin.h>) +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/opt/X11/lib/libXinerama.1.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/opt/X11/lib/libXxf86vm.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XINERAMA 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h new file mode 100644 index 0000000..b2c48d8 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h @@ -0,0 +1,563 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include "SDL_stdinc.h" + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include <intrin.h> +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +/* +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +*/ +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include <intrin.h> +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include <arm_neon.h> +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include <altivec.h> +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include <arm_neon.h> +# elif defined(__WINDOWS__) || defined(__WINRT__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include <armintr.h> +# include <arm_neon.h> +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include <arm64intr.h> +# include <arm64_neon.h> +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include <mm3dnow.h> +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) && \ + (defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)) +#include <immintrin.h> +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include <mmintrin.h> +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include <xmmintrin.h> +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include <emmintrin.h> +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include <pmmintrin.h> +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_endian.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_endian.h new file mode 100644 index 0000000..c164a07 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_endian.h @@ -0,0 +1,357 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include "SDL_stdinc.h" + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include <intrin.h> +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include <endian.h> +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__sun) && defined(__SVR4) /* Solaris */ +#include <sys/byteorder.h> +#if defined(_LITTLE_ENDIAN) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif defined(_BIG_ENDIAN) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include <endian.h> +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include <sys/endian.h> +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) || defined(__sparc) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_error.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_error.h new file mode 100644 index 0000000..5c961e4 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_events.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_events.h new file mode 100644 index 0000000..7e46907 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_events.h @@ -0,0 +1,1150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" +#include "SDL_keyboard.h" +#include "SDL_mouse.h" +#include "SDL_joystick.h" +#include "SDL_gamecontroller.h" +#include "SDL_quit.h" +#include "SDL_gesture.h" +#include "SDL_touch.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_filesystem.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_filesystem.h new file mode 100644 index 0000000..16f02e2 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_filesystem.h @@ -0,0 +1,145 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like" + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h new file mode 100644 index 0000000..5488610 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h @@ -0,0 +1,1002 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_rwops.h" +#include "SDL_sensor.h" +#include "SDL_joystick.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_gesture.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_gesture.h new file mode 100644 index 0000000..e2caea2 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "SDL_touch.h" + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_haptic.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_haptic.h new file mode 100644 index 0000000..f240ae9 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_joystick.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_hidapi.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_hidapi.h new file mode 100644 index 0000000..354af5c --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_hints.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_hints.h new file mode 100644 index 0000000..ea819c8 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_hints.h @@ -0,0 +1,2182 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * Note that this is currently only applicable to resampling audio that is + * being written to a device for playback or audio being read from a device + * for capture. SDL_AudioCVT always uses the default resampler (although this + * might change for SDL 2.1). + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling whether SDL logs all events pushed onto its internal queue. + * + * This variable can be set to the following values: + * + * "0" - Don't log any events (default) + * "1" - Log all events except mouse and finger motion, which are pretty spammy. + * "2" - Log all events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + + /** + * \brief A variable controlling whether Switch Joy-Cons should be treated the same as Switch Pro Controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - basic Joy-Con support with no analog input (the default) + * "1" - Joy-Cons treated as half full Pro Controllers with analog inputs and sensors + * + * This does not combine Joy-Cons into a single controller. That's up to the user. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + + /** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + + /** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + + /** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + + /** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + + /** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + + /** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + + /** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + + /** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + + /** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". Spaces are disabled regardless of this hint if + * the OS isn't at least Mac OS X Lion (10.7). This hint must be set before + * any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A variable controlling whether the X11 Xinerama extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable Xinerama + * "1" - Enable Xinerama + * + * By default SDL will use Xinerama if it is available. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will not use XRandR because of window manager issues. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A variable controlling whether the X11 VidMode extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XVidMode + * "1" - Enable XVidMode + * + * By default SDL will use XVidMode if it is available. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_joystick.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_joystick.h new file mode 100644 index 0000000..07e2b15 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_joystick.h @@ -0,0 +1,946 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef struct { + Uint8 data[16]; +} SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. If the index is out of + * range, this function will return -1. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index the player index to set. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_keyboard.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_keyboard.h new file mode 100644 index 0000000..0aa5990 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_keyboard.h @@ -0,0 +1,337 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_keycode.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * Note: If you want use system native IME window, try to set hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_keycode.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_keycode.h new file mode 100644 index 0000000..3560254 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_keycode.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include "SDL_stdinc.h" +#include "SDL_scancode.h" + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * always map to SDLK_0...SDLK_9, regardless of layout. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_loadso.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_loadso.h new file mode 100644 index 0000000..61857c8 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_locale.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_locale.h new file mode 100644 index 0000000..7515779 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include "close_code.h" + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_log.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_log.h new file mode 100644 index 0000000..345e764 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message + * + * Messages longer than the maximum size will be truncated + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_main.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_main.h new file mode 100644 index 0000000..b3fec15 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_main.h @@ -0,0 +1,235 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include "SDL_stdinc.h" + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#ifdef __WIN32__ + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* __WIN32__ */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + + +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_messagebox.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_messagebox.h new file mode 100644 index 0000000..d763534 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include "SDL_stdinc.h" +#include "SDL_video.h" /* For SDL_Window */ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_metal.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_metal.h new file mode 100644 index 0000000..eb30828 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_MetalCreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_metal_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_misc.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_misc.h new file mode 100644 index 0000000..261b6b8 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_mouse.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_mouse.h new file mode 100644 index 0000000..1d4a2db --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_mouse.h @@ -0,0 +1,454 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, and the driver + * will try to report continuous motion in the current window. Only relative + * motion events will be delivered, the mouse position will not change. + * + * Note that this function will not be able to provide continuous relative + * motion when used over Microsoft Remote Desktop, instead motion is limited + * to the bounds of the screen. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_mutex.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_mutex.h new file mode 100644 index 0000000..173468f --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_mutex.h @@ -0,0 +1,471 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param ms the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_name.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_name.h new file mode 100644 index 0000000..6ff35b4 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl.h new file mode 100644 index 0000000..9aed503 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl.h @@ -0,0 +1,2183 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include "SDL_config.h" + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef __gl_h_ +#define __gl_h_ + +#if defined(USE_MGL_NAMESPACE) +#include "gl_mangle.h" +#endif + + +/********************************************************************** + * Begin system-specific stuff. + */ + +#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__) +#define __WIN32__ +#endif + +#if defined(__WIN32__) && !defined(__CYGWIN__) +# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ +# define GLAPI __declspec(dllexport) +# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */ +# define GLAPI __declspec(dllimport) +# else /* for use with static link lib build of Win32 edition only */ +# define GLAPI extern +# endif /* _STATIC_MESA support */ +# if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE) /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */ +# define GLAPIENTRY +# else +# define GLAPIENTRY __stdcall +# endif +#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */ +# define GLAPI extern +# define GLAPIENTRY __stdcall +#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define GLAPI __attribute__((visibility("default"))) +# define GLAPIENTRY +#endif /* WIN32 && !CYGWIN */ + +/* + * WINDOWS: Include windows.h here to define APIENTRY. + * It is also useful when applications include this file by + * including only glut.h, since glut.h depends on windows.h. + * Applications needing to include windows.h with parms other + * than "WIN32_LEAN_AND_MEAN" may include windows.h before + * glut.h or gl.h. + */ +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include <windows.h> +#endif + +#ifndef GLAPI +#define GLAPI extern +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifndef APIENTRY +#define APIENTRY GLAPIENTRY +#endif + +/* "P" suffix to be used for a pointer to a function */ +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRYP +#define GLAPIENTRYP GLAPIENTRY * +#endif + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#endif + +/* + * End system-specific stuff. + **********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define GL_VERSION_1_1 1 +#define GL_VERSION_1_2 1 +#define GL_VERSION_1_3 1 +#define GL_ARB_imaging 1 + + +/* + * Datatypes + */ +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef signed char GLbyte; /* 1-byte signed */ +typedef short GLshort; /* 2-byte signed */ +typedef int GLint; /* 4-byte signed */ +typedef unsigned char GLubyte; /* 1-byte unsigned */ +typedef unsigned short GLushort; /* 2-byte unsigned */ +typedef unsigned int GLuint; /* 4-byte unsigned */ +typedef int GLsizei; /* 4-byte signed */ +typedef float GLfloat; /* single precision float */ +typedef float GLclampf; /* single precision float in [0,1] */ +typedef double GLdouble; /* double precision float */ +typedef double GLclampd; /* double precision float in [0,1] */ + + + +/* + * Constants + */ + +/* Boolean values */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* Data types */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_DOUBLE 0x140A + +/* Primitives */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON 0x0009 + +/* Vertex Arrays */ +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D + +/* Matrix Mode */ +#define GL_MATRIX_MODE 0x0BA0 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +/* Points */ +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_RANGE 0x0B12 + +/* Lines */ +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 + +/* Polygons */ +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 + +/* Display Lists */ +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_LIST_MODE 0x0B30 + +/* Depth buffer */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_COMPONENT 0x1902 + +/* Lighting */ +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_SHININESS 0x1601 +#define GL_EMISSION 0x1600 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_SHADE_MODEL 0x0B54 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_NORMALIZE 0x0BA1 + +/* User clipping planes */ +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 + +/* Accumulation buffer */ +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_ACCUM 0x0100 +#define GL_ADD 0x0104 +#define GL_LOAD 0x0101 +#define GL_MULT 0x0103 +#define GL_RETURN 0x0102 + +/* Alpha testing */ +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_ALPHA_TEST_FUNC 0x0BC1 + +/* Blending */ +#define GL_BLEND 0x0BE2 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_DST 0x0BE0 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 + +/* Render Mode */ +#define GL_FEEDBACK 0x1C01 +#define GL_RENDER 0x1C00 +#define GL_SELECT 0x1C02 + +/* Feedback */ +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 + +/* Selection */ +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 + +/* Fog */ +#define GL_FOG 0x0B60 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_COLOR 0x0B66 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_LINEAR 0x2601 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +/* Logic Ops */ +#define GL_LOGIC_OP 0x0BF1 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_CLEAR 0x1500 +#define GL_SET 0x150F +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_NOOP 0x1505 +#define GL_INVERT 0x150A +#define GL_AND 0x1501 +#define GL_NAND 0x150E +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_XOR 0x1506 +#define GL_EQUIV 0x1509 +#define GL_AND_REVERSE 0x1502 +#define GL_AND_INVERTED 0x1504 +#define GL_OR_REVERSE 0x150B +#define GL_OR_INVERTED 0x150D + +/* Stencil */ +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_INDEX 0x1901 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 + +/* Buffers, Pixel Drawing/Reading */ +#define GL_NONE 0 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +/*GL_FRONT 0x0404 */ +/*GL_BACK 0x0405 */ +/*GL_FRONT_AND_BACK 0x0408 */ +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_COLOR_INDEX 0x1900 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_ALPHA_BITS 0x0D55 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_INDEX_BITS 0x0D51 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_READ_BUFFER 0x0C02 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_BITMAP 0x1A00 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_DITHER 0x0BD0 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 + +/* Implementation limits */ +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B + +/* Gets */ +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_MODE 0x0C30 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_RENDER_MODE 0x0C40 +#define GL_RGBA_MODE 0x0C31 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_VIEWPORT 0x0BA2 + +/* Evaluators */ +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 + +/* Hints */ +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_FOG_HINT 0x0C54 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* Scissor box */ +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 + +/* Pixel Mode / Transfer */ +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 + +/* Texture mapping */ +#define GL_TEXTURE_ENV 0x2300 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_LINEAR 0x2400 +#define GL_EYE_PLANE 0x2502 +#define GL_SPHERE_MAP 0x2402 +#define GL_DECAL 0x2101 +#define GL_MODULATE 0x2100 +#define GL_NEAREST 0x2600 +#define GL_REPEAT 0x2901 +#define GL_CLAMP 0x2900 +#define GL_S 0x2000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 + +/* Utility */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* Errors */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 + +/* glPush/PopAttrib bits */ +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000002 +#define GL_LINE_BIT 0x00000004 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_HINT_BIT 0x00008000 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000FFFFF + + +/* OpenGL 1.1 */ +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF + + + +/* + * Miscellaneous + */ + +GLAPI void GLAPIENTRY glClearIndex( GLfloat c ); + +GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); + +GLAPI void GLAPIENTRY glClear( GLbitfield mask ); + +GLAPI void GLAPIENTRY glIndexMask( GLuint mask ); + +GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ); + +GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref ); + +GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor ); + +GLAPI void GLAPIENTRY glLogicOp( GLenum opcode ); + +GLAPI void GLAPIENTRY glCullFace( GLenum mode ); + +GLAPI void GLAPIENTRY glFrontFace( GLenum mode ); + +GLAPI void GLAPIENTRY glPointSize( GLfloat size ); + +GLAPI void GLAPIENTRY glLineWidth( GLfloat width ); + +GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern ); + +GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode ); + +GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units ); + +GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask ); + +GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask ); + +GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag ); + +GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag ); + +GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height); + +GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation ); + +GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation ); + +GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode ); + +GLAPI void GLAPIENTRY glReadBuffer( GLenum mode ); + +GLAPI void GLAPIENTRY glEnable( GLenum cap ); + +GLAPI void GLAPIENTRY glDisable( GLenum cap ); + +GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap ); + + +GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */ + +GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */ + + +GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params ); + +GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params ); + +GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params ); + +GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask ); + +GLAPI void GLAPIENTRY glPopAttrib( void ); + + +GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */ + +GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */ + + +GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode ); + +GLAPI GLenum GLAPIENTRY glGetError( void ); + +GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name ); + +GLAPI void GLAPIENTRY glFinish( void ); + +GLAPI void GLAPIENTRY glFlush( void ); + +GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode ); + + +/* + * Depth Buffer + */ + +GLAPI void GLAPIENTRY glClearDepth( GLclampd depth ); + +GLAPI void GLAPIENTRY glDepthFunc( GLenum func ); + +GLAPI void GLAPIENTRY glDepthMask( GLboolean flag ); + +GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val ); + + +/* + * Accumulation Buffer + */ + +GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); + +GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value ); + + +/* + * Transformation + */ + +GLAPI void GLAPIENTRY glMatrixMode( GLenum mode ); + +GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, + GLdouble near_val, GLdouble far_val ); + +GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, + GLdouble near_val, GLdouble far_val ); + +GLAPI void GLAPIENTRY glViewport( GLint x, GLint y, + GLsizei width, GLsizei height ); + +GLAPI void GLAPIENTRY glPushMatrix( void ); + +GLAPI void GLAPIENTRY glPopMatrix( void ); + +GLAPI void GLAPIENTRY glLoadIdentity( void ); + +GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m ); +GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m ); + +GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m ); +GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m ); + +GLAPI void GLAPIENTRY glRotated( GLdouble angle, + GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glRotatef( GLfloat angle, + GLfloat x, GLfloat y, GLfloat z ); + +GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z ); + +GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z ); + + +/* + * Display Lists + */ + +GLAPI GLboolean GLAPIENTRY glIsList( GLuint list ); + +GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range ); + +GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range ); + +GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode ); + +GLAPI void GLAPIENTRY glEndList( void ); + +GLAPI void GLAPIENTRY glCallList( GLuint list ); + +GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type, + const GLvoid *lists ); + +GLAPI void GLAPIENTRY glListBase( GLuint base ); + + +/* + * Drawing Functions + */ + +GLAPI void GLAPIENTRY glBegin( GLenum mode ); + +GLAPI void GLAPIENTRY glEnd( void ); + + +GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y ); +GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y ); +GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y ); +GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y ); + +GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z ); +GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z ); + +GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w ); +GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ); + +GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glVertex2iv( const GLint *v ); +GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glVertex3iv( const GLint *v ); +GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glVertex4iv( const GLint *v ); +GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ); +GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ); +GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ); +GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz ); +GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz ); + +GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v ); +GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glNormal3iv( const GLint *v ); +GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glIndexd( GLdouble c ); +GLAPI void GLAPIENTRY glIndexf( GLfloat c ); +GLAPI void GLAPIENTRY glIndexi( GLint c ); +GLAPI void GLAPIENTRY glIndexs( GLshort c ); +GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */ + +GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c ); +GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c ); +GLAPI void GLAPIENTRY glIndexiv( const GLint *c ); +GLAPI void GLAPIENTRY glIndexsv( const GLshort *c ); +GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */ + +GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue ); +GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue ); +GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue ); +GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue ); +GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue ); +GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue ); +GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue ); +GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue ); + +GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green, + GLbyte blue, GLbyte alpha ); +GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green, + GLdouble blue, GLdouble alpha ); +GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green, + GLfloat blue, GLfloat alpha ); +GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green, + GLint blue, GLint alpha ); +GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green, + GLshort blue, GLshort alpha ); +GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green, + GLubyte blue, GLubyte alpha ); +GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green, + GLuint blue, GLuint alpha ); +GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green, + GLushort blue, GLushort alpha ); + + +GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v ); +GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glColor3iv( const GLint *v ); +GLAPI void GLAPIENTRY glColor3sv( const GLshort *v ); +GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v ); +GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v ); +GLAPI void GLAPIENTRY glColor3usv( const GLushort *v ); + +GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v ); +GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glColor4iv( const GLint *v ); +GLAPI void GLAPIENTRY glColor4sv( const GLshort *v ); +GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v ); +GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v ); +GLAPI void GLAPIENTRY glColor4usv( const GLushort *v ); + + +GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s ); +GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s ); +GLAPI void GLAPIENTRY glTexCoord1i( GLint s ); +GLAPI void GLAPIENTRY glTexCoord1s( GLshort s ); + +GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t ); +GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t ); +GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t ); +GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t ); + +GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r ); +GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r ); +GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r ); +GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r ); + +GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); +GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q ); +GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ); + +GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y ); +GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y ); +GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y ); +GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y ); + +GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z ); +GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z ); + +GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w ); +GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ); + +GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v ); +GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v ); +GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v ); +GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ); +GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ); +GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 ); +GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ); + + +GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 ); +GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 ); +GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 ); +GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 ); + + +/* + * Vertex Arrays (1.1) + */ + +GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type, + GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride, + const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type, + GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride, + const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type, + GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params ); + +GLAPI void GLAPIENTRY glArrayElement( GLint i ); + +GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count ); + +GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count, + GLenum type, const GLvoid *indices ); + +GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride, + const GLvoid *pointer ); + +/* + * Lighting + */ + +GLAPI void GLAPIENTRY glShadeModel( GLenum mode ); + +GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param ); +GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname, + const GLfloat *params ); +GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname, + const GLint *params ); + +GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname, + GLfloat *params ); +GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param ); +GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param ); +GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params ); + +GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode ); + + +/* + * Raster functions + */ + +GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor ); + +GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize, + const GLfloat *values ); +GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize, + const GLuint *values ); +GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize, + const GLushort *values ); + +GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values ); +GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values ); +GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values ); + +GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height, + GLfloat xorig, GLfloat yorig, + GLfloat xmove, GLfloat ymove, + const GLubyte *bitmap ); + +GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + GLvoid *pixels ); + +GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y, + GLsizei width, GLsizei height, + GLenum type ); + +/* + * Stenciling + */ + +GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask ); + +GLAPI void GLAPIENTRY glStencilMask( GLuint mask ); + +GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ); + +GLAPI void GLAPIENTRY glClearStencil( GLint s ); + + + +/* + * Texture mapping + */ + +GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param ); +GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params ); +GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ); +GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname, + const GLfloat *params ); +GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname, + const GLint *params ); + +GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target, + GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target, + GLenum pname, GLint *params ); + +GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level, + GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, + GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLint border, + GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level, + GLenum format, GLenum type, + GLvoid *pixels ); + + +/* 1.1 functions */ + +GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures ); + +GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures); + +GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture ); + +GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n, + const GLuint *textures, + const GLclampf *priorities ); + +GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n, + const GLuint *textures, + GLboolean *residences ); + +GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture ); + + +GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level, + GLint xoffset, + GLsizei width, GLenum format, + GLenum type, const GLvoid *pixels ); + + +GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels ); + + +GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level, + GLenum internalformat, + GLint x, GLint y, + GLsizei width, GLint border ); + + +GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level, + GLenum internalformat, + GLint x, GLint y, + GLsizei width, GLsizei height, + GLint border ); + + +GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level, + GLint xoffset, GLint x, GLint y, + GLsizei width ); + + +GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint x, GLint y, + GLsizei width, GLsizei height ); + + +/* + * Evaluators + */ + +GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2, + GLint stride, + GLint order, const GLdouble *points ); +GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2, + GLint stride, + GLint order, const GLfloat *points ); + +GLAPI void GLAPIENTRY glMap2d( GLenum target, + GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, + GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, + const GLdouble *points ); +GLAPI void GLAPIENTRY glMap2f( GLenum target, + GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, + GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, + const GLfloat *points ); + +GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v ); +GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v ); +GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v ); + +GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u ); +GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u ); + +GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u ); +GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u ); + +GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v ); +GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v ); + +GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u ); +GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u ); + +GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ); +GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ); + +GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, + GLint vn, GLdouble v1, GLdouble v2 ); +GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, + GLint vn, GLfloat v1, GLfloat v2 ); + +GLAPI void GLAPIENTRY glEvalPoint1( GLint i ); + +GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j ); + +GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 ); + +GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ); + + +/* + * Fog + */ + +GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param ); + +GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params ); + +GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params ); + + +/* + * Selection and Feedback + */ + +GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ); + +GLAPI void GLAPIENTRY glPassThrough( GLfloat token ); + +GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer ); + +GLAPI void GLAPIENTRY glInitNames( void ); + +GLAPI void GLAPIENTRY glLoadName( GLuint name ); + +GLAPI void GLAPIENTRY glPushName( GLuint name ); + +GLAPI void GLAPIENTRY glPopName( void ); + + + +/* + * OpenGL 1.2 + */ + +#define GL_RESCALE_NORMAL 0x803A +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_TEXTURE_BINDING_3D 0x806A + +GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start, + GLuint end, GLsizei count, GLenum type, const GLvoid *indices ); + +GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLsizei height, + GLsizei depth, GLint border, + GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, + GLenum type, const GLvoid *pixels); + +GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLint x, + GLint y, GLsizei width, + GLsizei height ); + +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + + +/* + * GL_ARB_imaging + */ + +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_BLEND_EQUATION 0x8009 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_COLOR 0x8005 + + +GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat, + GLsizei width, GLenum format, + GLenum type, const GLvoid *table ); + +GLAPI void GLAPIENTRY glColorSubTable( GLenum target, + GLsizei start, GLsizei count, + GLenum format, GLenum type, + const GLvoid *data ); + +GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname, + const GLint *params); + +GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname, + const GLfloat *params); + +GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start, + GLint x, GLint y, GLsizei width ); + +GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width ); + +GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format, + GLenum type, GLvoid *table ); + +GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glBlendEquation( GLenum mode ); + +GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green, + GLclampf blue, GLclampf alpha ); + +GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width, + GLenum internalformat, GLboolean sink ); + +GLAPI void GLAPIENTRY glResetHistogram( GLenum target ); + +GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset, + GLenum format, GLenum type, + GLvoid *values ); + +GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat, + GLboolean sink ); + +GLAPI void GLAPIENTRY glResetMinmax( GLenum target ); + +GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset, + GLenum format, GLenum types, + GLvoid *values ); + +GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target, + GLenum internalformat, GLsizei width, GLenum format, GLenum type, + const GLvoid *image ); + +GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target, + GLenum internalformat, GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid *image ); + +GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname, + GLfloat params ); + +GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname, + const GLfloat *params ); + +GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname, + GLint params ); + +GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname, + const GLint *params ); + +GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target, + GLenum internalformat, GLint x, GLint y, GLsizei width ); + +GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target, + GLenum internalformat, GLint x, GLint y, GLsizei width, + GLsizei height); + +GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format, + GLenum type, GLvoid *image ); + +GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target, + GLenum internalformat, GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid *row, const GLvoid *column ); + +GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format, + GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ); + + + + +/* + * OpenGL 1.3 + */ + +/* multitexture */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +/* texture_cube_map */ +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +/* texture_compression */ +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +/* multisample */ +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +/* transpose_matrix */ +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +/* texture_env_combine */ +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +/* texture_env_dot3 */ +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +/* texture_border_clamp */ +#define GL_CLAMP_TO_BORDER 0x812D + +GLAPI void GLAPIENTRY glActiveTexture( GLenum texture ); + +GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture ); + +GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img ); + +GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v ); + + +GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] ); + +GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] ); + +GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] ); + +GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] ); + +GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); + + +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); + + + +/* + * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1) + */ +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 + +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 + +GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); +GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture); +GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); +GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); +GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); +GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); +GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v); +GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); +GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); +GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); +GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); +GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v); +GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); +GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v); +GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v); + +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#endif /* GL_ARB_multitexture */ + + + +/* + * Define this token if you want "old-style" header file behaviour (extensions + * defined in gl.h). Otherwise, extensions will be included from glext.h. + */ +#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include "SDL_opengl_glext.h" +#endif /* GL_GLEXT_LEGACY */ + + + +/* + * ???. GL_MESA_packed_depth_stencil + * XXX obsolete + */ +#ifndef GL_MESA_packed_depth_stencil +#define GL_MESA_packed_depth_stencil 1 + +#define GL_DEPTH_STENCIL_MESA 0x8750 +#define GL_UNSIGNED_INT_24_8_MESA 0x8751 +#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 +#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 +#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 + +#endif /* GL_MESA_packed_depth_stencil */ + + +#ifndef GL_ATI_blend_equation_separate +#define GL_ATI_blend_equation_separate 1 + +#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D + +GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA ); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA); + +#endif /* GL_ATI_blend_equation_separate */ + + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + + +/** + ** NOTE!!!!! If you add new functions to this file, or update + ** glext.h be sure to regenerate the gl_mangle.h file. See comments + ** in that file for details. + **/ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h new file mode 100644 index 0000000..6a402b1 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h @@ -0,0 +1,11180 @@ +#ifndef __glext_h_ +#define __glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2013-2014 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ +/* +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** http://www.opengl.org/registry/ +** +** Khronos $Revision: 26745 $ on $Date: 2014-05-21 03:12:26 -0700 (Wed, 21 May 2014) $ +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include <windows.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20140521 + +/* Generated C header for: + * API: gl + * Profile: compatibility + * Versions considered: .* + * Versions emitted: 1\.[2-9]|[234]\.[0-9] + * Default extensions included: gl + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_RESCALE_NORMAL 0x803A +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_VERSION_1_2 */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum texture); +GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img); +GLAPI void APIENTRY glClientActiveTexture (GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m); +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m); +#endif +#endif /* GL_VERSION_1_3 */ + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param); +GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params); +GLAPI void APIENTRY glFogCoordf (GLfloat coord); +GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord); +GLAPI void APIENTRY glFogCoordd (GLdouble coord); +GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord); +GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v); +GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v); +GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v); +GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue); +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v); +GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v); +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v); +GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v); +GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v); +GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2iv (const GLint *v); +GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2sv (const GLshort *v); +GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3iv (const GLint *v); +GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3sv (const GLshort *v); +GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void APIENTRY glBlendEquation (GLenum mode); +#endif +#endif /* GL_VERSION_1_4 */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +#include <stddef.h> +#ifdef __MACOSX__ +typedef long GLsizeiptr; +typedef long GLintptr; +#else +typedef ptrdiff_t GLsizeiptr; +typedef ptrdiff_t GLintptr; +#endif +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC2_ALPHA 0x858A +typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsQuery (GLuint id); +GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id); +GLAPI void APIENTRY glEndQuery (GLenum target); +GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params); +GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer); +GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access); +GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target); +GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_VERSION_1_5 */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +typedef char GLchar; +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader); +GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GLAPI void APIENTRY glCompileShader (GLuint shader); +GLAPI GLuint APIENTRY glCreateProgram (void); +GLAPI GLuint APIENTRY glCreateShader (GLenum type); +GLAPI void APIENTRY glDeleteProgram (GLuint program); +GLAPI void APIENTRY glDeleteShader (GLuint shader); +GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader); +GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index); +GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index); +GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GLAPI GLboolean APIENTRY glIsProgram (GLuint program); +GLAPI GLboolean APIENTRY glIsShader (GLuint shader); +GLAPI void APIENTRY glLinkProgram (GLuint program); +GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI void APIENTRY glUseProgram (GLuint program); +GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0); +GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glUniform1i (GLint location, GLint v0); +GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glValidateProgram (GLuint program); +GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +#endif +#endif /* GL_VERSION_2_0 */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_VERSION_2_1 */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +typedef unsigned short GLhalf; +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 +typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data); +GLAPI void APIENTRY glEnablei (GLenum target, GLuint index); +GLAPI void APIENTRY glDisablei (GLenum target, GLuint index); +GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index); +GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedback (void); +GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp); +GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRender (void); +GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params); +GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params); +GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0); +GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index); +GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer); +GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target); +GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateMipmap (GLenum target); +GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glBindVertexArray (GLuint array); +GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays); +GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays); +GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array); +#endif +#endif /* GL_VERSION_3_0 */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); +GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName); +GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#endif +#endif /* GL_VERSION_3_1 */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +typedef struct __GLsync *GLsync; +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glxext.h, so must be protected */ +#define GLEXT_64_TYPES_DEFINED +/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ +/* (as used in the GL_EXT_timer_query extension). */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include <inttypes.h> +#elif defined(__sun__) || defined(__digital__) +#include <inttypes.h> +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include <inttypes.h> +#elif defined(__SCO__) || defined(__USLC__) +#include <stdint.h> +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && defined(__GNUC__) +#include <stdint.h> +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +/* Fallback if nothing above works */ +#include <inttypes.h> +#endif +#endif +typedef uint64_t GLuint64; +typedef int64_t GLint64; +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync); +typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data); +typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI void APIENTRY glProvokingVertex (GLenum mode); +GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags); +GLAPI GLboolean APIENTRY glIsSync (GLsync sync); +GLAPI void APIENTRY glDeleteSync (GLsync sync); +GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data); +GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data); +GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask); +#endif +#endif /* GL_VERSION_3_2 */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers); +GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers); +GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler); +GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler); +GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param); +GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param); +GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param); +GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param); +GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param); +GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params); +GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target); +GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params); +GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); +GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color); +GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color); +GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color); +GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color); +GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color); +GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color); +#endif +#endif /* GL_VERSION_3_3 */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value); +typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect); +typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); +typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); +typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShading (GLfloat value); +GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect); +GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect); +GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x); +GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y); +GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params); +GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name); +GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name); +GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices); +GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params); +GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value); +GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values); +GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids); +GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids); +GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id); +GLAPI void APIENTRY glPauseTransformFeedback (void); +GLAPI void APIENTRY glResumeTransformFeedback (void); +GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id); +GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream); +GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id); +GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index); +GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params); +#endif +#endif /* GL_VERSION_4_0 */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings); +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReleaseShaderCompiler (void); +GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); +GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GLAPI void APIENTRY glClearDepthf (GLfloat d); +GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); +GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program); +GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings); +GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines); +GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines); +GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params); +GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0); +GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0); +GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0); +GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0); +GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1); +GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v); +GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v); +GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f); +GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data); +#endif +#endif /* GL_VERSION_4_1 */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); +typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers); +GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount); +GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#endif +#endif /* GL_VERSION_4_2 */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_DISPLAY_LIST 0x82E7 +typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect); +GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level); +GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer); +GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments); +GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); +GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI void APIENTRY glPopDebugGroup (void); +GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_VERSION_4_3 */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers); +typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures); +GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers); +GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures); +GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +#endif +#endif /* GL_VERSION_4_4 */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +#endif /* GL_ARB_ES2_compatibility */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +#endif /* GL_ARB_ES3_compatibility */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +#endif /* GL_ARB_arrays_of_arrays */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +#endif /* GL_ARB_base_instance */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 +typedef uint64_t GLuint64EXT; +#define GL_UNSIGNED_INT64_ARB 0x140F +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture); +GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler); +GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle); +GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle); +GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access); +GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle); +GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value); +GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value); +GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle); +GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle); +GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x); +GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params); +#endif +#endif /* GL_ARB_bindless_texture */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +#endif /* GL_ARB_blend_func_extended */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +#endif /* GL_ARB_buffer_storage */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 +struct _cl_context; +struct _cl_event; +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +#endif +#endif /* GL_ARB_cl_event */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +#endif /* GL_ARB_clear_buffer_object */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +#endif /* GL_ARB_clear_texture */ + +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp); +#endif +#endif /* GL_ARB_color_buffer_float */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +#endif /* GL_ARB_compatibility */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#endif /* GL_ARB_compute_shader */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +#endif +#endif /* GL_ARB_compute_variable_group_size */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +#endif /* GL_ARB_conservative_depth */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#endif /* GL_ARB_copy_buffer */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +#endif /* GL_ARB_copy_image */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#endif +#endif /* GL_ARB_debug_output */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +#endif /* GL_ARB_depth_buffer_float */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#endif /* GL_ARB_depth_clamp */ + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif /* GL_ARB_depth_texture */ + +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_ARB_draw_buffers */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 +typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +#endif /* GL_ARB_draw_buffers_blend */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#endif /* GL_ARB_draw_elements_base_vertex */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +#endif /* GL_ARB_draw_indirect */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_ARB_draw_instanced */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +#endif /* GL_ARB_enhanced_layouts */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +#endif /* GL_ARB_explicit_attrib_location */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +#endif /* GL_ARB_explicit_uniform_location */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#endif /* GL_ARB_fragment_coord_conventions */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +#endif /* GL_ARB_fragment_layer_viewport */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program); +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs); +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string); +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program); +#endif +#endif /* GL_ARB_fragment_program */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +#endif /* GL_ARB_fragment_program_shadow */ + +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#endif /* GL_ARB_fragment_shader */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +#endif /* GL_ARB_framebuffer_no_attachments */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +#endif /* GL_ARB_framebuffer_object */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +#endif /* GL_ARB_framebuffer_sRGB */ + +#ifndef GL_KHR_context_flush_control +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value); +GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_ARB_geometry_shader4 */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +#endif /* GL_ARB_get_program_binary */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +#endif /* GL_ARB_gpu_shader5 */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +#endif /* GL_ARB_gpu_shader_fp64 */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +typedef unsigned short GLhalfARB; +#define GL_HALF_FLOAT_ARB 0x140B +#endif /* GL_ARB_half_float_pixel */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +#endif /* GL_ARB_half_float_vertex */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table); +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image); +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogram (GLenum target); +GLAPI void APIENTRY glResetMinmax (GLenum target); +#endif +#endif /* GL_ARB_imaging */ + +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_ARB_indirect_parameters */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor); +#endif +#endif /* GL_ARB_instanced_arrays */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +#endif /* GL_ARB_internalformat_query */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +#define GL_SRGB_DECODE_ARB 0x8299 +#endif /* GL_ARB_internalformat_query2 */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +#endif /* GL_ARB_invalidate_subdata */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +#endif /* GL_ARB_map_buffer_alignment */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +#endif /* GL_ARB_map_buffer_range */ + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index); +GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices); +GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices); +GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices); +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_ARB_matrix_palette */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +#endif /* GL_ARB_multi_bind */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +#endif /* GL_ARB_multi_draw_indirect */ + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert); +#endif +#endif /* GL_ARB_multisample */ + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTextureARB (GLenum texture); +GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v); +#endif +#endif /* GL_ARB_multitexture */ + +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id); +GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id); +GLAPI void APIENTRY glEndQueryARB (GLenum target); +GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params); +#endif +#endif /* GL_ARB_occlusion_query */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +#endif /* GL_ARB_occlusion_query2 */ + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif /* GL_ARB_pixel_buffer_object */ + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_ARB_point_parameters */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif /* GL_ARB_point_sprite */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +#endif /* GL_ARB_program_interface_query */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#endif /* GL_ARB_provoking_vertex */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +#endif /* GL_ARB_query_buffer_object */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +#endif /* GL_ARB_robust_buffer_access_behavior */ + +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img); +typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); +GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img); +GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values); +GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values); +GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern); +GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +#endif +#endif /* GL_ARB_robustness */ + +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +#endif /* GL_ARB_robustness_isolation */ + +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value); +#endif +#endif /* GL_ARB_sample_shading */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +#endif /* GL_ARB_sampler_objects */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#endif /* GL_ARB_seamless_cube_map */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +#endif /* GL_ARB_separate_shader_objects */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +#endif /* GL_ARB_shader_atomic_counters */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +#endif /* GL_ARB_shader_bit_encoding */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +#endif /* GL_ARB_shader_draw_parameters */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +#endif /* GL_ARB_shader_group_vote */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +#endif /* GL_ARB_shader_image_load_store */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +#endif /* GL_ARB_shader_image_size */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef char GLcharARB; +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj); +GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname); +GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj); +GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType); +GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj); +GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); +GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj); +GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj); +GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj); +GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj); +GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0); +GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0); +GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name); +GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params); +GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params); +GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#endif +#endif /* GL_ARB_shader_objects */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +#endif /* GL_ARB_shader_precision */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +#endif /* GL_ARB_shader_stencil_export */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +#endif /* GL_ARB_shader_storage_buffer_object */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +#endif /* GL_ARB_shader_subroutine */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +#endif /* GL_ARB_shader_texture_lod */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#endif /* GL_ARB_shading_language_100 */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +#endif /* GL_ARB_shading_language_420pack */ + +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name); +GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name); +GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +#endif +#endif /* GL_ARB_shading_language_include */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +#endif /* GL_ARB_shading_language_packing */ + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif /* GL_ARB_shadow */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif /* GL_ARB_shadow_ambient */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_MIN_SPARSE_LEVEL_ARB 0x919B +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident); +#endif +#endif /* GL_ARB_sparse_texture */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +#endif /* GL_ARB_stencil_texturing */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#endif /* GL_ARB_sync */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +#endif /* GL_ARB_tessellation_shader */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif /* GL_ARB_texture_border_clamp */ + +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_ARB_texture_buffer_object */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +#endif /* GL_ARB_texture_buffer_range */ + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img); +#endif +#endif /* GL_ARB_texture_compression */ + +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#endif /* GL_ARB_texture_compression_bptc */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +#endif /* GL_ARB_texture_compression_rgtc */ + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif /* GL_ARB_texture_cube_map */ + +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#endif /* GL_ARB_texture_cube_map_array */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif /* GL_ARB_texture_env_add */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif /* GL_ARB_texture_env_combine */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif /* GL_ARB_texture_env_crossbar */ + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#endif /* GL_ARB_texture_env_dot3 */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#endif /* GL_ARB_texture_float */ + +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#endif /* GL_ARB_texture_gather */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif /* GL_ARB_texture_mirrored_repeat */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#endif /* GL_ARB_texture_multisample */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif /* GL_ARB_texture_non_power_of_two */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +#endif /* GL_ARB_texture_query_levels */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +#endif /* GL_ARB_texture_query_lod */ + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif /* GL_ARB_texture_rectangle */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +#endif /* GL_ARB_texture_rg */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +#endif /* GL_ARB_texture_rgb10_a2ui */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +#endif /* GL_ARB_texture_stencil8 */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +#endif /* GL_ARB_texture_storage */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +#endif /* GL_ARB_texture_storage_multisample */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +#endif /* GL_ARB_texture_swizzle */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +#endif /* GL_ARB_texture_view */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +#endif /* GL_ARB_timer_query */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#endif /* GL_ARB_transform_feedback2 */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +#endif /* GL_ARB_transform_feedback3 */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +#endif /* GL_ARB_transform_feedback_instanced */ + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m); +#endif +#endif /* GL_ARB_transpose_matrix */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#endif /* GL_ARB_uniform_buffer_object */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#endif /* GL_ARB_vertex_array_bgra */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +#endif /* GL_ARB_vertex_array_object */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +#endif /* GL_ARB_vertex_attrib_64bit */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +#endif /* GL_ARB_vertex_attrib_binding */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights); +GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights); +GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights); +GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights); +GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights); +GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights); +GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights); +GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights); +GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glVertexBlendARB (GLint count); +#endif +#endif /* GL_ARB_vertex_blend */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +#ifdef __MACOSX__ /* The OS X headers haven't caught up with Khronos yet */ +typedef long GLsizeiptrARB; +typedef long GLintptrARB; +#else +typedef ptrdiff_t GLsizeiptrARB; +typedef ptrdiff_t GLintptrARB; +#endif +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer); +GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers); +GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers); +GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer); +GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access); +GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target); +GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_ARB_vertex_buffer_object */ + +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer); +#endif +#endif /* GL_ARB_vertex_program */ + +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name); +GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name); +#endif +#endif /* GL_ARB_vertex_shader */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 +#endif /* GL_ARB_viewport_array */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v); +GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v); +GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v); +GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v); +#endif +#endif /* GL_ARB_window_pos */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s); +typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); +typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x); +typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); +typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s); +GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t); +GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glTexCoord1bOES (GLbyte s); +GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t); +GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r); +GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex2bOES (GLbyte x); +GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y); +GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z); +GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords); +#endif +#endif /* GL_OES_byte_coordinates */ + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif /* GL_OES_compressed_paletted_texture */ + +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +typedef GLint GLfixed; +#define GL_FIXED_OES 0x140C +typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth); +typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); +typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); +typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value); +typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); +typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); +typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); +typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token); +typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); +typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); +typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref); +GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearDepthxOES (GLfixed depth); +GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); +GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f); +GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation); +GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); +GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glLineWidthxOES (GLfixed width); +GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); +GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glPointSizexOES (GLfixed size); +GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); +GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert); +GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value); +GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue); +GLAPI void APIENTRY glColor3xvOES (const GLfixed *components); +GLAPI void APIENTRY glColor4xvOES (const GLfixed *components); +GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u); +GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v); +GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer); +GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v); +GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values); +GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glIndexxOES (GLfixed component); +GLAPI void APIENTRY glIndexxvOES (const GLfixed *component); +GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2); +GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s); +GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t); +GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glPassThroughxOES (GLfixed token); +GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values); +GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param); +GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor); +GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities); +GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2); +GLAPI void APIENTRY glTexCoord1xOES (GLfixed s); +GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t); +GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glVertex2xOES (GLfixed x); +GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords); +#endif +#endif /* GL_OES_fixed_point */ + +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent); +#endif +#endif /* GL_OES_query_matrix */ + +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif /* GL_OES_read_format */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClearDepthfOES (GLclampf depth); +GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); +GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f); +GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation); +GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#endif +#endif /* GL_OES_single_precision */ + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif /* GL_3DFX_multisample */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask); +#endif +#endif /* GL_3DFX_tbuffer */ + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif /* GL_3DFX_texture_compression_FXT1 */ + +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_AMD_blend_minmax_factor */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +#endif /* GL_AMD_conservative_depth */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#endif +#endif /* GL_AMD_debug_output */ + +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#endif /* GL_AMD_depth_clamp_separate */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 +typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_AMD_draw_buffers_blend */ + +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 +#endif /* GL_AMD_gcn_shader */ + +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 +typedef int64_t GLint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params); +GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_AMD_gpu_shader_int64 */ + +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param); +#endif +#endif /* GL_AMD_interleaved_elements */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +#endif +#endif /* GL_AMD_multi_draw_indirect */ + +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names); +typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names); +typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names); +GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names); +GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name); +#endif +#endif /* GL_AMD_name_gen_delete */ + +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param); +#endif +#endif /* GL_AMD_occlusion_query_event */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#endif /* GL_AMD_pinned_memory */ + +#ifndef GL_AMD_query_buffer_object +#define GL_AMD_query_buffer_object 1 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#endif /* GL_AMD_query_buffer_object */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val); +#endif +#endif /* GL_AMD_sample_positions */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 +#endif /* GL_AMD_shader_atomic_counter_ops */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +#endif /* GL_AMD_shader_stencil_export */ + +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +#endif /* GL_AMD_shader_trinary_minmax */ + +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +#endif +#endif /* GL_AMD_sparse_texture */ + +#ifndef GL_AMD_stencil_operation_extended +#define GL_AMD_stencil_operation_extended 1 +#define GL_SET_AMD 0x874A +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value); +#endif +#endif /* GL_AMD_stencil_operation_extended */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +#endif /* GL_AMD_texture_texture4 */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#endif /* GL_AMD_transform_feedback4 */ + +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 +#endif /* GL_AMD_vertex_shader_layer */ + +#ifndef GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 +typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor); +GLAPI void APIENTRY glTessellationModeAMD (GLenum mode); +#endif +#endif /* GL_AMD_vertex_shader_tessellator */ + +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 +#endif /* GL_AMD_vertex_shader_viewport_index */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#endif /* GL_APPLE_aux_depth_stencil */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#endif /* GL_APPLE_client_storage */ + +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer); +GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#endif +#endif /* GL_APPLE_element_array */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences); +GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences); +GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence); +GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name); +GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name); +#endif +#endif /* GL_APPLE_fence */ + +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#endif /* GL_APPLE_float_pixels */ + +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_APPLE_flush_buffer_range */ + +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D +typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); +GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); +GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params); +#endif +#endif /* GL_APPLE_object_purgeable */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#endif /* GL_APPLE_row_bytes */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif /* GL_APPLE_specular_vector */ + +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer); +GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_APPLE_texture_range */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif /* GL_APPLE_transform_hint */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array); +GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays); +GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays); +GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array); +#endif +#endif /* GL_APPLE_vertex_array_object */ + +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param); +#endif +#endif /* GL_APPLE_vertex_array_range */ + +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname); +GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname); +GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname); +GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +#endif +#endif /* GL_APPLE_vertex_program_evaluators */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +#define GL_YCBCR_422_APPLE 0x85B9 +#endif /* GL_APPLE_ycbcr_422 */ + +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_ATI_draw_buffers */ + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif +#endif /* GL_ATI_element_array */ + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param); +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param); +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param); +#endif +#endif /* GL_ATI_envmap_bumpmap */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range); +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id); +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id); +GLAPI void APIENTRY glBeginFragmentShaderATI (void); +GLAPI void APIENTRY glEndFragmentShaderATI (void); +GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle); +GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle); +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value); +#endif +#endif /* GL_ATI_fragment_shader */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer); +#endif +#endif /* GL_ATI_map_object_buffer */ + +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#endif /* GL_ATI_meminfo */ + +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#endif /* GL_ATI_pixel_format_float */ + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_pn_triangles */ + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#endif +#endif /* GL_ATI_separate_stencil */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#endif /* GL_ATI_text_fragment_shader */ + +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#endif /* GL_ATI_texture_env_combine3 */ + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif /* GL_ATI_texture_float */ + +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#endif /* GL_ATI_texture_mirror_once */ + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage); +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params); +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params); +#endif +#endif /* GL_ATI_vertex_array_object */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params); +#endif +#endif /* GL_ATI_vertex_attrib_array_object */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x); +GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x); +GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x); +GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x); +GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y); +GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords); +GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz); +GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream); +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param); +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_vertex_streams */ + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif /* GL_EXT_422_pixels */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#define GL_ABGR_EXT 0x8000 +#endif /* GL_EXT_abgr */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif /* GL_EXT_bgra */ + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer); +GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location); +GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location); +#endif +#endif /* GL_EXT_bindable_uniform */ + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#endif +#endif /* GL_EXT_blend_color */ + +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_EXT_blend_equation_separate */ + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_EXT_blend_func_separate */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif /* GL_EXT_blend_logic_op */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationEXT (GLenum mode); +#endif +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif /* GL_EXT_blend_subtract */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif /* GL_EXT_clip_volume_hint */ + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif /* GL_EXT_cmyka */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif +#endif /* GL_EXT_color_subtable */ + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count); +GLAPI void APIENTRY glUnlockArraysEXT (void); +#endif +#endif /* GL_EXT_compiled_vertex_array */ + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +#endif +#endif /* GL_EXT_convolution */ + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz); +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz); +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz); +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz); +GLAPI void APIENTRY glTangent3ivEXT (const GLint *v); +GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz); +GLAPI void APIENTRY glTangent3svEXT (const GLshort *v); +GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz); +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz); +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz); +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz); +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v); +GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz); +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v); +GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_coordinate_frame */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_EXT_copy_texture */ + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_cull_vertex */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GLAPI void APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax); +#endif +#endif /* GL_EXT_depth_bounds_test */ + +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data); +typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data); +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glMatrixPopEXT (GLenum mode); +GLAPI void APIENTRY glMatrixPushEXT (GLenum mode); +GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture); +GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params); +GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data); +GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data); +GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index); +GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index); +GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index); +GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data); +GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img); +GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img); +GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access); +GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer); +GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params); +GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params); +GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params); +GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string); +GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target); +GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target); +GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target); +GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode); +GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode); +GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array); +GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array); +GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param); +GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param); +GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); +GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x); +GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y); +GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident); +GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_direct_state_access */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#endif +#endif /* GL_EXT_draw_buffers2 */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +#endif +#endif /* GL_EXT_draw_range_elements */ + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord); +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord); +GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord); +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord); +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_fog_coord */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_EXT_framebuffer_blit */ + +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_EXT_framebuffer_multisample */ + +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer); +GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers); +GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer); +GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer); +GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers); +GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers); +GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target); +GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target); +#endif +#endif /* GL_EXT_framebuffer_object */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#endif /* GL_EXT_framebuffer_sRGB */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +#endif +#endif /* GL_EXT_geometry_shader4 */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#endif +#endif /* GL_EXT_gpu_program_parameters */ + +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params); +GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name); +GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0); +GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value); +#endif +#endif /* GL_EXT_gpu_shader4 */ + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogramEXT (GLenum target); +GLAPI void APIENTRY glResetMinmaxEXT (GLenum target); +#endif +#endif /* GL_EXT_histogram */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif /* GL_EXT_index_array_formats */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref); +#endif +#endif /* GL_EXT_index_func */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_index_material */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif /* GL_EXT_index_texture */ + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyTextureEXT (GLenum mode); +GLAPI void APIENTRY glTextureLightEXT (GLenum pname); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_light_texture */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif /* GL_EXT_misc_attribute */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#endif +#endif /* GL_EXT_multi_draw_arrays */ + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern); +#endif +#endif /* GL_EXT_multisample */ + +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif /* GL_EXT_packed_depth_stencil */ + +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#endif /* GL_EXT_packed_float */ + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif /* GL_EXT_packed_pixels */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_paletted_texture */ + +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#endif /* GL_EXT_pixel_buffer_object */ + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_pixel_transform */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif /* GL_EXT_pixel_transform_color_table */ + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_EXT_point_parameters */ + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias); +#endif +#endif /* GL_EXT_polygon_offset */ + +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode); +#endif +#endif /* GL_EXT_provoking_vertex */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif /* GL_EXT_rescale_normal */ + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue); +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v); +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue); +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v); +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v); +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue); +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v); +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue); +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v); +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_secondary_color */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); +typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program); +GLAPI void APIENTRY glActiveProgramEXT (GLuint program); +GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif /* GL_EXT_separate_specular_color */ + +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +#endif /* GL_EXT_shader_image_load_formatted */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers); +#endif +#endif /* GL_EXT_shader_image_load_store */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +#endif /* GL_EXT_shadow_funcs */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif /* GL_EXT_shared_texture_palette */ + +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag); +#endif +#endif /* GL_EXT_stencil_clear_tag */ + +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face); +#endif +#endif /* GL_EXT_stencil_two_side */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif /* GL_EXT_stencil_wrap */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_EXT_subtexture */ + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif /* GL_EXT_texture */ + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_EXT_texture3D */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#endif /* GL_EXT_texture_array */ + +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_EXT_texture_buffer_object */ + +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif /* GL_EXT_texture_compression_latc */ + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif /* GL_EXT_texture_compression_rgtc */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_cube_map +#define GL_EXT_texture_cube_map 1 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif /* GL_EXT_texture_cube_map */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif /* GL_EXT_texture_env_add */ + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif /* GL_EXT_texture_env_combine */ + +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#endif /* GL_EXT_texture_env_dot3 */ + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif /* GL_EXT_texture_filter_anisotropic */ + +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#endif +#endif /* GL_EXT_texture_integer */ + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif /* GL_EXT_texture_lod_bias */ + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#endif /* GL_EXT_texture_mirror_clamp */ + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture); +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures); +GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures); +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture); +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#endif +#endif /* GL_EXT_texture_object */ + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureNormalEXT (GLenum mode); +#endif +#endif /* GL_EXT_texture_perturb_normal */ + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_sRGB */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#endif /* GL_EXT_texture_shared_exponent */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#endif /* GL_EXT_texture_snorm */ + +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#endif /* GL_EXT_texture_swizzle */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +#define GL_TIME_ELAPSED_EXT 0x88BF +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +#endif +#endif /* GL_EXT_timer_query */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedbackEXT (void); +GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#endif +#endif /* GL_EXT_transform_feedback */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params); +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glArrayElementEXT (GLint i); +GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count); +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer); +GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params); +GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +#endif +#endif /* GL_EXT_vertex_array */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +#endif /* GL_EXT_vertex_array_bgra */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params); +#endif +#endif /* GL_EXT_vertex_attrib_64bit */ + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr); +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data); +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVertexShaderEXT (void); +GLAPI void APIENTRY glEndVertexShaderEXT (void); +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id); +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range); +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id); +GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1); +GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num); +GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num); +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr); +GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr); +GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr); +GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr); +GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr); +GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr); +GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr); +GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr); +GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr); +GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr); +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id); +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id); +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value); +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap); +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data); +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +#endif +#endif /* GL_EXT_vertex_shader */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_vertex_weighting */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#endif +#endif /* GL_EXT_x11_sync_object */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +#endif +#endif /* GL_GREMEDY_frame_terminator */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string); +#endif +#endif /* GL_GREMEDY_string_marker */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif /* GL_HP_convolution_border_modes */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_HP_image_transform */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif /* GL_HP_occlusion_test */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif /* GL_HP_texture_lighting */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#define GL_CULL_VERTEX_IBM 103050 +#endif /* GL_IBM_cull_vertex */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +#endif +#endif /* GL_IBM_multimode_draw_arrays */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif /* GL_IBM_rasterpos_clip */ + +#ifndef GL_IBM_static_data +#define GL_IBM_static_data 1 +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target); +#endif +#endif /* GL_IBM_static_data */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif /* GL_IBM_texture_mirrored_repeat */ + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +#endif +#endif /* GL_IBM_vertex_array_lists */ + +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_INGR_blend_func_separate */ + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif /* GL_INGR_color_clamp */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#define GL_INTERLACE_READ_INGR 0x8568 +#endif /* GL_INGR_interlace_read */ + +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 +#endif /* GL_INTEL_fragment_shader_ordering */ + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); +typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture); +GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level); +GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +#endif +#endif /* GL_INTEL_map_texture */ + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer); +GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer); +#endif +#endif /* GL_INTEL_parallel_arrays */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#endif /* GL_MESAX_texture_stack */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +#define GL_PACK_INVERT_MESA 0x8758 +#endif /* GL_MESA_pack_invert */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glResizeBuffersMESA (void); +#endif +#endif /* GL_MESA_resize_buffers */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v); +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v); +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v); +#endif +#endif /* GL_MESA_window_pos */ + +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#endif /* GL_MESA_ycbcr_texture */ + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id); +GLAPI void APIENTRY glEndConditionalRenderNVX (void); +#endif +#endif /* GL_NVX_conditional_render */ + +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#endif /* GL_NVX_gpu_memory_info */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture); +GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GLAPI void APIENTRY glBlendBarrierNV (void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif /* GL_NV_blend_square */ + +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#endif /* GL_NV_compute_program5 */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRenderNV (void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif /* GL_NV_copy_depth_to_color */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_NV_copy_image */ + +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#endif /* GL_NV_deep_texture3D */ + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glClearDepthdNV (GLdouble depth); +GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax); +#endif +#endif /* GL_NV_depth_buffer_float */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#define GL_DEPTH_CLAMP_NV 0x864F +#endif /* GL_NV_depth_clamp */ + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 +typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +#endif +#endif /* GL_NV_draw_texture */ + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode); +#endif +#endif /* GL_NV_evaluators */ + +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask); +GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer); +#endif +#endif /* GL_NV_explicit_multisample */ + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence); +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence); +GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GLAPI void APIENTRY glFinishFenceNV (GLuint fence); +GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition); +#endif +#endif /* GL_NV_fence */ + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif /* GL_NV_float_buffer */ + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#endif /* GL_NV_fog_distance */ + +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +#endif +#endif /* GL_NV_fragment_program */ + +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#endif /* GL_NV_fragment_program2 */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +#endif /* GL_NV_fragment_program4 */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +#endif /* GL_NV_fragment_program_option */ + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample_coverage */ + +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit); +GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_NV_geometry_program4 */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +#endif /* GL_NV_geometry_shader4 */ + +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params); +GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params); +#endif +#endif /* GL_NV_gpu_program4 */ + +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param); +#endif +#endif /* GL_NV_gpu_program5 */ + +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 +#endif /* GL_NV_gpu_program5_mem_extended */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +typedef unsigned short GLhalfNV; +#define GL_HALF_FLOAT_NV 0x140B +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y); +GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s); +GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t); +GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s); +GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t); +GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); +GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x); +GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y); +GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +#endif +#endif /* GL_NV_half_float */ + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif /* GL_NV_light_max_exponent */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#endif /* GL_NV_multisample_coverage */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif /* GL_NV_multisample_filter_hint */ + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id); +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id); +GLAPI void APIENTRY glEndOcclusionQueryNV (void); +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params); +#endif +#endif /* GL_NV_occlusion_query */ + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif /* GL_NV_packed_depth_stencil */ + +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); +#endif +#endif /* GL_NV_parameter_buffer_object */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +#endif /* GL_NV_parameter_buffer_object2 */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_PATH_FOG_GEN_MODE_NV 0x90AC +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value); +typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value); +typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range); +GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GLAPI GLboolean APIENTRY glIsPathNV (GLuint path); +GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func); +GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI void APIENTRY glPathFogGenNV (GLenum genMode); +GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value); +GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value); +GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer); +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer); +GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target); +#endif +#endif /* GL_NV_pixel_data_range */ + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param); +GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params); +#endif +#endif /* GL_NV_point_sprite */ + +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B +typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params); +GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params); +#endif +#endif /* GL_NV_present_video */ + +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveRestartNV (void); +GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index); +#endif +#endif /* GL_NV_primitive_restart */ + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param); +GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params); +GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param); +GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_register_combiners */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params); +#endif +#endif /* GL_NV_register_combiners2 */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +#endif /* GL_NV_shader_atomic_counters */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +#endif /* GL_NV_shader_atomic_float */ + +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result); +typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access); +GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target); +GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target); +GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access); +GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer); +GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer); +GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result); +GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value); +GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value); +GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_shader_buffer_load */ + +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#endif /* GL_NV_shader_buffer_store */ + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +#endif /* GL_NV_shader_storage_buffer_object */ + +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#endif /* GL_NV_shader_thread_group */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +#endif /* GL_NV_shader_thread_shuffle */ + +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#endif /* GL_NV_tessellation_program5 */ + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif /* GL_NV_texgen_emboss */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif /* GL_NV_texgen_reflection */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 +typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureBarrierNV (void); +#endif +#endif /* GL_NV_texture_barrier */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif /* GL_NV_texture_compression_vtc */ + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif /* GL_NV_texture_env_combine4 */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#endif /* GL_NV_texture_expand_normal */ + +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +#endif +#endif /* GL_NV_texture_multisample */ + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#endif /* GL_NV_texture_rectangle */ + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif /* GL_NV_texture_shader */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif /* GL_NV_texture_shader2 */ + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif /* GL_NV_texture_shader3 */ + +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_LAYER_NV 0x8DAA +#define GL_NEXT_BUFFER_NV -2 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS1_NV -6 +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedbackNV (void); +GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode); +GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name); +GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location); +GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#endif +#endif /* GL_NV_transform_feedback */ + +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids); +GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids); +GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id); +GLAPI void APIENTRY glPauseTransformFeedbackNV (void); +GLAPI void APIENTRY glResumeTransformFeedbackNV (void); +GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id); +#endif +#endif /* GL_NV_transform_feedback2 */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 +typedef GLintptr GLvdpauSurfaceNV; +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE +typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress); +typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress); +GLAPI void APIENTRY glVDPAUFiniNV (void); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access); +GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +#endif +#endif /* GL_NV_vdpau_interop */ + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer); +#endif +#endif /* GL_NV_vertex_array_range */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif /* GL_NV_vertex_array_range2 */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x); +GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x); +GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); +#endif +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride); +GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result); +#endif +#endif /* GL_NV_vertex_buffer_unified_memory */ + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences); +GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params); +GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs); +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program); +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer); +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id); +GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v); +GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v); +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform); +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v); +#endif +#endif /* GL_NV_vertex_program */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif /* GL_NV_vertex_program1_1 */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +#endif /* GL_NV_vertex_program2 */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +#endif /* GL_NV_vertex_program2_option */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +#endif /* GL_NV_vertex_program3 */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); +#endif +#endif /* GL_NV_vertex_program4 */ + +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_SUCCESS_NV 0x902F +#define GL_FAILURE_NV 0x9030 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot); +GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot); +GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +#endif +#endif /* GL_NV_video_capture */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif /* GL_OML_interlace */ + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif /* GL_OML_resample */ + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif /* GL_OML_subsample */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode); +#endif +#endif /* GL_PGI_misc_hints */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif /* GL_PGI_vertex_hints */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif /* GL_REND_screen_coordinates */ + +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#endif /* GL_S3_s3tc */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points); +#endif +#endif /* GL_SGIS_detail_texture */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points); +#endif +#endif /* GL_SGIS_fog_function */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif /* GL_SGIS_generate_mipmap */ + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern); +#endif +#endif /* GL_SGIS_multisample */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params); +#endif +#endif /* GL_SGIS_pixel_texture */ + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif /* GL_SGIS_point_line_texgen */ + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_SGIS_point_parameters */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points); +#endif +#endif /* GL_SGIS_sharpen_texture */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_SGIS_texture4D */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#endif /* GL_SGIS_texture_border_clamp */ + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif +#endif /* GL_SGIS_texture_color_mask */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif /* GL_SGIS_texture_edge_clamp */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#endif +#endif /* GL_SGIS_texture_filter4 */ + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif /* GL_SGIS_texture_lod */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif /* GL_SGIS_texture_select */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#define GL_ASYNC_MARKER_SGIX 0x8329 +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker); +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp); +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker); +#endif +#endif /* GL_SGIX_async */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif /* GL_SGIX_async_histogram */ + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif /* GL_SGIX_async_pixel */ + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif /* GL_SGIX_blend_alpha_minmax */ + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif /* GL_SGIX_calligraphic_fragment */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif /* GL_SGIX_clipmap */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif /* GL_SGIX_convolution_accuracy */ + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif /* GL_SGIX_depth_pass_instrument */ + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif /* GL_SGIX_depth_texture */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushRasterSGIX (void); +#endif +#endif /* GL_SGIX_flush_raster */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif /* GL_SGIX_fog_offset */ + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode); +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params); +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params); +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params); +GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param); +#endif +#endif /* GL_SGIX_fragment_lighting */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameZoomSGIX (GLint factor); +#endif +#endif /* GL_SGIX_framezoom */ + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params); +#endif +#endif /* GL_SGIX_igloo_interface */ + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer); +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p); +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker); +GLAPI void APIENTRY glStartInstrumentsSGIX (void); +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker); +#endif +#endif /* GL_SGIX_instruments */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#define GL_INTERLACE_SGIX 0x8094 +#endif /* GL_SGIX_interlace */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif /* GL_SGIX_ir_instrument1 */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#define GL_LIST_PRIORITY_SGIX 0x8182 +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params); +GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param); +GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param); +GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params); +#endif +#endif /* GL_SGIX_list_priority */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode); +#endif +#endif /* GL_SGIX_pixel_texture */ + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif /* GL_SGIX_pixel_tiles */ + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +GLAPI void APIENTRY glDeformSGIX (GLbitfield mask); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask); +#endif +#endif /* GL_SGIX_polynomial_ffd */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation); +#endif +#endif /* GL_SGIX_reference_plane */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#define GL_PACK_RESAMPLE_SGIX 0x842C +#define GL_UNPACK_RESAMPLE_SGIX 0x842D +#define GL_RESAMPLE_REPLICATE_SGIX 0x842E +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif /* GL_SGIX_resample */ + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif /* GL_SGIX_scalebias_hint */ + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif /* GL_SGIX_shadow */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif /* GL_SGIX_shadow_ambient */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param); +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param); +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params); +#endif +#endif /* GL_SGIX_sprite */ + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif /* GL_SGIX_subsample */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTagSampleBufferSGIX (void); +#endif +#endif /* GL_SGIX_tag_sample_buffer */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif /* GL_SGIX_texture_add_env */ + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif /* GL_SGIX_texture_coordinate_clamp */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif /* GL_SGIX_texture_lod_bias */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif /* GL_SGIX_texture_multi_buffer */ + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif /* GL_SGIX_texture_scale_bias */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif /* GL_SGIX_vertex_preclip */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif /* GL_SGIX_ycrcb */ + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif /* GL_SGIX_ycrcb_subsample */ + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif /* GL_SGIX_ycrcba */ + +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif /* GL_SGI_color_matrix */ + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params); +#endif +#endif /* GL_SGI_color_table */ + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif /* GL_SGI_texture_color_table */ + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFinishTextureSUNX (void); +#endif +#endif /* GL_SUNX_constant_data */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif /* GL_SUN_convolution_border_modes */ + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor); +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor); +#endif +#endif /* GL_SUN_global_alpha */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif +#endif /* GL_SUN_mesh_array */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif /* GL_SUN_slice_accum */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code); +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code); +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code); +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code); +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code); +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code); +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer); +#endif +#endif /* GL_SUN_triangle_list */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#endif +#endif /* GL_SUN_vertex */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif /* GL_WIN_phong_shading */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif /* GL_WIN_specular_fog */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles.h new file mode 100644 index 0000000..8511b96 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include "SDL_config.h" + +#ifdef __IPHONEOS__ +#include <OpenGLES/ES1/gl.h> +#include <OpenGLES/ES1/glext.h> +#else +#include <GLES/gl.h> +#include <GLES/glext.h> +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2.h new file mode 100644 index 0000000..172fcb3 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include "SDL_config.h" + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include <OpenGLES/ES2/gl.h> +#include <OpenGLES/ES2/glext.h> +#else +#include <GLES2/gl2platform.h> +#include <GLES2/gl2.h> +#include <GLES2/gl2ext.h> +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include "SDL_opengles2_khrplatform.h" +#include "SDL_opengles2_gl2platform.h" +#include "SDL_opengles2_gl2.h" +#include "SDL_opengles2_gl2ext.h" + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h new file mode 100644 index 0000000..c62fb0a --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h @@ -0,0 +1,621 @@ +#ifndef __gl2_h_ +#define __gl2_h_ + +/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */ + +/*#include <GLES2/gl2platform.h>*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/*------------------------------------------------------------------------- + * Data type definitions + *-----------------------------------------------------------------------*/ + +typedef void GLvoid; +typedef char GLchar; +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef khronos_int8_t GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; + +/* GL types for handling large vertex buffer objects */ +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* OpenGL ES core versions */ +#define GL_ES_VERSION_2_0 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* AlphaFunction (not supported in ES20) */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* BlendEquationSeparate */ +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ +#define GL_BLEND_EQUATION_ALPHA 0x883D + +/* BlendSubtract */ +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B + +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 + +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +/* GL_SCISSOR_TEST */ +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +/* GL_POLYGON_OFFSET_FILL */ +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* PixelFormat */ +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* Shaders */ +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D + +/* StencilFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ +#define GL_TEXTURE 0x1702 + +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 + +/* Uniform Types */ +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Read Format */ +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B + +/* Shader Source */ +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA + +/* Shader Binary */ +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 + +/* Shader Precision-Specified Types */ +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 + +/* Framebuffer Object. */ +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 + +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 + +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 + +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 + +#define GL_NONE 0 + +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD + +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 + +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/*------------------------------------------------------------------------- + * GL core functions. + *-----------------------------------------------------------------------*/ + +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode ); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2_h_ */ + diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..e8ca8b1 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h @@ -0,0 +1,2050 @@ +#ifndef __gl2ext_h_ +#define __gl2ext_h_ + +/* $Revision: 22801 $ on $Date:: 2013-08-21 03:20:48 -0700 #$ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +# define GL_APIENTRYP GL_APIENTRY* +#endif + +/* New types shared by several extensions */ + +#ifndef __gl3_h_ +/* These are defined with respect to <inttypes.h> in the + * Apple extension spec, but they are also used by non-APPLE + * extensions, and in the Khronos header we use the Khronos + * portable types in khrplatform.h, which must be defined. + */ +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef struct __GLsync *GLsync; +#endif + + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif + +/* GL_OES_depth_texture */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +/* GLeglImageOES defined in GL_OES_EGL_image already. */ +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_UNSIGNED_INT 0x1405 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_OES_required_internalformat */ +#ifndef GL_OES_required_internalformat +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +/* reuse GL_DEPTH_COMPONENT24_OES */ +/* reuse GL_DEPTH24_STENCIL8_OES */ +/* reuse GL_DEPTH_COMPONENT32_OES */ +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +/* reuse GL_RGB8_OES */ +/* reuse GL_RGBA8_OES */ +/* reuse GL_RGB10_EXT */ +/* reuse GL_RGB10_A2_EXT */ +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif + +#ifndef GL_OES_surfaceless_context +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +#endif + +/* GL_OES_texture_float */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_HALF_FLOAT_OES 0x8D61 +#endif + +/* GL_OES_texture_half_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_npot */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +#endif + +/* GL_OES_vertex_half_float */ +/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */ + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif + +/*------------------------------------------------------------------------* + * KHR extension tokens + *------------------------------------------------------------------------*/ + +#ifndef GL_KHR_debug +typedef void (GL_APIENTRYP GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_QUERY_KHR 0x82E3 +/* PROGRAM_PIPELINE only in GL */ +#define GL_SAMPLER_KHR 0x82E6 +/* DISPLAY_LIST only in GL */ +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#endif + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +/* GL_AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_Z400_BINARY_AMD 0x8740 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_depth_texture */ +#ifndef GL_ANGLE_depth_texture +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +#endif + +/* GL_ANGLE_instanced_arrays */ +#ifndef GL_ANGLE_instanced_arrays +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +#endif + +/* GL_ANGLE_pack_reverse_row_order */ +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif + +/* GL_ANGLE_program_binary */ +#ifndef GL_ANGLE_program_binary +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif + +/* GL_ANGLE_texture_compression_dxt3 */ +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif + +/* GL_ANGLE_texture_compression_dxt5 */ +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif + +/* GL_ANGLE_texture_usage */ +#ifndef GL_ANGLE_texture_usage +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif + +/* GL_ANGLE_translated_shader_source */ +#ifndef GL_ANGLE_translated_shader_source +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +#endif + +/*------------------------------------------------------------------------* + * APPLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_APPLE_copy_texture_levels */ +/* No new tokens introduced by this extension. */ + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +#endif + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync + +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif + +/*------------------------------------------------------------------------* + * ARM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_program_binary */ +#ifndef GL_ARM_mali_program_binary +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif + +/* GL_ARM_rgba8 */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif + +/* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_color_buffer_half_float +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#endif + +/* GL_EXT_debug_marker */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +#endif + +#ifndef GL_EXT_disjoint_timer_query +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +#endif + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#endif + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#endif + +/* GL_EXT_multiview_draw_buffers */ +#ifndef GL_EXT_multiview_draw_buffers +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +#endif + +/* GL_EXT_multi_draw_arrays */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +/* reuse GL_NO_ERROR */ +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +#endif + +/* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif + +/* GL_EXT_shader_texture_lod */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif + +/* GL_EXT_sRGB_write_control */ +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif + +/* GL_EXT_texture_sRGB_decode */ +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +/* reuse GL_RGBA16F_EXT */ +/* reuse GL_RGB16F_EXT */ +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif + +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif + +/*------------------------------------------------------------------------* + * DMP extension tokens + *------------------------------------------------------------------------*/ + +/* GL_DMP_shader_binary */ +#ifndef GL_DMP_shader_binary +#define GL_SHADER_BINARY_DMP 0x9250 +#endif + +/*------------------------------------------------------------------------* + * FJ extension tokens + *------------------------------------------------------------------------*/ + +/* GL_FJ_shader_binary_GCCSO */ +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_SGX_BINARY_IMG 0x8C0A +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif + +/* GL_IMG_texture_compression_pvrtc2 */ +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +#endif + +/* GL_NV_draw_instanced */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */ +#endif + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +/* GL_NV_framebuffer_blit */ +#ifndef GL_NV_framebuffer_blit +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +#endif + +/* GL_NV_framebuffer_multisample */ +#ifndef GL_NV_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +#endif + +/* GL_NV_generate_mipmap_sRGB */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_instanced_arrays */ +#ifndef GL_NV_instanced_arrays +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_READ_BUFFER_NV 0x0C02 +#endif + +/* GL_NV_read_buffer_front */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_depth */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_depth_stencil */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_stencil */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_shadow_samplers_array */ +#ifndef GL_NV_shadow_samplers_array +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif + +/* GL_NV_shadow_samplers_cube */ +#ifndef GL_NV_shadow_samplers_cube +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif + +/* GL_NV_sRGB_formats */ +#ifndef GL_NV_sRGB_formats +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif + +/* GL_NV_texture_border_clamp */ +#ifndef GL_NV_texture_border_clamp +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif + +/* GL_NV_texture_compression_s3tc_update */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_texture_npot_2D_mipmap */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_alpha_test */ +#ifndef GL_QCOM_alpha_test +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +#endif + +/* GL_QCOM_binning_control */ +#ifndef GL_QCOM_binning_control +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +#endif + +/* GL_QCOM_extended_get2 */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_depth_texture */ +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fragment_precision_high */ +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid **params); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid **params); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_required_internalformat */ +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif + +/* GL_OES_texture_float */ +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif + +/* GL_OES_texture_float_linear */ +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#endif + +/* GL_OES_texture_half_float_linear */ +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif + +/* GL_OES_texture_npot */ +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#endif + +/* GL_OES_vertex_half_float */ +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#endif + +/*------------------------------------------------------------------------* + * KHR extension functions + *------------------------------------------------------------------------*/ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, GLvoid **params); +#endif + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif + + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/* AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_depth_texture */ +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#endif + +/* GL_ANGLE_pack_reverse_row_order */ +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#endif + +/* GL_ANGLE_program_binary */ +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#endif + +/* GL_ANGLE_texture_compression_dxt3 */ +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#endif + +/* GL_ANGLE_texture_compression_dxt5 */ +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#endif + +/* GL_ANGLE_texture_usage */ +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#endif + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +#endif +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +#endif + +/*------------------------------------------------------------------------* + * APPLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_APPLE_copy_texture_levels */ +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#endif + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync +#define GL_APPLE_sync 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/*------------------------------------------------------------------------* + * ARM extension functions + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_program_binary */ +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#endif + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#endif + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#endif + +/* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif + +/* GL_EXT_debug_marker */ +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +#endif +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#endif /* GL_EXT_draw_buffers */ + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/* GL_EXT_multiview_draw_buffers */ +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); +#endif + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +/* All entry points also exist in GL_EXT_disjoint_timer_query */ +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +#endif +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +#endif + +/* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#endif + +/* GL_EXT_shader_texture_lod */ +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#endif + +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#endif + +/*------------------------------------------------------------------------* + * DMP extension functions + *------------------------------------------------------------------------*/ + +/* GL_DMP_shader_binary */ +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#endif + +/*------------------------------------------------------------------------* + * FJ extension functions + *------------------------------------------------------------------------*/ + +/* GL_FJ_shader_binary_GCCSO */ +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_texture_compression_pvrtc2 */ +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#endif + +/* GL_NV_draw_instanced */ +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#endif + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +/* GL_NV_framebuffer_blit */ +#ifndef GL_NV_framebuffer_blit +#define GL_NV_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +/* GL_NV_framebuffer_multisample */ +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +/* GL_NV_generate_mipmap_sRGB */ +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif + +/* GL_NV_instanced_arrays */ +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_NV_read_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#endif + +/* GL_NV_read_buffer_front */ +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif + +/* GL_NV_read_depth */ +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif + +/* GL_NV_read_depth_stencil */ +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif + +/* GL_NV_read_stencil */ +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif + +/* GL_NV_shadow_samplers_array */ +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#endif + +/* GL_NV_shadow_samplers_cube */ +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#endif + +/* GL_NV_sRGB_formats */ +#ifndef GL_NV_sRGB_formats +#define GL_NV_sRGB_formats 1 +#endif + +/* GL_NV_texture_border_clamp */ +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#endif + +/* GL_NV_texture_compression_s3tc_update */ +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif + +/* GL_NV_texture_npot_2D_mipmap */ +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_alpha_test */ +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#endif + +/* GL_QCOM_binning_control */ +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#endif + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#endif + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); +#endif + +/* GL_QCOM_extended_get2 */ +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2ext_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..c325686 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h @@ -0,0 +1,30 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +/*#include <KHR/khrplatform.h>*/ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..c9e6f17 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h @@ -0,0 +1,282 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $ + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by sending them to the public Khronos Bugzilla + * (http://khronos.org/bugzilla) by filing a bug against product + * "Khronos (general)" component "Registry". + * + * A predefined template which fills in some of the bug fields can be + * reached using http://tinyurl.com/khrplatform-h-bugreport, but you + * must create a Bugzilla login first. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include <KHR/khrplatform.h> + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(_WIN32) && !defined(__SCITECH_SNAP__) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using <stdint.h> + */ +#include <stdint.h> +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using <inttypes.h> + */ +#include <inttypes.h> +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include <stdint.h> +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_pixels.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_pixels.h new file mode 100644 index 0000000..feef30a --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_pixels.h @@ -0,0 +1,652 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include "SDL_stdinc.h" +#include "SDL_endian.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_RGBX8888, + SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_BGRX8888, + SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_XBGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_BGRX8888, + SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_RGBX8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_platform.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_platform.h new file mode 100644 index 0000000..90f5254 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_platform.h @@ -0,0 +1,243 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include <AvailabilityMacros.h> +#ifndef __has_extension /* Older compilers don't support this */ +#define __has_extension(x) 0 +#include <TargetConditionals.h> +#undef __has_extension +#else +#include <TargetConditionals.h> +#endif + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 +# error SDL for Mac OS X only supports deploying on 10.6 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT or non-WinRT */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include(<winapifamily.h>) +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include <winapifamily.h> +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +#if defined(__PSP__) || defined(__psp__) +#ifdef __PSP__ +#undef __PSP__ +#endif +#define __PSP__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_power.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_power.h new file mode 100644 index 0000000..ecb3f4b --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_power.h @@ -0,0 +1,88 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param secs seconds of battery life left, you can pass a NULL here if you + * don't care, will return -1 if we can't determine a value, or + * we're not running on a battery + * \param pct percentage of battery life left, between 0 and 100, you can pass + * a NULL here if you don't care, will return -1 if we can't + * determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *secs, int *pct); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_quit.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_quit.h new file mode 100644 index 0000000..4090f7f --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_rect.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_rect.h new file mode 100644 index 0000000..6c641c5 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_pixels.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_render.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_render.h new file mode 100644 index 0000000..d859e3f --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_render.h @@ -0,0 +1,1908 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include "SDL_stdinc.h" +#include "SDL_rect.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * This may return 0 for `w` and `h` if the SDL_Renderer has never had its + * logical size set by SDL_RenderSetLogicalSize() and never had a render + * target set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calcualted + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + /** + * Get real coordinates of point in window when given logical coordinates of point in renderer. + * Logical coordinates will differ from real coordinates when render is scaled and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbacker. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id<MTLRenderCommandEncoder>` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_revision.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_revision.h new file mode 100644 index 0000000..85974fe --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_revision.h @@ -0,0 +1,2 @@ +#define SDL_REVISION "https://github.com/sezero/SDL.git@c49e57b667aeb587e0b7a21750e465d7abd88db5" +#define SDL_REVISION_NUMBER 0 diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_rwops.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_rwops.h new file mode 100644 index 0000000..71e5c8d --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_rwops.h @@ -0,0 +1,855 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ +#if defined(__VITA__) +#define SDL_RWOPS_VITAFILE 6U /**< Vita file */ +#endif + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#elif defined(__VITA__) + struct + { + int h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } vitaio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_scancode.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_scancode.h new file mode 100644 index 0000000..5b2c67c --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_scancode.h @@ -0,0 +1,413 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include "SDL_stdinc.h" + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return + * key on ISO keyboards and at the right end + * of the QWERTY row on ANSI keyboards. + * Produces REVERSE SOLIDUS (backslash) and + * VERTICAL LINE in a US layout, REVERSE + * SOLIDUS and VERTICAL LINE in a UK Mac + * layout, NUMBER SIGN and TILDE in a UK + * Windows layout, DOLLAR SIGN and POUND SIGN + * in a Swiss German layout, NUMBER SIGN and + * APOSTROPHE in a German layout, GRAVE + * ACCENT and POUND SIGN in a French Mac + * layout, and ASTERISK and MICRO SIGN in a + * French Windows layout. + */ + SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code + * instead of 49 for the same key, but all + * OSes I've seen treat the two codes + * identically. So, as an implementor, unless + * your keyboard generates both of those + * codes and your OS treats them differently, + * you should generate SDL_SCANCODE_BACKSLASH + * instead of this code. As a user, you + * should not rely on this code because SDL + * will never generate it with most (all?) + * keyboards. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI + * and ISO keyboards). Produces GRAVE ACCENT and + * TILDE in a US Windows layout and in US and UK + * Mac layouts on ANSI keyboards, GRAVE ACCENT + * and NOT SIGN in a UK Windows layout, SECTION + * SIGN and PLUS-MINUS SIGN in US and UK Mac + * layouts on ISO keyboards, SECTION SIGN and + * DEGREE SIGN in a Swiss German layout (Mac: + * only on ISO keyboards), CIRCUMFLEX ACCENT and + * DEGREE SIGN in a German layout (Mac: only on + * ISO keyboards), SUPERSCRIPT TWO and TILDE in a + * French Windows layout, COMMERCIAL AT and + * NUMBER SIGN in a French Mac layout on ISO + * keyboards, and LESS-THAN SIGN and GREATER-THAN + * SIGN in a Swiss German, German, or French Mac + * layout on ANSI keyboards. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * Produces GRAVE ACCENT and TILDE in a + * US or UK Mac layout, REVERSE SOLIDUS + * (backslash) and VERTICAL LINE in a + * US or UK Windows layout, and + * LESS-THAN SIGN and GREATER-THAN SIGN + * in a Swiss German, German, or French + * layout. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag, + * not a physical key - but some Mac keyboards + * do have a power key. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, + SDL_SCANCODE_MENU = 118, + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, + SDL_SCANCODE_AGAIN = 121, /**< redo */ + SDL_SCANCODE_UNDO = 122, + SDL_SCANCODE_CUT = 123, + SDL_SCANCODE_COPY = 124, + SDL_SCANCODE_PASTE = 125, + SDL_SCANCODE_FIND = 126, + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special KMOD_MODE for it I'm adding it here + */ + + /* @} *//* Usage page 0x07 */ + + /** + * \name Usage page 0x0C + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, + SDL_SCANCODE_AC_HOME = 269, + SDL_SCANCODE_AC_BACK = 270, + SDL_SCANCODE_AC_FORWARD = 271, + SDL_SCANCODE_AC_STOP = 272, + SDL_SCANCODE_AC_REFRESH = 273, + SDL_SCANCODE_AC_BOOKMARKS = 274, + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_sensor.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_sensor.h new file mode 100644 index 0000000..a2f30e0 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_sensor.h @@ -0,0 +1,301 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO /**< Gyroscope */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include "close_code.h" + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_shape.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_shape.h new file mode 100644 index 0000000..1bca927 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include "SDL_stdinc.h" +#include "SDL_pixels.h" +#include "SDL_rect.h" +#include "SDL_surface.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_shape_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_stdinc.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_stdinc.h new file mode 100644 index 0000000..cef9b77 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_stdinc.h @@ -0,0 +1,763 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include "SDL_config.h" + +#ifdef __APPLE__ +#ifndef _DARWIN_C_SOURCE +#define _DARWIN_C_SOURCE 1 /* for memset_pattern4() */ +#endif +#endif + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef HAVE_STDIO_H +#include <stdio.h> +#endif +#if defined(STDC_HEADERS) +# include <stdlib.h> +# include <stddef.h> +# include <stdarg.h> +#else +# if defined(HAVE_STDLIB_H) +# include <stdlib.h> +# elif defined(HAVE_MALLOC_H) +# include <malloc.h> +# endif +# if defined(HAVE_STDDEF_H) +# include <stddef.h> +# endif +# if defined(HAVE_STDARG_H) +# include <stdarg.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_WCHAR_H +# include <wchar.h> +#endif +#if defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#elif defined(HAVE_STDINT_H) +# include <stdint.h> +#endif +#ifdef HAVE_CTYPE_H +# include <ctype.h> +#endif +#ifdef HAVE_MATH_H +# if defined(__WINRT__) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + WinRT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# define _USE_MATH_DEFINES +# endif +# include <math.h> +#endif +#ifdef HAVE_FLOAT_H +# include <float.h> +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include <alloca.h> +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include <malloc.h> +# define alloca _alloca +# elif defined(__WATCOMC__) +# include <malloc.h> +# elif defined(__BORLANDC__) +# include <malloc.h> +# elif defined(__DMC__) +# include <stdlib.h> +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +void *alloca(size_t); +# endif +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression) +#define SDL_static_cast(type, expression) static_cast<type>(expression) +#define SDL_const_cast(type, expression) const_cast<type>(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * <stdint.h> should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#if defined(__WIN32__) +#define SDL_PRIs64 "I64d" +#elif defined(PRId64) +#define SDL_PRIs64 PRId64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#if defined(__WIN32__) +#define SDL_PRIu64 "I64u" +#elif defined(PRIu64) +#define SDL_PRIu64 PRIu64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#if defined(__WIN32__) +#define SDL_PRIx64 "I64x" +#elif defined(PRIx64) +#define SDL_PRIx64 PRIx64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#if defined(__WIN32__) +#define SDL_PRIX64 "I64X" +#elif defined(PRIX64) +#define SDL_PRIX64 PRIX64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include <sal.h> + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __printf__, fmtargnumber, 0 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __scanf__, fmtargnumber, 0 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +/* Keep C++ case alone: Some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode. */ +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__VITA__) +/* TODO: include/SDL_stdinc.h:420: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#ifdef __APPLE__ + memset_pattern4(dst, &val, dwords * 4); +#elif defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +/* strdup is not ANSI but POSIX, and its prototype might be hidden... */ +char *strdup(const char *str); + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include <stdlib.h> +#include <string.h> + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_surface.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_surface.h new file mode 100644 index 0000000..838de65 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include "SDL_stdinc.h" +#include "SDL_pixels.h" +#include "SDL_rect.h" +#include "SDL_blendmode.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_system.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_system.h new file mode 100644 index 0000000..c540e47 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_system.h @@ -0,0 +1,575 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include "SDL_stdinc.h" +#include "SDL_keyboard.h" +#include "SDL_render.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#ifdef __WIN32__ + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* __WIN32__ */ + + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * [README-ios.md](https://hg.libsdl.org/SDL/file/default/docs/README-ios.md) + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT plattform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_syswm.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_syswm.h new file mode 100644 index 0000000..45f8e75 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" +#include "SDL_version.h" + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include <windows.h> +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include <Inspectable.h> +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include <X11/Xlib.h> +#include <X11/Xatom.h> + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include <directfb.h> +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include <UIKit/UIKit.h> +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include "SDL_egl.h" +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include <os2.h> +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_thread.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_thread.h new file mode 100644 index 0000000..6d4fb53 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/* Thread synchronization primitives */ +#include "SDL_atomic.h" +#include "SDL_mutex.h" + +#if defined(__WIN32__) && !defined(__WINRT__) +#include <process.h> /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include <process.h> +#else +#include <stdlib.h> +#endif +#endif + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if defined(__WIN32__) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_timer.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_timer.h new file mode 100644 index 0000000..62f81d4 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_touch.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_touch.h new file mode 100644 index 0000000..9592413 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_types.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_types.h new file mode 100644 index 0000000..355fb50 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_version.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_version.h new file mode 100644 index 0000000..3df4e04 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_version.h @@ -0,0 +1,188 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 0 +#define SDL_PATCHLEVEL 22 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_video.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_video.h new file mode 100644 index 0000000..c62e089 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_video.h @@ -0,0 +1,2089 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include "SDL_stdinc.h" +#include "SDL_pixels.h" +#include "SDL_rect.h" +#include "SDL_surface.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear: + * + * https://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt + * + * and for some Windows drivers with WGL_EXT_swap_control_tear: + * + * https://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/SDL_vulkan.h b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_vulkan.h new file mode 100644 index 0000000..a506ef4 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/SDL_vulkan.h @@ -0,0 +1,219 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +/* Make sure to undef to avoid issues in case of later vulkan include */ +#undef VK_DEFINE_HANDLE +#undef VK_DEFINE_NON_DISPATCHABLE_HANDLE + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_vulkan_h_ */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/begin_code.h b/MacOSX/SDL2.framework/Versions/A/Headers/begin_code.h new file mode 100644 index 0000000..873d7ea --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef _begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define _begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) && !defined(__SUNPRO_C) && !defined(__SUNPRO_CC) +#define _HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define _HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if _HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* _HAS_FALLTHROUGH */ +#undef _HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/MacOSX/SDL2.framework/Versions/A/Headers/close_code.h b/MacOSX/SDL2.framework/Versions/A/Headers/close_code.h new file mode 100644 index 0000000..dc73432 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Headers/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef _begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef _begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/MacOSX/SDL2.framework/Versions/A/Resources/Info.plist b/MacOSX/SDL2.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..fbd71c5 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>BuildMachineOSBuild</key> + <string>21E258</string> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>SDL2</string> + <key>CFBundleGetInfoString</key> + <string>http://www.libsdl.org</string> + <key>CFBundleIdentifier</key> + <string>org.libsdl.SDL2</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>Simple DirectMedia Layer</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>2.0.22</string> + <key>CFBundleSignature</key> + <string>SDLX</string> + <key>CFBundleSupportedPlatforms</key> + <array> + <string>MacOSX</string> + </array> + <key>CFBundleVersion</key> + <string>2.0.22</string> + <key>DTCompiler</key> + <string>com.apple.compilers.llvm.clang.1_0</string> + <key>DTPlatformBuild</key> + <string>13E500a</string> + <key>DTPlatformName</key> + <string>macosx</string> + <key>DTPlatformVersion</key> + <string>12.3</string> + <key>DTSDKBuild</key> + <string>21E226</string> + <key>DTSDKName</key> + <string>macosx12.3</string> + <key>DTXcode</key> + <string>1331</string> + <key>DTXcodeBuild</key> + <string>13E500a</string> + <key>LSMinimumSystemVersion</key> + <string>10.6</string> +</dict> +</plist> diff --git a/MacOSX/SDL2.framework/Versions/A/Resources/License.txt b/MacOSX/SDL2.framework/Versions/A/Resources/License.txt new file mode 100644 index 0000000..d2785a6 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Resources/License.txt @@ -0,0 +1,19 @@ + +Simple DirectMedia Layer +Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org> + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/MacOSX/SDL2.framework/Versions/A/Resources/ReadMe.txt b/MacOSX/SDL2.framework/Versions/A/Resources/ReadMe.txt new file mode 100644 index 0000000..40ac3a1 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/A/Resources/ReadMe.txt @@ -0,0 +1,32 @@ +The Simple DirectMedia Layer (SDL for short) is a cross-platform +library designed to make it easy to write multi-media software, +such as games and emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://zlib.net/zlib_license.html + + +This packages contains the SDL framework for OS X. +Conforming with Apple guidelines, this framework +contains both the SDL runtime component and development header files. + + +To Install: +Copy the SDL2.framework to /Library/Frameworks + +You may alternatively install it in <Your home directory>/Library/Frameworks +if your access privileges are not high enough. + + +Additional References: + + - Screencast tutorials for getting started with OpenSceneGraph/Mac OS X are + available at: + http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials/MacOSXTips + Though these are OpenSceneGraph centric, the same exact concepts apply to + SDL, thus the videos are recommended for everybody getting started with + developing on Mac OS X. (You can skim over the PlugIns stuff since SDL + doesn't have any PlugIns to worry about.) diff --git a/MacOSX/SDL2.framework/Versions/A/Resources/default.metallib b/MacOSX/SDL2.framework/Versions/A/Resources/default.metallib new file mode 100644 index 0000000000000000000000000000000000000000..0aba653abab6dc3afed05f3837bcc1783cf27e0e GIT binary patch literal 21952 zcmeHP3s_S}+CI6E1PHkx)kG4Sa5EN*Ay6)YHX(qh(MF|SR;Y<wT@@lwZnoRpNCF#e zxK&WQ1#fGuBB-rkbvGf1NTUL4Ek%AdD5Yq%MQg3L{r~<mNl;LG-FA1MN6rK1%sFQ= z^Ua*enfHCaZ?Z5!6pfOj5j0}oj4#@cD;($b7<<A6Yd>yrT(5SVhda(Y9p@ur`vp8W zXu$s>!NOQ7vNT4tdTG}BwJEFfQnPbY3y_4B;#d@d#0!?jvydZ6?B{4J?|h}gg&YkV zw5)1bab$n>ckcyR=1lE(Q%CH7AucX~=BVe<!?M^VO9==Hf&VCEVa(D$5D=rQJzwmi zn1o`76%?Bl!Yo<gV~sep@<`|UJ2SuZ@O-^n8@YQ`P~G{D?i6P#6(c>ZuEXmrb|ap3 z)K736M=N@q5uIa<&^e5lG^Q)kvZd)8QZsWMoq@7<#%t4w#OVCed66UQ=*JHHHIoro z?#ZV%e)z)CMc2Y-KKr%Zjx<O86vxpp#h!Sa9f-629_$P)NWw?r{-84+Z^rdx{RS`N z+~wOw<Rs6xPNesS*0lUHdiuF9uf8c>eB@HO-Hc2}^`lS6z_MR>oEb6~`#osJ_>r;l z#bv7>Z^gc;)g|AM?;U*pV9*C{gL2u{ykh2X^a;%LOZ#uW^uO!o*saKOSmCG~K>~i* ziV@-iE5>)mqGdt6A21_7{gnQnWvjp0-FwKtqTs^PHq@fa{W<?L7<9T}GN(u{wwv)M zhZ!8laU|@A&5-|y8N8q$Fys6&?izf;YlItL$A%~8YYio6w{^E&-evaE);oREHMzxZ z2JBn7aqS007GqC5?wO1=0}kzFf`o*pz`H<}m9sW?Z5DXE^5m@bS=k6m4sNZ)f?HS| ze1H*-%q#@+xXj=yo}87Hor0ikpK}7ausAIIApGL|p2vRU6x-L%1Jtt{q`n7Rw9wek z1|2>GUUIHVmhD~V4({U>K4pS->^vNW7g3H<6aAbBbT90m*T_9$(b46u(Yq-;k8lEQ zo(nI=H{Qj-_Gw)rC(_y3zWDZd>Y9DE`}l1m;3bAE2E$(kj-Ks)cVT@fgS?cc%{Sl+ zIogf2_`G&)s6m^*51-G{X0x=RENyOsHW#EbRE0WxVXZcli!aDf<q_~je7up-qF@fy zF%TuATk6#!VD!{6dgWd%Y-UfLTN|6v1MZ@@TA4&!$id4c+U#m=VFsqapv|UfbE`p_ zm>jtl6qSuwKxU~|2a44<!0a_L2HA{WP!!_T&t~>1ygCG4y|s)UHnSI1i!a=#%|>wf z1<;a0f;Nw%4V7#2<MH{m+H8Y1l!MQU*XCtl@(b|!85nR^#>LBJ+WZVvt_+`3J<fi) z*I?afrF`bKI;OSGZJ5nyRWLiGUPulBp9hRY2(T`hRwjeS1A{{|w6a=!E;20ex(3?b z!tAee8)7rhnV204Mlb(qU~RwD3$y~1*2`uLqnJpML0bfR0GfdTX_*{f01OU)xTrN= zp!PN?6Eu8qfH_>pXj6FggSPV-*Gvpc9b?c|(QQy^6rw8v_7Lznp!s8-$Y_hMfzAY( z2bdNGw4`T%*`j#RqEK23GK2rFiAIp1o&jTF9vBmFPMxIT+g^?(ECgYIbDnp+Gb^PS zTj9N14R%-5bp{W2QK{Zly<0@#2P0+zR-&aCxk|)WP+hVO51UED7s*t49DEVzy-v(* zTVEB%<6q&U=rJ7i5*<}v7fj*KMR3z=hX{Nrg-y{=390r8dD3B7Jif32Gb=*{y9f*z zIMTEm3$%qsZMYm0rc;H>FyTEi&rdpWBVe%d@kJ7Rt}U^_Kmx<J0Q`00uFCO6wm*1L zf-j=r^J?)R0ZwyR_#!SoyA}@;;B;IGlJR#X58Wk?D@sDn=8q{#LLOJLgq#ZuxNn<; zJia1wq0OpnkcWZ?`wbHEMiw;w!M+oBhk`F;;fq-KmqBLR9%RcF!?rxwgKT2>siHA^ zSQ>)Q=EK5eEZ9Hx(+yS<tOAq<dVs4IAOMEItsM<s3~<8Zc~w*BRFOgN>_4{+D_r8o zMT_OASTQSAOmGsc$I36RKnH_-g<zBng5y+-h_ZG1PCv>!yyoVkVaM2-XkX(_akHn; zwc^`t3;q${xrQU~=HRce2&63siMtQ#1NCmL^`gwc8)w~8{Bbz{wmoriIP4yH<LrS0 zsiT+tQ*{Q4kmx6-#7epn;-<8PV&{?k#OPS-<Tw03<=wf6+uF8lD0<n@9siF)zm9z) zbc%o5ve1}#_iX9f?7-x#4YIZCQv=haIk~GhNOLn*r)EmmtWOoHQ>1kDo-@t*lkb}L zG*&fNpDBK~s^r6(nyNFe)>L(Eu6wm?&)MRV#ws^zxkj{N+YZ;hONmpHdbfM-Y6ywg z%56R}^LSL#;hD!8-s4S8Tc0J(4M}O~9!zW*JomT0mfjAX@#NV(U3*S8yDcuCrYPr> zm6t3ArTjUmhLJ??|7aDHnaE@wJi<H1Yvvy3@hZ19hP@XS;T^ec<`Iv{wz*4Ky?g!v z?EIZE^8;tWrpU6^X6CNWSzDAk!_w2=GF)vuxu>~n;hw8ipo$p^_h-w>H|Wa5&Tq)n z(2(mLgToyof9vkEUK{2VgO)a&+*}L|dUa28S=B&SWI#?ph3l>WAK|@kTozP(t4wzF z3=nQg_6ex?_M7>2(zZL3<E90xm#AA8%!w5%u|#){vnpo(UUsFs?@PC)E8Kl02L8Ot z_%pG7GZvnUJ#fx)K(yrr*u)iY)~u}Q`zUeSOY}0(S5uk~b9r&F1=8&F)wzYTR9hoX zjP};>Eo;Z$T6((A_5E$A`*w$}y76RjSC_R*tf<(uG{AG$f=xM|Xq-!#L9hhZVR*%* z4qHO^O|K<7Pvyj-{ni@dOQv$`DqM562XCra2XdB<<}7_Ar?V$f;2sp;##*V`?WUm- z47nwqBZcd77N|Du3dq@op@YGCCAjJ$?({Mo@91H4w4aAZNKE`?iLT5j@WzXHt?@&w z8jL@k+K7ql5k@u%B2Qo<E?^=nRi4$DNVPe_V)kIu;yBlhq&uCYOap09O!}NpUaDNv z>Q1`KB4<j-pRmYZ8c1JQNlVem*r#k4jido9=~FRzKt}px#PyDtbc;*AIzsxK>&K51 z4H!tbthg&9q#FqNsu5=R0wLeFmGC7uRZL4)k16@Km~@xxR{*#V{9bMX-^*ZvoY6YK zNb^9=)(OMaW_`3AUswQUzm3EpgnWZSx-BOK6QjLaOw4n2j5My3Et|^If|=beoUO;q zwiM{WY`KYmFN_EC9(bc;@(Q#vmX>azlCB#_16*<@mki7s5tD)`t;~Kfd$XA>Qm-^_ zN#qGtWT!CVC?@KJDoTxsw2XM<N${I8@L?I?b&d~{Yh_>pl;FV>k$2Y#6q_&Ct_JUT znhhOPD`tESI>Ac%%1FA-#jI(Elb(I*WAsTG9gfKvchMk>XctCQ+xAW7@JeC04m=U_ zOi<}}%1H2Z8qCDgYqhc!+H9FBHv>*4xd3$3YU$^el0Qetx5T7D1L+E%JisDd2d!Xn zn0+PyVZ6H841hTLtPC&%UqgAN(H4g{2xsk3MOwtZj)q9I09+JQFBaW4kYNva{n4vK z${1!d`%TP0p#Y{}SlG-FDK4Q{6>c#{HV9{f4*9MnYET%d1E*&FDHm;FwKgBv17H*f zpIxm;yh0&?@$-q8^d;BF)GYw>{}eE3_X7jOE5moIqM8&D7gUkp(d;%yHkoJcP(_^( z&NiB(kc}(^fwLzLX-v9z<eZZDT5QaujVMG4t|x%&ldysrka$6$IoRf{k<!|{u>wk) zw~|GOLv&Sqx(8}A9dQpvJkk(?o+@V%E<X+OUZINAu^yE-b?M#yE*&hhgzJyJMSs0I z@K9YXk;j;y63u$r)#a{!uB4B~_ox)$hMGl$!Q@!vt(&?)VyAH@$Q6^24sr#cK`ym| zeiSuVKu;kYKChfVM@2OI<0gx4HL~UBS*n2=g;Uup>j~E2c7s|mb;U^gX$>;x3N@1p z=5ZV-Tw^5m7|}t7^DMI*mnA{b+S3hnVoXFsZ3Vbw!o4g}_`fC4%$8$jHOv6Hgip7d znAMZoPnV<SOy-U>vJ|g75nh?Wu?Am~<5Ap86hk!FSrrBWA95SWIag^|wW?>$lupwd z1B7A82S#jeL#hrvtB1D&#avHsW7UE$*hAY`{C@Ny{C;f$zfa)z-wnT`Q8xVU@-O3e zuAYVD5d=RMzpo)u)j_#9^bo<wa=O4kafsg77B0F@Z~JCU;P?MB{4U1&AWk$fAyv$J z7{6ZwPwY|r?)^CY?({F<_tbItJ@pB~?`i3&nW@>*+|(3K_^8AblLu70=^-{KpQ7um z8rXdD<e4%zY56l}+&NwD(?8bGoU0_xb2$KApQ;yasV9CBaMrDU%a$dOj9j|3f(FRQ zrRCc^SJJ&sKHw3D4mE@{&kTRBp^<kqEc7t1`Ou+Cb|nu&c9jjXm%I^wCPckN31GdS z9oCn)PjA+UOAQ5Q{z{l{kPFa$fAIG6tb)+JaaQmVUc?*--q*aGmX?}rgYGd9x({}= zw9_E3P@j48)vixWRj-}}ROBY05;@Klk>Bq8Ko#(<OY(xq92@)dSp)gRT-98m)1uE8 z9$c>nv~L4}#)*r@&7*T-ZcSIZ`=%LoD58BcY8lRzy9M5Ue>AEW1zI+oyS}g<=8PT9 zsd*&ldTz|T78X^NLM(qSzE`4CAoI31q24+cdMu<V>^LuMmLcdUH)77xwHsvXQ(3}* z09Hb@Kp<56l0Y9be6x+dLVXIUJVH`VrA9WWW*=2~9yLcAgtHrj5dds82*Y=nqeN7t zRNX?lE+OBr;;!;ZpIAw^xqh6u8Fqj^7PWKZ#P*BVDWuP3q^~Fd+>`!34*I9Gdf1>p zm-Iy^X~Y0==idQ_=G$>Uc`2@VV;tu}$$auBa=;>hFgt<kpI}@+(vWm7=bY+)pQ0{o zbwX^oehGMYkK%fWT_48vc2wU?MWzNLzG(=@0`gp;F35#=o{-*Q!}DU64bL0u>uq@6 z`97Xc++oM_ZH=RNo)AbpXUFrC?&Ep6g5F@q^9^ThcwRO60iN%wdVuHUf(Lkh15j-3 zc)k`e1UsIW;W8a~K3)}W$McQ2TnC;9VxI%g8x=o|=MBo=5YJx++Sph<KK$q6d5T?+ zSO2gcPk305SAgg9K#xZz^myO|c%t-piV|4?#sJjep^s*gnvXyYo&?f7Z-PyOp9D4d zNuwIP4ruUd5yjW0!9xt6N^st$kVl}o@hDGN1Tule|D9NzJx)u9vO3VxiDR_%!|pT` zM;Xl_9B;&?!RG_#^ljkyC<YJmFiOX1=rjSFhW#}dTnsdHAFhjV6oXGE`Eb#~AIIRF zpVH9R{A>-qRAW=W6KgzyG(07#x^E?&`GZ2b&~Q0Ojece)JDR;1;>n;2*T{81pZ#`z zj_RFV$$86$mibSKTOOxTV!jUD8n^Y%P+ZEiFH_%$hDvnm0n26pm!T5vnpo4vNc@<V zv@MD57X02Z?kqZQREN%#Zb*%>_78OrclY;c;x%G%?29W-y~uZ3mQoz|*#XNzQJ}tF zPu!Dsee;clTiUk_eK4c=RFCJS?R}Ip1eg6*mv@?6_UTFw3~MN-mK6wzXwKftp8rj< zFm{q%a3<XX@UznaSAjp<G2SM$;U`ZU29OcKu|~CFDhekInFPm!l;!aGVg)#O4!5y- zrWiN`$Ks!|pNoHfMLa?YsN2)xh)0kh&iiy53-E<7OaS;$wXbAg3JbJFGJH0W$}=$8 z@%T;gAgv9p))pA>MdN((_u~lK*~}rkv%u!k?^ZB-B`{h6L>WAA?1Sh4pu>j(=Lm>> zhzCImc3(R1bUX-cu(|gw0<V@jCh(|R2bkR^=$Qwu_znfLyKdCCFR}UdbAW3Dx;Zcf z1zO-h0os0HhAJDl9x`AALB32I3VhnYX>X4y03iU}ABicrQ0LW)@`CXcw!n%pkrcMN z@(K9-9}Z`bcy$jj`sx_%b#5SD0QfS7>f9`#v|1Pl&^a1LVGC^lAr%CCfgBjD%^8jC z7>y$sQh2pU85cprK~Mt-!~kxN0VZgBYn_+H#DH-bpd!K39VjD4z7N_X<HF`Y8YQvQ z3&e?l%>5?DFt9`ceMZCgV?!h=HpPfe@YL5KlWTkB6gcpnM~E!chqzq?xzoN-ng#?c zI6-^_UuG~)!Jil-g<}@tq@Rpch`EoG=FVFh<6QCm3$4#Brrx|{ett6*Q4xf)vXIzH z?!CWbx#y!}z7L5*h~6I2LD2*yZB`D}#6Z!AK7{!KbddK!tj-O)TRs&vfv^5Eu?n=7 z5WXX9Aw>b7zXNMM61RXY7E@CBSu+%LJJ$LD<b4!tMTZ+z<FFP->BIR|dZ!g&tynSf zzTUZ!6f4I5gx)Fp39N-p|Jhh;$1lQKlusAq@Yy@rN}n=kfVC8xwl9D#_g(HVx?<T- z+;ac9)1d@;<Ay7U)*#gb>F#X39!5kgsP6lC>#7y2=+vfT%^}BO(1(E+Ub!^l4NOE? zP6TZaR1kxk8;-ok3p;)&B&=!HtUo*uLZ7n*ImG0J02TBVC@5Mx28XO2ZNuHyJ67mV zHl94=R_0;q+Hv-6#yQ1~_U0X1K3-X~swR<^M5nuuKnz9CrR@xQ*_)QFD_tDm&U;i_ z75Wy-LO#uTMhgOQh&w)T#sosx2kz#+oSj+;E9>cRYk|lQ#7DGujO>GvAeQ2HO^sF5 zT><7@?^Fa-u&)FqZ*tw0jH+>6r%Dd^a)7^F6Q*85N+&XSVqC1O!>C{c%K|?oHa+<8 znVZ$N%oWMpu$Uz-)7<P?S##ZXe6Ui*F0F|8iw}-8HGDm{m5-!n_ex?~9fIPG5fCas z1}b2tgalN>Pr2l!Y6-2b!4YOK3;4L3FtbI@rPKv>7x3&#Rg^_I3wYQ?&U$Ks?IJ2t zt%}?soDJd-fcv`#IK<6SHXm^%LJuky&T3bA>dleB9lzV|AIC&>+DfpPD+SUWRFT8E z+z#|kAqZ)R>@-&z-N1KcLUVjFHAff+hNA$y2sOu8EREPDn%sbjA6$TZIivM?>PIoL zty$zh6;C+^28onqj~g4+BH`S8G!Ef>Xe1yCDuVdnN+~gM8;NSl3Pbxecz66Z7H?hv zj`*>7lLxZ@Uh%JRUBCq1d^m>niN%`|3cdjWNYfDyjr<X_<~ukP5w08yFsTp3q!Jdo z0eK3HoBJ44$EWF>1wm3S2@5eOj9~xKc-eyc7}QL_$P6~XdHCBrwUvnVZlfhr6qGIH zdv)&q-@m0>x6}LbG3{$peGnW~Zw*;n%8}mszNE?j8Sg)Bx~t%z8|=3XR&U#_*PJDP zDc1epT0KIG5v!GIN=(FBY5<0&>I2BtLdBX1=!9~^8}h|*{3EP^8Prs40v^2tA^8wH zS<x&DRo=pCVL=c6gl72f)C|{-YKF9ys8LKylyX=glnZVe?qrHxx<OX5?D1PbQ}h_4 zDJo%nE-Mzq=F$Mx6$2T|<rKfbhIsAsw+HGmm=~9uh~O5FjnU<|`tb?BMqiXsg+!g) zW8bL0*i6#N3HyFrUu^mb%&T7avoUY|FT%Wr&lIJu$9J+@{C)$>OG!w)@M6+Mr=+fz zlYRrt%evfMe`9~(=gRuw<MqD?^A0y1{p|hye}2E#m016o3+9;zUV9t9ZoOu)bPU>J zY#$R3OoiaTEWp*r=P3yM=T2K57WZ}RR{ZiiRYPfa;>`LR&+0QZZQE-;PNXy4-fld` z3l5$-H#sXcEiFXd*56^VXlhXjd|X0ehHMWi#h!Q@)oM>1L|w2a8d2j^-$TtICwVW8 zYO=Q2VCnj`>6x}L1JU9A2Xq~6{p}qYhN{gc%c|Vin2hE&t2c(z+<|zrF7s5M5$i*n z`jGkcVRF6eajW%seYh18m+0l1xyz?5kFyEFfd|~S9Ml8e;Fa`dVhxf0I{nfr8q>8s zafK&iRSntsIPb&(wud?~M^*(|&>D-MlKY|Q<)l3R>-EIf>lf9FG}i+}ivnl7ej0Yd z7N-<jfflV(68)vB4=FC$^$|@rdv>Z^kB<NwqHH$srocF2|I^8~?4m8EK8kZu{cMo+ z8P;WG;GCxVcgULX<#~l$X^Gjg|1s^sZ+)5=G}XGT{(0JezmN>I#0g&TWby*IM$Mms zL)`DV8>3urjtXex7^?i<Q!n+s=M(~Nse<o)nAG>4+xmyHsa6l1+Te+_=6y2r{V!I> z$W4^9FlJfGLJ+v_aFjm)3V<A)i*U{dc_f8hM6l>HRHW1g!KNdei%4+<A&7zrBB<yH z2%={Zly}20Tr}Vq9Tc_cA2D%CtcoZw>1i{Bd|YR6G3qeKOp9jWa){vE2loMGhsk$k zYD4(uAPuF`#4u9~CTY=hj*6%d(y7Mu6AE*W6@3!M8cRCjh%W4El{YPmpgQLk*tr0P zEpxM4Ybod`vGOJ^n4$`6;?HzSHL!=<B;c}gPJuE4$6aw-vV|Rf7wl-ajp%U03-^U} z&@Q-*<vWsx_|8+mBj0%))IGs>Y9Cs&_XP7DoQ>~<%b~K~2B{8Njum?vuD~Q-j`D?k z2L<!^P(dCW=YikXNu_}EtcjM0Xe3_%Ep6KSG;sV;-jnfbdC#NdhHob~)5@L!<fexq zfXfKYgqEcSS-GqeRf<7PAJI@X>0nKvZE2yD5;wtV{=I7oS3cl0_jP)r)OVEA9Om2B zp*+N6iXO*fa>wu(;^TNsTe1lGYMgc-W%iBwRcj5oRG~h-pj<o3V`{df7ihFU&SR>7 zipQ+|**s?NFXJ&+3w6%h0FUwg4R}naP;?<-;YIAiuH1#c0gw5Mw0rM{{r;KCy&1>% z{t_Ou`*iiutK0XNY_D}D?p^nv;4vm))G47TgS*GH)Sh_Tbi|%GXfoRq|00i3&8=yZ zc&qR=9aj2Zq&(GC;@;5eKC57FSV5`tHml_L-e1dOF64-ExK*G9<{12>kPl6{3-gT1 zdg7suKN7wQ`3FOkIzl|p?J{8(zRXRU<Rycw&+g!;xDw<bERsy!?eGdOkd<<tEBJ?( z=%ZG=aL4rRC*~3TBdR}_bg14YYiO?Ag%wZhbzoip^*Ux>Ewf+2xCR!>o1jCtWq>gx zEu|2BM%Vj6Cp{jl%AYO>TH~zEHQ>V<;0k@Pq!2j5rz?V#F1CvjxUxQHpH>#G&A#ij z3AoIwwYgyNeziNxXD?h2E>nR8;CaA54SeT!i}U69B3lWC)jW<qSZOcW_EP{k!1WHC z?$z$!f%nA(PkAzV3iMq~?nL4T$>#=_=Wo2^|5)e6284R4>ic^a@7yONQWjV@3qCu_ zMPTe@?p$Qwmgf*m&}lxgpMe=DOm^e54DSHfMo}<=1w_RnFrerL1<is`Xg-L5()xF* z9Qd0dC(#RTi%Jv(J15}?#keI2&+4LyJnZS<b}qInDGzcFle>+3NZ-F`MZXWZ2XYv4 z4;|zl2&UdGu))SX_HTgPBNA{A4Ud2cYcd8x?$K$qagW)6duTGxs3J7h9<Y<NV_f_B zbAT0(Ze#h!`iJ-jZGwMH#P|Gr;(H{N3H~whn<l@@Z<<W-kNdxMGQmH7LF~{3|Crz( z6Z~W1w^;u5-(vYi{G<1)ar`3`K=x7o0e`b)EdTf?19S6L$Ui8I1q3AfIWC%?g_Bze zNC_Qr$)Ti4aA|xTU?pt?J_UO-3o8N62gpMzO&%|HltCUcpr>(!GTepSpfiw%XoK4+ zoNg9|D*o%od%%yiV2P<Q;Ky5VFXX6PuP+hf=t_=f5JxR1l}b)XiF3jotfS!sRTWLR r#dmJ=?35EPJ9vx4Qw1-7XLTN;ohT*`(UfMmQ;=sEF!xeMnaKYG1&Dyt literal 0 HcmV?d00001 diff --git a/MacOSX/SDL2.framework/Versions/A/SDL2 b/MacOSX/SDL2.framework/Versions/A/SDL2 new file mode 100755 index 0000000000000000000000000000000000000000..af28f4b753fd44da581bc2bcc1868e093efb3e3b GIT binary patch literal 4649424 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%0DKaG^TIzQKzyO`>AMS#8$_(eK@u8m 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�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¥?2a5ip>RJv0=g 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¹KTcGx8hxt@IxZquFv-P= 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%0DFvAZ%MeHj9qW{D?9X%rBGPsuU98<CfGS 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%0AFLQ4{%iwNJ`9$Su^hqrHs{4W=Of-CsBU|%U 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�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%0ARRCZ2D3*l%ZDW_d& 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%0A*>%j;8TfuYCQD3 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≪2evIkN*lYwBcqkPe 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�FOAIO#jhs(-0cy3|e=(#!`s*RS%E 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%0AZ}M@}jp*<C@ZwX>diEWT*764}P5!kW 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 PR>}A0F*6GX4wjvl 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�|s&I6o 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%0DcG3JQQPD1VrARKC`gF1eYF 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 literal 0 HcmV?d00001 diff --git a/MacOSX/SDL2.framework/Versions/Current b/MacOSX/SDL2.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/MacOSX/SDL2.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/MacOSX/SDLApplication.h b/MacOSX/SDLApplication.h new file mode 100644 index 0000000..6dfc605 --- /dev/null +++ b/MacOSX/SDLApplication.h @@ -0,0 +1,29 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import <Cocoa/Cocoa.h> + +#if !defined(USE_SDL2) +@interface SDLApplication : NSApplication { + +} + +@end +#endif diff --git a/MacOSX/SDLApplication.m b/MacOSX/SDLApplication.m new file mode 100644 index 0000000..c316bda --- /dev/null +++ b/MacOSX/SDLApplication.m @@ -0,0 +1,44 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import "SDLApplication.h" + +// ericw -- with SDL2, this is unneeded and clashes; it has an SDLApplication class internally which does the same thing +#if !defined(USE_SDL2) + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#import <SDL/SDL.h> +#else +#import "SDL.h" +#endif + +@implementation SDLApplication +- (void)terminate:(id)sender +{ + /* Post a SDL_QUIT event */ + SDL_Event event; + event.type = SDL_QUIT; + SDL_PushEvent(&event); + + [super terminate:sender]; +} +@end + +#endif diff --git a/MacOSX/SDLMain.h b/MacOSX/SDLMain.h new file mode 100644 index 0000000..7493210 --- /dev/null +++ b/MacOSX/SDLMain.h @@ -0,0 +1,16 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser <dwaliss1@purdue.edu> + Non-NIB-Code & other changes: Max Horn <max@quendi.de> + + Feel free to customize this file to suit your needs +*/ + +#import <Cocoa/Cocoa.h> + +extern int gArgc; +extern char **gArgv; +extern BOOL gFinderLaunch; +extern BOOL gCalledAppMainline; + +@interface SDLMain : NSObject +@end diff --git a/MacOSX/SDLMain.m b/MacOSX/SDLMain.m new file mode 100644 index 0000000..a48066a --- /dev/null +++ b/MacOSX/SDLMain.m @@ -0,0 +1,113 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser <dwaliss1@purdue.edu> + Non-NIB-Code & other changes: Max Horn <max@quendi.de> + + Feel free to customize this file to suit your needs +*/ + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#import <SDL2/SDL.h> +#else +#import <SDL/SDL.h> +#endif +#else +#import "SDL.h" +#endif +#import "SDLMain.h" +#import <sys/param.h> /* for MAXPATHLEN */ +#import <unistd.h> +#import "SDLApplication.h" + +int gArgc; +char **gArgv; +BOOL gFinderLaunch; +BOOL gCalledAppMainline = FALSE; + +/* The main class of the application, the application's delegate */ +@implementation SDLMain + +/* Set the working directory to the .app's parent directory */ +- (void) setupWorkingDirectory:(BOOL)shouldChdir +{ + if (shouldChdir) + { + char parentdir[MAXPATHLEN]; + CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); + CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); + if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { + assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ + } + CFRelease(url); + CFRelease(url2); + } + +} + +/* Called when the internal event loop has just started running */ +- (void) applicationDidFinishLaunching: (NSNotification *) note +{ + int status; + + /* Set the working directory to the .app's parent directory */ + [self setupWorkingDirectory:gFinderLaunch]; + + /* Hand off to main application code */ + gCalledAppMainline = TRUE; + status = SDL_main (gArgc, gArgv); + + /* We're done, thank you for playing */ + exit(status); +} +@end + + +#ifdef main +# undef main +#endif + + +static int IsRootCwd() +{ + char buf[MAXPATHLEN]; + char *cwd = getcwd(buf, sizeof (buf)); + return (cwd && (strcmp(cwd, "/") == 0)); +} + +static int IsFinderLaunch(const int argc, char **argv) +{ + /* -psn_XXX is passed if we are launched from Finder, SOMETIMES */ + if ( (argc >= 2) && (strncmp(argv[1], "-psn", 4) == 0) ) { + return 1; + } else if ((argc == 1) && IsRootCwd()) { + /* we might still be launched from the Finder; on 10.9+, you might not + get the -psn command line anymore. If there's no + command line, and if our current working directory is "/", it + might as well be a Finder launch. */ + return 1; + } + return 0; /* not a Finder launch. */ +} + +/* Main entry point to executable - should *not* be SDL_main! */ +int main (int argc, char **argv) +{ + /* Copy the arguments into a global variable */ + if (IsFinderLaunch(argc, argv)) { + gArgv = (char **) SDL_malloc(sizeof (char *) * 2); + gArgv[0] = argv[0]; + gArgv[1] = NULL; + gArgc = 1; + gFinderLaunch = YES; + } else { + int i; + gArgc = argc; + gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); + for (i = 0; i <= argc; i++) + gArgv[i] = argv[i]; + gFinderLaunch = NO; + } + + NSApplicationMain (argc, (const char**) argv); + return 0; +} diff --git a/MacOSX/ScreenInfo.h b/MacOSX/ScreenInfo.h new file mode 100644 index 0000000..fdb2abb --- /dev/null +++ b/MacOSX/ScreenInfo.h @@ -0,0 +1,38 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import <Cocoa/Cocoa.h> + + +@interface ScreenInfo : NSObject { + int width; + int height; + int bpp; + NSString *description; +} + +- (id)initWithWidth:(int)w height:(int)h bpp:(int)b; + +- (int)width; +- (int)height; +- (int)bpp; +- (NSString *)description; + +@end diff --git a/MacOSX/ScreenInfo.m b/MacOSX/ScreenInfo.m new file mode 100644 index 0000000..783e8a8 --- /dev/null +++ b/MacOSX/ScreenInfo.m @@ -0,0 +1,61 @@ +/* +Copyright (C) 2007-2008 Kristian Duske + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#import "ScreenInfo.h" + + +@implementation ScreenInfo + +- (id)initWithWidth:(int)w height:(int)h bpp:(int)b { + + self = [super init]; + if (!self) + return nil; + + width = w; + height = h; + bpp = b; + + description = [NSString stringWithFormat:@"%d x %d %d Bit", width, height, bpp]; + + return self; +} + +- (int)width { + + return width; +} + +- (int)height { + + return height; +} + +- (int)bpp { + + return bpp; +} + +- (NSString *)description { + + return description; +} + +@end diff --git a/MacOSX/codecs/include/FLAC/callback.h b/MacOSX/codecs/include/FLAC/callback.h new file mode 100644 index 0000000..71bbaec --- /dev/null +++ b/MacOSX/codecs/include/FLAC/callback.h @@ -0,0 +1,185 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2004-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__CALLBACK_H +#define FLAC__CALLBACK_H + +#include "ordinals.h" +#include <stdlib.h> /* for size_t */ + +/** \file include/FLAC/callback.h + * + * \brief + * This module defines the structures for describing I/O callbacks + * to the other FLAC interfaces. + * + * See the detailed documentation for callbacks in the + * \link flac_callbacks callbacks \endlink module. + */ + +/** \defgroup flac_callbacks FLAC/callback.h: I/O callback structures + * \ingroup flac + * + * \brief + * This module defines the structures for describing I/O callbacks + * to the other FLAC interfaces. + * + * The purpose of the I/O callback functions is to create a common way + * for the metadata interfaces to handle I/O. + * + * Originally the metadata interfaces required filenames as the way of + * specifying FLAC files to operate on. This is problematic in some + * environments so there is an additional option to specify a set of + * callbacks for doing I/O on the FLAC file, instead of the filename. + * + * In addition to the callbacks, a FLAC__IOHandle type is defined as an + * opaque structure for a data source. + * + * The callback function prototypes are similar (but not identical) to the + * stdio functions fread, fwrite, fseek, ftell, feof, and fclose. If you use + * stdio streams to implement the callbacks, you can pass fread, fwrite, and + * fclose anywhere a FLAC__IOCallback_Read, FLAC__IOCallback_Write, or + * FLAC__IOCallback_Close is required, and a FILE* anywhere a FLAC__IOHandle + * is required. \warning You generally CANNOT directly use fseek or ftell + * for FLAC__IOCallback_Seek or FLAC__IOCallback_Tell since on most systems + * these use 32-bit offsets and FLAC requires 64-bit offsets to deal with + * large files. You will have to find an equivalent function (e.g. ftello), + * or write a wrapper. The same is true for feof() since this is usually + * implemented as a macro, not as a function whose address can be taken. + * + * \{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the opaque handle type used by the callbacks. Typically + * this is a \c FILE* or address of a file descriptor. + */ +typedef void* FLAC__IOHandle; + +/** Signature for the read callback. + * The signature and semantics match POSIX fread() implementations + * and can generally be used interchangeably. + * + * \param ptr The address of the read buffer. + * \param size The size of the records to be read. + * \param nmemb The number of records to be read. + * \param handle The handle to the data source. + * \retval size_t + * The number of records read. + */ +typedef size_t (*FLAC__IOCallback_Read) (void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle); + +/** Signature for the write callback. + * The signature and semantics match POSIX fwrite() implementations + * and can generally be used interchangeably. + * + * \param ptr The address of the write buffer. + * \param size The size of the records to be written. + * \param nmemb The number of records to be written. + * \param handle The handle to the data source. + * \retval size_t + * The number of records written. + */ +typedef size_t (*FLAC__IOCallback_Write) (const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle); + +/** Signature for the seek callback. + * The signature and semantics mostly match POSIX fseek() WITH ONE IMPORTANT + * EXCEPTION: the offset is a 64-bit type whereas fseek() is generally 'long' + * and 32-bits wide. + * + * \param handle The handle to the data source. + * \param offset The new position, relative to \a whence + * \param whence \c SEEK_SET, \c SEEK_CUR, or \c SEEK_END + * \retval int + * \c 0 on success, \c -1 on error. + */ +typedef int (*FLAC__IOCallback_Seek) (FLAC__IOHandle handle, FLAC__int64 offset, int whence); + +/** Signature for the tell callback. + * The signature and semantics mostly match POSIX ftell() WITH ONE IMPORTANT + * EXCEPTION: the offset is a 64-bit type whereas ftell() is generally 'long' + * and 32-bits wide. + * + * \param handle The handle to the data source. + * \retval FLAC__int64 + * The current position on success, \c -1 on error. + */ +typedef FLAC__int64 (*FLAC__IOCallback_Tell) (FLAC__IOHandle handle); + +/** Signature for the EOF callback. + * The signature and semantics mostly match POSIX feof() but WATCHOUT: + * on many systems, feof() is a macro, so in this case a wrapper function + * must be provided instead. + * + * \param handle The handle to the data source. + * \retval int + * \c 0 if not at end of file, nonzero if at end of file. + */ +typedef int (*FLAC__IOCallback_Eof) (FLAC__IOHandle handle); + +/** Signature for the close callback. + * The signature and semantics match POSIX fclose() implementations + * and can generally be used interchangeably. + * + * \param handle The handle to the data source. + * \retval int + * \c 0 on success, \c EOF on error. + */ +typedef int (*FLAC__IOCallback_Close) (FLAC__IOHandle handle); + +/** A structure for holding a set of callbacks. + * Each FLAC interface that requires a FLAC__IOCallbacks structure will + * describe which of the callbacks are required. The ones that are not + * required may be set to NULL. + * + * If the seek requirement for an interface is optional, you can signify that + * a data sorce is not seekable by setting the \a seek field to \c NULL. + */ +typedef struct { + FLAC__IOCallback_Read read; + FLAC__IOCallback_Write write; + FLAC__IOCallback_Seek seek; + FLAC__IOCallback_Tell tell; + FLAC__IOCallback_Eof eof; + FLAC__IOCallback_Close close; +} FLAC__IOCallbacks; + +/* \} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MacOSX/codecs/include/FLAC/export.h b/MacOSX/codecs/include/FLAC/export.h new file mode 100644 index 0000000..4b2418f --- /dev/null +++ b/MacOSX/codecs/include/FLAC/export.h @@ -0,0 +1,97 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__EXPORT_H +#define FLAC__EXPORT_H + +/** \file include/FLAC/export.h + * + * \brief + * This module contains #defines and symbols for exporting function + * calls, and providing version information and compiled-in features. + * + * See the \link flac_export export \endlink module. + */ + +/** \defgroup flac_export FLAC/export.h: export symbols + * \ingroup flac + * + * \brief + * This module contains #defines and symbols for exporting function + * calls, and providing version information and compiled-in features. + * + * If you are compiling with MSVC and will link to the static library + * (libFLAC.lib) you should define FLAC__NO_DLL in your project to + * make sure the symbols are exported properly. + * + * \{ + */ + +#if defined(FLAC__NO_DLL) +#define FLAC_API + +#elif defined(_WIN32) /*defined(_MSC_VER)*/ +#ifdef FLAC_API_EXPORTS +#define FLAC_API __declspec(dllexport) +#else +#define FLAC_API __declspec(dllimport) +#endif + +#elif defined(FLAC__USE_VISIBILITY_ATTR) +#define FLAC_API __attribute__ ((visibility ("default"))) + +#else +#define FLAC_API + +#endif + +/** These #defines will mirror the libtool-based library version number, see + * http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning + */ +#define FLAC_API_VERSION_CURRENT 11 +#define FLAC_API_VERSION_REVISION 0 /**< see above */ +#define FLAC_API_VERSION_AGE 3 /**< see above */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** \c 1 if the library has been compiled with support for Ogg FLAC, else \c 0. */ +extern FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC; + +#ifdef __cplusplus +} +#endif + +/* \} */ + +#endif diff --git a/MacOSX/codecs/include/FLAC/format.h b/MacOSX/codecs/include/FLAC/format.h new file mode 100644 index 0000000..e4c1c1a --- /dev/null +++ b/MacOSX/codecs/include/FLAC/format.h @@ -0,0 +1,1023 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__FORMAT_H +#define FLAC__FORMAT_H + +#include "export.h" +#include "ordinals.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file include/FLAC/format.h + * + * \brief + * This module contains structure definitions for the representation + * of FLAC format components in memory. These are the basic + * structures used by the rest of the interfaces. + * + * See the detailed documentation in the + * \link flac_format format \endlink module. + */ + +/** \defgroup flac_format FLAC/format.h: format components + * \ingroup flac + * + * \brief + * This module contains structure definitions for the representation + * of FLAC format components in memory. These are the basic + * structures used by the rest of the interfaces. + * + * First, you should be familiar with the + * <A HREF="../format.html">FLAC format</A>. Many of the values here + * follow directly from the specification. As a user of libFLAC, the + * interesting parts really are the structures that describe the frame + * header and metadata blocks. + * + * The format structures here are very primitive, designed to store + * information in an efficient way. Reading information from the + * structures is easy but creating or modifying them directly is + * more complex. For the most part, as a user of a library, editing + * is not necessary; however, for metadata blocks it is, so there are + * convenience functions provided in the \link flac_metadata metadata + * module \endlink to simplify the manipulation of metadata blocks. + * + * \note + * It's not the best convention, but symbols ending in _LEN are in bits + * and _LENGTH are in bytes. _LENGTH symbols are \#defines instead of + * global variables because they are usually used when declaring byte + * arrays and some compilers require compile-time knowledge of array + * sizes when declared on the stack. + * + * \{ + */ + + +/* + Most of the values described in this file are defined by the FLAC + format specification. There is nothing to tune here. +*/ + +/** The largest legal metadata type code. */ +#define FLAC__MAX_METADATA_TYPE_CODE (126u) + +/** The minimum block size, in samples, permitted by the format. */ +#define FLAC__MIN_BLOCK_SIZE (16u) + +/** The maximum block size, in samples, permitted by the format. */ +#define FLAC__MAX_BLOCK_SIZE (65535u) + +/** The maximum block size, in samples, permitted by the FLAC subset for + * sample rates up to 48kHz. */ +#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u) + +/** The maximum number of channels permitted by the format. */ +#define FLAC__MAX_CHANNELS (8u) + +/** The minimum sample resolution permitted by the format. */ +#define FLAC__MIN_BITS_PER_SAMPLE (4u) + +/** The maximum sample resolution permitted by the format. */ +#define FLAC__MAX_BITS_PER_SAMPLE (32u) + +/** The maximum sample resolution permitted by libFLAC. + * + * \warning + * FLAC__MAX_BITS_PER_SAMPLE is the limit of the FLAC format. However, + * the reference encoder/decoder is currently limited to 24 bits because + * of prevalent 32-bit math, so make sure and use this value when + * appropriate. + */ +#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE (24u) + +/** The maximum sample rate permitted by the format. The value is + * ((2 ^ 16) - 1) * 10; see <A HREF="../format.html">FLAC format</A> + * as to why. + */ +#define FLAC__MAX_SAMPLE_RATE (655350u) + +/** The maximum LPC order permitted by the format. */ +#define FLAC__MAX_LPC_ORDER (32u) + +/** The maximum LPC order permitted by the FLAC subset for sample rates + * up to 48kHz. */ +#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u) + +/** The minimum quantized linear predictor coefficient precision + * permitted by the format. + */ +#define FLAC__MIN_QLP_COEFF_PRECISION (5u) + +/** The maximum quantized linear predictor coefficient precision + * permitted by the format. + */ +#define FLAC__MAX_QLP_COEFF_PRECISION (15u) + +/** The maximum order of the fixed predictors permitted by the format. */ +#define FLAC__MAX_FIXED_ORDER (4u) + +/** The maximum Rice partition order permitted by the format. */ +#define FLAC__MAX_RICE_PARTITION_ORDER (15u) + +/** The maximum Rice partition order permitted by the FLAC Subset. */ +#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u) + +/** The version string of the release, stamped onto the libraries and binaries. + * + * \note + * This does not correspond to the shared library version number, which + * is used to determine binary compatibility. + */ +extern FLAC_API const char *FLAC__VERSION_STRING; + +/** The vendor string inserted by the encoder into the VORBIS_COMMENT block. + * This is a NUL-terminated ASCII string; when inserted into the + * VORBIS_COMMENT the trailing null is stripped. + */ +extern FLAC_API const char *FLAC__VENDOR_STRING; + +/** The byte string representation of the beginning of a FLAC stream. */ +extern FLAC_API const FLAC__byte FLAC__STREAM_SYNC_STRING[4]; /* = "fLaC" */ + +/** The 32-bit integer big-endian representation of the beginning of + * a FLAC stream. + */ +extern FLAC_API const unsigned FLAC__STREAM_SYNC; /* = 0x664C6143 */ + +/** The length of the FLAC signature in bits. */ +extern FLAC_API const unsigned FLAC__STREAM_SYNC_LEN; /* = 32 bits */ + +/** The length of the FLAC signature in bytes. */ +#define FLAC__STREAM_SYNC_LENGTH (4u) + + +/***************************************************************************** + * + * Subframe structures + * + *****************************************************************************/ + +/*****************************************************************************/ + +/** An enumeration of the available entropy coding methods. */ +typedef enum { + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0, + /**< Residual is coded by partitioning into contexts, each with it's own + * 4-bit Rice parameter. */ + + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1 + /**< Residual is coded by partitioning into contexts, each with it's own + * 5-bit Rice parameter. */ +} FLAC__EntropyCodingMethodType; + +/** Maps a FLAC__EntropyCodingMethodType to a C string. + * + * Using a FLAC__EntropyCodingMethodType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__EntropyCodingMethodTypeString[]; + + +/** Contents of a Rice partitioned residual + */ +typedef struct { + + unsigned *parameters; + /**< The Rice parameters for each context. */ + + unsigned *raw_bits; + /**< Widths for escape-coded partitions. Will be non-zero for escaped + * partitions and zero for unescaped partitions. + */ + + unsigned capacity_by_order; + /**< The capacity of the \a parameters and \a raw_bits arrays + * specified as an order, i.e. the number of array elements + * allocated is 2 ^ \a capacity_by_order. + */ +} FLAC__EntropyCodingMethod_PartitionedRiceContents; + +/** Header for a Rice partitioned residual. (c.f. <A HREF="../format.html#partitioned_rice">format specification</A>) + */ +typedef struct { + + unsigned order; + /**< The partition order, i.e. # of contexts = 2 ^ \a order. */ + + const FLAC__EntropyCodingMethod_PartitionedRiceContents *contents; + /**< The context's Rice parameters and/or raw bits. */ + +} FLAC__EntropyCodingMethod_PartitionedRice; + +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN; /**< == 5 (bits) */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN; /**< == 5 (bits) */ + +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER; +/**< == (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN)-1 */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER; +/**< == (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN)-1 */ + +/** Header for the entropy coding method. (c.f. <A HREF="../format.html#residual">format specification</A>) + */ +typedef struct { + FLAC__EntropyCodingMethodType type; + union { + FLAC__EntropyCodingMethod_PartitionedRice partitioned_rice; + } data; +} FLAC__EntropyCodingMethod; + +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN; /**< == 2 (bits) */ + +/*****************************************************************************/ + +/** An enumeration of the available subframe types. */ +typedef enum { + FLAC__SUBFRAME_TYPE_CONSTANT = 0, /**< constant signal */ + FLAC__SUBFRAME_TYPE_VERBATIM = 1, /**< uncompressed signal */ + FLAC__SUBFRAME_TYPE_FIXED = 2, /**< fixed polynomial prediction */ + FLAC__SUBFRAME_TYPE_LPC = 3 /**< linear prediction */ +} FLAC__SubframeType; + +/** Maps a FLAC__SubframeType to a C string. + * + * Using a FLAC__SubframeType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__SubframeTypeString[]; + + +/** CONSTANT subframe. (c.f. <A HREF="../format.html#subframe_constant">format specification</A>) + */ +typedef struct { + FLAC__int32 value; /**< The constant signal value. */ +} FLAC__Subframe_Constant; + + +/** VERBATIM subframe. (c.f. <A HREF="../format.html#subframe_verbatim">format specification</A>) + */ +typedef struct { + const FLAC__int32 *data; /**< A pointer to verbatim signal. */ +} FLAC__Subframe_Verbatim; + + +/** FIXED subframe. (c.f. <A HREF="../format.html#subframe_fixed">format specification</A>) + */ +typedef struct { + FLAC__EntropyCodingMethod entropy_coding_method; + /**< The residual coding method. */ + + unsigned order; + /**< The polynomial order. */ + + FLAC__int32 warmup[FLAC__MAX_FIXED_ORDER]; + /**< Warmup samples to prime the predictor, length == order. */ + + const FLAC__int32 *residual; + /**< The residual signal, length == (blocksize minus order) samples. */ +} FLAC__Subframe_Fixed; + + +/** LPC subframe. (c.f. <A HREF="../format.html#subframe_lpc">format specification</A>) + */ +typedef struct { + FLAC__EntropyCodingMethod entropy_coding_method; + /**< The residual coding method. */ + + unsigned order; + /**< The FIR order. */ + + unsigned qlp_coeff_precision; + /**< Quantized FIR filter coefficient precision in bits. */ + + int quantization_level; + /**< The qlp coeff shift needed. */ + + FLAC__int32 qlp_coeff[FLAC__MAX_LPC_ORDER]; + /**< FIR filter coefficients. */ + + FLAC__int32 warmup[FLAC__MAX_LPC_ORDER]; + /**< Warmup samples to prime the predictor, length == order. */ + + const FLAC__int32 *residual; + /**< The residual signal, length == (blocksize minus order) samples. */ +} FLAC__Subframe_LPC; + +extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN; /**< == 5 (bits) */ + + +/** FLAC subframe structure. (c.f. <A HREF="../format.html#subframe">format specification</A>) + */ +typedef struct { + FLAC__SubframeType type; + union { + FLAC__Subframe_Constant constant; + FLAC__Subframe_Fixed fixed; + FLAC__Subframe_LPC lpc; + FLAC__Subframe_Verbatim verbatim; + } data; + unsigned wasted_bits; +} FLAC__Subframe; + +/** == 1 (bit) + * + * This used to be a zero-padding bit (hence the name + * FLAC__SUBFRAME_ZERO_PAD_LEN) but is now a reserved bit. It still has a + * mandatory value of \c 0 but in the future may take on the value \c 0 or \c 1 + * to mean something else. + */ +extern FLAC_API const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN; +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LEN; /**< == 6 (bits) */ +extern FLAC_API const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN; /**< == 1 (bit) */ + +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK; /**< = 0x00 */ +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK; /**< = 0x02 */ +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK; /**< = 0x10 */ +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK; /**< = 0x40 */ + +/*****************************************************************************/ + + +/***************************************************************************** + * + * Frame structures + * + *****************************************************************************/ + +/** An enumeration of the available channel assignments. */ +typedef enum { + FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, /**< independent channels */ + FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, /**< left+side stereo */ + FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, /**< right+side stereo */ + FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 /**< mid+side stereo */ +} FLAC__ChannelAssignment; + +/** Maps a FLAC__ChannelAssignment to a C string. + * + * Using a FLAC__ChannelAssignment as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__ChannelAssignmentString[]; + +/** An enumeration of the possible frame numbering methods. */ +typedef enum { + FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, /**< number contains the frame number */ + FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER /**< number contains the sample number of first sample in frame */ +} FLAC__FrameNumberType; + +/** Maps a FLAC__FrameNumberType to a C string. + * + * Using a FLAC__FrameNumberType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__FrameNumberTypeString[]; + + +/** FLAC frame header structure. (c.f. <A HREF="../format.html#frame_header">format specification</A>) + */ +typedef struct { + unsigned blocksize; + /**< The number of samples per subframe. */ + + unsigned sample_rate; + /**< The sample rate in Hz. */ + + unsigned channels; + /**< The number of channels (== number of subframes). */ + + FLAC__ChannelAssignment channel_assignment; + /**< The channel assignment for the frame. */ + + unsigned bits_per_sample; + /**< The sample resolution. */ + + FLAC__FrameNumberType number_type; + /**< The numbering scheme used for the frame. As a convenience, the + * decoder will always convert a frame number to a sample number because + * the rules are complex. */ + + union { + FLAC__uint32 frame_number; + FLAC__uint64 sample_number; + } number; + /**< The frame number or sample number of first sample in frame; + * use the \a number_type value to determine which to use. */ + + FLAC__uint8 crc; + /**< CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) + * of the raw frame header bytes, meaning everything before the CRC byte + * including the sync code. + */ +} FLAC__FrameHeader; + +extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC; /**< == 0x3ffe; the frame header sync code */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC_LEN; /**< == 14 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_RESERVED_LEN; /**< == 1 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN; /**< == 1 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN; /**< == 3 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_CRC_LEN; /**< == 8 (bits) */ + + +/** FLAC frame footer structure. (c.f. <A HREF="../format.html#frame_footer">format specification</A>) + */ +typedef struct { + FLAC__uint16 crc; + /**< CRC-16 (polynomial = x^16 + x^15 + x^2 + x^0, initialized with + * 0) of the bytes before the crc, back to and including the frame header + * sync code. + */ +} FLAC__FrameFooter; + +extern FLAC_API const unsigned FLAC__FRAME_FOOTER_CRC_LEN; /**< == 16 (bits) */ + + +/** FLAC frame structure. (c.f. <A HREF="../format.html#frame">format specification</A>) + */ +typedef struct { + FLAC__FrameHeader header; + FLAC__Subframe subframes[FLAC__MAX_CHANNELS]; + FLAC__FrameFooter footer; +} FLAC__Frame; + +/*****************************************************************************/ + + +/***************************************************************************** + * + * Meta-data structures + * + *****************************************************************************/ + +/** An enumeration of the available metadata block types. */ +typedef enum { + + FLAC__METADATA_TYPE_STREAMINFO = 0, + /**< <A HREF="../format.html#metadata_block_streaminfo">STREAMINFO</A> block */ + + FLAC__METADATA_TYPE_PADDING = 1, + /**< <A HREF="../format.html#metadata_block_padding">PADDING</A> block */ + + FLAC__METADATA_TYPE_APPLICATION = 2, + /**< <A HREF="../format.html#metadata_block_application">APPLICATION</A> block */ + + FLAC__METADATA_TYPE_SEEKTABLE = 3, + /**< <A HREF="../format.html#metadata_block_seektable">SEEKTABLE</A> block */ + + FLAC__METADATA_TYPE_VORBIS_COMMENT = 4, + /**< <A HREF="../format.html#metadata_block_vorbis_comment">VORBISCOMMENT</A> block (a.k.a. FLAC tags) */ + + FLAC__METADATA_TYPE_CUESHEET = 5, + /**< <A HREF="../format.html#metadata_block_cuesheet">CUESHEET</A> block */ + + FLAC__METADATA_TYPE_PICTURE = 6, + /**< <A HREF="../format.html#metadata_block_picture">PICTURE</A> block */ + + FLAC__METADATA_TYPE_UNDEFINED = 7 + /**< marker to denote beginning of undefined type range; this number will increase as new metadata types are added */ + +} FLAC__MetadataType; + +/** Maps a FLAC__MetadataType to a C string. + * + * Using a FLAC__MetadataType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__MetadataTypeString[]; + + +/** FLAC STREAMINFO structure. (c.f. <A HREF="../format.html#metadata_block_streaminfo">format specification</A>) + */ +typedef struct { + unsigned min_blocksize, max_blocksize; + unsigned min_framesize, max_framesize; + unsigned sample_rate; + unsigned channels; + unsigned bits_per_sample; + FLAC__uint64 total_samples; + FLAC__byte md5sum[16]; +} FLAC__StreamMetadata_StreamInfo; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN; /**< == 16 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN; /**< == 16 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN; /**< == 24 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN; /**< == 24 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN; /**< == 20 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN; /**< == 3 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN; /**< == 5 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN; /**< == 36 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN; /**< == 128 (bits) */ + +/** The total stream length of the STREAMINFO block in bytes. */ +#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u) + +/** FLAC PADDING structure. (c.f. <A HREF="../format.html#metadata_block_padding">format specification</A>) + */ +typedef struct { + int dummy; + /**< Conceptually this is an empty struct since we don't store the + * padding bytes. Empty structs are not allowed by some C compilers, + * hence the dummy. + */ +} FLAC__StreamMetadata_Padding; + + +/** FLAC APPLICATION structure. (c.f. <A HREF="../format.html#metadata_block_application">format specification</A>) + */ +typedef struct { + FLAC__byte id[4]; + FLAC__byte *data; +} FLAC__StreamMetadata_Application; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN; /**< == 32 (bits) */ + +/** SeekPoint structure used in SEEKTABLE blocks. (c.f. <A HREF="../format.html#seekpoint">format specification</A>) + */ +typedef struct { + FLAC__uint64 sample_number; + /**< The sample number of the target frame. */ + + FLAC__uint64 stream_offset; + /**< The offset, in bytes, of the target frame with respect to + * beginning of the first frame. */ + + unsigned frame_samples; + /**< The number of samples in the target frame. */ +} FLAC__StreamMetadata_SeekPoint; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN; /**< == 16 (bits) */ + +/** The total stream length of a seek point in bytes. */ +#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u) + +/** The value used in the \a sample_number field of + * FLAC__StreamMetadataSeekPoint used to indicate a placeholder + * point (== 0xffffffffffffffff). + */ +extern FLAC_API const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER; + + +/** FLAC SEEKTABLE structure. (c.f. <A HREF="../format.html#metadata_block_seektable">format specification</A>) + * + * \note From the format specification: + * - The seek points must be sorted by ascending sample number. + * - Each seek point's sample number must be the first sample of the + * target frame. + * - Each seek point's sample number must be unique within the table. + * - Existence of a SEEKTABLE block implies a correct setting of + * total_samples in the stream_info block. + * - Behavior is undefined when more than one SEEKTABLE block is + * present in a stream. + */ +typedef struct { + unsigned num_points; + FLAC__StreamMetadata_SeekPoint *points; +} FLAC__StreamMetadata_SeekTable; + + +/** Vorbis comment entry structure used in VORBIS_COMMENT blocks. (c.f. <A HREF="../format.html#metadata_block_vorbis_comment">format specification</A>) + * + * For convenience, the APIs maintain a trailing NUL character at the end of + * \a entry which is not counted toward \a length, i.e. + * \code strlen(entry) == length \endcode + */ +typedef struct { + FLAC__uint32 length; + FLAC__byte *entry; +} FLAC__StreamMetadata_VorbisComment_Entry; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN; /**< == 32 (bits) */ + + +/** FLAC VORBIS_COMMENT structure. (c.f. <A HREF="../format.html#metadata_block_vorbis_comment">format specification</A>) + */ +typedef struct { + FLAC__StreamMetadata_VorbisComment_Entry vendor_string; + FLAC__uint32 num_comments; + FLAC__StreamMetadata_VorbisComment_Entry *comments; +} FLAC__StreamMetadata_VorbisComment; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN; /**< == 32 (bits) */ + + +/** FLAC CUESHEET track index structure. (See the + * <A HREF="../format.html#cuesheet_track_index">format specification</A> for + * the full description of each field.) + */ +typedef struct { + FLAC__uint64 offset; + /**< Offset in samples, relative to the track offset, of the index + * point. + */ + + FLAC__byte number; + /**< The index point number. */ +} FLAC__StreamMetadata_CueSheet_Index; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN; /**< == 8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN; /**< == 3*8 (bits) */ + + +/** FLAC CUESHEET track structure. (See the + * <A HREF="../format.html#cuesheet_track">format specification</A> for + * the full description of each field.) + */ +typedef struct { + FLAC__uint64 offset; + /**< Track offset in samples, relative to the beginning of the FLAC audio stream. */ + + FLAC__byte number; + /**< The track number. */ + + char isrc[13]; + /**< Track ISRC. This is a 12-digit alphanumeric code plus a trailing \c NUL byte */ + + unsigned type:1; + /**< The track type: 0 for audio, 1 for non-audio. */ + + unsigned pre_emphasis:1; + /**< The pre-emphasis flag: 0 for no pre-emphasis, 1 for pre-emphasis. */ + + FLAC__byte num_indices; + /**< The number of track index points. */ + + FLAC__StreamMetadata_CueSheet_Index *indices; + /**< NULL if num_indices == 0, else pointer to array of index points. */ + +} FLAC__StreamMetadata_CueSheet_Track; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN; /**< == 8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN; /**< == 12*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN; /**< == 6+13*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN; /**< == 8 (bits) */ + + +/** FLAC CUESHEET structure. (See the + * <A HREF="../format.html#metadata_block_cuesheet">format specification</A> + * for the full description of each field.) + */ +typedef struct { + char media_catalog_number[129]; + /**< Media catalog number, in ASCII printable characters 0x20-0x7e. In + * general, the media catalog number may be 0 to 128 bytes long; any + * unused characters should be right-padded with NUL characters. + */ + + FLAC__uint64 lead_in; + /**< The number of lead-in samples. */ + + FLAC__bool is_cd; + /**< \c true if CUESHEET corresponds to a Compact Disc, else \c false. */ + + unsigned num_tracks; + /**< The number of tracks. */ + + FLAC__StreamMetadata_CueSheet_Track *tracks; + /**< NULL if num_tracks == 0, else pointer to array of tracks. */ + +} FLAC__StreamMetadata_CueSheet; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN; /**< == 128*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN; /**< == 7+258*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN; /**< == 8 (bits) */ + + +/** An enumeration of the PICTURE types (see FLAC__StreamMetadataPicture and id3 v2.4 APIC tag). */ +typedef enum { + FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, /**< Other */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, /**< 32x32 pixels 'file icon' (PNG only) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, /**< Other file icon */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3, /**< Cover (front) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, /**< Cover (back) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, /**< Leaflet page */ + FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, /**< Media (e.g. label side of CD) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7, /**< Lead artist/lead performer/soloist */ + FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, /**< Artist/performer */ + FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, /**< Conductor */ + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, /**< Band/Orchestra */ + FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11, /**< Composer */ + FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, /**< Lyricist/text writer */ + FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, /**< Recording Location */ + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, /**< During recording */ + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15, /**< During performance */ + FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, /**< Movie/video screen capture */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, /**< A bright coloured fish */ + FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, /**< Illustration */ + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19, /**< Band/artist logotype */ + FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, /**< Publisher/Studio logotype */ + FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED +} FLAC__StreamMetadata_Picture_Type; + +/** Maps a FLAC__StreamMetadata_Picture_Type to a C string. + * + * Using a FLAC__StreamMetadata_Picture_Type as the index to this array + * will give the string equivalent. The contents should not be + * modified. + */ +extern FLAC_API const char * const FLAC__StreamMetadata_Picture_TypeString[]; + +/** FLAC PICTURE structure. (See the + * <A HREF="../format.html#metadata_block_picture">format specification</A> + * for the full description of each field.) + */ +typedef struct { + FLAC__StreamMetadata_Picture_Type type; + /**< The kind of picture stored. */ + + char *mime_type; + /**< Picture data's MIME type, in ASCII printable characters + * 0x20-0x7e, NUL terminated. For best compatibility with players, + * use picture data of MIME type \c image/jpeg or \c image/png. A + * MIME type of '-->' is also allowed, in which case the picture + * data should be a complete URL. In file storage, the MIME type is + * stored as a 32-bit length followed by the ASCII string with no NUL + * terminator, but is converted to a plain C string in this structure + * for convenience. + */ + + FLAC__byte *description; + /**< Picture's description in UTF-8, NUL terminated. In file storage, + * the description is stored as a 32-bit length followed by the UTF-8 + * string with no NUL terminator, but is converted to a plain C string + * in this structure for convenience. + */ + + FLAC__uint32 width; + /**< Picture's width in pixels. */ + + FLAC__uint32 height; + /**< Picture's height in pixels. */ + + FLAC__uint32 depth; + /**< Picture's color depth in bits-per-pixel. */ + + FLAC__uint32 colors; + /**< For indexed palettes (like GIF), picture's number of colors (the + * number of palette entries), or \c 0 for non-indexed (i.e. 2^depth). + */ + + FLAC__uint32 data_length; + /**< Length of binary picture data in bytes. */ + + FLAC__byte *data; + /**< Binary picture data. */ + +} FLAC__StreamMetadata_Picture; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN; /**< == 32 (bits) */ + + +/** Structure that is used when a metadata block of unknown type is loaded. + * The contents are opaque. The structure is used only internally to + * correctly handle unknown metadata. + */ +typedef struct { + FLAC__byte *data; +} FLAC__StreamMetadata_Unknown; + + +/** FLAC metadata block structure. (c.f. <A HREF="../format.html#metadata_block">format specification</A>) + */ +typedef struct { + FLAC__MetadataType type; + /**< The type of the metadata block; used determine which member of the + * \a data union to dereference. If type >= FLAC__METADATA_TYPE_UNDEFINED + * then \a data.unknown must be used. */ + + FLAC__bool is_last; + /**< \c true if this metadata block is the last, else \a false */ + + unsigned length; + /**< Length, in bytes, of the block data as it appears in the stream. */ + + union { + FLAC__StreamMetadata_StreamInfo stream_info; + FLAC__StreamMetadata_Padding padding; + FLAC__StreamMetadata_Application application; + FLAC__StreamMetadata_SeekTable seek_table; + FLAC__StreamMetadata_VorbisComment vorbis_comment; + FLAC__StreamMetadata_CueSheet cue_sheet; + FLAC__StreamMetadata_Picture picture; + FLAC__StreamMetadata_Unknown unknown; + } data; + /**< Polymorphic block data; use the \a type value to determine which + * to use. */ +} FLAC__StreamMetadata; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_TYPE_LEN; /**< == 7 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_LENGTH_LEN; /**< == 24 (bits) */ + +/** The total stream length of a metadata block header in bytes. */ +#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u) + +/*****************************************************************************/ + + +/***************************************************************************** + * + * Utility functions + * + *****************************************************************************/ + +/** Tests that a sample rate is valid for FLAC. + * + * \param sample_rate The sample rate to test for compliance. + * \retval FLAC__bool + * \c true if the given sample rate conforms to the specification, else + * \c false. + */ +FLAC_API FLAC__bool FLAC__format_sample_rate_is_valid(unsigned sample_rate); + +/** Tests that a blocksize at the given sample rate is valid for the FLAC + * subset. + * + * \param blocksize The blocksize to test for compliance. + * \param sample_rate The sample rate is needed, since the valid subset + * blocksize depends on the sample rate. + * \retval FLAC__bool + * \c true if the given blocksize conforms to the specification for the + * subset at the given sample rate, else \c false. + */ +FLAC_API FLAC__bool FLAC__format_blocksize_is_subset(unsigned blocksize, unsigned sample_rate); + +/** Tests that a sample rate is valid for the FLAC subset. The subset rules + * for valid sample rates are slightly more complex since the rate has to + * be expressible completely in the frame header. + * + * \param sample_rate The sample rate to test for compliance. + * \retval FLAC__bool + * \c true if the given sample rate conforms to the specification for the + * subset, else \c false. + */ +FLAC_API FLAC__bool FLAC__format_sample_rate_is_subset(unsigned sample_rate); + +/** Check a Vorbis comment entry name to see if it conforms to the Vorbis + * comment specification. + * + * Vorbis comment names must be composed only of characters from + * [0x20-0x3C,0x3E-0x7D]. + * + * \param name A NUL-terminated string to be checked. + * \assert + * \code name != NULL \endcode + * \retval FLAC__bool + * \c false if entry name is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal(const char *name); + +/** Check a Vorbis comment entry value to see if it conforms to the Vorbis + * comment specification. + * + * Vorbis comment values must be valid UTF-8 sequences. + * + * \param value A string to be checked. + * \param length A the length of \a value in bytes. May be + * \c (unsigned)(-1) to indicate that \a value is a plain + * UTF-8 NUL-terminated string. + * \assert + * \code value != NULL \endcode + * \retval FLAC__bool + * \c false if entry name is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal(const FLAC__byte *value, unsigned length); + +/** Check a Vorbis comment entry to see if it conforms to the Vorbis + * comment specification. + * + * Vorbis comment entries must be of the form 'name=value', and 'name' and + * 'value' must be legal according to + * FLAC__format_vorbiscomment_entry_name_is_legal() and + * FLAC__format_vorbiscomment_entry_value_is_legal() respectively. + * + * \param entry An entry to be checked. + * \param length The length of \a entry in bytes. + * \assert + * \code value != NULL \endcode + * \retval FLAC__bool + * \c false if entry name is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_is_legal(const FLAC__byte *entry, unsigned length); + +/** Check a seek table to see if it conforms to the FLAC specification. + * See the format specification for limits on the contents of the + * seek table. + * + * \param seek_table A pointer to a seek table to be checked. + * \assert + * \code seek_table != NULL \endcode + * \retval FLAC__bool + * \c false if seek table is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_seektable_is_legal(const FLAC__StreamMetadata_SeekTable *seek_table); + +/** Sort a seek table's seek points according to the format specification. + * This includes a "unique-ification" step to remove duplicates, i.e. + * seek points with identical \a sample_number values. Duplicate seek + * points are converted into placeholder points and sorted to the end of + * the table. + * + * \param seek_table A pointer to a seek table to be sorted. + * \assert + * \code seek_table != NULL \endcode + * \retval unsigned + * The number of duplicate seek points converted into placeholders. + */ +FLAC_API unsigned FLAC__format_seektable_sort(FLAC__StreamMetadata_SeekTable *seek_table); + +/** Check a cue sheet to see if it conforms to the FLAC specification. + * See the format specification for limits on the contents of the + * cue sheet. + * + * \param cue_sheet A pointer to an existing cue sheet to be checked. + * \param check_cd_da_subset If \c true, check CUESHEET against more + * stringent requirements for a CD-DA (audio) disc. + * \param violation Address of a pointer to a string. If there is a + * violation, a pointer to a string explanation of the + * violation will be returned here. \a violation may be + * \c NULL if you don't need the returned string. Do not + * free the returned string; it will always point to static + * data. + * \assert + * \code cue_sheet != NULL \endcode + * \retval FLAC__bool + * \c false if cue sheet is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_cuesheet_is_legal(const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation); + +/** Check picture data to see if it conforms to the FLAC specification. + * See the format specification for limits on the contents of the + * PICTURE block. + * + * \param picture A pointer to existing picture data to be checked. + * \param violation Address of a pointer to a string. If there is a + * violation, a pointer to a string explanation of the + * violation will be returned here. \a violation may be + * \c NULL if you don't need the returned string. Do not + * free the returned string; it will always point to static + * data. + * \assert + * \code picture != NULL \endcode + * \retval FLAC__bool + * \c false if picture data is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_picture_is_legal(const FLAC__StreamMetadata_Picture *picture, const char **violation); + +/* \} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MacOSX/codecs/include/FLAC/ordinals.h b/MacOSX/codecs/include/FLAC/ordinals.h new file mode 100644 index 0000000..a057299 --- /dev/null +++ b/MacOSX/codecs/include/FLAC/ordinals.h @@ -0,0 +1,86 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__ORDINALS_H +#define FLAC__ORDINALS_H + +#if defined(_MSC_VER) && _MSC_VER < 1600 + +/* Microsoft Visual Studio earlier than the 2010 version did not provide + * the 1999 ISO C Standard header file <stdint.h>. + */ + +typedef __int8 FLAC__int8; +typedef unsigned __int8 FLAC__uint8; + +typedef __int16 FLAC__int16; +typedef __int32 FLAC__int32; +typedef __int64 FLAC__int64; +typedef unsigned __int16 FLAC__uint16; +typedef unsigned __int32 FLAC__uint32; +typedef unsigned __int64 FLAC__uint64; + +#else + +/* For MSVC 2010 and everything else which provides <stdint.h>. */ + +#include <stdint.h> + +typedef int8_t FLAC__int8; +typedef uint8_t FLAC__uint8; + +typedef int16_t FLAC__int16; +typedef int32_t FLAC__int32; +typedef int64_t FLAC__int64; +typedef uint16_t FLAC__uint16; +typedef uint32_t FLAC__uint32; +typedef uint64_t FLAC__uint64; + +#endif + +typedef int FLAC__bool; + +typedef FLAC__uint8 FLAC__byte; + + +#ifdef true +#undef true +#endif +#ifdef false +#undef false +#endif +#ifndef __cplusplus +#define true 1 +#define false 0 +#endif + +#endif diff --git a/MacOSX/codecs/include/FLAC/stream_decoder.h b/MacOSX/codecs/include/FLAC/stream_decoder.h new file mode 100644 index 0000000..99a12a3 --- /dev/null +++ b/MacOSX/codecs/include/FLAC/stream_decoder.h @@ -0,0 +1,1559 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__STREAM_DECODER_H +#define FLAC__STREAM_DECODER_H + +#include <stdio.h> /* for FILE */ +#include "export.h" +#include "format.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \file include/FLAC/stream_decoder.h + * + * \brief + * This module contains the functions which implement the stream + * decoder. + * + * See the detailed documentation in the + * \link flac_stream_decoder stream decoder \endlink module. + */ + +/** \defgroup flac_decoder FLAC/ \*_decoder.h: decoder interfaces + * \ingroup flac + * + * \brief + * This module describes the decoder layers provided by libFLAC. + * + * The stream decoder can be used to decode complete streams either from + * the client via callbacks, or directly from a file, depending on how + * it is initialized. When decoding via callbacks, the client provides + * callbacks for reading FLAC data and writing decoded samples, and + * handling metadata and errors. If the client also supplies seek-related + * callback, the decoder function for sample-accurate seeking within the + * FLAC input is also available. When decoding from a file, the client + * needs only supply a filename or open \c FILE* and write/metadata/error + * callbacks; the rest of the callbacks are supplied internally. For more + * info see the \link flac_stream_decoder stream decoder \endlink module. + */ + +/** \defgroup flac_stream_decoder FLAC/stream_decoder.h: stream decoder interface + * \ingroup flac_decoder + * + * \brief + * This module contains the functions which implement the stream + * decoder. + * + * The stream decoder can decode native FLAC, and optionally Ogg FLAC + * (check FLAC_API_SUPPORTS_OGG_FLAC) streams and files. + * + * The basic usage of this decoder is as follows: + * - The program creates an instance of a decoder using + * FLAC__stream_decoder_new(). + * - The program overrides the default settings using + * FLAC__stream_decoder_set_*() functions. + * - The program initializes the instance to validate the settings and + * prepare for decoding using + * - FLAC__stream_decoder_init_stream() or FLAC__stream_decoder_init_FILE() + * or FLAC__stream_decoder_init_file() for native FLAC, + * - FLAC__stream_decoder_init_ogg_stream() or FLAC__stream_decoder_init_ogg_FILE() + * or FLAC__stream_decoder_init_ogg_file() for Ogg FLAC + * - The program calls the FLAC__stream_decoder_process_*() functions + * to decode data, which subsequently calls the callbacks. + * - The program finishes the decoding with FLAC__stream_decoder_finish(), + * which flushes the input and output and resets the decoder to the + * uninitialized state. + * - The instance may be used again or deleted with + * FLAC__stream_decoder_delete(). + * + * In more detail, the program will create a new instance by calling + * FLAC__stream_decoder_new(), then call FLAC__stream_decoder_set_*() + * functions to override the default decoder options, and call + * one of the FLAC__stream_decoder_init_*() functions. + * + * There are three initialization functions for native FLAC, one for + * setting up the decoder to decode FLAC data from the client via + * callbacks, and two for decoding directly from a FLAC file. + * + * For decoding via callbacks, use FLAC__stream_decoder_init_stream(). + * You must also supply several callbacks for handling I/O. Some (like + * seeking) are optional, depending on the capabilities of the input. + * + * For decoding directly from a file, use FLAC__stream_decoder_init_FILE() + * or FLAC__stream_decoder_init_file(). Then you must only supply an open + * \c FILE* or filename and fewer callbacks; the decoder will handle + * the other callbacks internally. + * + * There are three similarly-named init functions for decoding from Ogg + * FLAC streams. Check \c FLAC_API_SUPPORTS_OGG_FLAC to find out if the + * library has been built with Ogg support. + * + * Once the decoder is initialized, your program will call one of several + * functions to start the decoding process: + * + * - FLAC__stream_decoder_process_single() - Tells the decoder to process at + * most one metadata block or audio frame and return, calling either the + * metadata callback or write callback, respectively, once. If the decoder + * loses sync it will return with only the error callback being called. + * - FLAC__stream_decoder_process_until_end_of_metadata() - Tells the decoder + * to process the stream from the current location and stop upon reaching + * the first audio frame. The client will get one metadata, write, or error + * callback per metadata block, audio frame, or sync error, respectively. + * - FLAC__stream_decoder_process_until_end_of_stream() - Tells the decoder + * to process the stream from the current location until the read callback + * returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM or + * FLAC__STREAM_DECODER_READ_STATUS_ABORT. The client will get one metadata, + * write, or error callback per metadata block, audio frame, or sync error, + * respectively. + * + * When the decoder has finished decoding (normally or through an abort), + * the instance is finished by calling FLAC__stream_decoder_finish(), which + * ensures the decoder is in the correct state and frees memory. Then the + * instance may be deleted with FLAC__stream_decoder_delete() or initialized + * again to decode another stream. + * + * Seeking is exposed through the FLAC__stream_decoder_seek_absolute() method. + * At any point after the stream decoder has been initialized, the client can + * call this function to seek to an exact sample within the stream. + * Subsequently, the first time the write callback is called it will be + * passed a (possibly partial) block starting at that sample. + * + * If the client cannot seek via the callback interface provided, but still + * has another way of seeking, it can flush the decoder using + * FLAC__stream_decoder_flush() and start feeding data from the new position + * through the read callback. + * + * The stream decoder also provides MD5 signature checking. If this is + * turned on before initialization, FLAC__stream_decoder_finish() will + * report when the decoded MD5 signature does not match the one stored + * in the STREAMINFO block. MD5 checking is automatically turned off + * (until the next FLAC__stream_decoder_reset()) if there is no signature + * in the STREAMINFO block or when a seek is attempted. + * + * The FLAC__stream_decoder_set_metadata_*() functions deserve special + * attention. By default, the decoder only calls the metadata_callback for + * the STREAMINFO block. These functions allow you to tell the decoder + * explicitly which blocks to parse and return via the metadata_callback + * and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), + * FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), + * FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify + * which blocks to return. Remember that metadata blocks can potentially + * be big (for example, cover art) so filtering out the ones you don't + * use can reduce the memory requirements of the decoder. Also note the + * special forms FLAC__stream_decoder_set_metadata_respond_application(id) + * and FLAC__stream_decoder_set_metadata_ignore_application(id) for + * filtering APPLICATION blocks based on the application ID. + * + * STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but + * they still can legally be filtered from the metadata_callback. + * + * \note + * The "set" functions may only be called when the decoder is in the + * state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after + * FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but + * before FLAC__stream_decoder_init_*(). If this is the case they will + * return \c true, otherwise \c false. + * + * \note + * FLAC__stream_decoder_finish() resets all settings to the constructor + * defaults, including the callbacks. + * + * \{ + */ + + +/** State values for a FLAC__StreamDecoder + * + * The decoder's state can be obtained by calling FLAC__stream_decoder_get_state(). + */ +typedef enum { + + FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0, + /**< The decoder is ready to search for metadata. */ + + FLAC__STREAM_DECODER_READ_METADATA, + /**< The decoder is ready to or is in the process of reading metadata. */ + + FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC, + /**< The decoder is ready to or is in the process of searching for the + * frame sync code. + */ + + FLAC__STREAM_DECODER_READ_FRAME, + /**< The decoder is ready to or is in the process of reading a frame. */ + + FLAC__STREAM_DECODER_END_OF_STREAM, + /**< The decoder has reached the end of the stream. */ + + FLAC__STREAM_DECODER_OGG_ERROR, + /**< An error occurred in the underlying Ogg layer. */ + + FLAC__STREAM_DECODER_SEEK_ERROR, + /**< An error occurred while seeking. The decoder must be flushed + * with FLAC__stream_decoder_flush() or reset with + * FLAC__stream_decoder_reset() before decoding can continue. + */ + + FLAC__STREAM_DECODER_ABORTED, + /**< The decoder was aborted by the read or write callback. */ + + FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR, + /**< An error occurred allocating memory. The decoder is in an invalid + * state and can no longer be used. + */ + + FLAC__STREAM_DECODER_UNINITIALIZED + /**< The decoder is in the uninitialized state; one of the + * FLAC__stream_decoder_init_*() functions must be called before samples + * can be processed. + */ + +} FLAC__StreamDecoderState; + +/** Maps a FLAC__StreamDecoderState to a C string. + * + * Using a FLAC__StreamDecoderState as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderStateString[]; + + +/** Possible return values for the FLAC__stream_decoder_init_*() functions. + */ +typedef enum { + + FLAC__STREAM_DECODER_INIT_STATUS_OK = 0, + /**< Initialization was successful. */ + + FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER, + /**< The library was not compiled with support for the given container + * format. + */ + + FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS, + /**< A required callback was not supplied. */ + + FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR, + /**< An error occurred allocating memory. */ + + FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE, + /**< fopen() failed in FLAC__stream_decoder_init_file() or + * FLAC__stream_decoder_init_ogg_file(). */ + + FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED + /**< FLAC__stream_decoder_init_*() was called when the decoder was + * already initialized, usually because + * FLAC__stream_decoder_finish() was not called. + */ + +} FLAC__StreamDecoderInitStatus; + +/** Maps a FLAC__StreamDecoderInitStatus to a C string. + * + * Using a FLAC__StreamDecoderInitStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderInitStatusString[]; + + +/** Return values for the FLAC__StreamDecoder read callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, + /**< The read was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM, + /**< The read was attempted while at the end of the stream. Note that + * the client must only return this value when the read callback was + * called when already at the end of the stream. Otherwise, if the read + * itself moves to the end of the stream, the client should still return + * the data and \c FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, and then on + * the next read callback it should return + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM with a byte count + * of \c 0. + */ + + FLAC__STREAM_DECODER_READ_STATUS_ABORT + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + +} FLAC__StreamDecoderReadStatus; + +/** Maps a FLAC__StreamDecoderReadStatus to a C string. + * + * Using a FLAC__StreamDecoderReadStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderReadStatusString[]; + + +/** Return values for the FLAC__StreamDecoder seek callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_SEEK_STATUS_OK, + /**< The seek was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_SEEK_STATUS_ERROR, + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + + FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + /**< Client does not support seeking. */ + +} FLAC__StreamDecoderSeekStatus; + +/** Maps a FLAC__StreamDecoderSeekStatus to a C string. + * + * Using a FLAC__StreamDecoderSeekStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderSeekStatusString[]; + + +/** Return values for the FLAC__StreamDecoder tell callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_TELL_STATUS_OK, + /**< The tell was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_TELL_STATUS_ERROR, + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + + FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + /**< Client does not support telling the position. */ + +} FLAC__StreamDecoderTellStatus; + +/** Maps a FLAC__StreamDecoderTellStatus to a C string. + * + * Using a FLAC__StreamDecoderTellStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderTellStatusString[]; + + +/** Return values for the FLAC__StreamDecoder length callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_LENGTH_STATUS_OK, + /**< The length call was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR, + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + + FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + /**< Client does not support reporting the length. */ + +} FLAC__StreamDecoderLengthStatus; + +/** Maps a FLAC__StreamDecoderLengthStatus to a C string. + * + * Using a FLAC__StreamDecoderLengthStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderLengthStatusString[]; + + +/** Return values for the FLAC__StreamDecoder write callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE, + /**< The write was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_WRITE_STATUS_ABORT + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + +} FLAC__StreamDecoderWriteStatus; + +/** Maps a FLAC__StreamDecoderWriteStatus to a C string. + * + * Using a FLAC__StreamDecoderWriteStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderWriteStatusString[]; + + +/** Possible values passed back to the FLAC__StreamDecoder error callback. + * \c FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC is the generic catch- + * all. The rest could be caused by bad sync (false synchronization on + * data that is not the start of a frame) or corrupted data. The error + * itself is the decoder's best guess at what happened assuming a correct + * sync. For example \c FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER + * could be caused by a correct sync on the start of a frame, but some + * data in the frame header was corrupted. Or it could be the result of + * syncing on a point the stream that looked like the starting of a frame + * but was not. \c FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + * could be because the decoder encountered a valid frame made by a future + * version of the encoder which it cannot parse, or because of a false + * sync making it appear as though an encountered frame was generated by + * a future encoder. + */ +typedef enum { + + FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC, + /**< An error in the stream caused the decoder to lose synchronization. */ + + FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER, + /**< The decoder encountered a corrupted frame header. */ + + FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH, + /**< The frame's data did not match the CRC in the footer. */ + + FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + /**< The decoder encountered reserved fields in use in the stream. */ + +} FLAC__StreamDecoderErrorStatus; + +/** Maps a FLAC__StreamDecoderErrorStatus to a C string. + * + * Using a FLAC__StreamDecoderErrorStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderErrorStatusString[]; + + +/*********************************************************************** + * + * class FLAC__StreamDecoder + * + ***********************************************************************/ + +struct FLAC__StreamDecoderProtected; +struct FLAC__StreamDecoderPrivate; +/** The opaque structure definition for the stream decoder type. + * See the \link flac_stream_decoder stream decoder module \endlink + * for a detailed description. + */ +typedef struct { + struct FLAC__StreamDecoderProtected *protected_; /* avoid the C++ keyword 'protected' */ + struct FLAC__StreamDecoderPrivate *private_; /* avoid the C++ keyword 'private' */ +} FLAC__StreamDecoder; + +/** Signature for the read callback. + * + * A function pointer matching this signature must be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder needs more input data. The address of the + * buffer to be filled is supplied, along with the number of bytes the + * buffer can hold. The callback may choose to supply less data and + * modify the byte count but must be careful not to overflow the buffer. + * The callback then returns a status code chosen from + * FLAC__StreamDecoderReadStatus. + * + * Here is an example of a read callback for stdio streams: + * \code + * FLAC__StreamDecoderReadStatus read_cb(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * if(*bytes > 0) { + * *bytes = fread(buffer, sizeof(FLAC__byte), *bytes, file); + * if(ferror(file)) + * return FLAC__STREAM_DECODER_READ_STATUS_ABORT; + * else if(*bytes == 0) + * return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + * else + * return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + * } + * else + * return FLAC__STREAM_DECODER_READ_STATUS_ABORT; + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param buffer A pointer to a location for the callee to store + * data to be decoded. + * \param bytes A pointer to the size of the buffer. On entry + * to the callback, it contains the maximum number + * of bytes that may be stored in \a buffer. The + * callee must set it to the actual number of bytes + * stored (0 in case of error or end-of-stream) before + * returning. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderReadStatus + * The callee's return status. Note that the callback should return + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM if and only if + * zero bytes were read and there is no more data to be read. + */ +typedef FLAC__StreamDecoderReadStatus (*FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); + +/** Signature for the seek callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder needs to seek the input stream. The decoder + * will pass the absolute byte offset to seek to, 0 meaning the + * beginning of the stream. + * + * Here is an example of a seek callback for stdio streams: + * \code + * FLAC__StreamDecoderSeekStatus seek_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * if(file == stdin) + * return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED; + * else if(fseeko(file, (off_t)absolute_byte_offset, SEEK_SET) < 0) + * return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + * else + * return FLAC__STREAM_DECODER_SEEK_STATUS_OK; + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param absolute_byte_offset The offset from the beginning of the stream + * to seek to. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderSeekStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderSeekStatus (*FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data); + +/** Signature for the tell callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder wants to know the current position of the + * stream. The callback should return the byte offset from the + * beginning of the stream. + * + * Here is an example of a tell callback for stdio streams: + * \code + * FLAC__StreamDecoderTellStatus tell_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * off_t pos; + * if(file == stdin) + * return FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED; + * else if((pos = ftello(file)) < 0) + * return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; + * else { + * *absolute_byte_offset = (FLAC__uint64)pos; + * return FLAC__STREAM_DECODER_TELL_STATUS_OK; + * } + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param absolute_byte_offset A pointer to storage for the current offset + * from the beginning of the stream. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderTellStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderTellStatus (*FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data); + +/** Signature for the length callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder wants to know the total length of the stream + * in bytes. + * + * Here is an example of a length callback for stdio streams: + * \code + * FLAC__StreamDecoderLengthStatus length_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * struct stat filestats; + * + * if(file == stdin) + * return FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED; + * else if(fstat(fileno(file), &filestats) != 0) + * return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR; + * else { + * *stream_length = (FLAC__uint64)filestats.st_size; + * return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; + * } + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param stream_length A pointer to storage for the length of the stream + * in bytes. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderLengthStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderLengthStatus (*FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data); + +/** Signature for the EOF callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder needs to know if the end of the stream has + * been reached. + * + * Here is an example of a EOF callback for stdio streams: + * FLAC__bool eof_cb(const FLAC__StreamDecoder *decoder, void *client_data) + * \code + * { + * FILE *file = ((MyClientData*)client_data)->file; + * return feof(file)? true : false; + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__bool + * \c true if the currently at the end of the stream, else \c false. + */ +typedef FLAC__bool (*FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data); + +/** Signature for the write callback. + * + * A function pointer matching this signature must be passed to one of + * the FLAC__stream_decoder_init_*() functions. + * The supplied function will be called when the decoder has decoded a + * single audio frame. The decoder will pass the frame metadata as well + * as an array of pointers (one for each channel) pointing to the + * decoded audio. + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param frame The description of the decoded frame. See + * FLAC__Frame. + * \param buffer An array of pointers to decoded channels of data. + * Each pointer will point to an array of signed + * samples of length \a frame->header.blocksize. + * Channels will be ordered according to the FLAC + * specification; see the documentation for the + * <A HREF="../format.html#frame_header">frame header</A>. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderWriteStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderWriteStatus (*FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); + +/** Signature for the metadata callback. + * + * A function pointer matching this signature must be passed to one of + * the FLAC__stream_decoder_init_*() functions. + * The supplied function will be called when the decoder has decoded a + * metadata block. In a valid FLAC file there will always be one + * \c STREAMINFO block, followed by zero or more other metadata blocks. + * These will be supplied by the decoder in the same order as they + * appear in the stream and always before the first audio frame (i.e. + * write callback). The metadata block that is passed in must not be + * modified, and it doesn't live beyond the callback, so you should make + * a copy of it with FLAC__metadata_object_clone() if you will need it + * elsewhere. Since metadata blocks can potentially be large, by + * default the decoder only calls the metadata callback for the + * \c STREAMINFO block; you can instruct the decoder to pass or filter + * other blocks with FLAC__stream_decoder_set_metadata_*() calls. + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param metadata The decoded metadata block. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + */ +typedef void (*FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); + +/** Signature for the error callback. + * + * A function pointer matching this signature must be passed to one of + * the FLAC__stream_decoder_init_*() functions. + * The supplied function will be called whenever an error occurs during + * decoding. + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param status The error encountered by the decoder. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + */ +typedef void (*FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); + + +/*********************************************************************** + * + * Class constructor/destructor + * + ***********************************************************************/ + +/** Create a new stream decoder instance. The instance is created with + * default settings; see the individual FLAC__stream_decoder_set_*() + * functions for each setting's default. + * + * \retval FLAC__StreamDecoder* + * \c NULL if there was an error allocating memory, else the new instance. + */ +FLAC_API FLAC__StreamDecoder *FLAC__stream_decoder_new(void); + +/** Free a decoder instance. Deletes the object pointed to by \a decoder. + * + * \param decoder A pointer to an existing decoder. + * \assert + * \code decoder != NULL \endcode + */ +FLAC_API void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder); + + +/*********************************************************************** + * + * Public class method prototypes + * + ***********************************************************************/ + +/** Set the serial number for the FLAC stream within the Ogg container. + * The default behavior is to use the serial number of the first Ogg + * page. Setting a serial number here will explicitly specify which + * stream is to be decoded. + * + * \note + * This does not need to be set for native FLAC decoding. + * + * \default \c use serial number of first page + * \param decoder A decoder instance to set. + * \param serial_number See above. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_ogg_serial_number(FLAC__StreamDecoder *decoder, long serial_number); + +/** Set the "MD5 signature checking" flag. If \c true, the decoder will + * compute the MD5 signature of the unencoded audio data while decoding + * and compare it to the signature from the STREAMINFO block, if it + * exists, during FLAC__stream_decoder_finish(). + * + * MD5 signature checking will be turned off (until the next + * FLAC__stream_decoder_reset()) if there is no signature in the + * STREAMINFO block or when a seek is attempted. + * + * Clients that do not use the MD5 check should leave this off to speed + * up decoding. + * + * \default \c false + * \param decoder A decoder instance to set. + * \param value Flag value (see above). + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value); + +/** Direct the decoder to pass on all metadata blocks of type \a type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param type See above. + * \assert + * \code decoder != NULL \endcode + * \a type is valid + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type); + +/** Direct the decoder to pass on all APPLICATION metadata blocks of the + * given \a id. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param id See above. + * \assert + * \code decoder != NULL \endcode + * \code id != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]); + +/** Direct the decoder to pass on all metadata blocks of any type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_all(FLAC__StreamDecoder *decoder); + +/** Direct the decoder to filter out all metadata blocks of type \a type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param type See above. + * \assert + * \code decoder != NULL \endcode + * \a type is valid + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore(FLAC__StreamDecoder *decoder, FLAC__MetadataType type); + +/** Direct the decoder to filter out all APPLICATION metadata blocks of + * the given \a id. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param id See above. + * \assert + * \code decoder != NULL \endcode + * \code id != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]); + +/** Direct the decoder to filter out all metadata blocks of any type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all(FLAC__StreamDecoder *decoder); + +/** Get the current decoder state. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderState + * The current decoder state. + */ +FLAC_API FLAC__StreamDecoderState FLAC__stream_decoder_get_state(const FLAC__StreamDecoder *decoder); + +/** Get the current decoder state as a C string. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval const char * + * The decoder state as a C string. Do not modify the contents. + */ +FLAC_API const char *FLAC__stream_decoder_get_resolved_state_string(const FLAC__StreamDecoder *decoder); + +/** Get the "MD5 signature checking" flag. + * This is the value of the setting, not whether or not the decoder is + * currently checking the MD5 (remember, it can be turned off automatically + * by a seek). When the decoder is reset the flag will be restored to the + * value returned by this function. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * See above. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_get_md5_checking(const FLAC__StreamDecoder *decoder); + +/** Get the total number of samples in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the \c STREAMINFO block. A value of \c 0 means "unknown". + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API FLAC__uint64 FLAC__stream_decoder_get_total_samples(const FLAC__StreamDecoder *decoder); + +/** Get the current number of channels in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_channels(const FLAC__StreamDecoder *decoder); + +/** Get the current channel assignment in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__ChannelAssignment + * See above. + */ +FLAC_API FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment(const FLAC__StreamDecoder *decoder); + +/** Get the current sample resolution in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_bits_per_sample(const FLAC__StreamDecoder *decoder); + +/** Get the current sample rate in Hz of the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_sample_rate(const FLAC__StreamDecoder *decoder); + +/** Get the current blocksize of the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_blocksize(const FLAC__StreamDecoder *decoder); + +/** Returns the decoder's current read position within the stream. + * The position is the byte offset from the start of the stream. + * Bytes before this position have been fully decoded. Note that + * there may still be undecoded bytes in the decoder's read FIFO. + * The returned position is correct even after a seek. + * + * \warning This function currently only works for native FLAC, + * not Ogg FLAC streams. + * + * \param decoder A decoder instance to query. + * \param position Address at which to return the desired position. + * \assert + * \code decoder != NULL \endcode + * \code position != NULL \endcode + * \retval FLAC__bool + * \c true if successful, \c false if the stream is not native FLAC, + * or there was an error from the 'tell' callback or it returned + * \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position); + +/** Initialize the decoder instance to decode native FLAC streams. + * + * This flavor of initialization sets up the decoder to decode from a + * native FLAC stream. I/O is performed via callbacks to the client. + * For decoding from a plain file via filename or open FILE*, + * FLAC__stream_decoder_init_file() and FLAC__stream_decoder_init_FILE() + * provide a simpler interface. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \param decoder An uninitialized decoder instance. + * \param read_callback See FLAC__StreamDecoderReadCallback. This + * pointer must not be \c NULL. + * \param seek_callback See FLAC__StreamDecoderSeekCallback. This + * pointer may be \c NULL if seeking is not + * supported. If \a seek_callback is not \c NULL then a + * \a tell_callback, \a length_callback, and \a eof_callback must also be supplied. + * Alternatively, a dummy seek callback that just + * returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param tell_callback See FLAC__StreamDecoderTellCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a tell_callback must also be supplied. + * Alternatively, a dummy tell callback that just + * returns \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param length_callback See FLAC__StreamDecoderLengthCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a length_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param eof_callback See FLAC__StreamDecoderEofCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a eof_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c false + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream( + FLAC__StreamDecoder *decoder, + FLAC__StreamDecoderReadCallback read_callback, + FLAC__StreamDecoderSeekCallback seek_callback, + FLAC__StreamDecoderTellCallback tell_callback, + FLAC__StreamDecoderLengthCallback length_callback, + FLAC__StreamDecoderEofCallback eof_callback, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode Ogg FLAC streams. + * + * This flavor of initialization sets up the decoder to decode from a + * FLAC stream in an Ogg container. I/O is performed via callbacks to the + * client. For decoding from a plain file via filename or open FILE*, + * FLAC__stream_decoder_init_ogg_file() and FLAC__stream_decoder_init_ogg_FILE() + * provide a simpler interface. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \note Support for Ogg FLAC in the library is optional. If this + * library has been built without support for Ogg FLAC, this function + * will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER. + * + * \param decoder An uninitialized decoder instance. + * \param read_callback See FLAC__StreamDecoderReadCallback. This + * pointer must not be \c NULL. + * \param seek_callback See FLAC__StreamDecoderSeekCallback. This + * pointer may be \c NULL if seeking is not + * supported. If \a seek_callback is not \c NULL then a + * \a tell_callback, \a length_callback, and \a eof_callback must also be supplied. + * Alternatively, a dummy seek callback that just + * returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param tell_callback See FLAC__StreamDecoderTellCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a tell_callback must also be supplied. + * Alternatively, a dummy tell callback that just + * returns \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param length_callback See FLAC__StreamDecoderLengthCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a length_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param eof_callback See FLAC__StreamDecoderEofCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a eof_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c false + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream( + FLAC__StreamDecoder *decoder, + FLAC__StreamDecoderReadCallback read_callback, + FLAC__StreamDecoderSeekCallback seek_callback, + FLAC__StreamDecoderTellCallback tell_callback, + FLAC__StreamDecoderLengthCallback length_callback, + FLAC__StreamDecoderEofCallback eof_callback, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode native FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a + * plain native FLAC file. For non-stdio streams, you must use + * FLAC__stream_decoder_init_stream() and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \param decoder An uninitialized decoder instance. + * \param file An open FLAC file. The file should have been + * opened with mode \c "rb" and rewound. The file + * becomes owned by the decoder and should not be + * manipulated by the client while decoding. + * Unless \a file is \c stdin, it will be closed + * when FLAC__stream_decoder_finish() is called. + * Note however that seeking will not work when + * decoding from \c stdin since it is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \code file != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE( + FLAC__StreamDecoder *decoder, + FILE *file, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode Ogg FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a + * plain Ogg FLAC file. For non-stdio streams, you must use + * FLAC__stream_decoder_init_ogg_stream() and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \note Support for Ogg FLAC in the library is optional. If this + * library has been built without support for Ogg FLAC, this function + * will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER. + * + * \param decoder An uninitialized decoder instance. + * \param file An open FLAC file. The file should have been + * opened with mode \c "rb" and rewound. The file + * becomes owned by the decoder and should not be + * manipulated by the client while decoding. + * Unless \a file is \c stdin, it will be closed + * when FLAC__stream_decoder_finish() is called. + * Note however that seeking will not work when + * decoding from \c stdin since it is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \code file != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE( + FLAC__StreamDecoder *decoder, + FILE *file, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode native FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a plain + * native FLAC file. If POSIX fopen() semantics are not sufficient, (for + * example, with Unicode filenames on Windows), you must use + * FLAC__stream_decoder_init_FILE(), or FLAC__stream_decoder_init_stream() + * and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \param decoder An uninitialized decoder instance. + * \param filename The name of the file to decode from. The file will + * be opened with fopen(). Use \c NULL to decode from + * \c stdin. Note that \c stdin is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file( + FLAC__StreamDecoder *decoder, + const char *filename, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode Ogg FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a plain + * Ogg FLAC file. If POSIX fopen() semantics are not sufficient, (for + * example, with Unicode filenames on Windows), you must use + * FLAC__stream_decoder_init_ogg_FILE(), or FLAC__stream_decoder_init_ogg_stream() + * and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \note Support for Ogg FLAC in the library is optional. If this + * library has been built without support for Ogg FLAC, this function + * will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER. + * + * \param decoder An uninitialized decoder instance. + * \param filename The name of the file to decode from. The file will + * be opened with fopen(). Use \c NULL to decode from + * \c stdin. Note that \c stdin is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file( + FLAC__StreamDecoder *decoder, + const char *filename, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Finish the decoding process. + * Flushes the decoding buffer, releases resources, resets the decoder + * settings to their defaults, and returns the decoder state to + * FLAC__STREAM_DECODER_UNINITIALIZED. + * + * In the event of a prematurely-terminated decode, it is not strictly + * necessary to call this immediately before FLAC__stream_decoder_delete() + * but it is good practice to match every FLAC__stream_decoder_init_*() + * with a FLAC__stream_decoder_finish(). + * + * \param decoder An uninitialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if MD5 checking is on AND a STREAMINFO block was available + * AND the MD5 signature in the STREAMINFO block was non-zero AND the + * signature does not match the one computed by the decoder; else + * \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder); + +/** Flush the stream input. + * The decoder's input buffer will be cleared and the state set to + * \c FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC. This will also turn + * off MD5 checking. + * + * \param decoder A decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c true if successful, else \c false if a memory allocation + * error occurs (in which case the state will be set to + * \c FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_flush(FLAC__StreamDecoder *decoder); + +/** Reset the decoding process. + * The decoder's input buffer will be cleared and the state set to + * \c FLAC__STREAM_DECODER_SEARCH_FOR_METADATA. This is similar to + * FLAC__stream_decoder_finish() except that the settings are + * preserved; there is no need to call FLAC__stream_decoder_init_*() + * before decoding again. MD5 checking will be restored to its original + * setting. + * + * If the decoder is seekable, or was initialized with + * FLAC__stream_decoder_init*_FILE() or FLAC__stream_decoder_init*_file(), + * the decoder will also attempt to seek to the beginning of the file. + * If this rewind fails, this function will return \c false. It follows + * that FLAC__stream_decoder_reset() cannot be used when decoding from + * \c stdin. + * + * If the decoder was initialized with FLAC__stream_encoder_init*_stream() + * and is not seekable (i.e. no seek callback was provided or the seek + * callback returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED), it + * is the duty of the client to start feeding data from the beginning of + * the stream on the next FLAC__stream_decoder_process_*() call. + * + * \param decoder A decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c true if successful, else \c false if a memory allocation occurs + * (in which case the state will be set to + * \c FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR) or a seek error + * occurs (the state will be unchanged). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder); + +/** Decode one metadata block or audio frame. + * This version instructs the decoder to decode a either a single metadata + * block or a single frame and stop, unless the callbacks return a fatal + * error or the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM. + * + * As the decoder needs more input it will call the read callback. + * Depending on what was decoded, the metadata or write callback will be + * called with the decoded metadata block or audio frame. + * + * Unless there is a fatal read error or end of stream, this function + * will return once one whole frame is decoded. In other words, if the + * stream is not synchronized or points to a corrupt frame header, the + * decoder will continue to try and resync until it gets to a valid + * frame, then decode one frame, then return. If the decoder points to + * a frame whose frame CRC in the frame footer does not match the + * computed frame CRC, this function will issue a + * FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH error to the + * error callback, and return, having decoded one complete, although + * corrupt, frame. (Such corrupted frames are sent as silence of the + * correct length to the write callback.) + * + * \param decoder An initialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder); + +/** Decode until the end of the metadata. + * This version instructs the decoder to decode from the current position + * and continue until all the metadata has been read, or until the + * callbacks return a fatal error or the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM. + * + * As the decoder needs more input it will call the read callback. + * As each metadata block is decoded, the metadata callback will be called + * with the decoded metadata. + * + * \param decoder An initialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder); + +/** Decode until the end of the stream. + * This version instructs the decoder to decode from the current position + * and continue until the end of stream (the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM), or until the + * callbacks return a fatal error. + * + * As the decoder needs more input it will call the read callback. + * As each metadata block and frame is decoded, the metadata or write + * callback will be called with the decoded metadata or frame. + * + * \param decoder An initialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder); + +/** Skip one audio frame. + * This version instructs the decoder to 'skip' a single frame and stop, + * unless the callbacks return a fatal error or the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM. + * + * The decoding flow is the same as what occurs when + * FLAC__stream_decoder_process_single() is called to process an audio + * frame, except that this function does not decode the parsed data into + * PCM or call the write callback. The integrity of the frame is still + * checked the same way as in the other process functions. + * + * This function will return once one whole frame is skipped, in the + * same way that FLAC__stream_decoder_process_single() will return once + * one whole frame is decoded. + * + * This function can be used in more quickly determining FLAC frame + * boundaries when decoding of the actual data is not needed, for + * example when an application is separating a FLAC stream into frames + * for editing or storing in a container. To do this, the application + * can use FLAC__stream_decoder_skip_single_frame() to quickly advance + * to the next frame, then use + * FLAC__stream_decoder_get_decode_position() to find the new frame + * boundary. + * + * This function should only be called when the stream has advanced + * past all the metadata, otherwise it will return \c false. + * + * \param decoder An initialized decoder instance not in a metadata + * state. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), or if the decoder + * is in the FLAC__STREAM_DECODER_SEARCH_FOR_METADATA or + * FLAC__STREAM_DECODER_READ_METADATA state, else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_skip_single_frame(FLAC__StreamDecoder *decoder); + +/** Flush the input and seek to an absolute sample. + * Decoding will resume at the given sample. Note that because of + * this, the next write callback may contain a partial block. The + * client must support seeking the input or this function will fail + * and return \c false. Furthermore, if the decoder state is + * \c FLAC__STREAM_DECODER_SEEK_ERROR, then the decoder must be flushed + * with FLAC__stream_decoder_flush() or reset with + * FLAC__stream_decoder_reset() before decoding can continue. + * + * \param decoder A decoder instance. + * \param sample The target sample number to seek to. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c true if successful, else \c false. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample); + +/* \} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MacOSX/codecs/include/flac_config.txt b/MacOSX/codecs/include/flac_config.txt new file mode 100644 index 0000000..7fd42c3 --- /dev/null +++ b/MacOSX/codecs/include/flac_config.txt @@ -0,0 +1,3 @@ +FLAC v1.3.0 release + several fixes from the flac git repo at xiph.org. +Decoder-only functionality, which is what we need: the encoder stuff is +left out of the build. diff --git a/MacOSX/codecs/include/mad.h b/MacOSX/codecs/include/mad.h new file mode 100644 index 0000000..34a8e6f --- /dev/null +++ b/MacOSX/codecs/include/mad.h @@ -0,0 +1,1009 @@ +/* + * libmad - MPEG audio decoder library + * Copyright (C) 2000-2004 Underbit Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * If you would like to negotiate alternate licensing terms, you may do + * so by contacting: Underbit Technologies, Inc. <info@underbit.com> + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__i386__) +# define FPM_INTEL +#elif defined(__x86_64__) +# define FPM_64BIT +#elif defined(__aarch64__) +# define FPM_64BIT +#elif defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || \ + defined(__ppc64__)||defined(__powerpc64__) +# define FPM_PPC +#else +# error define FPM for this CPU +#endif + +/* Id: version.h,v 1.26 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_VERSION_H +# define LIBMAD_VERSION_H + +# define MAD_VERSION_MAJOR 0 +# define MAD_VERSION_MINOR 15 +# define MAD_VERSION_PATCH 1 +# define MAD_VERSION_EXTRA " (beta)" + +# define MAD_VERSION_STRINGIZE(str) #str +# define MAD_VERSION_STRING(num) MAD_VERSION_STRINGIZE(num) + +# define MAD_VERSION MAD_VERSION_STRING(MAD_VERSION_MAJOR) "." \ + MAD_VERSION_STRING(MAD_VERSION_MINOR) "." \ + MAD_VERSION_STRING(MAD_VERSION_PATCH) \ + MAD_VERSION_EXTRA + +# define MAD_PUBLISHYEAR "2000-2004" +# define MAD_AUTHOR "Underbit Technologies, Inc." +# define MAD_EMAIL "info@underbit.com" + +extern char const mad_version[]; +extern char const mad_copyright[]; +extern char const mad_author[]; +extern char const mad_build[]; + +# endif + +/* Id: fixed.h,v 1.38 2004/02/17 02:02:03 rob Exp */ + +# ifndef LIBMAD_FIXED_H +# define LIBMAD_FIXED_H + +# include <limits.h> + +# if INT_MAX >= 2147483647 +typedef signed int mad_fixed_t; + +typedef signed int mad_fixed64hi_t; +typedef unsigned int mad_fixed64lo_t; +# else +typedef signed long mad_fixed_t; + +typedef signed long mad_fixed64hi_t; +typedef unsigned long mad_fixed64lo_t; +# endif +/* compile-time assert: */ +typedef int _mad_check_fixed_t[2*(sizeof(mad_fixed_t)>=4) - 1]; + +# if defined(_MSC_VER) +# define mad_fixed64_t signed __int64 +# elif 1 || defined(__GNUC__) +# define mad_fixed64_t signed long long +# endif + +# if defined(FPM_FLOAT) +typedef double mad_sample_t; +# else +typedef mad_fixed_t mad_sample_t; +# endif + +/* + * Fixed-point format: 0xABBBBBBB + * A == whole part (sign + 3 bits) + * B == fractional part (28 bits) + * + * Values are signed two's complement, so the effective range is: + * 0x80000000 to 0x7fffffff + * -8.0 to +7.9999999962747097015380859375 + * + * The smallest representable value is: + * 0x00000001 == 0.0000000037252902984619140625 (i.e. about 3.725e-9) + * + * 28 bits of fractional accuracy represent about + * 8.6 digits of decimal accuracy. + * + * Fixed-point numbers can be added or subtracted as normal + * integers, but multiplication requires shifting the 64-bit result + * from 56 fractional bits back to 28 (and rounding.) + * + * Changing the definition of MAD_F_FRACBITS is only partially + * supported, and must be done with care. + */ + +# define MAD_F_FRACBITS 28 + +# if MAD_F_FRACBITS == 28 +# define MAD_F(x) ((mad_fixed_t) (x##L)) +# else +# if MAD_F_FRACBITS < 28 +# warning "MAD_F_FRACBITS < 28" +# define MAD_F(x) ((mad_fixed_t) \ + (((x##L) + \ + (1L << (28 - MAD_F_FRACBITS - 1))) >> \ + (28 - MAD_F_FRACBITS))) +# elif MAD_F_FRACBITS > 28 +# error "MAD_F_FRACBITS > 28 not currently supported" +# define MAD_F(x) ((mad_fixed_t) \ + ((x##L) << (MAD_F_FRACBITS - 28))) +# endif +# endif + +# define MAD_F_MIN ((mad_fixed_t) -0x80000000L) +# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL) + +# define MAD_F_ONE MAD_F(0x10000000) + +# define mad_f_tofixed(x) ((mad_fixed_t) \ + ((x) * (double) (1L << MAD_F_FRACBITS) + 0.5)) +# define mad_f_todouble(x) ((double) \ + ((x) / (double) (1L << MAD_F_FRACBITS))) + +# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS) +# define mad_f_fracpart(x) ((x) & ((1L << MAD_F_FRACBITS) - 1)) + /* (x should be positive) */ + +# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS) + +# define mad_f_add(x, y) ((x) + (y)) +# define mad_f_sub(x, y) ((x) - (y)) + +# if defined(FPM_FLOAT) +# error "FPM_FLOAT not yet supported" + +# undef MAD_F +# define MAD_F(x) mad_f_todouble(x) + +# define mad_f_mul(x, y) ((x) * (y)) +# define mad_f_scale64 + +# undef ASO_ZEROCHECK + +# elif defined(FPM_64BIT) + +/* + * This version should be the most accurate if 64-bit types are supported by + * the compiler, although it may not be the most efficient. + */ +# if defined(OPT_ACCURACY) +# define mad_f_mul(x, y) \ + ((mad_fixed_t) \ + ((((mad_fixed64_t) (x) * (y)) + \ + (1L << (MAD_F_SCALEBITS - 1))) >> MAD_F_SCALEBITS)) +# else +# define mad_f_mul(x, y) \ + ((mad_fixed_t) (((mad_fixed64_t) (x) * (y)) >> MAD_F_SCALEBITS)) +# endif + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- Intel --------------------------------------------------------------- */ + +# elif defined(FPM_INTEL) + +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable: 4035) /* no return value */ +static __forceinline +mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) +{ + enum { + fracbits = MAD_F_FRACBITS + }; + + __asm { + mov eax, x + imul y + shrd eax, edx, fracbits + } + + /* implicit return of eax */ +} +# pragma warning(pop) + +# define mad_f_mul mad_f_mul_inline +# define mad_f_scale64 + +# elif defined(__WATCOMC__) && defined(__386__) +mad_fixed_t mad_f_mul_inl(mad_fixed_t,mad_fixed_t); +/* 28 == MAD_F_FRACBITS */ +#pragma aux mad_f_mul_inl = \ + "imul ebx", \ + "shrd eax,edx,28" \ + parm [eax] [ebx] \ + value [eax] \ + modify exact [eax edx] + +# define mad_f_mul mad_f_mul_inl +# define mad_f_scale64 + +# else +/* + * This Intel version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("imull %3" \ + : "=a" (lo), "=d" (hi) \ + : "%a" (x), "rm" (y) \ + : "cc") + +# if defined(OPT_ACCURACY) +/* + * This gives best accuracy but is not very fast. + */ +# define MAD_F_MLA(hi, lo, x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + asm ("addl %2,%0\n\t" \ + "adcl %3,%1" \ + : "=rm" (lo), "=rm" (hi) \ + : "r" (__lo), "r" (__hi), "0" (lo), "1" (hi) \ + : "cc"); \ + }) +# endif /* OPT_ACCURACY */ + +# if defined(OPT_ACCURACY) +/* + * Surprisingly, this is faster than SHRD followed by ADC. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed64hi_t __hi_; \ + mad_fixed64lo_t __lo_; \ + mad_fixed_t __result; \ + asm ("addl %4,%2\n\t" \ + "adcl %5,%3" \ + : "=rm" (__lo_), "=rm" (__hi_) \ + : "0" (lo), "1" (hi), \ + "ir" (1L << (MAD_F_SCALEBITS - 1)), "ir" (0) \ + : "cc"); \ + asm ("shrdl %3,%2,%1" \ + : "=rm" (__result) \ + : "0" (__lo_), "r" (__hi_), "I" (MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# elif defined(OPT_INTEL) +/* + * Alternate Intel scaling that may or may not perform better. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("shrl %3,%1\n\t" \ + "shll %4,%2\n\t" \ + "orl %2,%1" \ + : "=rm" (__result) \ + : "0" (lo), "r" (hi), \ + "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# else +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("shrdl %3,%2,%1" \ + : "=rm" (__result) \ + : "0" (lo), "r" (hi), "I" (MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# endif /* OPT_ACCURACY */ + +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* --- ARM ----------------------------------------------------------------- */ + +# elif defined(FPM_ARM) + +/* + * This ARM V4 version is as accurate as FPM_64BIT but much faster. The + * least significant bit is properly rounded at no CPU cycle cost! + */ +# if 1 +/* + * This is faster than the default implementation via MAD_F_MLX() and + * mad_f_scale64(). + */ +# define mad_f_mul(x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + mad_fixed_t __result; \ + asm ("smull %0, %1, %3, %4\n\t" \ + "movs %0, %0, lsr %5\n\t" \ + "adc %2, %0, %1, lsl %6" \ + : "=&r" (__lo), "=&r" (__hi), "=r" (__result) \ + : "%r" (x), "r" (y), \ + "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# endif + +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("smull %0, %1, %2, %3" \ + : "=&r" (lo), "=&r" (hi) \ + : "%r" (x), "r" (y)) + +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("smlal %0, %1, %2, %3" \ + : "+r" (lo), "+r" (hi) \ + : "%r" (x), "r" (y)) + +#ifdef __thumb__ +/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero + operand. If needed this code can also support Thumb-1 + (simply append "s" to the end of the second two instructions). */ +# define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %0, #0\n\t" \ + "sbc %1, %1, %1\n\t" \ + "sub %1, %1, %2" \ + : "+&r" (lo), "=&r" (hi) \ + : "r" (hi) \ + : "cc") +#else /* ! __thumb__ */ +# define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %2, #0\n\t" \ + "rsc %1, %3, #0" \ + : "=&r" (lo), "=r" (hi) \ + : "0" (lo), "1" (hi) \ + : "cc") +#endif /* __thumb__ */ + +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("movs %0, %1, lsr %3\n\t" \ + "adc %0, %0, %2, lsl %4" \ + : "=&r" (__result) \ + : "r" (lo), "r" (hi), \ + "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- MIPS ---------------------------------------------------------------- */ + +# elif defined(FPM_MIPS) + +#if defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) + typedef unsigned int u64_di_t __attribute__ ((mode (DI))); +# define MAD_F_MLX(hi, lo, x, y) \ + do { \ + u64_di_t __ll = (u64_di_t) (x) * (y); \ + hi = __ll >> 32; \ + lo = __ll; \ + } while (0) +#else +/* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("mult %2,%3" \ + : "=l" (lo), "=h" (hi) \ + : "%r" (x), "r" (y)) + +# if defined(HAVE_MADD_ASM) +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("madd %2,%3" \ + : "+l" (lo), "+h" (hi) \ + : "%r" (x), "r" (y)) +# elif defined(HAVE_MADD16_ASM) +/* + * This loses significant accuracy due to the 16-bit integer limit in the + * multiply/accumulate instruction. + */ +# define MAD_F_ML0(hi, lo, x, y) \ + asm ("mult %2,%3" \ + : "=l" (lo), "=h" (hi) \ + : "%r" ((x) >> 12), "r" ((y) >> 16)) +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("madd16 %2,%3" \ + : "+l" (lo), "+h" (hi) \ + : "%r" ((x) >> 12), "r" ((y) >> 16)) +# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) +# endif +#endif /* MIPS / gcc-4.4. */ + +# if defined(OPT_SPEED) +# define mad_f_scale64(hi, lo) \ + ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS))) +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* --- SPARC --------------------------------------------------------------- */ + +# elif defined(FPM_SPARC) + +/* + * This SPARC V8 version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("smul %2, %3, %0\n\t" \ + "rd %%y, %1" \ + : "=r" (lo), "=r" (hi) \ + : "%r" (x), "rI" (y)) + +/* --- PowerPC ------------------------------------------------------------- */ + +# elif defined(FPM_PPC) + +/* + * This PowerPC version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + do { \ + asm ("mullw %0,%1,%2" \ + : "=r" (lo) \ + : "%r" (x), "r" (y)); \ + asm ("mulhw %0,%1,%2" \ + : "=r" (hi) \ + : "%r" (x), "r" (y)); \ + } \ + while (0) + +# if defined(OPT_ACCURACY) +/* + * This gives best accuracy but is not very fast. + */ +# define MAD_F_MLA(hi, lo, x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + asm ("addc %0,%2,%3\n\t" \ + "adde %1,%4,%5" \ + : "=r" (lo), "=r" (hi) \ + : "0" (lo), "r" (__lo), \ + "1" (hi), "r" (__hi) \ + : "xer"); \ + }) +# endif + +# if defined(OPT_ACCURACY) +/* + * This is slower than the truncating version below it. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result, __round; \ + asm ("rotrwi %0,%1,%2" \ + : "=r" (__result) \ + : "r" (lo), "i" (MAD_F_SCALEBITS)); \ + asm ("extrwi %0,%1,1,0" \ + : "=r" (__round) \ + : "r" (__result)); \ + asm ("insrwi %0,%1,%2,0" \ + : "+r" (__result) \ + : "r" (hi), "i" (MAD_F_SCALEBITS)); \ + asm ("add %0,%1,%2" \ + : "=r" (__result) \ + : "%r" (__result), "r" (__round)); \ + __result; \ + }) +# else +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("rotrwi %0,%1,%2" \ + : "=r" (__result) \ + : "r" (lo), "i" (MAD_F_SCALEBITS)); \ + asm ("insrwi %0,%1,%2,0" \ + : "+r" (__result) \ + : "r" (hi), "i" (MAD_F_SCALEBITS)); \ + __result; \ + }) +# endif + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- Default ------------------------------------------------------------- */ + +# elif defined(FPM_DEFAULT) + +/* + * This version is the most portable but it loses significant accuracy. + * Furthermore, accuracy is biased against the second argument, so care + * should be taken when ordering operands. + * + * The scale factors are constant as this is not used with SSO. + * + * Pre-rounding is required to stay within the limits of compliance. + */ +# if defined(OPT_SPEED) +# define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16)) +# else +# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \ + (((y) + (1L << 15)) >> 16)) +# endif + +/* ------------------------------------------------------------------------- */ + +# else +# error "no FPM selected" +# endif + +/* default implementations */ + +# if !defined(mad_f_mul) +# define mad_f_mul(x, y) \ + ({ register mad_fixed64hi_t __hi; \ + register mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + mad_f_scale64(__hi, __lo); \ + }) +# endif + +# if !defined(MAD_F_MLA) +# define MAD_F_ML0(hi, lo, x, y) ((lo) = mad_f_mul((x), (y))) +# define MAD_F_MLA(hi, lo, x, y) ((lo) += mad_f_mul((x), (y))) +# define MAD_F_MLN(hi, lo) ((lo) = -(lo)) +# define MAD_F_MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) +# endif + +# if !defined(MAD_F_ML0) +# define MAD_F_ML0(hi, lo, x, y) MAD_F_MLX((hi), (lo), (x), (y)) +# endif + +# if !defined(MAD_F_MLN) +# define MAD_F_MLN(hi, lo) ((hi) = ((lo) = -(lo)) ? ~(hi) : -(hi)) +# endif + +# if !defined(MAD_F_MLZ) +# define MAD_F_MLZ(hi, lo) mad_f_scale64((hi), (lo)) +# endif + +# if !defined(mad_f_scale64) +# if defined(OPT_ACCURACY) +# define mad_f_scale64(hi, lo) \ + ((((mad_fixed_t) \ + (((hi) << (32 - (MAD_F_SCALEBITS - 1))) | \ + ((lo) >> (MAD_F_SCALEBITS - 1)))) + 1) >> 1) +# else +# define mad_f_scale64(hi, lo) \ + ((mad_fixed_t) \ + (((hi) << (32 - MAD_F_SCALEBITS)) | \ + ((lo) >> MAD_F_SCALEBITS))) +# endif +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* C routines */ + +mad_fixed_t mad_f_abs(mad_fixed_t); +mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t); + +# endif + +/* Id: bit.h,v 1.12 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_BIT_H +# define LIBMAD_BIT_H + +struct mad_bitptr { + unsigned char const *byte; + unsigned short cache; + unsigned short left; +}; + +void mad_bit_init(struct mad_bitptr *, unsigned char const *); + +# define mad_bit_finish(bitptr) /* nothing */ + +unsigned int mad_bit_length(struct mad_bitptr const *, + struct mad_bitptr const *); + +# define mad_bit_bitsleft(bitptr) ((bitptr)->left) +unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *); + +void mad_bit_skip(struct mad_bitptr *, unsigned int); +unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); +void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); + +unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); + +# endif + +/* Id: timer.h,v 1.16 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_TIMER_H +# define LIBMAD_TIMER_H + +typedef struct { + signed long seconds; /* whole seconds */ + unsigned long fraction; /* 1/MAD_TIMER_RESOLUTION seconds */ +} mad_timer_t; + +extern mad_timer_t const mad_timer_zero; + +# define MAD_TIMER_RESOLUTION 352800000UL + +enum mad_units { + MAD_UNITS_HOURS = -2, + MAD_UNITS_MINUTES = -1, + MAD_UNITS_SECONDS = 0, + + /* metric units */ + + MAD_UNITS_DECISECONDS = 10, + MAD_UNITS_CENTISECONDS = 100, + MAD_UNITS_MILLISECONDS = 1000, + + /* audio sample units */ + + MAD_UNITS_8000_HZ = 8000, + MAD_UNITS_11025_HZ = 11025, + MAD_UNITS_12000_HZ = 12000, + + MAD_UNITS_16000_HZ = 16000, + MAD_UNITS_22050_HZ = 22050, + MAD_UNITS_24000_HZ = 24000, + + MAD_UNITS_32000_HZ = 32000, + MAD_UNITS_44100_HZ = 44100, + MAD_UNITS_48000_HZ = 48000, + + /* video frame/field units */ + + MAD_UNITS_24_FPS = 24, + MAD_UNITS_25_FPS = 25, + MAD_UNITS_30_FPS = 30, + MAD_UNITS_48_FPS = 48, + MAD_UNITS_50_FPS = 50, + MAD_UNITS_60_FPS = 60, + + /* CD audio frames */ + + MAD_UNITS_75_FPS = 75, + + /* video drop-frame units */ + + MAD_UNITS_23_976_FPS = -24, + MAD_UNITS_24_975_FPS = -25, + MAD_UNITS_29_97_FPS = -30, + MAD_UNITS_47_952_FPS = -48, + MAD_UNITS_49_95_FPS = -50, + MAD_UNITS_59_94_FPS = -60 +}; + +# define mad_timer_reset(timer) ((void) (*(timer) = mad_timer_zero)) + +int mad_timer_compare(mad_timer_t, mad_timer_t); + +# define mad_timer_sign(timer) mad_timer_compare((timer), mad_timer_zero) + +void mad_timer_negate(mad_timer_t *); +mad_timer_t mad_timer_abs(mad_timer_t); + +void mad_timer_set(mad_timer_t *, unsigned long, unsigned long, unsigned long); +void mad_timer_add(mad_timer_t *, mad_timer_t); +void mad_timer_multiply(mad_timer_t *, signed long); + +signed long mad_timer_count(mad_timer_t, enum mad_units); +unsigned long mad_timer_fraction(mad_timer_t, unsigned long); +void mad_timer_string(mad_timer_t, char *, char const *, + enum mad_units, enum mad_units, unsigned long); + +# endif + +/* Id: stream.h,v 1.20 2004/02/05 09:02:39 rob Exp */ + +# ifndef LIBMAD_STREAM_H +# define LIBMAD_STREAM_H + + +# define MAD_BUFFER_GUARD 8 +# define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD) + +enum mad_error { + MAD_ERROR_NONE = 0x0000, /* no error */ + + MAD_ERROR_BUFLEN = 0x0001, /* input buffer too small (or EOF) */ + MAD_ERROR_BUFPTR = 0x0002, /* invalid (null) buffer pointer */ + + MAD_ERROR_NOMEM = 0x0031, /* not enough memory */ + + MAD_ERROR_LOSTSYNC = 0x0101, /* lost synchronization */ + MAD_ERROR_BADLAYER = 0x0102, /* reserved header layer value */ + MAD_ERROR_BADBITRATE = 0x0103, /* forbidden bitrate value */ + MAD_ERROR_BADSAMPLERATE = 0x0104, /* reserved sample frequency value */ + MAD_ERROR_BADEMPHASIS = 0x0105, /* reserved emphasis value */ + + MAD_ERROR_BADCRC = 0x0201, /* CRC check failed */ + MAD_ERROR_BADBITALLOC = 0x0211, /* forbidden bit allocation value */ + MAD_ERROR_BADSCALEFACTOR = 0x0221, /* bad scalefactor index */ + MAD_ERROR_BADMODE = 0x0222, /* bad bitrate/mode combination */ + MAD_ERROR_BADFRAMELEN = 0x0231, /* bad frame length */ + MAD_ERROR_BADBIGVALUES = 0x0232, /* bad big_values count */ + MAD_ERROR_BADBLOCKTYPE = 0x0233, /* reserved block_type */ + MAD_ERROR_BADSCFSI = 0x0234, /* bad scalefactor selection info */ + MAD_ERROR_BADDATAPTR = 0x0235, /* bad main_data_begin pointer */ + MAD_ERROR_BADPART3LEN = 0x0236, /* bad audio data length */ + MAD_ERROR_BADHUFFTABLE = 0x0237, /* bad Huffman table select */ + MAD_ERROR_BADHUFFDATA = 0x0238, /* Huffman data overrun */ + MAD_ERROR_BADSTEREO = 0x0239 /* incompatible block_type for JS */ +}; + +# define MAD_RECOVERABLE(error) ((error) & 0xff00) + +struct mad_stream { + unsigned char const *buffer; /* input bitstream buffer */ + unsigned char const *bufend; /* end of buffer */ + unsigned long skiplen; /* bytes to skip before next frame */ + + int sync; /* stream sync found */ + unsigned long freerate; /* free bitrate (fixed) */ + + unsigned char const *this_frame; /* start of current frame */ + unsigned char const *next_frame; /* start of next frame */ + struct mad_bitptr ptr; /* current processing bit pointer */ + + struct mad_bitptr anc_ptr; /* ancillary bits pointer */ + unsigned int anc_bitlen; /* number of ancillary bits */ + + unsigned char (*main_data)[MAD_BUFFER_MDLEN]; + /* Layer III main_data() */ + unsigned int md_len; /* bytes in main_data */ + + int options; /* decoding options (see below) */ + enum mad_error error; /* error code (see above) */ +}; + +enum { + MAD_OPTION_IGNORECRC = 0x0001, /* ignore CRC errors */ + MAD_OPTION_HALFSAMPLERATE = 0x0002 /* generate PCM at 1/2 sample rate */ +# if 0 /* not yet implemented */ + MAD_OPTION_LEFTCHANNEL = 0x0010, /* decode left channel only */ + MAD_OPTION_RIGHTCHANNEL = 0x0020, /* decode right channel only */ + MAD_OPTION_SINGLECHANNEL = 0x0030 /* combine channels */ +# endif +}; + +void mad_stream_init(struct mad_stream *); +void mad_stream_finish(struct mad_stream *); + +# define mad_stream_options(stream, opts) \ + ((void) ((stream)->options = (opts))) + +void mad_stream_buffer(struct mad_stream *, + unsigned char const *, unsigned long); +void mad_stream_skip(struct mad_stream *, unsigned long); + +int mad_stream_sync(struct mad_stream *); + +char const *mad_stream_errorstr(struct mad_stream const *); + +# endif + +/* Id: frame.h,v 1.20 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_FRAME_H +# define LIBMAD_FRAME_H + + +enum mad_layer { + MAD_LAYER_I = 1, /* Layer I */ + MAD_LAYER_II = 2, /* Layer II */ + MAD_LAYER_III = 3 /* Layer III */ +}; + +enum mad_mode { + MAD_MODE_SINGLE_CHANNEL = 0, /* single channel */ + MAD_MODE_DUAL_CHANNEL = 1, /* dual channel */ + MAD_MODE_JOINT_STEREO = 2, /* joint (MS/intensity) stereo */ + MAD_MODE_STEREO = 3 /* normal LR stereo */ +}; + +enum mad_emphasis { + MAD_EMPHASIS_NONE = 0, /* no emphasis */ + MAD_EMPHASIS_50_15_US = 1, /* 50/15 microseconds emphasis */ + MAD_EMPHASIS_CCITT_J_17 = 3, /* CCITT J.17 emphasis */ + MAD_EMPHASIS_RESERVED = 2 /* unknown emphasis */ +}; + +struct mad_header { + enum mad_layer layer; /* audio layer (1, 2, or 3) */ + enum mad_mode mode; /* channel mode (see above) */ + int mode_extension; /* additional mode info */ + enum mad_emphasis emphasis; /* de-emphasis to use (see above) */ + + unsigned long bitrate; /* stream bitrate (bps) */ + unsigned int samplerate; /* sampling frequency (Hz) */ + + unsigned short crc_check; /* frame CRC accumulator */ + unsigned short crc_target; /* final target CRC checksum */ + + int flags; /* flags (see below) */ + int private_bits; /* private bits (see below) */ + + mad_timer_t duration; /* audio playing time of frame */ +}; + +struct mad_frame { + struct mad_header header; /* MPEG audio header */ + + int options; /* decoding options (from stream) */ + + mad_fixed_t sbsample[2][36][32]; /* synthesis subband filter samples */ + mad_fixed_t (*overlap)[2][32][18]; /* Layer III block overlap data */ +}; + +# define MAD_NCHANNELS(header) ((header)->mode ? 2 : 1) +# define MAD_NSBSAMPLES(header) \ + ((header)->layer == MAD_LAYER_I ? 12 : \ + (((header)->layer == MAD_LAYER_III && \ + ((header)->flags & MAD_FLAG_LSF_EXT)) ? 18 : 36)) + +enum { + MAD_FLAG_NPRIVATE_III = 0x0007, /* number of Layer III private bits */ + MAD_FLAG_INCOMPLETE = 0x0008, /* header but not data is decoded */ + + MAD_FLAG_PROTECTION = 0x0010, /* frame has CRC protection */ + MAD_FLAG_COPYRIGHT = 0x0020, /* frame is copyright */ + MAD_FLAG_ORIGINAL = 0x0040, /* frame is original (else copy) */ + MAD_FLAG_PADDING = 0x0080, /* frame has additional slot */ + + MAD_FLAG_I_STEREO = 0x0100, /* uses intensity joint stereo */ + MAD_FLAG_MS_STEREO = 0x0200, /* uses middle/side joint stereo */ + MAD_FLAG_FREEFORMAT = 0x0400, /* uses free format bitrate */ + + MAD_FLAG_LSF_EXT = 0x1000, /* lower sampling freq. extension */ + MAD_FLAG_MC_EXT = 0x2000, /* multichannel audio extension */ + MAD_FLAG_MPEG_2_5_EXT = 0x4000 /* MPEG 2.5 (unofficial) extension */ +}; + +enum { + MAD_PRIVATE_HEADER = 0x0100, /* header private bit */ + MAD_PRIVATE_III = 0x001f /* Layer III private bits (up to 5) */ +}; + +void mad_header_init(struct mad_header *); + +# define mad_header_finish(header) /* nothing */ + +int mad_header_decode(struct mad_header *, struct mad_stream *); + +void mad_frame_init(struct mad_frame *); +void mad_frame_finish(struct mad_frame *); + +int mad_frame_decode(struct mad_frame *, struct mad_stream *); + +void mad_frame_mute(struct mad_frame *); + +# endif + +/* Id: synth.h,v 1.15 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_SYNTH_H +# define LIBMAD_SYNTH_H + + +struct mad_pcm { + unsigned int samplerate; /* sampling frequency (Hz) */ + unsigned short channels; /* number of channels */ + unsigned short length; /* number of samples per channel */ + mad_fixed_t samples[2][1152]; /* PCM output samples [ch][sample] */ +}; + +struct mad_synth { + mad_fixed_t filter[2][2][2][16][8]; /* polyphase filterbank outputs */ + /* [ch][eo][peo][s][v] */ + + unsigned int phase; /* current processing phase */ + + struct mad_pcm pcm; /* PCM output */ +}; + +/* single channel PCM selector */ +enum { + MAD_PCM_CHANNEL_SINGLE = 0 +}; + +/* dual channel PCM selector */ +enum { + MAD_PCM_CHANNEL_DUAL_1 = 0, + MAD_PCM_CHANNEL_DUAL_2 = 1 +}; + +/* stereo PCM selector */ +enum { + MAD_PCM_CHANNEL_STEREO_LEFT = 0, + MAD_PCM_CHANNEL_STEREO_RIGHT = 1 +}; + +void mad_synth_init(struct mad_synth *); + +# define mad_synth_finish(synth) /* nothing */ + +void mad_synth_mute(struct mad_synth *); + +void mad_synth_frame(struct mad_synth *, struct mad_frame const *); + +# endif + +/* Id: decoder.h,v 1.17 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_DECODER_H +# define LIBMAD_DECODER_H + + +enum mad_decoder_mode { + MAD_DECODER_MODE_SYNC = 0, + MAD_DECODER_MODE_ASYNC +}; + +enum mad_flow { + MAD_FLOW_CONTINUE = 0x0000, /* continue normally */ + MAD_FLOW_STOP = 0x0010, /* stop decoding normally */ + MAD_FLOW_BREAK = 0x0011, /* stop decoding and signal an error */ + MAD_FLOW_IGNORE = 0x0020 /* ignore the current frame */ +}; + +struct mad_decoder { + enum mad_decoder_mode mode; + + int options; + + struct { + long pid; + int in; + int out; + } async; + + struct { + struct mad_stream stream; + struct mad_frame frame; + struct mad_synth synth; + } *sync; + + void *cb_data; + + enum mad_flow (*input_func)(void *, struct mad_stream *); + enum mad_flow (*header_func)(void *, struct mad_header const *); + enum mad_flow (*filter_func)(void *, + struct mad_stream const *, struct mad_frame *); + enum mad_flow (*output_func)(void *, + struct mad_header const *, struct mad_pcm *); + enum mad_flow (*error_func)(void *, struct mad_stream *, struct mad_frame *); + enum mad_flow (*message_func)(void *, void *, unsigned int *); +}; + +void mad_decoder_init(struct mad_decoder *, void *, + enum mad_flow (*)(void *, struct mad_stream *), + enum mad_flow (*)(void *, struct mad_header const *), + enum mad_flow (*)(void *, + struct mad_stream const *, + struct mad_frame *), + enum mad_flow (*)(void *, + struct mad_header const *, + struct mad_pcm *), + enum mad_flow (*)(void *, + struct mad_stream *, + struct mad_frame *), + enum mad_flow (*)(void *, void *, unsigned int *)); +int mad_decoder_finish(struct mad_decoder *); + +# define mad_decoder_options(decoder, opts) \ + ((void) ((decoder)->options = (opts))) + +int mad_decoder_run(struct mad_decoder *, enum mad_decoder_mode); +int mad_decoder_message(struct mad_decoder *, void *, unsigned int *); + +# endif + +#ifdef __cplusplus +} +#endif diff --git a/MacOSX/codecs/include/mikmod.h b/MacOSX/codecs/include/mikmod.h new file mode 100644 index 0000000..0679581 --- /dev/null +++ b/MacOSX/codecs/include/mikmod.h @@ -0,0 +1,880 @@ +/* MikMod sound library + (c) 1998-2014 Miodrag Vallat and others - see the AUTHORS file + for complete list. + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +/*============================================================================== + + MikMod sound library include file + + ==============================================================================*/ + +#ifndef _MIKMOD_H_ +#define _MIKMOD_H_ + +#include <stdio.h> +#include <stdlib.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * ========== Compiler magic for shared libraries + * + * ========== NOTE TO WINDOWS DEVELOPERS: + * If you are compiling for Windows and will link to the static library + * (libmikmod.a with MinGW, or mikmod_static.lib with MSVC, Watcom, ..), + * you must define MIKMOD_STATIC in your project. Otherwise, dllimport + * will be assumed. + */ +#if defined(_WIN32) || defined(__CYGWIN__) +# if defined(MIKMOD_BUILD) && defined(DLL_EXPORT) /* building libmikmod as a dll for windows */ +# define MIKMODAPI __declspec(dllexport) +# elif defined(MIKMOD_BUILD) || defined(MIKMOD_STATIC) /* building or using static libmikmod for windows */ +# define MIKMODAPI +# else +# define MIKMODAPI __declspec(dllimport) /* using libmikmod dll for windows */ +# endif +#elif defined(__OS2__) && defined(__WATCOMC__) +# if defined(MIKMOD_BUILD) && defined(__SW_BD) /* building libmikmod as a dll for os/2 */ +# define MIKMODAPI __declspec(dllexport) +# else +# define MIKMODAPI /* using dll or static libmikmod for os/2 */ +# endif +/* SYM_VISIBILITY should be defined if both the compiler + * and the target support the visibility attributes. the + * configury does that automatically. for the standalone + * makefiles, etc, the developer should add the required + * flags, i.e.: -DSYM_VISIBILITY -fvisibility=hidden */ +#elif defined(MIKMOD_BUILD) && defined(SYM_VISIBILITY) +# define MIKMODAPI __attribute__((visibility("default"))) +#else +# define MIKMODAPI +#endif + +/* + * ========== Library version + */ + +#define LIBMIKMOD_VERSION_MAJOR 3L +#define LIBMIKMOD_VERSION_MINOR 3L +#define LIBMIKMOD_REVISION 13L + +#define LIBMIKMOD_VERSION \ + ((LIBMIKMOD_VERSION_MAJOR<<16)| \ + (LIBMIKMOD_VERSION_MINOR<< 8)| \ + (LIBMIKMOD_REVISION)) + +MIKMODAPI extern long MikMod_GetVersion(void); + +/* + * ========== Dependency platform headers + */ + +#if defined(_WIN32)||defined(__CYGWIN__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include <windows.h> +#include <io.h> +#include <mmsystem.h> +#define _MIKMOD_WIN32 +#endif + +#if defined(__DJGPP__) || defined(MSDOS) || defined(__MSDOS__) || defined(__DOS__) +#define _MIKMOD_DOS +#endif + +#if defined(__OS2__) || defined(__EMX__) +#define INCL_DOSSEMAPHORES +#include <os2.h> +#include <io.h> +#define _MIKMOD_OS2 +#endif + +#if defined(__MORPHOS__) || defined(__AROS__) || defined(_AMIGA) || defined(__AMIGA__) || defined(__amigaos__) || defined(AMIGAOS) +#include <exec/types.h> +#define _MIKMOD_AMIGA +#endif + +/* + * ========== Platform independent-type definitions + * (pain when it comes to cross-platform maintenance..) + */ + +#if !(defined(_MIKMOD_OS2) || defined(_MIKMOD_WIN32)) +typedef char CHAR; +#endif + +/* BOOL: 0=false, <>0 true -- 16 bits on Amiga, int-wide on others. */ +#if !(defined(_MIKMOD_OS2) || defined(_MIKMOD_WIN32) || defined(_MIKMOD_AMIGA)) +typedef int BOOL; +#endif + +/* 1 byte, signed and unsigned: */ +typedef signed char SBYTE; +#ifndef _MIKMOD_AMIGA +typedef unsigned char UBYTE; +#endif + +/* 2 bytes, signed and unsigned: */ +typedef signed short int SWORD; +#if !defined(_MIKMOD_AMIGA) +typedef unsigned short int UWORD; +#endif + +/* 4 bytes, signed and unsigned: */ +#if defined(_LP64) || defined(__LP64__) || defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(__powerpc64__) + /* 64 bit architectures: */ +typedef signed int SLONG; +#if !(defined(_WIN32) || defined(_MIKMOD_AMIGA)) +typedef unsigned int ULONG; +#endif + +#else /* 32 bit architectures: */ +typedef signed long int SLONG; +#if !(defined(_MIKMOD_OS2) || defined(_MIKMOD_WIN32) || defined(_MIKMOD_AMIGA)) +typedef unsigned long int ULONG; +#endif +#endif + +/* make sure types are of correct sizes: */ +typedef int __mikmod_typetest [ + ( + (sizeof(SBYTE)==1) && (sizeof(UBYTE)==1) + && (sizeof(SWORD)==2) && (sizeof(UWORD)==2) + && (sizeof(SLONG)==4) && (sizeof(ULONG)==4) +#ifndef _MIKMOD_AMIGA + && (sizeof(BOOL) == sizeof(int)) +#endif + && (sizeof(CHAR) == sizeof(char)) + ) * 2 - 1 ]; + +/* + * ========== Error codes + */ + +enum { + MMERR_OPENING_FILE = 1, + MMERR_OUT_OF_MEMORY, + MMERR_DYNAMIC_LINKING, + + MMERR_SAMPLE_TOO_BIG, + MMERR_OUT_OF_HANDLES, + MMERR_UNKNOWN_WAVE_TYPE, + + MMERR_LOADING_PATTERN, + MMERR_LOADING_TRACK, + MMERR_LOADING_HEADER, + MMERR_LOADING_SAMPLEINFO, + MMERR_NOT_A_MODULE, + MMERR_NOT_A_STREAM, + MMERR_MED_SYNTHSAMPLES, + MMERR_ITPACK_INVALID_DATA, + + MMERR_DETECTING_DEVICE, + MMERR_INVALID_DEVICE, + MMERR_INITIALIZING_MIXER, + MMERR_OPENING_AUDIO, + MMERR_8BIT_ONLY, + MMERR_16BIT_ONLY, + MMERR_STEREO_ONLY, + MMERR_ULAW, + MMERR_NON_BLOCK, + + MMERR_AF_AUDIO_PORT, + + MMERR_AIX_CONFIG_INIT, + MMERR_AIX_CONFIG_CONTROL, + MMERR_AIX_CONFIG_START, + + MMERR_GUS_SETTINGS, + MMERR_GUS_RESET, + MMERR_GUS_TIMER, + + MMERR_HP_SETSAMPLESIZE, + MMERR_HP_SETSPEED, + MMERR_HP_CHANNELS, + MMERR_HP_AUDIO_OUTPUT, + MMERR_HP_AUDIO_DESC, + MMERR_HP_BUFFERSIZE, + + MMERR_OSS_SETFRAGMENT, + MMERR_OSS_SETSAMPLESIZE, + MMERR_OSS_SETSTEREO, + MMERR_OSS_SETSPEED, + + MMERR_SGI_SPEED, + MMERR_SGI_16BIT, + MMERR_SGI_8BIT, + MMERR_SGI_STEREO, + MMERR_SGI_MONO, + + MMERR_SUN_INIT, + + MMERR_OS2_MIXSETUP, + MMERR_OS2_SEMAPHORE, + MMERR_OS2_TIMER, + MMERR_OS2_THREAD, + + MMERR_DS_PRIORITY, + MMERR_DS_BUFFER, + MMERR_DS_FORMAT, + MMERR_DS_NOTIFY, + MMERR_DS_EVENT, + MMERR_DS_THREAD, + MMERR_DS_UPDATE, + + MMERR_WINMM_HANDLE, + MMERR_WINMM_ALLOCATED, + MMERR_WINMM_DEVICEID, + MMERR_WINMM_FORMAT, + MMERR_WINMM_UNKNOWN, + + MMERR_MAC_SPEED, + MMERR_MAC_START, + + MMERR_OSX_UNKNOWN_DEVICE, /* obsolete */ + MMERR_OSX_BAD_PROPERTY, /* obsolete */ + MMERR_OSX_UNSUPPORTED_FORMAT, + MMERR_OSX_SET_STEREO, /* obsolete */ + MMERR_OSX_BUFFER_ALLOC, /* obsolete */ + MMERR_OSX_ADD_IO_PROC, /* obsolete */ + MMERR_OSX_DEVICE_START, + MMERR_OSX_PTHREAD, /* obsolete */ + + MMERR_DOSWSS_STARTDMA, + MMERR_DOSSB_STARTDMA, + + MMERR_NO_FLOAT32,/* should actually be after MMERR_ULAW or something */ + + MMERR_OPENAL_CREATECTX, + MMERR_OPENAL_CTXCURRENT, + MMERR_OPENAL_GENBUFFERS, + MMERR_OPENAL_GENSOURCES, + MMERR_OPENAL_SOURCE, + MMERR_OPENAL_QUEUEBUFFERS, + MMERR_OPENAL_UNQUEUEBUFFERS, + MMERR_OPENAL_BUFFERDATA, + MMERR_OPENAL_GETSOURCE, + MMERR_OPENAL_SOURCEPLAY, + MMERR_OPENAL_SOURCESTOP, + + MMERR_ALSA_NOCONFIG, + MMERR_ALSA_SETPARAMS, + MMERR_ALSA_SETFORMAT, + MMERR_ALSA_SETRATE, + MMERR_ALSA_SETCHANNELS, + MMERR_ALSA_BUFFERSIZE, + MMERR_ALSA_PCM_START, + MMERR_ALSA_PCM_WRITE, + MMERR_ALSA_PCM_RECOVER, + + MMERR_SNDIO_SETPARAMS, + MMERR_SNDIO_BADPARAMS, + + MMERR_MAX +}; + +/* + * ========== Error handling + */ + +typedef void (MikMod_handler)(void); +typedef MikMod_handler *MikMod_handler_t; + +MIKMODAPI extern int MikMod_errno; +MIKMODAPI extern BOOL MikMod_critical; +MIKMODAPI extern const char *MikMod_strerror(int); + +MIKMODAPI extern MikMod_handler_t MikMod_RegisterErrorHandler(MikMod_handler_t); + +/* + * ========== Library initialization and core functions + */ + +struct MDRIVER; + +MIKMODAPI extern void MikMod_RegisterAllDrivers(void); + +MIKMODAPI extern CHAR* MikMod_InfoDriver(void); +MIKMODAPI extern void MikMod_RegisterDriver(struct MDRIVER*); +MIKMODAPI extern int MikMod_DriverFromAlias(const CHAR*); +MIKMODAPI extern struct MDRIVER *MikMod_DriverByOrdinal(int); + +MIKMODAPI extern int MikMod_Init(const CHAR*); +MIKMODAPI extern void MikMod_Exit(void); +MIKMODAPI extern int MikMod_Reset(const CHAR*); +MIKMODAPI extern int MikMod_SetNumVoices(int,int); +MIKMODAPI extern BOOL MikMod_Active(void); +MIKMODAPI extern int MikMod_EnableOutput(void); +MIKMODAPI extern void MikMod_DisableOutput(void); +MIKMODAPI extern void MikMod_Update(void); + +MIKMODAPI extern BOOL MikMod_InitThreads(void); +MIKMODAPI extern void MikMod_Lock(void); +MIKMODAPI extern void MikMod_Unlock(void); + +MIKMODAPI extern void* MikMod_malloc(size_t); +MIKMODAPI extern void* MikMod_calloc(size_t,size_t); +MIKMODAPI extern void* MikMod_realloc(void*,size_t); +MIKMODAPI extern CHAR* MikMod_strdup(const CHAR*); +MIKMODAPI extern void MikMod_free(void*); /* frees if ptr != NULL */ + +/* + * ========== Reader, Writer + */ + +typedef struct MREADER { + int (*Seek)(struct MREADER*,long,int); + long (*Tell)(struct MREADER*); + BOOL (*Read)(struct MREADER*,void*,size_t); + int (*Get)(struct MREADER*); + BOOL (*Eof)(struct MREADER*); + long iobase; + long prev_iobase; +} MREADER; + +typedef struct MWRITER { + int (*Seek)(struct MWRITER*, long, int); + long (*Tell)(struct MWRITER*); + BOOL (*Write)(struct MWRITER*, const void*, size_t); + int (*Put)(struct MWRITER*, int); +} MWRITER; + +/* + * ========== Samples + */ + +/* Sample playback should not be interrupted */ +#define SFX_CRITICAL 1 + +/* Sample format [loading and in-memory] flags: */ +#define SF_16BITS 0x0001 +#define SF_STEREO 0x0002 +#define SF_SIGNED 0x0004 +#define SF_BIG_ENDIAN 0x0008 +#define SF_DELTA 0x0010 +#define SF_ITPACKED 0x0020 +#define SF_ADPCM4 0x0040 + +#define SF_FORMATMASK 0x007F + +/* General Playback flags */ + +#define SF_LOOP 0x0100 +#define SF_BIDI 0x0200 +#define SF_REVERSE 0x0400 +#define SF_SUSTAIN 0x0800 + +#define SF_PLAYBACKMASK 0x0C00 + +/* Module-only Playback Flags */ + +#define SF_OWNPAN 0x1000 +#define SF_UST_LOOP 0x2000 + +#define SF_EXTRAPLAYBACKMASK 0x3000 + +/* Panning constants */ +#define PAN_LEFT 0 +#define PAN_HALFLEFT 64 +#define PAN_CENTER 128 +#define PAN_HALFRIGHT 192 +#define PAN_RIGHT 255 +#define PAN_SURROUND 512 /* panning value for Dolby Surround */ + +typedef struct SAMPLE { + SWORD panning; /* panning (0-255 or PAN_SURROUND) */ + ULONG speed; /* Base playing speed/frequency of note */ + UBYTE volume; /* volume 0-64 */ + UWORD inflags; /* sample format on disk */ + UWORD flags; /* sample format in memory */ + ULONG length; /* length of sample (in samples!) */ + ULONG loopstart; /* repeat position (relative to start, in samples) */ + ULONG loopend; /* repeat end */ + ULONG susbegin; /* sustain loop begin (in samples) \ Not Supported */ + ULONG susend; /* sustain loop end / Yet! */ + + /* Variables used by the module player only! (ignored for sound effects) */ + UBYTE globvol; /* global volume */ + UBYTE vibflags; /* autovibrato flag stuffs */ + UBYTE vibtype; /* Vibratos moved from INSTRUMENT to SAMPLE */ + UBYTE vibsweep; + UBYTE vibdepth; + UBYTE vibrate; + CHAR* samplename; /* name of the sample */ + + /* Values used internally only */ + UWORD avibpos; /* autovibrato pos [player use] */ + UBYTE divfactor; /* for sample scaling, maintains proper period slides */ + ULONG seekpos; /* seek position in file */ + SWORD handle; /* sample handle used by individual drivers */ + void (*onfree)(void *ctx); /* called from Sample_Free if not NULL */ + void *ctx; /* context passed to previous function*/ +} SAMPLE; + +/* Sample functions */ + +MIKMODAPI extern SAMPLE *Sample_LoadRaw(const CHAR *,ULONG rate, ULONG channel, ULONG flags); +MIKMODAPI extern SAMPLE *Sample_LoadRawFP(FILE *fp,ULONG rate,ULONG channel, ULONG flags); +MIKMODAPI extern SAMPLE *Sample_LoadRawMem(const char *buf, int len, ULONG rate, ULONG channel, ULONG flags); +MIKMODAPI extern SAMPLE *Sample_LoadRawGeneric(MREADER*reader,ULONG rate, ULONG channel, ULONG flags); + +MIKMODAPI extern SAMPLE *Sample_Load(const CHAR*); +MIKMODAPI extern SAMPLE *Sample_LoadFP(FILE*); +MIKMODAPI extern SAMPLE *Sample_LoadMem(const char *buf, int len); +MIKMODAPI extern SAMPLE *Sample_LoadGeneric(MREADER*); +MIKMODAPI extern void Sample_Free(SAMPLE*); +MIKMODAPI extern SBYTE Sample_Play(SAMPLE*,ULONG,UBYTE); + +MIKMODAPI extern void Voice_SetVolume(SBYTE,UWORD); +MIKMODAPI extern UWORD Voice_GetVolume(SBYTE); +MIKMODAPI extern void Voice_SetFrequency(SBYTE,ULONG); +MIKMODAPI extern ULONG Voice_GetFrequency(SBYTE); +MIKMODAPI extern void Voice_SetPanning(SBYTE,ULONG); +MIKMODAPI extern ULONG Voice_GetPanning(SBYTE); +MIKMODAPI extern void Voice_Play(SBYTE,SAMPLE*,ULONG); +MIKMODAPI extern void Voice_Stop(SBYTE); +MIKMODAPI extern BOOL Voice_Stopped(SBYTE); +MIKMODAPI extern SLONG Voice_GetPosition(SBYTE); +MIKMODAPI extern ULONG Voice_RealVolume(SBYTE); + +/* + * ========== Internal module representation (UniMod) + */ + +/* + Instrument definition - for information only, the only field which may be + of use in user programs is the name field +*/ + +/* Instrument note count */ +#define INSTNOTES 120 + +/* Envelope point */ +typedef struct ENVPT { + SWORD pos; + SWORD val; +} ENVPT; + +/* Envelope point count */ +#define ENVPOINTS 32 + +/* Instrument structure */ +typedef struct INSTRUMENT { + CHAR* insname; + + UBYTE flags; + UWORD samplenumber[INSTNOTES]; + UBYTE samplenote[INSTNOTES]; + + UBYTE nnatype; + UBYTE dca; /* duplicate check action */ + UBYTE dct; /* duplicate check type */ + UBYTE globvol; + UWORD volfade; + SWORD panning; /* instrument-based panning var */ + + UBYTE pitpansep; /* pitch pan separation (0 to 255) */ + UBYTE pitpancenter; /* pitch pan center (0 to 119) */ + UBYTE rvolvar; /* random volume varations (0 - 100%) */ + UBYTE rpanvar; /* random panning varations (0 - 100%) */ + + /* volume envelope */ + UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE volpts; + UBYTE volsusbeg; + UBYTE volsusend; + UBYTE volbeg; + UBYTE volend; + ENVPT volenv[ENVPOINTS]; + /* panning envelope */ + UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE panpts; + UBYTE pansusbeg; + UBYTE pansusend; + UBYTE panbeg; + UBYTE panend; + ENVPT panenv[ENVPOINTS]; + /* pitch envelope */ + UBYTE pitflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE pitpts; + UBYTE pitsusbeg; + UBYTE pitsusend; + UBYTE pitbeg; + UBYTE pitend; + ENVPT pitenv[ENVPOINTS]; +} INSTRUMENT; + +struct MP_CONTROL; +struct MP_VOICE; + +/* + Module definition +*/ + +/* maximum master channels supported */ +#define UF_MAXCHAN 64 + +/* Module flags */ +#define UF_XMPERIODS 0x0001 /* XM periods / finetuning */ +#define UF_LINEAR 0x0002 /* LINEAR periods (UF_XMPERIODS must be set) */ +#define UF_INST 0x0004 /* Instruments are used */ +#define UF_NNA 0x0008 /* IT: NNA used, set numvoices rather + than numchn */ +#define UF_S3MSLIDES 0x0010 /* uses old S3M volume slides */ +#define UF_BGSLIDES 0x0020 /* continue volume slides in the background */ +#define UF_HIGHBPM 0x0040 /* MED: can use >255 bpm */ +#define UF_NOWRAP 0x0080 /* XM-type (i.e. illogical) pattern break + semantics */ +#define UF_ARPMEM 0x0100 /* IT: need arpeggio memory */ +#define UF_FT2QUIRKS 0x0200 /* emulate some FT2 replay quirks */ +#define UF_PANNING 0x0400 /* module uses panning effects or have + non-tracker default initial panning */ +#define UF_FARTEMPO 0x0800 /* Module uses Farandole tempo calculations */ + +typedef struct MODULE { + /* general module information */ + CHAR* songname; /* name of the song */ + CHAR* modtype; /* string type of module loaded */ + CHAR* comment; /* module comments */ + + UWORD flags; /* See module flags above */ + UBYTE numchn; /* number of module channels */ + UBYTE numvoices; /* max # voices used for full NNA playback */ + UWORD numpos; /* number of positions in this song */ + UWORD numpat; /* number of patterns in this song */ + UWORD numins; /* number of instruments */ + UWORD numsmp; /* number of samples */ + + struct INSTRUMENT* instruments; /* all instruments */ + struct SAMPLE* samples; /* all samples */ + + UBYTE realchn; /* real number of channels used */ + UBYTE totalchn; /* total number of channels used (incl NNAs) */ + + /* playback settings */ + UWORD reppos; /* restart position */ + UBYTE initspeed; /* initial song speed */ + UWORD inittempo; /* initial song tempo */ + UBYTE initvolume; /* initial global volume (0 - 128) */ + UWORD panning[UF_MAXCHAN]; /* panning positions */ + UBYTE chanvol[UF_MAXCHAN]; /* channel positions */ + UWORD bpm; /* current beats-per-minute speed */ + UWORD sngspd; /* current song speed */ + SWORD volume; /* song volume (0-128) (or user volume) */ + + BOOL extspd; /* extended speed flag (default enabled) */ + BOOL panflag; /* panning flag (default enabled) */ + BOOL wrap; /* wrap module ? (default disabled) */ + BOOL loop; /* allow module to loop ? (default enabled) */ + BOOL fadeout; /* volume fade out during last pattern */ + + UWORD patpos; /* current row number */ + SWORD sngpos; /* current song position */ + ULONG sngtime; /* current song time in 2^-10 seconds */ + + SWORD relspd; /* relative speed factor */ + + /* internal module representation */ + UWORD numtrk; /* number of tracks */ + UBYTE** tracks; /* array of numtrk pointers to tracks */ + UWORD* patterns; /* array of Patterns */ + UWORD* pattrows; /* array of number of rows for each pattern */ + UWORD* positions; /* all positions */ + + BOOL forbid; /* if true, no player update! */ + UWORD numrow; /* number of rows on current pattern */ + UWORD vbtick; /* tick counter (counts from 0 to sngspd) */ + UWORD sngremainder;/* used for song time computation */ + + struct MP_CONTROL* control; /* Effects Channel info (size pf->numchn) */ + struct MP_VOICE* voice; /* Audio Voice information (size md_numchn) */ + + UBYTE globalslide; /* global volume slide rate */ + UBYTE pat_repcrazy;/* module has just looped to position -1 */ + UWORD patbrk; /* position where to start a new pattern */ + UBYTE patdly; /* patterndelay counter (command memory) */ + UBYTE patdly2; /* patterndelay counter (real one) */ + SWORD posjmp; /* flag to indicate a jump is needed... */ + UWORD bpmlimit; /* threshold to detect bpm or speed values */ +} MODULE; + + +/* This structure is used to query current playing voices status */ +typedef struct VOICEINFO { + INSTRUMENT* i; /* Current channel instrument */ + SAMPLE* s; /* Current channel sample */ + SWORD panning; /* panning position */ + SBYTE volume; /* channel's "global" volume (0..64) */ + UWORD period; /* period to play the sample at */ + UBYTE kick; /* if true = sample has been restarted */ +} VOICEINFO; + +/* + * ========== Module loaders + */ + +struct MLOADER; + +MIKMODAPI extern CHAR* MikMod_InfoLoader(void); +MIKMODAPI extern void MikMod_RegisterAllLoaders(void); +MIKMODAPI extern void MikMod_RegisterLoader(struct MLOADER*); + +MIKMODAPI extern struct MLOADER load_669; /* 669 and Extended-669 (by Tran/Renaissance) */ +MIKMODAPI extern struct MLOADER load_amf; /* DMP Advanced Module Format (by Otto Chrons) */ +MIKMODAPI extern struct MLOADER load_asy; /* ASYLUM Music Format 1.0 */ +MIKMODAPI extern struct MLOADER load_dsm; /* DSIK internal module format */ +MIKMODAPI extern struct MLOADER load_far; /* Farandole Composer (by Daniel Potter) */ +MIKMODAPI extern struct MLOADER load_gdm; /* General DigiMusic (by Edward Schlunder) */ +MIKMODAPI extern struct MLOADER load_gt2; /* Graoumf tracker */ +MIKMODAPI extern struct MLOADER load_it; /* Impulse Tracker (by Jeffrey Lim) */ +MIKMODAPI extern struct MLOADER load_imf; /* Imago Orpheus (by Lutz Roeder) */ +MIKMODAPI extern struct MLOADER load_med; /* Amiga MED modules (by Teijo Kinnunen) */ +MIKMODAPI extern struct MLOADER load_m15; /* Soundtracker 15-instrument */ +MIKMODAPI extern struct MLOADER load_mod; /* Standard 31-instrument Module loader */ +MIKMODAPI extern struct MLOADER load_mtm; /* Multi-Tracker Module (by Renaissance) */ +MIKMODAPI extern struct MLOADER load_okt; /* Amiga Oktalyzer */ +MIKMODAPI extern struct MLOADER load_stm; /* ScreamTracker 2 (by Future Crew) */ +MIKMODAPI extern struct MLOADER load_stx; /* STMIK 0.2 (by Future Crew) */ +MIKMODAPI extern struct MLOADER load_s3m; /* ScreamTracker 3 (by Future Crew) */ +MIKMODAPI extern struct MLOADER load_ult; /* UltraTracker (by MAS) */ +MIKMODAPI extern struct MLOADER load_umx; /* Unreal UMX container of Epic Games */ +MIKMODAPI extern struct MLOADER load_uni; /* MikMod and APlayer internal module format */ +MIKMODAPI extern struct MLOADER load_xm; /* FastTracker 2 (by Triton) */ + +/* + * ========== Module player + */ + +MIKMODAPI extern MODULE* Player_Load(const CHAR*,int,BOOL); +MIKMODAPI extern MODULE* Player_LoadFP(FILE*,int,BOOL); +MIKMODAPI extern MODULE* Player_LoadMem(const char *buffer,int len,int maxchan,BOOL curious); +MIKMODAPI extern MODULE* Player_LoadGeneric(MREADER*,int,BOOL); +MIKMODAPI extern CHAR* Player_LoadTitle(const CHAR*); +MIKMODAPI extern CHAR* Player_LoadTitleFP(FILE*); +MIKMODAPI extern CHAR* Player_LoadTitleMem(const char *buffer,int len); +MIKMODAPI extern CHAR* Player_LoadTitleGeneric(MREADER*); + +MIKMODAPI extern void Player_Free(MODULE*); +MIKMODAPI extern void Player_Start(MODULE*); +MIKMODAPI extern BOOL Player_Active(void); +MIKMODAPI extern void Player_Stop(void); +MIKMODAPI extern void Player_TogglePause(void); +MIKMODAPI extern BOOL Player_Paused(void); +MIKMODAPI extern void Player_NextPosition(void); +MIKMODAPI extern void Player_PrevPosition(void); +MIKMODAPI extern void Player_SetPosition(UWORD); +MIKMODAPI extern BOOL Player_Muted(UBYTE); +MIKMODAPI extern void Player_SetVolume(SWORD); +MIKMODAPI extern MODULE* Player_GetModule(void); +MIKMODAPI extern void Player_SetSpeed(UWORD); +MIKMODAPI extern void Player_SetTempo(UWORD); +MIKMODAPI extern void Player_Unmute(SLONG,...); +MIKMODAPI extern void Player_Mute(SLONG,...); +MIKMODAPI extern void Player_ToggleMute(SLONG,...); +MIKMODAPI extern int Player_GetChannelVoice(UBYTE); +MIKMODAPI extern UWORD Player_GetChannelPeriod(UBYTE); +MIKMODAPI extern int Player_QueryVoices(UWORD numvoices, VOICEINFO *vinfo); +MIKMODAPI extern int Player_GetRow(void); +MIKMODAPI extern int Player_GetOrder(void); + +typedef void (*MikMod_player_t)(void); +typedef void (*MikMod_callback_t)(unsigned char *data, size_t len); + +MIKMODAPI extern MikMod_player_t MikMod_RegisterPlayer(MikMod_player_t); + +#define MUTE_EXCLUSIVE 32000 +#define MUTE_INCLUSIVE 32001 + +/* + * ========== Drivers + */ + +enum { + MD_MUSIC = 0, + MD_SNDFX +}; + +enum { + MD_HARDWARE = 0, + MD_SOFTWARE +}; + +/* Mixing flags */ + +/* These ones take effect only after MikMod_Init or MikMod_Reset */ +#define DMODE_16BITS 0x0001 /* enable 16 bit output */ +#define DMODE_STEREO 0x0002 /* enable stereo output */ +#define DMODE_SOFT_SNDFX 0x0004 /* Process sound effects via software mixer */ +#define DMODE_SOFT_MUSIC 0x0008 /* Process music via software mixer */ +#define DMODE_HQMIXER 0x0010 /* Use high-quality (slower) software mixer */ +#define DMODE_FLOAT 0x0020 /* enable float output */ +/* These take effect immediately. */ +#define DMODE_SURROUND 0x0100 /* enable surround sound */ +#define DMODE_INTERP 0x0200 /* enable interpolation */ +#define DMODE_REVERSE 0x0400 /* reverse stereo */ +#define DMODE_SIMDMIXER 0x0800 /* enable SIMD mixing */ +#define DMODE_NOISEREDUCTION 0x1000 /* Low pass filtering */ + + +struct SAMPLOAD; + +typedef struct MDRIVER { + struct MDRIVER* next; + const CHAR* Name; + const CHAR* Version; + + UBYTE HardVoiceLimit; /* Limit of hardware mixer voices */ + UBYTE SoftVoiceLimit; /* Limit of software mixer voices */ + + const CHAR* Alias; + const CHAR* CmdLineHelp; + + void (*CommandLine) (const CHAR*); + BOOL (*IsPresent) (void); + SWORD (*SampleLoad) (struct SAMPLOAD*,int); + void (*SampleUnload) (SWORD); + ULONG (*FreeSampleSpace) (int); + ULONG (*RealSampleLength) (int,struct SAMPLE*); + int (*Init) (void); + void (*Exit) (void); + int (*Reset) (void); + int (*SetNumVoices) (void); + int (*PlayStart) (void); + void (*PlayStop) (void); + void (*Update) (void); + void (*Pause) (void); + void (*VoiceSetVolume) (UBYTE,UWORD); + UWORD (*VoiceGetVolume) (UBYTE); + void (*VoiceSetFrequency)(UBYTE,ULONG); + ULONG (*VoiceGetFrequency)(UBYTE); + void (*VoiceSetPanning) (UBYTE,ULONG); + ULONG (*VoiceGetPanning) (UBYTE); + void (*VoicePlay) (UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD); + void (*VoiceStop) (UBYTE); + BOOL (*VoiceStopped) (UBYTE); + SLONG (*VoiceGetPosition) (UBYTE); + ULONG (*VoiceRealVolume) (UBYTE); +} MDRIVER; + +/* These variables can be changed at ANY time and results will be immediate */ +MIKMODAPI extern UBYTE md_volume; /* global sound volume (0-128) */ +MIKMODAPI extern UBYTE md_musicvolume; /* volume of song */ +MIKMODAPI extern UBYTE md_sndfxvolume; /* volume of sound effects */ +MIKMODAPI extern UBYTE md_reverb; /* 0 = none; 15 = chaos */ +MIKMODAPI extern UBYTE md_pansep; /* 0 = mono; 128 == 100% (full left/right) */ + +/* The variables below can be changed at any time, but changes will not be + implemented until MikMod_Reset is called. A call to MikMod_Reset may result + in a skip or pop in audio (depending on the soundcard driver and the settings + changed). */ +MIKMODAPI extern UWORD md_device; /* device */ +MIKMODAPI extern UWORD md_mixfreq; /* mixing frequency */ +MIKMODAPI extern UWORD md_mode; /* mode. See DMODE_? flags above */ + +/* The following variable should not be changed! */ +MIKMODAPI extern MDRIVER* md_driver; /* Current driver in use. */ + +/* Known drivers list */ + +MIKMODAPI extern struct MDRIVER drv_nos; /* no sound */ +MIKMODAPI extern struct MDRIVER drv_pipe; /* piped output */ +MIKMODAPI extern struct MDRIVER drv_raw; /* raw file disk writer [music.raw] */ +MIKMODAPI extern struct MDRIVER drv_stdout; /* output to stdout */ +MIKMODAPI extern struct MDRIVER drv_wav; /* RIFF WAVE file disk writer [music.wav] */ +MIKMODAPI extern struct MDRIVER drv_aiff; /* AIFF file disk writer [music.aiff] */ + +MIKMODAPI extern struct MDRIVER drv_ultra; /* Linux Ultrasound driver */ +MIKMODAPI extern struct MDRIVER drv_sam9407;/* Linux sam9407 driver */ + +MIKMODAPI extern struct MDRIVER drv_AF; /* Dec Alpha AudioFile */ +MIKMODAPI extern struct MDRIVER drv_ahi; /* Amiga AHI */ +MIKMODAPI extern struct MDRIVER drv_aix; /* AIX audio device */ +MIKMODAPI extern struct MDRIVER drv_alsa; /* Advanced Linux Sound Architecture (ALSA) */ +MIKMODAPI extern struct MDRIVER drv_esd; /* Enlightened sound daemon (EsounD) */ +MIKMODAPI extern struct MDRIVER drv_pulseaudio; /* PulseAudio */ +MIKMODAPI extern struct MDRIVER drv_hp; /* HP-UX audio device */ +MIKMODAPI extern struct MDRIVER drv_nas; /* Network Audio System (NAS) */ +MIKMODAPI extern struct MDRIVER drv_oss; /* OpenSound System (Linux,FreeBSD...) */ +MIKMODAPI extern struct MDRIVER drv_openal; /* OpenAL driver */ +MIKMODAPI extern struct MDRIVER drv_sdl; /* SDL audio driver */ +MIKMODAPI extern struct MDRIVER drv_sgi; /* SGI audio library */ +MIKMODAPI extern struct MDRIVER drv_sndio; /* OpenBSD sndio */ +MIKMODAPI extern struct MDRIVER drv_sun; /* Sun/NetBSD/OpenBSD audio device */ + +MIKMODAPI extern struct MDRIVER drv_dart; /* OS/2 Direct Audio RealTime */ +MIKMODAPI extern struct MDRIVER drv_os2; /* OS/2 MMPM/2 */ + +MIKMODAPI extern struct MDRIVER drv_ds; /* Win32 DirectSound driver */ +MIKMODAPI extern struct MDRIVER drv_xaudio2;/* Win32 XAudio2 driver */ +MIKMODAPI extern struct MDRIVER drv_win; /* Win32 multimedia API driver */ + +MIKMODAPI extern struct MDRIVER drv_mac; /* Macintosh Sound Manager driver */ +MIKMODAPI extern struct MDRIVER drv_osx; /* MacOS X CoreAudio Driver */ + +MIKMODAPI extern struct MDRIVER drv_dc; /* Dreamcast driver */ +MIKMODAPI extern struct MDRIVER drv_gp32; /* GP32 Sound driver */ +MIKMODAPI extern struct MDRIVER drv_psp; /* PlayStation Portable driver */ +MIKMODAPI extern struct MDRIVER drv_n64; /* Nintendo64 driver */ + +MIKMODAPI extern struct MDRIVER drv_wss; /* DOS WSS driver */ +MIKMODAPI extern struct MDRIVER drv_sb; /* DOS S/B driver */ + +MIKMODAPI extern struct MDRIVER drv_osles; /* OpenSL ES driver for android */ + +/*========== Virtual channel mixer interface (for user-supplied drivers only) */ + +MIKMODAPI extern int VC_Init(void); +MIKMODAPI extern void VC_Exit(void); +MIKMODAPI extern void VC_SetCallback(MikMod_callback_t callback); +MIKMODAPI extern int VC_SetNumVoices(void); +MIKMODAPI extern ULONG VC_SampleSpace(int); +MIKMODAPI extern ULONG VC_SampleLength(int,SAMPLE*); + +MIKMODAPI extern int VC_PlayStart(void); +MIKMODAPI extern void VC_PlayStop(void); + +MIKMODAPI extern SWORD VC_SampleLoad(struct SAMPLOAD*,int); +MIKMODAPI extern void VC_SampleUnload(SWORD); + +MIKMODAPI extern ULONG VC_WriteBytes(SBYTE*,ULONG); +MIKMODAPI extern ULONG VC_SilenceBytes(SBYTE*,ULONG); + +MIKMODAPI extern void VC_VoiceSetVolume(UBYTE,UWORD); +MIKMODAPI extern UWORD VC_VoiceGetVolume(UBYTE); +MIKMODAPI extern void VC_VoiceSetFrequency(UBYTE,ULONG); +MIKMODAPI extern ULONG VC_VoiceGetFrequency(UBYTE); +MIKMODAPI extern void VC_VoiceSetPanning(UBYTE,ULONG); +MIKMODAPI extern ULONG VC_VoiceGetPanning(UBYTE); +MIKMODAPI extern void VC_VoicePlay(UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD); + +MIKMODAPI extern void VC_VoiceStop(UBYTE); +MIKMODAPI extern BOOL VC_VoiceStopped(UBYTE); +MIKMODAPI extern SLONG VC_VoiceGetPosition(UBYTE); +MIKMODAPI extern ULONG VC_VoiceRealVolume(UBYTE); + +#ifdef __cplusplus +} +#endif + +#endif + +/* ex:set ts=4: */ diff --git a/MacOSX/codecs/include/mikmod_config.txt b/MacOSX/codecs/include/mikmod_config.txt new file mode 100644 index 0000000..d9000c2 --- /dev/null +++ b/MacOSX/codecs/include/mikmod_config.txt @@ -0,0 +1,2 @@ +libmikmod-3.3.12. only the "nosound" driver (drv_nos) is included: +we only need/register/use drv_nos here and nothing else. diff --git a/MacOSX/codecs/include/mpg123.h b/MacOSX/codecs/include/mpg123.h new file mode 100644 index 0000000..f5c5b66 --- /dev/null +++ b/MacOSX/codecs/include/mpg123.h @@ -0,0 +1,1215 @@ +/* + libmpg123: MPEG Audio Decoder library (version 1.22.4) + + copyright 1995-2010 by the mpg123 project - free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org +*/ + +#ifndef MPG123_LIB_H +#define MPG123_LIB_H + +/** \file mpg123.h The header file for the libmpg123 MPEG Audio decoder */ + +/* A macro to check at compile time which set of API functions to expect. + This should be incremented at least each time a new symbol is added to the header. */ +#define MPG123_API_VERSION 42 + +/* These aren't actually in use... seems to work without using libtool. */ +#ifdef BUILD_MPG123_DLL +/* The dll exports. */ +#define MPG123_EXPORT __declspec(dllexport) +#else +#ifdef LINK_MPG123_DLL +/* The exe imports. */ +#define MPG123_EXPORT __declspec(dllimport) +#else +/* Nothing on normal/UNIX builds */ +#define MPG123_EXPORT +#endif +#endif + +/* This is for Visual Studio, so this header works as distributed in the binary downloads */ +#if defined(_MSC_VER) && !defined(MPG123_DEF_SSIZE_T) +#define MPG123_DEF_SSIZE_T +#include <stddef.h> +typedef ptrdiff_t ssize_t; +#endif + +#ifndef MPG123_NO_CONFIGURE /* Enable use of this file without configure. */ +#include <stdlib.h> +#include <sys/types.h> + +/* Simplified large file handling. + I used to have a check here that prevents building for a library with conflicting large file setup + (application that uses 32 bit offsets with library that uses 64 bits). + While that was perfectly fine in an environment where there is one incarnation of the library, + it hurt GNU/Linux and Solaris systems with multilib where the distribution fails to provide the + correct header matching the 32 bit library (where large files need explicit support) or + the 64 bit library (where there is no distinction). + + New approach: When the app defines _FILE_OFFSET_BITS, it wants non-default large file support, + and thus functions with added suffix (mpg123_open_64). + Any mismatch will be caught at link time because of the _FILE_OFFSET_BITS setting used when + building libmpg123. Plus, there's dual mode large file support in mpg123 since 1.12 now. + Link failure is not the expected outcome of any half-sane usage anymore. + + More complication: What about client code defining _LARGEFILE64_SOURCE? It might want direct access to the _64 functions, along with the ones without suffix. Well, that's possible now via defining MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling or enforcing the suffix names. +*/ + +/* + Now, the renaming of large file aware functions. + By default, it appends underscore _FILE_OFFSET_BITS (so, mpg123_seek_64 for mpg123_seek), if _FILE_OFFSET_BITS is defined. You can force a different suffix via MPG123_LARGESUFFIX (that must include the underscore), or you can just disable the whole mess by defining MPG123_NO_LARGENAME. +*/ +#if (!defined MPG123_NO_LARGENAME) && ((defined _FILE_OFFSET_BITS) || (defined MPG123_LARGESUFFIX)) + +/* Need some trickery to concatenate the value(s) of the given macro(s). */ +#define MPG123_MACROCAT_REALLY(a, b) a ## b +#define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b) +#ifndef MPG123_LARGESUFFIX +#define MPG123_LARGESUFFIX MPG123_MACROCAT(_, _FILE_OFFSET_BITS) +#endif +#define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX) + +#define mpg123_open MPG123_LARGENAME(mpg123_open) +#define mpg123_open_fd MPG123_LARGENAME(mpg123_open_fd) +#define mpg123_open_handle MPG123_LARGENAME(mpg123_open_handle) +#define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode) +#define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame) +#define mpg123_tell MPG123_LARGENAME(mpg123_tell) +#define mpg123_tellframe MPG123_LARGENAME(mpg123_tellframe) +#define mpg123_tell_stream MPG123_LARGENAME(mpg123_tell_stream) +#define mpg123_seek MPG123_LARGENAME(mpg123_seek) +#define mpg123_feedseek MPG123_LARGENAME(mpg123_feedseek) +#define mpg123_seek_frame MPG123_LARGENAME(mpg123_seek_frame) +#define mpg123_timeframe MPG123_LARGENAME(mpg123_timeframe) +#define mpg123_index MPG123_LARGENAME(mpg123_index) +#define mpg123_set_index MPG123_LARGENAME(mpg123_set_index) +#define mpg123_position MPG123_LARGENAME(mpg123_position) +#define mpg123_length MPG123_LARGENAME(mpg123_length) +#define mpg123_framelength MPG123_LARGENAME(mpg123_framelength) +#define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize) +#define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader) +#define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle) +#define mpg123_framepos MPG123_LARGENAME(mpg123_framepos) + +#endif /* largefile hackery */ + +#endif /* MPG123_NO_CONFIGURE */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup mpg123_init mpg123 library and handle setup + * + * Functions to initialise and shutdown the mpg123 library and handles. + * The parameters of handles have workable defaults, you only have to tune them when you want to tune something;-) + * Tip: Use a RVA setting... + * + * @{ + */ + +/** Opaque structure for the libmpg123 decoder handle. */ +struct mpg123_handle_struct; + +/** Opaque structure for the libmpg123 decoder handle. + * Most functions take a pointer to a mpg123_handle as first argument and operate on its data in an object-oriented manner. + */ +typedef struct mpg123_handle_struct mpg123_handle; + +/** Function to initialise the mpg123 library. + * This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library. + * + * \return MPG123_OK if successful, otherwise an error number. + */ +MPG123_EXPORT int mpg123_init(void); + +/** Function to close down the mpg123 library. + * This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library. */ +MPG123_EXPORT void mpg123_exit(void); + +/** Create a handle with optional choice of decoder (named by a string, see mpg123_decoders() or mpg123_supported_decoders()). + * and optional retrieval of an error code to feed to mpg123_plain_strerror(). + * Optional means: Any of or both the parameters may be NULL. + * + * \return Non-NULL pointer when successful. + */ +MPG123_EXPORT mpg123_handle *mpg123_new(const char* decoder, int *error); + +/** Delete handle, mh is either a valid mpg123 handle or NULL. */ +MPG123_EXPORT void mpg123_delete(mpg123_handle *mh); + +/** Enumeration of the parameters types that it is possible to set/get. */ +enum mpg123_parms +{ + MPG123_VERBOSE = 0, /**< set verbosity value for enabling messages to stderr, >= 0 makes sense (integer) */ + MPG123_FLAGS, /**< set all flags, p.ex val = MPG123_GAPLESS|MPG123_MONO_MIX (integer) */ + MPG123_ADD_FLAGS, /**< add some flags (integer) */ + MPG123_FORCE_RATE, /**< when value > 0, force output rate to that value (integer) */ + MPG123_DOWN_SAMPLE, /**< 0=native rate, 1=half rate, 2=quarter rate (integer) */ + MPG123_RVA, /**< one of the RVA choices above (integer) */ + MPG123_DOWNSPEED, /**< play a frame N times (integer) */ + MPG123_UPSPEED, /**< play every Nth frame (integer) */ + MPG123_START_FRAME, /**< start with this frame (skip frames before that, integer) */ + MPG123_DECODE_FRAMES, /**< decode only this number of frames (integer) */ + MPG123_ICY_INTERVAL, /**< stream contains ICY metadata with this interval (integer) */ + MPG123_OUTSCALE, /**< the scale for output samples (amplitude - integer or float according to mpg123 output format, normally integer) */ + MPG123_TIMEOUT, /**< timeout for reading from a stream (not supported on win32, integer) */ + MPG123_REMOVE_FLAGS, /**< remove some flags (inverse of MPG123_ADD_FLAGS, integer) */ + MPG123_RESYNC_LIMIT, /**< Try resync on frame parsing for that many bytes or until end of stream (<0 ... integer). This can enlarge the limit for skipping junk on beginning, too (but not reduce it). */ + MPG123_INDEX_SIZE /**< Set the frame index size (if supported). Values <0 mean that the index is allowed to grow dynamically in these steps (in positive direction, of course) -- Use this when you really want a full index with every individual frame. */ + ,MPG123_PREFRAMES /**< Decode/ignore that many frames in advance for layer 3. This is needed to fill bit reservoir after seeking, for example (but also at least one frame in advance is needed to have all "normal" data for layer 3). Give a positive integer value, please.*/ + ,MPG123_FEEDPOOL /**< For feeder mode, keep that many buffers in a pool to avoid frequent malloc/free. The pool is allocated on mpg123_open_feed(). If you change this parameter afterwards, you can trigger growth and shrinkage during decoding. The default value could change any time. If you care about this, then set it. (integer) */ + ,MPG123_FEEDBUFFER /**< Minimal size of one internal feeder buffer, again, the default value is subject to change. (integer) */ +}; + +/** Flag bits for MPG123_FLAGS, use the usual binary or to combine. */ +enum mpg123_param_flags +{ + MPG123_FORCE_MONO = 0x7 /**< 0111 Force some mono mode: This is a test bitmask for seeing if any mono forcing is active. */ + ,MPG123_MONO_LEFT = 0x1 /**< 0001 Force playback of left channel only. */ + ,MPG123_MONO_RIGHT = 0x2 /**< 0010 Force playback of right channel only. */ + ,MPG123_MONO_MIX = 0x4 /**< 0100 Force playback of mixed mono. */ + ,MPG123_FORCE_STEREO = 0x8 /**< 1000 Force stereo output. */ + ,MPG123_FORCE_8BIT = 0x10 /**< 00010000 Force 8bit formats. */ + ,MPG123_QUIET = 0x20 /**< 00100000 Suppress any printouts (overrules verbose). */ + ,MPG123_GAPLESS = 0x40 /**< 01000000 Enable gapless decoding (default on if libmpg123 has support). */ + ,MPG123_NO_RESYNC = 0x80 /**< 10000000 Disable resync stream after error. */ + ,MPG123_SEEKBUFFER = 0x100 /**< 000100000000 Enable small buffer on non-seekable streams to allow some peek-ahead (for better MPEG sync). */ + ,MPG123_FUZZY = 0x200 /**< 001000000000 Enable fuzzy seeks (guessing byte offsets or using approximate seek points from Xing TOC) */ + ,MPG123_FORCE_FLOAT = 0x400 /**< 010000000000 Force floating point output (32 or 64 bits depends on mpg123 internal precision). */ + ,MPG123_PLAIN_ID3TEXT = 0x800 /**< 100000000000 Do not translate ID3 text data to UTF-8. ID3 strings will contain the raw text data, with the first byte containing the ID3 encoding code. */ + ,MPG123_IGNORE_STREAMLENGTH = 0x1000 /**< 1000000000000 Ignore any stream length information contained in the stream, which can be contained in a 'TLEN' frame of an ID3v2 tag or a Xing tag */ + ,MPG123_SKIP_ID3V2 = 0x2000 /**< 10 0000 0000 0000 Do not parse ID3v2 tags, just skip them. */ + ,MPG123_IGNORE_INFOFRAME = 0x4000 /**< 100 0000 0000 0000 Do not parse the LAME/Xing info frame, treat it as normal MPEG data. */ + ,MPG123_AUTO_RESAMPLE = 0x8000 /**< 1000 0000 0000 0000 Allow automatic internal resampling of any kind (default on if supported). Especially when going lowlevel with replacing output buffer, you might want to unset this flag. Setting MPG123_DOWNSAMPLE or MPG123_FORCE_RATE will override this. */ + ,MPG123_PICTURE = 0x10000 /**< 17th bit: Enable storage of pictures from tags (ID3v2 APIC). */ +}; + +/** choices for MPG123_RVA */ +enum mpg123_param_rva +{ + MPG123_RVA_OFF = 0 /**< RVA disabled (default). */ + ,MPG123_RVA_MIX = 1 /**< Use mix/track/radio gain. */ + ,MPG123_RVA_ALBUM = 2 /**< Use album/audiophile gain */ + ,MPG123_RVA_MAX = MPG123_RVA_ALBUM /**< The maximum RVA code, may increase in future. */ +}; + +/* TODO: Assess the possibilities and troubles of changing parameters during playback. */ + +/** Set a specific parameter, for a specific mpg123_handle, using a parameter + * type key chosen from the mpg123_parms enumeration, to the specified value. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_param(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue); + +/** Get a specific parameter, for a specific mpg123_handle. + * See the mpg123_parms enumeration for a list of available parameters. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_getparam(mpg123_handle *mh, enum mpg123_parms type, long *val, double *fval); + +/** Feature set available for query with mpg123_feature. */ +enum mpg123_feature_set +{ + MPG123_FEATURE_ABI_UTF8OPEN = 0 /**< mpg123 expects path names to be given in UTF-8 encoding instead of plain native. */ + ,MPG123_FEATURE_OUTPUT_8BIT /**< 8bit output */ + ,MPG123_FEATURE_OUTPUT_16BIT /**< 16bit output */ + ,MPG123_FEATURE_OUTPUT_32BIT /**< 32bit output */ + ,MPG123_FEATURE_INDEX /**< support for building a frame index for accurate seeking */ + ,MPG123_FEATURE_PARSE_ID3V2 /**< id3v2 parsing */ + ,MPG123_FEATURE_DECODE_LAYER1 /**< mpeg layer-1 decoder enabled */ + ,MPG123_FEATURE_DECODE_LAYER2 /**< mpeg layer-2 decoder enabled */ + ,MPG123_FEATURE_DECODE_LAYER3 /**< mpeg layer-3 decoder enabled */ + ,MPG123_FEATURE_DECODE_ACCURATE /**< accurate decoder rounding */ + ,MPG123_FEATURE_DECODE_DOWNSAMPLE /**< downsample (sample omit) */ + ,MPG123_FEATURE_DECODE_NTOM /**< flexible rate decoding */ + ,MPG123_FEATURE_PARSE_ICY /**< ICY support */ + ,MPG123_FEATURE_TIMEOUT_READ /**< Reader with timeout (network). */ +}; + +/** Query libmpg123 feature, 1 for success, 0 for unimplemented functions. */ +MPG123_EXPORT int mpg123_feature(const enum mpg123_feature_set key); + +/* @} */ + + +/** \defgroup mpg123_error mpg123 error handling + * + * Functions to get text version of the error numbers and an enumeration + * of the error codes returned by libmpg123. + * + * Most functions operating on a mpg123_handle simply return MPG123_OK (0) + * on success and MPG123_ERR (-1) on failure, setting the internal error + * variable of the handle to the specific error code. If there was not a valid + * (non-NULL) handle provided to a function operating on one, MPG123_BAD_HANDLE + * may be returned if this can not be confused with a valid positive return + * value. + * Meaning: A function expected to return positive integers on success will + * always indicate error or a special condition by returning a negative one. + * + * Decoding/seek functions may also return message codes MPG123_DONE, + * MPG123_NEW_FORMAT and MPG123_NEED_MORE (all negative, see below on how to + * react). Note that calls to those can be nested, so generally watch out + * for these codes after initial handle setup. + * Especially any function that needs information about the current stream + * to work will try to at least parse the beginning if that did not happen + * yet. + * + * On a function that is supposed to return MPG123_OK on success and + * MPG123_ERR on failure, make sure you check for != MPG123_OK, not + * == MPG123_ERR, as the error code could get more specific in future, + * or there is just a special message from a decoding routine as indicated + * above. + * + * @{ + */ + +/** Enumeration of the message and error codes and returned by libmpg123 functions. */ +enum mpg123_errors +{ + MPG123_DONE=-12, /**< Message: Track ended. Stop decoding. */ + MPG123_NEW_FORMAT=-11, /**< Message: Output format will be different on next call. Note that some libmpg123 versions between 1.4.3 and 1.8.0 insist on you calling mpg123_getformat() after getting this message code. Newer verisons behave like advertised: You have the chance to call mpg123_getformat(), but you can also just continue decoding and get your data. */ + MPG123_NEED_MORE=-10, /**< Message: For feed reader: "Feed me more!" (call mpg123_feed() or mpg123_decode() with some new input data). */ + MPG123_ERR=-1, /**< Generic Error */ + MPG123_OK=0, /**< Success */ + MPG123_BAD_OUTFORMAT, /**< Unable to set up output format! */ + MPG123_BAD_CHANNEL, /**< Invalid channel number specified. */ + MPG123_BAD_RATE, /**< Invalid sample rate specified. */ + MPG123_ERR_16TO8TABLE, /**< Unable to allocate memory for 16 to 8 converter table! */ + MPG123_BAD_PARAM, /**< Bad parameter id! */ + MPG123_BAD_BUFFER, /**< Bad buffer given -- invalid pointer or too small size. */ + MPG123_OUT_OF_MEM, /**< Out of memory -- some malloc() failed. */ + MPG123_NOT_INITIALIZED, /**< You didn't initialize the library! */ + MPG123_BAD_DECODER, /**< Invalid decoder choice. */ + MPG123_BAD_HANDLE, /**< Invalid mpg123 handle. */ + MPG123_NO_BUFFERS, /**< Unable to initialize frame buffers (out of memory?). */ + MPG123_BAD_RVA, /**< Invalid RVA mode. */ + MPG123_NO_GAPLESS, /**< This build doesn't support gapless decoding. */ + MPG123_NO_SPACE, /**< Not enough buffer space. */ + MPG123_BAD_TYPES, /**< Incompatible numeric data types. */ + MPG123_BAD_BAND, /**< Bad equalizer band. */ + MPG123_ERR_NULL, /**< Null pointer given where valid storage address needed. */ + MPG123_ERR_READER, /**< Error reading the stream. */ + MPG123_NO_SEEK_FROM_END,/**< Cannot seek from end (end is not known). */ + MPG123_BAD_WHENCE, /**< Invalid 'whence' for seek function.*/ + MPG123_NO_TIMEOUT, /**< Build does not support stream timeouts. */ + MPG123_BAD_FILE, /**< File access error. */ + MPG123_NO_SEEK, /**< Seek not supported by stream. */ + MPG123_NO_READER, /**< No stream opened. */ + MPG123_BAD_PARS, /**< Bad parameter handle. */ + MPG123_BAD_INDEX_PAR, /**< Bad parameters to mpg123_index() and mpg123_set_index() */ + MPG123_OUT_OF_SYNC, /**< Lost track in bytestream and did not try to resync. */ + MPG123_RESYNC_FAIL, /**< Resync failed to find valid MPEG data. */ + MPG123_NO_8BIT, /**< No 8bit encoding possible. */ + MPG123_BAD_ALIGN, /**< Stack aligmnent error */ + MPG123_NULL_BUFFER, /**< NULL input buffer with non-zero size... */ + MPG123_NO_RELSEEK, /**< Relative seek not possible (screwed up file offset) */ + MPG123_NULL_POINTER, /**< You gave a null pointer somewhere where you shouldn't have. */ + MPG123_BAD_KEY, /**< Bad key value given. */ + MPG123_NO_INDEX, /**< No frame index in this build. */ + MPG123_INDEX_FAIL, /**< Something with frame index went wrong. */ + MPG123_BAD_DECODER_SETUP, /**< Something prevents a proper decoder setup */ + MPG123_MISSING_FEATURE /**< This feature has not been built into libmpg123. */ + ,MPG123_BAD_VALUE /**< A bad value has been given, somewhere. */ + ,MPG123_LSEEK_FAILED /**< Low-level seek failed. */ + ,MPG123_BAD_CUSTOM_IO /**< Custom I/O not prepared. */ + ,MPG123_LFS_OVERFLOW /**< Offset value overflow during translation of large file API calls -- your client program cannot handle that large file. */ + ,MPG123_INT_OVERFLOW /**< Some integer overflow. */ +}; + +/** Return a string describing that error errcode means. */ +MPG123_EXPORT const char* mpg123_plain_strerror(int errcode); + +/** Give string describing what error has occured in the context of handle mh. + * When a function operating on an mpg123 handle returns MPG123_ERR, you should check for the actual reason via + * char *errmsg = mpg123_strerror(mh) + * This function will catch mh == NULL and return the message for MPG123_BAD_HANDLE. */ +MPG123_EXPORT const char* mpg123_strerror(mpg123_handle *mh); + +/** Return the plain errcode intead of a string. + * \return error code recorded in handle or MPG123_BAD_HANDLE + */ +MPG123_EXPORT int mpg123_errcode(mpg123_handle *mh); + +/*@}*/ + + +/** \defgroup mpg123_decoder mpg123 decoder selection + * + * Functions to list and select the available decoders. + * Perhaps the most prominent feature of mpg123: You have several (optimized) decoders to choose from (on x86 and PPC (MacOS) systems, that is). + * + * @{ + */ + +/** Return a NULL-terminated array of generally available decoder names (plain 8bit ASCII). */ +MPG123_EXPORT const char **mpg123_decoders(void); + +/** Return a NULL-terminated array of the decoders supported by the CPU (plain 8bit ASCII). */ +MPG123_EXPORT const char **mpg123_supported_decoders(void); + +/** Set the chosen decoder to 'decoder_name' + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_decoder(mpg123_handle *mh, const char* decoder_name); + +/** Get the currently active decoder engine name. + The active decoder engine can vary depening on output constraints, + mostly non-resampling, integer output is accelerated via 3DNow & Co. but for other modes a fallback engine kicks in. + Note that this can return a decoder that is ony active in the hidden and not available as decoder choice from the outside. + \return The decoder name or NULL on error. */ +MPG123_EXPORT const char* mpg123_current_decoder(mpg123_handle *mh); + +/*@}*/ + + +/** \defgroup mpg123_output mpg123 output audio format + * + * Functions to get and select the format of the decoded audio. + * + * Before you dive in, please be warned that you might get confused by this. This seems to happen a lot, therefore I am trying to explain in advance. + * + * The mpg123 library decides what output format to use when encountering the first frame in a stream, or actually any frame that is still valid but differs from the frames before in the prompted output format. At such a deciding point, an internal table of allowed encodings, sampling rates and channel setups is consulted. According to this table, an output format is chosen and the decoding engine set up accordingly (including ptimized routines for different output formats). This might seem unusual but it just follows from the non-existence of "MPEG audio files" with defined overall properties. There are streams, streams are concatenations of (semi) independent frames. We store streams on disk and call them "MPEG audio files", but that does not change their nature as the decoder is concerned (the LAME/Xing header for gapless decoding makes things interesting again). + * + * To get to the point: What you do with mpg123_format() and friends is to fill the internal table of allowed formats before it is used. That includes removing support for some formats or adding your forced sample rate (see MPG123_FORCE_RATE) that will be used with the crude internal resampler. Also keep in mind that the sample encoding is just a question of choice -- the MPEG frames do only indicate their native sampling rate and channel count. If you want to decode to integer or float samples, 8 or 16 bit ... that is your decision. In a "clean" world, libmpg123 would always decode to 32 bit float and let you handle any sample conversion. But there are optimized routines that work faster by directly decoding to the desired encoding / accuracy. We prefer efficiency over conceptual tidyness. + * + * People often start out thinking that mpg123_format() should change the actual decoding format on the fly. That is wrong. It only has effect on the next natural change of output format, when libmpg123 will consult its format table again. To make life easier, you might want to call mpg123_format_none() before any thing else and then just allow one desired encoding and a limited set of sample rates / channel choices that you actually intend to deal with. You can force libmpg123 to decode everything to 44100 KHz, stereo, 16 bit integer ... it will duplicate mono channels and even do resampling if needed (unless that feature is disabled in the build, same with some encodings). But I have to stress that the resampling of libmpg123 is very crude and doesn't even contain any kind of "proper" interpolation. + * + * In any case, watch out for MPG123_NEW_FORMAT as return message from decoding routines and call mpg123_getformat() to get the currently active output format. + * + * @{ + */ + +/** An enum over all sample types possibly known to mpg123. + * The values are designed as bit flags to allow bitmasking for encoding families. + * + * Note that (your build of) libmpg123 does not necessarily support all these. + * Usually, you can expect the 8bit encodings and signed 16 bit. + * Also 32bit float will be usual beginning with mpg123-1.7.0 . + * What you should bear in mind is that (SSE, etc) optimized routines may be absent + * for some formats. We do have SSE for 16, 32 bit and float, though. + * 24 bit integer is done via postprocessing of 32 bit output -- just cutting + * the last byte, no rounding, even. If you want better, do it yourself. + * + * All formats are in native byte order. If you need different endinaness, you + * can simply postprocess the output buffers (libmpg123 wouldn't do anything else). + * mpg123_encsize() can be helpful there. + */ +enum mpg123_enc_enum +{ + MPG123_ENC_8 = 0x00f /**< 0000 0000 1111 Some 8 bit integer encoding. */ + ,MPG123_ENC_16 = 0x040 /**< 0000 0100 0000 Some 16 bit integer encoding. */ + ,MPG123_ENC_24 = 0x4000 /**< 0100 0000 0000 0000 Some 24 bit integer encoding. */ + ,MPG123_ENC_32 = 0x100 /**< 0001 0000 0000 Some 32 bit integer encoding. */ + ,MPG123_ENC_SIGNED = 0x080 /**< 0000 1000 0000 Some signed integer encoding. */ + ,MPG123_ENC_FLOAT = 0xe00 /**< 1110 0000 0000 Some float encoding. */ + ,MPG123_ENC_SIGNED_16 = (MPG123_ENC_16|MPG123_ENC_SIGNED|0x10) /**< 1101 0000 signed 16 bit */ + ,MPG123_ENC_UNSIGNED_16 = (MPG123_ENC_16|0x20) /**< 0110 0000 unsigned 16 bit */ + ,MPG123_ENC_UNSIGNED_8 = 0x01 /**< 0000 0001 unsigned 8 bit */ + ,MPG123_ENC_SIGNED_8 = (MPG123_ENC_SIGNED|0x02) /**< 1000 0010 signed 8 bit */ + ,MPG123_ENC_ULAW_8 = 0x04 /**< 0000 0100 ulaw 8 bit */ + ,MPG123_ENC_ALAW_8 = 0x08 /**< 0000 1000 alaw 8 bit */ + ,MPG123_ENC_SIGNED_32 = MPG123_ENC_32|MPG123_ENC_SIGNED|0x1000 /**< 0001 0001 1000 0000 signed 32 bit */ + ,MPG123_ENC_UNSIGNED_32 = MPG123_ENC_32|0x2000 /**< 0010 0001 0000 0000 unsigned 32 bit */ + ,MPG123_ENC_SIGNED_24 = MPG123_ENC_24|MPG123_ENC_SIGNED|0x1000 /**< 0101 0000 1000 0000 signed 24 bit */ + ,MPG123_ENC_UNSIGNED_24 = MPG123_ENC_24|0x2000 /**< 0110 0000 0000 0000 unsigned 24 bit */ + ,MPG123_ENC_FLOAT_32 = 0x200 /**< 0010 0000 0000 32bit float */ + ,MPG123_ENC_FLOAT_64 = 0x400 /**< 0100 0000 0000 64bit float */ + ,MPG123_ENC_ANY = ( MPG123_ENC_SIGNED_16 | MPG123_ENC_UNSIGNED_16 | MPG123_ENC_UNSIGNED_8 + | MPG123_ENC_SIGNED_8 | MPG123_ENC_ULAW_8 | MPG123_ENC_ALAW_8 + | MPG123_ENC_SIGNED_32 | MPG123_ENC_UNSIGNED_32 + | MPG123_ENC_SIGNED_24 | MPG123_ENC_UNSIGNED_24 + | MPG123_ENC_FLOAT_32 | MPG123_ENC_FLOAT_64 ) /**< Any encoding on the list. */ +}; + +/** They can be combined into one number (3) to indicate mono and stereo... */ +enum mpg123_channelcount +{ + MPG123_MONO = 1 + ,MPG123_STEREO = 2 +}; + +/** An array of supported standard sample rates + * These are possible native sample rates of MPEG audio files. + * You can still force mpg123 to resample to a different one, but by default you will only get audio in one of these samplings. + * \param list Store a pointer to the sample rates array there. + * \param number Store the number of sample rates there. */ +MPG123_EXPORT void mpg123_rates(const long **list, size_t *number); + +/** An array of supported audio encodings. + * An audio encoding is one of the fully qualified members of mpg123_enc_enum (MPG123_ENC_SIGNED_16, not MPG123_SIGNED). + * \param list Store a pointer to the encodings array there. + * \param number Store the number of encodings there. */ +MPG123_EXPORT void mpg123_encodings(const int **list, size_t *number); + +/** Return the size (in bytes) of one mono sample of the named encoding. + * \param encoding The encoding value to analyze. + * \return positive size of encoding in bytes, 0 on invalid encoding. */ +MPG123_EXPORT int mpg123_encsize(int encoding); + +/** Configure a mpg123 handle to accept no output format at all, + * use before specifying supported formats with mpg123_format + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_format_none(mpg123_handle *mh); + +/** Configure mpg123 handle to accept all formats + * (also any custom rate you may set) -- this is default. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_format_all(mpg123_handle *mh); + +/** Set the audio format support of a mpg123_handle in detail: + * \param mh audio decoder handle + * \param rate The sample rate value (in Hertz). + * \param channels A combination of MPG123_STEREO and MPG123_MONO. + * \param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16 | MPG123_ENC_ULAW_8 (or 0 for no support). Please note that some encodings may not be supported in the library build and thus will be ignored here. + * \return MPG123_OK on success, MPG123_ERR if there was an error. */ +MPG123_EXPORT int mpg123_format(mpg123_handle *mh, long rate, int channels, int encodings); + +/** Check to see if a specific format at a specific rate is supported + * by mpg123_handle. + * \return 0 for no support (that includes invalid parameters), MPG123_STEREO, + * MPG123_MONO or MPG123_STEREO|MPG123_MONO. */ +MPG123_EXPORT int mpg123_format_support(mpg123_handle *mh, long rate, int encoding); + +/** Get the current output format written to the addresses given. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_getformat(mpg123_handle *mh, long *rate, int *channels, int *encoding); + +/*@}*/ + + +/** \defgroup mpg123_input mpg123 file input and decoding + * + * Functions for input bitstream and decoding operations. + * Decoding/seek functions may also return message codes MPG123_DONE, MPG123_NEW_FORMAT and MPG123_NEED_MORE (please read up on these on how to react!). + * @{ + */ + +/* reading samples / triggering decoding, possible return values: */ +/** Enumeration of the error codes returned by libmpg123 functions. */ + +/** Open and prepare to decode the specified file by filesystem path. + * This does not open HTTP urls; libmpg123 contains no networking code. + * If you want to decode internet streams, use mpg123_open_fd() or mpg123_open_feed(). + * \param path filesystem path + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_open(mpg123_handle *mh, const char *path); + +/** Use an already opened file descriptor as the bitstream input + * mpg123_close() will _not_ close the file descriptor. + */ +MPG123_EXPORT int mpg123_open_fd(mpg123_handle *mh, int fd); + +/** Use an opaque handle as bitstream input. This works only with the + * replaced I/O from mpg123_replace_reader_handle()! + * mpg123_close() will call the cleanup callback for your handle (if you gave one). + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_open_handle(mpg123_handle *mh, void *iohandle); + +/** Open a new bitstream and prepare for direct feeding + * This works together with mpg123_decode(); you are responsible for reading and feeding the input bitstream. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_open_feed(mpg123_handle *mh); + +/** Closes the source, if libmpg123 opened it. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_close(mpg123_handle *mh); + +/** Read from stream and decode up to outmemsize bytes. + * \param outmemory address of output buffer to write to + * \param outmemsize maximum number of bytes to write + * \param done address to store the number of actually decoded bytes to + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_read(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done); + +/** Feed data for a stream that has been opened with mpg123_open_feed(). + * It's give and take: You provide the bytestream, mpg123 gives you the decoded samples. + * \param in input buffer + * \param size number of input bytes + * \return MPG123_OK or error/message code. + */ +MPG123_EXPORT int mpg123_feed(mpg123_handle *mh, const unsigned char *in, size_t size); + +/** Decode MPEG Audio from inmemory to outmemory. + * This is very close to a drop-in replacement for old mpglib. + * When you give zero-sized output buffer the input will be parsed until + * decoded data is available. This enables you to get MPG123_NEW_FORMAT (and query it) + * without taking decoded data. + * Think of this function being the union of mpg123_read() and mpg123_feed() (which it actually is, sort of;-). + * You can actually always decide if you want those specialized functions in separate steps or one call this one here. + * \param inmemory input buffer + * \param inmemsize number of input bytes + * \param outmemory output buffer + * \param outmemsize maximum number of output bytes + * \param done address to store the number of actually decoded bytes to + * \return error/message code (watch out especially for MPG123_NEED_MORE) + */ +MPG123_EXPORT int mpg123_decode(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, unsigned char *outmemory, size_t outmemsize, size_t *done); + +/** Decode next MPEG frame to internal buffer + * or read a frame and return after setting a new format. + * \param num current frame offset gets stored there + * \param audio This pointer is set to the internal buffer to read the decoded audio from. + * \param bytes number of output bytes ready in the buffer + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); + +/** Decode current MPEG frame to internal buffer. + * Warning: This is experimental API that might change in future releases! + * Please watch mpg123 development closely when using it. + * \param num last frame offset gets stored there + * \param audio this pointer is set to the internal buffer to read the decoded audio from. + * \param bytes number of output bytes ready in the buffer + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); + +/** Find, read and parse the next mp3 frame + * Warning: This is experimental API that might change in future releases! + * Please watch mpg123 development closely when using it. + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_framebyframe_next(mpg123_handle *mh); + +/** Get access to the raw input data for the last parsed frame. + * This gives you a direct look (and write access) to the frame body data. + * Together with the raw header, you can reconstruct the whole raw MPEG stream without junk and meta data, or play games by actually modifying the frame body data before decoding this frame (mpg123_framebyframe_decode()). + * A more sane use would be to use this for CRC checking (see mpg123_info() and MPG123_CRC), the first two bytes of the body make up the CRC16 checksum, if present. + * You can provide NULL for a parameter pointer when you are not interested in the value. + * + * \param header the 4-byte MPEG header + * \param bodydata pointer to the frame body stored in the handle (without the header) + * \param bodybytes size of frame body in bytes (without the header) + * \return MPG123_OK if there was a yet un-decoded frame to get the + * data from, MPG123_BAD_HANDLE or MPG123_ERR otherwise (without further + * explanation, the error state of the mpg123_handle is not modified by + * this function). + */ +MPG123_EXPORT int mpg123_framedata(mpg123_handle *mh, unsigned long *header, unsigned char **bodydata, size_t *bodybytes); + +/** Get the input position (byte offset in stream) of the last parsed frame. + * This can be used for external seek index building, for example. + * It just returns the internally stored offset, regardless of validity -- you ensure that a valid frame has been parsed before! */ +MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh); + +/*@}*/ + + +/** \defgroup mpg123_seek mpg123 position and seeking + * + * Functions querying and manipulating position in the decoded audio bitstream. + * The position is measured in decoded audio samples, or MPEG frame offset for the specific functions. + * If gapless code is in effect, the positions are adjusted to compensate the skipped padding/delay - meaning, you should not care about that at all and just use the position defined for the samples you get out of the decoder;-) + * The general usage is modelled after stdlib's ftell() and fseek(). + * Especially, the whence parameter for the seek functions has the same meaning as the one for fseek() and needs the same constants from stdlib.h: + * - SEEK_SET: set position to (or near to) specified offset + * - SEEK_CUR: change position by offset from now + * - SEEK_END: set position to offset from end + * + * Note that sample-accurate seek only works when gapless support has been enabled at compile time; seek is frame-accurate otherwise. + * Also, really sample-accurate seeking (meaning that you get the identical sample value after seeking compared to plain decoding up to the position) is only guaranteed when you do not mess with the position code by using MPG123_UPSPEED, MPG123_DOWNSPEED or MPG123_START_FRAME. The first two mainly should cause trouble with NtoM resampling, but in any case with these options in effect, you have to keep in mind that the sample offset is not the same as counting the samples you get from decoding since mpg123 counts the skipped samples, too (or the samples played twice only once)! + * Short: When you care about the sample position, don't mess with those parameters;-) + * Also, seeking is not guaranteed to work for all streams (underlying stream may not support it). + * And yet another caveat: If the stream is concatenated out of differing pieces (Frankenstein stream), seeking may suffer, too. + * + * @{ + */ + +/** Returns the current position in samples. + * On the next successful read, you'd get that sample. + * \return sample offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT off_t mpg123_tell(mpg123_handle *mh); + +/** Returns the frame number that the next read will give you data from. + * \return frame offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT off_t mpg123_tellframe(mpg123_handle *mh); + +/** Returns the current byte offset in the input stream. + * \return byte offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT off_t mpg123_tell_stream(mpg123_handle *mh); + +/** Seek to a desired sample offset. + * Set whence to SEEK_SET, SEEK_CUR or SEEK_END. + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence); + +/** Seek to a desired sample offset in data feeding mode. + * This just prepares things to be right only if you ensure that the next chunk of input data will be from input_offset byte position. + * \param input_offset The position it expects to be at the + * next time data is fed to mpg123_decode(). + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset); + +/** Seek to a desired MPEG frame index. + * Set whence to SEEK_SET, SEEK_CUR or SEEK_END. + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_seek_frame(mpg123_handle *mh, off_t frameoff, int whence); + +/** Return a MPEG frame offset corresponding to an offset in seconds. + * This assumes that the samples per frame do not change in the file/stream, which is a good assumption for any sane file/stream only. + * \return frame offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec); + +/** Give access to the frame index table that is managed for seeking. + * You are asked not to modify the values... Use mpg123_set_index to set the + * seek index + * \param offsets pointer to the index array + * \param step one index byte offset advances this many MPEG frames + * \param fill number of recorded index offsets; size of the array + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill); + +/** Set the frame index table + * Setting offsets to NULL and fill > 0 will allocate fill entries. Setting offsets + * to NULL and fill to 0 will clear the index and free the allocated memory used by the index. + * \param offsets pointer to the index array + * \param step one index byte offset advances this many MPEG frames + * \param fill number of recorded index offsets; size of the array + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill); + +/** Get information about current and remaining frames/seconds. + * WARNING: This function is there because of special usage by standalone mpg123 and may be removed in the final version of libmpg123! + * broken for various cases (p.ex. 24 bit output). Do never use. + * You provide an offset (in frames) from now and a number of output bytes + * served by libmpg123 but not yet played. You get the projected current frame + * and seconds, as well as the remaining frames/seconds. This does _not_ care + * about skipped samples due to gapless playback. */ +MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left); + +/*@}*/ + + +/** \defgroup mpg123_voleq mpg123 volume and equalizer + * + * @{ + */ + +enum mpg123_channels +{ + MPG123_LEFT=0x1 /**< The Left Channel. */ + ,MPG123_RIGHT=0x2 /**< The Right Channel. */ + ,MPG123_LR=0x3 /**< Both left and right channel; same as MPG123_LEFT|MPG123_RIGHT */ +}; + +/** Set the 32 Band Audio Equalizer settings. + * \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for both. + * \param band The equaliser band to change (from 0 to 31) + * \param val The (linear) adjustment factor. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_eq(mpg123_handle *mh, enum mpg123_channels channel, int band, double val); + +/** Get the 32 Band Audio Equalizer settings. + * \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for (arithmetic mean of) both. + * \param band The equaliser band to change (from 0 to 31) + * \return The (linear) adjustment factor (zero for pad parameters) */ +MPG123_EXPORT double mpg123_geteq(mpg123_handle *mh, enum mpg123_channels channel, int band); + +/** Reset the 32 Band Audio Equalizer settings to flat + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_reset_eq(mpg123_handle *mh); + +/** Set the absolute output volume including the RVA setting, + * vol<0 just applies (a possibly changed) RVA setting. */ +MPG123_EXPORT int mpg123_volume(mpg123_handle *mh, double vol); + +/** Adjust output volume including the RVA setting by chosen amount */ +MPG123_EXPORT int mpg123_volume_change(mpg123_handle *mh, double change); + +/** Return current volume setting, the actual value due to RVA, and the RVA + * adjustment itself. It's all as double float value to abstract the sample + * format. The volume values are linear factors / amplitudes (not percent) + * and the RVA value is in decibels. */ +MPG123_EXPORT int mpg123_getvolume(mpg123_handle *mh, double *base, double *really, double *rva_db); + +/* TODO: Set some preamp in addition / to replace internal RVA handling? */ + +/*@}*/ + + +/** \defgroup mpg123_status mpg123 status and information + * + * @{ + */ + +/** Enumeration of the mode types of Variable Bitrate */ +enum mpg123_vbr { + MPG123_CBR=0, /**< Constant Bitrate Mode (default) */ + MPG123_VBR, /**< Variable Bitrate Mode */ + MPG123_ABR /**< Average Bitrate Mode */ +}; + +/** Enumeration of the MPEG Versions */ +enum mpg123_version { + MPG123_1_0=0, /**< MPEG Version 1.0 */ + MPG123_2_0, /**< MPEG Version 2.0 */ + MPG123_2_5 /**< MPEG Version 2.5 */ +}; + + +/** Enumeration of the MPEG Audio mode. + * Only the mono mode has 1 channel, the others have 2 channels. */ +enum mpg123_mode { + MPG123_M_STEREO=0, /**< Standard Stereo. */ + MPG123_M_JOINT, /**< Joint Stereo. */ + MPG123_M_DUAL, /**< Dual Channel. */ + MPG123_M_MONO /**< Single Channel. */ +}; + + +/** Enumeration of the MPEG Audio flag bits */ +enum mpg123_flags { + MPG123_CRC=0x1, /**< The bitstream is error protected using 16-bit CRC. */ + MPG123_COPYRIGHT=0x2, /**< The bitstream is copyrighted. */ + MPG123_PRIVATE=0x4, /**< The private bit has been set. */ + MPG123_ORIGINAL=0x8 /**< The bitstream is an original, not a copy. */ +}; + +/** Data structure for storing information about a frame of MPEG Audio */ +struct mpg123_frameinfo +{ + enum mpg123_version version; /**< The MPEG version (1.0/2.0/2.5). */ + int layer; /**< The MPEG Audio Layer (MP1/MP2/MP3). */ + long rate; /**< The sampling rate in Hz. */ + enum mpg123_mode mode; /**< The audio mode (Mono, Stereo, Joint-stero, Dual Channel). */ + int mode_ext; /**< The mode extension bit flag. */ + int framesize; /**< The size of the frame (in bytes, including header). */ + enum mpg123_flags flags; /**< MPEG Audio flag bits. Just now I realize that it should be declared as int, not enum. It's a bitwise combination of the enum values. */ + int emphasis; /**< The emphasis type. */ + int bitrate; /**< Bitrate of the frame (kbps). */ + int abr_rate; /**< The target average bitrate. */ + enum mpg123_vbr vbr; /**< The VBR mode. */ +}; + +/** Get frame information about the MPEG audio bitstream and store it in a mpg123_frameinfo structure. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_info(mpg123_handle *mh, struct mpg123_frameinfo *mi); + +/** Get the safe output buffer size for all cases (when you want to replace the internal buffer) */ +MPG123_EXPORT size_t mpg123_safe_buffer(void); + +/** Make a full parsing scan of each frame in the file. ID3 tags are found. An accurate length + * value is stored. Seek index will be filled. A seek back to current position + * is performed. At all, this function refuses work when stream is + * not seekable. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_scan(mpg123_handle *mh); + +/** Return, if possible, the full (expected) length of current track in frames. + * \return length >= 0 or MPG123_ERR if there is no length guess possible. */ +MPG123_EXPORT off_t mpg123_framelength(mpg123_handle *mh); + +/** Return, if possible, the full (expected) length of current track in samples. + * \return length >= 0 or MPG123_ERR if there is no length guess possible. */ +MPG123_EXPORT off_t mpg123_length(mpg123_handle *mh); + +/** Override the value for file size in bytes. + * Useful for getting sensible track length values in feed mode or for HTTP streams. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size); + +/** Returns the time (seconds) per frame; <0 is error. */ +MPG123_EXPORT double mpg123_tpf(mpg123_handle *mh); + +/** Returns the samples per frame for the most recently parsed frame; <0 is error. */ +MPG123_EXPORT int mpg123_spf(mpg123_handle *mh); + +/** Get and reset the clip count. */ +MPG123_EXPORT long mpg123_clip(mpg123_handle *mh); + + +/** The key values for state information from mpg123_getstate(). */ +enum mpg123_state +{ + MPG123_ACCURATE = 1 /**< Query if positons are currently accurate (integer value, 0 if false, 1 if true). */ + ,MPG123_BUFFERFILL /**< Get fill of internal (feed) input buffer as integer byte count returned as long and as double. An error is returned on integer overflow while converting to (signed) long, but the returned floating point value shold still be fine. */ + ,MPG123_FRANKENSTEIN /**< Stream consists of carelessly stitched together files. Seeking may yield unexpected results (also with MPG123_ACCURATE, it may be confused). */ + ,MPG123_FRESH_DECODER /**< Decoder structure has been updated, possibly indicating changed stream (integer value, 0 if false, 1 if true). Flag is cleared after retrieval. */ +}; + +/** Get various current decoder/stream state information. + * \param key the key to identify the information to give. + * \param val the address to return (long) integer values to + * \param fval the address to return floating point values to + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_getstate(mpg123_handle *mh, enum mpg123_state key, long *val, double *fval); + +/*@}*/ + + +/** \defgroup mpg123_metadata mpg123 metadata handling + * + * Functions to retrieve the metadata from MPEG Audio files and streams. + * Also includes string handling functions. + * + * @{ + */ + +/** Data structure for storing strings in a safer way than a standard C-String. + * Can also hold a number of null-terminated strings. */ +typedef struct +{ + char* p; /**< pointer to the string data */ + size_t size; /**< raw number of bytes allocated */ + size_t fill; /**< number of used bytes (including closing zero byte) */ +} mpg123_string; + +/** Create and allocate memory for a new mpg123_string */ +MPG123_EXPORT void mpg123_init_string(mpg123_string* sb); + +/** Free-up mempory for an existing mpg123_string */ +MPG123_EXPORT void mpg123_free_string(mpg123_string* sb); + +/** Change the size of a mpg123_string + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_resize_string(mpg123_string* sb, size_t news); + +/** Increase size of a mpg123_string if necessary (it may stay larger). + * Note that the functions for adding and setting in current libmpg123 use this instead of mpg123_resize_string(). + * That way, you can preallocate memory and safely work afterwards with pieces. + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_grow_string(mpg123_string* sb, size_t news); + +/** Copy the contents of one mpg123_string string to another. + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_copy_string(mpg123_string* from, mpg123_string* to); + +/** Append a C-String to an mpg123_string + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_add_string(mpg123_string* sb, const char* stuff); + +/** Append a C-substring to an mpg123 string + * \return 0 on error, 1 on success + * \param from offset to copy from + * \param count number of characters to copy (a null-byte is always appended) */ +MPG123_EXPORT int mpg123_add_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count); + +/** Set the conents of a mpg123_string to a C-string + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_set_string(mpg123_string* sb, const char* stuff); + +/** Set the contents of a mpg123_string to a C-substring + * \return 0 on error, 1 on success + * \param from offset to copy from + * \param count number of characters to copy (a null-byte is always appended) */ +MPG123_EXPORT int mpg123_set_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count); + +/** Count characters in a mpg123 string (non-null bytes or UTF-8 characters). + * \return character count + * \param sb the string + * \param utf8 a flag to tell if the string is in utf8 encoding + * Even with the fill property, the character count is not obvious as there could be multiple trailing null bytes. +*/ +MPG123_EXPORT size_t mpg123_strlen(mpg123_string *sb, int utf8); + +/** Remove trailing \r and \n, if present. + * \return 0 on error, 1 on success + * \param sb the string + */ +MPG123_EXPORT int mpg123_chomp_string(mpg123_string *sb); + +/** The mpg123 text encodings. This contains encodings we encounter in ID3 tags or ICY meta info. */ +enum mpg123_text_encoding +{ + mpg123_text_unknown = 0 /**< Unkown encoding... mpg123_id3_encoding can return that on invalid codes. */ + ,mpg123_text_utf8 = 1 /**< UTF-8 */ + ,mpg123_text_latin1 = 2 /**< ISO-8859-1. Note that sometimes latin1 in ID3 is abused for totally different encodings. */ + ,mpg123_text_icy = 3 /**< ICY metadata encoding, usually CP-1252 but we take it as UTF-8 if it qualifies as such. */ + ,mpg123_text_cp1252 = 4 /**< Really CP-1252 without any guessing. */ + ,mpg123_text_utf16 = 5 /**< Some UTF-16 encoding. The last of a set of leading BOMs (byte order mark) rules. + * When there is no BOM, big endian ordering is used. Note that UCS-2 qualifies as UTF-8 when + * you don't mess with the reserved code points. If you want to decode little endian data + * without BOM you need to prepend 0xff 0xfe yourself. */ + ,mpg123_text_utf16bom = 6 /**< Just an alias for UTF-16, ID3v2 has this as distinct code. */ + ,mpg123_text_utf16be = 7 /**< Another alias for UTF16 from ID3v2. Note, that, because of the mess that is reality, + * BOMs are used if encountered. There really is not much distinction between the UTF16 types for mpg123 + * One exception: Since this is seen in ID3v2 tags, leading null bytes are skipped for all other UTF16 + * types (we expect a BOM before real data there), not so for utf16be!*/ + ,mpg123_text_max = 7 /**< Placeholder for the maximum encoding value. */ +}; + +/** The encoding byte values from ID3v2. */ +enum mpg123_id3_enc +{ + mpg123_id3_latin1 = 0 /**< Note: This sometimes can mean anything in practice... */ + ,mpg123_id3_utf16bom = 1 /**< UTF16, UCS-2 ... it's all the same for practical purposes. */ + ,mpg123_id3_utf16be = 2 /**< Big-endian UTF-16, BOM see note for mpg123_text_utf16be. */ + ,mpg123_id3_utf8 = 3 /**< Our lovely overly ASCII-compatible 8 byte encoding for the world. */ + ,mpg123_id3_enc_max = 3 /**< Placeholder to check valid range of encoding byte. */ +}; + +/** Convert ID3 encoding byte to mpg123 encoding index. */ +MPG123_EXPORT enum mpg123_text_encoding mpg123_enc_from_id3(unsigned char id3_enc_byte); + +/** Store text data in string, after converting to UTF-8 from indicated encoding + * \return 0 on error, 1 on success (on error, mpg123_free_string is called on sb) + * \param sb target string + * \param enc mpg123 text encoding value + * \param source source buffer with plain unsigned bytes (you might need to cast from char *) + * \param source_size number of bytes in the source buffer + * + * A prominent error can be that you provided an unknown encoding value, or this build of libmpg123 lacks support for certain encodings (ID3 or ICY stuff missing). + * Also, you might want to take a bit of care with preparing the data; for example, strip leading zeroes (I have seen that). + */ +MPG123_EXPORT int mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_encoding enc, const unsigned char *source, size_t source_size); + +/** Sub data structure for ID3v2, for storing various text fields (including comments). + * This is for ID3v2 COMM, TXXX and all the other text fields. + * Only COMM and TXXX have a description, only COMM and USLT have a language. + * You should consult the ID3v2 specification for the use of the various text fields ("frames" in ID3v2 documentation, I use "fields" here to separate from MPEG frames). */ +typedef struct +{ + char lang[3]; /**< Three-letter language code (not terminated). */ + char id[4]; /**< The ID3v2 text field id, like TALB, TPE2, ... (4 characters, no string termination). */ + mpg123_string description; /**< Empty for the generic comment... */ + mpg123_string text; /**< ... */ +} mpg123_text; + +/** The picture type values from ID3v2. */ +enum mpg123_id3_pic_type +{ + mpg123_id3_pic_other = 0 + ,mpg123_id3_pic_icon = 1 + ,mpg123_id3_pic_other_icon = 2 + ,mpg123_id3_pic_front_cover = 3 + ,mpg123_id3_pic_back_cover = 4 + ,mpg123_id3_pic_leaflet = 5 + ,mpg123_id3_pic_media = 6 + ,mpg123_id3_pic_lead = 7 + ,mpg123_id3_pic_artist = 8 + ,mpg123_id3_pic_conductor = 9 + ,mpg123_id3_pic_orchestra = 10 + ,mpg123_id3_pic_composer = 11 + ,mpg123_id3_pic_lyricist = 12 + ,mpg123_id3_pic_location = 13 + ,mpg123_id3_pic_recording = 14 + ,mpg123_id3_pic_performance = 15 + ,mpg123_id3_pic_video = 16 + ,mpg123_id3_pic_fish = 17 + ,mpg123_id3_pic_illustration = 18 + ,mpg123_id3_pic_artist_logo = 19 + ,mpg123_id3_pic_publisher_logo = 20 +}; + +/** Sub data structure for ID3v2, for storing picture data including comment. + * This is for the ID3v2 APIC field. You should consult the ID3v2 specification + * for the use of the APIC field ("frames" in ID3v2 documentation, I use "fields" + * here to separate from MPEG frames). */ +typedef struct +{ + char type; + mpg123_string description; + mpg123_string mime_type; + size_t size; + unsigned char* data; +} mpg123_picture; + +/** Data structure for storing IDV3v2 tags. + * This structure is not a direct binary mapping with the file contents. + * The ID3v2 text frames are allowed to contain multiple strings. + * So check for null bytes until you reach the mpg123_string fill. + * All text is encoded in UTF-8. */ +typedef struct +{ + unsigned char version; /**< 3 or 4 for ID3v2.3 or ID3v2.4. */ + mpg123_string *title; /**< Title string (pointer into text_list). */ + mpg123_string *artist; /**< Artist string (pointer into text_list). */ + mpg123_string *album; /**< Album string (pointer into text_list). */ + mpg123_string *year; /**< The year as a string (pointer into text_list). */ + mpg123_string *genre; /**< Genre String (pointer into text_list). The genre string(s) may very well need postprocessing, esp. for ID3v2.3. */ + mpg123_string *comment; /**< Pointer to last encountered comment text with empty description. */ + /* Encountered ID3v2 fields are appended to these lists. + There can be multiple occurences, the pointers above always point to the last encountered data. */ + mpg123_text *comment_list; /**< Array of comments. */ + size_t comments; /**< Number of comments. */ + mpg123_text *text; /**< Array of ID3v2 text fields (including USLT) */ + size_t texts; /**< Numer of text fields. */ + mpg123_text *extra; /**< The array of extra (TXXX) fields. */ + size_t extras; /**< Number of extra text (TXXX) fields. */ + mpg123_picture *picture; /**< Array of ID3v2 pictures fields (APIC). */ + size_t pictures; /**< Number of picture (APIC) fields. */ +} mpg123_id3v2; + +/** Data structure for ID3v1 tags (the last 128 bytes of a file). + * Don't take anything for granted (like string termination)! + * Also note the change ID3v1.1 did: comment[28] = 0; comment[29] = track_number + * It is your task to support ID3v1 only or ID3v1.1 ...*/ +typedef struct +{ + char tag[3]; /**< Always the string "TAG", the classic intro. */ + char title[30]; /**< Title string. */ + char artist[30]; /**< Artist string. */ + char album[30]; /**< Album string. */ + char year[4]; /**< Year string. */ + char comment[30]; /**< Comment string. */ + unsigned char genre; /**< Genre index. */ +} mpg123_id3v1; + +#define MPG123_ID3 0x3 /**< 0011 There is some ID3 info. Also matches 0010 or NEW_ID3. */ +#define MPG123_NEW_ID3 0x1 /**< 0001 There is ID3 info that changed since last call to mpg123_id3. */ +#define MPG123_ICY 0xc /**< 1100 There is some ICY info. Also matches 0100 or NEW_ICY.*/ +#define MPG123_NEW_ICY 0x4 /**< 0100 There is ICY info that changed since last call to mpg123_icy. */ + +/** Query if there is (new) meta info, be it ID3 or ICY (or something new in future). + The check function returns a combination of flags. */ +MPG123_EXPORT int mpg123_meta_check(mpg123_handle *mh); /* On error (no valid handle) just 0 is returned. */ + +/** Clean up meta data storage (ID3v2 and ICY), freeing memory. */ +MPG123_EXPORT void mpg123_meta_free(mpg123_handle *mh); + +/** Point v1 and v2 to existing data structures wich may change on any next read/decode function call. + * v1 and/or v2 can be set to NULL when there is no corresponding data. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_id3v2 **v2); + +/** Point icy_meta to existing data structure wich may change on any next read/decode function call. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_icy(mpg123_handle *mh, char **icy_meta); /* same for ICY meta string */ + +/** Decode from windows-1252 (the encoding ICY metainfo used) to UTF-8. + * Note that this is very similar to mpg123_store_utf8(&sb, mpg123_text_icy, icy_text, strlen(icy_text+1)) . + * \param icy_text The input data in ICY encoding + * \return pointer to newly allocated buffer with UTF-8 data (You free() it!) */ +MPG123_EXPORT char* mpg123_icy2utf8(const char* icy_text); + + +/* @} */ + + +/** \defgroup mpg123_advpar mpg123 advanced parameter API + * + * Direct access to a parameter set without full handle around it. + * Possible uses: + * - Influence behaviour of library _during_ initialization of handle (MPG123_VERBOSE). + * - Use one set of parameters for multiple handles. + * + * The functions for handling mpg123_pars (mpg123_par() and mpg123_fmt() + * family) directly return a fully qualified mpg123 error code, the ones + * operating on full handles normally MPG123_OK or MPG123_ERR, storing the + * specific error code itseld inside the handle. + * + * @{ + */ + +/** Opaque structure for the libmpg123 decoder parameters. */ +struct mpg123_pars_struct; + +/** Opaque structure for the libmpg123 decoder parameters. */ +typedef struct mpg123_pars_struct mpg123_pars; + +/** Create a handle with preset parameters. */ +MPG123_EXPORT mpg123_handle *mpg123_parnew(mpg123_pars *mp, const char* decoder, int *error); + +/** Allocate memory for and return a pointer to a new mpg123_pars */ +MPG123_EXPORT mpg123_pars *mpg123_new_pars(int *error); + +/** Delete and free up memory used by a mpg123_pars data structure */ +MPG123_EXPORT void mpg123_delete_pars(mpg123_pars* mp); + +/** Configure mpg123 parameters to accept no output format at all, + * use before specifying supported formats with mpg123_format + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_fmt_none(mpg123_pars *mp); + +/** Configure mpg123 parameters to accept all formats + * (also any custom rate you may set) -- this is default. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_fmt_all(mpg123_pars *mp); + +/** Set the audio format support of a mpg123_pars in detail: + \param rate The sample rate value (in Hertz). + \param channels A combination of MPG123_STEREO and MPG123_MONO. + \param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16|MPG123_ENC_ULAW_8 (or 0 for no support). + \return MPG123_OK on success +*/ +MPG123_EXPORT int mpg123_fmt(mpg123_pars *mp, long rate, int channels, int encodings); /* 0 is good, -1 is error */ + +/** Check to see if a specific format at a specific rate is supported + * by mpg123_pars. + * \return 0 for no support (that includes invalid parameters), MPG123_STEREO, + * MPG123_MONO or MPG123_STEREO|MPG123_MONO. */ +MPG123_EXPORT int mpg123_fmt_support(mpg123_pars *mp, long rate, int encoding); + +/** Set a specific parameter, for a specific mpg123_pars, using a parameter + * type key chosen from the mpg123_parms enumeration, to the specified value. */ +MPG123_EXPORT int mpg123_par(mpg123_pars *mp, enum mpg123_parms type, long value, double fvalue); + +/** Get a specific parameter, for a specific mpg123_pars. + * See the mpg123_parms enumeration for a list of available parameters. */ +MPG123_EXPORT int mpg123_getpar(mpg123_pars *mp, enum mpg123_parms type, long *val, double *fval); + +/* @} */ + + +/** \defgroup mpg123_lowio mpg123 low level I/O + * You may want to do tricky stuff with I/O that does not work with mpg123's default file access or you want to make it decode into your own pocket... + * + * @{ */ + +/** Replace default internal buffer with user-supplied buffer. + * Instead of working on it's own private buffer, mpg123 will directly use the one you provide for storing decoded audio. + * Note that the required buffer size could be bigger than expected from output + * encoding if libmpg123 has to convert from primary decoder output (p.ex. 32 bit + * storage for 24 bit output. + * \param data pointer to user buffer + * \param size of buffer in bytes + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_replace_buffer(mpg123_handle *mh, unsigned char *data, size_t size); + +/** The max size of one frame's decoded output with current settings. + * Use that to determine an appropriate minimum buffer size for decoding one frame. */ +MPG123_EXPORT size_t mpg123_outblock(mpg123_handle *mh); + +/** Replace low-level stream access functions; read and lseek as known in POSIX. + * You can use this to make any fancy file opening/closing yourself, + * using mpg123_open_fd() to set the file descriptor for your read/lseek (doesn't need to be a "real" file descriptor...). + * Setting a function to NULL means that the default internal read is + * used (active from next mpg123_open call on). + * Note: As it would be troublesome to mess with this while having a file open, + * this implies mpg123_close(). */ +MPG123_EXPORT int mpg123_replace_reader(mpg123_handle *mh, ssize_t (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int)); + +/** Replace I/O functions with your own ones operating on some kind of handle instead of integer descriptors. + * The handle is a void pointer, so you can pass any data you want... + * mpg123_open_handle() is the call you make to use the I/O defined here. + * There is no fallback to internal read/seek here. + * Note: As it would be troublesome to mess with this while having a file open, + * this mpg123_close() is implied here. + * \param r_read The callback for reading (behaviour like posix read). + * \param r_lseek The callback for seeking (like posix lseek). + * \param cleanup A callback to clean up an I/O handle on mpg123_close, can be NULL for none (you take care of cleaning your handles). */ +MPG123_EXPORT int mpg123_replace_reader_handle(mpg123_handle *mh, ssize_t (*r_read) (void *, void *, size_t), off_t (*r_lseek)(void *, off_t, int), void (*cleanup)(void*)); + +/* @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MacOSX/codecs/include/mpg123_config.txt b/MacOSX/codecs/include/mpg123_config.txt new file mode 100644 index 0000000..2e82553 --- /dev/null +++ b/MacOSX/codecs/include/mpg123_config.txt @@ -0,0 +1,5 @@ +mpg123-1.22.4, configured using: +--disable-modules --disable-debug --disable-fifo --disable-ipv6 --disable-network --disable-messages --disable-lfs-alias --with-audio=dummy +edited src/libmpg123/mpg123lib_intern.h and changed macros +NOQUIET, VERBOSE* and PVERB() to be 0, in order to disable +some debug messages from the library. diff --git a/MacOSX/codecs/include/ogg/config_types.h b/MacOSX/codecs/include/ogg/config_types.h new file mode 100644 index 0000000..4b00047 --- /dev/null +++ b/MacOSX/codecs/include/ogg/config_types.h @@ -0,0 +1,25 @@ +#ifndef __CONFIG_TYPES_H__ +#define __CONFIG_TYPES_H__ + +/* these are filled in by configure */ +#define INCLUDE_INTTYPES_H 1 +#define INCLUDE_STDINT_H 1 +#define INCLUDE_SYS_TYPES_H 1 + +#if INCLUDE_INTTYPES_H +# include <inttypes.h> +#endif +#if INCLUDE_STDINT_H +# include <stdint.h> +#endif +#if INCLUDE_SYS_TYPES_H +# include <sys/types.h> +#endif + +typedef int16_t ogg_int16_t; +typedef uint16_t ogg_uint16_t; +typedef int32_t ogg_int32_t; +typedef uint32_t ogg_uint32_t; +typedef int64_t ogg_int64_t; + +#endif diff --git a/MacOSX/codecs/include/ogg/ogg.h b/MacOSX/codecs/include/ogg/ogg.h new file mode 100644 index 0000000..cea4ebe --- /dev/null +++ b/MacOSX/codecs/include/ogg/ogg.h @@ -0,0 +1,210 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: toplevel libogg include + last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ + + ********************************************************************/ +#ifndef _OGG_H +#define _OGG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stddef.h> +#include <ogg/os_types.h> + +typedef struct { + void *iov_base; + size_t iov_len; +} ogg_iovec_t; + +typedef struct { + long endbyte; + int endbit; + + unsigned char *buffer; + unsigned char *ptr; + long storage; +} oggpack_buffer; + +/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ + +typedef struct { + unsigned char *header; + long header_len; + unsigned char *body; + long body_len; +} ogg_page; + +/* ogg_stream_state contains the current encode/decode state of a logical + Ogg bitstream **********************************************************/ + +typedef struct { + unsigned char *body_data; /* bytes from packet bodies */ + long body_storage; /* storage elements allocated */ + long body_fill; /* elements stored; fill mark */ + long body_returned; /* elements of fill returned */ + + + int *lacing_vals; /* The values that will go to the segment table */ + ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact + this way, but it is simple coupled to the + lacing fifo */ + long lacing_storage; + long lacing_fill; + long lacing_packet; + long lacing_returned; + + unsigned char header[282]; /* working space for header encode */ + int header_fill; + + int e_o_s; /* set when we have buffered the last packet in the + logical bitstream */ + int b_o_s; /* set after we've written the initial page + of a logical bitstream */ + long serialno; + long pageno; + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a separate abstraction + layer) also knows about the gap */ + ogg_int64_t granulepos; + +} ogg_stream_state; + +/* ogg_packet is used to encapsulate the data and metadata belonging + to a single raw Ogg/Vorbis packet *************************************/ + +typedef struct { + unsigned char *packet; + long bytes; + long b_o_s; + long e_o_s; + + ogg_int64_t granulepos; + + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a separate abstraction + layer) also knows about the gap */ +} ogg_packet; + +typedef struct { + unsigned char *data; + int storage; + int fill; + int returned; + + int unsynced; + int headerbytes; + int bodybytes; +} ogg_sync_state; + +/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ + +extern void oggpack_writeinit(oggpack_buffer *b); +extern int oggpack_writecheck(oggpack_buffer *b); +extern void oggpack_writetrunc(oggpack_buffer *b,long bits); +extern void oggpack_writealign(oggpack_buffer *b); +extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpack_reset(oggpack_buffer *b); +extern void oggpack_writeclear(oggpack_buffer *b); +extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpack_look(oggpack_buffer *b,int bits); +extern long oggpack_look1(oggpack_buffer *b); +extern void oggpack_adv(oggpack_buffer *b,int bits); +extern void oggpack_adv1(oggpack_buffer *b); +extern long oggpack_read(oggpack_buffer *b,int bits); +extern long oggpack_read1(oggpack_buffer *b); +extern long oggpack_bytes(oggpack_buffer *b); +extern long oggpack_bits(oggpack_buffer *b); +extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); + +extern void oggpackB_writeinit(oggpack_buffer *b); +extern int oggpackB_writecheck(oggpack_buffer *b); +extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); +extern void oggpackB_writealign(oggpack_buffer *b); +extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpackB_reset(oggpack_buffer *b); +extern void oggpackB_writeclear(oggpack_buffer *b); +extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpackB_look(oggpack_buffer *b,int bits); +extern long oggpackB_look1(oggpack_buffer *b); +extern void oggpackB_adv(oggpack_buffer *b,int bits); +extern void oggpackB_adv1(oggpack_buffer *b); +extern long oggpackB_read(oggpack_buffer *b,int bits); +extern long oggpackB_read1(oggpack_buffer *b); +extern long oggpackB_bytes(oggpack_buffer *b); +extern long oggpackB_bits(oggpack_buffer *b); +extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); + +/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ + +extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); +extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, + int count, long e_o_s, ogg_int64_t granulepos); +extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill); +extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill); + +/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ + +extern int ogg_sync_init(ogg_sync_state *oy); +extern int ogg_sync_clear(ogg_sync_state *oy); +extern int ogg_sync_reset(ogg_sync_state *oy); +extern int ogg_sync_destroy(ogg_sync_state *oy); +extern int ogg_sync_check(ogg_sync_state *oy); + +extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); +extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); +extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); +extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); +extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); +extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); + +/* Ogg BITSTREAM PRIMITIVES: general ***************************/ + +extern int ogg_stream_init(ogg_stream_state *os,int serialno); +extern int ogg_stream_clear(ogg_stream_state *os); +extern int ogg_stream_reset(ogg_stream_state *os); +extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); +extern int ogg_stream_destroy(ogg_stream_state *os); +extern int ogg_stream_check(ogg_stream_state *os); +extern int ogg_stream_eos(ogg_stream_state *os); + +extern void ogg_page_checksum_set(ogg_page *og); + +extern int ogg_page_version(const ogg_page *og); +extern int ogg_page_continued(const ogg_page *og); +extern int ogg_page_bos(const ogg_page *og); +extern int ogg_page_eos(const ogg_page *og); +extern ogg_int64_t ogg_page_granulepos(const ogg_page *og); +extern int ogg_page_serialno(const ogg_page *og); +extern long ogg_page_pageno(const ogg_page *og); +extern int ogg_page_packets(const ogg_page *og); + +extern void ogg_packet_clear(ogg_packet *op); + + +#ifdef __cplusplus +} +#endif + +#endif /* _OGG_H */ diff --git a/MacOSX/codecs/include/ogg/os_types.h b/MacOSX/codecs/include/ogg/os_types.h new file mode 100644 index 0000000..8bf8210 --- /dev/null +++ b/MacOSX/codecs/include/ogg/os_types.h @@ -0,0 +1,147 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: #ifdef jail to whip a few platforms into the UNIX ideal. + last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $ + + ********************************************************************/ +#ifndef _OS_TYPES_H +#define _OS_TYPES_H + +/* make it easy on the folks that want to compile the libs with a + different malloc than stdlib */ +#define _ogg_malloc malloc +#define _ogg_calloc calloc +#define _ogg_realloc realloc +#define _ogg_free free + +#if defined(_WIN32) + +# if defined(__CYGWIN__) +# include <stdint.h> + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + typedef uint64_t ogg_uint64_t; +# elif defined(__MINGW32__) +# include <sys/types.h> + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + typedef unsigned long long ogg_uint64_t; +# elif defined(__MWERKS__) + typedef long long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; +# else + /* MSVC/Borland */ + typedef __int64 ogg_int64_t; + typedef __int32 ogg_int32_t; + typedef unsigned __int32 ogg_uint32_t; + typedef __int16 ogg_int16_t; + typedef unsigned __int16 ogg_uint16_t; +# endif + +#elif defined(__MACOS__) + +# include <sys/types.h> + typedef SInt16 ogg_int16_t; + typedef UInt16 ogg_uint16_t; + typedef SInt32 ogg_int32_t; + typedef UInt32 ogg_uint32_t; + typedef SInt64 ogg_int64_t; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include <inttypes.h> + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined(__HAIKU__) + + /* Haiku */ +# include <sys/types.h> + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(__BEOS__) + + /* Be */ +# include <inttypes.h> + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short ogg_int16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(R5900) + + /* PS2 EE */ + typedef long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned ogg_uint32_t; + typedef short ogg_int16_t; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#elif defined(__TMS320C6X__) + + /* TI C64x compiler */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#else + +# include <ogg/config_types.h> + +#endif + +#endif /* _OS_TYPES_H */ diff --git a/MacOSX/codecs/include/opus/opus.h b/MacOSX/codecs/include/opus/opus.h new file mode 100644 index 0000000..462e639 --- /dev/null +++ b/MacOSX/codecs/include/opus/opus.h @@ -0,0 +1,906 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus.h + * @brief Opus reference implementation API + */ + +#ifndef OPUS_H +#define OPUS_H + +#include <opus/opus_types.h> +#include <opus/opus_defines.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @mainpage Opus + * + * The Opus codec is designed for interactive speech and audio transmission over the Internet. + * It is designed by the IETF Codec Working Group and incorporates technology from + * Skype's SILK codec and Xiph.Org's CELT codec. + * + * The Opus codec is designed to handle a wide range of interactive audio applications, + * including Voice over IP, videoconferencing, in-game chat, and even remote live music + * performances. It can scale from low bit-rate narrowband speech to very high quality + * stereo music. Its main features are: + + * @li Sampling rates from 8 to 48 kHz + * @li Bit-rates from 6 kb/s to 510 kb/s + * @li Support for both constant bit-rate (CBR) and variable bit-rate (VBR) + * @li Audio bandwidth from narrowband to full-band + * @li Support for speech and music + * @li Support for mono and stereo + * @li Support for multichannel (up to 255 channels) + * @li Frame sizes from 2.5 ms to 60 ms + * @li Good loss robustness and packet loss concealment (PLC) + * @li Floating point and fixed-point implementation + * + * Documentation sections: + * @li @ref opus_encoder + * @li @ref opus_decoder + * @li @ref opus_repacketizer + * @li @ref opus_multistream + * @li @ref opus_libinfo + * @li @ref opus_custom + */ + +/** @defgroup opus_encoder Opus Encoder + * @{ + * + * @brief This page describes the process and functions used to encode Opus. + * + * Since Opus is a stateful codec, the encoding process starts with creating an encoder + * state. This can be done with: + * + * @code + * int error; + * OpusEncoder *enc; + * enc = opus_encoder_create(Fs, channels, application, &error); + * @endcode + * + * From this point, @c enc can be used for encoding an audio stream. An encoder state + * @b must @b not be used for more than one stream at the same time. Similarly, the encoder + * state @b must @b not be re-initialized for each frame. + * + * While opus_encoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * + * @code + * int size; + * int error; + * OpusEncoder *enc; + * size = opus_encoder_get_size(channels); + * enc = malloc(size); + * error = opus_encoder_init(enc, Fs, channels, application); + * @endcode + * + * where opus_encoder_get_size() returns the required size for the encoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The encoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * It is possible to change some of the encoder's settings using the opus_encoder_ctl() + * interface. All these settings already default to the recommended value, so they should + * only be changed when necessary. The most common settings one may want to change are: + * + * @code + * opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate)); + * opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity)); + * opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type)); + * @endcode + * + * where + * + * @arg bitrate is in bits per second (b/s) + * @arg complexity is a value from 1 to 10, where 1 is the lowest complexity and 10 is the highest + * @arg signal_type is either OPUS_AUTO (default), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC + * + * See @ref opus_encoderctls and @ref opus_genericctls for a complete list of parameters that can be set or queried. Most parameters can be set or changed at any time during a stream. + * + * To encode a frame, opus_encode() or opus_encode_float() must be called with exactly one frame (2.5, 5, 10, 20, 40 or 60 ms) of audio data: + * @code + * len = opus_encode(enc, audio_frame, frame_size, packet, max_packet); + * @endcode + * + * where + * <ul> + * <li>audio_frame is the audio data in opus_int16 (or float for opus_encode_float())</li> + * <li>frame_size is the duration of the frame in samples (per channel)</li> + * <li>packet is the byte array to which the compressed data is written</li> + * <li>max_packet is the maximum number of bytes that can be written in the packet (4000 bytes is recommended). + * Do not use max_packet to control VBR target bitrate, instead use the #OPUS_SET_BITRATE CTL.</li> + * </ul> + * + * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet. + * The return value <b>can be negative</b>, which indicates that an error has occurred. If the return value + * is 1 byte, then the packet does not need to be transmitted (DTX). + * + * Once the encoder state if no longer needed, it can be destroyed with + * + * @code + * opus_encoder_destroy(enc); + * @endcode + * + * If the encoder was created with opus_encoder_init() rather than opus_encoder_create(), + * then no action is required aside from potentially freeing the memory that was manually + * allocated for it (calling free(enc) for the example above) + * + */ + +/** Opus encoder state. + * This contains the complete state of an Opus encoder. + * It is position independent and can be freely copied. + * @see opus_encoder_create,opus_encoder_init + */ +typedef struct OpusEncoder OpusEncoder; + +/** Gets the size of an <code>OpusEncoder</code> structure. + * @param[in] channels <tt>int</tt>: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_encoder_get_size(int channels); + +/** + */ + +/** Allocates and initializes an encoder state. + * There are three coding modes: + * + * @ref OPUS_APPLICATION_VOIP gives best quality at a given bitrate for voice + * signals. It enhances the input signal by high-pass filtering and + * emphasizing formants and harmonics. Optionally it includes in-band + * forward error correction to protect against packet loss. Use this + * mode for typical VoIP applications. Because of the enhancement, + * even at high bitrates the output may sound different from the input. + * + * @ref OPUS_APPLICATION_AUDIO gives best quality at a given bitrate for most + * non-voice signals like music. Use this mode for music and mixed + * (music/voice) content, broadcast, and applications requiring less + * than 15 ms of coding delay. + * + * @ref OPUS_APPLICATION_RESTRICTED_LOWDELAY configures low-delay mode that + * disables the speech-optimized mode in exchange for slightly reduced delay. + * This mode can only be set on an newly initialized or freshly reset encoder + * because it changes the codec delay. + * + * This is useful when the caller knows that the speech-optimized modes will not be needed (use with caution). + * @param [in] Fs <tt>opus_int32</tt>: Sampling rate of input signal (Hz) + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) in input signal + * @param [in] application <tt>int</tt>: Coding mode (@ref OPUS_APPLICATION_VOIP/@ref OPUS_APPLICATION_AUDIO/@ref OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @param [out] error <tt>int*</tt>: @ref opus_errorcodes + * @note Regardless of the sampling rate and number channels selected, the Opus encoder + * can switch to a lower audio bandwidth or number of channels if the bitrate + * selected is too low. This also means that it is safe to always use 48 kHz stereo input + * and let the encoder optimize the encoding. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusEncoder *opus_encoder_create( + opus_int32 Fs, + int channels, + int application, + int *error +); + +/** Initializes a previously allocated encoder state + * The memory pointed to by st must be at least the size returned by opus_encoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. + * @see opus_encoder_create(),opus_encoder_get_size() + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st <tt>OpusEncoder*</tt>: Encoder state + * @param [in] Fs <tt>opus_int32</tt>: Sampling rate of input signal (Hz) + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) in input signal + * @param [in] application <tt>int</tt>: Coding mode (OPUS_APPLICATION_VOIP/OPUS_APPLICATION_AUDIO/OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_encoder_init( + OpusEncoder *st, + opus_int32 Fs, + int channels, + int application +) OPUS_ARG_NONNULL(1); + +/** Encodes an Opus frame. + * @param [in] st <tt>OpusEncoder*</tt>: Encoder state + * @param [in] pcm <tt>opus_int16*</tt>: Input signal (interleaved if 2 channels). length is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size <tt>int</tt>: Number of samples per channel in the + * input signal. + * This must be an Opus frame size for + * the encoder's sampling rate. + * For example, at 48 kHz the permitted + * values are 120, 240, 480, 960, 1920, + * and 2880. + * Passing in a duration of less than + * 10 ms (480 samples at 48 kHz) will + * prevent the encoder from using the LPC + * or hybrid modes. + * @param [out] data <tt>unsigned char*</tt>: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode( + OpusEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes an Opus frame from floating point input. + * @param [in] st <tt>OpusEncoder*</tt>: Encoder state + * @param [in] pcm <tt>float*</tt>: Input in float format (interleaved if 2 channels), with a normal range of +/-1.0. + * Samples with a range beyond +/-1.0 are supported but will + * be clipped by decoders using the integer API and should + * only be used if it is known that the far end supports + * extended dynamic range. + * length is frame_size*channels*sizeof(float) + * @param [in] frame_size <tt>int</tt>: Number of samples per channel in the + * input signal. + * This must be an Opus frame size for + * the encoder's sampling rate. + * For example, at 48 kHz the permitted + * values are 120, 240, 480, 960, 1920, + * and 2880. + * Passing in a duration of less than + * 10 ms (480 samples at 48 kHz) will + * prevent the encoder from using the LPC + * or hybrid modes. + * @param [out] data <tt>unsigned char*</tt>: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode_float( + OpusEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an <code>OpusEncoder</code> allocated by opus_encoder_create(). + * @param[in] st <tt>OpusEncoder*</tt>: State to be freed. + */ +OPUS_EXPORT void opus_encoder_destroy(OpusEncoder *st); + +/** Perform a CTL function on an Opus encoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st <tt>OpusEncoder*</tt>: Encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_encoderctls. + * @see opus_genericctls + * @see opus_encoderctls + */ +OPUS_EXPORT int opus_encoder_ctl(OpusEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); +/**@}*/ + +/** @defgroup opus_decoder Opus Decoder + * @{ + * + * @brief This page describes the process and functions used to decode Opus. + * + * The decoding process also starts with creating a decoder + * state. This can be done with: + * @code + * int error; + * OpusDecoder *dec; + * dec = opus_decoder_create(Fs, channels, &error); + * @endcode + * where + * @li Fs is the sampling rate and must be 8000, 12000, 16000, 24000, or 48000 + * @li channels is the number of channels (1 or 2) + * @li error will hold the error code in case of failure (or #OPUS_OK on success) + * @li the return value is a newly created decoder state to be used for decoding + * + * While opus_decoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * @code + * int size; + * int error; + * OpusDecoder *dec; + * size = opus_decoder_get_size(channels); + * dec = malloc(size); + * error = opus_decoder_init(dec, Fs, channels); + * @endcode + * where opus_decoder_get_size() returns the required size for the decoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The decoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * To decode a frame, opus_decode() or opus_decode_float() must be called with a packet of compressed audio data: + * @code + * frame_size = opus_decode(dec, packet, len, decoded, max_size, 0); + * @endcode + * where + * + * @li packet is the byte array containing the compressed data + * @li len is the exact number of bytes contained in the packet + * @li decoded is the decoded audio data in opus_int16 (or float for opus_decode_float()) + * @li max_size is the max duration of the frame in samples (per channel) that can fit into the decoded_frame array + * + * opus_decode() and opus_decode_float() return the number of samples (per channel) decoded from the packet. + * If that value is negative, then an error has occurred. This can occur if the packet is corrupted or if the audio + * buffer is too small to hold the decoded audio. + * + * Opus is a stateful codec with overlapping blocks and as a result Opus + * packets are not coded independently of each other. Packets must be + * passed into the decoder serially and in the correct order for a correct + * decode. Lost packets can be replaced with loss concealment by calling + * the decoder with a null pointer and zero length for the missing packet. + * + * A single codec state may only be accessed from a single thread at + * a time and any required locking must be performed by the caller. Separate + * streams must be decoded with separate decoder states and can be decoded + * in parallel unless the library was compiled with NONTHREADSAFE_PSEUDOSTACK + * defined. + * + */ + +/** Opus decoder state. + * This contains the complete state of an Opus decoder. + * It is position independent and can be freely copied. + * @see opus_decoder_create,opus_decoder_init + */ +typedef struct OpusDecoder OpusDecoder; + +/** Gets the size of an <code>OpusDecoder</code> structure. + * @param [in] channels <tt>int</tt>: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_size(int channels); + +/** Allocates and initializes a decoder state. + * @param [in] Fs <tt>opus_int32</tt>: Sample rate to decode at (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) to decode + * @param [out] error <tt>int*</tt>: #OPUS_OK Success or @ref opus_errorcodes + * + * Internally Opus stores data at 48000 Hz, so that should be the default + * value for Fs. However, the decoder can efficiently decode to buffers + * at 8, 12, 16, and 24 kHz so if for some reason the caller cannot use + * data at the full sample rate, or knows the compressed data doesn't + * use the full frequency range, it can request decoding at a reduced + * rate. Likewise, the decoder is capable of filling in either mono or + * interleaved stereo pcm buffers, at the caller's request. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusDecoder *opus_decoder_create( + opus_int32 Fs, + int channels, + int *error +); + +/** Initializes a previously allocated decoder state. + * The state must be at least the size returned by opus_decoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. @see opus_decoder_create,opus_decoder_get_size + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st <tt>OpusDecoder*</tt>: Decoder state. + * @param [in] Fs <tt>opus_int32</tt>: Sampling rate to decode to (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels <tt>int</tt>: Number of channels (1 or 2) to decode + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_decoder_init( + OpusDecoder *st, + opus_int32 Fs, + int channels +) OPUS_ARG_NONNULL(1); + +/** Decode an Opus packet. + * @param [in] st <tt>OpusDecoder*</tt>: Decoder state + * @param [in] data <tt>char*</tt>: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len <tt>opus_int32</tt>: Number of bytes in payload* + * @param [out] pcm <tt>opus_int16*</tt>: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size Number of samples per channel of available space in \a pcm. + * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will + * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), + * then frame_size needs to be exactly the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and + * FEC cases, frame_size <b>must</b> be a multiple of 2.5 ms. + * @param [in] decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band forward error correction data be + * decoded. If no such data is available, the frame is decoded as if it were lost. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode an Opus packet with floating point output. + * @param [in] st <tt>OpusDecoder*</tt>: Decoder state + * @param [in] data <tt>char*</tt>: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len <tt>opus_int32</tt>: Number of bytes in payload + * @param [out] pcm <tt>float*</tt>: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(float) + * @param [in] frame_size Number of samples per channel of available space in \a pcm. + * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will + * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), + * then frame_size needs to be exactly the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and + * FEC cases, frame_size <b>must</b> be a multiple of 2.5 ms. + * @param [in] decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band forward error correction data be + * decoded. If no such data is available the frame is decoded as if it were lost. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode_float( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on an Opus decoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st <tt>OpusDecoder*</tt>: Decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_decoderctls. + * @see opus_genericctls + * @see opus_decoderctls + */ +OPUS_EXPORT int opus_decoder_ctl(OpusDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an <code>OpusDecoder</code> allocated by opus_decoder_create(). + * @param[in] st <tt>OpusDecoder*</tt>: State to be freed. + */ +OPUS_EXPORT void opus_decoder_destroy(OpusDecoder *st); + +/** Parse an opus packet into one or more frames. + * Opus_decode will perform this operation internally so most applications do + * not need to use this function. + * This function does not copy the frames, the returned pointers are pointers into + * the input packet. + * @param [in] data <tt>char*</tt>: Opus packet to be parsed + * @param [in] len <tt>opus_int32</tt>: size of data + * @param [out] out_toc <tt>char*</tt>: TOC pointer + * @param [out] frames <tt>char*[48]</tt> encapsulated frames + * @param [out] size <tt>opus_int16[48]</tt> sizes of the encapsulated frames + * @param [out] payload_offset <tt>int*</tt>: returns the position of the payload within the packet (in bytes) + * @returns number of frames + */ +OPUS_EXPORT int opus_packet_parse( + const unsigned char *data, + opus_int32 len, + unsigned char *out_toc, + const unsigned char *frames[48], + opus_int16 size[48], + int *payload_offset +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5); + +/** Gets the bandwidth of an Opus packet. + * @param [in] data <tt>char*</tt>: Opus packet + * @retval OPUS_BANDWIDTH_NARROWBAND Narrowband (4kHz bandpass) + * @retval OPUS_BANDWIDTH_MEDIUMBAND Mediumband (6kHz bandpass) + * @retval OPUS_BANDWIDTH_WIDEBAND Wideband (8kHz bandpass) + * @retval OPUS_BANDWIDTH_SUPERWIDEBAND Superwideband (12kHz bandpass) + * @retval OPUS_BANDWIDTH_FULLBAND Fullband (20kHz bandpass) + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_bandwidth(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples per frame from an Opus packet. + * @param [in] data <tt>char*</tt>: Opus packet. + * This must contain at least one byte of + * data. + * @param [in] Fs <tt>opus_int32</tt>: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples per frame. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_samples_per_frame(const unsigned char *data, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of channels from an Opus packet. + * @param [in] data <tt>char*</tt>: Opus packet + * @returns Number of channels + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_channels(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of frames in an Opus packet. + * @param [in] packet <tt>char*</tt>: Opus packet + * @param [in] len <tt>opus_int32</tt>: Length of packet + * @returns Number of frames + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_frames(const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] packet <tt>char*</tt>: Opus packet + * @param [in] len <tt>opus_int32</tt>: Length of packet + * @param [in] Fs <tt>opus_int32</tt>: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_samples(const unsigned char packet[], opus_int32 len, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] dec <tt>OpusDecoder*</tt>: Decoder state + * @param [in] packet <tt>char*</tt>: Opus packet + * @param [in] len <tt>opus_int32</tt>: Length of packet + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); +/**@}*/ + +/** @defgroup opus_repacketizer Repacketizer + * @{ + * + * The repacketizer can be used to merge multiple Opus packets into a single + * packet or alternatively to split Opus packets that have previously been + * merged. Splitting valid Opus packets is always guaranteed to succeed, + * whereas merging valid packets only succeeds if all frames have the same + * mode, bandwidth, and frame size, and when the total duration of the merged + * packet is no more than 120 ms. + * The repacketizer currently only operates on elementary Opus + * streams. It will not manipualte multistream packets successfully, except in + * the degenerate case where they consist of data from a single stream. + * + * The repacketizing process starts with creating a repacketizer state, either + * by calling opus_repacketizer_create() or by allocating the memory yourself, + * e.g., + * @code + * OpusRepacketizer *rp; + * rp = (OpusRepacketizer*)malloc(opus_repacketizer_get_size()); + * if (rp != NULL) + * opus_repacketizer_init(rp); + * @endcode + * + * Then the application should submit packets with opus_repacketizer_cat(), + * extract new packets with opus_repacketizer_out() or + * opus_repacketizer_out_range(), and then reset the state for the next set of + * input packets via opus_repacketizer_init(). + * + * For example, to split a sequence of packets into individual frames: + * @code + * unsigned char *data; + * int len; + * while (get_next_packet(&data, &len)) + * { + * unsigned char out[1276]; + * opus_int32 out_len; + * int nb_frames; + * int err; + * int i; + * err = opus_repacketizer_cat(rp, data, len); + * if (err != OPUS_OK) + * { + * release_packet(data); + * return err; + * } + * nb_frames = opus_repacketizer_get_nb_frames(rp); + * for (i = 0; i < nb_frames; i++) + * { + * out_len = opus_repacketizer_out_range(rp, i, i+1, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packet(data); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * } + * opus_repacketizer_init(rp); + * release_packet(data); + * } + * @endcode + * + * Alternatively, to combine a sequence of frames into packets that each + * contain up to <code>TARGET_DURATION_MS</code> milliseconds of data: + * @code + * // The maximum number of packets with duration TARGET_DURATION_MS occurs + * // when the frame size is 2.5 ms, for a total of (TARGET_DURATION_MS*2/5) + * // packets. + * unsigned char *data[(TARGET_DURATION_MS*2/5)+1]; + * opus_int32 len[(TARGET_DURATION_MS*2/5)+1]; + * int nb_packets; + * unsigned char out[1277*(TARGET_DURATION_MS*2/2)]; + * opus_int32 out_len; + * int prev_toc; + * nb_packets = 0; + * while (get_next_packet(data+nb_packets, len+nb_packets)) + * { + * int nb_frames; + * int err; + * nb_frames = opus_packet_get_nb_frames(data[nb_packets], len[nb_packets]); + * if (nb_frames < 1) + * { + * release_packets(data, nb_packets+1); + * return nb_frames; + * } + * nb_frames += opus_repacketizer_get_nb_frames(rp); + * // If adding the next packet would exceed our target, or it has an + * // incompatible TOC sequence, output the packets we already have before + * // submitting it. + * // N.B., The nb_packets > 0 check ensures we've submitted at least one + * // packet since the last call to opus_repacketizer_init(). Otherwise a + * // single packet longer than TARGET_DURATION_MS would cause us to try to + * // output an (invalid) empty packet. It also ensures that prev_toc has + * // been set to a valid value. Additionally, len[nb_packets] > 0 is + * // guaranteed by the call to opus_packet_get_nb_frames() above, so the + * // reference to data[nb_packets][0] should be valid. + * if (nb_packets > 0 && ( + * ((prev_toc & 0xFC) != (data[nb_packets][0] & 0xFC)) || + * opus_packet_get_samples_per_frame(data[nb_packets], 48000)*nb_frames > + * TARGET_DURATION_MS*48)) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packets(data, nb_packets+1); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * opus_repacketizer_init(rp); + * release_packets(data, nb_packets); + * data[0] = data[nb_packets]; + * len[0] = len[nb_packets]; + * nb_packets = 0; + * } + * err = opus_repacketizer_cat(rp, data[nb_packets], len[nb_packets]); + * if (err != OPUS_OK) + * { + * release_packets(data, nb_packets+1); + * return err; + * } + * prev_toc = data[nb_packets][0]; + * nb_packets++; + * } + * // Output the final, partial packet. + * if (nb_packets > 0) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * release_packets(data, nb_packets); + * if (out_len < 0) + * return (int)out_len; + * output_next_packet(out, out_len); + * } + * @endcode + * + * An alternate way of merging packets is to simply call opus_repacketizer_cat() + * unconditionally until it fails. At that point, the merged packet can be + * obtained with opus_repacketizer_out() and the input packet for which + * opus_repacketizer_cat() needs to be re-added to a newly reinitialized + * repacketizer state. + */ + +typedef struct OpusRepacketizer OpusRepacketizer; + +/** Gets the size of an <code>OpusRepacketizer</code> structure. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_size(void); + +/** (Re)initializes a previously allocated repacketizer state. + * The state must be at least the size returned by opus_repacketizer_get_size(). + * This can be used for applications which use their own allocator instead of + * malloc(). + * It must also be called to reset the queue of packets waiting to be + * repacketized, which is necessary if the maximum packet duration of 120 ms + * is reached or if you wish to submit packets with a different Opus + * configuration (coding mode, audio bandwidth, frame size, or channel count). + * Failure to do so will prevent a new packet from being added with + * opus_repacketizer_cat(). + * @see opus_repacketizer_create + * @see opus_repacketizer_get_size + * @see opus_repacketizer_cat + * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state to + * (re)initialize. + * @returns A pointer to the same repacketizer state that was passed in. + */ +OPUS_EXPORT OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Allocates memory and initializes the new repacketizer with + * opus_repacketizer_init(). + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusRepacketizer *opus_repacketizer_create(void); + +/** Frees an <code>OpusRepacketizer</code> allocated by + * opus_repacketizer_create(). + * @param[in] rp <tt>OpusRepacketizer*</tt>: State to be freed. + */ +OPUS_EXPORT void opus_repacketizer_destroy(OpusRepacketizer *rp); + +/** Add a packet to the current repacketizer state. + * This packet must match the configuration of any packets already submitted + * for repacketization since the last call to opus_repacketizer_init(). + * This means that it must have the same coding mode, audio bandwidth, frame + * size, and channel count. + * This can be checked in advance by examining the top 6 bits of the first + * byte of the packet, and ensuring they match the top 6 bits of the first + * byte of any previously submitted packet. + * The total duration of audio in the repacketizer state also must not exceed + * 120 ms, the maximum duration of a single packet, after adding this packet. + * + * The contents of the current repacketizer state can be extracted into new + * packets using opus_repacketizer_out() or opus_repacketizer_out_range(). + * + * In order to add a packet with a different configuration or to add more + * audio beyond 120 ms, you must clear the repacketizer state by calling + * opus_repacketizer_init(). + * If a packet is too large to add to the current repacketizer state, no part + * of it is added, even if it contains multiple frames, some of which might + * fit. + * If you wish to be able to add parts of such packets, you should first use + * another repacketizer to split the packet into pieces and add them + * individually. + * @see opus_repacketizer_out_range + * @see opus_repacketizer_out + * @see opus_repacketizer_init + * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state to which to + * add the packet. + * @param[in] data <tt>const unsigned char*</tt>: The packet data. + * The application must ensure + * this pointer remains valid + * until the next call to + * opus_repacketizer_init() or + * opus_repacketizer_destroy(). + * @param len <tt>opus_int32</tt>: The number of bytes in the packet data. + * @returns An error code indicating whether or not the operation succeeded. + * @retval #OPUS_OK The packet's contents have been added to the repacketizer + * state. + * @retval #OPUS_INVALID_PACKET The packet did not have a valid TOC sequence, + * the packet's TOC sequence was not compatible + * with previously submitted packets (because + * the coding mode, audio bandwidth, frame size, + * or channel count did not match), or adding + * this packet would increase the total amount of + * audio stored in the repacketizer state to more + * than 120 ms. + */ +OPUS_EXPORT int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state from which to + * construct the new packet. + * @param begin <tt>int</tt>: The index of the first frame in the current + * repacketizer state to include in the output. + * @param end <tt>int</tt>: One past the index of the last frame in the + * current repacketizer state to include in the + * output. + * @param[out] data <tt>const unsigned char*</tt>: The buffer in which to + * store the output packet. + * @param maxlen <tt>opus_int32</tt>: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * <code>1276</code> for a single frame, + * or for multiple frames, + * <code>1277*(end-begin)</code>. + * However, <code>1*(end-begin)</code> plus + * the size of all packet data submitted to + * the repacketizer since the last call to + * opus_repacketizer_init() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG <code>[begin,end)</code> was an invalid range of + * frames (begin < 0, begin >= end, or end > + * opus_repacketizer_get_nb_frames()). + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Return the total number of frames contained in packet data submitted to + * the repacketizer state so far via opus_repacketizer_cat() since the last + * call to opus_repacketizer_init() or opus_repacketizer_create(). + * This defines the valid range of packets that can be extracted with + * opus_repacketizer_out_range() or opus_repacketizer_out(). + * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state containing the + * frames. + * @returns The total number of frames contained in the packet data submitted + * to the repacketizer state. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * This is a convenience routine that returns all the data submitted so far + * in a single packet. + * It is equivalent to calling + * @code + * opus_repacketizer_out_range(rp, 0, opus_repacketizer_get_nb_frames(rp), + * data, maxlen) + * @endcode + * @param rp <tt>OpusRepacketizer*</tt>: The repacketizer state from which to + * construct the new packet. + * @param[out] data <tt>const unsigned char*</tt>: The buffer in which to + * store the output packet. + * @param maxlen <tt>opus_int32</tt>: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * <code>1277*opus_repacketizer_get_nb_frames(rp)</code>. + * However, + * <code>1*opus_repacketizer_get_nb_frames(rp)</code> + * plus the size of all packet data + * submitted to the repacketizer since the + * last call to opus_repacketizer_init() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_H */ diff --git a/MacOSX/codecs/include/opus/opus_defines.h b/MacOSX/codecs/include/opus/opus_defines.h new file mode 100644 index 0000000..bf983f9 --- /dev/null +++ b/MacOSX/codecs/include/opus/opus_defines.h @@ -0,0 +1,659 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_defines.h + * @brief Opus reference implementation constants + */ + +#ifndef OPUS_DEFINES_H +#define OPUS_DEFINES_H + +#include <opus/opus_types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup opus_errorcodes Error codes + * @{ + */ +/** No error @hideinitializer*/ +#define OPUS_OK 0 +/** One or more invalid/out of range arguments @hideinitializer*/ +#define OPUS_BAD_ARG -1 +/** The mode struct passed is invalid @hideinitializer*/ +#define OPUS_BUFFER_TOO_SMALL -2 +/** An internal error was detected @hideinitializer*/ +#define OPUS_INTERNAL_ERROR -3 +/** The compressed data passed is corrupted @hideinitializer*/ +#define OPUS_INVALID_PACKET -4 +/** Invalid/unsupported request number @hideinitializer*/ +#define OPUS_UNIMPLEMENTED -5 +/** An encoder or decoder structure is invalid or already freed @hideinitializer*/ +#define OPUS_INVALID_STATE -6 +/** Memory allocation has failed @hideinitializer*/ +#define OPUS_ALLOC_FAIL -7 +/**@}*/ + +/** @cond OPUS_INTERNAL_DOC */ +/**Export control for opus functions */ + +#ifndef OPUS_EXPORT +# if defined(_WIN32) +# if defined(OPUS_BUILD) && defined(DLL_EXPORT) +# define OPUS_EXPORT __declspec(dllexport) +# else +# define OPUS_EXPORT +# endif +# elif defined(__GNUC__) && defined(OPUS_BUILD) +# define OPUS_EXPORT __attribute__ ((visibility ("default"))) +# else +# define OPUS_EXPORT +# endif +#endif + +# if !defined(OPUS_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OPUS_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OPUS_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +#if (defined(__GNUC__) && !OPUS_GNUC_PREREQ(3,4)) +/* __restrict is broken with gcc < 3.4 + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=6392 */ +# define OPUS_RESTRICT +#elif (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if OPUS_GNUC_PREREQ(3,0) +# define OPUS_RESTRICT __restrict__ +# elif (defined(_MSC_VER) && _MSC_VER >= 1400) +# define OPUS_RESTRICT __restrict +# else +# define OPUS_RESTRICT +# endif +#else +# define OPUS_RESTRICT restrict +#endif + +/**Warning attributes for opus functions + * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out + * some paranoid null checks. */ +#if defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +#else +# define OPUS_WARN_UNUSED_RESULT +#endif +#if !defined(OPUS_BUILD) && defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +#else +# define OPUS_ARG_NONNULL(_x) +#endif + +/** These are the actual Encoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +#define OPUS_SET_APPLICATION_REQUEST 4000 +#define OPUS_GET_APPLICATION_REQUEST 4001 +#define OPUS_SET_BITRATE_REQUEST 4002 +#define OPUS_GET_BITRATE_REQUEST 4003 +#define OPUS_SET_MAX_BANDWIDTH_REQUEST 4004 +#define OPUS_GET_MAX_BANDWIDTH_REQUEST 4005 +#define OPUS_SET_VBR_REQUEST 4006 +#define OPUS_GET_VBR_REQUEST 4007 +#define OPUS_SET_BANDWIDTH_REQUEST 4008 +#define OPUS_GET_BANDWIDTH_REQUEST 4009 +#define OPUS_SET_COMPLEXITY_REQUEST 4010 +#define OPUS_GET_COMPLEXITY_REQUEST 4011 +#define OPUS_SET_INBAND_FEC_REQUEST 4012 +#define OPUS_GET_INBAND_FEC_REQUEST 4013 +#define OPUS_SET_PACKET_LOSS_PERC_REQUEST 4014 +#define OPUS_GET_PACKET_LOSS_PERC_REQUEST 4015 +#define OPUS_SET_DTX_REQUEST 4016 +#define OPUS_GET_DTX_REQUEST 4017 +#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020 +#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021 +#define OPUS_SET_FORCE_CHANNELS_REQUEST 4022 +#define OPUS_GET_FORCE_CHANNELS_REQUEST 4023 +#define OPUS_SET_SIGNAL_REQUEST 4024 +#define OPUS_GET_SIGNAL_REQUEST 4025 +#define OPUS_GET_LOOKAHEAD_REQUEST 4027 +/* #define OPUS_RESET_STATE 4028 */ +#define OPUS_GET_SAMPLE_RATE_REQUEST 4029 +#define OPUS_GET_FINAL_RANGE_REQUEST 4031 +#define OPUS_GET_PITCH_REQUEST 4033 +#define OPUS_SET_GAIN_REQUEST 4034 +#define OPUS_GET_GAIN_REQUEST 4045 /* Should have been 4035 */ +#define OPUS_SET_LSB_DEPTH_REQUEST 4036 +#define OPUS_GET_LSB_DEPTH_REQUEST 4037 + +#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039 + +/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */ + +/* Macros to trigger compilation errors when the wrong types are provided to a CTL */ +#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x)) +#define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr))) +#define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr))) +/** @endcond */ + +/** @defgroup opus_ctlvalues Pre-defined values for CTL interface + * @see opus_genericctls, opus_encoderctls + * @{ + */ +/* Values for the various encoder CTLs */ +#define OPUS_AUTO -1000 /**<Auto/default setting @hideinitializer*/ +#define OPUS_BITRATE_MAX -1 /**<Maximum bitrate @hideinitializer*/ + +/** Best for most VoIP/videoconference applications where listening quality and intelligibility matter most + * @hideinitializer */ +#define OPUS_APPLICATION_VOIP 2048 +/** Best for broadcast/high-fidelity application where the decoded audio should be as close as possible to the input + * @hideinitializer */ +#define OPUS_APPLICATION_AUDIO 2049 +/** Only use when lowest-achievable latency is what matters most. Voice-optimized modes cannot be used. + * @hideinitializer */ +#define OPUS_APPLICATION_RESTRICTED_LOWDELAY 2051 + +#define OPUS_SIGNAL_VOICE 3001 /**< Signal being encoded is voice */ +#define OPUS_SIGNAL_MUSIC 3002 /**< Signal being encoded is music */ +#define OPUS_BANDWIDTH_NARROWBAND 1101 /**< 4 kHz bandpass @hideinitializer*/ +#define OPUS_BANDWIDTH_MEDIUMBAND 1102 /**< 6 kHz bandpass @hideinitializer*/ +#define OPUS_BANDWIDTH_WIDEBAND 1103 /**< 8 kHz bandpass @hideinitializer*/ +#define OPUS_BANDWIDTH_SUPERWIDEBAND 1104 /**<12 kHz bandpass @hideinitializer*/ +#define OPUS_BANDWIDTH_FULLBAND 1105 /**<20 kHz bandpass @hideinitializer*/ + +/**@}*/ + + +/** @defgroup opus_encoderctls Encoder related CTLs + * + * These are convenience macros for use with the \c opus_encode_ctl + * interface. They are used to generate the appropriate series of + * arguments for that call, passing the correct type, size and so + * on as expected for each particular request. + * + * Some usage examples: + * + * @code + * int ret; + * ret = opus_encoder_ctl(enc_ctx, OPUS_SET_BANDWIDTH(OPUS_AUTO)); + * if (ret != OPUS_OK) return ret; + * + * opus_int32 rate; + * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&rate)); + * + * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE); + * @endcode + * + * @see opus_genericctls, opus_encoder + * @{ + */ + +/** Configures the encoder's computational complexity. + * The supported range is 0-10 inclusive with 10 representing the highest complexity. + * @see OPUS_GET_COMPLEXITY + * @param[in] x <tt>opus_int32</tt>: Allowed values: 0-10, inclusive. + * + * @hideinitializer */ +#define OPUS_SET_COMPLEXITY(x) OPUS_SET_COMPLEXITY_REQUEST, __opus_check_int(x) +/** Gets the encoder's complexity configuration. + * @see OPUS_SET_COMPLEXITY + * @param[out] x <tt>opus_int32 *</tt>: Returns a value in the range 0-10, + * inclusive. + * @hideinitializer */ +#define OPUS_GET_COMPLEXITY(x) OPUS_GET_COMPLEXITY_REQUEST, __opus_check_int_ptr(x) + +/** Configures the bitrate in the encoder. + * Rates from 500 to 512000 bits per second are meaningful, as well as the + * special values #OPUS_AUTO and #OPUS_BITRATE_MAX. + * The value #OPUS_BITRATE_MAX can be used to cause the codec to use as much + * rate as it can, which is useful for controlling the rate by adjusting the + * output buffer size. + * @see OPUS_GET_BITRATE + * @param[in] x <tt>opus_int32</tt>: Bitrate in bits per second. The default + * is determined based on the number of + * channels and the input sampling rate. + * @hideinitializer */ +#define OPUS_SET_BITRATE(x) OPUS_SET_BITRATE_REQUEST, __opus_check_int(x) +/** Gets the encoder's bitrate configuration. + * @see OPUS_SET_BITRATE + * @param[out] x <tt>opus_int32 *</tt>: Returns the bitrate in bits per second. + * The default is determined based on the + * number of channels and the input + * sampling rate. + * @hideinitializer */ +#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables variable bitrate (VBR) in the encoder. + * The configured bitrate may not be met exactly because frames must + * be an integer number of bytes in length. + * @warning Only the MDCT mode of Opus can provide hard CBR behavior. + * @see OPUS_GET_VBR + * @see OPUS_SET_VBR_CONSTRAINT + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>0</dt><dd>Hard CBR. For LPC/hybrid modes at very low bit-rate, this can + * cause noticeable quality degradation.</dd> + * <dt>1</dt><dd>VBR (default). The exact type of VBR is controlled by + * #OPUS_SET_VBR_CONSTRAINT.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x) +/** Determine if variable bitrate (VBR) is enabled in the encoder. + * @see OPUS_SET_VBR + * @see OPUS_GET_VBR_CONSTRAINT + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>0</dt><dd>Hard CBR.</dd> + * <dt>1</dt><dd>VBR (default). The exact type of VBR may be retrieved via + * #OPUS_GET_VBR_CONSTRAINT.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables constrained VBR in the encoder. + * This setting is ignored when the encoder is in CBR mode. + * @warning Only the MDCT mode of Opus currently heeds the constraint. + * Speech mode ignores it completely, hybrid mode may fail to obey it + * if the LPC layer uses more bitrate than the constraint would have + * permitted. + * @see OPUS_GET_VBR_CONSTRAINT + * @see OPUS_SET_VBR + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>0</dt><dd>Unconstrained VBR.</dd> + * <dt>1</dt><dd>Constrained VBR (default). This creates a maximum of one + * frame of buffering delay assuming a transport with a + * serialization speed of the nominal bitrate.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x) +/** Determine if constrained VBR is enabled in the encoder. + * @see OPUS_SET_VBR_CONSTRAINT + * @see OPUS_GET_VBR + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>0</dt><dd>Unconstrained VBR.</dd> + * <dt>1</dt><dd>Constrained VBR (default).</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x) + +/** Configures mono/stereo forcing in the encoder. + * This can force the encoder to produce packets encoded as either mono or + * stereo, regardless of the format of the input audio. This is useful when + * the caller knows that the input signal is currently a mono source embedded + * in a stereo stream. + * @see OPUS_GET_FORCE_CHANNELS + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>#OPUS_AUTO</dt><dd>Not forced (default)</dd> + * <dt>1</dt> <dd>Forced mono</dd> + * <dt>2</dt> <dd>Forced stereo</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_FORCE_CHANNELS(x) OPUS_SET_FORCE_CHANNELS_REQUEST, __opus_check_int(x) +/** Gets the encoder's forced channel configuration. + * @see OPUS_SET_FORCE_CHANNELS + * @param[out] x <tt>opus_int32 *</tt>: + * <dl> + * <dt>#OPUS_AUTO</dt><dd>Not forced (default)</dd> + * <dt>1</dt> <dd>Forced mono</dd> + * <dt>2</dt> <dd>Forced stereo</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_FORCE_CHANNELS(x) OPUS_GET_FORCE_CHANNELS_REQUEST, __opus_check_int_ptr(x) + +/** Configures the maximum bandpass that the encoder will select automatically. + * Applications should normally use this instead of #OPUS_SET_BANDWIDTH + * (leaving that set to the default, #OPUS_AUTO). This allows the + * application to set an upper bound based on the type of input it is + * providing, but still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_MAX_BANDWIDTH + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd> + * <dt>OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd> + * <dt>OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd> + * <dt>OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd> + * <dt>OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband (default)</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_MAX_BANDWIDTH(x) OPUS_SET_MAX_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Gets the encoder's configured maximum allowed bandpass. + * @see OPUS_SET_MAX_BANDWIDTH + * @param[out] x <tt>opus_int32 *</tt>: Allowed values: + * <dl> + * <dt>#OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband (default)</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_MAX_BANDWIDTH(x) OPUS_GET_MAX_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/** Sets the encoder's bandpass to a specific value. + * This prevents the encoder from automatically selecting the bandpass based + * on the available bitrate. If an application knows the bandpass of the input + * audio it is providing, it should normally use #OPUS_SET_MAX_BANDWIDTH + * instead, which still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_BANDWIDTH + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>#OPUS_AUTO</dt> <dd>(default)</dd> + * <dt>#OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Configures the type of signal being encoded. + * This is a hint which helps the encoder's mode selection. + * @see OPUS_GET_SIGNAL + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>#OPUS_AUTO</dt> <dd>(default)</dd> + * <dt>#OPUS_SIGNAL_VOICE</dt><dd>Bias thresholds towards choosing LPC or Hybrid modes.</dd> + * <dt>#OPUS_SIGNAL_MUSIC</dt><dd>Bias thresholds towards choosing MDCT modes.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_SIGNAL(x) OPUS_SET_SIGNAL_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal type. + * @see OPUS_SET_SIGNAL + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>#OPUS_AUTO</dt> <dd>(default)</dd> + * <dt>#OPUS_SIGNAL_VOICE</dt><dd>Bias thresholds towards choosing LPC or Hybrid modes.</dd> + * <dt>#OPUS_SIGNAL_MUSIC</dt><dd>Bias thresholds towards choosing MDCT modes.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x) + + +/** Configures the encoder's intended application. + * The initial value is a mandatory argument to the encoder_create function. + * @see OPUS_GET_APPLICATION + * @param[in] x <tt>opus_int32</tt>: Returns one of the following values: + * <dl> + * <dt>#OPUS_APPLICATION_VOIP</dt> + * <dd>Process signal for improved speech intelligibility.</dd> + * <dt>#OPUS_APPLICATION_AUDIO</dt> + * <dd>Favor faithfulness to the original input.</dd> + * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt> + * <dd>Configure the minimum possible coding delay by disabling certain modes + * of operation.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_APPLICATION(x) OPUS_SET_APPLICATION_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured application. + * @see OPUS_SET_APPLICATION + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>#OPUS_APPLICATION_VOIP</dt> + * <dd>Process signal for improved speech intelligibility.</dd> + * <dt>#OPUS_APPLICATION_AUDIO</dt> + * <dd>Favor faithfulness to the original input.</dd> + * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt> + * <dd>Configure the minimum possible coding delay by disabling certain modes + * of operation.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x) + +/** Gets the sampling rate the encoder or decoder was initialized with. + * This simply returns the <code>Fs</code> value passed to opus_encoder_init() + * or opus_decoder_init(). + * @param[out] x <tt>opus_int32 *</tt>: Sampling rate of encoder or decoder. + * @hideinitializer + */ +#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x) + +/** Gets the total samples of delay added by the entire codec. + * This can be queried by the encoder and then the provided number of samples can be + * skipped on from the start of the decoder's output to provide time aligned input + * and output. From the perspective of a decoding application the real data begins this many + * samples late. + * + * The decoder contribution to this delay is identical for all decoders, but the + * encoder portion of the delay may vary from implementation to implementation, + * version to version, or even depend on the encoder's initial configuration. + * Applications needing delay compensation should call this CTL rather than + * hard-coding a value. + * @param[out] x <tt>opus_int32 *</tt>: Number of lookahead samples + * @hideinitializer */ +#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of inband forward error correction (FEC). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_INBAND_FEC + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>0</dt><dd>Disable inband FEC (default).</dd> + * <dt>1</dt><dd>Enable inband FEC.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_INBAND_FEC(x) OPUS_SET_INBAND_FEC_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of inband forward error correction. + * @see OPUS_SET_INBAND_FEC + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>0</dt><dd>Inband FEC disabled (default).</dd> + * <dt>1</dt><dd>Inband FEC enabled.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's expected packet loss percentage. + * Higher values with trigger progressively more loss resistant behavior in the encoder + * at the expense of quality at a given bitrate in the lossless case, but greater quality + * under loss. + * @see OPUS_GET_PACKET_LOSS_PERC + * @param[in] x <tt>opus_int32</tt>: Loss percentage in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_SET_PACKET_LOSS_PERC(x) OPUS_SET_PACKET_LOSS_PERC_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured packet loss percentage. + * @see OPUS_SET_PACKET_LOSS_PERC + * @param[out] x <tt>opus_int32 *</tt>: Returns the configured loss percentage + * in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_GET_PACKET_LOSS_PERC(x) OPUS_GET_PACKET_LOSS_PERC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of discontinuous transmission (DTX). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_DTX + * @param[in] x <tt>opus_int32</tt>: Allowed values: + * <dl> + * <dt>0</dt><dd>Disable DTX (default).</dd> + * <dt>1</dt><dd>Enabled DTX.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_SET_DTX(x) OPUS_SET_DTX_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of discontinuous transmission. + * @see OPUS_SET_DTX + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>0</dt><dd>DTX disabled (default).</dd> + * <dt>1</dt><dd>DTX enabled.</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x) +/** Configures the depth of signal being encoded. + * This is a hint which helps the encoder identify silence and near-silence. + * @see OPUS_GET_LSB_DEPTH + * @param[in] x <tt>opus_int32</tt>: Input precision in bits, between 8 and 24 + * (default: 24). + * @hideinitializer */ +#define OPUS_SET_LSB_DEPTH(x) OPUS_SET_LSB_DEPTH_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal depth. + * @see OPUS_SET_LSB_DEPTH + * @param[out] x <tt>opus_int32 *</tt>: Input precision in bits, between 8 and + * 24 (default: 24). + * @hideinitializer */ +#define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x) + +/** Gets the duration (in samples) of the last packet successfully decoded or concealed. + * @param[out] x <tt>opus_int32 *</tt>: Number of samples (at current sampling rate). + * @hideinitializer */ +#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x) +/**@}*/ + +/** @defgroup opus_genericctls Generic CTLs + * + * These macros are used with the \c opus_decoder_ctl and + * \c opus_encoder_ctl calls to generate a particular + * request. + * + * When called on an \c OpusDecoder they apply to that + * particular decoder instance. When called on an + * \c OpusEncoder they apply to the corresponding setting + * on that encoder instance, if present. + * + * Some usage examples: + * + * @code + * int ret; + * opus_int32 pitch; + * ret = opus_decoder_ctl(dec_ctx, OPUS_GET_PITCH(&pitch)); + * if (ret == OPUS_OK) return ret; + * + * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE); + * opus_decoder_ctl(dec_ctx, OPUS_RESET_STATE); + * + * opus_int32 enc_bw, dec_bw; + * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&enc_bw)); + * opus_decoder_ctl(dec_ctx, OPUS_GET_BANDWIDTH(&dec_bw)); + * if (enc_bw != dec_bw) { + * printf("packet bandwidth mismatch!\n"); + * } + * @endcode + * + * @see opus_encoder, opus_decoder_ctl, opus_encoder_ctl, opus_decoderctls, opus_encoderctls + * @{ + */ + +/** Resets the codec state to be equivalent to a freshly initialized state. + * This should be called when switching streams in order to prevent + * the back to back decoding from giving different results from + * one at a time decoding. + * @hideinitializer */ +#define OPUS_RESET_STATE 4028 + +/** Gets the final state of the codec's entropy coder. + * This is used for testing purposes, + * The encoder and decoder state should be identical after coding a payload + * (assuming no data corruption or software bugs) + * + * @param[out] x <tt>opus_uint32 *</tt>: Entropy coder state + * + * @hideinitializer */ +#define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x) + +/** Gets the pitch of the last decoded frame, if available. + * This can be used for any post-processing algorithm requiring the use of pitch, + * e.g. time stretching/shortening. If the last frame was not voiced, or if the + * pitch was not coded in the frame, then zero is returned. + * + * This CTL is only implemented for decoder instances. + * + * @param[out] x <tt>opus_int32 *</tt>: pitch period at 48 kHz (or 0 if not available) + * + * @hideinitializer */ +#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x) + +/** Gets the encoder's configured bandpass or the decoder's last bandpass. + * @see OPUS_SET_BANDWIDTH + * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: + * <dl> + * <dt>#OPUS_AUTO</dt> <dd>(default)</dd> + * <dt>#OPUS_BANDWIDTH_NARROWBAND</dt> <dd>4 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_MEDIUMBAND</dt> <dd>6 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_WIDEBAND</dt> <dd>8 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_SUPERWIDEBAND</dt><dd>12 kHz passband</dd> + * <dt>#OPUS_BANDWIDTH_FULLBAND</dt> <dd>20 kHz passband</dd> + * </dl> + * @hideinitializer */ +#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_decoderctls Decoder related CTLs + * @see opus_genericctls, opus_encoderctls, opus_decoder + * @{ + */ + +/** Configures decoder gain adjustment. + * Scales the decoded output by a factor specified in Q8 dB units. + * This has a maximum range of -32768 to 32767 inclusive, and returns + * OPUS_BAD_ARG otherwise. The default is zero indicating no adjustment. + * This setting survives decoder reset. + * + * gain = pow(10, x/(20.0*256)) + * + * @param[in] x <tt>opus_int32</tt>: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_SET_GAIN(x) OPUS_SET_GAIN_REQUEST, __opus_check_int(x) +/** Gets the decoder's configured gain adjustment. @see OPUS_SET_GAIN + * + * @param[out] x <tt>opus_int32 *</tt>: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_libinfo Opus library information functions + * @{ + */ + +/** Converts an opus error code into a human readable string. + * + * @param[in] error <tt>int</tt>: Error number + * @returns Error string + */ +OPUS_EXPORT const char *opus_strerror(int error); + +/** Gets the libopus version string. + * + * @returns Version string + */ +OPUS_EXPORT const char *opus_get_version_string(void); +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_DEFINES_H */ diff --git a/MacOSX/codecs/include/opus/opus_multistream.h b/MacOSX/codecs/include/opus/opus_multistream.h new file mode 100644 index 0000000..965d54a --- /dev/null +++ b/MacOSX/codecs/include/opus/opus_multistream.h @@ -0,0 +1,660 @@ +/* Copyright (c) 2011 Xiph.Org Foundation + Written by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_multistream.h + * @brief Opus reference implementation multistream API + */ + +#ifndef OPUS_MULTISTREAM_H +#define OPUS_MULTISTREAM_H + +#include <opus/opus.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond OPUS_INTERNAL_DOC */ + +/** Macros to trigger compilation errors when the wrong types are provided to a + * CTL. */ +/**@{*/ +#define __opus_check_encstate_ptr(ptr) ((ptr) + ((ptr) - (OpusEncoder**)(ptr))) +#define __opus_check_decstate_ptr(ptr) ((ptr) + ((ptr) - (OpusDecoder**)(ptr))) +/**@}*/ + +/** These are the actual encoder and decoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +/**@{*/ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST 5120 +#define OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST 5122 +/**@}*/ + +/** @endcond */ + +/** @defgroup opus_multistream_ctls Multistream specific encoder and decoder CTLs + * + * These are convenience macros that are specific to the + * opus_multistream_encoder_ctl() and opus_multistream_decoder_ctl() + * interface. + * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, and + * @ref opus_decoderctls may be applied to a multistream encoder or decoder as + * well. + * In addition, you may retrieve the encoder or decoder state for an specific + * stream via #OPUS_MULTISTREAM_GET_ENCODER_STATE or + * #OPUS_MULTISTREAM_GET_DECODER_STATE and apply CTLs to it individually. + */ +/**@{*/ + +/** Gets the encoder state for an individual stream of a multistream encoder. + * @param[in] x <tt>opus_int32</tt>: The index of the stream whose encoder you + * wish to retrieve. + * This must be non-negative and less than + * the <code>streams</code> parameter used + * to initialize the encoder. + * @param[out] y <tt>OpusEncoder**</tt>: Returns a pointer to the given + * encoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE(x,y) OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST, __opus_check_int(x), __opus_check_encstate_ptr(y) + +/** Gets the decoder state for an individual stream of a multistream decoder. + * @param[in] x <tt>opus_int32</tt>: The index of the stream whose decoder you + * wish to retrieve. + * This must be non-negative and less than + * the <code>streams</code> parameter used + * to initialize the decoder. + * @param[out] y <tt>OpusDecoder**</tt>: Returns a pointer to the given + * decoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_DECODER_STATE(x,y) OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST, __opus_check_int(x), __opus_check_decstate_ptr(y) + +/**@}*/ + +/** @defgroup opus_multistream Opus Multistream API + * @{ + * + * The multistream API allows individual Opus streams to be combined into a + * single packet, enabling support for up to 255 channels. Unlike an + * elementary Opus stream, the encoder and decoder must negotiate the channel + * configuration before the decoder can successfully interpret the data in the + * packets produced by the encoder. Some basic information, such as packet + * duration, can be computed without any special negotiation. + * + * The format for multistream Opus packets is defined in the + * <a href="http://tools.ietf.org/html/draft-terriberry-oggopus">Ogg + * encapsulation specification</a> and is based on the self-delimited Opus + * framing described in Appendix B of <a href="http://tools.ietf.org/html/rfc6716">RFC 6716</a>. + * Normal Opus packets are just a degenerate case of multistream Opus packets, + * and can be encoded or decoded with the multistream API by setting + * <code>streams</code> to <code>1</code> when initializing the encoder or + * decoder. + * + * Multistream Opus streams can contain up to 255 elementary Opus streams. + * These may be either "uncoupled" or "coupled", indicating that the decoder + * is configured to decode them to either 1 or 2 channels, respectively. + * The streams are ordered so that all coupled streams appear at the + * beginning. + * + * A <code>mapping</code> table defines which decoded channel <code>i</code> + * should be used for each input/output (I/O) channel <code>j</code>. This table is + * typically provided as an unsigned char array. + * Let <code>i = mapping[j]</code> be the index for I/O channel <code>j</code>. + * If <code>i < 2*coupled_streams</code>, then I/O channel <code>j</code> is + * encoded as the left channel of stream <code>(i/2)</code> if <code>i</code> + * is even, or as the right channel of stream <code>(i/2)</code> if + * <code>i</code> is odd. Otherwise, I/O channel <code>j</code> is encoded as + * mono in stream <code>(i - coupled_streams)</code>, unless it has the special + * value 255, in which case it is omitted from the encoding entirely (the + * decoder will reproduce it as silence). Each value <code>i</code> must either + * be the special value 255 or be less than <code>streams + coupled_streams</code>. + * + * The output channels specified by the encoder + * should use the + * <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis + * channel ordering</a>. A decoder may wish to apply an additional permutation + * to the mapping the encoder used to achieve a different output channel + * order (e.g. for outputing in WAV order). + * + * Each multistream packet contains an Opus packet for each stream, and all of + * the Opus packets in a single multistream packet must have the same + * duration. Therefore the duration of a multistream packet can be extracted + * from the TOC sequence of the first stream, which is located at the + * beginning of the packet, just like an elementary Opus stream: + * + * @code + * int nb_samples; + * int nb_frames; + * nb_frames = opus_packet_get_nb_frames(data, len); + * if (nb_frames < 1) + * return nb_frames; + * nb_samples = opus_packet_get_samples_per_frame(data, 48000) * nb_frames; + * @endcode + * + * The general encoding and decoding process proceeds exactly the same as in + * the normal @ref opus_encoder and @ref opus_decoder APIs. + * See their documentation for an overview of how to use the corresponding + * multistream functions. + */ + +/** Opus multistream encoder state. + * This contains the complete state of a multistream Opus encoder. + * It is position independent and can be freely copied. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_init + */ +typedef struct OpusMSEncoder OpusMSEncoder; + +/** Opus multistream decoder state. + * This contains the complete state of a multistream Opus decoder. + * It is position independent and can be freely copied. + * @see opus_multistream_decoder_create + * @see opus_multistream_decoder_init + */ +typedef struct OpusMSDecoder OpusMSDecoder; + +/**\name Multistream encoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSEncoder structure. + * @param streams <tt>int</tt>: The total number of streams to encode from the + * input. + * This must be no more than 255. + * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (<code>streams + + * coupled_streams</code>) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size( + int streams, + int coupled_streams +); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size( + int channels, + int mapping_family +); + + +/** Allocates and initializes a multistream encoder state. + * Call opus_multistream_encoder_destroy() to release + * this object when finished. + * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels <tt>int</tt>: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (<code>streams + + * coupled_streams</code>). + * @param streams <tt>int</tt>: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (<code>streams + + * coupled_streams</code>) must be no + * more than the number of input channels. + * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. As an extra constraint, the + * multistream encoder does not allow encoding coupled + * streams for which one channel is unused since this + * is never a good idea. + * @param application <tt>int</tt>: The target encoder application. + * This must be one of the following: + * <dl> + * <dt>#OPUS_APPLICATION_VOIP</dt> + * <dd>Process signal for improved speech intelligibility.</dd> + * <dt>#OPUS_APPLICATION_AUDIO</dt> + * <dd>Favor faithfulness to the original input.</dd> + * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt> + * <dd>Configure the minimum possible coding delay by disabling certain modes + * of operation.</dd> + * </dl> + * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(5); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create( + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(5); + +/** Initialize a previously allocated multistream encoder state. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_get_size + * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state to initialize. + * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels <tt>int</tt>: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (<code>streams + + * coupled_streams</code>). + * @param streams <tt>int</tt>: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (<code>streams + + * coupled_streams</code>) must be no + * more than the number of input channels. + * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. As an extra constraint, the + * multistream encoder does not allow encoding coupled + * streams for which one channel is unused since this + * is never a good idea. + * @param application <tt>int</tt>: The target encoder application. + * This must be one of the following: + * <dl> + * <dt>#OPUS_APPLICATION_VOIP</dt> + * <dd>Process signal for improved speech intelligibility.</dd> + * <dt>#OPUS_APPLICATION_AUDIO</dt> + * <dd>Favor faithfulness to the original input.</dd> + * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt> + * <dd>Configure the minimum possible coding delay by disabling certain modes + * of operation.</dd> + * </dl> + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +OPUS_EXPORT int opus_multistream_surround_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +/** Encodes a multistream Opus frame. + * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state. + * @param[in] pcm <tt>const opus_int16*</tt>: The input signal as interleaved + * samples. + * This must contain + * <code>frame_size*channels</code> + * samples. + * @param frame_size <tt>int</tt>: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data <tt>unsigned char*</tt>: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode( + OpusMSEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes a multistream Opus frame from floating point input. + * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state. + * @param[in] pcm <tt>const float*</tt>: The input signal as interleaved + * samples with a normal range of + * +/-1.0. + * Samples with a range beyond +/-1.0 + * are supported but will be clipped by + * decoders using the integer API and + * should only be used if it is known + * that the far end supports extended + * dynamic range. + * This must contain + * <code>frame_size*channels</code> + * samples. + * @param frame_size <tt>int</tt>: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data <tt>unsigned char*</tt>: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode_float( + OpusMSEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an <code>OpusMSEncoder</code> allocated by + * opus_multistream_encoder_create(). + * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_encoder_destroy(OpusMSEncoder *st); + +/** Perform a CTL function on a multistream Opus encoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_encoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_encoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_encoder_ctl(OpusMSEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/**@}*/ + +/**\name Multistream decoder functions */ +/**@{*/ + +/** Gets the size of an <code>OpusMSDecoder</code> structure. + * @param streams <tt>int</tt>: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams <tt>int</tt>: Number streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (<code>streams + + * coupled_streams</code>) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_decoder_get_size( + int streams, + int coupled_streams +); + +/** Allocates and initializes a multistream decoder state. + * Call opus_multistream_decoder_destroy() to release + * this object when finished. + * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels <tt>int</tt>: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (<code>streams + + * coupled_streams</code>). + * @param streams <tt>int</tt>: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (<code>streams + + * coupled_streams</code>) must be no + * more than 255. + * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSDecoder *opus_multistream_decoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int *error +) OPUS_ARG_NONNULL(5); + +/** Intialize a previously allocated decoder state object. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_decoder_create + * @see opus_multistream_deocder_get_size + * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state to initialize. + * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels <tt>int</tt>: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (<code>streams + + * coupled_streams</code>). + * @param streams <tt>int</tt>: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (<code>streams + + * coupled_streams</code>) must be no + * more than 255. + * @param[in] mapping <code>const unsigned char[channels]</code>: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_decoder_init( + OpusMSDecoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +/** Decode a multistream Opus packet. + * @param st <tt>OpusMSDecoder*</tt>: Multistream decoder state. + * @param[in] data <tt>const unsigned char*</tt>: Input payload. + * Use a <code>NULL</code> + * pointer to indicate packet + * loss. + * @param len <tt>opus_int32</tt>: Number of bytes in payload. + * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved + * samples. + * This must contain room for + * <code>frame_size*channels</code> + * samples. + * @param frame_size <tt>int</tt>: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * <b>must</b> be a multiple of 2.5 ms. + * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode a multistream Opus packet with floating point output. + * @param st <tt>OpusMSDecoder*</tt>: Multistream decoder state. + * @param[in] data <tt>const unsigned char*</tt>: Input payload. + * Use a <code>NULL</code> + * pointer to indicate packet + * loss. + * @param len <tt>opus_int32</tt>: Number of bytes in payload. + * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved + * samples. + * This must contain room for + * <code>frame_size*channels</code> + * samples. + * @param frame_size <tt>int</tt>: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * <b>must</b> be a multiple of 2.5 ms. + * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode_float( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on a multistream Opus decoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st <tt>OpusMSDecoder*</tt>: Multistream decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_decoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_decoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an <code>OpusMSDecoder</code> allocated by + * opus_multistream_decoder_create(). + * @param st <tt>OpusMSDecoder</tt>: Multistream decoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_decoder_destroy(OpusMSDecoder *st); + +/**@}*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_MULTISTREAM_H */ diff --git a/MacOSX/codecs/include/opus/opus_types.h b/MacOSX/codecs/include/opus/opus_types.h new file mode 100644 index 0000000..b28e03a --- /dev/null +++ b/MacOSX/codecs/include/opus/opus_types.h @@ -0,0 +1,159 @@ +/* (C) COPYRIGHT 1994-2002 Xiph.Org Foundation */ +/* Modified by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* opus_types.h based on ogg_types.h from libogg */ + +/** + @file opus_types.h + @brief Opus reference implementation types +*/ +#ifndef OPUS_TYPES_H +#define OPUS_TYPES_H + +/* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */ +#if (defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H)) +#include <stdint.h> + + typedef int16_t opus_int16; + typedef uint16_t opus_uint16; + typedef int32_t opus_int32; + typedef uint32_t opus_uint32; +#elif defined(_WIN32) + +# if defined(__CYGWIN__) +# include <_G_config.h> + typedef _G_int32_t opus_int32; + typedef _G_uint32_t opus_uint32; + typedef _G_int16 opus_int16; + typedef _G_uint16 opus_uint16; +# elif defined(__MINGW32__) + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; +# elif defined(__MWERKS__) + typedef int opus_int32; + typedef unsigned int opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; +# else + /* MSVC/Borland */ + typedef __int32 opus_int32; + typedef unsigned __int32 opus_uint32; + typedef __int16 opus_int16; + typedef unsigned __int16 opus_uint16; +# endif + +#elif defined(__MACOS__) + +# include <sys/types.h> + typedef SInt16 opus_int16; + typedef UInt16 opus_uint16; + typedef SInt32 opus_int32; + typedef UInt32 opus_uint32; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include <sys/types.h> + typedef int16_t opus_int16; + typedef u_int16_t opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined(__BEOS__) + + /* Be */ +# include <inttypes.h> + typedef int16 opus_int16; + typedef u_int16 opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(R5900) + + /* PS2 EE */ + typedef int opus_int32; + typedef unsigned opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short opus_int16; + typedef unsigned short opus_uint16; + typedef signed int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef long opus_int32; + typedef unsigned long opus_uint32; + +#elif defined(CONFIG_TI_C6X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#else + + /* Give up, take a reasonable guess */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#endif + +#define opus_int int /* used for counters etc; at least 16 bits */ +#define opus_int64 long long +#define opus_int8 signed char + +#define opus_uint unsigned int /* used for counters etc; at least 16 bits */ +#define opus_uint64 unsigned long long +#define opus_uint8 unsigned char + +#endif /* OPUS_TYPES_H */ diff --git a/MacOSX/codecs/include/opus/opusfile.h b/MacOSX/codecs/include/opus/opusfile.h new file mode 100644 index 0000000..296d8d9 --- /dev/null +++ b/MacOSX/codecs/include/opus/opusfile.h @@ -0,0 +1,2164 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 * + * by the Xiph.Org Foundation and contributors https://xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ +#if !defined(_opusfile_h) +# define _opusfile_h (1) + +/**\mainpage + \section Introduction + + This is the documentation for the <tt>libopusfile</tt> C API. + + The <tt>libopusfile</tt> package provides a convenient high-level API for + decoding and basic manipulation of all Ogg Opus audio streams. + <tt>libopusfile</tt> is implemented as a layer on top of Xiph.Org's + reference + <tt><a href="https://www.xiph.org/ogg/doc/libogg/reference.html">libogg</a></tt> + and + <tt><a href="https://opus-codec.org/docs/opus_api-1.3.1/">libopus</a></tt> + libraries. + + <tt>libopusfile</tt> provides several sets of built-in routines for + file/stream access, and may also use custom stream I/O routines provided by + the embedded environment. + There are built-in I/O routines provided for ANSI-compliant + <code>stdio</code> (<code>FILE *</code>), memory buffers, and URLs + (including <file:> URLs, plus optionally <http:> and <https:> URLs). + + \section Organization + + The main API is divided into several sections: + - \ref stream_open_close + - \ref stream_info + - \ref stream_decoding + - \ref stream_seeking + + Several additional sections are not tied to the main API. + - \ref stream_callbacks + - \ref header_info + - \ref error_codes + + \section Overview + + The <tt>libopusfile</tt> API always decodes files to 48 kHz. + The original sample rate is not preserved by the lossy compression, though + it is stored in the header to allow you to resample to it after decoding + (the <tt>libopusfile</tt> API does not currently provide a resampler, + but the + <a href="https://www.speex.org/docs/manual/speex-manual/node7.html#SECTION00760000000000000000">the + Speex resampler</a> is a good choice if you need one). + In general, if you are playing back the audio, you should leave it at + 48 kHz, provided your audio hardware supports it. + When decoding to a file, it may be worth resampling back to the original + sample rate, so as not to surprise users who might not expect the sample + rate to change after encoding to Opus and decoding. + + Opus files can contain anywhere from 1 to 255 channels of audio. + The channel mappings for up to 8 channels are the same as the + <a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810004.3.9">Vorbis + mappings</a>. + A special stereo API can convert everything to 2 channels, making it simple + to support multichannel files in an application which only has stereo + output. + Although the <tt>libopusfile</tt> ABI provides support for the theoretical + maximum number of channels, the current implementation does not support + files with more than 8 channels, as they do not have well-defined channel + mappings. + + Like all Ogg files, Opus files may be "chained". + That is, multiple Opus files may be combined into a single, longer file just + by concatenating the original files. + This is commonly done in internet radio streaming, as it allows the title + and artist to be updated each time the song changes, since each link in the + chain includes its own set of metadata. + + <tt>libopusfile</tt> fully supports chained files. + It will decode the first Opus stream found in each link of a chained file + (ignoring any other streams that might be concurrently multiplexed with it, + such as a video stream). + + The channel count can also change between links. + If your application is not prepared to deal with this, it can use the stereo + API to ensure the audio from all links will always get decoded into a + common format. + Since <tt>libopusfile</tt> always decodes to 48 kHz, you do not have to + worry about the sample rate changing between links (as was possible with + Vorbis). + This makes application support for chained files with <tt>libopusfile</tt> + very easy.*/ + +# if defined(__cplusplus) +extern "C" { +# endif + +# include <stdarg.h> +# include <stdio.h> +# include <ogg/ogg.h> +# include <opus/opus_multistream.h> + +/**@cond PRIVATE*/ + +/*Enable special features for gcc and gcc-compatible compilers.*/ +# if !defined(OP_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OP_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OP_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +# if OP_GNUC_PREREQ(4,0) +# pragma GCC visibility push(default) +# endif + +typedef struct OpusHead OpusHead; +typedef struct OpusTags OpusTags; +typedef struct OpusPictureTag OpusPictureTag; +typedef struct OpusServerInfo OpusServerInfo; +typedef struct OpusFileCallbacks OpusFileCallbacks; +typedef struct OggOpusFile OggOpusFile; + +/*Warning attributes for libopusfile functions.*/ +# if OP_GNUC_PREREQ(3,4) +# define OP_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) +# else +# define OP_WARN_UNUSED_RESULT +# endif +# if OP_GNUC_PREREQ(3,4) +# define OP_ARG_NONNULL(_x) __attribute__((__nonnull__(_x))) +# else +# define OP_ARG_NONNULL(_x) +# endif + +/**@endcond*/ + +/**\defgroup error_codes Error Codes*/ +/*@{*/ +/**\name List of possible error codes + Many of the functions in this library return a negative error code when a + function fails. + This list provides a brief explanation of the common errors. + See each individual function for more details on what a specific error code + means in that context.*/ +/*@{*/ + +/**A request did not succeed.*/ +#define OP_FALSE (-1) +/*Currently not used externally.*/ +#define OP_EOF (-2) +/**There was a hole in the page sequence numbers (e.g., a page was corrupt or + missing).*/ +#define OP_HOLE (-3) +/**An underlying read, seek, or tell operation failed when it should have + succeeded.*/ +#define OP_EREAD (-128) +/**A <code>NULL</code> pointer was passed where one was unexpected, or an + internal memory allocation failed, or an internal library error was + encountered.*/ +#define OP_EFAULT (-129) +/**The stream used a feature that is not implemented, such as an unsupported + channel family.*/ +#define OP_EIMPL (-130) +/**One or more parameters to a function were invalid.*/ +#define OP_EINVAL (-131) +/**A purported Ogg Opus stream did not begin with an Ogg page, a purported + header packet did not start with one of the required strings, "OpusHead" or + "OpusTags", or a link in a chained file was encountered that did not + contain any logical Opus streams.*/ +#define OP_ENOTFORMAT (-132) +/**A required header packet was not properly formatted, contained illegal + values, or was missing altogether.*/ +#define OP_EBADHEADER (-133) +/**The ID header contained an unrecognized version number.*/ +#define OP_EVERSION (-134) +/*Currently not used at all.*/ +#define OP_ENOTAUDIO (-135) +/**An audio packet failed to decode properly. + This is usually caused by a multistream Ogg packet where the durations of + the individual Opus packets contained in it are not all the same.*/ +#define OP_EBADPACKET (-136) +/**We failed to find data we had seen before, or the bitstream structure was + sufficiently malformed that seeking to the target destination was + impossible.*/ +#define OP_EBADLINK (-137) +/**An operation that requires seeking was requested on an unseekable stream.*/ +#define OP_ENOSEEK (-138) +/**The first or last granule position of a link failed basic validity checks.*/ +#define OP_EBADTIMESTAMP (-139) + +/*@}*/ +/*@}*/ + +/**\defgroup header_info Header Information*/ +/*@{*/ + +/**The maximum number of channels in an Ogg Opus stream.*/ +#define OPUS_CHANNEL_COUNT_MAX (255) + +/**Ogg Opus bitstream information. + This contains the basic playback parameters for a stream, and corresponds to + the initial ID header packet of an Ogg Opus stream.*/ +struct OpusHead{ + /**The Ogg Opus format version, in the range 0...255. + The top 4 bits represent a "major" version, and the bottom four bits + represent backwards-compatible "minor" revisions. + The current specification describes version 1. + This library will recognize versions up through 15 as backwards compatible + with the current specification. + An earlier draft of the specification described a version 0, but the only + difference between version 1 and version 0 is that version 0 did + not specify the semantics for handling the version field.*/ + int version; + /**The number of channels, in the range 1...255.*/ + int channel_count; + /**The number of samples that should be discarded from the beginning of the + stream.*/ + unsigned pre_skip; + /**The sampling rate of the original input. + All Opus audio is coded at 48 kHz, and should also be decoded at 48 kHz + for playback (unless the target hardware does not support this sampling + rate). + However, this field may be used to resample the audio back to the original + sampling rate, for example, when saving the output to a file.*/ + opus_uint32 input_sample_rate; + /**The gain to apply to the decoded output, in dB, as a Q8 value in the range + -32768...32767. + The <tt>libopusfile</tt> API will automatically apply this gain to the + decoded output before returning it, scaling it by + <code>pow(10,output_gain/(20.0*256))</code>. + You can adjust this behavior with op_set_gain_offset().*/ + int output_gain; + /**The channel mapping family, in the range 0...255. + Channel mapping family 0 covers mono or stereo in a single stream. + Channel mapping family 1 covers 1 to 8 channels in one or more streams, + using the Vorbis speaker assignments. + Channel mapping family 255 covers 1 to 255 channels in one or more + streams, but without any defined speaker assignment.*/ + int mapping_family; + /**The number of Opus streams in each Ogg packet, in the range 1...255.*/ + int stream_count; + /**The number of coupled Opus streams in each Ogg packet, in the range + 0...127. + This must satisfy <code>0 <= coupled_count <= stream_count</code> and + <code>coupled_count + stream_count <= 255</code>. + The coupled streams appear first, before all uncoupled streams, in an Ogg + Opus packet.*/ + int coupled_count; + /**The mapping from coded stream channels to output channels. + Let <code>index=mapping[k]</code> be the value for channel <code>k</code>. + If <code>index<2*coupled_count</code>, then it refers to the left channel + from stream <code>(index/2)</code> if even, and the right channel from + stream <code>(index/2)</code> if odd. + Otherwise, it refers to the output of the uncoupled stream + <code>(index-coupled_count)</code>.*/ + unsigned char mapping[OPUS_CHANNEL_COUNT_MAX]; +}; + +/**The metadata from an Ogg Opus stream. + + This structure holds the in-stream metadata corresponding to the 'comment' + header packet of an Ogg Opus stream. + The comment header is meant to be used much like someone jotting a quick + note on the label of a CD. + It should be a short, to the point text note that can be more than a couple + words, but not more than a short paragraph. + + The metadata is stored as a series of (tag, value) pairs, in length-encoded + string vectors, using the same format as Vorbis (without the final "framing + bit"), Theora, and Speex, except for the packet header. + The first occurrence of the '=' character delimits the tag and value. + A particular tag may occur more than once, and order is significant. + The character set encoding for the strings is always UTF-8, but the tag + names are limited to ASCII, and treated as case-insensitive. + See <a href="https://www.xiph.org/vorbis/doc/v-comment.html">the Vorbis + comment header specification</a> for details. + + In filling in this structure, <tt>libopusfile</tt> will null-terminate the + #user_comments strings for safety. + However, the bitstream format itself treats them as 8-bit clean vectors, + possibly containing NUL characters, so the #comment_lengths array should be + treated as their authoritative length. + + This structure is binary and source-compatible with a + <code>vorbis_comment</code>, and pointers to it may be freely cast to + <code>vorbis_comment</code> pointers, and vice versa. + It is provided as a separate type to avoid introducing a compile-time + dependency on the libvorbis headers.*/ +struct OpusTags{ + /**The array of comment string vectors.*/ + char **user_comments; + /**An array of the corresponding length of each vector, in bytes.*/ + int *comment_lengths; + /**The total number of comment streams.*/ + int comments; + /**The null-terminated vendor string. + This identifies the software used to encode the stream.*/ + char *vendor; +}; + +/**\name Picture tag image formats*/ +/*@{*/ + +/**The MIME type was not recognized, or the image data did not match the + declared MIME type.*/ +#define OP_PIC_FORMAT_UNKNOWN (-1) +/**The MIME type indicates the image data is really a URL.*/ +#define OP_PIC_FORMAT_URL (0) +/**The image is a JPEG.*/ +#define OP_PIC_FORMAT_JPEG (1) +/**The image is a PNG.*/ +#define OP_PIC_FORMAT_PNG (2) +/**The image is a GIF.*/ +#define OP_PIC_FORMAT_GIF (3) + +/*@}*/ + +/**The contents of a METADATA_BLOCK_PICTURE tag.*/ +struct OpusPictureTag{ + /**The picture type according to the ID3v2 APIC frame: + <ol start="0"> + <li>Other</li> + <li>32x32 pixels 'file icon' (PNG only)</li> + <li>Other file icon</li> + <li>Cover (front)</li> + <li>Cover (back)</li> + <li>Leaflet page</li> + <li>Media (e.g. label side of CD)</li> + <li>Lead artist/lead performer/soloist</li> + <li>Artist/performer</li> + <li>Conductor</li> + <li>Band/Orchestra</li> + <li>Composer</li> + <li>Lyricist/text writer</li> + <li>Recording Location</li> + <li>During recording</li> + <li>During performance</li> + <li>Movie/video screen capture</li> + <li>A bright colored fish</li> + <li>Illustration</li> + <li>Band/artist logotype</li> + <li>Publisher/Studio logotype</li> + </ol> + Others are reserved and should not be used. + There may only be one each of picture type 1 and 2 in a file.*/ + opus_int32 type; + /**The MIME type of the picture, in printable ASCII characters 0x20-0x7E. + The MIME type may also be <code>"-->"</code> to signify that the data part + is a URL pointing to the picture instead of the picture data itself. + In this case, a terminating NUL is appended to the URL string in #data, + but #data_length is set to the length of the string excluding that + terminating NUL.*/ + char *mime_type; + /**The description of the picture, in UTF-8.*/ + char *description; + /**The width of the picture in pixels.*/ + opus_uint32 width; + /**The height of the picture in pixels.*/ + opus_uint32 height; + /**The color depth of the picture in bits-per-pixel (<em>not</em> + bits-per-channel).*/ + opus_uint32 depth; + /**For indexed-color pictures (e.g., GIF), the number of colors used, or 0 + for non-indexed pictures.*/ + opus_uint32 colors; + /**The length of the picture data in bytes.*/ + opus_uint32 data_length; + /**The binary picture data.*/ + unsigned char *data; + /**The format of the picture data, if known. + One of + <ul> + <li>#OP_PIC_FORMAT_UNKNOWN,</li> + <li>#OP_PIC_FORMAT_URL,</li> + <li>#OP_PIC_FORMAT_JPEG,</li> + <li>#OP_PIC_FORMAT_PNG, or</li> + <li>#OP_PIC_FORMAT_GIF.</li> + </ul>*/ + int format; +}; + +/**\name Functions for manipulating header data + + These functions manipulate the #OpusHead and #OpusTags structures, + which describe the audio parameters and tag-value metadata, respectively. + These can be used to query the headers returned by <tt>libopusfile</tt>, or + to parse Opus headers from sources other than an Ogg Opus stream, provided + they use the same format.*/ +/*@{*/ + +/**Parses the contents of the ID header packet of an Ogg Opus stream. + \param[out] _head Returns the contents of the parsed packet. + The contents of this structure are untouched on error. + This may be <code>NULL</code> to merely test the header + for validity. + \param[in] _data The contents of the ID header packet. + \param _len The number of bytes of data in the ID header packet. + \return 0 on success or a negative value on error. + \retval #OP_ENOTFORMAT If the data does not start with the "OpusHead" + string. + \retval #OP_EVERSION If the version field signaled a version this library + does not know how to parse. + \retval #OP_EIMPL If the channel mapping family was 255, which general + purpose players should not attempt to play. + \retval #OP_EBADHEADER If the contents of the packet otherwise violate the + Ogg Opus specification: + <ul> + <li>Insufficient data,</li> + <li>Too much data for the known minor versions,</li> + <li>An unrecognized channel mapping family,</li> + <li>Zero channels or too many channels,</li> + <li>Zero coded streams,</li> + <li>Too many coupled streams, or</li> + <li>An invalid channel mapping index.</li> + </ul>*/ +OP_WARN_UNUSED_RESULT int opus_head_parse(OpusHead *_head, + const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2); + +/**Converts a granule position to a sample offset for a given Ogg Opus stream. + The sample offset is simply <code>_gp-_head->pre_skip</code>. + Granule position values smaller than OpusHead#pre_skip correspond to audio + that should never be played, and thus have no associated sample offset. + This function returns -1 for such values. + This function also correctly handles extremely large granule positions, + which may have wrapped around to a negative number when stored in a signed + ogg_int64_t value. + \param _head The #OpusHead information from the ID header of the stream. + \param _gp The granule position to convert. + \return The sample offset associated with the given granule position + (counting at a 48 kHz sampling rate), or the special value -1 on + error (i.e., the granule position was smaller than the pre-skip + amount).*/ +ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp) + OP_ARG_NONNULL(1); + +/**Parses the contents of the 'comment' header packet of an Ogg Opus stream. + \param[out] _tags An uninitialized #OpusTags structure. + This returns the contents of the parsed packet. + The contents of this structure are untouched on error. + This may be <code>NULL</code> to merely test the header + for validity. + \param[in] _data The contents of the 'comment' header packet. + \param _len The number of bytes of data in the 'info' header packet. + \retval 0 Success. + \retval #OP_ENOTFORMAT If the data does not start with the "OpusTags" + string. + \retval #OP_EBADHEADER If the contents of the packet otherwise violate the + Ogg Opus specification. + \retval #OP_EFAULT If there wasn't enough memory to store the tags.*/ +OP_WARN_UNUSED_RESULT int opus_tags_parse(OpusTags *_tags, + const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2); + +/**Performs a deep copy of an #OpusTags structure. + \param _dst The #OpusTags structure to copy into. + If this function fails, the contents of this structure remain + untouched. + \param _src The #OpusTags structure to copy from. + \retval 0 Success. + \retval #OP_EFAULT If there wasn't enough memory to copy the tags.*/ +int opus_tags_copy(OpusTags *_dst,const OpusTags *_src) OP_ARG_NONNULL(1); + +/**Initializes an #OpusTags structure. + This should be called on a freshly allocated #OpusTags structure before + attempting to use it. + \param _tags The #OpusTags structure to initialize.*/ +void opus_tags_init(OpusTags *_tags) OP_ARG_NONNULL(1); + +/**Add a (tag, value) pair to an initialized #OpusTags structure. + \note Neither opus_tags_add() nor opus_tags_add_comment() support values + containing embedded NULs, although the bitstream format does support them. + To add such tags, you will need to manipulate the #OpusTags structure + directly. + \param _tags The #OpusTags structure to add the (tag, value) pair to. + \param _tag A NUL-terminated, case-insensitive, ASCII string containing + the tag to add (without an '=' character). + \param _value A NUL-terminated UTF-8 containing the corresponding value. + \return 0 on success, or a negative value on failure. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3); + +/**Add a comment to an initialized #OpusTags structure. + \note Neither opus_tags_add_comment() nor opus_tags_add() support comments + containing embedded NULs, although the bitstream format does support them. + To add such tags, you will need to manipulate the #OpusTags structure + directly. + \param _tags The #OpusTags structure to add the comment to. + \param _comment A NUL-terminated UTF-8 string containing the comment in + "TAG=value" form. + \return 0 on success, or a negative value on failure. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_add_comment(OpusTags *_tags,const char *_comment) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Replace the binary suffix data at the end of the packet (if any). + \param _tags An initialized #OpusTags structure. + \param _data A buffer of binary data to append after the encoded user + comments. + The least significant bit of the first byte of this data must + be set (to ensure the data is preserved by other editors). + \param _len The number of bytes of binary data to append. + This may be zero to remove any existing binary suffix data. + \return 0 on success, or a negative value on error. + \retval #OP_EINVAL \a _len was negative, or \a _len was positive but + \a _data was <code>NULL</code> or the least significant + bit of the first byte was not set. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_set_binary_suffix(OpusTags *_tags, + const unsigned char *_data,int _len) OP_ARG_NONNULL(1); + +/**Look up a comment value by its tag. + \param _tags An initialized #OpusTags structure. + \param _tag The tag to look up. + \param _count The instance of the tag. + The same tag can appear multiple times, each with a distinct + value, so an index is required to retrieve them all. + The order in which these values appear is significant and + should be preserved. + Use opus_tags_query_count() to get the legal range for the + \a _count parameter. + \return A pointer to the queried tag's value. + This points directly to data in the #OpusTags structure. + It should not be modified or freed by the application, and + modifications to the structure may invalidate the pointer. + \retval NULL If no matching tag is found.*/ +const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Look up the number of instances of a tag. + Call this first when querying for a specific tag and then iterate over the + number of instances with separate calls to opus_tags_query() to retrieve + all the values for that tag in order. + \param _tags An initialized #OpusTags structure. + \param _tag The tag to look up. + \return The number of instances of this particular tag.*/ +int opus_tags_query_count(const OpusTags *_tags,const char *_tag) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Retrieve the binary suffix data at the end of the packet (if any). + \param _tags An initialized #OpusTags structure. + \param[out] _len Returns the number of bytes of binary suffix data returned. + \return A pointer to the binary suffix data, or <code>NULL</code> if none + was present.*/ +const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags, + int *_len) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Get the album gain from an R128_ALBUM_GAIN tag, if one was specified. + This searches for the first R128_ALBUM_GAIN tag with a valid signed, + 16-bit decimal integer value and returns the value. + This routine is exposed merely for convenience for applications which wish + to do something special with the album gain (i.e., display it). + If you simply wish to apply the album gain instead of the header gain, you + can use op_set_gain_offset() with an #OP_ALBUM_GAIN type and no offset. + \param _tags An initialized #OpusTags structure. + \param[out] _gain_q8 The album gain, in 1/256ths of a dB. + This will lie in the range [-32768,32767], and should + be applied in <em>addition</em> to the header gain. + On error, no value is returned, and the previous + contents remain unchanged. + \return 0 on success, or a negative value on error. + \retval #OP_FALSE There was no album gain available in the given tags.*/ +int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Get the track gain from an R128_TRACK_GAIN tag, if one was specified. + This searches for the first R128_TRACK_GAIN tag with a valid signed, + 16-bit decimal integer value and returns the value. + This routine is exposed merely for convenience for applications which wish + to do something special with the track gain (i.e., display it). + If you simply wish to apply the track gain instead of the header gain, you + can use op_set_gain_offset() with an #OP_TRACK_GAIN type and no offset. + \param _tags An initialized #OpusTags structure. + \param[out] _gain_q8 The track gain, in 1/256ths of a dB. + This will lie in the range [-32768,32767], and should + be applied in <em>addition</em> to the header gain. + On error, no value is returned, and the previous + contents remain unchanged. + \return 0 on success, or a negative value on error. + \retval #OP_FALSE There was no track gain available in the given tags.*/ +int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Clears the #OpusTags structure. + This should be called on an #OpusTags structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _tags The #OpusTags structure to clear.*/ +void opus_tags_clear(OpusTags *_tags) OP_ARG_NONNULL(1); + +/**Check if \a _comment is an instance of a \a _tag_name tag. + \see opus_tagncompare + \param _tag_name A NUL-terminated, case-insensitive, ASCII string containing + the name of the tag to check for (without the terminating + '=' character). + \param _comment The comment string to check. + \return An integer less than, equal to, or greater than zero if \a _comment + is found respectively, to be less than, to match, or be greater + than a "tag=value" string whose tag matches \a _tag_name.*/ +int opus_tagcompare(const char *_tag_name,const char *_comment); + +/**Check if \a _comment is an instance of a \a _tag_name tag. + This version is slightly more efficient than opus_tagcompare() if the length + of the tag name is already known (e.g., because it is a constant). + \see opus_tagcompare + \param _tag_name A case-insensitive ASCII string containing the name of the + tag to check for (without the terminating '=' character). + \param _tag_len The number of characters in the tag name. + This must be non-negative. + \param _comment The comment string to check. + \return An integer less than, equal to, or greater than zero if \a _comment + is found respectively, to be less than, to match, or be greater + than a "tag=value" string whose tag matches the first \a _tag_len + characters of \a _tag_name.*/ +int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment); + +/**Parse a single METADATA_BLOCK_PICTURE tag. + This decodes the BASE64-encoded content of the tag and returns a structure + with the MIME type, description, image parameters (if known), and the + compressed image data. + If the MIME type indicates the presence of an image format we recognize + (JPEG, PNG, or GIF) and the actual image data contains the magic signature + associated with that format, then the OpusPictureTag::format field will be + set to the corresponding format. + This is provided as a convenience to avoid requiring applications to parse + the MIME type and/or do their own format detection for the commonly used + formats. + In this case, we also attempt to extract the image parameters directly from + the image data (overriding any that were present in the tag, which the + specification says applications are not meant to rely on). + The application must still provide its own support for actually decoding the + image data and, if applicable, retrieving that data from URLs. + \param[out] _pic Returns the parsed picture data. + No sanitation is done on the type, MIME type, or + description fields, so these might return invalid values. + The contents of this structure are left unmodified on + failure. + \param _tag The METADATA_BLOCK_PICTURE tag contents. + The leading "METADATA_BLOCK_PICTURE=" portion is optional, + to allow the function to be used on either directly on the + values in OpusTags::user_comments or on the return value + of opus_tags_query(). + \return 0 on success or a negative value on error. + \retval #OP_ENOTFORMAT The METADATA_BLOCK_PICTURE contents were not valid. + \retval #OP_EFAULT There was not enough memory to store the picture tag + contents.*/ +OP_WARN_UNUSED_RESULT int opus_picture_tag_parse(OpusPictureTag *_pic, + const char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Initializes an #OpusPictureTag structure. + This should be called on a freshly allocated #OpusPictureTag structure + before attempting to use it. + \param _pic The #OpusPictureTag structure to initialize.*/ +void opus_picture_tag_init(OpusPictureTag *_pic) OP_ARG_NONNULL(1); + +/**Clears the #OpusPictureTag structure. + This should be called on an #OpusPictureTag structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _pic The #OpusPictureTag structure to clear.*/ +void opus_picture_tag_clear(OpusPictureTag *_pic) OP_ARG_NONNULL(1); + +/*@}*/ + +/*@}*/ + +/**\defgroup url_options URL Reading Options*/ +/*@{*/ +/**\name URL reading options + Options for op_url_stream_create() and associated functions. + These allow you to provide proxy configuration parameters, skip SSL + certificate checks, etc. + Options are processed in order, and if the same option is passed multiple + times, only the value specified by the last occurrence has an effect + (unless otherwise specified). + They may be expanded in the future.*/ +/*@{*/ + +/**@cond PRIVATE*/ + +/*These are the raw numbers used to define the request codes. + They should not be used directly.*/ +#define OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST (6464) +#define OP_HTTP_PROXY_HOST_REQUEST (6528) +#define OP_HTTP_PROXY_PORT_REQUEST (6592) +#define OP_HTTP_PROXY_USER_REQUEST (6656) +#define OP_HTTP_PROXY_PASS_REQUEST (6720) +#define OP_GET_SERVER_INFO_REQUEST (6784) + +#define OP_URL_OPT(_request) ((char *)(_request)) + +/*These macros trigger compilation errors or warnings if the wrong types are + provided to one of the URL options.*/ +#define OP_CHECK_INT(_x) ((void)((_x)==(opus_int32)0),(opus_int32)(_x)) +#define OP_CHECK_CONST_CHAR_PTR(_x) ((_x)+((_x)-(const char *)(_x))) +#define OP_CHECK_SERVER_INFO_PTR(_x) ((_x)+((_x)-(OpusServerInfo *)(_x))) + +/**@endcond*/ + +/**HTTP/Shoutcast/Icecast server information associated with a URL.*/ +struct OpusServerInfo{ + /**The name of the server (icy-name/ice-name). + This is <code>NULL</code> if there was no <code>icy-name</code> or + <code>ice-name</code> header.*/ + char *name; + /**A short description of the server (icy-description/ice-description). + This is <code>NULL</code> if there was no <code>icy-description</code> or + <code>ice-description</code> header.*/ + char *description; + /**The genre the server falls under (icy-genre/ice-genre). + This is <code>NULL</code> if there was no <code>icy-genre</code> or + <code>ice-genre</code> header.*/ + char *genre; + /**The homepage for the server (icy-url/ice-url). + This is <code>NULL</code> if there was no <code>icy-url</code> or + <code>ice-url</code> header.*/ + char *url; + /**The software used by the origin server (Server). + This is <code>NULL</code> if there was no <code>Server</code> header.*/ + char *server; + /**The media type of the entity sent to the recepient (Content-Type). + This is <code>NULL</code> if there was no <code>Content-Type</code> + header.*/ + char *content_type; + /**The nominal stream bitrate in kbps (icy-br/ice-bitrate). + This is <code>-1</code> if there was no <code>icy-br</code> or + <code>ice-bitrate</code> header.*/ + opus_int32 bitrate_kbps; + /**Flag indicating whether the server is public (<code>1</code>) or not + (<code>0</code>) (icy-pub/ice-public). + This is <code>-1</code> if there was no <code>icy-pub</code> or + <code>ice-public</code> header.*/ + int is_public; + /**Flag indicating whether the server is using HTTPS instead of HTTP. + This is <code>0</code> unless HTTPS is being used. + This may not match the protocol used in the original URL if there were + redirections.*/ + int is_ssl; +}; + +/**Initializes an #OpusServerInfo structure. + All fields are set as if the corresponding header was not available. + \param _info The #OpusServerInfo structure to initialize. + \note If you use this function, you must link against <tt>libopusurl</tt>.*/ +void opus_server_info_init(OpusServerInfo *_info) OP_ARG_NONNULL(1); + +/**Clears the #OpusServerInfo structure. + This should be called on an #OpusServerInfo structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _info The #OpusServerInfo structure to clear. + \note If you use this function, you must link against <tt>libopusurl</tt>.*/ +void opus_server_info_clear(OpusServerInfo *_info) OP_ARG_NONNULL(1); + +/**Skip the certificate check when connecting via TLS/SSL (https). + \param _b <code>opus_int32</code>: Whether or not to skip the certificate + check. + The check will be skipped if \a _b is non-zero, and will not be + skipped if \a _b is zero. + \hideinitializer*/ +#define OP_SSL_SKIP_CERTIFICATE_CHECK(_b) \ + OP_URL_OPT(OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST),OP_CHECK_INT(_b) + +/**Proxy connections through the given host. + If no port is specified via #OP_HTTP_PROXY_PORT, the port number defaults + to 8080 (http-alt). + All proxy parameters are ignored for non-http and non-https URLs. + \param _host <code>const char *</code>: The proxy server hostname. + This may be <code>NULL</code> to disable the use of a proxy + server. + \hideinitializer*/ +#define OP_HTTP_PROXY_HOST(_host) \ + OP_URL_OPT(OP_HTTP_PROXY_HOST_REQUEST),OP_CHECK_CONST_CHAR_PTR(_host) + +/**Use the given port when proxying connections. + This option only has an effect if #OP_HTTP_PROXY_HOST is specified with a + non-<code>NULL</code> \a _host. + If this option is not provided, the proxy port number defaults to 8080 + (http-alt). + All proxy parameters are ignored for non-http and non-https URLs. + \param _port <code>opus_int32</code>: The proxy server port. + This must be in the range 0...65535 (inclusive), or the + URL function this is passed to will fail. + \hideinitializer*/ +#define OP_HTTP_PROXY_PORT(_port) \ + OP_URL_OPT(OP_HTTP_PROXY_PORT_REQUEST),OP_CHECK_INT(_port) + +/**Use the given user name for authentication when proxying connections. + All proxy parameters are ignored for non-http and non-https URLs. + \param _user const char *: The proxy server user name. + This may be <code>NULL</code> to disable proxy + authentication. + A non-<code>NULL</code> value only has an effect + if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_PASS + are also specified with non-<code>NULL</code> + arguments. + \hideinitializer*/ +#define OP_HTTP_PROXY_USER(_user) \ + OP_URL_OPT(OP_HTTP_PROXY_USER_REQUEST),OP_CHECK_CONST_CHAR_PTR(_user) + +/**Use the given password for authentication when proxying connections. + All proxy parameters are ignored for non-http and non-https URLs. + \param _pass const char *: The proxy server password. + This may be <code>NULL</code> to disable proxy + authentication. + A non-<code>NULL</code> value only has an effect + if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_USER + are also specified with non-<code>NULL</code> + arguments. + \hideinitializer*/ +#define OP_HTTP_PROXY_PASS(_pass) \ + OP_URL_OPT(OP_HTTP_PROXY_PASS_REQUEST),OP_CHECK_CONST_CHAR_PTR(_pass) + +/**Parse information about the streaming server (if any) and return it. + Very little validation is done. + In particular, OpusServerInfo::url may not be a valid URL, + OpusServerInfo::bitrate_kbps may not really be in kbps, and + OpusServerInfo::content_type may not be a valid MIME type. + The character set of the string fields is not specified anywhere, and should + not be assumed to be valid UTF-8. + \param _info OpusServerInfo *: Returns information about the server. + If there is any error opening the stream, the + contents of this structure remain + unmodified. + On success, fills in the structure with the + server information that was available, if + any. + After a successful return, the contents of + this structure should be freed by calling + opus_server_info_clear(). + \hideinitializer*/ +#define OP_GET_SERVER_INFO(_info) \ + OP_URL_OPT(OP_GET_SERVER_INFO_REQUEST),OP_CHECK_SERVER_INFO_PTR(_info) + +/*@}*/ +/*@}*/ + +/**\defgroup stream_callbacks Abstract Stream Reading Interface*/ +/*@{*/ +/**\name Functions for reading from streams + These functions define the interface used to read from and seek in a stream + of data. + A stream does not need to implement seeking, but the decoder will not be + able to seek if it does not do so. + These functions also include some convenience routines for working with + standard <code>FILE</code> pointers, complete streams stored in a single + block of memory, or URLs.*/ +/*@{*/ + +/**Reads up to \a _nbytes bytes of data from \a _stream. + \param _stream The stream to read from. + \param[out] _ptr The buffer to store the data in. + \param _nbytes The maximum number of bytes to read. + This function may return fewer, though it will not + return zero unless it reaches end-of-file. + \return The number of bytes successfully read, or a negative value on + error.*/ +typedef int (*op_read_func)(void *_stream,unsigned char *_ptr,int _nbytes); + +/**Sets the position indicator for \a _stream. + The new position, measured in bytes, is obtained by adding \a _offset + bytes to the position specified by \a _whence. + If \a _whence is set to <code>SEEK_SET</code>, <code>SEEK_CUR</code>, or + <code>SEEK_END</code>, the offset is relative to the start of the stream, + the current position indicator, or end-of-file, respectively. + \retval 0 Success. + \retval -1 Seeking is not supported or an error occurred. + <code>errno</code> need not be set.*/ +typedef int (*op_seek_func)(void *_stream,opus_int64 _offset,int _whence); + +/**Obtains the current value of the position indicator for \a _stream. + \return The current position indicator.*/ +typedef opus_int64 (*op_tell_func)(void *_stream); + +/**Closes the underlying stream. + \retval 0 Success. + \retval EOF An error occurred. + <code>errno</code> need not be set.*/ +typedef int (*op_close_func)(void *_stream); + +/**The callbacks used to access non-<code>FILE</code> stream resources. + The function prototypes are basically the same as for the stdio functions + <code>fread()</code>, <code>fseek()</code>, <code>ftell()</code>, and + <code>fclose()</code>. + The differences are that the <code>FILE *</code> arguments have been + replaced with a <code>void *</code>, which is to be used as a pointer to + whatever internal data these functions might need, that #seek and #tell + take and return 64-bit offsets, and that #seek <em>must</em> return -1 if + the stream is unseekable.*/ +struct OpusFileCallbacks{ + /**Used to read data from the stream. + This must not be <code>NULL</code>.*/ + op_read_func read; + /**Used to seek in the stream. + This may be <code>NULL</code> if seeking is not implemented.*/ + op_seek_func seek; + /**Used to return the current read position in the stream. + This may be <code>NULL</code> if seeking is not implemented.*/ + op_tell_func tell; + /**Used to close the stream when the decoder is freed. + This may be <code>NULL</code> to leave the stream open.*/ + op_close_func close; +}; + +/**Opens a stream with <code>fopen()</code> and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + <code>FILE *</code> must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _path The path to the file to open. + On Windows, this string must be UTF-8 (to allow access to + files whose names cannot be represented in the current + MBCS code page). + All other systems use the native character encoding. + \param _mode The mode to open the file in. + \return A stream handle to use with the callbacks, or <code>NULL</code> on + error.*/ +OP_WARN_UNUSED_RESULT void *op_fopen(OpusFileCallbacks *_cb, + const char *_path,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) + OP_ARG_NONNULL(3); + +/**Opens a stream with <code>fdopen()</code> and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + <code>FILE *</code> must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _fd The file descriptor to open. + \param _mode The mode to open the file in. + \return A stream handle to use with the callbacks, or <code>NULL</code> on + error.*/ +OP_WARN_UNUSED_RESULT void *op_fdopen(OpusFileCallbacks *_cb, + int _fd,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(3); + +/**Opens a stream with <code>freopen()</code> and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + <code>FILE *</code> must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _path The path to the file to open. + On Windows, this string must be UTF-8 (to allow access + to files whose names cannot be represented in the + current MBCS code page). + All other systems use the native character encoding. + \param _mode The mode to open the file in. + \param _stream A stream previously returned by op_fopen(), op_fdopen(), + or op_freopen(). + \return A stream handle to use with the callbacks, or <code>NULL</code> on + error.*/ +OP_WARN_UNUSED_RESULT void *op_freopen(OpusFileCallbacks *_cb, + const char *_path,const char *_mode,void *_stream) OP_ARG_NONNULL(1) + OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) OP_ARG_NONNULL(4); + +/**Creates a stream that reads from the given block of memory. + This block of memory must contain the complete stream to decode. + This is useful for caching small streams (e.g., sound effects) in RAM. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will be + filled in here. + \param _data The block of memory to read from. + \param _size The size of the block of memory. + \return A stream handle to use with the callbacks, or <code>NULL</code> on + error.*/ +OP_WARN_UNUSED_RESULT void *op_mem_stream_create(OpusFileCallbacks *_cb, + const unsigned char *_data,size_t _size) OP_ARG_NONNULL(1); + +/**Creates a stream that reads from the given URL. + This function behaves identically to op_url_stream_create(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the <code>va_end</code> macro, and because it invokes the + <code>va_arg</code> macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against <tt>libopusurl</tt>. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will + be filled in here. + \param _url The URL to read from. + Currently only the <file:>, <http:>, and <https:> + schemes are supported. + Both <http:> and <https:> may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[in,out] _ap A list of the \ref url_options "optional flags" to use. + This is a variable-length list of options terminated + with <code>NULL</code>. + \return A stream handle to use with the callbacks, or <code>NULL</code> on + error.*/ +OP_WARN_UNUSED_RESULT void *op_url_stream_vcreate(OpusFileCallbacks *_cb, + const char *_url,va_list _ap) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Creates a stream that reads from the given URL. + \note If you use this function, you must link against <tt>libopusurl</tt>. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will be + filled in here. + \param _url The URL to read from. + Currently only the <file:>, <http:>, and <https:> schemes + are supported. + Both <http:> and <https:> may be disabled at compile time, + in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, before + passing them to this function. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated with + <code>NULL</code>. + \return A stream handle to use with the callbacks, or <code>NULL</code> on + error.*/ +OP_WARN_UNUSED_RESULT void *op_url_stream_create(OpusFileCallbacks *_cb, + const char *_url,...) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_open_close Opening and Closing*/ +/*@{*/ +/**\name Functions for opening and closing streams + + These functions allow you to test a stream to see if it is Opus, open it, + and close it. + Several flavors are provided for each of the built-in stream types, plus a + more general version which takes a set of application-provided callbacks.*/ +/*@{*/ + +/**Test to see if this is an Opus stream. + For good results, you will need at least 57 bytes (for a pure Opus-only + stream). + Something like 512 bytes will give more reliable results for multiplexed + streams. + This function is meant to be a quick-rejection filter. + Its purpose is not to guarantee that a stream is a valid Opus stream, but to + ensure that it looks enough like Opus that it isn't going to be recognized + as some other format (except possibly an Opus stream that is also + multiplexed with other codecs, such as video). + \param[out] _head The parsed ID header contents. + You may pass <code>NULL</code> if you do not need + this information. + If the function fails, the contents of this structure + remain untouched. + \param _initial_data An initial buffer of data from the start of the + stream. + \param _initial_bytes The number of bytes in \a _initial_data. + \return 0 if the data appears to be Opus, or a negative value on error. + \retval #OP_FALSE There was not enough data to tell if this was an Opus + stream or not. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL The stream used a feature that is not implemented, + such as an unsupported channel family. + \retval #OP_ENOTFORMAT If the data did not contain a recognizable ID + header for an Opus stream. + \retval #OP_EVERSION If the version field signaled a version this library + does not know how to parse. + \retval #OP_EBADHEADER The ID header was not properly formatted or contained + illegal values.*/ +int op_test(OpusHead *_head, + const unsigned char *_initial_data,size_t _initial_bytes); + +/**Open a stream from the given file path. + \param _path The path to the file to open. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want the + failure code. + The failure code will be #OP_EFAULT if the file could not + be opened, or one of the other failure codes from + op_open_callbacks() otherwise. + \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_file(const char *_path,int *_error) + OP_ARG_NONNULL(1); + +/**Open a stream from a memory buffer. + \param _data The memory buffer to open. + \param _size The number of bytes in the buffer. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_memory(const unsigned char *_data, + size_t _size,int *_error); + +/**Open a stream from a URL. + This function behaves identically to op_open_url(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the <code>va_end</code> macro, and because it invokes the + <code>va_arg</code> macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against <tt>libopusurl</tt>. + \param _url The URL to open. + Currently only the <file:>, <http:>, and <https:> + schemes are supported. + Both <http:> and <https:> may be disabled at compile + time, in which case opening such URLs will always + fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, + with internationalized domain names encoded in + punycode, before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \param[in,out] _ap A list of the \ref url_options "optional flags" to + use. + This is a variable-length list of options terminated + with <code>NULL</code>. + \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_vopen_url(const char *_url, + int *_error,va_list _ap) OP_ARG_NONNULL(1); + +/**Open a stream from a URL. + \note If you use this function, you must link against <tt>libopusurl</tt>. + \param _url The URL to open. + Currently only the <file:>, <http:>, and <https:> schemes + are supported. + Both <http:> and <https:> may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated with + <code>NULL</code>. + \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_url(const char *_url, + int *_error,...) OP_ARG_NONNULL(1); + +/**Open a stream using the given set of callbacks to access it. + \param _stream The stream to read from (e.g., a <code>FILE *</code>). + This value will be passed verbatim as the first + argument to all of the callbacks. + \param _cb The callbacks with which to access the stream. + <code><a href="#op_read_func">read()</a></code> must + be implemented. + <code><a href="#op_seek_func">seek()</a></code> and + <code><a href="#op_tell_func">tell()</a></code> may + be <code>NULL</code>, or may always return -1 to + indicate a stream is unseekable, but if + <code><a href="#op_seek_func">seek()</a></code> is + implemented and succeeds on a particular stream, then + <code><a href="#op_tell_func">tell()</a></code> must + also. + <code><a href="#op_close_func">close()</a></code> may + be <code>NULL</code>, but if it is not, it will be + called when the \c OggOpusFile is destroyed by + op_free(). + It will not be called if op_open_callbacks() fails + with an error. + \param _initial_data An initial buffer of data from the start of the + stream. + Applications can read some number of bytes from the + start of the stream to help identify this as an Opus + stream, and then provide them here to allow the + stream to be opened, even if it is unseekable. + \param _initial_bytes The number of bytes in \a _initial_data. + If the stream is seekable, its current position (as + reported by + <code><a href="#opus_tell_func">tell()</a></code> + at the start of this function) must be equal to + \a _initial_bytes. + Otherwise, seeking to absolute positions will + generate inconsistent results. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want + the failure code. + The failure code will be one of + <dl> + <dt>#OP_EREAD</dt> + <dd>An underlying read, seek, or tell operation + failed when it should have succeeded, or we failed + to find data in the stream we had seen before.</dd> + <dt>#OP_EFAULT</dt> + <dd>There was a memory allocation failure, or an + internal library error.</dd> + <dt>#OP_EIMPL</dt> + <dd>The stream used a feature that is not + implemented, such as an unsupported channel + family.</dd> + <dt>#OP_EINVAL</dt> + <dd><code><a href="#op_seek_func">seek()</a></code> + was implemented and succeeded on this source, but + <code><a href="#op_tell_func">tell()</a></code> + did not, or the starting position indicator was + not equal to \a _initial_bytes.</dd> + <dt>#OP_ENOTFORMAT</dt> + <dd>The stream contained a link that did not have + any logical Opus streams in it.</dd> + <dt>#OP_EBADHEADER</dt> + <dd>A required header packet was not properly + formatted, contained illegal values, or was missing + altogether.</dd> + <dt>#OP_EVERSION</dt> + <dd>An ID header contained an unrecognized version + number.</dd> + <dt>#OP_EBADLINK</dt> + <dd>We failed to find data we had seen before after + seeking.</dd> + <dt>#OP_EBADTIMESTAMP</dt> + <dd>The first or last timestamp in a link failed + basic validity checks.</dd> + </dl> + \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error. + <tt>libopusfile</tt> does <em>not</em> take ownership of the stream + if the call fails. + The calling application is responsible for closing the stream if + this call returns an error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_callbacks(void *_stream, + const OpusFileCallbacks *_cb,const unsigned char *_initial_data, + size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2); + +/**Partially open a stream from the given file path. + \see op_test_callbacks + \param _path The path to the file to open. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want the + failure code. + The failure code will be #OP_EFAULT if the file could not + be opened, or one of the other failure codes from + op_open_callbacks() otherwise. + \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_file(const char *_path,int *_error) + OP_ARG_NONNULL(1); + +/**Partially open a stream from a memory buffer. + \see op_test_callbacks + \param _data The memory buffer to open. + \param _size The number of bytes in the buffer. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_memory(const unsigned char *_data, + size_t _size,int *_error); + +/**Partially open a stream from a URL. + This function behaves identically to op_test_url(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the <code>va_end</code> macro, and because it invokes the + <code>va_arg</code> macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against <tt>libopusurl</tt>. + \see op_test_url + \see op_test_callbacks + \param _url The URL to open. + Currently only the <file:>, <http:>, and <https:> + schemes are supported. + Both <http:> and <https:> may be disabled at compile + time, in which case opening such URLs will always + fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, + with internationalized domain names encoded in + punycode, before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \param[in,out] _ap A list of the \ref url_options "optional flags" to + use. + This is a variable-length list of options terminated + with <code>NULL</code>. + \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_vtest_url(const char *_url, + int *_error,va_list _ap) OP_ARG_NONNULL(1); + +/**Partially open a stream from a URL. + \note If you use this function, you must link against <tt>libopusurl</tt>. + \see op_test_callbacks + \param _url The URL to open. + Currently only the <file:>, <http:>, and <https:> + schemes are supported. + Both <http:> and <https:> may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want the + failure code. + See op_open_callbacks() for a full list of failure + codes. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated + with <code>NULL</code>. + \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_url(const char *_url, + int *_error,...) OP_ARG_NONNULL(1); + +/**Partially open a stream using the given set of callbacks to access it. + This tests for Opusness and loads the headers for the first link. + It does not seek (although it tests for seekability). + You can query a partially open stream for the few pieces of basic + information returned by op_serialno(), op_channel_count(), op_head(), and + op_tags() (but only for the first link). + You may also determine if it is seekable via a call to op_seekable(). + You cannot read audio from the stream, seek, get the size or duration, + get information from links other than the first one, or even get the total + number of links until you finish opening the stream with op_test_open(). + If you do not need to do any of these things, you can dispose of it with + op_free() instead. + + This function is provided mostly to simplify porting existing code that used + <tt>libvorbisfile</tt>. + For new code, you are likely better off using op_test() instead, which + is less resource-intensive, requires less data to succeed, and imposes a + hard limit on the amount of data it examines (important for unseekable + streams, where all such data must be buffered until you are sure of the + stream type). + \param _stream The stream to read from (e.g., a <code>FILE *</code>). + This value will be passed verbatim as the first + argument to all of the callbacks. + \param _cb The callbacks with which to access the stream. + <code><a href="#op_read_func">read()</a></code> must + be implemented. + <code><a href="#op_seek_func">seek()</a></code> and + <code><a href="#op_tell_func">tell()</a></code> may + be <code>NULL</code>, or may always return -1 to + indicate a stream is unseekable, but if + <code><a href="#op_seek_func">seek()</a></code> is + implemented and succeeds on a particular stream, then + <code><a href="#op_tell_func">tell()</a></code> must + also. + <code><a href="#op_close_func">close()</a></code> may + be <code>NULL</code>, but if it is not, it will be + called when the \c OggOpusFile is destroyed by + op_free(). + It will not be called if op_open_callbacks() fails + with an error. + \param _initial_data An initial buffer of data from the start of the + stream. + Applications can read some number of bytes from the + start of the stream to help identify this as an Opus + stream, and then provide them here to allow the + stream to be tested more thoroughly, even if it is + unseekable. + \param _initial_bytes The number of bytes in \a _initial_data. + If the stream is seekable, its current position (as + reported by + <code><a href="#opus_tell_func">tell()</a></code> + at the start of this function) must be equal to + \a _initial_bytes. + Otherwise, seeking to absolute positions will + generate inconsistent results. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in <code>NULL</code> if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \return A partially opened \c OggOpusFile, or <code>NULL</code> on error. + <tt>libopusfile</tt> does <em>not</em> take ownership of the stream + if the call fails. + The calling application is responsible for closing the stream if + this call returns an error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_callbacks(void *_stream, + const OpusFileCallbacks *_cb,const unsigned char *_initial_data, + size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2); + +/**Finish opening a stream partially opened with op_test_callbacks() or one of + the associated convenience functions. + If this function fails, you are still responsible for freeing the + \c OggOpusFile with op_free(). + \param _of The \c OggOpusFile to finish opening. + \return 0 on success, or a negative value on error. + \retval #OP_EREAD An underlying read, seek, or tell operation failed + when it should have succeeded. + \retval #OP_EFAULT There was a memory allocation failure, or an + internal library error. + \retval #OP_EIMPL The stream used a feature that is not implemented, + such as an unsupported channel family. + \retval #OP_EINVAL The stream was not partially opened with + op_test_callbacks() or one of the associated + convenience functions. + \retval #OP_ENOTFORMAT The stream contained a link that did not have any + logical Opus streams in it. + \retval #OP_EBADHEADER A required header packet was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An ID header contained an unrecognized version + number. + \retval #OP_EBADLINK We failed to find data we had seen before after + seeking. + \retval #OP_EBADTIMESTAMP The first or last timestamp in a link failed basic + validity checks.*/ +int op_test_open(OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Release all memory used by an \c OggOpusFile. + \param _of The \c OggOpusFile to free.*/ +void op_free(OggOpusFile *_of); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_info Stream Information*/ +/*@{*/ +/**\name Functions for obtaining information about streams + + These functions allow you to get basic information about a stream, including + seekability, the number of links (for chained streams), plus the size, + duration, bitrate, header parameters, and meta information for each link + (or, where available, the stream as a whole). + Some of these (size, duration) are only available for seekable streams. + You can also query the current stream position, link, and playback time, + and instantaneous bitrate during playback. + + Some of these functions may be used successfully on the partially open + streams returned by op_test_callbacks() or one of the associated + convenience functions. + Their documention will indicate so explicitly.*/ +/*@{*/ + +/**Returns whether or not the stream being read is seekable. + This is true if + <ol> + <li>The <code><a href="#op_seek_func">seek()</a></code> and + <code><a href="#op_tell_func">tell()</a></code> callbacks are both + non-<code>NULL</code>,</li> + <li>The <code><a href="#op_seek_func">seek()</a></code> callback was + successfully executed at least once, and</li> + <li>The <code><a href="#op_tell_func">tell()</a></code> callback was + successfully able to report the position indicator afterwards.</li> + </ol> + This function may be called on partially-opened streams. + \param _of The \c OggOpusFile whose seekable status is to be returned. + \return A non-zero value if seekable, and 0 if unseekable.*/ +int op_seekable(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Returns the number of links in this chained stream. + This function may be called on partially-opened streams, but it will always + return 1. + The actual number of links is not known until the stream is fully opened. + \param _of The \c OggOpusFile from which to retrieve the link count. + \return For fully-open seekable streams, this returns the total number of + links in the whole stream, which will be at least 1. + For partially-open or unseekable streams, this always returns 1.*/ +int op_link_count(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Get the serial number of the given link in a (possibly-chained) Ogg Opus + stream. + This function may be called on partially-opened streams, but it will always + return the serial number of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the serial number. + \param _li The index of the link whose serial number should be retrieved. + Use a negative number to get the serial number of the current + link. + \return The serial number of the given link. + If \a _li is greater than the total number of links, this returns + the serial number of the last link. + If the stream is not seekable, this always returns the serial number + of the current link.*/ +opus_uint32 op_serialno(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the channel count of the given link in a (possibly-chained) Ogg Opus + stream. + This is equivalent to <code>op_head(_of,_li)->channel_count</code>, but + is provided for convenience. + This function may be called on partially-opened streams, but it will always + return the channel count of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the channel count. + \param _li The index of the link whose channel count should be retrieved. + Use a negative number to get the channel count of the current + link. + \return The channel count of the given link. + If \a _li is greater than the total number of links, this returns + the channel count of the last link. + If the stream is not seekable, this always returns the channel count + of the current link.*/ +int op_channel_count(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the total (compressed) size of the stream, or of an individual link in + a (possibly-chained) Ogg Opus stream, including all headers and Ogg muxing + overhead. + \warning If the Opus stream (or link) is concurrently multiplexed with other + logical streams (e.g., video), this returns the size of the entire stream + (or link), not just the number of bytes in the first logical Opus stream. + Returning the latter would require scanning the entire file. + \param _of The \c OggOpusFile from which to retrieve the compressed size. + \param _li The index of the link whose compressed size should be computed. + Use a negative number to get the compressed size of the entire + stream. + \return The compressed size of the entire stream if \a _li is negative, the + compressed size of link \a _li if it is non-negative, or a negative + value on error. + The compressed size of the entire stream may be smaller than that + of the underlying stream if trailing garbage was detected in the + file. + \retval #OP_EINVAL The stream is not seekable (so we can't know the length), + \a _li wasn't less than the total number of links in + the stream, or the stream was only partially open.*/ +opus_int64 op_raw_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the total PCM length (number of samples at 48 kHz) of the stream, or of + an individual link in a (possibly-chained) Ogg Opus stream. + Users looking for <code>op_time_total()</code> should use op_pcm_total() + instead. + Because timestamps in Opus are fixed at 48 kHz, there is no need for a + separate function to convert this to seconds (and leaving it out avoids + introducing floating point to the API, for those that wish to avoid it). + \param _of The \c OggOpusFile from which to retrieve the PCM offset. + \param _li The index of the link whose PCM length should be computed. + Use a negative number to get the PCM length of the entire stream. + \return The PCM length of the entire stream if \a _li is negative, the PCM + length of link \a _li if it is non-negative, or a negative value on + error. + \retval #OP_EINVAL The stream is not seekable (so we can't know the length), + \a _li wasn't less than the total number of links in + the stream, or the stream was only partially open.*/ +ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the ID header information for the given link in a (possibly chained) Ogg + Opus stream. + This function may be called on partially-opened streams, but it will always + return the ID header information of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the ID header + information. + \param _li The index of the link whose ID header information should be + retrieved. + Use a negative number to get the ID header information of the + current link. + For an unseekable stream, \a _li is ignored, and the ID header + information for the current link is always returned, if + available. + \return The contents of the ID header for the given link.*/ +const OpusHead *op_head(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the comment header information for the given link in a (possibly + chained) Ogg Opus stream. + This function may be called on partially-opened streams, but it will always + return the tags from the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the comment header + information. + \param _li The index of the link whose comment header information should be + retrieved. + Use a negative number to get the comment header information of + the current link. + For an unseekable stream, \a _li is ignored, and the comment + header information for the current link is always returned, if + available. + \return The contents of the comment header for the given link, or + <code>NULL</code> if this is an unseekable stream that encountered + an invalid link.*/ +const OpusTags *op_tags(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Retrieve the index of the current link. + This is the link that produced the data most recently read by + op_read_float() or its associated functions, or, after a seek, the link + that the seek target landed in. + Reading more data may advance the link index (even on the first read after a + seek). + \param _of The \c OggOpusFile from which to retrieve the current link index. + \return The index of the current link on success, or a negative value on + failure. + For seekable streams, this is a number between 0 (inclusive) and the + value returned by op_link_count() (exclusive). + For unseekable streams, this value starts at 0 and increments by one + each time a new link is encountered (even though op_link_count() + always returns 1). + \retval #OP_EINVAL The stream was only partially open.*/ +int op_current_link(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Computes the bitrate of the stream, or of an individual link in a + (possibly-chained) Ogg Opus stream. + The stream must be seekable to compute the bitrate. + For unseekable streams, use op_bitrate_instant() to get periodic estimates. + \warning If the Opus stream (or link) is concurrently multiplexed with other + logical streams (e.g., video), this uses the size of the entire stream (or + link) to compute the bitrate, not just the number of bytes in the first + logical Opus stream. + Returning the latter requires scanning the entire file, but this may be done + by decoding the whole file and calling op_bitrate_instant() once at the + end. + Install a trivial decoding callback with op_set_decode_callback() if you + wish to skip actual decoding during this process. + \param _of The \c OggOpusFile from which to retrieve the bitrate. + \param _li The index of the link whose bitrate should be computed. + Use a negative number to get the bitrate of the whole stream. + \return The bitrate on success, or a negative value on error. + \retval #OP_EINVAL The stream was only partially open, the stream was not + seekable, or \a _li was larger than the number of + links.*/ +opus_int32 op_bitrate(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Compute the instantaneous bitrate, measured as the ratio of bits to playable + samples decoded since a) the last call to op_bitrate_instant(), b) the last + seek, or c) the start of playback, whichever was most recent. + This will spike somewhat after a seek or at the start/end of a chain + boundary, as pre-skip, pre-roll, and end-trimming causes samples to be + decoded but not played. + \param _of The \c OggOpusFile from which to retrieve the bitrate. + \return The bitrate, in bits per second, or a negative value on error. + \retval #OP_FALSE No data has been decoded since any of the events + described above. + \retval #OP_EINVAL The stream was only partially open.*/ +opus_int32 op_bitrate_instant(OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Obtain the current value of the position indicator for \a _of. + \param _of The \c OggOpusFile from which to retrieve the position indicator. + \return The byte position that is currently being read from. + \retval #OP_EINVAL The stream was only partially open.*/ +opus_int64 op_raw_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Obtain the PCM offset of the next sample to be read. + If the stream is not properly timestamped, this might not increment by the + proper amount between reads, or even return monotonically increasing + values. + \param _of The \c OggOpusFile from which to retrieve the PCM offset. + \return The PCM offset of the next sample to be read. + \retval #OP_EINVAL The stream was only partially open.*/ +ogg_int64_t op_pcm_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_seeking Seeking*/ +/*@{*/ +/**\name Functions for seeking in Opus streams + + These functions let you seek in Opus streams, if the underlying stream + support it. + Seeking is implemented for all built-in stream I/O routines, though some + individual streams may not be seekable (pipes, live HTTP streams, or HTTP + streams from a server that does not support <code>Range</code> requests). + + op_raw_seek() is the fastest: it is guaranteed to perform at most one + physical seek, but, since the target is a byte position, makes no guarantee + how close to a given time it will come. + op_pcm_seek() provides sample-accurate seeking. + The number of physical seeks it requires is still quite small (often 1 or + 2, even in highly variable bitrate streams). + + Seeking in Opus requires decoding some pre-roll amount before playback to + allow the internal state to converge (as if recovering from packet loss). + This is handled internally by <tt>libopusfile</tt>, but means there is + little extra overhead for decoding up to the exact position requested + (since it must decode some amount of audio anyway). + It also means that decoding after seeking may not return exactly the same + values as would be obtained by decoding the stream straight through. + However, such differences are expected to be smaller than the loss + introduced by Opus's lossy compression.*/ +/*@{*/ + +/**Seek to a byte offset relative to the <b>compressed</b> data. + This also scans packets to update the PCM cursor. + It will cross a logical bitstream boundary, but only if it can't get any + packets out of the tail of the link to which it seeks. + \param _of The \c OggOpusFile in which to seek. + \param _byte_offset The byte position to seek to. + This must be between 0 and #op_raw_total(\a _of,\c -1) + (inclusive). + \return 0 on success, or a negative error code on failure. + \retval #OP_EREAD The underlying seek operation failed. + \retval #OP_EINVAL The stream was only partially open, or the target was + outside the valid range for the stream. + \retval #OP_ENOSEEK This stream is not seekable. + \retval #OP_EBADLINK Failed to initialize a decoder for a stream for an + unknown reason.*/ +int op_raw_seek(OggOpusFile *_of,opus_int64 _byte_offset) OP_ARG_NONNULL(1); + +/**Seek to the specified PCM offset, such that decoding will begin at exactly + the requested position. + \param _of The \c OggOpusFile in which to seek. + \param _pcm_offset The PCM offset to seek to. + This is in samples at 48 kHz relative to the start of the + stream. + \return 0 on success, or a negative value on error. + \retval #OP_EREAD An underlying read or seek operation failed. + \retval #OP_EINVAL The stream was only partially open, or the target was + outside the valid range for the stream. + \retval #OP_ENOSEEK This stream is not seekable. + \retval #OP_EBADLINK We failed to find data we had seen before, or the + bitstream structure was sufficiently malformed that + seeking to the target destination was impossible.*/ +int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_decoding Decoding*/ +/*@{*/ +/**\name Functions for decoding audio data + + These functions retrieve actual decoded audio data from the stream. + The general functions, op_read() and op_read_float() return 16-bit or + floating-point output, both using native endian ordering. + The number of channels returned can change from link to link in a chained + stream. + There are special functions, op_read_stereo() and op_read_float_stereo(), + which always output two channels, to simplify applications which do not + wish to handle multichannel audio. + These downmix multichannel files to two channels, so they can always return + samples in the same format for every link in a chained file. + + If the rest of your audio processing chain can handle floating point, the + floating-point routines should be preferred, as they prevent clipping and + other issues which might be avoided entirely if, e.g., you scale down the + volume at some other stage. + However, if you intend to consume 16-bit samples directly, the conversion in + <tt>libopusfile</tt> provides noise-shaping dithering and, if compiled + against <tt>libopus</tt> 1.1 or later, soft-clipping prevention. + + <tt>libopusfile</tt> can also be configured at compile time to use the + fixed-point <tt>libopus</tt> API. + If so, <tt>libopusfile</tt>'s floating-point API may also be disabled. + In that configuration, nothing in <tt>libopusfile</tt> will use any + floating-point operations, to simplify support on devices without an + adequate FPU. + + \warning HTTPS streams may be be vulnerable to truncation attacks if you do + not check the error return code from op_read_float() or its associated + functions. + If the remote peer does not close the connection gracefully (with a TLS + "close notify" message), these functions will return #OP_EREAD instead of 0 + when they reach the end of the file. + If you are reading from an <https:> URL (particularly if seeking is not + supported), you should make sure to check for this error and warn the user + appropriately.*/ +/*@{*/ + +/**Indicates that the decoding callback should produce signed 16-bit + native-endian output samples.*/ +#define OP_DEC_FORMAT_SHORT (7008) +/**Indicates that the decoding callback should produce 32-bit native-endian + float samples.*/ +#define OP_DEC_FORMAT_FLOAT (7040) + +/**Indicates that the decoding callback did not decode anything, and that + <tt>libopusfile</tt> should decode normally instead.*/ +#define OP_DEC_USE_DEFAULT (6720) + +/**Called to decode an Opus packet. + This should invoke the functional equivalent of opus_multistream_decode() or + opus_multistream_decode_float(), except that it returns 0 on success + instead of the number of decoded samples (which is known a priori). + \param _ctx The application-provided callback context. + \param _decoder The decoder to use to decode the packet. + \param[out] _pcm The buffer to decode into. + This will always have enough room for \a _nchannels of + \a _nsamples samples, which should be placed into this + buffer interleaved. + \param _op The packet to decode. + This will always have its granule position set to a valid + value. + \param _nsamples The number of samples expected from the packet. + \param _nchannels The number of channels expected from the packet. + \param _format The desired sample output format. + This is either #OP_DEC_FORMAT_SHORT or + #OP_DEC_FORMAT_FLOAT. + \param _li The index of the link from which this packet was decoded. + \return A non-negative value on success, or a negative value on error. + Any error codes should be the same as those returned by + opus_multistream_decode() or opus_multistream_decode_float(). + Success codes are as follows: + \retval 0 Decoding was successful. + The application has filled the buffer with + exactly <code>\a _nsamples*\a + _nchannels</code> samples in the requested + format. + \retval #OP_DEC_USE_DEFAULT No decoding was done. + <tt>libopusfile</tt> should do the decoding + by itself instead.*/ +typedef int (*op_decode_cb_func)(void *_ctx,OpusMSDecoder *_decoder,void *_pcm, + const ogg_packet *_op,int _nsamples,int _nchannels,int _format,int _li); + +/**Sets the packet decode callback function. + If set, this is called once for each packet that needs to be decoded. + This can be used by advanced applications to do additional processing on the + compressed or uncompressed data. + For example, an application might save the final entropy coder state for + debugging and testing purposes, or it might apply additional filters + before the downmixing, dithering, or soft-clipping performed by + <tt>libopusfile</tt>, so long as these filters do not introduce any + latency. + + A call to this function is no guarantee that the audio will eventually be + delivered to the application. + <tt>libopusfile</tt> may discard some or all of the decoded audio data + (i.e., at the beginning or end of a link, or after a seek), however the + callback is still required to provide all of it. + \param _of The \c OggOpusFile on which to set the decode callback. + \param _decode_cb The callback function to call. + This may be <code>NULL</code> to disable calling the + callback. + \param _ctx The application-provided context pointer to pass to the + callback on each call.*/ +void op_set_decode_callback(OggOpusFile *_of, + op_decode_cb_func _decode_cb,void *_ctx) OP_ARG_NONNULL(1); + +/**Gain offset type that indicates that the provided offset is relative to the + header gain. + This is the default.*/ +#define OP_HEADER_GAIN (0) + +/**Gain offset type that indicates that the provided offset is relative to the + R128_ALBUM_GAIN value (if any), in addition to the header gain.*/ +#define OP_ALBUM_GAIN (3007) + +/**Gain offset type that indicates that the provided offset is relative to the + R128_TRACK_GAIN value (if any), in addition to the header gain.*/ +#define OP_TRACK_GAIN (3008) + +/**Gain offset type that indicates that the provided offset should be used as + the gain directly, without applying any the header or track gains.*/ +#define OP_ABSOLUTE_GAIN (3009) + +/**Sets the gain to be used for decoded output. + By default, the gain in the header is applied with no additional offset. + The total gain (including header gain and/or track gain, if applicable, and + this offset), will be clamped to [-32768,32767]/256 dB. + This is more than enough to saturate or underflow 16-bit PCM. + \note The new gain will not be applied to any already buffered, decoded + output. + This means you cannot change it sample-by-sample, as at best it will be + updated packet-by-packet. + It is meant for setting a target volume level, rather than applying smooth + fades, etc. + \param _of The \c OggOpusFile on which to set the gain offset. + \param _gain_type One of #OP_HEADER_GAIN, #OP_ALBUM_GAIN, + #OP_TRACK_GAIN, or #OP_ABSOLUTE_GAIN. + \param _gain_offset_q8 The gain offset to apply, in 1/256ths of a dB. + \return 0 on success or a negative value on error. + \retval #OP_EINVAL The \a _gain_type was unrecognized.*/ +int op_set_gain_offset(OggOpusFile *_of, + int _gain_type,opus_int32 _gain_offset_q8) OP_ARG_NONNULL(1); + +/**Sets whether or not dithering is enabled for 16-bit decoding. + By default, when <tt>libopusfile</tt> is compiled to use floating-point + internally, calling op_read() or op_read_stereo() will first decode to + float, and then convert to fixed-point using noise-shaping dithering. + This flag can be used to disable that dithering. + When the application uses op_read_float() or op_read_float_stereo(), or when + the library has been compiled to decode directly to fixed point, this flag + has no effect. + \param _of The \c OggOpusFile on which to enable or disable dithering. + \param _enabled A non-zero value to enable dithering, or 0 to disable it.*/ +void op_set_dither_enabled(OggOpusFile *_of,int _enabled) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream. + \note Although \a _buf_size must indicate the total number of values that + can be stored in \a _pcm, the return value is the number of samples + <em>per channel</em>. + This is done because + <ol> + <li>The channel count cannot be known a priori (reading more samples might + advance us into the next link, with a different channel count), so + \a _buf_size cannot also be in units of samples per channel,</li> + <li>Returning the samples per channel matches the <code>libopus</code> API + as closely as we're able,</li> + <li>Returning the total number of values instead of samples per channel + would mean the caller would need a division to compute the samples per + channel, and might worry about the possibility of getting back samples + for some channels and not others, and</li> + <li>This approach is relatively fool-proof: if an application passes too + small a value to \a _buf_size, they will simply get fewer samples back, + and if they assume the return value is the total number of values, then + they will simply read too few (rather than reading too many and going + off the end of the buffer).</li> + </ol> + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed native-endian 16-bit values at 48 kHz + with a nominal range of <code>[-32768,32767)</code>. + Multiple channels are interleaved using the + <a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810004.3.9">Vorbis + channel ordering</a>. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (5760 + values per channel). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + <tt>libopusfile</tt> may return less data than + requested. + If so, there is no guarantee that the remaining data + in \a _pcm will be unmodified. + \param[out] _li The index of the link this data was decoded from. + You may pass <code>NULL</code> if you do not need this + information. + If this function fails (returning a negative value), + this parameter is left unset. + \return The number of samples read per channel on success, or a negative + value on failure. + The channel count can be retrieved on success by calling + <code>op_head(_of,*_li)</code>. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for all channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + <https:> source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read(OggOpusFile *_of, + opus_int16 *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream. + \note Although \a _buf_size must indicate the total number of values that + can be stored in \a _pcm, the return value is the number of samples + <em>per channel</em>. + <ol> + <li>The channel count cannot be known a priori (reading more samples might + advance us into the next link, with a different channel count), so + \a _buf_size cannot also be in units of samples per channel,</li> + <li>Returning the samples per channel matches the <code>libopus</code> API + as closely as we're able,</li> + <li>Returning the total number of values instead of samples per channel + would mean the caller would need a division to compute the samples per + channel, and might worry about the possibility of getting back samples + for some channels and not others, and</li> + <li>This approach is relatively fool-proof: if an application passes too + small a value to \a _buf_size, they will simply get fewer samples back, + and if they assume the return value is the total number of values, then + they will simply read too few (rather than reading too many and going + off the end of the buffer).</li> + </ol> + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples as + signed floats at 48 kHz with a nominal range of + <code>[-1.0,1.0]</code>. + Multiple channels are interleaved using the + <a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810004.3.9">Vorbis + channel ordering</a>. + This must have room for at least \a _buf_size floats. + \param _buf_size The number of floats that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (5760 + samples per channel). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + <tt>libopusfile</tt> makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \param[out] _li The index of the link this data was decoded from. + You may pass <code>NULL</code> if you do not need this + information. + If this function fails (returning a negative value), + this parameter is left unset. + \return The number of samples read per channel on success, or a negative + value on failure. + The channel count can be retrieved on success by calling + <code>op_head(_of,*_li)</code>. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for all channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + <https:> source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_float(OggOpusFile *_of, + float *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream and downmixes to stereo, if necessary. + This function is intended for simple players that want a uniform output + format, even if the channel count changes between links in a chained + stream. + \note \a _buf_size indicates the total number of values that can be stored + in \a _pcm, while the return value is the number of samples <em>per + channel</em>, even though the channel count is known, for consistency with + op_read(). + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed native-endian 16-bit values at 48 kHz + with a nominal range of <code>[-32768,32767)</code>. + The left and right channels are interleaved in the + buffer. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (11520 + values total). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + <tt>libopusfile</tt> makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \return The number of samples read per channel on success, or a negative + value on failure. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for both channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + <https:> source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_stereo(OggOpusFile *_of, + opus_int16 *_pcm,int _buf_size) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream and downmixes to stereo, if necessary. + This function is intended for simple players that want a uniform output + format, even if the channel count changes between links in a chained + stream. + \note \a _buf_size indicates the total number of values that can be stored + in \a _pcm, while the return value is the number of samples <em>per + channel</em>, even though the channel count is known, for consistency with + op_read_float(). + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed floats at 48 kHz with a nominal range of + <code>[-1.0,1.0]</code>. + The left and right channels are interleaved in the + buffer. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (11520 + values total). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + <tt>libopusfile</tt> makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \return The number of samples read per channel on success, or a negative + value on failure. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for both channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + <https:> source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + that did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_float_stereo(OggOpusFile *_of, + float *_pcm,int _buf_size) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +# if OP_GNUC_PREREQ(4,0) +# pragma GCC visibility pop +# endif + +# if defined(__cplusplus) +} +# endif + +#endif diff --git a/MacOSX/codecs/include/opusfile.h b/MacOSX/codecs/include/opusfile.h new file mode 100644 index 0000000..e74eda2 --- /dev/null +++ b/MacOSX/codecs/include/opusfile.h @@ -0,0 +1,3 @@ +/* just a wrapper to bypass the pkg-config thingy: the + * headers under opus/ are edited accordingly for this */ +#include <opus/opusfile.h> diff --git a/MacOSX/codecs/include/vorbis/codec.h b/MacOSX/codecs/include/vorbis/codec.h new file mode 100644 index 0000000..42aa291 --- /dev/null +++ b/MacOSX/codecs/include/vorbis/codec.h @@ -0,0 +1,242 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + + ******************************************************************** + + function: libvorbis codec headers + + ********************************************************************/ + +#ifndef _vorbis_codec_h_ +#define _vorbis_codec_h_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include <ogg/ogg.h> + +typedef struct vorbis_info{ + int version; + int channels; + long rate; + + /* The below bitrate declarations are *hints*. + Combinations of the three values carry the following implications: + + all three set to the same value: + implies a fixed rate bitstream + only nominal set: + implies a VBR stream that averages the nominal bitrate. No hard + upper/lower limit + upper and or lower set: + implies a VBR bitstream that obeys the bitrate limits. nominal + may also be set to give a nominal rate. + none set: + the coder does not care to speculate. + */ + + long bitrate_upper; + long bitrate_nominal; + long bitrate_lower; + long bitrate_window; + + void *codec_setup; +} vorbis_info; + +/* vorbis_dsp_state buffers the current vorbis audio + analysis/synthesis state. The DSP state belongs to a specific + logical bitstream ****************************************************/ +typedef struct vorbis_dsp_state{ + int analysisp; + vorbis_info *vi; + + float **pcm; + float **pcmret; + int pcm_storage; + int pcm_current; + int pcm_returned; + + int preextrapolate; + int eofflag; + + long lW; + long W; + long nW; + long centerW; + + ogg_int64_t granulepos; + ogg_int64_t sequence; + + ogg_int64_t glue_bits; + ogg_int64_t time_bits; + ogg_int64_t floor_bits; + ogg_int64_t res_bits; + + void *backend_state; +} vorbis_dsp_state; + +typedef struct vorbis_block{ + /* necessary stream state for linking to the framing abstraction */ + float **pcm; /* this is a pointer into local storage */ + oggpack_buffer opb; + + long lW; + long W; + long nW; + int pcmend; + int mode; + + int eofflag; + ogg_int64_t granulepos; + ogg_int64_t sequence; + vorbis_dsp_state *vd; /* For read-only access of configuration */ + + /* local storage to avoid remallocing; it's up to the mapping to + structure it */ + void *localstore; + long localtop; + long localalloc; + long totaluse; + struct alloc_chain *reap; + + /* bitmetrics for the frame */ + long glue_bits; + long time_bits; + long floor_bits; + long res_bits; + + void *internal; + +} vorbis_block; + +/* vorbis_block is a single block of data to be processed as part of +the analysis/synthesis stream; it belongs to a specific logical +bitstream, but is independent from other vorbis_blocks belonging to +that logical bitstream. *************************************************/ + +struct alloc_chain{ + void *ptr; + struct alloc_chain *next; +}; + +/* vorbis_info contains all the setup information specific to the + specific compression/decompression mode in progress (eg, + psychoacoustic settings, channel setup, options, codebook + etc). vorbis_info and substructures are in backends.h. +*********************************************************************/ + +/* the comments are not part of vorbis_info so that vorbis_info can be + static storage */ +typedef struct vorbis_comment{ + /* unlimited user comment fields. libvorbis writes 'libvorbis' + whatever vendor is set to in encode */ + char **user_comments; + int *comment_lengths; + int comments; + char *vendor; + +} vorbis_comment; + + +/* libvorbis encodes in two abstraction layers; first we perform DSP + and produce a packet (see docs/analysis.txt). The packet is then + coded into a framed OggSquish bitstream by the second layer (see + docs/framing.txt). Decode is the reverse process; we sync/frame + the bitstream and extract individual packets, then decode the + packet back into PCM audio. + + The extra framing/packetizing is used in streaming formats, such as + files. Over the net (such as with UDP), the framing and + packetization aren't necessary as they're provided by the transport + and the streaming layer is not used */ + +/* Vorbis PRIMITIVES: general ***************************************/ + +extern void vorbis_info_init(vorbis_info *vi); +extern void vorbis_info_clear(vorbis_info *vi); +extern int vorbis_info_blocksize(vorbis_info *vi,int zo); +extern void vorbis_comment_init(vorbis_comment *vc); +extern void vorbis_comment_add(vorbis_comment *vc, const char *comment); +extern void vorbis_comment_add_tag(vorbis_comment *vc, + const char *tag, const char *contents); +extern char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count); +extern int vorbis_comment_query_count(vorbis_comment *vc, const char *tag); +extern void vorbis_comment_clear(vorbis_comment *vc); + +extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); +extern int vorbis_block_clear(vorbis_block *vb); +extern void vorbis_dsp_clear(vorbis_dsp_state *v); +extern double vorbis_granule_time(vorbis_dsp_state *v, + ogg_int64_t granulepos); + +extern const char *vorbis_version_string(void); + +/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ + +extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); +extern int vorbis_analysis_headerout(vorbis_dsp_state *v, + vorbis_comment *vc, + ogg_packet *op, + ogg_packet *op_comm, + ogg_packet *op_code); +extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); +extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); +extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); + +extern int vorbis_bitrate_addblock(vorbis_block *vb); +extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, + ogg_packet *op); + +/* Vorbis PRIMITIVES: synthesis layer *******************************/ +extern int vorbis_synthesis_idheader(ogg_packet *op); +extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, + ogg_packet *op); + +extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_synthesis_restart(vorbis_dsp_state *v); +extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); +extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm); +extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); +extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); + +extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag); +extern int vorbis_synthesis_halfrate_p(vorbis_info *v); + +/* Vorbis ERRORS and return codes ***********************************/ + +#define OV_FALSE -1 +#define OV_EOF -2 +#define OV_HOLE -3 + +#define OV_EREAD -128 +#define OV_EFAULT -129 +#define OV_EIMPL -130 +#define OV_EINVAL -131 +#define OV_ENOTVORBIS -132 +#define OV_EBADHEADER -133 +#define OV_EVERSION -134 +#define OV_ENOTAUDIO -135 +#define OV_EBADPACKET -136 +#define OV_EBADLINK -137 +#define OV_ENOSEEK -138 + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/MacOSX/codecs/include/vorbis/vorbisfile.h b/MacOSX/codecs/include/vorbis/vorbisfile.h new file mode 100644 index 0000000..5662611 --- /dev/null +++ b/MacOSX/codecs/include/vorbis/vorbisfile.h @@ -0,0 +1,205 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + + ********************************************************************/ + +#ifndef _OV_FILE_H_ +#define _OV_FILE_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include <stdio.h> +#include "codec.h" + +/* The function prototypes for the callbacks are basically the same as for + * the stdio functions fread, fseek, fclose, ftell. + * The one difference is that the FILE * arguments have been replaced with + * a void * - this is to be used as a pointer to whatever internal data these + * functions might need. In the stdio case, it's just a FILE * cast to a void * + * + * If you use other functions, check the docs for these functions and return + * the right values. For seek_func(), you *MUST* return -1 if the stream is + * unseekable + */ +typedef struct { + size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); + int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); + int (*close_func) (void *datasource); + long (*tell_func) (void *datasource); +} ov_callbacks; + +#ifndef OV_EXCLUDE_STATIC_CALLBACKS + +/* a few sets of convenient callbacks, especially for use under + * Windows where ov_open_callbacks() should always be used instead of + * ov_open() to avoid problems with incompatible crt.o version linking + * issues. */ + +static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){ + if(f==NULL)return(-1); + +#ifdef __MINGW32__ + return fseeko64(f,off,whence); +#elif defined (_WIN32) + return _fseeki64(f,off,whence); +#else + return fseek(f,off,whence); +#endif +} + +/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as + * static data. That means that every file which includes this header + * will get its own copy of these structs whether it uses them or + * not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS. + * These static symbols are essential on platforms such as Windows on + * which several different versions of stdio support may be linked to + * by different DLLs, and we need to be certain we know which one + * we're using (the same one as the main application). + */ + +static ov_callbacks OV_CALLBACKS_DEFAULT = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) fclose, + (long (*)(void *)) ftell +}; + +static ov_callbacks OV_CALLBACKS_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) NULL, + (long (*)(void *)) ftell +}; + +static ov_callbacks OV_CALLBACKS_STREAMONLY = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) NULL, + (int (*)(void *)) fclose, + (long (*)(void *)) NULL +}; + +static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) NULL, + (int (*)(void *)) NULL, + (long (*)(void *)) NULL +}; + +#endif + +#define NOTOPEN 0 +#define PARTOPEN 1 +#define OPENED 2 +#define STREAMSET 3 +#define INITSET 4 + +typedef struct OggVorbis_File { + void *datasource; /* Pointer to a FILE *, etc. */ + int seekable; + ogg_int64_t offset; + ogg_int64_t end; + ogg_sync_state oy; + + /* If the FILE handle isn't seekable (eg, a pipe), only the current + stream appears */ + int links; + ogg_int64_t *offsets; + ogg_int64_t *dataoffsets; + long *serialnos; + ogg_int64_t *pcmlengths; /* overloaded to maintain binary + compatibility; x2 size, stores both + beginning and end values */ + vorbis_info *vi; + vorbis_comment *vc; + + /* Decoding working state local storage */ + ogg_int64_t pcm_offset; + int ready_state; + long current_serialno; + int current_link; + + double bittrack; + double samptrack; + + ogg_stream_state os; /* take physical pages, weld into a logical + stream of packets */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + + ov_callbacks callbacks; + +} OggVorbis_File; + + +extern int ov_clear(OggVorbis_File *vf); +extern int ov_fopen(const char *path,OggVorbis_File *vf); +extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); +extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, + const char *initial, long ibytes, ov_callbacks callbacks); + +extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); +extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, + const char *initial, long ibytes, ov_callbacks callbacks); +extern int ov_test_open(OggVorbis_File *vf); + +extern long ov_bitrate(OggVorbis_File *vf,int i); +extern long ov_bitrate_instant(OggVorbis_File *vf); +extern long ov_streams(OggVorbis_File *vf); +extern long ov_seekable(OggVorbis_File *vf); +extern long ov_serialnumber(OggVorbis_File *vf,int i); + +extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); +extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); +extern double ov_time_total(OggVorbis_File *vf,int i); + +extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek(OggVorbis_File *vf,double pos); +extern int ov_time_seek_page(OggVorbis_File *vf,double pos); + +extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek_lap(OggVorbis_File *vf,double pos); +extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos); + +extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); +extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); +extern double ov_time_tell(OggVorbis_File *vf); + +extern vorbis_info *ov_info(OggVorbis_File *vf,int link); +extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); + +extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, + int *bitstream); +extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, + int bigendianp,int word,int sgned,int *bitstream, + void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param); +extern long ov_read(OggVorbis_File *vf,char *buffer,int length, + int bigendianp,int word,int sgned,int *bitstream); +extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2); + +extern int ov_halfrate(OggVorbis_File *vf,int flag); +extern int ov_halfrate_p(OggVorbis_File *vf); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/MacOSX/codecs/include/xmp.h b/MacOSX/codecs/include/xmp.h new file mode 100644 index 0000000..2c940ef --- /dev/null +++ b/MacOSX/codecs/include/xmp.h @@ -0,0 +1,407 @@ +#ifndef XMP_H +#define XMP_H + +#if defined(EMSCRIPTEN) +# include <emscripten.h> +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define XMP_VERSION "4.6.3" +#define XMP_VERCODE 0x040603 +#define XMP_VER_MAJOR 4 +#define XMP_VER_MINOR 6 +#define XMP_VER_RELEASE 3 + +#if defined(_WIN32) && !defined(__CYGWIN__) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# elif defined(BUILDING_DLL) +# define LIBXMP_EXPORT __declspec(dllexport) +# else +# define LIBXMP_EXPORT __declspec(dllimport) +# endif +#elif defined(__OS2__) && defined(__WATCOMC__) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# elif defined(BUILDING_DLL) +# define LIBXMP_EXPORT __declspec(dllexport) +# else +# define LIBXMP_EXPORT +# endif +#elif (defined(__GNUC__) || defined(__clang__) || defined(__HP_cc)) && defined(XMP_SYM_VISIBILITY) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# else +# define LIBXMP_EXPORT __attribute__((visibility("default"))) +# endif +#elif defined(__SUNPRO_C) && defined(XMP_LDSCOPE_GLOBAL) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# else +# define LIBXMP_EXPORT __global +# endif +#elif defined(EMSCRIPTEN) +# define LIBXMP_EXPORT EMSCRIPTEN_KEEPALIVE +# define LIBXMP_EXPORT_VAR +#else +# define LIBXMP_EXPORT +#endif + +#if !defined(LIBXMP_EXPORT_VAR) +# define LIBXMP_EXPORT_VAR LIBXMP_EXPORT +#endif + +#define XMP_NAME_SIZE 64 /* Size of module name and type */ + +#define XMP_KEY_OFF 0x81 /* Note number for key off event */ +#define XMP_KEY_CUT 0x82 /* Note number for key cut event */ +#define XMP_KEY_FADE 0x83 /* Note number for fade event */ + +/* mixer parameter macros */ + +/* sample format flags */ +#define XMP_FORMAT_8BIT (1 << 0) /* Mix to 8-bit instead of 16 */ +#define XMP_FORMAT_UNSIGNED (1 << 1) /* Mix to unsigned samples */ +#define XMP_FORMAT_MONO (1 << 2) /* Mix to mono instead of stereo */ + +/* player parameters */ +#define XMP_PLAYER_AMP 0 /* Amplification factor */ +#define XMP_PLAYER_MIX 1 /* Stereo mixing */ +#define XMP_PLAYER_INTERP 2 /* Interpolation type */ +#define XMP_PLAYER_DSP 3 /* DSP effect flags */ +#define XMP_PLAYER_FLAGS 4 /* Player flags */ +#define XMP_PLAYER_CFLAGS 5 /* Player flags for current module */ +#define XMP_PLAYER_SMPCTL 6 /* Sample control flags */ +#define XMP_PLAYER_VOLUME 7 /* Player module volume */ +#define XMP_PLAYER_STATE 8 /* Internal player state (read only) */ +#define XMP_PLAYER_SMIX_VOLUME 9 /* SMIX volume */ +#define XMP_PLAYER_DEFPAN 10 /* Default pan setting */ +#define XMP_PLAYER_MODE 11 /* Player personality */ +#define XMP_PLAYER_MIXER_TYPE 12 /* Current mixer (read only) */ +#define XMP_PLAYER_VOICES 13 /* Maximum number of mixer voices */ + +/* interpolation types */ +#define XMP_INTERP_NEAREST 0 /* Nearest neighbor */ +#define XMP_INTERP_LINEAR 1 /* Linear (default) */ +#define XMP_INTERP_SPLINE 2 /* Cubic spline */ + +/* dsp effect types */ +#define XMP_DSP_LOWPASS (1 << 0) /* Lowpass filter effect */ +#define XMP_DSP_ALL (XMP_DSP_LOWPASS) + +/* player state */ +#define XMP_STATE_UNLOADED 0 /* Context created */ +#define XMP_STATE_LOADED 1 /* Module loaded */ +#define XMP_STATE_PLAYING 2 /* Module playing */ + +/* player flags */ +#define XMP_FLAGS_VBLANK (1 << 0) /* Use vblank timing */ +#define XMP_FLAGS_FX9BUG (1 << 1) /* Emulate FX9 bug */ +#define XMP_FLAGS_FIXLOOP (1 << 2) /* Emulate sample loop bug */ +#define XMP_FLAGS_A500 (1 << 3) /* Use Paula mixer in Amiga modules */ + +/* player modes */ +#define XMP_MODE_AUTO 0 /* Autodetect mode (default) */ +#define XMP_MODE_MOD 1 /* Play as a generic MOD player */ +#define XMP_MODE_NOISETRACKER 2 /* Play using Noisetracker quirks */ +#define XMP_MODE_PROTRACKER 3 /* Play using Protracker quirks */ +#define XMP_MODE_S3M 4 /* Play as a generic S3M player */ +#define XMP_MODE_ST3 5 /* Play using ST3 bug emulation */ +#define XMP_MODE_ST3GUS 6 /* Play using ST3+GUS quirks */ +#define XMP_MODE_XM 7 /* Play as a generic XM player */ +#define XMP_MODE_FT2 8 /* Play using FT2 bug emulation */ +#define XMP_MODE_IT 9 /* Play using IT quirks */ +#define XMP_MODE_ITSMP 10 /* Play using IT sample mode quirks */ + +/* mixer types */ +#define XMP_MIXER_STANDARD 0 /* Standard mixer */ +#define XMP_MIXER_A500 1 /* Amiga 500 */ +#define XMP_MIXER_A500F 2 /* Amiga 500 with led filter */ + +/* sample flags */ +#define XMP_SMPCTL_SKIP (1 << 0) /* Don't load samples */ + +/* limits */ +#define XMP_MAX_KEYS 121 /* Number of valid keys */ +#define XMP_MAX_ENV_POINTS 32 /* Max number of envelope points */ +#define XMP_MAX_MOD_LENGTH 256 /* Max number of patterns in module */ +#define XMP_MAX_CHANNELS 64 /* Max number of channels in module */ +#define XMP_MAX_SRATE 49170 /* max sampling rate (Hz) */ +#define XMP_MIN_SRATE 4000 /* min sampling rate (Hz) */ +#define XMP_MIN_BPM 20 /* min BPM */ +/* frame rate = (50 * bpm / 125) Hz */ +/* frame size = (sampling rate * channels * size) / frame rate */ +#define XMP_MAX_FRAMESIZE (5 * XMP_MAX_SRATE * 2 / XMP_MIN_BPM) + +/* error codes */ +#define XMP_END 1 +#define XMP_ERROR_INTERNAL 2 /* Internal error */ +#define XMP_ERROR_FORMAT 3 /* Unsupported module format */ +#define XMP_ERROR_LOAD 4 /* Error loading file */ +#define XMP_ERROR_DEPACK 5 /* Error depacking file */ +#define XMP_ERROR_SYSTEM 6 /* System error */ +#define XMP_ERROR_INVALID 7 /* Invalid parameter */ +#define XMP_ERROR_STATE 8 /* Invalid player state */ + +struct xmp_channel { + int pan; /* Channel pan (0x80 is center) */ + int vol; /* Channel volume */ +#define XMP_CHANNEL_SYNTH (1 << 0) /* Channel is synthesized */ +#define XMP_CHANNEL_MUTE (1 << 1) /* Channel is muted */ +#define XMP_CHANNEL_SPLIT (1 << 2) /* Split Amiga channel in bits 5-4 */ +#define XMP_CHANNEL_SURROUND (1 << 4) /* Surround channel */ + int flg; /* Channel flags */ +}; + +struct xmp_pattern { + int rows; /* Number of rows */ + int index[1]; /* Track index */ +}; + +struct xmp_event { + unsigned char note; /* Note number (0 means no note) */ + unsigned char ins; /* Patch number */ + unsigned char vol; /* Volume (0 to basevol) */ + unsigned char fxt; /* Effect type */ + unsigned char fxp; /* Effect parameter */ + unsigned char f2t; /* Secondary effect type */ + unsigned char f2p; /* Secondary effect parameter */ + unsigned char _flag; /* Internal (reserved) flags */ +}; + +struct xmp_track { + int rows; /* Number of rows */ + struct xmp_event event[1]; /* Event data */ +}; + +struct xmp_envelope { +#define XMP_ENVELOPE_ON (1 << 0) /* Envelope is enabled */ +#define XMP_ENVELOPE_SUS (1 << 1) /* Envelope has sustain point */ +#define XMP_ENVELOPE_LOOP (1 << 2) /* Envelope has loop */ +#define XMP_ENVELOPE_FLT (1 << 3) /* Envelope is used for filter */ +#define XMP_ENVELOPE_SLOOP (1 << 4) /* Envelope has sustain loop */ +#define XMP_ENVELOPE_CARRY (1 << 5) /* Don't reset envelope position */ + int flg; /* Flags */ + int npt; /* Number of envelope points */ + int scl; /* Envelope scaling */ + int sus; /* Sustain start point */ + int sue; /* Sustain end point */ + int lps; /* Loop start point */ + int lpe; /* Loop end point */ + short data[XMP_MAX_ENV_POINTS * 2]; +}; + +struct xmp_subinstrument { + int vol; /* Default volume */ + int gvl; /* Global volume */ + int pan; /* Pan */ + int xpo; /* Transpose */ + int fin; /* Finetune */ + int vwf; /* Vibrato waveform */ + int vde; /* Vibrato depth */ + int vra; /* Vibrato rate */ + int vsw; /* Vibrato sweep */ + int rvv; /* Random volume/pan variation (IT) */ + int sid; /* Sample number */ +#define XMP_INST_NNA_CUT 0x00 +#define XMP_INST_NNA_CONT 0x01 +#define XMP_INST_NNA_OFF 0x02 +#define XMP_INST_NNA_FADE 0x03 + int nna; /* New note action */ +#define XMP_INST_DCT_OFF 0x00 +#define XMP_INST_DCT_NOTE 0x01 +#define XMP_INST_DCT_SMP 0x02 +#define XMP_INST_DCT_INST 0x03 + int dct; /* Duplicate check type */ +#define XMP_INST_DCA_CUT XMP_INST_NNA_CUT +#define XMP_INST_DCA_OFF XMP_INST_NNA_OFF +#define XMP_INST_DCA_FADE XMP_INST_NNA_FADE + int dca; /* Duplicate check action */ + int ifc; /* Initial filter cutoff */ + int ifr; /* Initial filter resonance */ +}; + +struct xmp_instrument { + char name[32]; /* Instrument name */ + int vol; /* Instrument volume */ + int nsm; /* Number of samples */ + int rls; /* Release (fadeout) */ + struct xmp_envelope aei; /* Amplitude envelope info */ + struct xmp_envelope pei; /* Pan envelope info */ + struct xmp_envelope fei; /* Frequency envelope info */ + + struct { + unsigned char ins; /* Instrument number for each key */ + signed char xpo; /* Instrument transpose for each key */ + } map[XMP_MAX_KEYS]; + + struct xmp_subinstrument *sub; + + void *extra; /* Extra fields */ +}; + +struct xmp_sample { + char name[32]; /* Sample name */ + int len; /* Sample length */ + int lps; /* Loop start */ + int lpe; /* Loop end */ +#define XMP_SAMPLE_16BIT (1 << 0) /* 16bit sample */ +#define XMP_SAMPLE_LOOP (1 << 1) /* Sample is looped */ +#define XMP_SAMPLE_LOOP_BIDIR (1 << 2) /* Bidirectional sample loop */ +#define XMP_SAMPLE_LOOP_REVERSE (1 << 3) /* Backwards sample loop */ +#define XMP_SAMPLE_LOOP_FULL (1 << 4) /* Play full sample before looping */ +#define XMP_SAMPLE_SLOOP (1 << 5) /* Sample has sustain loop */ +#define XMP_SAMPLE_SLOOP_BIDIR (1 << 6) /* Bidirectional sustain loop */ +#define XMP_SAMPLE_STEREO (1 << 7) /* Interlaced stereo sample */ +#define XMP_SAMPLE_SYNTH (1 << 15) /* Data contains synth patch */ + int flg; /* Flags */ + unsigned char *data; /* Sample data */ +}; + +struct xmp_sequence { + int entry_point; + int duration; +}; + +struct xmp_module { + char name[XMP_NAME_SIZE]; /* Module title */ + char type[XMP_NAME_SIZE]; /* Module format */ + int pat; /* Number of patterns */ + int trk; /* Number of tracks */ + int chn; /* Tracks per pattern */ + int ins; /* Number of instruments */ + int smp; /* Number of samples */ + int spd; /* Initial speed */ + int bpm; /* Initial BPM */ + int len; /* Module length in patterns */ + int rst; /* Restart position */ + int gvl; /* Global volume */ + + struct xmp_pattern **xxp; /* Patterns */ + struct xmp_track **xxt; /* Tracks */ + struct xmp_instrument *xxi; /* Instruments */ + struct xmp_sample *xxs; /* Samples */ + struct xmp_channel xxc[XMP_MAX_CHANNELS]; /* Channel info */ + unsigned char xxo[XMP_MAX_MOD_LENGTH]; /* Orders */ +}; + +struct xmp_test_info { + char name[XMP_NAME_SIZE]; /* Module title */ + char type[XMP_NAME_SIZE]; /* Module format */ +}; + +struct xmp_module_info { + unsigned char md5[16]; /* MD5 message digest */ + int vol_base; /* Volume scale */ + struct xmp_module *mod; /* Pointer to module data */ + char *comment; /* Comment text, if any */ + int num_sequences; /* Number of valid sequences */ + struct xmp_sequence *seq_data; /* Pointer to sequence data */ +}; + +struct xmp_channel_info { + unsigned int period; /* Sample period (* 4096) */ + unsigned int position; /* Sample position */ + short pitchbend; /* Linear bend from base note*/ + unsigned char note; /* Current base note number */ + unsigned char instrument; /* Current instrument number */ + unsigned char sample; /* Current sample number */ + unsigned char volume; /* Current volume */ + unsigned char pan; /* Current stereo pan */ + unsigned char reserved; /* Reserved */ + struct xmp_event event; /* Current track event */ +}; + +struct xmp_frame_info { /* Current frame information */ + int pos; /* Current position */ + int pattern; /* Current pattern */ + int row; /* Current row in pattern */ + int num_rows; /* Number of rows in current pattern */ + int frame; /* Current frame */ + int speed; /* Current replay speed */ + int bpm; /* Current bpm */ + int time; /* Current module time in ms */ + int total_time; /* Estimated replay time in ms*/ + int frame_time; /* Frame replay time in us */ + void *buffer; /* Pointer to sound buffer */ + int buffer_size; /* Used buffer size */ + int total_size; /* Total buffer size */ + int volume; /* Current master volume */ + int loop_count; /* Loop counter */ + int virt_channels; /* Number of virtual channels */ + int virt_used; /* Used virtual channels */ + int sequence; /* Current sequence */ + + struct xmp_channel_info channel_info[XMP_MAX_CHANNELS]; /* Current channel information */ +}; + +struct xmp_callbacks { + unsigned long (*read_func)(void *dest, unsigned long len, + unsigned long nmemb, void *priv); + int (*seek_func)(void *priv, long offset, int whence); + long (*tell_func)(void *priv); + int (*close_func)(void *priv); +}; + +typedef char *xmp_context; + +LIBXMP_EXPORT_VAR extern const char *xmp_version; +LIBXMP_EXPORT_VAR extern const unsigned int xmp_vercode; + +LIBXMP_EXPORT int xmp_syserrno (void); + +LIBXMP_EXPORT xmp_context xmp_create_context (void); +LIBXMP_EXPORT void xmp_free_context (xmp_context); + +LIBXMP_EXPORT int xmp_load_module (xmp_context, const char *); +LIBXMP_EXPORT int xmp_load_module_from_memory (xmp_context, const void *, long); +LIBXMP_EXPORT int xmp_load_module_from_file (xmp_context, void *, long); +LIBXMP_EXPORT int xmp_load_module_from_callbacks (xmp_context, void *, struct xmp_callbacks); + +LIBXMP_EXPORT int xmp_test_module (const char *, struct xmp_test_info *); +LIBXMP_EXPORT int xmp_test_module_from_memory (const void *, long, struct xmp_test_info *); +LIBXMP_EXPORT int xmp_test_module_from_file (void *, struct xmp_test_info *); +LIBXMP_EXPORT int xmp_test_module_from_callbacks (void *, struct xmp_callbacks, struct xmp_test_info *); + +LIBXMP_EXPORT void xmp_scan_module (xmp_context); +LIBXMP_EXPORT void xmp_release_module (xmp_context); + +LIBXMP_EXPORT int xmp_start_player (xmp_context, int, int); +LIBXMP_EXPORT int xmp_play_frame (xmp_context); +LIBXMP_EXPORT int xmp_play_buffer (xmp_context, void *, int, int); +LIBXMP_EXPORT void xmp_get_frame_info (xmp_context, struct xmp_frame_info *); +LIBXMP_EXPORT void xmp_end_player (xmp_context); +LIBXMP_EXPORT void xmp_inject_event (xmp_context, int, struct xmp_event *); +LIBXMP_EXPORT void xmp_get_module_info (xmp_context, struct xmp_module_info *); +LIBXMP_EXPORT const char *const *xmp_get_format_list (void); +LIBXMP_EXPORT int xmp_next_position (xmp_context); +LIBXMP_EXPORT int xmp_prev_position (xmp_context); +LIBXMP_EXPORT int xmp_set_position (xmp_context, int); +LIBXMP_EXPORT int xmp_set_row (xmp_context, int); +LIBXMP_EXPORT int xmp_set_tempo_factor(xmp_context, double); +LIBXMP_EXPORT void xmp_stop_module (xmp_context); +LIBXMP_EXPORT void xmp_restart_module (xmp_context); +LIBXMP_EXPORT int xmp_seek_time (xmp_context, int); +LIBXMP_EXPORT int xmp_channel_mute (xmp_context, int, int); +LIBXMP_EXPORT int xmp_channel_vol (xmp_context, int, int); +LIBXMP_EXPORT int xmp_set_player (xmp_context, int, int); +LIBXMP_EXPORT int xmp_get_player (xmp_context, int); +LIBXMP_EXPORT int xmp_set_instrument_path (xmp_context, const char *); + +/* External sample mixer API */ +LIBXMP_EXPORT int xmp_start_smix (xmp_context, int, int); +LIBXMP_EXPORT void xmp_end_smix (xmp_context); +LIBXMP_EXPORT int xmp_smix_play_instrument(xmp_context, int, int, int, int); +LIBXMP_EXPORT int xmp_smix_play_sample (xmp_context, int, int, int, int); +LIBXMP_EXPORT int xmp_smix_channel_pan (xmp_context, int, int); +LIBXMP_EXPORT int xmp_smix_load_sample (xmp_context, int, const char *); +LIBXMP_EXPORT int xmp_smix_release_sample (xmp_context, int); + +#ifdef __cplusplus +} +#endif + +#endif /* XMP_H */ diff --git a/MacOSX/codecs/lib/libFLAC.dylib b/MacOSX/codecs/lib/libFLAC.dylib new file mode 100755 index 0000000000000000000000000000000000000000..cb9d9c6009d6e1e2f6ce75a57faf72d624cb603b GIT binary patch literal 360540 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%0DR2UPAhH?2v~zm?%mQb= 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�-jbjFH`<pPS(9qnPp$9QpUYzNS4zixFZ8&seo+yc#_K66b1dbUSeklo zvNTzx%~sX`6t22(X#eF55Odi4#Re*tI<@zHOPzGwxA;P7$xwLs0W+7)Un|fMIPlh+ zmzK{&!}{<(fM3J$h+&~h8?5Xj;PBQ_Rfp&3xxQ@v3rQF#(n*D#APoL>KVC!K1Rys6 z$maGq;5-hHShw>5#*yfceTCDIxbpn!M_H5p+<<oNOUD%UBbxv16H9-j<_BUUqkZ$# z_KQQF`U^H$#1I($)}I{AT-7*@eiTjjHm|ga76pMZg!|#>0OcRL`idg~e>x~%XK5mW zHK|en4Ho?G0)HUT4P(B^Qisv11Ffm4dnZ144H`NRV=V@<&az3<U5(N~H1oIM>TsYo z3xk~0j6QayXlhdCO*=X^^$D69ou#I>YYIfArYgStV{^x*u$uR)(k`^saH8p})7s+0 z`Q?Xudv|CDmM%sTZSClKdtJM>tkPj>Yf;aS4|i+}#xrN0Z?h&^Pj4v%;-!c8|FvUF z^Iugt)3*Kj`;+Zj!bG{)Dy=W{t-R`!)Y%UQ>d%w5V2g*p#|D<SY)Tuu9{sAaU*|(> z(m}<t9duKC9#did@hEEw_)Suy<q$ZUWTN886N?zS(nAVZAWLbk&AyelTsh^n$MEWF zeWtX<QfE0N*e+w>7eBH?f!a%?gBHk48f4y+rhdKdjU<q&L<8~Hk3Jig1XGpj0dw-O zcaJ2))W^P{O51?woVD+-OM<IPM3MUE{?IoGE_SpUIl9NM{o~i|Kpz2UZ~yPNw*x(C zsTkYz%PUPupwp~10G;2s{gWinD*V@COuzX3?k|&J>#k~5I->gCxTWpcKlS2rkqLH% zToBWfI+%9fo9m@EG+lcMc=c#gH_|%3SJTuh^A3akRrY0|4o3u!?&$WJWry#D^Inc# zHv})=t-!0zf$q{LNZ(@lY^cw3&3|3B`0r_BS2FOaUsj}sqm61eytC%>WacmX?MYSI zgckw*7r{AubX&Jt)l%zw^|HDN_fJc6RN_brwNc00s7D*W*_`ofE5xwAeG^^gAO1dy zF@xjUXkwe%t=6*9=Skf<$>SB!(<ZHD8xu{8cy9S@4qTP+a!Gx>iIy*KIK`n`rDmQi zdeJ3oi1cRzI!2N0IvQ`{kLR0*$C~gbnpk|<!skXG4b*m#YSXZ@!(r{PP%myhcn9=+ zcWJ8?^re=!SayKpyS%$?=XHU4S=xfJWKE#>A<HI==}S$|NAUK^a%mS@0kbS)m+0e6 z(m|<~;W5`NjmSu{P7?mU_Vb<l8@&Iwp3G{zv_Kb}u&r3F&_ddBL<{<18RFd??dT6S zyr#T}wzY6L97ff#_SuJUJXT)xYo6_*HP$BlHrVt9;~n`UCYRwAjY)nx+hS*%LVGd4 zV@uq5nT-{V$CkK_eZr5eLpeq6pipEW)eFs~a_$on*&XhkDIu?@cX}<^a|zmYuo08( z(51K@A=NcTai2_e4cByBosvaIR&bQ#l!I;7SY60Qa9Fd0?X|Omcu__6{BNv~a4a#E zE^LDDce-w#&blK3$I1P8ujoUZC$B~kK$c`Ly+1<GW$&8^@%m*{U&m|eW5o&V-P$_1 ze2wGrc*)|Jb3D!$R$F%C9QoV~1jo@k8tmAU3c_<O+vue4?Zvd)Tn>;aIJcWoO^0`@ zGpEY~QyQkrJ2G&ldSFT;LSx36ftgv$-{IOxFIeU`%br8D(#iW22Y8p#d5Y<J=5+FH z22vCF)2mDx`-GFFh)9HE4K|!#WE*Agv$1~s9fd6ZYMb6&�)(a97T9OE&!;GsW!g zR7BHoN+rM6^=Y`AnslGU-~db=z_>~Ys_cC?2JAr&jPSAPJ*o)a5Su>COd<OaNx=Cc zJdnd7y2hz_HLsXt|HtqdQaLMD@tZJF7YL-u-t}lvw0%9&_<-y~z~V={gn5t3M<srb zMk=*WDZ|n#A2so$bl`zkbi1HWTf=X1kc3NC4AAdmfOrRt-nWJq#`2${D!!o@b~Po{ zf}{R)UIp(^+1WOgj*fip%$Z)T>8W^2yRvKL!#H|?p>qdQ@s2_mUSlm9Q1ipCEn!Ox zVBa`Elh=ff0cJIa2bU1Rv$0(++0L3Gw<hG7;OA6U_NrVUv1Z)nR9TdY3mhtoabpN? zjoygZjXH@2{}J{JqDih&POyJbQ>PP5P$v!4Il%AH;AOoiYek=JQNIQ6z@e`OZs;rT zKk%ud{^Cd~VL<O=B%0n5(E!Cc#GqP1S_c?cwxgHmjnR)ZK-!;x)ZozPj>qjqBXQdT zju^0_k!29pqA^(9DDM?e|MEV>g(&vC??LebYks(_hl-QQ>`3@iWWvI4Kp1Z!kxsgG z3>1j(;R4+5K__&+K7`Y|ta+F(r=OicrC|Fr?>q2VfxK`j)x|Oz*KCwy1rP{zfh*1L z@I6)#-(SMgXCSoHKs@{7*&oloc=p9J7tdTgv+>Nv6PFDY;k0oYR!UeUjli#~fx^Rt zg1fFjao79N^4)X)O8ySId#ej>JL+PSJ_HhZ0qDy{yA*=!6RJ&R2hm|#v`rh0?kC;d zl>CY@KYvc=r4He4KX4>e>vbruG4KoB$5$7hAL#rfU6=>Oh5eI2=q}el4ac3ZjuXdY zwQg<D-=S|tk$PQ^H+Y@6zv6Cj=xPlT9qd{MyT-V6DRIc@=fZ!XGx!t!8}RSs_@{Nm z|Ax-sAG`N|4FAmlbsBws|33$RR%h_@&kmmk=`x(G$Dy>u9DhX1Z!5z&^htHJpN*Rw zF8~lYK5%2=(MjQSM7T>LY5aJ(b+ph9y^iI&jp2Mcy>#b!14>+E=1^t@&#cE`MF+cG z_B<QUZMY1%CCCN);z~6eD>loXvB(bn<sZ?gpqibP%#b}aQ)oeV0j7Ft562r#<KT%H z82BD{oPA{qO(!69($3u<MPyHkD8GVwg1?}9vk}sK@3tZVutGeC2U`-s=0vbD5o|~V z{fS^rBDf+ET%HInO9V-C&>tGE79k2&CW7Vh;E;I~go|U2c)DBZL?-?S=|r$45o}Hb z8xz5XM9`lI^5dNV7W(rJ=osI-W)LRyvIyr=SQp`e6kZ_0BPm=a!ZRrRun3n^_<j*y zO5qVA+@DOM;E;g=>Hn6i2Gu7U)yLCw9gS${`r$N|1RkvsJqBX5=`VIk1umn)0Z3f= z(H6OqE^B)3@1)D|#sVtRT_3sp84YFQY4OLkQj)zv{4LIt;_@dC88lSCo}T&;yb)4E z3`PRfE!5<QCC-}>%A%HV?o+D>wxV!o>c`RO`$SwV?HP0EK8g`}c}$}i5tzsBpcs*u z$8Mk)5t+xXpcs*v$1*8KgyykS#Hhv4FpkHd&=7i(z05CGy_I6|Bd&4(ZIb-j*hw3% zzH$%jCT0uSQv=vG+^&T;ZPv}nME#0-GajM0BM?X2Aw~UPN(0esr-GCaET;te3zo-) zOb0=3`5V>_yJ1iAYR@*$A)@7AHf{~QlBlgVb1pYZt!*auq=MImT!})S<`treSeqVR zj?(bT0G0`6*HVZ6Y#*}{Toe;|1nD*!`on@^GQqq;)6+k2qRya!&hDWfhC#<uC7a<v zRow5lk(>x(ID6ZC@0-yzo9}HR#XI<=giJsRFAs<p57318bPEa@-d8+1*W=lrHyteM zYdmv}XSVSqcvR0Up4eHXw%#Y^7R-JZ5ae_TmM1vAJjU@fa=`))ESN$(kJlj1$j`Xh zu&-Son`zf4!SJxc2$_UM*#mvDHCz;i+if4{gY(K+ePUN`g$Nn&PTypEz_{OPo`V)` zoAE9;oo8pb);A3dR6}wodv}83x}!g_5w1m*y+H(^_G^ekWDmWLuDR#q(oD}kMKBja ziQ8J2@nYXPe+4T-_WXv&FpV%OM7Oze0f7I~kgsPkN}&O3iTfduzMdPlk&tTzn(w05 z_fT-8hUiEQT&U@lZxTo01$G4A5WxlnUll<=f{R742Ei9Za0P<Yh^Ci&c#3s7AS@$u ziwM@A)~OWeivZ>vwGRktt)T!>cLfD95kLh8D%v3>%+yEo-MT^}RCa}C{Fk_K=oKQf zZUq<zDvrh&+-zr$;PDW~<Y^?imTIgNz+HGVt+cPk?m^RzTs#MAtZ;mA;XGhRf5C+f zpcVaT!G-=rkPif<>S=mGHd{#i9b6b=+Tg;Ih*N1&aicNloVD>LAYOfnoQFz5x)(X6 z1}sVJFfZAm5Zm7*eWK}Ii3bRhGo7;noz3?kD$eiI&6?;W6>?od@A;=Y@Dk5uLDK0d zoH-&-1yhKHc;(0}dQU=Qb0$Mzvz~ya#@e|*4rP}Qg%+39CcE$Q{}jR9umpA?sL5)b z9hAlmeMEaf^8`bK_S>zf>+9LGh$ez<cJ_&l`9r;Mio@XZWPCMUcIOM8cFDk(qbQIz zF}!*iLyz~kllSfDBGI6!4|PA3f&b7%X1o0udOs<4Uz~$|=wRz@@T<_B4Te0qE}>UD zK&At(JVB;4M5{;-L8diCE4-!C{$+o%=(0c%|3n&5*lqQpKIm?wJIMIqY^3QaYiL<X z{+C)@N{l|b9-+mD#uSjc=U-6<Zl8P!f^-qc1)}bNc-<j_TW}U?HW5))>vd};alM_* zB8pEX6#_+SX9I}KA5l4_|4h}uSMTB_;P5DTM1oQ}8V?sB*kQgk=tcY!+Jlo=9qC0z zX@~K#_z8P6dqP}u*ghYbr=FYJPYk2$8r&fTmj^a;f}V<)Cgnrt>Y)WI1`<~IBM`tm zHb08@b!a>;#7i~qJG#kUA4+L@nc2N=AW4MlX-$8gTLb!w1VkJ3BH5>|JD{_iJ?A~6 zNw`2fsIe`PbWjybr7x^hpU7Pyj0nGTn6~wgR7ukr2jRQu2Fx(}1%a>AV0v%VqyQXl zSgD3y;&q|!qI?EOzOV~#UGq2JfN3z5<Tdh@7UYN_oMI$xPo|&ozDy56MCcT5wh(DB zd?$dwJKWmJi?tby&pMoJ7#><FCiWM9g5HG2{{X%5TG!8`w+qAhlk{GDPp9<m&FlU@ zp?6*qy~RvFW(XmQ#?C<Kj^{_AO7&!Z<#9-A>th7RgcpYs{vks@L;Vwji}$NZ7BFUO z_@v?Ns_7Lp-pTo0^#W6exVb|-qeC1TE&(6)vl4OfK4{EdfB@)9CWMOg5PZJ(j)$56 zk4GCZDd62H(1Gkn_aFJ)V3)=d{)B`;D9x7Fr8DkN=5MZ_3C3(ur6WBI{vT#`ub~+* z#RUy{Aqa9uH{cVjh)tlu3T_XgfTlk+BQ$CmA%t1c+0&T0NMS|HVv@uQ+=f_mvcJsV zXSeA?&F&h};CZ+O(XtyVO!m+#&lvc4qveT4(SuL_gBrz+g0koLC@31H*Ut^qWzP$g zT*1Ne0{9Q{xILh+A^SXZtwP2mUZD>zqBt+KC}ywI^_MUY7E#M6z-1LBu$1A}|5Kln z^*@x@a|KrHyl%PQ2yq8bWUxVm-I1Fypp!NI)(2+td3(^s&Rn~$;O-o}$XX25PvdRb zjTe5|Q6<{wZj)SHSu@|52Nu+^FkPzKo`2)-6XTL$>aHF4TF1s4^O(i2<Nk$XUFY6s zE6Mt`T{_P1J&Nw5*=IhA)3t-Hosrvwe-eqIi^<e+t&dzWz4{#*M8SZe$uOs>u(OAI z{(%(d8ypUwX5%^*wI2cf&>Md7du0C~fGw`#i>|<r_DlBSx8L|tI5wZe=6g8*PFi-0 zHAdtDO&>WPdnrVYuc9LdV!edJR&;3^H~if-^Ei86PXfWOQN-<ejiEKK(>=D|q6gQ6 zHvxTOxcK@`UR}8wm0<7&%Xw{d4|XfIS$r2QgF=^AXLQF4y8L1o0O7v#MRfceFVdmN zcQB?<<a`wI)}X2qtp~R5Q*gD<L~o3B8nB_22i@ftx;}=D?70hI;w1pwvKvy)#UX)T ztQ*@y2VWCbuo<=Bx^C%;<L2)D3%cQ6>>xgtV2VR3-2|uR;y=@J((6~=L&I2V?1r5X z{t&@v9d7?N7O)G~QED|(?~LL<*F+AZzI-Jpl7u@=lAMyW4HUdc0Fgu`xG}M0tuH4s zMg<XpVM?SY9i2H<ajXpy=O9S${LRKad9r6H+U3>UHQc%u_vgvpeuU2@JQK?`Zfi#_ z!n@Ob%#{_Z0H3eoQplQ6-lIlvYZ}x@vctAL|5SW4o@mTY+4UO_PNVu(Ft4?dizk=_ z*5AXJx%5nQZ$+s3RpZur*|YBg0N1CjuwsR^q%NuW;8^iDLsL+k#B?>vCY87%R$_VR zZllCvl#o~BWu!MDcWJJ1B)7qem^#6(WU!(fQbPS=6&{4x@9AwMZDw8mi~He54qb^w z`}wS*ni7SEk{4Zvh|2zx3_#0~@QsMk67p{VVx;0s?sCymBhiWjrx$Wmwx$^m^nFty z^)i>#H3+a$W&1)eKtQQeRuc{JN~+H)T14?>D6V6fB}!vqR%{f`O)h*u6rM|kGue`F zfM2XisGm_`VRD6#sBn)_p(VM(kFN-HCL~w*MpU@msIWP?!e*nw-N_YNMTJ&HpyW@k z@CTzpP*jNeMVAkYDgmR)+T<!Tj4H1tsyu0C&$o#xzu{Fhwqymb^V|%0g}8mFye|53 zX$JAjld%6+H71IX??gCF*6@i__8jX0HkbCOY5z$y#Dge<2lW>Z>IEJGGcPq(==0>3 zW0*1PD|tcL?FRs8l<-CHoftfUw_yS;xPf>;LFoBAcrL68LPlfH(?lnGZo>bV+t(4V zA^IKu*Vt=>r~_*xU;6t6oC$pC?@%CxdHDeQ(%&+ogd`@M8t5~!Z#4b688BABEQN;h z*h6H(`d?*Xe69n=%m1Q=?Y=&?dzk4<O@Ero>zr>w=NWaD8+B~3#5DaSs&Efe_aV%A zalO8TnhkxlR8W|98g=V>n?4sMUZm26Ox>HQL_g4<r+z8<AIJ+If_{F~{~a_#^Ay^? zz)R7*n|Mj;H4-Yg{DC_bg|^q@YGKoPV(5a;lknnSihCVbV6H3O>u|3NG#w1Eq5a8J zgG=MS@fdrOY|P%#Mq!509r-x`6JEe!J!f{W{WUEmQsgDI^6G=^p!=W%jezU!<UDIN ze&uqWcMfpHW3qUR6psS&=r10*;*lvHDdN$JelYK0`rk)k_pwy=S{nkgcQ~+TtB7nd z8C?J+u!<^Tls~?UG{Zmz8wPag`!%l<VVy(Nyc1<ZVR#7hg?MXCPojvC5dJ%2An2mW zg7IEOlnO02o-Y_r51wRQ84`fIJ!myYOZaEmYn;7>UbC{3n*JYr@yFgHeg{**_At=2 zLtXtDhcSWJ1GeY~IL7M8|99!<Xum7kx9eQGRGn)`orBeM4n;6mWCWph48lmyAMiA) z7}@<Pc^8rea{=rM96LA*SU75K)bs^2F#BFiGYO`S#Q|>l;Mx`3%J(8*dElPA0?%*- z{xf9K!M@S0m>Jr-Jeh+tCHO8!KbTE*w?Ry3i^fYsf@|d;!HVTd5Kb#GRp2%DXbZI! zE`*G0L0$$t1b2ZU^SuF|IzY;XJoDo)i32#<V{yP{0Crvockc}NJ|Lk5z&hN9_qXB$ zs=O_QdjTR`#`40yBPYfos1y3(_rw$^B706C%U##TAUd3ZsKtN7L6+Z)TjXVYhY2=z z97mu_Epv3oprYOP9#vYm3@PyF(04gXZ$(glhUVwr4#o&%Vu4S4&9C$MgEv{p@r0Gl zr*T&$iq7IiL!TI0V0ya}>7#fq=DCK@e=QbzLM624H$e30x>{z1_dNzM{aPyCKeU#2 zQubWh9$3!=u!#n+qwp$|qZ6Mnur8K8ZzH-cmv<=``sV=Zns*skn2)J-DJ)751xUX< z2-VEYXQ<H^D4LD*MHGN~B?(3JSwvO6FG5cm8KjaCebk7O*dRLDh?2A*dZQ8LvxG1G zN+Y^L<X&P#-$Yb&y#TBb)bv$^Dccx&@nsknaLf3XB2H$(1?W}aAB0m{(7PNDbP()9 zR1;Nwpa5s4A-@$hTEKW!NYs}Q3|xDYj;WCcbsx1-sh*F|HW>hX_Vc?5Cy=4h|6!2- z6=L65DPSm?!M(tt-M<m-%!{`}P|*cyqso5s#eJmmy{F89N(4`bpf4dZhJI%NxdlKp zU5t~?JFVgD!o^jNhN{ez4dr`N%lG|g-dLHL1V~>+ln*TirHDX3U{sTG4Mg=Nekyd6 z(adHPB32O;Fh~PJTyizhQ})ax-R$RE#pDQ^b2D)d&L1tQ1Qa+}JD|wMn6qV%3o5ij z25`SbW8P}iDjx{A=L2psa{4L)s4pSz2>oe^=)p}~SUpIh`R#Ow*?>qSrW=I4MC4?M zVqA1?`-BQ!5)eP_(t!nVZIX{#Za4NUsIMYM4B37ss{IAk&^%!;uTIJL5=wNZj4?cL zTXTBoKFTn7G>%JPuSt_|i!V78jSdDNs8J3D1LYlxNO%aE&^aGR{fs{cL3Z6II4Q?s zH(?3&RQD05pWZ@xQVZXpM5tJ(0&nCbV1LDd(4?BaAF~u+V{8uHP)(iV8mt}#@aDWw z@B(qZB3Y9teF|405?B3!icZ?B`JRzNf5T3hm>5Wl%AWZ!9<U1E?d(IAE4PTa0G1kL zEarG{m8&~8*PF}+3-Gq?O|<nJqph1_ZQ=YFm~T+LIc{2b&Wkm7t!T~$jX@XSV*W@m zTKpDvF@}lCw`&m^!sp9Is^+_B4`w0#0x>?JON^#hqGEgmeZCw~bX9WEZ(bA>VeO0N zilQ$j7Y!IiA8cQ=k0|<Za?#%zMQ>?ew67>ykX-apqo^50_1Aa_e(n-qN^69a21DI% zij7ZyRF^%ULX2oW{0j(o8p%F1IEEoJybAx(oIMSo={X5c!`_Io2fjoWTEjJ~FjAHG zNde2An^DvOiwb+J<jNw+HTGlSq8<qR#nQsrkIW@k4-|{J&9IHjEm+z6z`ya$K{ww~ z1;pWq*>oJpBK}i&WW;z|MUd8#FlR9v;~-=B8e}BT=K->=*#}8Uk$X7T9=<U~6~VPZ z!jSW85(B+&%o%SIl)O)MZZbeuP?dU<l*G8Jh`B<u4Fy9-WCXuycmDBtDWy~na_%GA zgo}|$eFy{bxJtcx5Af#J74aiJKJ^{}M7Qfuif{wA!2-+%kS+Lgel(R`8{{h;N(s}J zYodj?wG^gBW1?95?uBZr1?OIiLW=tXShij+3&s>5*l*HJq+4l10%|UtQWlecP|fCu zgkM41NTdRM1=9nNjJW12;L_^5L6BMZwQ!ZCUWy|^Z}NH~#g~Bv3ZL|pypQ1r<O(vB zifVDeGwSO0OQB8p!b;D&%qVy{pTP{&opbaIxC4M5X%(H*hx91v!a;lh%I0G9sF(U{ zl!(n-y7vxeZ_f{!&L>i8K}`P?AR6P#PAC+)Jx)*ol5tSsm#H{4Mnbmedfs(Tz!-g! zOXE~FG~#W>uwoZge~-$BMo_&VCp@(p6DyePC46|Gn4K1|H@W=XYsAv-SMa~{6&>7< zaK8IiwE|1{l%kE1G&~@wFyEsM?zVIX`(o~;ny=@}G%yJ>{XODee0oFYb}k*QNDtLt z2h;OCT4&;lNWW@sb9ToSgpj|ZQe=ire-NY}k_k3&-ie)VEF<g4l}w1S&$#3Nni%S# zDn@+egquv*uA#po0WJV7FD)YT#DpK3Qx@`IT$#t+VS}uVu8Zi}yNdPXEKAz74*ifv zROaXltTTbN5Hz%Son<$jMqk1Qf#zHN+3x%nxgMbqDvEN^y8OD*W`q1;vh(qB3M%&z zl`+Q#_NG(KY-+(A`X|-2F6Pxf!#Vw>;myQ2$w=q|D-u|N)zc!OKN7;PqjUj&Umc7_ zGjS}G!lUqf3%{ziX!HfdOYwUKKl*6tLi|?a7xRzD{D-ukN%{|45TsD~y1tU!IDEHK z%dhk!Rd&-yV)^!qsgg#4d-q-WRL`!@fg|H+=)@wRX?$3+HgqG386O<HFl^?PM;iY9 zC>+|NLE*)|+F02f5FZ3O1UN>`Ug0gkNbD!Z{nrN){_BeQ2gr_eO(t-0Z!V4qh^3MN z@K14ovgbJz*R2PHLpMiM>*&wDfbRz+J9TgI?tT{)p*2-dP~gr*Mx=WCAvOFfp4By& zf*C3$g4O1TxGxupnDNA3C*KVc8?){F^Re*|`vDc-5Y6yWNgMk&#>cK-oimc87{^86 z)m4I4LI?38e9xtlyx6cbs)(a9su+Eon17<ThCIoZk8T<84iN;OK@0`G0{tppr_$lC zT1sUqCk29DJMbro5yV?H9#JtM4?Rz7Bbr(MatVp%Kl&m|Wvd3_(HJS;FJaXmvHN%p z%kCI|>0W}s3GKW?_YrjZ9?}vDRH{Aw<er!2j-@V8i@Yh?&^`<lF)8>h8^X7vIYCAm zqF@EF3#gJ}=quU#3b**~9na4+V>unYcVPH=qyZsUtrGao#J4D9;7Yj6#n=7P?*+_z zN-|bp2OW3yx$E0%2xO!if~RT<(0_h~BelvZG=RdEi@e%ei*F#g+hoT3Brm#@_}SOf z3Rqf67Mv6t@r{JKa4HQMch^T6s9(Wyg5U?nks84?T*Ab6tn^B9*0M^vdLi6^GNJ}W zE1{mkbkk`fDf3^cDd9i0OG^0;NxyEFRL~1eElAWVhjS}3I}yL~KE#U?asMR5M<n7Y z^AW#05mzyxMs7;P%fauFUWs_hTq%WAZ;?5C6bvr<F0Xdf1;QrgBbpxxn4LF@3M0`o z;xC<N;5*^)(cuGU$0S$(U^!hxL79;|=tFQtW>!hXMLLpGB3FtqiBaTYeBwJp#6iN8 zNEgv?m7}gPjPEOP&|O9QPo~5B8d(78XugOBE29candn}=fft!!s5~BXPSh*OvCS&S zqh+dP3zk!mW^IbzA)*;Z^m-A6$C>Bmh-j7(?J1(P8HT#dM=D#bdaO<<|3W%q4M?sj zF?D;MUfF_X2UXH`g6p0n>C=2;{a8nkz=Zw@b41ACm1x2s;V~H9<lPkXeE_)9AFG^< zP-K_^X(XyALs|*bQ$T9Ikc8dG3*b6**+cxBfQ1Omd=3onbI6{TDb5vZl5QA^X+=P* z0yKe_&Q*zTWK7uY>GZBbSC@le8xS;LCA5nv4nZRbUdri2T?o*Dz2<HKF|si}ArYfh z$A-?(`>%=^dJ*hQ36<0da9oz^x^ZR$U4|cdTA&|or~=-EaV6h3P3-rDGYm2rU7;yK zbR|FD+I-#`<#f{8X<flhuFkYaH*}}gghDut&YzXXI&vjISG`8ErLQ8^(0ud#AzDui zY^M6ICxYetv!o!0yN2_G>|F#CROcfpXcsJ}3>sj)x&{w;T4e7y6f&4n_6(*P)toV_ zi81jFMx^kgM}j3-HMJ7HkyjGtBfi-;GNFoTj>o)5LhT-y>gvvgEIbwE2~E9{#tohZ zE*Sc9l6K4P{K^#oTKX%?ZZ&^7ozlf|JNzH%j`#0ypqDDbf)Xc&FXJbMXXFZaFt1|= zhN(>Ayztc_YrIJEabc7SCY=^`pXlm(jlal5N)~26;idUB%pggxLi_;VHMW#%Fb~NK z7r<R?6vUp6mlOde^!R=|oiYzWAH%ejJ)^0tvCPtpRhQcj@7f6SJ<MaNX{Bj-uK6C{ z;@jE~woAAX`aMD+<lQV5Q|AK$DB!L)tN5bkp9Cp5^%y6b$~eJPK}y&Q-xOi;qW2iT zgF_dS)v{|aqTQI!#5>k=i4i436}hh)(UY(i`N@Z-ebJ3<NgJZb^%%Ldzhc=ImH@F@ ze{C|VvgWJloQiwD#Q3I-vq)e@K9^MwPzMh1`CRsxpg46eB}M%X4CF9h#%g+JNnsxI z@-CP>@;+DtNGWqK58n;?iXtWyY3ZT_Jt<U#{@81M073Ur<3|GJvUe{MF_Ykn$_U__ z61)ahm)R&_$J<QoH8VmEeI-9DPN3!(yzgKuQ|1xhZByJe#E!6S{C3=1xE8?_=Lj;- z660xz<O~2KZ){J<I*n`<Hn()INZqS2(~C+J+i@`lSMoQP)}xnrv2vsPy@99;KgZSg z4kc6ae%Oh|qEW+};)DsDxr8iuymgMITS6-@hltUaDuJMov7R=_7@Z1<D%^@TBrJR$ zfYGk_OS~6}UOOQyzMMbc+IXU3Hg%o;Y(kGu6`gUg4?=fB!Qizwub&SBUU0w$jDfMv z@AzV#%Lql;^Jm~gJ+y2vs3v=IkfbjmXbkV)XRVF~266c={W>fm3zvt_y*Snd=K>|l z4+(|uLV5SG?78Fc$=JPJhxxKFbo=n)9AAlhHvr#E!k0A2Fx}I-0#EFt5rJ&XlervO z3VR{58c*tu>sDx!Ok~=bHv~S7JmWrgx4b9^`Xkn~>>UYUM8S2yDkZ#{xLZ^*7Wxj~ z%JRhkXuyE*`&P{XOd9cDEf6DK*o{V<QZd}G$JG)zUMvK$4BUWfvrs@^LeduM{fwyj z8W#b|!0{#wJ)vpW`6fdl^W+hEiLiKM8c1twlfiNV5(#Q(=hFhxTtFfTQFLx%>OLyd z6te3}hyrSUBODO2yDxg1=sSJ!s2%r&#~_7h-wU5$5oAajgk~TY8v>$MCquA|#5QRN zl8BgttYjk2BeX!o9rHy8;6?!vDfO&GbfSR1gp^Wf&r_miITWGprHnyduAT%PokQ@> zuD*n@W}fqD3_-voT|`akOGtr*Mj1HV!68uw1etB;<e_D-kTe`XG$ajz7P%pod^w-w zh#<7yK+Xj*cAk9_kT_?@Cq4u)_c@*J_eg1_I3G16%K4DMjQjiWwl^b1sK3DVAmggd z5G`ju`Xp4sn8rCxSBm6RzTPRlyowiPN1OV*6RjV#f>c;(B)0w%ZSz@I_IwMT1*HDK zB3esr52_xC((=OFpf|#s@!vhZmDdpi7P1$vD<|sd+>s6sR)Nju@wcMGn5nL-M3#P+ zJDOT{x1p?XI^AJNCte)ImxQqR!uzxs?Hz2R#sYZ7I5ZhHE8bDYoAtt0d=Tguq>w#3 zF(!f>TvPK2p0J@Ybg(an`})xBupsw72fh>dN0`*2^jfaab>3|??>l?i)aE&0F+1Dq zV24BhSb`<_vj7b_Bc{-Ni+c#J;Od2<OR1ZTy9k+w#{^(5$=RTk-M7;HDhfdj2oEJ~ zZLA`O37uz%^p>CI<2uw4e9V<W)?C5IeqNI@63QUKz%gAgcch^N1O%=Gwmm5zECd9? zSg)p$*L_r^>1zxN>45x$W%&lr%HBtRBsyrAI3gFv6X%nXK_b_M7%)sx;OFq&C~Mcb z3WW_qq_g=J4<vjb>H`I9h*^rhndE!5l~}{ZULD9;;{x|_oT%p*;KNU4gX1%r(BJOk zr*p_Bm~!czi$O4KZLC>v$l$It;&pK*`Ckw&FoPH%AvU_&fJxFA+!uO~#sU4P?=Z(W z%LrF4ot}8~V$RXzD%Q<~J`;{w^OEv=*ka_^;=Kr|)_pv8t`iPg7-pn~$qsNI`#<cx zdqC7x`agc&GlR@<M^RZY8B8}uv!FC_vvr1xav3fHmbuk{2r_cNm6jI}O$jkvyW6f< zZmXzen{Ci`!E(#W%uCzar;B*0Agr{t(#rV0o^#F{hG9Va?C<mYi#MG2InO!IdCqg5 z^PKxR@A30p{Tv+KIa$klA|dp6{NB9jZ7C-R<3>^!fV6Ur-^PMYq9d<;k1lZFI{aJs zx<prMD%7*%#82Q;bb|-r6#0^!|9_i693@Z<s{fy{Y$l4=f}+EC2y0VToD8MqP-?(x z#p?H(3<v;&&^fSh0<gjdL$gZVs>7Xnn&=Nl`J={BGlUZ(n5tWpcRNQ&A3ogbJ>KHe zDpVgD?6rSXE~h}Ns<9W-5rh<YLyKB~Z9xpHe#B9Q4lOSL9FV>Z=vYU}d~?+j#0HLR zHs)X(?^t^>LP3~<0M@?NzEq{Yat~U=nwNQ`iZN6$YSZuK*dsW#@#_3$B_fN$1Pk^u zNDRsi8lo1vjSNObrAEX|IWovJW9s-?8cvHMw(kqC-?)l`t#yA1gH>6=XW#T4KGEZI z5ks23E8jq-AY|WF9dMwdr)B^HG<S{~SAx!dQN;H+PF**urOxX`<)hkt_*pr_(fU#P zL-+-zQ7xu@htAjP(05p5=W(Rt9VsU@&tgtTLom_ZabBM4MxssxDN=0{%iK%$m53HO zZqMhMb~+9!rfoMqLa1dQcNSt@&xY<3)*NBYf~7KFksM#w!#Mb!FzUtHQ4Sn_iJll5 zbyatSD|$zGQ5n_Jlb^3FxNQY#KynK(R$4ih=B!wg*JIK#mL|Tjb!*2GV<^p-+BlsB zASrNdoIV!Vq{K0`W-s!lb-CI&KXQ_oYvTfv>UNB!l@^RMtV$<Zz_G1Fk(Np}(=fAs zH^+>x&lp=`sd;HEA6EFTyc<YT<KvM=Gj=;LTZu$T$Jf6!whGh87sF}BR{K1aep2m$ z_NQs)UB^+-gHo4j>hN806ViyocV22H!LjPCB>dE#<;@zN2rm;l0KV!lJ^|so@>6)! z&qcEst;FK1J+GoI<wqW@p>N_=C5flr`f&*b)mK(oryjV=C$7HYld8C>&r?mkvpnMa z|5$vBW6qV3wf0;UV&M09m%W})KkB($-@;Y`S`+GZyXaSXU#AzoNmK9|dGF)izJ+fQ z@D7iF;C+O11UPT!`Yw<8t_pAKcMWkhZ{XKmf2jOpeC>}(Qx8^*Ppn_^eo2h!a6)~> zzp4=Tc_a);xYKtn@$tZ#H}Tb!H}qX^S9V%VbtJj?`sc_>Ql5K+pt?kCV$H6C=32Va z!#WNlHWh@}=7_?lE(qe=!xh)YSMQ}e4VIc#cMJBEFnh<(AY*KUkAt)y$G!>8^+?T0 zlXxk7+UbSiv4{?TI=elGr<5@^taBmVPW?N)MK^(U6P(a!AZ>|V`BkNV4WHYyN}LCB z@A&j<3<1QTv%*vM347qzJ<#mf35YU7opc>n3v^#pG?Xo<^JLx_p~s}j<+&+Tx%f^2 zZFmLL?!$f;Z6-MGcPW@*ceh|-W#%70QuEsR2Fz=?&_TS?BNl3E*YMSz=|~gdPr&>c z<}sLuVE*XY(bY8!=Jod8=2O6AnlE8aBHRt}17Rk>{2nG5<_?%5m}M~QVEzpAG|XP$ ztL7EJkzaOo-2#&f69H2Rvl3>5gw^{;;`a`%^^<Qw&ieE>bYBD?Ncz$JuIsr-aB1Wr ztMaY5FOqZsQ_5iu{U7xriw=q|sq(ejef+8l)~Sv_Mqm%W<Jn`*!%c?#)bY8x-^1@5 z;r_}Ruw?D${>r?*_g7xV?}m2X=)_O^d+?OMpG^D(p5lGr?#`gz_gNY~lYBqc>Bh4P zC80}7a$Bll6ZqT>vlr%ln6ohdk%rve@)W<PN7poQdj*-eOJw3>$bmGlPLJCVdw!|8 z;C5FsHMcB2+Y9$_E_C4|TVJ%_jq5P#PU4}?iB9E#yFj>&ix2O7-+r8DgD&5E%=pG* z#S{2AFYeBE-)l#DPlGQMN7oq`)E92Z?JRHgzRet5JL5Z_?l@~(6RGoEeG6(3@2hKY z#LjnR96)uEei$x((?UdC*IU-9XYs>B2z#@N8e7WMn+{jAQqkm8HuKIh5N*b)a~PJ! z*G;J#Qgfc>O!ZgLr_wv!a~rrPHW|;m`>uYE#;)03b#cmvB$}@FWAC6K(av<W4~O1i z7;~s&J12w>kFKZo%ZhX5xFA7$<@9Y*WC4eA-K}-oh|8F|^|W$}uWQoMZQY}Eji9cj zo!&R&<E3|a(Y4dcT{SIqwwqOW#??Q|FI>QH)#1t^b?fPPN9?MPD&1r19;H1IoG|cE zjvb<(Z2PhEs@SP-R}ROo8CKBmsT_tmf<vn{ubDf&x%-3{fp44R>M9$N%swl932D_= z7(yob#(owHjW~}X3#oft-K~Dssn1fk>3eS#JP?S_z4)&DfC6i=WzLTwRJM{hk020& zSfY-m+V8Q`F=_b4)e+|HyL?xkMm#k<9^b{s)RS%}VeoCOJ;_fB#I{nnwXTu()e#?c z&~g_=?%36xenqB3+F)NzyJEJQQb!F>2!+9~N=6)}kK5R3mRYx6sL9(_Ou$CJS*`ZR zD4>oXFuJ3pI^*~|s`kf@$uzx^!^8HbyzUI$zN;dn+y6EA3+DN*qP6Z3VxIFt!umIO zfjaE7;!9B0>|qgaC1EvxosjQ6dTe=Wpr*Lu9pCjX)?D$cwAT0VN!lZE_(`m|sc%$x z)J(<Y{P?Ngm3!giaP3|1tomsA$xdJE)bH>51{d_sTeY!`o#+ogMSttZKW4TP2@*vc z;=hjg(|P<)%Du6SRP$zF%+y0mPIS8AH)8MnnrD<E!_!*Zwlo;u>gG3Zv8+JfCXCZA z*@LmMZVx6>NmKWf`9N79@uXIK<0roMKS@(R=HHaUFNd7OudDN-tKCIICf|GS$FT9u z*asj991tk>z5<!d^$i<7PS{rvjL!@1!gmos@b)#hh|!Ag>-ny@1@X|RSWTbOAmsC0 z-+9M#eQ!IF>$~I>j+{vEH{iVo-mk&C^;_RN+I&qpjWqn`no;{koaq3?R?%?fnb2<C z`)!=>)kkTz_g<XohdAXJzJF-NB8}D8`UQUU8`g1JfrCm}Yd^;VuAW+mH&A0KXYvXt zng|0}ti-meFSSf`74#WudiuQzdN_xg2z2Mx`oi~pS3Ut`^*Si+L8})so8iwo-GGPF z)}q}>B)Zu;v^z(;+NiZz@Fs6<KI(`-2zh+)3HNxrGo0@VaL&JOPd!GyzAHU}RkQSc zR?*anoBmzxd2b2-|DaTmPEDk{@5(RW<`Wk=#*v%ED?cKfnr2dE=n@njr!m&hur0Q3 zD<8`#@5WF4q%5Ik=>x1XhKdmqq>{cKEAA-iD{h4C8<x}PyK*&XpnM-$)mk6Gnn8m3 z#vD`&ye1xXtRst~%w7{W^$=750GjdmIy2_>k5T%R8F5LGmkyfneRTN9ca;gK-4)Tm z1?{^sz|nIoJgIhq!8m+*t#+T))E0+d4|s8VlX&R2Vh?>;^O_&D6=^Z#3Lg#GmsHzH zxyivgJLzqqu&*H4cSQmgVLEoIoNb|4SgC=CF`jM3z?9Z%IDfS~h~}3#bBg0)x$~(6 zDk=rf!fyrq1c$AhLo^en<NPB8`{G)9xIEsAOMDS#P14j)tei`?SFzp<Zt>B{Ft^va zI}AhoFt-<k`>5~g223hY<Zm)`Q)tJ(A_m^%JtSbvqUieK9ETyOxLDKquLl1MU0uO2 zEf{~Q=HKYI$q;OZD7M1f4YLNO83vzJ;)dM)_3x2MwQu0#8T6}dyV0@Xz6BqF9BHeK z-9lH##mKz&;E{IIw-~MCChY9}v8%9h@3su<!g0Q_ZckhdyMFjR0vuiku;#)LRG!$E z>NK^n&96{aeWTBk=6_lzG(Uw@qZVRYx)t9D#P+>gB%)Is^wFnqf(|FqP*_-E#1+}P z*)O%bWs8WUX!z_uYQk3BT#l;MZAK42HTM1T1vN`|)5$q%HlyCuZ6<N@%bI&|G)2D$ zpOvxr#=c>#?ZA(q?Z+k>&hVj?;(G^l){TA+p?*>|ej<>T-xuIl=SkOJCn5^k_e!+1 z_--e_-i$T27vS0$q0*#BvH&9VHJYeeuO|ctNdER+%|O5}J|DgD_WeY!{04DeOQnb3 z{y<(2wtvhkPsMaxr^OEt(oR_yUFb!uGJJ!=jMfIcbnT6~F=vZ<X_r>fI&mmber^W& z?ewOXo?cqK#4kKYI;d68`jI-m#;>Jf91vG~27^7^=EqjI<rQiPD{i3O*SNa)Oum{< zm1j8o(eYSouas3jvz^Z9VASD3A0X=fRq5_wr{n%0r6<2HkcscARE~%8+!)Cl-3pJ0 z!|i)PX-|6yef*$`Bu4l&_WzGVB(r0rk?ns%6ioMV5Ra?wB3vlJ9EFe6#rGJ~<El?T z0$RPP{AhAWdR+VUM5X?D3?jOa$7r4*POs8{HgaEFtrj$^_YxiP@ea|yJLaeTBm$uf z{Pqy#Aja`~C=jn0OY@$+&SFG!S`mWr#T?8*sF|u5s(#L&ic$w!ozvoLe$Of<T2T?P zl*30!6&`R=XEnSWM?B*wGR|IOu5Ib^!{E6Rw-gZ@qh~ZPvgFkn3lS4aQ~5bo(<>ep z--d_-CvR0iXG=IIhrr339khJkHSW_etW1q-<L?vveTu(7=WqHU`>t_c^7m=}{+hqf z@b|a;eU87s=kN3U{Ud+>%-_H8H$zEujnnYAj=zWCjn1e3ipfB*q<4)Q2fHDUJUc!I zV|kdEvyP9+brrb|lWQ`$_K_=^T(6KTg<Ld8%e$RiP2|caS0lL=k?SFHts>W2a?#ds z2b}`VYa|!RA&-_QI*Q2kPjaE7=*l}puDRrDBUdW9z9AP~B*~-Q{*Gzn@_{CGTt_ZC z=-m-UuF2#Y4HvN7eGH?5hYpXNenZ6AE5}bPxog?tg8X?oaVaxUCFkDW_Qls7KmYXY zcSnzXaA@!AZ@=5{@Sh)DTeo7>)@PpDy!*KqUw*Uotpgu@{IA1Z=g)qB^3+#fzObw1 zmF+wJ^2GgXs_)(Kz@Hww%4oXg#%YtU3kmceq1AbN+>(0h9f{W1sN%e=-13U0ch|04 zUG?A}H$MLC-(PLs+4SU=3%~qu=Cc!>r}w<^-o8)%=g9l^q6L|iW%n$Zb+c_wQbKgh zZ$^*wbJKWwh5q*1u$z8&{iNi0^USo_xBcPH(nZS`7S7N9{nYR&W5!)QVThvl4Z0#= z*wfn@|N6J*U;4*G>mS*4U;WCOPd_~P@7Mmh|DDf|w}12F#dH6G1ejYDT1FVG=dobe zqhZqtF@LzPhq(c6ELyXva6=E+MA%osjDb5Fb}sA!7(3ilq)TDn1ycrhD$H!SZ7_4; zPK2Ed8XC>zE4Y>Eiyao4B*q^}uHw>+Woq_od?k<=g;qHX}HSAL`$Kh^-{TJBJ zz%;@A57@83-VO6C+#6sXg8OlpN8w%ryB_vxm=$o>R5OMf3T!P*E!>a5{uAtnVdz=` zo%DGg?pI-GY`Gow)3CR|Y=*lH_Ghraf%y{dpJ4w2o93ox;XVTM0o)(Md<Zwqir<Be zITw2kZZk|Q+$k^#aQ^}J9k4TCX2D$!b0^$OU>3uj2fGmV0+@MlUkUrSu&;(O!5s<v zCfHM8XffUoW;om-FhOv8!lo*rgHhnt)-X0i%a|980q#K9SHK<#GZb#R3OyO_=`g>8 zdjjlhV2_0fg*y{=4(wu>g>c^kdl~Esm{PdYVQz-|Hke!Cj)R>9dnQa2+^sPGg!?_1 zx8eQ>_NTDlhdBiIe_+0c`)8O7aMR(puV8-xa{}%sVLt_X2h29O>0@s%!+rtgZ*Vuj zJP7wD82ZKWI@s%AuY{?Fy9%A@Dk#GJF!#Z|5%!;9KLE2H?&o0s4);qiEpTszy%Y9d zVQ30-687h?Ps4P;eIE8j*gwF03->{of5CkW=6~RR2lfHjdtvs#9St)BZYxYY+;d>x z4*M3EG`LG(D&bxZb2r@iu!~^NhslE52zwmtYhmaM6gR^DJ#1QTkAQm^%m}zg!Tbhp z`mBLBY<Cz9+}}+7@t3G;KA(=NAfNDPlzOZR37h=r36G`0q@#ft`Jr*u&b4MmM`u}c zjqs-_4w*n{s7)a}H<+<7RWL>vvowT@MwvfGxXGAd^e{w2b!Wm2_2s4rHic7vZH7hu zBjG`Q#!DE&b%!C^zd!<*sddu@IX(m+n|LN%qDeezVAOER3mIRS5a~}a;gg)mribEC zTr*6sN71?I4PM^AbcsL6IC>!Y_liqEe9ZNZew3c0iMZzaYr<JsPHs+FPEmG_vA{lW zhSd^n<o?F%!XvH^pM2d7EY*^h5uXvCk{lajON)<=?c;GBi%v;S&#)wCu$yDkqAVHl zNo+>^oY)v<O^s&p$uY61v3Mca8apGymL4Ay%hKX!#z|*Ve2nm$k!DGXwI$C^ii%CM zW!#z?YjgBrj(`YGw<M)n)fg;2BQ4gF6rVgJ1sul2#3#>Wmef>hd^8wJNoMJ>v56U$ zC~GXcIVCMBKHV0bl9WVDMbC~+kBg1XV5#xZ8MD)3SxQA-P8qxYx<%JtXDqQV$|)!} zUX^Pv$T8Zpi;J!@hNULYG!_>XEH(*DV|N&fF1|CT%ovtiR$NqJQlWWS+4&}B&B@9w z$f+=vWG%>HNjdZFS;nxOYZhE%EXbOdQ(!E&&(ARy=Nj?Z211>0%qpv}msea{K<<*9 zvfSdb!kn^e%Zm$&;ms@}v^xN470s{At|%^JQCUUvuT3e-&dVvUD9b`XVM%d0@?%|G zX3r*)6*-G4jCYmUE8v-ylU-ak9|H-awKzMg!d_g&Vk*lBE>lBP51CdLG=(J<-)Yae z_D=9zY%I?%%gHG+W@nXDRF>s1i*a6=eL-G@F&nJHV?M-Fp2y+~3Mz>oo&;x6WYAbp zyr8&ZaY+tKt(;c?Ok^^>qH?~yxF;k!W@3!Rm|dA;L@-2H2ujAhtUGgzSw@o2M0*kJ zq6HOsB*Cl-@&v|p#&YDLXnr|!Cg2o_)0>xL%(*iMrD~jSztdiBpNI0Ex7av2GSXO{ zRajDxQ_fs+pr%$_lw(Bxvh$5$P#?ipaV2TNrML%{j9FA!I1l<0F(up>7QV=0F*zog zwb)ox+?{Wcl#CGGCy`#kYW^Z7PMvBj=JfkS;36STigR<zRT*D~Oq_Ek68@D$dIT$? zI~1^^c<n{=a~2s(itR-e4uauPt}2I`m7&lDj+Bd<@o=8&K6w_2i5UMS$BxOC3k9_o zp<-l}b1jNsN%2XsM$&U5Y5~<R&KuOTA`99}t%<P&{uNoIcb4?%_;_P>UKaETwX~eH z;kxjN;fto^nArRr)Hr(yRis|DP*`_n71-w+XJ^cq7|Ez5x7kFSXp4!BPKiOInjULO zi;lC+NJ+CL#b#JyEEyKph-gV;E`j1eOSH`Cw<bpqK#e204oB}`OPL{=b&ZlTbEYje zEiEO@bucyV1BF|nQqnTeA-R-FQfyL6+O0N=)tVyuih(H2PL5ATZ)mZ`&+U&MAs{oB zjM?e7ltkBQI^xVuPM@8c${9qbl$>FSPmb*;pN`SulWztWF}7$h9%YG6OuuwWzbdDW zX>rlpQqYg1TeZ!IM=$D9l#X#MR??zdZR9tgytuMSc~So3lV|rs-VyUMl*SRAYk+H} zx$<11yc}^ZrH7J~L$SI}HzU?+y_B9f;tY_kBibd?wZ<mT%!s>G%Du4$NV_-UB~!m8 zEj}YwO?=?u?u9x)0SfJuVz;KGqxSXN7WKl7LMs;sCGD@e^+Fb{Ty$ErEh#=d$&!KJ z?{rxQdPSO@jNvnyN{l;^XDDP6E1M_B;iF*FJYW(GJ!I2d0FRQTXcdJiiod5$IW)&j z31u239Frs~0?8!3Kxo2Ea}X~!o$2L-q7h__h};Tzmxd{3ccwk#&Xi08(^h#iUHEX! zB1SOXE+b=^W0>aP80OY`C1b|1%&l=O=Ec8dir-aC+h}4+IM#F71g1%yz_bS^FkPDk zcu~yF91S|D@K0sh@HEUt)0j4OHq(UP%(TWiOp`f>>8h}((>ND6e*hnUV7k`Zu;z0+ zXx_mzRd+DfdIwV)ZA^2<2E0t9nZ;Om7Sl9lF}JpP2+L+V<K0Zzbq~||JqX?&L>?Yu zTEB-e#oElYC7Tg%Gt-!#Kt7&e3e6$uQSMG-$|66-&&yrk02v@ljAXrQrkFqej*#fF z`1swciT0*4poj2cVD?G8Y2-<d6W*oLQRAz4&hgcBT4g!}^G8i5s)mY`^FwQAD!oLG zgqI7v2jG21(jzy2RJ<8AZtHaSYbl+VVDjRG9D)T_4?PJJ-YJ+&iAVES{;2dMNO)e5 zZ=A%-mHyrQIp9qKUW3G=xh{WP(7O$IizME#0q|A=uSDX}9GyQd=<NWWnqSm~-gpjj zc^`OZ5`<iQ;pUG@&jIgegdI&3c(hj8AKq9>%PR2hk!am=k@T)66yVK~c-x)v5^IL6 z<s~NqNZ$1Ml%o>A-WlJ4&n>_+CyDfr^n*v~?+4y_iRbQ|Z>RJL|7S`+S<qbzH-A() z&FsxD;a?3+j+`a%7fbYRIk=!tYk_Md{<k_AL8YHm<GyxCeYZr2{#xMAxmnOpb>`m% z{!74Lbc?{BbqRd6{`S|NG|Uln`qR@(#V?WZf8#6{2~&B;z~o81?!_Ec9u9Z~a92sZ zNz%Vt&JK9gHasHnZt4fGKfX!c)Q+n0|K?o&F63<me%K#`oM>&BKPvw&@Rtz&9Rh!m zbNMIqE`O5G4wyCA=cT8e6UR%XFX8_3L-8p;aoE77r@wL}ycig>#N!)afSuDJJSqp3 z-YmkQ$B7@pqjIQ{^e7I0R6I*h`%mrlK8g3aMC+y(U8AG*YNB@vrhzuU@Lb`HCt<>) z_Ii!P8%Uq1y>66vcRJH^NSE5{^Ahj4bA571m)h&rT)|(JGd+j)klO3O1p;r4vwk_X zFO;8;fxid`<mg$~4_(63fmWNui*?46FyUPdJpDpJ@2UatGJxkN@g@v_N9}c>#3Nnf zk6O+Wq;#phR_R%!e|I^{@xayar}jEh(!1Lk&q+T0={?aQUP>gLYJ()C@)h5^o)Nwk z#z@z*@Er9V7{9-CDW8<CzDm%!)Huv2@%&N7{89On`bT^fzy#tVGd-WH134AXMLr$} z{?XL}zl#>*=~3~W+M`S5qoH2VF>)dfbR5bn2HtBV9)`K%QPXoOFUn5^O!Ke6-va#h zUxEKV@B`NgzAuL#+6#=kOnfR|YBv^1{2KxDN6oJU`;#l>pY%hG|1an|f7JL+@}l&t zFk$OOekgDJQSlwhf#ljI@ji3bCl_={u8kW6T{9<&mr6HQw9mxvewb#7H`1A3Cw(G* ze}>tLi=FfgG;SRW9vdazR>a|tQ~Esrzzd^e5_kq`&ntjumUuzV^dwCAc^r6=63-28 z{;27?$j^S@1U@X%?~g9=c@B7f5|8%E_@mO5AmPzo<awF?K=O$J-WiG4pPmuD0^sRo zx<_R?-R0;oUZy?WR*9G3jOQ>PdkJ{$5^tb%PXUiTBIGhqx?bqNn<ZZK0O?KwUYo>I zo8Rty$as`r8b9xocq5$YIpEPAcdNwn8USwx@U}`ks+;_AQEs#+-*_4HXs>?FW#Em~ zp?|szJS*_#Tn1hR@XVKiN52ygCh_u|^Xs55dmZ>2NY1B$mnZ3EIn#5{s{r&xyCmKX z&h^e=yfqDY`|zP<dK#VSIgF#`126M2foCRNq(?0`r+Q5Fo-US`JTCBcY6Gp}r}iEX zj0OH);8*Pu_%+V_I`DBCc<s*$yqDApJpf(0109H~BlP4D&-AGH4swVAUX{dqOknlk zIiz1e^!5vSedfz9=AVxP{}GA*FdYD(M@`>_-1Y-MjxHGC8FCqN{u%gT9|-*Uf_e{q z7yZ!H;2}@q4>a${0A7j2Gdt6D(6c4LTO;vqamI`5nRjdfUaQ0lcE*!1>A`;BHA}pg zobhBisNT-@&vY0I&lzb8sOSB$T;u#)+GnKwqqKF+0@p{{fzlo$?W?7IgS5@kPLOtn zwC|91p0vxPy+qpgO1nYYk4bxrv{jB@cvZOeN&A1KeNx(|rTwk6zn8YARmAg>_DE?P zr9EBRHfb-EcA2!7Nqdd7AC`8bw3&RiO89AMAC~qBX`hkyMQMBNVf+b`cA~UzlXkAO zE2X_m+8d<(l(b)v_S@3_Oxiz7+whu5XSB2hgtKh_6t0J)-6HK%($>8p!mpC{3~A>| zyGGi(q<uu%KS=wUH%0s`X+I|I1Jc&+6X6r3eVep}FU|)__^;AF;1vFoghSpEF=j|x zjbAR|N2UFmQ}|g4k9u3gh>>=QwEraS!_sb$`t*>r)pQ2!K?w{>U{C^s5*U=gpacdb zFergR2@FbLPy+vdOTa(WFD)u_xFvI#MZD83^f$-fY_r+QD{yw&mYtVxTTq!*HlNKZ zH8u!;98WJ{4d(fa3+4l>a-MA-owhAwRR_f~3cdu@z_U^s&MD2iJEyFeHL%i1C&IZ| z_5$)Z!#_K#prAOLpg2Ie*#$TwPf#jBImNl;CdP0#q6~-X0c8?|TL49zb{;{+B{@YD zR6+m_`_3m|kpMWgDusaZoSb|fX^j9Yvhe#)$vBXE!z7B(z<n!nzz~6t5QtOp<ZdK) zVK=K=Iha$JT?m1&(p@T8vY5bT2^QiK0>P~k#&K?2Nmd085*J0>Kmq$GptQWWtb(9} z1c7-e50a!};|JSt=}%*0S6NcyZSsIB&a>hiE(NmFK}=7V60$06Y?XpT%{f_xw)r@4 zkD`H(Hl2N-pTREr$Fl7K(Ro=#ML7kQ@^brvqQab_igbPkn*A*>DW@W9epW?R22Msx z&sPF(j%9m-m|HnJrp!Yj<(J#<&av6cZRM5okQerl=FZ}>dG_+`;zFWjgDG2VW3Om% zjGSK(Al!nS1z82`Crybxo317FcvWechM(uR;W7gE$DKSB5I=csV~rZ7;m4@idW}qP zqejcx@|l)Z72vh20H^D^6WFccVr&6QLm{CQ;Yv_ZR-r?Jr-@#rgU8vP=-*Sk62v=5 zuhvR>-AUj**tICixeHg|=I7wnNDg~Lo6GiV?L~Ho`=qv<wdxk2SlMGk%5q31)%udM z;_RIAavNKXU%P62S7AC<bwnXvi|GEvCtBRU$YVdb>sZ_S@YabEV>P<s1q*DfR>#lu zZq<>7v)wu!J9rdWT8Z_92!2`wzlh*npHK=1`Mc^Exm)@B3>^Z{<ggEQ`Suc9IZnD4 z<e+XqBJ6EF(}3l#bvgOAta-S}Qi*&WgeP%;8!Gm!0-HFv&(^pVvUP4c)^LKT&7X{R zAtyT@#Mm}BsWCS83=kSQ0%TBviyl~%hJF>}63RCSYCWMSwk-CZ8`G4O6xikMmXmG; z1*`+X_|XqA-FAxJyFTNnKlVmlHw35;4AHSO*f2z1zW^`p<?II%d2zv=In)}F3PDE1 z*#`GQM@AoYuPClSj?~K|o7{1ppK1a7i~BtGPj^vOY`B|a=XYZ86Py|%$LigC)RT3f zyc+S@Bk;)I2l=}VZ>A|{E$+6g?mER@1#VRb;Wprng0CpI;nI%efSq(#>k|8hsB+9* z{N2jm2l=}VH&v0@PM!iUKK6vZvZ%sdfQmNXR-9{NTcKeMUlT&1EDZLFUTVr-gtZ>l z5Q!u7Zonokd_KU^xQ-uxwXrpZ*-_#wEqioC<vgw&4)uRWAa6_9-aw||$9Vr_Q12?( z*jol_lAbcKm*K#9TDs)*f&nLx+3N=69;efEY$boM!JFyR*>fHam%wZ|E>FlWc=f&m zW@CTxR<D8C*oWToCYX&q=ZA}8RtruPQ?yQhek+ZfXZ`V}Q`7|f;LkMOm(OhMfCp|P zq^86tXV}=wUd%0tZSs^?)zU0D`%F<D^@@(OBqzsOK_1{Huc-KpbXzLj(GZu~$oDT^ z87UbSoDt_<0&}|;)5a&;Sc|7+4w?ebn91q0lQ@lMy_hBnR~Qm;n{KX1<r7bNHAD5N z_tLSoBpGMS)m~1R8-UrsCHVk<Kf>RS^LHbEZ{hE){Jn#}cj3*@@_(ihbKv_??^JXf zv2iI@I&Hnln`s;`@9_-OdkYOonK2_hR!Dq<w~p=Rw43?+CH`)ubTqiThg%zvlUfY# zdgJb(daX}L>j>iS<8k&=oFVb-S)YtFT$Zr08sDVYn0O1WPe8;eGu3;CB=-mXtg$#5 z4lxt7(Jw7FJvQxTTz@3+uYQyYCnD0=>Bls<-iXq8!w0tt1=eOirgg~2Ss!_=ktqD& z(~ICmeEI$$=kb01KFT?Dh<wl&k=X~n@##2w&I$N->)}P;)U;SzY*K2RC7o0i<ZF8K zTkEG|9}`IpU8^L7v%bh$3~q7?{QH5>##27U-|hT;n!nHR_c{JP&)+}uchyB+)A)N0 z-fT!WN7epx*GXK^L~3f`toDy#_5QcS$H+SKu76xCzXM7f9r2G&v8JR6evbJ=M>*vN zqO6H!Tl`T*#JWoCGgP?r=(PA$y4mR%@TPyNr2iqPJiw_u!rzbccO!pq;qR^dy@S7Z z@%L`LnTFp&Wq%$@omMixk>}7lHKSD$HwJ9%A46xPq+~#-bSHqa@s|MRmd?Hy+N*ds z42xoq4vS`A4x1aBmSV%zRF3;-0MpPVg{onq9(1=1r-tcR^F@uqvFZW5#CdDwyixUL zFAQ_hR%`%0x|@SW5pB#&UNP9wVLffZry#YLliJ7M`#C|;2-z&@>G3m@={l@PHbCZR zQvh_6qrcDJNBR3>{%*q?nxB!Dl6os@9bLGkD`RmfF*bH80E4pPlEu-*bh#9xyu9N1 z4pMvyQtVckmBahoFurfNj-BG<ZS29}*V)*|!<jB6jjphfoDWhA3(}JC2gB1WxA2hF zBVyB|Ex0+{jlk+h=vX^v_%x^39l|42_l>Xt5zg=k=lJ_PfB#I8b-2)Mn`KS4vG+&x zD$SK6d3M-+BX2=xftG?d=NKr@<f*Jdexp-jXUwpnwnoRNORZ(+N2JHa<4QDT>K7zi z^$V|7{JjQmB*;#URBu<?qHaa+fjeI_=_+=TB|VX?!(dt5xONfvKp?+`?IPqc@Pi~* z1R^_qi8cnJ0&*T2`1=9=euTdt=kG@TZrh_pcYB7v8(t&#F8*%Cn`zXcy)9J^!5zx~ z>%bT>Q()(iR@LjkcTZ<$eiM)JZ8}ClmF4MTQ1x(78m3jfy#5rFfvHk2uWdnAe*L$X z=QBaK&>iPqe$NNR(sZtu-#>!Hz)PmMJ_wV6UI<SHA!B<fdsYABndI+-{C$SM8{Xjl z{N0K-+7MpEa)8nnlpKQ_mlFCM<k~oDJAa>{2>d~Lv(Xq<(LEn}0$~U)kuaU_B6ydC z<0O1g!kH3gxZgt$o!ce+R0*$@@EHj|DPcc(fQ7bI3EwE;&m`O+VY(MV;f)f$Ny4oX z&XaJPglhrQ_e2`x0r#h5c%wWh_J)MdNSFrLM88BHI2a0naDL>$Bl>Oy!Mh|pU&0OY zz%!lU;{1&U<9J#m93Cp*kJR`Q)<W={-fu<tI0^F)*}!Y2gfmSdoW8qA_*D|7Z<_G* zBuu9#2yT-weczE_<9HGOaS3NixK$0GD8f4=oEk1*jM4?YNdmqSFv;`G6ai0>@WDs{ zTO@ww?*&{S;aw7bL&9wmW^RJM-*kZ=E#Ytpua<C?gbzuWnFW5Qgxlf;>@h^ryIH`$ zk#MSnO@N92l3PUhO)@<54gsgB@O%LmNw`YF4@tO9!mmo$oFnktCEO_CVeWz-{t+Ue z{7%A|xdML{V6LB-($kYC;kIG{FO~S_N&!DD!w=pi;8!H<cej8KNH|p<ME^*_ZTE}t zb_pAw6R<%q(hq-Lz@sJHC}H}Ad*bh)gySUa_jiGBlW>WI%O%_(;TpiBQRd?NcKFtf z3b%;(TL~ZGrSiPMZV6XO_@97%y-{8#1^#h@arn^hxPX}fFygD{c+3)3&+{ym@cCB+ z{!0>Wm+(0WpO!FvG@j_4lW?wtPf2(!!AQTYP0)K*hPTP^cP0G3guj#UUI~XFF45m7 z;V20olyIShKbCN<gj*%tB;oxMJ|N*{34bBsmn2NT7e?tFmGC%%ffFv}7bRh{gm07h z;S&E|31>){K2=HdQYG9j;W-ixMp;pKm4ss@yhOsK5?&<XCJC>R@P`s!Dd8bLg5G=y zPnK||gmWcaA>qd*e4B*dm2iQCb+|}K{FO*}iiGndoGalS60Vi-ZV7Lf@D>UGOTt?v zti#1ZqTeXti4uN5!r2mjT*CDdZjkUE39prKhlC%I@KAq2f0~42C2W>(nS>`v_%9NU zl<-jrkCm{`P(jZq;hQAvC*d*)2TJ&_624l(?@QQA!iHgjUVwyuFX2%VE|GAUgttg| zmxT99I8MSpN!Tjk>oCqB`RXJbD`CBaZ<8>S@SQ3w+mk2M_!8bL;Q$Grlkg}BhYlC% zc}e(p5;jUWN5X*;eo(@G5`Iy_dI|rVVAMaeY|k!Axax#xPsWT8;eIkaUc$R%c#(t; zN_c~W!zKKjgwII$s2VQm{UYHiS>LZ3DbhP5+cOKnsMC28|7HniO1OYv1-#xM_+2Mq z^Nj+2TEYkA#lCkX94_(CO1N#Zzz@Ixljt?b@W~QpQ$%>0gj;_n;H47wixluq38zZ< zQwdkuMfgt=&Ri(qK#T(^z067hPm*wBg@EsnaI1t@NVq}5&q%mR!iOb%P{Kb;I90+| zVq8h-g-bYH!n-8ASi(jLKPur&31bt2$3Ivk_&YA))?xuG7^f2bDhZF1@R<@39xvft zGJdgyQwv1+dI>km@yK=w``snN4@%g)O~5*gdnvtx623u&r99IlY~C*L@075yRKS0d z@UAiezp2JA7w~ryJ|n{?U|db<nPvQ&C7db4S4p@^hQB0XKMA)>xS>hV_Zy9^CH^nq z-#Eb&oZ#O(!EsJ-suMiN3BJP#&UJ!|oZw0)c!?9d!U?|534YWG-s}WF<pe+N1pnO$ ze#HrX(+U3232t+OJDlJH5c_*DhhdJuybtp)m=9q74RaLcLzw@8`3UA?m``9ng*gV( z26G&Snm1~aPQiQzgU1Y0Mdl!0hhY9M(lRo!FNqD{3hX=PVS5Stq}RFjwcUlUlQ{&@ z_AE9-Xj83+iu9CwY<>K(r|W_QZNl}Xk&Q2CmG$-J+jF$NI^ULEmW}<_K8esi-az5l zYs6=w$}0=8;WTeC_M7mLrv*hh^ZQbQSZL!jw*ouUWe&KsOWGHk(#6htWd(_|+*Vnn zrqUOcvsadNm#q?CsJb2kM+_-C9)$1R722{3?6ey@Kx`RVd^E+0gi0M-;(a8<(-2A9 z3hWgX*ipn*ls&7cFKRjMI`aG!6_ddG!yq~Gy=7IJw*K&W;#}^(0>82-3tQ5aMYP}T zs-!qke2x#BhnI;Vxb2%AA)AWa$nLUnDc(vIqes5kC6y@u++vj`qy-`+*p2Vjc?YlF z=~IA1ydJgA#pe>C>G<X#Hg|3F@Cia&3BCb{6+j%KkOeysPOn<q8xb|hKED#1`n|}& z7o>$8DU8lq@Gr!1CbAI1Y?OJN+vrwJd2E3yKw;J*8!v|v`Wzu`#M<yZL>w+r6A>pI z213Q|HnhLzphAJY5X+A9Ica=~u_yokEoCR3=-2~R*pW|KVz*%{7HjM{=ppj~4tU1s z6LUZ<M_KnYTT%kQmPD^M?te)m2Td6-ue-a|te_+tEnx3*6k6Ojq?dvu#Z0CZV^uH! zXV{B+Gz4%)SyoXwaq56$$<D4UtSoTQ^TM3MV$@fD1V(KT)CjJ^AWJlZwyd(Uti=Q3 z$wuq)5O0`tITU4^av7*-8VXdj@~qq(d63A4yxXoTF0qv`t`l^AfzIwAPdFijDAJow zf;f7L5|PO2K_7=s1Wju1UL+UCv`8)a0UuE1O_c-8H~wwqi;J?=K;a`X)%xC7r5Qhm zB|A+N8hv0DBsjxV|M}rAM^8Fi)yGqOF|?02&VD)iai;08n4~A9z#B$>Vn{81_(a@b zlV14l?#<WPGO+o>Y}Y`698O?KeAj2HWTVsHaVZ&0``&%G+?@B&uCw*o3Hz1tdvBEe zs>uIk+P0ppzF(K@f5Wo6g*ae}-J6yw)_~ib5=oq_aM~;G6()C-U7Z1OiAUSOeKvdh z#q8Mwc7-C(p*U{=yF`_{!mh%4?RmRGa6SR!5{Gug`wQT^q^<&c?Zm1GE_d%`pt?2b zup=o$ut$ea^mTvv)aK&sP(PU6$A{>9*K-_ClU!Z|hw~nn7r~Xlo!ReUs{3HdrHDJ8 ze7O{EzXxb8718Mg&85(PRaV9Ep6;_Um!d7u9Zu(5c7$GsXf7|-uP9`}SD(W@mzU1} zLSW7<o3ko8o`dU$37le359suRp`NRAIPG%@O!`DIRs72&j8DzW^FNoOi{8=2`Jqe1 zayYVd2~3w~pe_;TQbnLjujdd|KLqJxwc`AtJk;lK4)2mt9FOT;5?MCtm##iNEJ?+> zbX5?D^gVxZn#SpHWPiN%9K`H(!t&DSNjOmHbbj*kA~~I$yo^Xahc+(*8OIQRJzI$M ztJ&(OhjwlW9LlBd@zj3ub1Bt!I*!}tXlFlUouW~<B7fCE93|`>jh`m&>*YAEka;Cc z^}LQ6K|Qpr9szT8o~u9Ho>N}V7+f#|9Po09-`}w=m&kOs%yodv!(T2@2RLNrjPLUN zn=_KD5gX25VHzsWh4nqArIK*O>T_Jo6_SgiVXn~9oX?rLLP~c&8|D&;j`7RWWUj*d z9A9&V)c5RKFD!Kg>*{cwirDvPy$rb-pHA;NkJjzk>&%+;m5V$*t6M$SaC&3(y?fI; zyw5$H-ofIQME8{(dGlsK9C1s>2?gaNF7kBW(CH6>-`nXO=;~TgKXhE7_P+LWY0^&D zf@B1z1(x1h6Hb9xVWGP{u4Cr%3qP*IXxWCZk~`cF8342U;z<8E@^XvgeUwWgm-oXt zap!zJrhj6+Zr${chUFv|mv;KcchJZI*evH)cKWB%`woz6JX)9)KdCT4IKP)QKseo@ z;#asXfpa-@gqHP_YtHR}7!F%(PWr0eQ4`m~`bj`V>UHNxT{iqRaRy`(>VRu=u7$<d z5W8=v^@oGa1IPPb1E8r(pz?CsWn<EUbiXVj`QCJGSq|6SE+Y*{fM1%seALV3M^e5_ zhWg(A>xZL07YcD}SlspPb$yuM^6lj#E);VwewUc9@8a^WdhJ(S_*Jj^s+WA_^<H_g zmn>{p$h*9-QSrMk@!E35?OlFtSG})`^5GYCxs4mTWb>=J<ZxIKrp+^P8JAYH`7PW& zSDmq;KKKkuU{C^s5*U=gpacdbFergR2@FbLPy&Mz7?i-E1O_EAD1ku<3`$^70)rA5 zl)#__1|={kfk6ojN?=d|gAy2&z@P*MB`_#~K?w{>U{C^s5*U=gpacdbFergR2@FbL zPy&Mz7?i-E1O_EAD1ku<3`*etSOV|;_|-4?ye&Qfir<TY!RMyg8GJ*26~l*?@!<2V zEKI|g&6W{6Cxd(Sezo=nnS?=tK4s5o5{AuIk+VpC!&Sh&>FvgMRp}YEPS^w^*`5c# z^w0wkJ^I-}`H@rvIP<4|kM(C6iC{;1_(?2I4|(U0pl8d=DZuqh_&C$sFTa->z$L{P z!H)D;AO7gmjXfE5rq?FF2W!Un=jkC>C!8+dHd{9C&e3n0iN~3q`u+O5@hxR~R9HYx zyu#ClFCpGV9|Pl`8|<6k$6paKGi81W?v-Dau(U}}+F@)q{&f(3d!7fi@;75<X*<DM zc#|R8q;WReg5n;j^-m9<F&0m&h_8aA!^2eoHst114!!vcY!%3<GIInIKm9$F&q&Bb z<kJyL3d*ed^@i1as<dskf-HPzt#Dp(fvuzh-!|lOQ{$2?;&1KtQhM=4YSS$PxNSE2 z$;NKvKJ>OqdTJbkRbF~x^|(lGxEd$FlH51Ht&*Oj&N}Lc%zZaOl3N^%&1Q{HPQ;IV zscnf_Vpd613EyTGFoinOqV_2ghVmi&sRny7bIzii>`HOZ96zj?cWr@v9(@<?8r<8n z&tq&1zJnVMOa}U-XMV7Wj{3wA41!e_g)KrNlov|le6k|Gr+bIO=v%&2y;5Z)$`6@U zFz><;et%Eg?FyUdB9NLrig(8!ZmKrToiyrRw*R)5_P%__b?`I7h&&=yttWSjGRxA8 zM;PTpeMkzFAEHIPyUq7P^Q*9HE6dAB7G%;FmsjKzUK6Ft1ZWJOgXVPFmMCn=Kng*~ zgU_G@1|={kfk6ojN?=d|gAy2&z@P*MB`_#~K?w{>U{C^s5*U=gpacdbFergR3H+Z* zz^Gx9Lhuv8Neau*v#K=wMs<_kjrp@B%CK!+U6b3i`leQ`?SnS0alB_&S4N1AMQny0 z2V6A_E8S^?16sR5>ueudKU+3{*7GVpXf;V%&-P0TG!>t!w45thz`2xHwq3kO*>*9S zt^W`BW6XTP%-HVoE7=2W+F?x>@3Cw<m-5=y;sJ2;fV+Gd+qOK2wJi5w7nc8`0ZkE) zc>n&Emq7z*+ynm_w*EV<w&{DVrs<qkX`(bk%*y$YR(4*`s?+p(*237zw0WSJsbLq) z3fq0>2byhFL(Dr@c(mTMCdhmt?*?{Z-ilSzvR15|mbs#4ni2WAcuy44ux$JOme;pZ znkr2SBUm43Zc!SwCe_`JvN0IVEz=c!{t6At@Ibyj1I#T6i}Ra3N10o^v{h+q6+>eE z5}jX&QTwl=D+1F~#_bRK<_b2nGc++_`>pxS?<k%LrcmbZxkYPQ8_H%8t=E6)%3zV^ z#XOx%^VARnD{C9MDM(FMZ(u_WN>!Rs(I;}hEf$l<jwq8}@krF$gVXii25caB@-Sz) zk-SbQY|?j-9my^4X^Uy$Q&A=_#9fQHb>5zy`QUlEGCcnTV;NL_e`M@|)?d0NV;>@5 zlZLfi1v^CX$lnH?+y)uwbyaDeh?A!=U+`GGu-S`M4XqvbR#3cR@F)NsgN|i{A>Y`m z3m_ala14m&0lWm@fp3p(8iQwt){uzZk8Ye-m$6d(Ms`Mrc6g#5cx#Y$CG-RPVF8YQ zc|qnDy)xW04`Hs#u@>>RX*?72$Cz94z3YZ8_hzN-T9#2T+T2o@E6N7Hm+1G5JwNh* z!MDz{SopOnAs^JE%+@Z|r?1UQNGQ0qpn0w0oj`ucxBI2<54Cc?9g3ImyGh^2F9Btp z0KA2_E^Ka6JQ5a;hJKG>Eel6LPf(8+{-QD2f9#rcp9XN~TS51M*L;NOp+lXJhko2U zB%kq=cRTX8ud8b$cOx(3y=#Zrke98HuN`@rkSX|Hi@X%t7e=l%c-K`S597hF33)JO z#U)J06FBx;?ae0eLt&oCi#;?xA#p)Z7|KqBAx{*RFXcq>)G$5rrbk$9j))g_YhH7l zqEE<^dCa4HAdh(?Sj%JJyX$p!$gvKS{so}E=)KG>yP=czp;V3miPIHUnh8Bo^Z|8x zw>3eU%F*eI#;^zSd_;Jj4`c|Mb`Nul33XsR!YOWoV#xo}on5Fx*)Bx<xcIO-rWopK z8S1G5Ttn+zgTh+!?u*)X{7SZ-Dbqi|p@m6>PgzV&ppmE;Jlow-hZWDdd~deC;9}H~ zR~4`PF_16Ov#*Lea<$_9&L)3$_6gLDPOW#7KXj3yeZY2Mz`F02{qY^eyDkZG-x<o* zf1~wjYFxFvkm-%rgu*ngnqIim0)ND}ppD+7_;h01E+fI<S!Yr_-$?|I`QR}zmNlE) z*x72}ECg=};4MtidqNL94NEoYkm*qS6N<@E*CE^W)D}3)_%+D&9Ixw2)A8%s`k#O4 zdKm5Dq%}j>EQ+r;?hESh<#J3w8mPmp1$&A-PilMEAMO93EjfoWw5?>NSEBuks$#P! zjW%sS(+Q-5ws#WAnP3gth)>|xinJ-cu%($tkk*BEPwsvWd-(w>?h)Wsq0A_Za9rk7 zs~r0N76t7!^%L4{7m<IJpDs_<LbNn!BhhX>oT&vLk}vZ62k`;kI<B;sCWq?Be@FNZ z;m=7v+rj7aQGLU=Q#kR5@U8Ro<J%FR<R<ux22WAwLoD06w2CMb7ra)3CzW67SJ0-H zWkMIIU8iygQHJFYkJu2T@^wNxyr~}PGVool8J?K6Oq;$LJdkXmgAY)dmV2<F_+8oV zyq-YYU4=NA@FU)O%GCvrPIYs$u7^MLmn~tSuku1NTnM_2$V2%MR;oZxvF9JKd?+hD zfqH?Tg%6;5zXo-*d?=f>+=rE#khe8x4{A||Lr_n(h(o;pM0vtE#shJNIi)cRVWbC0 zV^%tFE>{m;b0glx*x)<p=T`8a*G+qP6Y>8$;vadWG6bKIl#e~=cQHQV`KaOjISbf^ zdhda}G$Aixi}RZGsGn<Qux7`6ZAHGe$$Zs-MjOiNpE6(As}D$bN;?=~s{W{HlMMUQ zpYyhtpijMZT^;vKXRPJ#;iCPWJyqBv(XZmHMgaBQPa-X&FWOe{NbM&ds|;Zo)DP!F zE>vy>=mV0_2W+P?$=v+rI*duUAKHFrKhd8hCN#}m*nFSt&pe@9=*!cnUqid)Z%3b2 zz|-=|k3w5)puQ&bouCdKn_P>24sBhcshasyzf62BL|<n0zHitj>dP*6Wq2&MH|L{2 zOZutH@4&)>$ejkCx<>S4#8W={v3&H!#AiPG-9zYC7E<|A-%)x+x~JliAAi0pqX7A< zMY^Z8`oz;?_6M01FAr1b+d+1B!Gm2fcvAW_X81d3nEYGk@;(^;)CUty^pBoAKfsw@ z%}QUVepd3E2!3fCu@CvvgWrYV*E&|nzaIVXI*cV$z7xTB0{Biq|4VX9fPBf%3o^ei zG=cjqge<uqWbW)I`q_kpt#k95^BnruFzQ<&YiGSVZ`;equVKiOkhh-a)s8&rkw2=N zl<#k;Pj=BZsr?1joi6mJ)Rx-1P+uJM_yp>%{UYiv{MxUwnDn9VW1M0bkN$O7m|I-J zfbC(la_GEGflh1CR-)~`N4M=F+DcWYZ-^UHmkqi!#;0)->8%ap;;1Vif8-&bbQfdD zVvLu3puh7*s{PEcrpe%w0j9nKybPr=CGkUbc9UjACylM2K^#x?M@1O3ZVM4*Mqy)o zSw_AxJkdHr_)U~HjY)mS{440ZFKami+fVB^-e1Fpp4Iv%h7U<iXppqWc(aWA(O&%k zxu4XIY{D6!fD-Vkpv+6}i#Gj$@qih!Pw`qYtP8pm2i;i#U8%7bM@H$jb!Haw!L_3U z(<7GY(<A0t5+ZIbZI00RCXnBl+x*gJ8E0|7vx>j)o2KvM7dna!jc~v#m1D6Grq6%P zon>fHPZb#7xtYx;!RK9Ur016?=aiqiCXxM3=<7je7KfyNqn$GTYsJU&J%2Xz2lQ`& zzkMg@YmDVz`=KkN2zg3HK1xw<jXvv#g?O>jHOR}`7~__r9#kVwPuMdfL-m?EBl2YI z&QpTS6H6dJ3-n**)t~tbKj^=+pJ;PtC5#7s57sk=4$&Y_Xv^NdwWRrL#nUro+<~C; zO5k{myAo4E-wXOu>({gaIvywMNhHeSX*V{R>yjJGApd;ip#XCNYI|r-K)OX^b>99A z5qhu=`FX}(z~=@uCva?sCSVRn?T}*|N`B65sH30ShMJI0Eyme)Sw=q4$uBXVr?$HU z^_u2OJ}4_a{Pl`Y;=(7?x*mgi6OH;4we7qO<BVuA&Y*fqZGHvX{I*}ZCIwPC!%$rq zsf_fba(qJLn<)D6VNHvFMxDOcHHqV(AJjv3?a=WK=s3n8RF`|zADSoTkFl6+if2Cb zmdi@5hg5&e5pj1%f7X?O{wM7dYFqlP=h`MQ|5PxCXM9{ree!JZQ{^uD<ma(|KyBA} zlo7SZTNj!l^M*v;5aJe8)`+y%u&^mpkWL5Y*nyB!h#^?|8>iet{-8IM{Jlp>|G+7C zkv|Oe$szt%NPoX655vz6Lu1g8;iJnK^q^g%pYj6yOfZ3p!9&Pw1Rpz00H0=z!}$2n z1)m1DprO+hP3a!+sb3Iu{dtt>4;Wt@N8d(cFs$PY?P(ufm*uaO-4O7UsqdesIQPgK zh%XN%7`(Ak^KZ;|w}C&Bn;H2H(;BCY^kzfnAip>o7%&p`J`!%ne1G*5@{O_8CG$=4 z`~2?ben7qh-9^5GNVX1TF%oMSi$K2}dg53XBQdvm1pX(;A7vrRT0dnZbg>!!ACv!Y zLZm;NG7^4AVLpIA<oZX*Rn8Y&%azt)TEEcV#u&Ru^QACmo~l<^g8mBgALGB!@^zXp zdtPK1V^b+S3;j?$aPmGEVIBeINSgnefN!wdBjbS=s$-=zpCf$mkQRzK9jAKm<Iral zeWFXaS$ym(*6j$N(y(_*e2fdQh7_3>8keB|ZrKsUS%i6C0>uk;h}SuxrLf~lrSQiE z8ngjgv;{h}32x|1hhTk7!CXkwR1F=~Pg-u;f%$~T*kz^(u!|HgPZQdA)bB*lP4q+? z->y~0PdBns%oVYQRdskccp3pivJHeWz|2PZkxel9Q#j$_jC#OkZ(Z^#7<P)KRKh+4 zqk-F_bm<=rX0~1ncc<2)Ne6ofj5~}U%utwNFaa<(D95Hv$sAD>>h{{Sqw|!a4_|Cd z{#|op^7X5qOU_umJNbiqUnqJ3;p0{|7ag7F#=~Dkc=+mF$!V+q#>1z~8&UKu5BC@G zLF2cppGuy&`mZ8B!YAKL@rR4}2)}amlgTlww}^0reE`27U|R2OOg?e%6Uq6Z>}=>y zT^SqheJ;8D#b=Z4n%|C2y?0l#AKZa(f4=gm<Tsk1P5w9g?dY17PbO!>eJ9-Jm5s>^ z?%{Bwzv*m5otQXnl+O;B?Y|%8a}A8I-lGm>@XnX9=4Kn}Wa{ku<{GdLma2H?d*9qJ zw^<4F^w)UhUw!lXxeufLzDDDdzkl|+xeqBLJh5(=pFg{9ZY9>ezJhE|qp$14_~L7= zKdld+%|crfq8*v9zy9H%5M@NZKH?$R!(l%d)TJ4b|K)WL1=#>60G@zyJf<0*zyG=i zg9_o^Ik_G<UintI*GAL_g=jtU7e=fNqPfGl>+cKd&|WqAR>m5_SoY{PxY18cGAh}l z$FDYDWO}S{1!4tgG<$#r!fl>68tVWr2Lgv_vqzga4thM`{BQ-~*hd?HV;{m^Cb~oq zb$wEsrZ>IQ99PowU@wmVPAhO6>78_>=fhr}44g(Mod1zH#22;2lwRgg_A<>yFWxf) zbto2fDF$^adfSf+qPAg;ps;hon*~(2FQ?8O$D9)N;xOvRVbqhus4s_6#}6B>UT*RU zTV}Fi%$b1thqbE2LKv(kdd8z~ACG$3fqLi@V{SeMU3d@WtXF*N-a|Qe&c1(cpw_eQ z4D`YidhvtCv(5|UQ#X6<+z;T!JS;x}y7RooqmFdoE3I$Sms&5b6PUknU7)^=_#l3W zFXE5*gpPC?u7CKk>B@*sQ^Z5Chr@pGG3ZDqbmTGUNGEjUF{vY+(2>U+bfnWkM><JI zFt_h?r6Xu#cQYmX&yG5Bmt&a<9oY>X`Lko07CDw_ZynhU9qC0c+mW8ok=@XdUi9WV z(i1we8#>YpXO_hI-{{E2dtSv{2J<C9jEViw4`O`Nq1B9U`dGB@br?%p(Qo7%yy`NQ zkPoQL$Do~W!(8V$`pX-U_MIrJ>1glkd}!?(ZSyFxeli|-nBUedSG1iSm}@L#9(A7n z?9g(>qjMf$YP+q#$!A_@SG=&M=<$x%w&kV-#Vc_k))e*rY(3Wp^dq;+H1a(MNW)8} z5h~LF?3f18r*tR{?`m6ff}2-j0`%E2E$XwPWLlnlE#Gy1>}pyOBCQkP%Q>wzioVVR z`E5sg=apn`PJSMFL%Q!O-ibTiyggA5y3?m|H071nbjGOZWB%TsJhve|E>DX{e@s8= zdqEca&@NK_syCQhlEKIQShxLZvOak2P0LL*XTpAf=URhLVgY1+8oUx8o59D$d-m{o z`FQk;`REt1Hi5e8(NyJzeW^Xirq%3eoyJx^Q53rJ$)e0v(|6`qv-N9Xu$FxGIO5w- zx0JJ88DC?pGZ2lajL?*97?swFYS6Ccw39(Q*_n2zq-_E1e>>3jg1%(xSPJo24gOYu zzZ%e530kWx$EMwDX`Qxu&+?s5g5SL>w}9`z7DcVxRh0EWWAX}^tXii$piiPaWFeiG z9nxt<8mcU+4d$ISNNXk1T7|UkMOv$oRs+&{4K$-xZcg3|`y}$AyLU@+cE*^Ll`yN6 zW79%c{)O@f9<~%Yr)`mGS0n8|BW=fex(|A(*3<i5)rQj;@ly44)+qLXTAox_w__ek zy0x&?*6fM?9BVwD3uAiL@o6o9@bWS5bi`Ze=HZ!Ng}S47CaU-}mJF5noftQ$`1xjA zvlnP%zUf)O<DkAFKGu$STAk2I(lyc*+Lxg8Ix(hG;};<QcFaAzK?8M#(<oxL=K9H= z!8;Y7#3qBFqta0Gr`NGrZ~d|<&7?Gz(b{d>RbnqP#LryXzIs!Tq2%GT>CBMd@$jag z@#Yn2A<QHHOW<IfJRbWm9(-I38rvLb*fIBDs7DkQVg?=HZwtCV&GgBZGQ$!>unBux z9#^eT8?SFHn~wgi1K~}NKALvlqb+3~OFV)T-0mAj>rL_3Z%8v;|702TisN8UbUaUw zVciJhUyNA~V?Xk+ht7O~`Y_r%^n{H(u20CKI_TYmaZRTNa!OKw)8#(pRX6tR6aLm8 z_d$*-k4DL><6gIdG^oGld)}b`x`FZeg9dZb!@=0E!u%C_HHmEO;g-IRvNVB?2f{sJ zh^9CA(T6u}WIE=*R`JAsUF%J24dx4826lldRX0&w;x!+<PPc@0(ipv9i1|XjJ^wuM zX#|fxknMq`O&izQi_X8Q_;gl7*Z%_@C*FSx`jif>|IDNHOT_(J%f`2B_2a!1pLY^4 zj@tyC$wPV2*n#w>{=)J<ZdZKje8J;^alRW5AZ>Ge>rLN4R;|^4p4JM!j#Y;=AM<A| z2lik;%b@OOd3RzTB7^q5?c=;Qnk;O+9{XAp*QjioHhq=SOk>l{&~L}ReLeQgO)$`{ zPCfKfKY7jEHtia|-)+F$>n)7qpo8njU%`giunt>?G$?N->_3jbpv<z7Y{CEZ?^tOS zY{PJK<TmVAQ@%+T2$yWfvZFFX{fNMtW=2I+Xx(y6K<5*1)A|Y44IU_uGS+2c&w<to z$PeYj{b;=tWimAnVYE(@DfO7fl9ZlPzNY4}$SEox1_RB#wWYXrm|@VFr<xqs34RkY zGz4Mo?wf)b#)rhO!F$xu>DAiOJ=lvN{PDoIVO_yOdlP!|)I`9`X`KP|LV$;Lw~Pr$ zgZ!${e}%lPEp7CG{XEhH9EPxvY7O_h8T=ajuNXRg58^q|S0w!enO-&Mdw7|rs;~ms zM7$v#!|19sro`X926^u;v*DwMPCu?KRiN*Vd{a8acQ+k^9q96O{2an59paJF2@&aR zbxa2`n|@YXin(#GbT%Vh$8<soc1UM4rR$JRD8T_DT@&$+^lD{#`;cBcbkPRCwqZgi zr(YCnJ8@KI7c`|=QU|EaGJ)@`YXRoaI+PLD;Y}KS=bC$~9wWUbeT6<{U@v6W^h%|) z9c~6a4^ddBf;vLyaY9%?rxE_c;7>YA?G)*w9qZhxj*=cSq|4_sI49z$gOKSYeT?}+ zhhH7mvUvO5sfSJw{)u61_tu?aTpGvN1>#%(0M-G$*(7g-dsxjE3~p>z{&O{lw~yHT z?S$p;e*4b4AHUsyPt9Skx3_$||G@*_p7w70_A9OT_~hZ<bq7MtQ;QJy*fve+*g*5$ zR5y;TS4vl4Y<e8);!k(nb0isU)Pbd*8xI%`Y&fQP@o_7Ud%Jn+t7yY1e+NJ#1@yl0 zHedJ#G`mp0vq7r}`CNzg6zi3T{a|JRCt@C3kISzCenZd>p}h&w_;k)gc~W{ttmU%2 z;`3~Y=SHS)-4MdOI!~aVe&(01-4v!}zIE9~^Hd%77g_4qItDl7?;pan`Bi8`aW6Mu zC)OX0kj1NtK7SAPmD1p6hdj1H9wx}+EyzQ^)UZ)+*tg*=$i)D;yal;*KrYmtos_z< zLeF-`Z4qM&M_F%0`4}K)>@m(V4fm)sA-~fhKXy*^Jy_q~o%fVBmBu7$JYLrD*Kg@v zcH|%BhIF3o>%T(BcJKR}w#1pvYg*v{rLVsR{`;K#amHykl@ZlrN(+4P{?3uFD9rQp zO}+C;xGS(u+TPR`pLCAG<D6*qZmX3hJ^ELi;h0Km4d_GGQ=OsqfBI5|uUk=@k2*0q zKySXV2JLe@%Ae-+o3Iw1i8v3SJtu!^w~a{86Xi(hUJrh^ZWnx!9+BS$@EW&M$Q)yc z3y$?kk8sq-DRd6+ORa&Q#WO8c(wn+`ZwQ&nO0gc8(T=re)SJ>L;r1B2FQ^@OHbuz? ze;G#T6R&3&n^CxFY-<qJbF?`;oXK$TJcY)j#7_sp8T3+*bhc4Cks_Toq@&7@?2sjF zTZkWPA$M>2^_<CD_Zysv!x+GfJl4U@&)f}VEslBYdu9x04*js#171Rq52{~ub^-Fd zU@-0pn!I$`2Fk;6?0Y{9npKdQ8FH;cI^_39@*Bb~G$KucX9M1VG>M*i#zZ}HcP{1C zZF!Se=?c`-<zrcC%`n(k<9taV>~O4s8qv=~c6CEp#*=|}n`rHFTi89O?cqyIJ0q8x zo-r>oJ*!)8N*@(#%3k6g{HE8i;FH=RO`oF-Ixvs<QtOFzGFlt)#@vh6%Y2)@!P?mw ztec%hp3-$OrahyS;83?=!Re!-O%^xz;4JQrGF8L9nY%5fJ#ZiAZnH@l;vVddb(_#3 z!-7M@_6CJAchAij`_ouw57rJb))ixM%yDTf-o%tciMc}OFg8sKNn)j8=%4GcHc*5$ zVs+oxx&(XR%5BX%mU;yzEy7&Wa$EEM2=Cye3b?DKy9Dk%(p><za=XCEBYf$ePx#WE zN%+!z8{yv}@aGV|bY~F0bf*%&bXy7ECh+43U%F!mU%JhNFWu7!-`v7^j)dDyx+lSn zxij|<hx=uViQLJPVoj$he=kRwc0~99j*)P*grg-KBjG3s$4b~D;TaM(3-~5;3(@mN z8Lc(#4WjwE)xug5<a)^Q|8!-XOA&MP<pHepqyf5yHJ2-)W6QBFZW$$Xt`lQz(zj>K zOHA9smO|&2LFbm6EHTlhZ<hK8`~O}E7P{nG*DR4yCZ8ET!PiVxf-Nx?Q}R^*;3Doe zo7TbY5B{D8d;mNiQ2afgmO7-MFFK0x{PHm9zrWP~AG<Q1^}0vu{}S-B6uc~h{x3Jp zfDT72Q-ZT%h6JC*y3)x@=>80Iw5der7aVRG5<Ei}WlFUu!6n>nF*U%wi@VLHgK#V0 z@eE+U@q2^(G>Ydg$z#^f*jFbWu^0R#*1eWv{VQvP;B~@xLT)6lZDGqz$&)Om{H5N( z^%H%9MO_r~N)9ud?wjnv%W1sHCpZCep!K9CnT7@Oe+X&t`u}ZL#*>f8`o9(Re;4Y1 zGwOdU>VK=P*%D@M$y%ZW&-6ll)@d)h4LGE851y%uHbulL!Lwq?9c3zodp&nsOwYo7 zh`Y_Evv89<{AaiaM?fACkjJxXnL!@;B#%H=S`B&dx%g=z2WqFbVJ&!j_;OR~v?$Zg zrM|)MP4){G?NM*tNexHcxXCN{>IlE!)M;juHNrR87iks%CS6{u_<HV;X>Nv|B&+i2 z5NYk&dyi?`R_Mnr=tnd3gJfegxA;LnqLI(gC?#05eZA9lY#&31XoI7{=e2IW!6`Sv zt+SYlZ&HHq=Wes<8MsLf?*aY>Jbj}mp3kT}K@KL8gC6>THjd=5{gmL1bisPH*<@Pk z85}>(E7%h>u10)nr|-l1iCXToo)IYX_09<q_vx2V2e+aQ?m`_zo>BwNEeDqR1<x`^ zna)i03l{CVi#%EUfnzaEguIg`liO@6gxe2k*8|>(^mi(Lo;y{YgG?{{B6P0vQ;~Ml z4(Kt`wCZu@l-lNSv#G%36)gG|Lz97*k2fzL?C*PSleDUlkIyBox{n2|9lN0mTcHb} zm+WV5S-aFHI3?0zdK&GOD1)9nY@Z7GN19C&P;Y3TAaSB^a6b6WSA0CT%QTLI-*;si z`5#I-gSH3ZW4(f8Z9*J6+obYEYqYJ1qxQXHupUNzZ}f23=zF!nu+jG_<3#x-2C$5$ zMp50<@xHecZQ_neOH5BsTWZ=Bv&^*FYq@Ff67z=7weC$vV1Low{`BAP9!EQs;T3DI zS)$#T?Gv!^6yjxAW9&6v!#0jxYTi)e6|gY|c7`>Y`>m9ITex2o_uDJ|PH{gA_tPyC zamT{Wu$l!u&>jYP5Y6nceUD{pw4P5weps73YeBoZQ1;iJn74EwkJMl1n?!$o8hORs z=&;&n)7g+>^x1T7yj2PLAZbYz`n<=R-(BjxF?mr{ON!<3=C3CEY)r0zyIQ(S;NBzM z1#l~W5;%E;FWvJAU%E31U%GE2{67o)IfO6W8H6w0se~`xR>I#T@Z$(yx?>1my3K?y z-O~ua3hUY6ITCI+>7E3)LAt{U-(n}6l*m}S_YJ_^6J>vQvM=Bm2}esfTEa0Bj*@V! zge?-DAz`zCZ>nk`dZgz&O>aGhHGa<|*=MgsIXU;)*%(_<pM4U24)xiauas>r>Ky6m zt{Bm03te3XU0rTcpcB;gX<?u3M@M6(Mcc1k;=8eUnr>q#@M658?AK1yZVZKvT?;=8 z>=-W#_p6qEo4KEv`|W{Si#!nSH>Q1$6*FJnHj=I>XdB<7wh{gMX4Exm8}l!qUkjvu zo$A&Sli+tL_+5s&wcL~i-KFvDeAqo>TG#bzW=xDdVu}C8^)c=n_W*yUU$i|U2KfL_ z5%9CXp6M6G{i>zkX6|R<etV?faqeg4ek3y;@<Z_>#_xM<J+7`$pGWzjee#WzAB+L6 zq_zWN0CnuN9sM=sX~!hAo!ATg67^^u=u#VZKkTo#{5_jeueR9V!TLbwM8Azs!ykQ~ z{hf)v8?S+z`n`AHpAR{9qJN+^4|gce?m?TkRQ3<~->BmP$PeQJF2CJqn_fcOv=?m? z+Cq}u7m#7^d4X#g(wx8&R@G9yMB!~x`luLtwa$GbwQtor(Kcb8!2M#tBl)d_ojxjx z`)!ead%2&5`<;@0)HbD$GIKv_pJ)z2@k7xj9mfS8nnRFWtI;OKl3X#C*o?N9^khQ2 zkSDddG?oy0vfOkKw5jhq1p6B&owiIu-CO3papDci#xn@V7!-BQe`7e@-tbH1epLVb zH#Wdc<5BY833*S{c=JAy_&E-}MW4aPVVx%hAJ4AEIAg~WUar)qJ^d2&6|$x}a|&&H z&p6ce{43R1)e^qMZ(}v&Is<wdZq{uiT@N=8;rcoQddmI47x|IC&hWEvKhjz9BYmCW zXXbvSv!tiw?*~0?V19h8O8SxoJw1#5j>aSk_E`Ct<P(vPCg>*3(Gn0J{kk3f`^Eye z?=yLC^a8yk$b$O$I<!Zme^{I6dwaOsz~zzuk)ZQTE83eKOQk%}-ar;-L5JoC#M>FE z?~ZfP<iM(yYnJ(JjE;%2UlZxS(I2wA=6BkS5x~co>;JX)=5bM1UHtg{%z(_|0<wr` zF={2C=Dy&Q!2qKSg5ZFqR?o1FGKzo$nwljp6^f;lZCXjYkd&2{V~eIOnq^vM<<o*@ z1!|>FE?^qp_qm_@fngZbzR&Ob$M5wTUfj>U=iYPAJ@?#m_hsxij+WNVhMW8<xL+*y zdkt<Hf06$_@OLBY%;yd~uPCcG1#jhtWZr1ZR1JP8pR*8`cqo8PdzDF=QfKwux^=0; zV(p(G&kw+#+TiNQF6)v&`xA^CXk145?uE7$>nl9pFMlc1rZIRG#z$1YHzJK!5ue7j zn_&O$lILXqQs+s?cH&J&d&ePN)_qRt4-Qy25H`kS_LGDC*A>D|<1+GJiL`O%fsb`5 zUq;mVQjzxF&qdjZJkdBZnU!K}7W*)jAMs6lWD4K3wmKVeX)P@Cgz8D=UpglIqHk4r z1mkO<t=CTEJ1!BJ2Wx_3A2Kjaxz-=+J3(wz_z|>oSg(|VnZ*!HcMYYABUqcoU7$4@ zKUxnDtX5+zQQx7I-|3LRPYCexZb*vM;jDVZoU*_fz5ODUc>ai&*>%U5QdQ}gGl*OI zps67fYbL!AXFc7G9D+R|oR!K{scH}hhSj*P+gvPs8)sG|oLy1j42v3PS$wMWm{VyD zM%?d<(ha~pJIsBfdSeVZOH%QD>Q1ZHSW<r5=Ad&ZD{U(SS3yqwrGdH>sSC&Lgs~;f zmp?oHsO7iNcV)bZD+5<!-jOT~()}j+>uNx=KjyQ2fH#YE(&zMe(4t=UyrV`^>ubh5 z5cnL%)4xf5bUrGz?g7>*Dgkp_*!mB?f5P(o$gRNh(bq&i5coXsJE^YI*_e;+Mc@qx zii>;|>HHye(EoCFvE{y3-*b@r58JB1Ul6B|-JrXlb<q96x<qY4{qCabqEGwqam%Sw z8-VAp|6}5+z+ZvCiuKj)XMQ?_M-57jk5ps4NBwZl&N7R-!xrGG^?!_66?jJS(|?X@ zi9fL*9m1n>RFp;+eV@vQEW0*rm+>N31)i0H^nbA7x}~aMT@LWByD1^^KGs3M3lBGT z=<%?n!=M^R4&a>JrGax<uzsm(gziOEhz{XVzaS05`{nG@mizKvlkw7)2Hwd+^v|hA z>ON9+(|rWIz8y`GXRuXypQ?lY;PN$HKZ5(Co9+wz2IsXuQjOA`QHAOd7F7cJ9OwL6 z%bI?#IXGU#eSzPyQ2j5eXkC!HyY3O-4GSF``KT&H|CK6Of6H}CEFq2>#}>d_racn) zrmDL>SUo~FS{<UBqz;by8flyb-kn1pv~+u8JMg;cw^$wtd<*!))gyI>!Q)im4fh!r zxm6Xa4^@Zh56>>MjQ)JHgWRDpj|YaTyXg;u&%eOu0(DqaH0!R9M%ZYd#g?@rsvP8w z?)OAsv^rEjTHQ_819YdVdqf?=*|tNfF#Xhx%Pfa?z2_kJp@K&P4}r(Sp!F~HD2~?+ zJe@~aSl*+SFwIs6xzGRmvB2}-@q((m?mx&o(VGW35Kp6%$}NZYJ}>h(Ugj?h`TYxJ zLwHjJe^bvsZaF;SU75e3ZTWi><wQJf(=V}H_;6dh{GEpkiKhiCmRQy%R<_IED22cM zPg+I?z1=Q<PDz$u*!=aD1sC3Fm%npDeuv+A!ZP}%=iBA)Eg`?d7fLM`rnN7>QKEb= zY+7vDw)VYt`FldhZ`)H#EK^_J&@O+66!{sRvMji1OS}Bhc}HHpi`G~!Jhi=D`OOpj zjlK=}_-&&bf8CO9LmA(t?w0ff^e0-~Lw{Sva?5QmyaxVy=%YpXPE~hLQp$B|#Qm13 zP1|L@9J1bxR);1{Rfi<uVhQJI^!}$UqkrEd^K^@>bB9&kfzvHX(YLABt+Z@=qekW@ zUe>n@su19WCOJ7TVfwYw{g!R-Y?o!#SJt&K&>()4dayR}Da+x<HhbjfEg_@PXP>Yf zzN^YJKSDlX`O7T}z82-@#!sUtyRZizvt0Q4EzkUjay$IZD$9bv7d-NFtB}vsre&7V z8Si@JN71Kk{`a9=w|SILcOjo`l}jyQ6_p<OQS^MY-&)Js(QkX?=P{w<+irT;vfw}O zc;-jczp(YIEK|=s=aHW$MBUr==?cr*N4B=&XEg4~P?^R-K5;Be|7hYe%ZPj5b8t9s zNnjjgdkY&Ch4w3{82l8YeLDBw^_E*~8yw^=p89ZLu}Y<%tBMAWDrpPKi`wOLCCe<2 zI=0Ad^w>uNx2OX3Z>o9&Cot&+(0l>ujqqDznfuUo2f1J9e{bLm=nLLtLxB^Vv;;JX zhmuj{mXen@f}bFL9OuVZpTUMltx@?V4F=7@svv#(Lr+*9KJuD_!&55)2P5uK)%8)} zE9qCz{FMdj-&pmu<<Cpo9pwHs;r_s1G4K16^#)Er(mu&ozfTI(U%#!~a_^>14h|1^ zFmNCGx(}tnQ7<sRq$P~_@zo#Ov&!Ogwg&w82!1;26IkD<Wvp}3V9*?lK3DqgNz397 zw}T%^KUnb7OLb#ZFQ!WJSNZ8_-Fb0#nWb0eW(T?b$F2_aR|V)L$fp<X5$(hHcOTXu zdktG+k>0NYKazeQ=f_|FKKSXy{F7=h{;7e#asMhy*75f+29fkN_6GuS4od%wGzd7I zlV)>%Fb^C1w8i++TQ2-`(#!mGN?M6=#!AF3x^=DP)YKO+J_2l78MqQ-oYm5RDDag; zX9D-Zf1qQn<@2I<!A}>?&&!y@(mAXogzF<%B&`)js5E-5L5e(+nt(A}JjQZy7}FW6 zE*5^s&kkOg{x<yD-krOkR!5aBe0H6A(e8CkYV8S(8~GmXTNr;fs(q>(Fb6x2I{{}g zpXK-N?+#lRQfaCRmvE*4`+2qM5bWOtRln2~dvzFd(!HF_8(E_U@iT9XZ7hX9?WaBf zTM5H%>E;rQNt<-IJBx8}j2>&<u%E%cVBC2+(;8BJKkz4GKYzE5Ra9X=FdX+m=)4A< z?d%WQO}H0h6mcck4SF`L3h~4H;4U%NAqlSzbkc!ar|uR-X*`4YJWZ^t&(mQ)7&vC6 z_lZhV{xaguwC8OdFR}SABR%f+W%KFmE1mPAwdAp&m2}slhcsGU`Q9*A(H~)S#__>- z7eyAlA3m?}UN&!KFPyu?xuz`46|7R&2?OrVjaTdTMj}oW&d=#gY#z;ppFudC6No{+ zc3{0QrVC_%dxXTFguTmoxG$sdR}J2hz}qJ(7Cj#KLHBlG(Mfmvr+=bj(beFUhjkWV zT}4<3izeO=fltmq<~<?AfAQT9?d|~ndxL+Rd*J6t?_E^GBC<O7g25TjSu^3ka<P1V z6!UeSk6P$Ot9)GFl8-qk=R6DDn+)n_w=m~Y;M#BD=g$J{w=h2c(P~O9BPGq=JXN>7 zOp+>^R6#T8EZ>rQVzJGOJN($+J&L=JT9o@-%!g#X3atJX_meP=EMKGQHh#TIn!OZd zU5WQtp6zU`$?lA~Ob1q@;O^tNQpFmTG;#gkxMPbl!+p~znokk^{|2x%^4@XlJ3bet z%XNh76wX;b-q_Su_BXJ3iY`#u?!r0-*Cmv1XoClQlvQ)tpuBilK$jI=dIRw%pKIdh z4Cx#W=EVpLJ5h-}ueX}$PGvCmn>E$R_r^A?#696p$BH!_q<t1~=bdRAcL(+(J;nv^ zd_73SrF>@LY}4fbdgj|*$2jkuW!~S1OqWsKK|?})8g)vhL3J+@_uTi)h!{oZEUaqH z36j%%;D-Lume<VR+u;>*djLBA8D#bVbo^7K`x*579M&2r50pN+=`8c)lWpl%o@j?| z2pi=p1NXT)y>G;V*00Thj$nS=>g<O5xdzR}d%ny=TgR{mPj40|Zw6@2-18-;6TE)y zM9^V4%RqObOCg(B;E#ddBcMG8#?u*w|C@A1dPt|wKThXv&-poZcXNKO@sN)8AE$F= zxv4#*^N0Wc_j0QTP51Ko>I&(g4cz=bOvJ(+=qqtIOYSSbpmQ@+o(KJLmUAInheKvT z?qx~glB(4564Ic4G*izuliy;Td3_dsq;r`%wwc~V;kZ+lTAn0-oPWvG%6c^TH{83$ z`%{%T6GnZh2J|*Ot7@e6C^EZKRH2&2MPIVn3m<w7aVyuV8krx?DILAJg4Tb~?$#jB zHQNuf#_jtgXXQ?HMdcE8P300F7+;tUHJ8pIjov;Lf04b!r=pSUqdpbq$&T}_I7{}k zz7>Cxt?E#5n(XWj6@S2{G%B&aREhPa?SK1LZTO-i-pXM}lhRees9}6yd|^7k_`zsk zv@kjtJxoWKPB5Ko*!<Ell}U@oL_kg(hNzv}pH?;Elq=p8DYcZTm{W(kM{WP_Cvk5X z?WGNQrm;p2w*#xQU<aa)r}p3dyig_1yR~iuSal@U(elurvM1siGf~bH5ud}uV;jFh z8r=Q9y5cS5mAiZSRBTq<i+w6yQ`|><Dqd0CM&F8;756i~6&n<{)S==9#hulm;#s&e zk@hg8nThsdh{%JoPIn`8%KdznhT%;toRbN^9_=}Fk@RLJZ;zlGbndP55}dKsmTM)9 zXJLPHLGYboYzz~53r~?6DKFulNlu1*z9{k;bbhgg`lU4(C#*jjbGjB|J@oH5XE^3S zB+k3zJl$pk?!0IO9lXC(u0a^ipmKW5UeaK|c}e_m2$!K8ep7RJxP4dyrOWT}ev9?V z!Lf}7&?G(Hvr#pf(g<hrc=Y=&GL7)TtWnpP>WoA_XW(p}&ezzek4|jF9f(i#T4Q6! zF^P@1<M0V!oSS2(>FqP+e08|w?+hOxuY)%0<l^o%Y;hP&515`X*T7s06JEo77ms0D zm`*SOFu^e0VXlGc1#>-2B+LMq!7#&NqG86s7-38>=EY+ukJ`a%XZTa9#ypg3cz1^P zL9h;t_oS4vrE;bBmy|c^HuS~a{6OZc>&vQ82DmR0SJnKM(o)rdi-kTI+xucX-vMKN zKdjekaDP{ecl1;ht~&7ybYepvyi)^Nk#3MIDq&x`%ZxaQh&v86#)6g!^Mr(|rll(W z?$8A>){h15GbqEe*z=kO`)z$}<G)~^!T$U?wJ+uc^8BC?^MhwmUkHEHrKZi@V9s4^ z+RW?7=`j_ros#vge&^r(+~<nFWm_BRQ>Be$jauN4?ip~Oske5=n27GsiynACq@2cf zrDJw}Eb(|pa6j%R)MY(%6nE{1ZRmoxwIJWoHdZz24ykIyBvsY0S?a0?lyl7dF3y-s zJ*r~%NVv~|deS}C8PV9q8F4zMf^@8Qfa-SW!6j-NPD*SI`t8|y;GaqB!?t2<L2<OA zoHF50<26^=ZXn!X`96zl*%6KwbutEZlFpO=LbAb`*kv%kVlKto=|@zPQEwY@#=Wr@ zblSdG&L7T5o;a#rzE<;@4F9AqTU++I?8aI0wWJfry0NOoAIW|{ACT>17$+{kxo$d# zO65!COl5)mLC0Ej$CbAu(2d@xZ$2>8R!HE(fH<U!M1$gzTcN{sbSb^R(y~Wz=`P$G z#~Tu^bf3ZancjiHTT0LypXz0>Nmu^l^GH^m1vp}fs)&~X^o;H<p6-lsIsEIm%w^fp z_>^$+R?4!fM>!k7qjsm9XFBUnvf8jqhDlZtLN3RItj^xXs(QUEhu^zfwrerR_yv8$ zuPFBckQv?6Q1YvFksE*0fzmHiO=c)7!(UBXN+Fj^cbQOkTISeIxHC_(aqUZ7<&lMU z^I4pKUIs(`{xh&67N}a~|25<v{r_fJ=Y;N{e0cp4<#HuHBbLg1)?QNhY<UBdiE?%2 zYcc3cXp0OYOu>n1kY?}39E)(3zJ=!5ygxDbDkppc+OrrsmjxQsuDR1_PZknC|I4cB zPL(-2-nks_I?>xb=BMHs$3GL-7>j;4M$(@knbo5`iIKD~|AaKGPpBHPH^$Fchr*W7 zr<0EN!dPcHWXI(MoKnb83p$bT*FK|a)PgSQ5Scn3RjBGx{FeqvwT{*+3Pn7^p}Ch< z<ioX1rt%=UDD6Na+5q>wxymRI`O4hcu|n#i;_a0xw$ySP(piLY3(1IhCVH-Eki2o0 zzm>duxyU<4$lCb7%Np<b{cp0q@hW9q)+n`-H6EkkW%N&F?W%(`*CZX}<5={oynm&B zmik-jcd7rSewg}W>X)g1rhc0G>+Uere^WnB{kax~`giK*d4Es+KK1`J4xsTs_Zmuz z%8c}z>Nk}e*~Amt1Ku_&{Oy@7m$zYlUPChu`Wx;B9qk^Y(~f%uOfo98_?&^$!rA8L zI5^wf?C#{^4sdY?%WhXaq<$m<cmH;y&M0pK_8vfd#-J@nx^6mGhPIUY+dGfrT^6i0 zDDXnSnuY3gJM<p!d|<6c?h{T!@0EM6ybKU`HgNG{aOuijPgj1Zo#XArrBo;C@o=Jt z@f`0Hsm&mMs6E3zcw;#FWa4Eg=usbBi+gNT@65o_q5m~Y%fsBqO6{dp<(5_~?gF@` z5r#B~b|%ISM4#x|A&V&R83n(XOI`5BAal}~!GJOH#7<(|=`u#<c|qA~!FTxg=#MbA zrZM(k=jAa@_>@kK;qQkzNp}K~N2Tq+9(_<0#<<iL?VY5WJQIBi-b3Pdw4!{mhKKPI zl^KmksC|n?*@ff0&ND(@u5Cu%4Y5`9ZVin)+}}kl`Bm=cXzWh37WrTvi2JORZ{Aj2 z!)9yHw-SHarY8RtGxA2!+N41W$6L^Wc&-rmxC2T29^r3W23Ge5?jF#|#5l5!-mb*k zPZXc-#8MpGN8#fqD!Z08PJR=)dEB~7!njq!ShKx%XIOQ2&>RL6d`Qm2Iozci1^DZq zq%@LS56FeeD`I}Ca|84`;@f+o=?zU9>k%&o=+P0pWkqj7?XSmMiC90TH>|3X=8wXi zs+pNst6S6s^8&h0G2<@omjypccYz=7$?4hYztmyXbWVx)DMSx4pnJLRfSv(s%&q*9 z&YSSZynR?B<l-LoD#A*&Y}j8O!Zsib^Y~#GJ%l}jupM~MDz69Y8quTsP|4IaeKBm3 zJ^JjSN;<txG(A>_x<>p{og&^f=bMHPf-Iu_SOCc`CJ^Uw&oyPxectd(>e<w{Qv8qu zH%BXU6qzkWx(0gN5;7xP(mjs*?ak3akTL0$c0TS-9#PM(g$`{+eWSD~jXqd=q&vxk zua(lAdl06*Cbm)4qSLtl6my91@s<dWvlMsgNiRv4XuR2?J8j=nxmbuf(Jpzc#dY8- z@Q=85#HD&nH2AxOOMRhd{?M}k%x$`2juVLSS`g+(!5FLhR$PR<NSE@W<#FW(byx$n zS9uS{Hc&f6VPxVymO_vG#42v4vdBdl{wvnGNX=%S744HNuIeM;e#t6^0yi^9u4}I0 zy+1_wE>_Wx!m}aYk&rLmjVr~SjJlp|_=TZ#=NxGtketC^NzSluC8xqi(0fuS(K@1* zD(LORFe;-=(1?$9Qd<;pqy_h@ccf6F(}Evd-5L0m|8~Luxdngj+wS;yr;O;|;eub^ zg5PbMJASw7b9JD9n+yJLE%;mU5K(J>LaUDh-!Rn$|8xufl(*dRyI21}^e4;sSXU0< zc|O|`XXh5TI0KpU0OGJ)-QqO1#EIM75=W9W6-WCq=hsv=lUmA7>ZPerVSQ~b`i#m9 zynBpuEgGDW&|vQz@7=+4*VhlEx9{-&ct6?JNGja5Q>Po%nwjc!)E!Y4BZ-DZrX5N8 zivC55wF@2AEO4H_+RWG%>IbRb*aJ~-2FE)i1986-^WgffY_nwatH8TSL0m_$PIDgm z!u5W!${BpG%GqtX${G1_g~i_UB}e@|+I5kavcJ?;sJKos^kbTeIHad3k35a_T)Yu< z1oNi1_2}D(KlE*-9mU*(@bIoRz4e27`h}u{!(Ns`75CZd7WbQQx9D0>^?i_G?0Cq% z59%doM<MM*`=|y(v;GEG-%a|J)EXyA3N26c#aM&z{$$Yekm^j7VQnJbLyM8?h7Pm{ z&y2SN(6&`*!E0y^_9U=p`4i4%MyX1>M&7OK(M#&qkFU#u*0)G&$5<D+Lv|!%vj#FA z6Ytcb{UsUi!5XO~=_=&5s%JH|Q_+z3Jmdkdo|cbBd00{R8?l~r2C}CyXzkJtHML89 zVSHfJFsho`z|t{ww`wBKjA#7ahAfO(*+{Hqpza1^Pfd|wS)~*jg1Lyi=M_@@J@_m& z;;yMGWahJIbIa7!hRW?)2NetY3p!1_^jII)_%`P2-PXl5(mYm)AC0o4aURYvmEYxu z^Oe|lQG<WZGuo@apr?%(0}wAX_jwrUv76bj9`NJ!31deM=<04+Y8fW!%H?rLPrk29 zV@S+RhjHD**oJsByR^AKO4whe_N+VJ;6>k3g+qIk&lR}e&~JX;JbI%%7Gn!a8v{|U z!=y9c{EGU9afDJwz6VTW&*jJ`jXldS_WT)RoRaJKecY%^I;`#XV~w?_D@jQ6Odr|* zJoyjAns@}=5ygE~q(kjw8S+@$n+<;+xR3P4-7?Ins2n7e1L6El?aENRah@LQ3<9m~ z*pF28!TxJHb2fqA8LTItF+fjquzrTVtQK*w54EOgB-S^<qpbHq)v-vYGMo)xK|F!} z;yBRf`T>35dO`X@dV=+C&`@+>!$X)Op{@8g;%5$QX?GT9tD5!X*$OH2HSmf3^kz9J z@sF-XpMtvbD9LdE_(VOSx=rsu)cwTdx(_)k_={Ibp(m+b?BABw&Ie^$OF@hEgIqzY z_E+Yt4Q0b5ydk=PWPB&?<_=?<8%6&~be}D6X-AK!yI14wCFi|VZzI?+dM8XtTd|W? zNTG=^)JE35td3OtcQ2PhvEJ9*=j9RHtp(N)jI}QXe?u8yyf>=An)?BxjwtYk`v9X& zSKvf~`?ko0w=sQUo#T+-Qj|T(F0xxlc|<Q3t(0xA>(LH{$2zHh%k14EGak1`taB9N zR`x>NKVzeZA@1@5<0y<nhAzkcr9y+_c8hfm0B$Vl5^$m4(Hbc{J#zlFUFjVf=y?l% zV61Z~$?saX^f2!02^t3Y6R*RO9_eS<J<=$K_aS%StN`sT`J<dFACwwcU$(i7(t$sf zS2I6UMraFqB8?qA*sw5^Q7GD(=5T6z(U(a`Ye$%zR>aIvqng9}#yW2!{<^baQ_%)f z8nn;56Lssnx<_@7cvj&=-B9o&)S=~4FVIAqO`zEToWIa+m0oNb{vO(bLwI|k?$=o7 zk9gZ+3Dyl8?`(<N3wb<>ap-B1-G7^gzYcuY`V%)_*4ab9pnQU5Uh7bIm9&+z?>$e( z`xJPFAk=rruN3LlYel<pjofZz(0E(aYid8{A)l39@jmoGwBLv`6zMmi{h=``wGX`A zL|;;ewjlz2$Og>4sokV;TCKV#u71TFqPfhy0-yGYDc!vyT?5vGsl9SdlVr>A=K2;@ z(D*u}TaUIW+>ZBa1z)`V!nuskseCZEsYTlqad5RIg5KxAJ3aB}Z-S6!Qx0>|`<mo- z?Mt%Zr$L#=<V7^oROF;8l;yMpa;n9AMv>Ec;&&+aAaQ1g_zhCGmeY;k8T*rX<6o9j z0MalVYU291xdF7$UK;RT2(_bmUo{OQ8kpxhF}H2pj(7i`#a(G?E6#!E=Ww>(oj=~D zKHJiF9<@uMQ@|tXydsyyueXG&5I&K@F^^HgIgOnzIC*G?fK%y`m&ISSg!i5<g~n32 z==Z3t=dwTIf-_AD9SNLL%!$w373;+B+srNvSs#{8@`^`4MSHow%lTFKn2P*SnNWX; zx;ZgC7;kx_?$~F@^IP6$;!dE_XVyXoO3~l(xqLtQ3_*X;&)DfVl7Y?!_0$F`Kkb*& zWZEyIvn58HZMt;VB+Pj-F!xEv9LR#X&_wL-q+x%@m#<Y5-B{>rchI78*$r9In~ou9 z3uq5v3-t65`mybC5m;l#Tp9hA!9KSEYek#!z7&sh9(^;_-9*Tc$Hg4EIqniUF1`0q zk2<Zyy`({0#G$wf5BT9F=$FjTS#rl?4WyxI%g2O+bW7p>fZRj}?)Tw#)oGIFM))au zp8z-MQxMuiMeb_UmrCf%7W}3}BWR9P2bDLdtXn68_wB0CnSF4-nxQ>AhV&y4hIPS) zQoMVDGnM0y0PijME3{B{7%K&pON*@yD!ge>0NOMMCmBV;-vIwS(2YP?IO-X1FP4Ni z@U{-Jrnav4ySR4(d?_HLoM_RSQ#i)IYe?p(6LGk=b(6>w)r%70cFi~W7r=i5cvE-^ z2jAp>;8Ih!`{D2DjsE7fIjl+U!I)8tHOb}B1>F%^kJ6r?JG`XtML(n6mDq5a&j$gf zef2{4K_B?L+XUYUnARy!XDw&2Rx=#-Iqc`y5r@`j>Oh~b(V(xUH5yt|0L_dZ)JA|N zUt59B*+8ch<wNTmu4@!Qu4@!S<#nB@z%@W$6<lSFA_!{~!ES352IyY|c$)i{-$>#q z3hgz)$1gMukHFf5JkI6oZCHPZIYeRmAyX>r<#3Ze^SpRiYq)fmhu=b3>Vvh1j;L>) zQ13dU{&hh;^vBvm0M;IS@H+)9=P0S(CT@}VJ|L|@#Gp;2wTZG-u?^Y-_e59sl*iF# zoc-!YzxnXhJ<-d1nUf;%PN&&!pVv#$Cs8@oA8UGy>jmP}?~<ZJfOqa=DcTJF>#g`b zGm`Tg5?>S3Lw2>xAiF|Y&Xv^m2)w$zQZ&(V#cu-b%%zxv0Y3(1*K2}2H>pQiYa#DQ z#MMIPp4NMMA<O`ok}QcATBFfONEdH1WnqqEfS->K3!*eb%qC~(M3Yndn$d~(WM?i# zxONM<L-{-X-EbB`D|Ksg_MqO6t)cjslQ*9|;CZm$*}yQLInpXzK6^mn;r5XYO*>;w zqiyALt@FJx4nes$puMMg@9uN=eAx~2gs?yF{*vZdKY&iH8D|slPL2leZ!QOoNU3{y zL^R{`A*=<IOGj?5P`$6>=N3!oEJq?67Tt%=!F4}Dck6jRUz41nTVRmahH-2dy{D`6 zzcWTip<29QcO3iP^m`-q>d2^imoe?~;ZkV5%a~R>3~)T!4d@Y>?h&Py<wM~Y!<@H~ zyr-C)x=AJ{&gq@*7rY$rGPBeD$p$<CwiWLTMFu<&W<_}{#~Qm8>ro3}yO#eVDu3kT z9Lj%pSa{dELgu{1myO^uCcWAvRZK@87>m5r74tqV;Bm;NKD+z6h^h|GsaOZGkHx$T z@gsajjij=##TX?K^KVU;Zsk3q(XRqGe73KX#&$&SDAq9VfSy(+$TT^v`M%DQ0Ib1) zwiddAb7%bA<Z+}q<E}`$Q&^#cKi+#hk%PG}$~B1i;IzR9Pyb@f2#q?;iFJnInsBU3 zq7M{n?Y!<^hd7!(!4-e??!JzA>pms6aefzd1GNcxOT)Kn#+#gZ9r4>DfvoW?+CKC* zU%2u-2t2bGndgYRhHYJgK9qQ%c=UD~#x@x$)Lk04pAC#{oQU+o$Dsd58%2E8g`*wa zHI@JFnPyiQAIJ7UouT@p)SJv-nlkWv02N#g(4i)k_QbAJO&J?8_YBX%+z;<$=sFp{ zq<r^)Otr{IB=VvCO4X>VkY#)v{C`60_`vBtF{I)zoL^StPW8QZl*q$4wpA%-T2nXz z{*Nq0`NU%_;U|>ONVE$%D0AptW42~p<Xyf_!jFMoMTE(H2*=0R`8VJjMzoaQQN)Y9 zerMPP$N^_wXU5^32v2PY_CcE45YlOq2kE&U`Bg#w<lc-vhRTaUm$Hz4V+Xc|a5HeW zcEmY9uB+N!!4>s4bYB;hWpo~g4wDX<&*JQ8C&&l!`k`H#fjSoj`lLrxC*tvrS`_G< zfbP=U$OG*8TVKX+5%sh8r@P}7dcwp0jT-v)7}}2TOKkQYtY@DIM>`jcGQjWO^Z*{o znc7&bYk5pmH}(+a(S3Gk#b0{Xtou)+40d3SPW36Gy)x(#+xR$ST8g<kjo)Y;lJ+-Z zaef@*$^b3oawc25uIy2{On9B9x`nyjeMCP}roX#W!^q{9kcxWf1jVUGoMBlZ6%kLg z#EYH{9l^PuI+T?Paw1)s0~(cmJ@ZKCa}_-)1do|FTt-iDC!O;~dIden0e<auZS~|h zep`>;a;?I-_=ul^D->RPFZOk=K$+8<sK=x9>ymIbFX}^8bA5T1`Zx6Z^ls|$8+7a9 z5gv&$zYcW*<E`00V?B@BfFsD?hrT!uiuwE*l-rqb{Js_BL3)I}Yu@f?5RY_>%2Ps_ zVUMJd>hm4YH<AsV`5`||z>cYj`0XfK7uMX3Hvt#pToK0PR5z^gsH5}_lM!oWu(gq~ zjVr0$acPgTkmh%oCs2Lh?KtLE+V`i@Tdo0G>?@jq&+9+JiARj#JnpklyP?z>%FoS+ z_y0t8Xs_o&b_V=*k|MJbjL$fa;IEO|JG7T){(JYAG}e`6s9h(a?P);VsknbZZN46I zl=BtD*EY^#t%B$oP*xh$HAxB`9|8HRrLgj&>d@+^v2LbCo?Q2sNOm;lpm>yjYA<%< z_m=E%^ZjSk>t$iF3w-b!Cb3`1@AD{fwxjQNl{3kV&X`|qyQJvMF^c1|@1^iW;fE2% z^LRaU68aP?^7a$-Mv~OyNw-v}Z*|ajALvse^6RTrV{bO*&_1Hu%X2)+@8#lB+N2Bg zcJ}TLQu=XgtaCi{=>*1yCs3d5_NY<ydyUZ}@AgSQkM=R@octbfIe&Bh&gM7gkN0L1 z^#+{1L|a)7eV$?Vb&kMqznr5s^{gBRkKp?Ev(M#oSd4EhwDwD7p{!@$kG7lY{N$r( zhr}Gdxqo|A9w$-w2!zuaXOb7e$~dR@Nft`&3&k(Rx+t}O^g9*3@b+3G^lY=z&tU9B zeGwai`bK+gLt&%*pBavN2Ys>+m&XwL$Z=KuQIAv5z8ApIdoi=n#?zRhBk*FRj=YUu zPkbXkx592JX1uQp0bg|fI1;?@c@bnu@L<4|qK(zyE{Uwy?eB?_e3UWrJ1C>$I><TE zvz+(T%W|IK*H+F-Sya`@I7uB^aHt&G<HLx2k&bcsq3_{%7+;v-rg4t86XvzhMP3gf zt3PoTfW|ip-g=BfenPu{3uHs%C4~?BF_{mYsx=>^7rfmLEwzky(V_aIGQPYHBI^+G zP2=q-%vY28@O5QN)M=xW_7X79w@{capxhFLHL!s$en}s!u=I0*b(O0ueO=%cWsg|; zxWKyF2RRKoXQs$0a&6P_y%+g<f}Bq8M=eQ6C)hRKj;FXEotJ3lr*0`f-_i{4zu%&9 z4c}VM&sH~w;~n&<6klh<=f-I5BA@hn)F-<tbfgaX>xX(udF(gQ*BLd**Qx7*`it;r zgq`?SmKXYv*1y{eS<S#cUR0ye8H#i%eiHDbKttcdC!NMMFJtdz5$Z!G`p8A7C(mG9 zPB_0p|8$s>>kw}RY~q{xPdX1d1K~eXIM!BZU1J68s42eAM$Gx^J~l>2sM*K}q`iUW z{YQ+>sGp6fo4T2F=D>iuLi5n0s3SiWOBH??FPHkG{$hNEzIZT0{UttQ?(lU+WcfPj z><sA=t^H75IsHq1BRCz@e}zs0=)|Irt{ckx^w)Oa%n#9_JVp_%*HnCtb{=ao)Q%`~ z;lv|IALDsSzaH&j6y$sy?cs6omxwjjrfacJ3fYh@@OU}$9C|e3?ZEnIUElGM?r~_I ztm&nVqIr@Q^tc{DztKOoN;?uX=<G*(Y5zDxzT2q18{@{iwLQ8+7Iol})(kPnuZT3~ zjUw9N&`o##x)Oi1mU1Qjv>N_<PCt%dv$dG_abBT=t}<$>#rO?!JE!#FZy2MGfR9@6 zkO8@K9$3&!3Az*hF7{UMFgf}BhT24|9ci;nPSRy63mwWr=QKL2v8QClyT@9TO9S-f zTQ%00(Ec_4g|#fPp1Hh#%X;Sfm>XQWYa-TB(y*SAiglF<SYJuOdS)`#Gky4aCiT&j zuKQT17t(cKgE$M`en470zlgV-_Ss#=R|gSB^^$b2Cv=a`H!+^U-24mOfYyBl{q}*U zz5*RZ5T9evn8HIm`hDkD=Z6pdP3o+#xmyZML4O1Hcyhbbi$}XkyllXImq$_NyWcZ9 z6H&i*Z<F}>j~&%<mkdUBarab{Goll7elo%2j0#}RT}dWqpJ3+v=JmM7ZfbS;*GE~S z6X%x>_71N2YNu4OM}@p&?e5!ur!;E(msob-4lL~rtHv(2&_4D{YOHw#;w-*8^aQ<Y z8iU{ac~+^TlD`x4n_+tVMwRaF*oS69N65V>0PpUi&gA2q!SB$K2c(elnrEa6`fUL_ z-VR?WbuP#K*aM#-ef&Q5iJhQ_cWl3S5cr=F?)y>&?r-cpiMWLO3hqAc!`ZY4?_~|j z-MxN`)9{<Tn(+~f{hbjhi5Tna$|F)V{LTs9a&FWiFWAd3S7R@R+6Wro^D!aHWX~r? zXBFnYdoH9pm&2yBdplIxa?Ld?zz2JhD&&Fo)VJWi!VZL!ys4f0@j@5p?hyP=1Ma!f zzIp`G=>z(F?f{w5Z!9zPpOq*V8Y7TC*Ten*>#*cj`u2F}miyRnB>Z$}Ggm-{I<%R3 zw3+lfi8$Mpq0|$utMJ#NjtzxQ=Fhq3q0dyRihWq4itVJqs$5*^AGj0w%<@Gwy_VJD zw@zv&ypP{dsli^+J{bDla5@vP9`jX(vtZAIh8?`pT=yEd!$lj(bscGh!SB3^t#LnR zx%ox8zfsN>(*31c$cggE$8b1Xn27SHwLMQ~3!BcO-NV^Jk}1i_^-N=vr?ZUD$>~ww zLu<t(Z#s+kBJMFU$jdd|JnCZ*w&(A*XBv-)boHP^H0}i72JoSrUmO8?m6zoAy<2#5 zKfl=atmWpXTg&4*(1}HzS9E}6qS4CxJR2aFdN<ybJYg-vG8=KRZpGKNHTVrq%8PPm z4YJ|wTvNR2Kz$$8tc!(ew1GZo3w_Zhc0k+chc#y00aCl%|3O_WLz>O&{WxQ)#hNJg z!m8;!ay`<bwSSCr55(Xue>T=aiElc?7YSR7I?m4|bwVAWeNC)oDs`z6WzO@6xi#IZ zx^!0}co+v>#)2mkcuPS09A8!6CvFya=Dg2<jwC`JH194$S)E<O_?b>BTcX>Q)=V)b zX~u&t)!`f_-Y}1P`C^m*#u+WYeMR{BqD+4vT?QZhk*5=wHw~YX(wL9DMI&!imb9MR zAN6Vg>d(O6jLt#zM*g03Qm0twzdkcM2OD)2bgu8bx?=6`R40(PfiOC}36+F*)3M$e zKzp}0p2heRZ@|--Y9MUP2XKBbWx;1Sb5xVkExkqx8}cdMbX@^B32jM|Bn7+~up;aP zet$bg%}zhAdSWe|`NRE}j4152L}+QhCFn#X`p(_hYvOyy@v@AmEivG3L>}@*{c)!s zp`WDh0`3Z!_U`GtOg-j~bY2E)f4mJ01?_bzHarD9lU(|dT(Fnl5Ar}8dSDUKe3sVd zP{uJRy9&r}x3YJg(~^EH;!qk``x}Peva33w!udy(9p>p7CqY-4kJT(-lW+862MTEo z7URSjgLUiD(8kl=$sb71KbswB!oBSWpo=<{6;Dv$w_eZ|1%Mvqe@8{qh3leX7oc6p z&@8bwXr$nBD!1cU6QJK~SdBJL(5e8fibYbF6Abzj09r9BnHB@B7!_zOo_N70LZ(%Z zeu>tFA_wc&^&1>pwH$P*?IyY>uzo;$rL@mb-v{rW;a$E9SO*PPhn?ur?eVoF=b$?} zH7){Nk2STMAgjqR-7(%hj=OoZPu2(iWvVc|Wsvi9o;qx=1X~lDbuGmmFKPE?0%qFG zYxQj2)BTMj_TqPa%aghMbth)LwsI}e82;LdwOZ6ms$Znj)b~(d728oRdo9kTS7Cj} zj=H0qpO3{G$gXGFZ9m9o+7V}1DAqeDeL8<m^zcT&V^p6qF<#|$4|R&6A0`|cGu6Xi z3w@z>L65#vi@x<voMmrP^*B-AcYWA$wKmF5zgf^FwsAY=cn0hZezG7u{YUI|k5I1& zI}Y8Wd@RB5TMUP67vcQ^HO^COq1&WqI17_ek9%Fb{Sdm%^M^Hf;(>Jg7Vy6V<0}Qe z4Y0dj)0q*P4=l%-2~JDsDbcEht}Ail5jPX<uL373w7@^FBVAbI1<>k=vV@-PrMuGg ze@d_0Cq07S;@GoJbIJH+h>-<Qx$nlhI&b43zdgW*jGP}}U5@;A!=RsY?f{JOi{&Wn z{;+HLx?QP--e)iX-U?XZr6+hP{Tb)oM811@;Elq<sQw;n8h!_8xZfdH-WfQHbrCb& z`3Rsk74Q5B{h@Ya2ih>=5$6&3Ih^Hi2SIja$VVM;DGe(7<<$OT+#55A&F+o5iS^4y z8Z#++NM~S3zTvp%)eGT@Eb2jzWTEs;%I_}_{XDcIlyABxMRyk%;!zvK`NY|QR(zt5 zBbr~glg~I7+lcjB^jGp-67^u>O{%6beI4!_kPJ}Pjb$WHgdK)oCh`=EaH{9qvEN1a zf8F_Pb&mz{!f79N51Wj>8uyJgCm=uk)^e%kE6`&L!<+B75M57qUHE+%K}Yj(3mwWk z-No4hI<>6ftvc{a`NcS;k;YF%kJ>o{r`vK@uW6SGcRFyF_bwfNj~D$p%9-*<d}=;u zOMgA+<4jG(M%b0eKhdN1lIW8hXkJWdUb-s@eY6>8=;i*{T@LpnzH<LY$tTX+U*XP% zPxTqx>!jc0K99WeHwnNmtrKanzoU_)@mAdF>4EuW-2{28v|QNR;U6KDtySPC;U7xt zo)YfB!p0oKX~o;MyO9@TX&Kh))z!aZzcCYYXY}h9s>dW3E}LW)3K=^|wsiL)qVHE> zW!PujP5Oa$hQ?a7Zk+Tz+8eBm(D{Mo(Af*>?okm_qPG%U?}zb;gx?ZEyM;b`_Vc>f z1*Bi$^G9#3Q$H5A0PFe+y{x30%6~!}TDv}s{@8#v>~?ie{SoN1f+MGi^M6Rwfc{&d z$<wBKA?SunJ!WR(%!e!eqo7S=t}wI{u^5kFZ^4;2^`@;)B5yc*H=FiZKBBac2QAiV z<T`ozdlRG^boPeiRrDI}i>ks8kvq-BJ;=rF@8UkSsRe((i+hucd$o(Z$i<!J;vVGU z_IGigdew!#i+hucd$o(Z$i<!J;vVGU_IGigdPSyx`W5-E-l=iht0?cAsu-6;8e^f< zZZZ6k`yAX@JLB#@;l5tDPr*G@xPOD&DBQ>4#+Zxa(;C`s!cF@DcHt)7m@C{gZpHY6 z<NpWlRl-fb*YT8ae+4%h4UY2#+*^g4-u~Vt+@HdIK)Cn7{iAS`ZeTpi<L-j{Z{gkn zH-0CX`_q2F^>8y^T^HupIhgDyd^k*gWW*oZDh3>F&mLWaN5za7d|jWY0Y!J-Ge3W3 zwk<JrtT7{f>K(Pe{$79aum7I?=Ep+^KG^liXR9B3`iYh0OYYt9>Wj~8eq-CaAMe<+ z??2yt^+i*|>2p6F`|bE!o1E{xyzzx+SCuWk@8LC1t?g@wyzyT*4IdI78W5uP>7=_g zZOXsLC!695^RlKDm)yNz`GfbDKJw7ICtrJW`_`K3=bmr;`~0b&kDfUB{zsqh{{HZn z2kiyZGv_$&S~&3*>*SQA_=N7)cJudD={xqiVPM3V(L;w#FvpIwOuGHHxwGdjnlURk z=jP}^BYR)pzh4JQ(<SVhpuktEDqnhi%R6sBTJiY$6%Q<1`op*Tzux)br+a@nQuoJ& zOK1Kh5%`ue)&)ifcMsTDFQ&;X3xInl%m}z|f{BJZ0`>sdePMdTodbIsY|KxX9qxIs z?}mLRj00}y9h(HV6=o{j<6%#Lod9Emdl$?{aDNK32kviRe-Ha>m@nWy1#=eeCYTFw zpMXs|a17=M+?B9jfc+{A>DAk?--Epw<~6t<hIth3Ct;p|yA1XNu<wUi0{7CzjNJ!) zSqZZo?#E$21^Y3Whv41>vjy($Fx%jM8TKo%aR#3~19vU#pJD$2a~$r!VE+yK49sb` zzl1pi_jfSg!o3^zXRtqp*$Fq=L0tP~EEOgR?%QDh8+HcFM7WD#=EA)YW<K0`uxG)Z z4wDUcAJ{j*?hg|Q_bAw7V2^|u0=GX*Fx=R)WnpmZVRwd&Hxifxw;C0;gPO69Fj}}n zVP6BADsor22f+-7I|gPn-2GtR2>UviUT|l^w!tohnF04*u<wCg0y7)#beLP<z8z)? z+=;MLV2^`|gL?<ehj4!m^9kJlf&ByQgD?l+{u2g$FvB@A)(AKHL-rf&UtzF6#h!!x zBJ7PYRd8>G{VwdcU|xrNHOwP$uZLL+cR6hQZXR0(vl#ADGy?ZR5mv#hfO{S6r(v&w zset<pm^a~m2gV8a2G}*QUxL9K2<#`=zra2TQx7-JTd_;9&%^u|?)@-d!Tlr5VYv6g z-Us^wnD^n1hZzfZGK?AS$*}K$eJczNrix(Zz`Y1&0o*fT7r@Si$%5Me`+C>|VWQyv z7wns14}%#DcOXm%+&y8s!>xhc3AP^$#sut-=nH?x-S|rk>kvMAD)S4tW&kP${+h&} z455xEXT`^7B~LTJ!(SNcOUO`L0dX>4nCoClVGJ;_!Vtbf&j2@>SQrfq#aG;!a6>J* zDS%Dk%tsC<e;lOdeg?QNX9(91hG_pC1AT|B&;>an$qn&L{*(^!2yrxrQC`SUXAv&^ z2_}53?{FIyk3(@|VWLM29W)@S?{&Sd?GYN>wM$1WDwZcdpfahCY5MY)Kl|hF@3uWY zH)9A@Q~uYnJI0jPUK>6P9yr=Bg|lcDAa!8skcg4XADW84ygY#lMhw?S-KZbZC2&Ny z(W6KAWd2>R2@MOnrXvdo2=Mn0=-f4g_3Y83C+idx92^uLXt$%+wwn{EuXq2W^j*#1 z8;9OFh&gQ2Yz|vNj?Iv7&mNm>j5lz9!;nFPhYlJ(WCTkyS~AQT=F|zM1gpgyZ))Q) zgvF;$NY5}%$Y8gaEOEvRa|#=4o@`2B$!YP-JR!l9X2J)-$)>Rx)^u}%iCN6!5`{Cx zoFMy+wHQ-O)(MkR;!GB6#*{RZ)zyc&0&;M=F(oZoiNVq{EGA=$dBWIKaF~!_o-mFX z)6$a7@n9%*0!ufU#%CDgl1=QER7;#W-5Q^ol0r<yPco$^noJoi%^aUG$zo!uC3!Xn z8#-j(&>@B*`#f8Iv7zrYd%n$J&nYbEYlujjFwRg|kUu|C#xyjCvG~HdHisc%nxn9w zBvOI0vvOuevSeG<w0v8Mp(ty*jiuOf?OBEh+l|w2G~{Px+wu*?_FS8xaGD`LfurUc zvK%G$;*x>+wya!3k<Br!&@s#A7+74GUkGnzltY^XkXAwNoSc$E2aC%p$Q_vK$jP%6 zmpHNzFsrDr82L$_@37|($r9VV62qMidkH)(wwyvoE(Rcm<ieb+5_@3*OPJ#z*r9|d z9wMzQXbMXyoNKoYoC}@{4aGSQo2|f*lT}nQ$6;eeL$<>{J+H)&16JXY3-J`^F>`+Y z9O8#3!C90uXvi;|URW}}$i~v<Wak4DnM^O4lWQ+*35ib_kYF_A%&{2|3=z%(B|~1; zT$>@wK=K)2FMwSzy(Et$m{mfaz!+jEMji@si<vtCw@92`w#{IhYeT6Ta_w{N#rABJ zclLb4@KK`-#aXk8@@>V;BL_-qg#|VP@|QEy5CQd(`6`@4T5u)qfhA%V%$b!9{TV!R zkRf8wJfktvHOZ{`hJwQ8e9K9R2!q-r(kfWV-{1k!(S|}!zfA-#65^zA+O%Rt##bQ| z_uR<||3e}zf|aAY6tJs!?FG5Ed4{4wdqIhdV0e_i#ZWT`3SGt#a#1oqi08UZp5?^k z82=;3uE`e53TiJv#mFk=S~QrYm{Uv!(sKi90o5<g8`QHT3))MqiJ=JoC0V3*#`Jiz z*^rZ$1${y-EhcRkGHAe{c_VF+EZ2q_XD_0P)QT1gYi?G)J=ZWPW9)!Yj9PN5Rc;fl z38whe1T?DYCZi=j(K<HOVofn+;P-GcjGhtEk|taM#f6sKGN(_O5PunJ9LaMydIxLj zSi!7kl+<zKtR{;k)#5pr8u!bE8{<+f8R(EaN+rdVl4_Y^H6|yg%6-M<C{3DRo`Bxa zm~5Wf9z8-pW{eq=(ygiEJ*Vl4GigHlq_i~7AUdT98AkI2Q#<)|jb@&33%E$I#)I)V zWBmB^E2s32a_X8E7riwV{W!W+>sT{-QIDc@jbltEEt+B_zst&tE1QrP<=;GEQaj{b zF|R^tT+z7(cxIX_&lSqc73WHNC`h>!tLJnxOv%Yt(i2yl%cSdycExm)O%ujtBwi`y z)>xNGyEWn!Q@_<>&M+y7U%t3op<bo{W$hGVPfkro?Q6F!YK0qzRxS}r+Fo^Qg)Fyn z@s@aNia9;Sm=T}oxma68nlu5!XEc=<cOuVF$Q0(t7US@quxXxw4FHqB2kMyKhE z3Ue1ejltZ+2Xh^t&A5P;i~uqRs_?-dxoM8mk&Qt_n!PaTd3-byQ(-+pid8Yyr=Sw* z$5eTk1R1nU<%5;7%#KWTup{$L3uIDg5Yuhy&eY4UWzuRScFe$}<X)H$_hQo4KA87h z$E1cEFwgGGq)`!=_eU_*sR*XMJ(@`+(O8!l%{2ZA%+Fv3KW3)N7|*2A@l0jF!s4b> zrv4_C`D9FFQvO7y4#KS!{HVNdQ95|eVA8@2%(o{oscsVH%eOG8_ExMXO=jw%$w+T1 z^YO`Ns*+jECt(TJ3zo7DA1r68&~m1}y&QR2$<zrenNPUHd@zUe2~T4x$)BmZsJYxo z79Rh`y&-!~7WNEb7Ylo#u$Kt?K4Cv3>?ei&lCU=k`*UIcA?ypnR&AEk>n!Y0VfPjG zAYqRZ_RYf17Pdp!rNVwd*lUHoRoMR#_DNx%6SnUbk-o6|2z!LE#|e9?u;&PSrLdn6 z_AA1^v{j~egHyK6!Y&c^8ezXB>_fsnC+xs&a=ch!=Lq|LVZSHr)54B=TgLylupbuo zyTU#x?7(+qyph8Gx3J5F{i?7J30wWHj2|g%i?A09d!w)q3Y#xFBFX?-e8gY2uw}^m z^-91i0j~tS67WjED*>+ryb|zAz$*c-1iTXPO28`tuLQgj@Jhfd0j~tS67WjED*>+r zyb|zAz$*c-1iTXPO28`tuLQgj@Jhfd0j~tS67WjED*>+ryb|zAz$*c-1iTXPO28`t zuLQgj@Jhfd0j~tS67WjED*>+ryb|zAz$*c-1iTVxPXfp2u}J)#681%5YhIT9gM@7m zc7I`y5_W>H(}aDyu=9jnBJ5IOuN3y<!hT-Zn}q$2uy+glps;0b@ScHqFW?4YEB;>F zD*>+ryb|zAz$*c-1iTXPO28`tuLQgj@Jhfd0j~tS67WjED*>+ryb|zAz$*c-1iTXP zO28`tuLQgj@Jhfd0j~tS67WjED*>+ryb|zAz$*c-1iTXPO28`tuLQgj@Jhfd0j~tS z67WjED*>+ryb|zAz$*c-1iTXPO28`tuLQgj@Jhfdf&V{CAfQ)hW>RmK8EmxhYy`ww zt=8g_telzFoV=OV>2tCixoqNWwp#YjwHFk@ojX527g%$$t=aa1T$_Wfb}+Y?)3WUO zY&COe;Gey~<|rh<A3#o4etuyNL7{-A<>VI@+XylcWGkFT?g;L7I0`|TIR+7A&$ktD z8lwm*EV30)P%HrsTUIUsi88>crIEYXW}C_5Oy*EYRtceH5>R3T7X;-2$}gNw<Kx zHFGzQAls~*S;#PRlu80DnonSv0B04><;krUaIvk#T9j2%VsjJ>9zlqYQ^4%vLI+Q} zk|3}vBtR0EtYedn@m8i|Dl6-2Ofy^4C#9vOS~AkDspH1+K=xZ0(@ZOL%*raUvU{cC z5>S|B&9&teLiAR4pE{j=tr^Sy4luEeLGgK61qHTzV{x&4dciDPK}mXv!(K3*y%CyX zE6K{uD#^;2Ut|-W+e2?Lv7KSex0wAXWusVT7TXuttoCAS@tkbrg*~d8Tj<EP7v~ht zB3f1$$9yY$Pn9#rR-9);Zh@O`o1T@={!$g$b4unocy!sTRLxXbvx@R<R!3F|_h)}g zD3g+`Z1}NC6;sX4%D3mT3YAE2ol4ENmM}HjPoIk=jH#Lv*sS7WbOPn%9E5%_moarg z)-0C<PZGU3E*_^_qMt*&&GQkjbOAmm@4@HHBId(3-YYStDX`ti-dE?^@@*wH_OW^z z`%G;wutVO*)Wz(5pXtacTi3y1BcUwO6gdiWY{kV^R;KY`oA*f|bMOGjs1T<(kNu#| zp9AZnpATF4CA@v)B4f*Z3a3xEvK2mK&B-QK<wHu%w)pt4V~2pH7Ff^8!LQ1}ZzH(u zFr`q*zq|iK?y~Rb`}_}-ri~r;nQ1Sw7NeLU)@crigzeQZ6<Gem$2QZNm0etzKL`0b z08iqe*ygZj<y#Bp%*saHUG6)Jt@8C@JANc;xx-QMZ8<YZXR3XL%2?SZAnfJ{kU>#l zK`#5y7YbJBu(4AJI{Bj{S+m%FU#2Q5%D3lamDmdl*fHPye0Chcn`(*Ol}G9O-BFJE zS8LQ&9f0~s2Osw2PlVKP47~Uivj!4*Vg6hjH8-R~kP&gV#&4D@qig+23QLfqVy<n) ztkN$>t_JKyzijrApIle0MTNz7&e%CWNC)KDgMKag$&OQb{X)q<&cB=Z_Z@ths+eu_ zvt~6{Dz*c--|+BbJltMVY%M}<lsRC>{FKVXP66{2$GphDWxrAiYxwv1I&!bB=PB^w zW6x>k6qMNWQPXm*h10C83L5tK2|}193WIIe2u=AAVGVDqK;qat^j-EIeap71pmG@& zlQG50mTM=)jkOq4OjfowWKK3$4wnX?CX_cO?88u|N}n<zo;|HiF=ZGNj2T8N`$S7^ z(o0(Q9vtZz7W0I0Y^yfeG=Y7fMVTI@#5VKqR(zQzoo&_`)6$a7@x}~u>IADf!Ai(m zJKmCNi8H5L<5N>oOcOG!?8Q#;lT7J}CKKF;JEfW9GbUNU;AVdyB^%Q-c(juN8B@|s z-1*-C&>5GJ$bp6crsA11PZ*nOWuNOzrtxX1W}^FEN9LQtD)s5cl(b}%)nd$$<FD-) zpJ<#g!ITX0V5qWVoEgn)n#p1nnB@Cn$BfhrW3up)F*kN(YV!mu+om^8MpK|q7@j^U zh0}PwBU8mCr^b)BrkkhAsr;aq1>NlNU`HSJ4oSuxv#g^V<{Dt`;FA1+e|Pimr~JF0 ze-HBSH~jk@|JLHm(DeVJ5aXGa`Ci*84V{W9F*P~CWMP$^m`aw&gh?rJ$Tem6!A`P< zq>de%j&dNcHJzYHoOT`mp5)(Cl#UAJW|=}*N-^x~1Y$~&%Bdbi{01K9BE{)oX0Lb7 zuoxjDwyaBvDZy;CLNkoXspG6Jj6CX}Y%(TTA!g#?Nq>te-DJ7NB<s!we@cZDk<)m^ zpQ$D!m{1xYcZNpESkL-1wM#z!+u4PDL+4fm|L*L=N`K;&g@4QNWgT21ALxR}?CUP( zbW1$vsG&=<9{$}W4SH%yNlP@Qld6K>Wv%&L;g2SSNU9V$|F;XWmSB!I$@r^*u$rg5 zhJPRD-zWLEl7FA)-wph`k$*Sw?`HnpiZAQX%+Zp76f^3!0xN}67LdRm47k;tAnMG% zfJBpdT%uge2Ls|$lT$4+KeYkSQBHXWQC6AQ3jtL5T}t{FRJinbi#d%~YL|fB0cnE% zVNm&iQ`ybGpYrd1{yoUQ-|+8u{9DVv$M9t;xoKM8l{&2nygzbjot$Wu5}_PWS@urX zv8kyUaK(#qc`=Cjrn9=Pt%`R|U>sW;7|%`wPBmFlt!Yp!Dy6kSOhv8R;y|~S;padf zR`-)i;#dy?ILUcC#d)LZ&9(-5Xe-u$9$G^y8b!1*<9Nkj-v+j{1wVq+8BVH!e=l-^ zawB9lrl*_7P2f!-G527Q$Wdhwbn_V3P5v$8-<ABk8eeFBh9xy^3Tj;frH+<5F*U); zeh$K@tgvW)d?AMC(=p7;E6jC~;!BXCq9E+v;54Hp!%RhqDrSLRvhrYbN1VKsJsLd3 z%DxX~KB*RxI<a?vVxR*d*%SPAu*G;Qca?>h(&LS2qni=fgCXdxIKxkJip?QB!jiTT z)*wP9kMKPIZs6aI6xk;^E#5jYInBzx3TaiE_jcpiVddR!MQ4F*@a7!D=y5!i<;ZV* zs%h+4D{5=JIi0#9V!SaVJ<&W?t^-X-b`wu(GyiUt6J$Ski%*@9o?%395;q0ChcOu? zg%nbZ>EqcdjFv5N=-W~}1U?cv);yVbX%lT7_(AeZLy?`fq0fY(0&*U9@b3rwyPJPM z<=_4M`*^7u-R%bc-Oays{M&#pQz>J6Ynm8?yOjSQp$YO-ft^KKn-&A#FP)w4ZpQdF z9iyN*#p&{(>hUlOW>T%Zo({{vM5&cmby%{kV0uYjE6+_~w>s=4m{z!udo#>LGq_fM z?}W(%FOlLyVVDiHLU=w5<EkY*t4rzo4ga3v-?C-oQ^~(u`FA(IXhV1rivh}!un7sN z=-B1q%C8`|X|WHYZROt``0~F2A&gy%QPt)iG8`{p)>DT6E#PDU7Ylf@fXfBEOu)|w z_#FYiCE!8V$n^FJI99-?1e`2j|89aG0go2&2LjF$@HYZ}Siollycuw3<fqgir*}Yv zAL}K<rv)6_TZX%a%ISS7;4uQ8*GCSw3b^NWGQ3K_2L-%cz+11E!;c9#C_;uibeHLu z3HU|<7xkCJ(*(S6fDAhX>@!e?mk2mWz>f%cn1EjqaIS#233!cwKNj$(0zM(&*r780 zpfH)g+~G1jM8F-RWq1N$lIP<$$#AxSi^j-szQ9k2m*K|*yi&lY1-wzf{h(*0Z?yt0 z5b#L>zb@d21exAN0Y5L`5a<=fHzdp9!v*X=Nrn>y93kKgz{G#8fb&H72UZ#XZUG<6 zmEk7@%xp6JzJT)td|bf$1sn*yBYs9rlksmBaHW840@h5I!xsW3epb$u;fF=I52pC^ zM|w`-33Fxmpnx~dli_0m-g>_bpB8Y$avA<x!1G>^;m+5}^fF(R;XVTXRKTMI?EjJ+ zo+99U0p|+%pn&HIxIw^A0KV1-lb(%o{FfEDMuy)be1u<kU4}m)SjX4~hD_oQ{Tu6| zXKaUn5zM-17)#s%2mZ#ubV2<7BL3Y1HVAl|fFlIlDBw^54@NQ+zo&p_3HUkzKPTWI z0q-Fg>4)wBA^iO=!u>_K4h$1L9{~>$@R`?S{M!ZGAmBv;W&*!jz#Rqrk$_JL{9grp zQNVh&oL-%PuM_Y|0UHIZ5%jVN2LE|GWPTP2c%Fct5cruQ{w@J86Yv=UmkRiL<dyPU zCg8~e-X!290^TU#R|LF4z`qK3tAIm%WqO+h953KC0(J;^wSb=!@bd!xR=_I-tm`1t zds4tg0apsRM8J;=_&EW8C*Y3+d`!S~0zN3<u6{E8Zv<=<@O}Z$5by^At`zX60{%q6 zI|Tf<fZq}D4Ja#;?`{F73OHZDO9Wgb;8z8lE8wF7&J%F3R;HIB;PC=Z6Yv57#|rpW z0VfLhn1F8=Z~*Em@pqGe#|k(>z;_8aS->>{o-E)a0<IOXgt|`j<_UO|fENn5P{6|k zyhOmG1pI`62MPEM1s3}MqY_`hQb#$x1OX2gaI%2^E#R93e5ZiZ1pKUk69xQ*fMW%G zUcjRS9MlQvp-d8Y%JpxwfH%A^!&U(sMEHFI{zinqEZ|cD-Y?+E0zM^RjffxISx#@1 zfd3`nO`^W%3OGW*_YjOS*(%!GhXuSzz*PiGjHQj1`Q0nvGchuJLckm2WLVcl#$PD# zZxrw-0Z$b0NdY?qobWF>{we|I3;Npxy!j?M{J4O5M*y!L{&IQ;^W^YR0$ypC;Yk9% zPV}d<1zc1thp!WGnSi$oI9I?Y1w2{6T>|9v)(ALSz=H&wDd126uNLq^0lz8WjsiX; z;F|>ew}1_^Wd5%0DyOF@kl~vJyjz543;4Q1Is85aUxaTIaPCYwe4l`aO_$+10Y5%R zhC2ny=`}nh!$tw;J}tw=0$wfTxk|ug>*eq_1iV}Db6CK)&z8e|f@J#h95Osaz)y<s zJOQ5+@gEj&M-jeLz=Mk9_>BVIA@Hvcmg)Nleo_EKeeo~<S>0fV8@$jBUg`#yyTK2; z!B4os&$z)=Ztx~I_$@d1T{rkcH~3RG_@Ep7ts8vA4X$^CPrJbv+~AIwpSj92&<*bC z27d;z?}s@6^99V8Fb842f;j~9HOx0K-@+V*`47x@FyF)c0P`bEEzA*^qcA_g?1T9n z<`~TX3;H0-3{2jC^t|yXhgsX(Qxw6pHr#eu%6*+_h_%gX(LapedNJuAMgAYtwze#X z{j+5M7nYS}w#%m2ys)QWU3Mu@Aj!KAZtJP7!o;epr+pHSc(hd7W<j)F%$9XhPbgxq z#(kO8BdS<A^%T}>UDy+X`!11399lJQFMzKqdJ1f{TB#s-T;Udh%JQAds+|bIIu`BY zHE+s!*k5Z0vw4dR+Yi_;aoG~Nx(F_NB3Bo|lfd2CZ(*u=^X5v#U3Z7Bgxl^W)0HB+ z?J`{n{U2pj-U4ghPr4Fq8T}s=S963`8%<Z2%s(h(Ihi&aU{{yU|AoNZTQ+x9a@{L# zhY76uD?4KCU?_XfE<0jZz~o!wS5G*>r0kJhi7t9a4|{A^h~=`acLhw3`-E4BbEP6s zq}Q_1*bc$;<~@3`@$Ir#eZ?rQTiI7c7LEFqt4|9{Lb0w~6=Xzy?BFsTqr0BE#A<a4 zp}nlMoNY+Kp#!%w23Hr!?R3FaL~1$Ma23eds{iL~A<{o)tDPSDG7@fkgrlAOTuHUv zj;ypf{?HCtw`kO@h*K}}c6;k+{KQRLFV}H}$SYwgds<2a<zSDpP3mdSvpw9FoltiS zE||+~f_lVnZ|l<|GVR5B4)C}^>Jjxa8?o;A9`}gdkvxsqut$k=mSXR;?N+8j!WFB{ zmZ~Qt58J1n(Aw<9dO}Kf-#_(;L`U7kj;p8eHe0-&klOC=w!%_Iu%0%c6~wm3&qT;A zCf7aNX3tjpy24i+gY|S)wKYcD1FEgV+Z<MH9W0;YYd*Isj;CH0M?T8xhSGf6wfPup zdkFk+YwJKyXK&k~;|aC(+1M+Sb~`&OA{4hiZY++-dJdc>pMPy9kROWm97gABv)#^6 zUIw%IaAo^A;sB`YnawLA7c1?OTb_wK_amh36Ki!cwS6?t2V2|6chShpuvyHHwYE>C z^*LG3cqqgYD?g%qnQ(q~`7+^j&iG0+2<K|($i>l4t~s}t#h|m@o;g*{amz=iuYlC* zT<$F8Fz)3Ew~BLFCgr2$o~hA2hL%&@?ctPIuR`<af`Y=kRUF{H3_<1mw~T4U#f5f+ z<bkd=%jGEeRivRDEWdixtK~;fzDkDLo{(>cqc(@`TV0*u7hqcX$d_rj7r#d%?!_oK zVwAfu@+}yA`TZB==8L%VB5u2oWn;<>7ucxw0OeaP{633vlSR41!fjk$A)DV?AqSOO z%XJlTPo?>SN}F3gLJnxCaTO&G7Y=Z7W{9E?t$nR`+H=7mzuQ7BJBCtpS;eI)ws^Mg zQd<1wJi3#h`rejsPQES6(bk*SD#}o<HOG;ID>-dAqPG2V;plI33JZ$o%)%9f?D@EX zfD0?r3v9V<DS>gi3p1?*Mdfh8rHeCdu_;|#rkW%Ay*UL+Ds53YdycF-t#j-JB|{<b z77_8FX^z5K)|`AhUC_BqY!TUAo~@{l7}gE}IcaOYy`%(pOmI2Do>kBmwV0{|mqS4z z3A{ZFk|Q6&DblpIhtIj=a{mYTa|*I>OKDC4U4imcQgW8<Ik--8l^8O&ZL`BE%_*5S zs<~`Dinke~MZP&jb5Q=%3Kg1=7Kjw#f>v|2aq()MJ_WeMYf<ZI_IXfKT-JhKLBh6T zRBwkZ7iU6olTN7q<#1Zn+SZ7uN%q`1xaZZ1417UamLr8xPgPV1P2)^tA%s~e^SHd% zteRp7PZeNR);z0&%AqLBQNpk0SPLC=pHN9ezVvoERJ4T9{+9VbzI_%BqULhaS-3;f zod5rovKvoy6Aovtkxx2wjmDHtUAN=|9Po^xR+j*^7-ikkYzYbcQxdJ(xc^HUHZ*0t zycRU8S$<ItTEN!jC~I-skX8zkk}%xtk}H5??FB6w0yx8wRZvWvD#C-GF(+rvtU38E zdXA2$5cQScic}f|C4#3g$P&$<HOt}1LVqT+>Jd*gT33fSV%XJC6m7~?prUEWSI~;H zrrAV?Y(?I!Lkf$mMU3kN-DsohoX8U{jUtMYBjGR4I~-P*{sOIMF<Q5l4g=FJD7-RO zV{(7y0`ps6*5dgEIiSv)EZIi@bR##LZv0{dfg6dUJ9P8pV^DWY8gKC7i)(b$bsP_G z<BhAmu6~>irBP{HZxku;Hjv*Jb@3TI!YaJX2}5rgV$HzGe`dAv@k)`yK9_V${9X8= z;|^StS_n`%8xaIQ75ws;3J0=q2Nhv-s%A0_{e?1VVXZ;MaKh=I{pH)UNf~b(bt5>j zXR|~7Y&E|P7#jBZ4asY>?7vKZV`RCb@Tu%K`ZiVlej#Gw*Zp-Hr&mTcuKQt_|A&r; zqOaY5SCU`pr~V_Jx^L#N`(8ObWPI;;YvOHTYAH1?<L2?({Zm&5-uCg<O)sB%ulUZ9 z(H$>+JHW@08aX6l;5VJtbzPXUt)RoWqt<&4yq@*$4Qs6PCjI$nS^eV+`u48*rG8#b z^sS?JCJp-fH{JQu(|RN<JOAO9M;7e2R8F7%XI`f#9rG_(Zut1#g%JVkqQ@T$y1`zN zFk#()ANt{T>nA_-o4acDffwEgdGn2aldmh8Ir~2mf4_4m=<d=UpFR2D!f$Sv^4@_J zy2nboo(|qPGv?iXwNHP!>vZhs=|eA7M@}l(U;CN<h1+7su1^@4`=j*1*E>$Uf9LlD zchpXeD*Pd@$Ki_SKK*2VharA7HxGUA<WuV>-_i7JkD9-H4IeLGwD$K-x!>Hg_LV87 zs$btI+VW!u+qY-mT^;tvuUmgUSp8Y$z3&CwJ|unH(#Y`XpT*xkqVPrijOP|6MwQ<` z>FXuu-p#&XdU*DSq2UdGzOCK)Th-0?{TUjuZ{U{$b=nR0ve#{6?m07J-Z)d;p_)Y- zU!Pp~QT?<XK3^X=FjJK}*|%xo=7kIHJ^XHY;`074{jcFEStXa2eR%!;@8=(U!~XOa z7af*<hAGotc<n&J>M0R#9sS^crGKUPEBAIu$+>468@%$1)E7>klrq^h_kDk7?}xr# zwQFvEMyIYF%@3DFoOxjEm|-EEBCA#3?7DukZ$xtMnX6y4URe3f@uxc66wv?s@9L5c z7ft!s`<*UsEM1n@|B2xR>F?^+JT_>u^ZAfBmyIsGX4BhoMZ0Y$^}qi7%A`FDR0U7x O8#*qk|1N8U;r{^DnHNL= literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libmad.dylib b/MacOSX/codecs/lib/libmad.dylib new file mode 100755 index 0000000000000000000000000000000000000000..21f532e998b555cad4ce4023cd15dfb5e2185770 GIT binary patch literal 514539 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%0ATu9yDtm9u?QI{eLe%@P~wifFu9^ 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�uwT{LxU*&${&NaPbvy~)YCH#fw3v%`TF=Aaj*)2EJqnNY znvWCvE<kl03YrXAgs(;}#+xBa@WSM!cqw!l=0rr}$N9@q9lwGdSFgl*F{|)e+-kJn zwFaY-*5cQL>u~I`_0s7Z<n)U%SmWA8yq>)YBkyg-j!$E;e8Cp{_%ROE@iKVv?>5ZP zkH_mJci@XMJJHB;7rItWzz~PssE)Id)0^zUq3(O}TKgny*F708^x22K2d3crp#7+h z&%w46527YC6*K3gVeFzq7`E~-2FD!1q1%q4I<5z295{|^kDb6%XHVjntW)T6`!vqJ zmyWs5&Y(IT2zP%yhxUKZ;~s+x=wA9FKB#aB=i6q=c84rf#}VPRW>+ww%~f35^%{ot zxsEgaZeZlFn-~*v3)S&Q_$neBZ5QWY(CS<~xH%8acHO}#Dfw7%^e(F7mhj7!`?xUo z0XjW?h<6Ge;mX3t===8xIv71eb-WY4w|s$5>|cuYUdi^RuTj5k0oLmN27P?rqB>3r zb4R~NhbbR0GW;WcSo8^l)_lfiTfSgOVj-&It8mZhBJ7{_4a?<x$9s={VA7kPxTxqC zPSpIt5hefP$O`{(a@As7T1OM5z28h}qJxjx=wfA0J@oIVkLq|XG#h7#Q$vmLU6e5f zuPlK-Hk)Ad?vm(|RtnW|U>I|yG!DLFh7F#Zqv<CLEc#sr3yjL)>$2rh9Y2O8>QqFh zrj@X7yUMttrzPeLw89!AtubP<4XWeLu>Ue!yc1)G0lTW=w}aJiZF+TVbJZSy=GQ=V zyc#Yltc61~wXw6QBf42SVdGkLuw|pV*t2y#RL8mDh5_~Q+K2{dHpK-8%x#DVmN&xk zv936GPh(Wa$Kjj{O|fitGu-#Y4ShZ~#}a>A;6)R6Tv4eN4y);b9U8Spmo{y%cF(rx zG^iam3vQ3SW^}-*3p%1Y9uJ?!cSeVUU2w*ku6XBqH}rVe9aG<VV#D7(P#wpIeJb_B zqME&Nt7{+Z*UlTQd;8#<0AD;mt}m+N|8T>y{<voI0Nk{9ASNI8!^>HN@N2$5Iur~> zb=)BCHwr?dibHTj&7qj>It;tDACA}hjKG0IMxr|25M$<!#?GsPQGfdw%sMa@H=Yf_ zX}89q|I_iPj#I>*x|6VfnaMb|+7w*oG8K=unT8*GO~?8{Gf*Ahh}m;zV&m1bFg|`Z z+N6cywv2FWkQ;%QU(P{wTqIUAj>LzRqHss;`8d^W0eW{`h%E;$!Ukg&qdJ}vn?)~0 z&$wkcc7HT(IJ+FL-(G<hFIJ-8w^gW)!^Db}*J7mOI{epsJ<jRA0WJJvaL>4n*mKS% zRL5`P@g1=kad->%&WuCndt0%>`)ydFcsm+e>_BzgCsuRag{?a#;HZAPam(mLd^Bqh z)?U6B!?q=%I$jjJUfhRg^HZ?xyZw0M-vJz9k%}hvX?UdZAymhiVxxgaP%q>t-j6tj zXI3A_lwBt<@z_b}tEW&MpNjVi(^1#xEH<<}haq*(;~|d>H12Z&hYr7p>bO>HwJZ}) zZq35>X_qno(iNO~|0>#jx`x?$H&7i9i-VkQp-ZdVSf+P2{vDQsUuNWD;j%pZx9tw9 z<7m<K@?8vgbPv}T-p72Shgj445zear7$3EJg6jBNJU`|cc9`=Vv)8`B;5{$VEd3Rp z%zlki3JOpiw~NMQ-{I3*@9{#5518up5tD~~!h@lo@$B+1sE+qVo#S7z{*59W{o)&@ z{Q8a>^Pkwi#xG2F`;F>2VcawHFE$AMhi8`;qu)-=eC_?P-U%H{y{U^Kuk=tIUyO!j z4e_ai5oWp@<FP&^@X#m|JP}?JudOYG>bPVyKUW&t<eTB_kLH+RPzEbnm&J)L<?wE& z@~Dny#!HhcVvi-2@bR|FIP0h-+TXCk+?Uq4@~;i5<Dk*W$qtR$RK*W{tKs92>UclO z9-nQlfnQT=qB?#Wn?7^Ek-uu=4htuI=THY*dep@YzV%QO;*9FJYka@C0ZvSFLH(-@ zG46RI?C{4Gzn5)-2b`LsI$j$)4{$^KiOtbuaSQylttA#6bC<r=N=|?4f$BJK>|)gx zXEbbwsa@OSkDw0NX=X><wz?A<CUr)2d^mo1&=n_q>xMdJo)}ZB2fBOo#CLtYFn)Y5 zRL7O0>-Iiqdcqq&W&7ZR_r928*bnn;`{T2w15h20j@G07u+zLj7`E9T(+>^Ck~ab{ zpdb*>=ng@396N4v9fs9<49C4AMxe)>k@$GyC|sB}8e3iuMs@r<X6T0Cdh2mGrSW(i z)N=xQjhcv_^CqEp>|`8%WD3r`H5C)zO~ZSJGq7USQ1oj)6O+7Wq4BucsE)VC`|;uE zb2<X==Fh>AU+1D)?+|y?j>6vU=A$}JAFoYch%u`d;e>sQv3J%IZ1rL(x@w}avDI=^ z$M>U;*Gilcyb9yyug2_cYq0F8wKy<;9q#+O9@V@6ILT=vzUr_Eg910>n_00Kx?u}e zNQ=W0H@2dhPXKEf$K%`TJMdVmow#biE}S|w0f(&GjRW^3qMC;QN59&ObM%sNyX`)_ z-aG~M`|ihflMdjr<p)vCUx2MM(=hSHA+*swf*Y$G#cIuuVXE(O>^bQKs(BA^SJEjA z$U2QRU!`M_-dVhEcMcD<JdbhxGf>T!fHA8t;;#Ld@Z_~jeE2pCOO&{R?lrICthU!s z&9i`3vv1(^jW_Yhkz3e1_cmTH%tjxJTzpwC57qn(SaVc9=FGo~(L3&8uXFd&?#ToE z{_i2?TR%oMuLGXw`&69r3@@yHj`t3{z@Il>VzrO2(A%^C)qD_`-}x;%j(CSrQSb3> z{0AIx?jvSD`GkEnUr@~>fwNnFMZ1ATcxA>noU`FOwmI?xOXdB<Cq=(d%|C$&4gX?H zuYb61d@=Uuq*<c9|IEu1hYZ)Dzkd_eycM)l1wFj7L!9WUPglthulF&a=RFr&O){j_ zd>43bmAJIJF+Jd*=-jphZG2mN5okhR`XZ`%GU!cZO5w6?;yf2qI{d5{(W^8a^;BFj z!Hib(Yhc<+@p?52`uzdXqHP(v*==!nP+59Ip{VBNpiRq_#~$(Gnno4qC+Ecm-WBPn z7vhu2m1s4e2ga`zO>0@wp@+qf9j)l$cf{u-tm$DtMKuoyJ>9Yjn(Ps`G`FSQu84OB z+R<U}MTgl{X*GWcF4`ittzVtioDt7?*~{rqMW2Z^Xb1h8sOBBP{2I0J=piw-qXWI* zjyPpxZF<x%F=(+Pt>!Dipd@jWdmVb}b#cMqx^(Pk@#vg-bbeW9{1-1eG_FtkUKAJi zZ9tzZ5OqRb=(eRA;-bxBUcE-NL%KNI%azW5DmI(cn2t4Qf=27aDGp6(HLnT=bZv%@ z?u!9q-RRfF;-nSLX@lx5FeX)0^Rdv`dE)eu?sT=^;*BM(=($xquz8C3y>)9^&EtaM zL)&22@1oVhw)7{<c9^wS-0j|;UV1}R^S{tRUq$bzj&!$5ov>4)*ttb#y2mxK-{3B^ znl}b#&FhM5D|Exu1ToL8J6(K5bn^G4{XUCoz8U&j`JPxhLG113MQ^$yz8%zycK<A{ zo!gsM^VFbsf_U7`o33?LT<7mYm--?`&GV%VD)vP+zYSWn=!db_#QFjK>5GM8P}Bfg zukt|Ly+>5@;?TM`#X~`Z=&|2Kr-lCX2dlxDmMn(14xrV1I#_FXAnN=QA1?`_&)W{c zy$8gY_Cx6<cSJQ04;}XJKdu-~N7|3T=)+=cmyz^=2V&N^QM8)B2Tj(A4IG2%fhWbK zJ;%^zpNW5_jHR2KgrJ)D2QStihvm+T!+ginC*FvaW>27}Sxm$S@uHe9h)%mK*7l!F zZ~Y?LL`|W$RGx}8lEf5`X|$SW2y=!{$FaY~QqeQ$ebqwI_mHU9WhR~aKveS+(e?(j z@%ef&p-vb*K3#P06HZ&a7GH-(&}v>IjNdLUY%-Ugcv%eepGSKairwc&(p{{gP|b&g zz1q%4zdUiw=mqqgVsYcDh4j%{i}3z&QO%=7J3ki(Pg_E-EwvPH#EE9E%jn*j;zqw{ zTFt+NZc)o|h2;u-mn?Q`yOK`H6D@;R(F-)IQO(<g6Kb!)4=2TtUTf*1mtt7xI=Zy^ zdfXZ>s`;MiysP50z!=*0yO_0jBR#`z6V^);Uv=J0t9hbu_{3OrHr|52Hi?%T#L;mV z#2Ev&()~V(YJMr&-f}yd?-O;}#na#Kh+oF+pg-&G#G-YgnwN?$c~-RXO`sdT6Fnn# z(_<?n;;KF336DLrn$HTYNAJbnnk0-~Bi?XKrpu>`gS_|ANpD0o4;JlPem|xrisd~H z&@*zx=c5kNy)~(LagC_v&!SJHi!FT)(dXWZo)L%X2NjOs_`RY@o1?UvcMCg@Iffr~ zk7LYwu}i%Z^uKfB;eIFSNgqWuUl;w?@-$|qh#NYj(_`+79VeWj?Tyc(QLL!u`J(S; zidp{W>C;8xk;NJGp{f_~=wUIv`$byK4~7q>U&1eDnOJJ4=-48Q?tV+0G~zNH_fJ&w ziqVEnSJC5)80LG8KKouQG4DF<ZFvKCrif}jGTHt>Or3a(u4r-_!{WrZjkD>2SH+t_ zIkcL`46~N!V)t5km~&DL=yQku@<yB=kxy5xbQjh9XBgD}9-7=24^OyH4=?cmZQ{hd z#t-Q=S4A~%8g2Jme7E8;eZt`ht~@P{_IXNoc`w$T_l#Eat)b?C__@;y`sE|>(Uh0; zL(^CII9`0!{57rSX+!-{1z1Vv4Z5rsdpf_RCtMIW_`RbuzKUvoH@bH94;XYzjPv?P zKYcCM4*x_?s`wetCyQ!cIC}g8@%p4fx_+szxNf_s+q_85cT0RR@*Az@lf%2~#ewyI z&`&Rl!Tvw#-`~XOWxwcJHGiX;hYp8$|3Q=YV(PrVbfEP=ET1Y~?OIGPd?u>->y~Pt z-<2+_gLe|eoo#gKX?MjQ6ZB{&6MZbXO;q#V$>-e^Ge#QHhjolFd4ssSfiazsDees@ zL96-l@XQJmyj8m-zCI)B_Af<O{UWwoWJ(8DD~)QNJ<RN7hX3A(P3D@@ldUZ9$U(8V zYZ<!Bb5YIDM}H_+4m&1^JKC404IheQrc|KwN>{`VyF@jwAMJ8SOdeO6b}nIwX<Nls zZdUZwTjJo+*0h=r5La#zU0kcsc~`~oVYYPLV)4;BJ9<t1s;K4>M6<wZc>9;QaaDDC zL>+r<njw}RRD*u~O;qy_(z_jM;qo(LXnzNKbfM_Kq&D5Rh9i2P64ktgwBILj#KJoC z)M|Bc(Q$EGpL+DE_u|7SXIjm7h;@&O19~-}m%bIx&vT)RZ5pEcVR25+MzoqI5i8Dh z#Szwx@l={vu}2en%4;z{qABfR)eP1AifHBOhS9G?<A~;Tq-6^<N)?xOZ%J2tC8~KD z>1LL#@Ww$gxVr~k>Xo=Zyfxk5vJD!gifTSbI^>n;7}1U{uxyWeQ^iT19cYi&qQ#t! zw3-JJPp65SdUU2|7l=dVcA<ONbVc{WqKj8ITFoDcH6y!=ww~y8RBY6{2i@kq*k^uE zdURDURP#<^ymv3W^ilk@us3aO-v_&$5+nM0)5pGuYQ9R^t(Gr_pAjz)=u2CE6UQv? zM`t+p$Eq2kn&*;!`BUt%dLVtWo*&lB6n6v-qHX_)vFrV5H9saMTooIQ2%yjF24cU> z;+G~tbo4E;{+J=OnpYFUw~5XzhtW^+#Pt(~(|t@wV7UbGPMeXmnvWC5OdEynWk+M# zWbu8cVEXbiF=_S~dUfTosOIs+u{}aC@Qv6%avberH(oq04)B>k5BV&r`9JA-wI*TA zSuxdbGJX4p_-)k`+QxY*cFq#jyrFcGW;(vuC{}ASgATeSCX5NCzZlO%k9bkdH%b@W z728djO>egdL&GF-Y^QMg?lZAVSOl%+DaEFT#5AwDbmRBpi3RiM4)&3leOeqoAc|J= zo8tPF^Ra2Y1$aMGoI7+OU0-JrKHem*X}XwJ^P*zOaZB)O$)&hzm+04a8SV5){5K<- z&Z)2*)qJWL?YROcz7YpRt)x3vTZK(diFNv~rfYl?)jX`UeZ95lm?btEwvKM2yB_<* zilf~&&{4Ufn!lCKEWHswCyF*5H__dni4kF&>0?&0`2Db`=6$7Se-bY)iKENc-ipIB z#8Uy==t}>@sWIDWHD4^Yxh*Dz?4WH*?Zg!cqDlK*bkq~kXm$dv=9$IvhsABZ6X`~u z#H=NI=pnWDqV5H8M_>}I=BLH)8<TNo(|y=4N3@ubLSHStAD8YCy*eGB)x5U&GU6Z} zu9AvNj*G+krqOMS#2PCP(IuS^qnZyFpN%+zxdun^>NfFGt7G)V`(oDg<MgcxCs56! ziywNPMBNXf<>FIx6Nl5-H$$8im`?937S;T_w1L}MbjuSbO*%&(usDxJ$zt<v8FW;E zsOIgZ9qcb+*ctKepi8vdA2D`ACT-Xx3nyfYYQA6E*X#;j-z#?Oa+SXNO6(PRjlN&) zI*v>i)jYxUir=EshMRO|<69V<EtZ*Zn?7llE!&esHNP;O`&wKPl}mfs=VAG?;(h-+ zbi!Y8`o?@(%}b0m^F-ar_vmM3?&GBtalhvSI`*Boe9=Q%&1Z~Z7sOdZ9!u*!k<;VE zX!oad?0qq1#xq*YgN#oPi8|gdX!}C3+lrU;ROeT?>#BHn^lMtppNyUf;<65J=-bal ztGRFK5mn#ek<+5-p!c+zcNx#cd_enVA8}EhSUC9;9Z>Ew-aa69^7=xn`I^yVSs|XQ z^A$T^7H^L%q63Y;VbM-;ar^JIn&%la=KR2sRez#+x_ErhFM9M}vC5|3bgtVURP#e) zuW5g=LdAdhFilMCQ%r{zial0pmT8|aIW*8gHLo<j7^{m}rh0gAuNc==pI-4soWIb3 z4tFp_H6JyG4Ku<>17nPi7dN#nK_@>I&qtWhkL*gKn#US#{Yznof8w~!ru3E;rSaxH z(KytMZfj|dYW{1?=xc$ceu%#7%FsI-m&IQ>qSxedbW*wUa{g3tT<;3>oiAeBl@;lO z4Ju)+o8p#nm1!$;OH}i1qg@XxO!y!+T4qgW)V0BWSH&;ERp{tawy5Um#_X<kIP0zG zxVS2P&#@XV&k{S2s!ki4*rS@?8<%#jfj$Ld^@TO*B8OU-bxDjL;Xp?i*G4rjICk#j zh%T>1y9G{k8HYM(d`Z+DQJ2;j*F!a*xSZa}8OyvD?H1IhT^t%<=SyPH2p2lSxFM=} z$T6!^BmDYWtiI5d_O9I+mt=|;MmC`hOq!yazZ{o!X@>c4M2E$0bf{Bvym?uy6WoGc zT&g9idC$?iyE~@87oC^2qPNxaz{=Of)gi6vvgU12&6kcgUTrbqv)E*1J37myJqFws z|4i&aZz|Uj)jaF?(z_F`_$GR+>r8)b(gpY25r<9hO4qRLhH8FxOc~G}L;r|fH+#}m z+<RcrL-9sfPdUGx7pi&PaYkS-9H!SBz2n7B?fcLkFU98by=gZGA5`<fWBXCQ*t29` z^xrE^?B0)F^g-Ma-Jd>Re*mg^<k4*6Ky)kTha=O(O+JI@+uy~~8~kZcx5239pT|2h z1F(9PK%8(|%orR*Tk8(NsoTZec0*}3Z#~A%ABH7s569_Q;=9o!=pfUP_%K=Y>p6;6 z^WEdHRip89qhJin70XN;L+`FU7TX>dpAHP6)jav=7&i`cT93!M&qUYA3G};~6LIGy zamc7iw3=UEPEQgK^_W7>`z-pbno8GkorZ>a;`3?KX*DlD?mZ!{85By-)y%}n+r&}r zX3;}liUA8|(`r6{9C1Y)KQ^46Z61Nq2gLY3bLf-b#JlU~(rO(5w0j_S4vVCxRE@%& z=frzM=hNkk7humsQLP_9=X?-tRxF}NHe8HHbHviqme9j2m*SZdqFQ%=j?{_9_uIw3 z9hTFVUW+Xjub>asU5WK>h-$q8x<UEXc;v9yw*MOX)*o@`mbLWn*6VQXb5X5xK<Cxo zfU~cN4k0mguEj=Nm@2mN-9-QVDXR4m=xMED(fz4t9Jz(gsTGI2vc#EVw$k3_+fc2m zfaQF)<If-B(~a@;HTNBO`iYo2ZzsLC)-F`*F^FRlFv)y3rX3W|_$1Ode~K?Q?V<m) z+KXx(2W%3Rgac|P<D4sEQpi5~ewh?BJ0y1Kx1Uz)Kj7&t2T-@|LG1KWT)8lneq1LF zU2cdACLW^Ix)Ipwn7GyN2yLiy6vxGj4>}&BJ>QDwmK~?ndJ}jgM{G9zBz@BQ6t+(n zZw8&F1B}wKC{a}FRM54*h?mx!rGuND!?F*=Q{m_7G4>f~cS%(1ThJ@aE@F>^Vj15{ z^qpVgw%AO1T$?Ox{ZdrxV$h%JUcqZO#eI{n(yJ?9!&xWAkpb7~{suQtt*3z<yWhmN zpa0{UTe7{`Z8_fqv42E1J+ej)s&zPU)tFpNw#dV)Y2v4TcjyZLM2~IxbV!H0sMhbm z+-3LByy1Q9o+n0!KA^L0AEM29any)Mv|9HA&Gw7Ky`RwMe~R|8PwDw>p5e!r;(*1^ zX|-Mmw#*h&r@f?|ZC+vW8L|Gb*YshN0&KlcRO^h;gMWzMHoc{zTff7)FU4z%-qRDE zKcH2%sMaT;r`deMI%mb_!#>k-CBNX{6tTK@A^rBJsMa;1Bik0C?`yH%(r>h}%XfU4 zD_#oyK_}b&M716YMvnT0Q_Ozj=u~k?zd!Wge`3J)zx2>f|4^-?g40(P<ANrdXzlZp zP4~rv5jym>n!5P@vS>D5k5=oi;NaupvcU#)x`81UC5p~Hjp*PaF)7BFR_nH)+Y2#j zkqMpWToN5~#5prc(GP7+v1Nv+)_b9i%*}9on)tZCIo(TRftPlOZMv4BPk$2CIx+Nx z=H;-*6Y*YDc{;dG1=QRU*H5iTH?paOYJC};I-)XGDQ$_F2gRxVtZ2t#@o~I09n-}I z)w(oTd2JPZ*xVKqo`{p?+tKaoR+aPJ7C%p`MyvH~FzLLwe3U&s)w~7<9umC<)}-6% z)<U-gQLTeRH~1<xjHyjG^>D=2FGbHKPV^v`Iymu;sMgP+ciGp&3t3{pIA_|tVts6W zQXCc3fZkNX1=YGcSjwj%cK#zS-qwh|(a9AneH4eTX-uazZ-Q#Q9t>E}6i?J^hSoV^ zSg0HQqH1&Oc}YAqwgs)$`N5sXMcY7kdXsT0wAm+a^Y)+}|A>dSwWihjK$!ng9KW_L zU8-d}OnfGGU(}v1tlt4Q=ZR`vA^MMfC)|Ho95tacU8`~ze05sfGps8;(X<<?^@z}P zKzDqs<B5k8#1%by&>`PMugyK_ChfdXtz(3yD|_MJroHjYBk@gCANploZ+ww0z7F-F z)%r*HD^oNc-<P(m)DP>Q7P}1VPY*X8fD2MZwQdrfqw9w{iDG@PLG+Lx;>IohbZ&>i zSnh+U)?1=Cw+O_S&%{QHgXl<?A()>px<m}6mpKeWwN4XyO&yL$tBgSV3*yQ#BWZ*3 zqcHS@_%&!Wt=4zK!UN*8{$ps3?pR#1TeS8Hp;LZ{9plE)YF#J{|0q^pH-XM{pNJD) zigwE;(KlTuW8?!-ttUnQsxuXjWs9?BPNUn|Pe-#W;)97Z=zUh9sMeuE|IstCMcG+s zb6nI3noSp&gkjDBF{6Jtt=6x?eTiaXuQ_zWFEMf3TsghVJURatF(W3DR_k8jn>V8F zs`+%4<_oapGjZ_Zg>+QIMVN9=RO@BY=5>}}`)qOc%%$`(`(^n1is(K$nvSwrj%uAP zv>UquCsbI8mrjY*hOeT-%~s=+!(#ivYiPAT7h3KY7xi05|J7NKlM=-by*AKeev2Qs z$H?j3Hp=<Gii<XHqOCe?#(f{ej_YFSr>(YN#B0%hMI4>gY%5NBDpp&(jlSJ*J1)2{ zwvLRa|JL1sY8^2Q58H_y9d==vo8pt{3G~5gyK%u~F>q2Mt=1ny+Y6#z$X@zw#U#v4 z7cY!VrjL}_hx?9;YTYt=r|Ev&bx7Rne}GOiK8R=bi#PhG($DqMP_1`{<$Vre!(!1p z;V>QQbp+#oi8r<%rFFU=L$yvC25&izyE>h~m!Cz4jVI}`?M~s5_oBhN)3lFAIwlr~ zx~tC6gIb)$lP^TO=yUY^rswhV6H%?pM&D?30oy+mPtLzcH*0VSkKPqq%*&+D)y+b+ zo*Ui|zl>uYub^JGxM|i^x>>Djn14f@HRC$1)`7$8SH;;=Z_@Rv-oh7I;+9Fb>48<U z(fX38){mnTta5Q;hS(+~k1k*N4!%7ro)6Baw^g`{YTY>;KI$I!D0d&5pAsEMJfLmL zJjAjmMAKo9XtiD)mO3Vy4|zgYF8vhkkBE%|pV1vlJ;y<ZM77Qxy~gAv9!?eS4|+xG zmw1i!4~m2R3g}fvZ&0m|C+8dZ7TXxU!+9xUX8-qe8G{cvXrGwe?<1|&)x*BY;=#V3 zX$!qCI3Y>A<6B63=zhhdy`ox=k6y0x4UP7Sb9}zj8l4|FXOC#)^Ha{R`Gsm7Kiup6 z8$C3CFfUP@;Qg02*Zji+iK4G}F|D2|tkynX@bMOt6GdZ<4%>sg#WRVboko}K5#FL& zH<0e6(ZghKvBDlPT%*tSx87pEJ>n&e0o&DjgScmpXscsLuk{g2?-l3k7_nW?R}9}P zs&xw49_}mZCW-TPOR(Lvuec^jtfFVa_QbxTTHlbqpjQ%o`-ug~;%xm=Y%kYe+_O(? zZ(z!HwJsvgN)fFMOVcL@i2nOUJtH%=?;a?69T3%eifrHMC-y!l>Xfix`+-5?kW{gf zNg1|Z^B2`RjC8A#W%1Ww@$eyWa;b7`ZyYH8I4qtpEzfqfej|21DwZ*;KtC8FCLR-~ znO9_cr(vSy2~n;4$o6x?#f>M$No6au-E*YqbXqJ?-jeMFqeQh{B%NHr3Ree<p=ZUQ zO4f2YV@0>~qJyOk+toUgXmUaPYgL8*GF~jWC_b^VW&8b!;+;$}$JUPRIg`cQ%VK`j zs%(EaReW((d|$m9+rLj2)w-6nMa}AHH&bkIOKj(0&-T8v#j)Aqe8(DWSL<QoiCi(i zPEGp99I<k~*xb1m+XqLAQTIf(jwajl=8L)yMdwDf**<8Ixa_f*-q?}tUzdn#{Y^Ts znG<e|7IR;SWm?o>yVpu_#cT1ldtJ7xbvtq3TXB2qdi1+>V&f0uoOaG^zZoOieHPVv zpKQ<AELwgQ$9HMK_RKi3`gbv`y9?VNY!}r!p>%A|hN!bk9Qs$h(z_Ac8zqXHHLi3C zUs0_uO25!+j6VIv%oMSuQ4_Ww^b;LZ#dwpZY**`&;-<r*W$9-0#v!83adE4K8{2D+ z5R*=cYCTi7pBXK7KP%p^)Pn87A>!W*afNkDxtxijS_hT(wsXgiQ^dtr#oG3**nVk- zIP#`g%E5!}`)7;3IbyL>Yqsy6BYNkHy7k-0`J=>u2clYcRW5&#IQxm{+O!?pKQ0p! zUx>q6v}b#bRiaw2mEPsi0Y|M9>wgfxx9iCE^o`=8FQQN9PHb1}yyDkyVn+AQ^!opY zvHO6lx#9mme)b-emO@IBO_IzsWn`oh8EuiGA!S_JGC~R2N>a#3vNa{yB-tub_DC}S z-}8BM-S>6>fB*mQb{^ODygsk<(P^CX{eF4ekNfO_^S(jrNu#OjWy8<EAoKpP)DInm zNxZQ%2Tg+$k3uu?IO@8yAh!TA?<-5a+8dUhhIwk^sb~1Z)IzvIYXbFUfslDWTABm( zCX%y5p!X%{*?AIm&qdJd8uabzM4fpbTQc}IjO;O)=GbVswgztN>r8!r0zC5wGVgy& zy>2yZt%GfbxKcMshBl4R!*UAszcxYUeRF9pvUMY$ZG)0eu-}-e)ZNlyY%4rGVH$Pj z{dP(DFF4%Ao#q7xVJ2@n%@3wQ^*lIEGJ`tvKD}hw3CL?RlV)2#m~akOYRsbEW*&4c zh0Oc=Qhyl?%`d^Y&Ysk(7QwF9VWhDa^{dMu^S;0|FYV<`R>wlq2XLLK5B0Yz;e=Xv z)WVlK^M1nQk{7UUgdff0Ho<~7u#4Sn>dD(7rx`NuLrlFP1G;~Mw<gV@J|+j2vFFk} z(hZ(J44L;Yrha}V99aO%6!Y-=ec`RM&|M>tdP4vVErlGtAnM5>uuCO8VKATixJX!k z11>RHKwUEm9=!`E^bMx|HUX}C3{A~Ls8=V!rOzSrKFidvroxEVu&Zqt_1oKE>?b&I z>_X~I8IXB@W}01`!b!z`c#*S+=Gdvw>L_GOBB&R8K<0g&X?AEENh<x}okF-vdolI7 z^P%}gD9~R*oq0cKa^E$$*mx<;6aIq6)$mvEWz=ipVg4h?ypJ^X;3Vku9GVSZPF-gs z{Ph|(*hW#mz8x~}KTUJixM(sp6UP03;m$GC=NyDH`LQ&+Ooz<-R?|F69!J{vz>#O6 zrA9n;%X!ec4BB@{pw7JCH97eToNly&X1}E{v<gP|N~FF%4rV-r%==_hzqAHEeFj^H zt)i~B5%zuq$Jni=?!N;v@2^es0mn7uwY{+UC)9IIqHc2t1_{^FymcmI-j|!^FUobK z$!s{S5U$f+PyNDt_~Rlp@0?7Xc|UJ5_Xd1zl0tLOXc%}89_hb<`sbB!SRG{E2b}t~ z6sY?O&bHY|y<i&@HN&anHc`*bgv|Sg(>&E>GntnQ6~Z){=gfo`3!rhEEz}cdL*{+Q zX`Z07l{~%xcDw`=47O4K5D91Af>(QNr_Q`zIeF*-G&I{m^X4^B@f;=$-$|Xl2`+gH znfE!T9<d9yet}CS?xy}L8^&?cX_ifcsd<oje{|{xyy4)putH-G^{IjI^#vH!DU-VP zBFMb2I?WCyd&&AJxcnaMWST|&{3<xB9&(56qt3h^J30OhY_ZFxdG}5@_6z(vAqV@} z(2cX7X6Aj|$@6(IRCa*o9zL-CEZm`akowdhsC^MK@BdDHa|E1v6L#!zh<betJn#U9 znH{EXnFN{lji>qEh$CdqX1Mr0bR2z@x<LkP{RVGL&cpse7$-PJv*%1`c>?OU&8N<p z1D_YeO5NksnfIwD)2_gnt_3s){RQ3c!ZH0$P#>}q_Ns%-``c63Ooj3{P+)(GI%^mF z{sn%Wc$#`^4*beJL-Tic$T|)M%Cpqvv!P}Y?A-nw^<E)x$YnU%=sfjl%V1zNjOklQ zJuML)u7#I|6j86=0NHO~C;MXRBX+@AtuSU%3H5#Z;Z<HK&7Y@3{Q@|qO&Rq?{xGW; zR_k7%E((J~ufhe!<<zs5!^bsH$Mhm~=hZOz8N4yPf_mG{(CIzgH2M<t2N}@t2b}9t zNj?7%WQ#A;?C1%%pN4PRU7>Cn2sf0&M*XYkkudER{Mhpv_3`oW;A1GWxK4duGQ9Q@ zn%dr=p0)$BzCizpH>uywftI{mH0Mr-9SUGlo7>dcb6{8re5qGO-E$$le+{~r+@XFm z8cuisubWj<pSTv@egUUg-KG9$EA(xKZyjr>NA80{&OMq_r@=1y@VMeWb%)vTVG#_` zeL!6r1~ach%We;;KZt^n_hEapN7T<G!I>{0*Xl9#oUL$DGyLZGg!<ln(24VuX0|&# zk`KL<wbV8JVP!Fl(yOCxu@HW|26Ij7sn3mpCJ$lbz-QF=uY-Y2(A4HR_15jMs0FT? z*g)N7KQ!dOp!vfLSbPGes5Mge3xGo|KsEg)>P-=_^cLLN>m~Ii32@p|IAq8x>Uyb= z^%g!G^_qHRI?VeHx4XQdzTz+plf0$b+Z#?k2ko@qQMU+&y)VNqUEfphupDaMgK7gl zP*)~F`HSCLeMH{|)jmV537@EU%z<5b%{2F&0f(G`qtrfAcL{*L7vLiO7V4`a;jY`T zp!XN**H*yBTF4vLO1<+YIO08=Ip!<%s7$!$7p!pmM*VFb)KYw>dE{&uPz=-beo!x8 z2wSd0lO8{*yT`%xk72pRFY3Qi;Gj1!bQCL9_4n$B)8X6iu(vCl`urm>Ps*YBiw_)L z2;<vxsb33)?XN*U6CU;a7|4GFT?X-~XD7oSui#{R0rma6A@4h!=^~_l<}hq87112w z1Mi=Q!`h3fr-wq(H5g<fp?)_8T0eq^21%)RNP%l!!=Lst>I>50v+r=4tDO4HBXEpN zL35ce99aa<>nf=aUkJ}%hgLn>P`?ld$2@_z2Dha?Efqe03xh|iQUA3ECjEk)rm9mv zatzuk+tGZ_A1)|`l1>`b_e4O;+wfs;P3lV$p<X>aH(ZOlXBrfKg1L^`)LpV6i>E{L z{uyw}NhoaBo_awb^sj(=U3976SOybnpydEP>a9ueSR-6u(}8-Qo$zfdJTkc>_0U6b zkfamMzr5jv^Ke~zed^P~pz(Fs+`TjPvN*W$3G^RgKz-OosQw-{jWMKNvKQ`PccD4b z9Zo5L=4wXNwdcWa<?yjVSL&rp;r_dDgQ+p~Wl3;OBXqUtM%`{FH2(@soK2{AI1JUK z-Dwv4LUs}SrrU#h%R>0+2K>;oC-n~r@KY^p8P<#X_sx*|2{P|bM!j7Q?8NUwbI)0D z@M$<&voG~&3t-@77-QUzdRjC*{19Fm)Sr5N3S_^99Y>o|AD#(kvIfu`H4SDShm~#3 zsDB86x)-6X;XvvOmcgAh@ah0_>Oa@QzAvG--5}~|yW#ckP&CDYx>X)rsu)c3DSy~n z3N7@9P+z<lp1T9N{fAO_SOeF;fcLD2Q8(HNgTKN;=i$_qN1%sn1kHJVP*ehEbhM<N z9|09raCYC3)Js=Eg9aF7WktPqJG5zq`zBjcmmh|qQX85d`a=6+c(j8p^-d8m={Ee? z$Bz2^Rj}?koML59{pxmT*9r?KkD@;0Ff5Qd&}`-h^NZoYj-#ocjDW+cU`gLG)W@ub zw;SLL>#@|EcECknq0nU<^-V`$cex|YXJ<pFQrOsOJoV_sP_G&m^q)X|auWR52vck) zQXjAz-u(`jOqoR8@EE+LbfP(QF6>keD-9-7k5~px?!kLz&eT`0hnBD5=TR=y5AK1! zELWQK-Qj}*n5I63`jjB3Qwi^Pb)&u`8hSl~-3L#l{vj2feh(AIO{4CV4GsA2G{2t( zOU}TJ+S94e35Ax|p;pfs)ZZn*$~u@eVkY&tt<bv#+BnUkZhQzzq#pSFzOcF&p6}>M zJv$O^xC5j5dr_aC1ZOqDiFV%9ZPKB|PuORw4|U_?P+!fL=JtV5>k@3&)sK3+XsGcB zY7L%EU3VkY{{W30{i*lOfrABeXtwo)lg>ep_H(H(SO{Zo!i~KHsPA71i=M+8t9jHv z?11ub(8M*6x_ut>RR+<VFc;>O!z+gKsek+nwtoPv2Q8pJZv))?4wj7#rv7Ok?7|PB z*~J4Uo`vUhLa`SHd)|aTy~C*QS_vOKhwZHwQg_=4w|s*SUBjt&J_dc;ETZ{f0BpVp zM;Jv=Ulj%KK7_`DBdLdPgcm<Rz442w&)*L(2$#^@(Hn*r!kc<asrQb6tE=G4e#@wj zO@g^iP|f}?>WebqqhHY8eL3|bC!n526wQeXV9OQg*FBngO*|Z12Mb5UP#?Gr=6-?3 z&au>YAAubeaWrq81KXGXo(<!vcUTU0KY(2=5~v?Yg=Qb%ImZ>$9rnXJ!bF<Az2T=q z7}sGXb?r!a;10AhT}8cSEew7IWe%&U@5_XCoHaDp&wz2Kp|N%n^-G~J=mym2y_Wjf zmC&~VwzXMD{oF1X@B`{jT~Gb;akxx9ndbiU;fu>~r%4KR*Lc{r4qh3tf%?jAa8xT4 zxujCRbQG>uZlrl)0Mx30kBl}^&x(e@kKyp4o2kpv;QeN}e^MItrH9}|*%q3+`or&K z@V3EL>bZZx#0SvFVjFeqjnMET<W1O4{rLe{Dc(WzVPCkZ1TNR#Nqx>z=zI@aneU?B zZv*W79;!L+rq16FzY5c7e&-Dvir~|Z8PxADhShgrmDwKZx08SS7Ty_~N&Q|nd@R^Y z^D{5_x)8Q>$fC|!3>9~wp4mR?J(J<kw{ZN}Z0cUwaFHN~=CxjMUm+~+u%G(FNcgoH zYMULPJ}4PZeG8Y4JxG0bHY^w9()`8?Y8Ane9S>2Tw-|1{3oFbHQ~#O_d%S})#~q=* zAqQR(9;KP%1BVpDg`M)KA6)|9)xbXH$EXKwfJfiMX2*Q$gAc$c@o}0fe4%<NoYA>} z`u=6G^*$VBae{i<M)>L@w48X7dTK6wB|Sy6tv}p(0e&?+P2DvL9)AQihn}Gxo(AuI zhQlYHrM~9~lq%2B92x*0SHRK6=c%8Fg<WgmrV)kIMcd($ukf8~5p~~u_(-joX4m=f z<`wAJql9|p3OMHZ@7cPP`ncWj#!u+tUPk@FN$9P0f#%ntaM4Z3?^{kiWeqfV3G+r> zq;9(x)^ICm4)lQh^KiS~CF<sp@Mbj(G^?a8Pk{&C!Euh4slVF~H;Av$Y~cr=l)^-V ztJF=G!$%L{sv*~~p9UL0!!47qQy+H}vfJFCxnLd)tc1oUH>p33huiDnRI6LmwRge0 zKj4;Wx2aD*2|H_5(cBOU58Z@|`re^#l>`;9;C+W`>N#03l7E-xv0kuK5&YD#hWe!? zaQ8hJIp`jB=Z&!6C#aZopZe=V@T&X)&4=c~lnS`W_#yQfanP;~_8Iwzdi$MF@B@CF z`j~p{33yBM3C(4p@Wf4cu<ujqdy?R`S1@&SE%kN#;A%k~%`3fOV)5@;zn=Q)WpM2S zxMA=!>RUI%jL-1E<mc22j>6J54K&{jgikNS58Yo-=Osez2H4BCk-BvTbZ0lw95xfK zI|~o$zNB6m0h_9!bl@xMy*9v!AK=0Xuc>d(g=MlgG{2n#+gCt4<G0j9<KUh;ST*t; zb>S{J<R_f({+@c)Dfn3X1I;?&aB>w~XZn%)we?W(4vu&HM1B1MSS4wuS=S$Wl*1gO z&(uH0z!9}@m1PU{njO&O2aKHdh5F@_P+z;1=CFnE@@?3~^egpc>tW4XIMDGM^$iE$ zN6B}ZC;P*Ka;V$&2leH#u%Q-?ANiB|$(^vvPq^Ow7xiDKV4x0bqw4R8ABV$<cVO87 zHuWJX@W^}EeFBGiMlS3q=hD1&F4VaMH+SPv*GYiep21EweCnC$um@W}^Rbz5*g1Gn zPe|Q)F|4bB!GlE9xtm~WGc=hjrhe`ybZ#r5`E?MCzY06|l45TabZ>&+M#-pe%YwrN za+;rd!-Nvp%RoWBYB~JtF*F&jq<&``jQIvlr?#P9cLJtrwWZl%A^dq89y3*=9*_); z-oq#3)v0gGg;VA2Xx0gU_b$P0CK}Xdu7F({V3VyT^`m>>Vy+g=cAikJ2tMwlO+9xR zT=o!77^*|P%U1ZM6<(dvp8DPb_?M<G&2C}P>^4+4)uaA?J-qo2=8f+_ePb?MEbmCO zM*tjE3Hx>LL|r!#3SYoacKX!oGT|*=XPQgBU_mk5-`Rlr?&WavW4L~}A@x<;Vf=R( zGp!5t=u<FC$B5>bMKG=!CJyXMeQhe-_zCWCGN!)oD9mfyjpoAn@ai@AsJ99Aw`(B# zHPjf}oqG5EaHOOM&2IiM<RVNm?nyl-9$tI~U)c1bF4_aTb9>Y5=m|rL;1>Np)QkRt zFCRh8;eDxFZHGbM;f`tjs9!q;+3ow&JRk!4--SEPO{rIJgl#^<(ar;?#~*_w>Si=^ zLZH=67~5|k_40L4`VLMUZ%#ce7e18_qPfRB7=9U+_OPI?whDSS!D9}CsSC2<RM8Nc z5Bou3Ih@&bDD{(Zu-!Abz-AcrYZ<T)cR0=KJmH5T=+b!v_0!9t!4tT0geCQlJK&6; zuyXoH>VwY0EIlilwU@w^_u-Gh*3^Tyz{XZM%gu&*%?UVJ+m`0*;c#3vygbm3`q+)| zYBQYZY)`%F7@XE_6wP%ZaPBSmxxWMTsAQ=40JlvXO}*z4c&^PDnkUSM_19ozpRv^2 zu7%lepta*T>W>b>NVy};+VkLv%h0Xoc<SF)!5uH5&6o+)n{r^XWFpN&=D_C_Fxg}h zb<0Hf_66KI%8B~KeUK-bO!G-U7*r0s8aq>e91qi;LuWe|>S}x8b-pXj>wMs(GT6>& z3iX;;xT7BW*tk*ey$7~%r_x;F1=p6q>4wv&_lki(YvFY(cj_7GFoH9k=JB4;xEQhw zW>CK$1q+_S)R8l(hwg@x*|TUK=mB+#;17Kd>UGOu<r8?!(v$j*T`-a5MRWKp=u-%t z^}VUvEr%9QU@uD_>IS=@4$GJ3wzHtL5DN7DsB@P?)|1~_&Zf@V1-UGLngz3<v=Fw{ zpF>?|IW%|zds)t<Zm|p6u>xpzo&|jh;X?g+)DxG(9Zz7MWgzv+U9gT7MDveXP`e14 zb)HY%DGG)>g&RgLpniNeyvGiv`IiUmS_~ZxLa2vF!}MBs)hd+w_jK5U8%FaqFSw=z z78)+3{wW4_uZNyC;ncV8fmOUkG`I1A<I3P_qX_DiaZvUgj<<`Xp0XF-6)dK?lOOae zhewQ;Q2(9)N4<a>M=hoPY#%feFQYlZAKt5geY*ceJ#Hm@*aQcTSx$Z3e)v)vMYBTy z%(@JPy`rhlUIQy%!#<8N)Hme9Z;Du&y@KGCYj9BCIO==WLACcVYGOR~4@aQ4S^~}0 z!Eo#?SZun2y2S=~^b_pqoJf6NJ~Yx?N%NkCuuC<}G+#yCcr!fk1@?1WP5s14XxV-Z z&6gtK<oodHkR<9s+aU9Q=R$MR^tGh^Ie4t&I+{oQ1s^?z3oX}ESMG+{>|~m4Jz;Gz zTyB_xj~5Gz>Y<nI2I|7S@Sq@-W+y-Ry&PtC+em#vBK+P6b4G8X?zSI_Wt(X}9RLHb zK*Qc?)N7L9y0_3_!WQb>Bk+9Ntu!wVhJ$axR?}_NPi=rpo8d^8?bHPY@Uqqpnl~(h zGiqSB!8@sc+5(He!S(LDsC%4+{X6cang18O_ZS|wOsAf(8_wip&}`ua+m*uiUG`AF z76)^m!?pIA)EDf7&f>i^51s?{E1{@o7WMb5;r-XJ+;JcEV~1cyn{1j>7Qon>Fx)hU z`rHlBqZzuo?594V06J(NpxGt@j=Tql4>?GE*fu!)2eh1#OWpcBwAVjG^SCJJTnlGd zAErKg4-DZSp?SG4Oe%*vx*er{C=nJl!KyKN)SC`Kmf{%A+Ci}2bvU+PKK0qjFzzGV zGx<36(tP+_vw&vNBG{`2P8xiIdc;<^`#Y?hev<m<bI?%#6wMQ&;PP5{*!nc}+C5N1 zaE9j5esK9kSYUFN`n#2|`zz=>?i}@uT=-OZo@V_8(BmfDV_HbPVFT>>8HTtPQ9peG z^4b^E?6??ic>rGwE1^DcCyZy6(tOtgb}xZ{bt$8MI}Y|}fH9*kP=A;W2T99m-Vgvk zT!9n&T%>+v9aR4S7dll?zjq8;YF?swUpQ=210x4lQh&A;PWk~0XI!S<w-D~?e1&H9 z7#Lp<zu8`;z90)WimuV@IR`$dgj0H5r(Tr=o!-G)6K_zToCmAh-K2TyLinT_`dZwg z{$>jd{|-4bZc|S>5A`}%(VP<v2iL>Pws)w{%z__9)ike|13O)YCwkqbK5;F4^$xC> zR71V%F<7Q?k7nO+D6D}wgYQ!xzYRA3fZJw1pl(|P-xxfkc}py`dk#O@Kcc=T8%~x! zrdco#p1KNy`aYp<lnftygsIL?sgEy!Qk`0wFGj-n2heVK9d+R@Si!ERd5ssGR0g$; zpHY9Z0%kYCkg?CHkI03xHVri2UjX;tf=kR^P<Pw}4O-!ssg2aHo`HKiHqrdoayYdX z4zzhmz1?2;LHLU1oBr@vCEV2OHTA`7;jH)2-suhXKKW2b>n+W^2>9+Ed^GeO^~*cp zS=M`+b3NhiQn<0}2kNU<!00Bpc<e{&VYzUAn@=<c1j9MEq5r^U>i(PI+^;au{WJBD zb1*``h34haFtHw{*nOeCV;{_sw9<Sc0A9Qb@Amyly(t;~`~=lpzftdY5?bnhr+La! z82lI}jr>7<e+I1J|D^ea9~57LJ$nA4K0XPCyn|aNu{Npx9<}HgY|>=Y+%5uI-iHCh zIMlc9gqPS{n!kC$UKgN8Hy-tkE8*o=kT;%Beb^Bgt}dWCFATn`hP?+1sRwR@hknBM zvqaR*N?@dsnC8L+C~ATe$4aPg&4mqZq%;o*fiYF^rn!u|;TE{?JG?YQPQ6nR3^P>F zd?gNceF2w`R#Ja(09q*9(7bs8{BjGr4QxyO^k&%U8;qT<M*Zb^=wzTy^O;!KwE-qO zw4?rOKMYi8(EMmV9DfTInQ2lt+YEEQ!p_sRsHdHWY6jXguZe}?1{m+4L!Ea3#wyy= z%wGUk+=8-!y42TihT7lY&gpv8O$uS2K?j;g#KFrAaN6jO)L$NeOO%~xRs_TJ+tA!x zpZe7_==&Z1n$em1mLfQ?ivi8I;^Bfu*mkTT^`p7axosDkTSMTEJJ80$i2AFoF!d+2 z^yrFS0@J!0(`=szTVBF_j@_tFI|7yMOlU4$2qSA?|DoNfzuW=$vU||%;SD>M!-pn4 zsc&BmXS{{_lX_9FKL)e4dea;f3C$lumSrF6m(t-zeqWlsX2brKklni<^_%Np=0~{5 zr9bs?C!wL9Db3%O!P`$^uFU}IE3=@V#EfR!dC=%O6qpXA{vs7teu0OlnN#0*4le6F zh-SZ7II#f^8*M?|<RH{)Gni&!2>en7n+6S`{%|Y2`4e9B7)t$oDLi33jOL>&VeV^~ zGhsOOeR;pt9Dz9k<~)E0M_A(br^6Hcku;y54KG&0o4u{5KU@zRKfxAPYwCj2P^+U2 z%_dQBXg!=@Z%f@b2QHP{(VRLT9=ZiD4Ya4;kOp}_py8}h)NM+jPge(;S0us%ui(w` zqp7zZg`G9W&^#srhCP70M~tO@Egk;kkE6M_Kb(0PCiiiqejyotYli*Z##5hj24-}c zK=Y$$*#0?mb(lzf;{kX_If-Vi5a@OXZntovUb_vNuqM;Izzd$b0D0Y=sZUq~x4(lg zom{97DS)fnyVCq<DeU(Y#@kGx{xAy;kh;;lCJ;8<fL3Nxsqfqje|&?}XHKJjwitHm z>P~Y^B5ZgC$4!_{JwFe2(3(MWLL~g~5Y8MqlltX7aENFY%?IYfj@RJ&{vOo%8{y(s z_`%(i`kX>oXXr)qj0AYU2~KhJre1vnx@!2)e0LF?_5eN};Y-~+1HKga(Ht@de!l_} z`pu@Uo(gw;fxX@Rsh>L!#~aR}xi%h#H9?8vT<W`zz(E=TG~ZYR10F!3<vi+pGN6?( z5Fc+2jJ^uH^bewbF%<^1Lbd7hsh=u@o?RBuEL#B!UPABj!PM3AV3B4B%?l!-;Ujow zWGMBOnb1-kMsrI5Jaiq-9<Y$Q;b!>w8{9rKoVt4n)H7a0^TU;J=NsrXDT2Dmarjmz zlIDV?aQRa>#&$7v&1_gFTSD{E`7r7>oHS@D^)B1smtXLT*D~rE<uJ0xUo<<dg}pvP zk?V5m&rZRTj!`tHN5h!s(0g<=b^Bb{Q!R#OwS};?20k4YOa0Prn9q;H$Mc74ufS#f z;;9Fw!kMjb()0xCc13WA(F&UTC&KQpq2a_t>K*c-j?PM&HJ8G6Pk(E>in>NN)RM2J zx%~pzsR|ldtfAg(J2Yb_(LBNjj;VmIz1C9qSr0>-VVv7K>Ko6(?9S_HJ{JdXHNvKG z$<#SVp`K<6&E}EN=@Fc7wSoHDz3`AEmFDY#@WV~0X}*#Akgd@37fkfpMEz(veAr_% z&7yVC>=X2wl14rG3@p*#LUVI0G--s>$8Dvaas*z|*hVuq5)OR?!>zVcKeiXXm+YXq zZxEb+3m!G!NxgY1v|#O`d6_pXy9i~yc2jp*4|g@gS8nOlEzZFNgAAIh<6*a#Fmn7J z>R0oifp#X%i<ZFaPhdCOz0{+#;X`>A&4YvC<~y)u@ILCUJK;%gHqCmo;quGyS>GJ$ zV^iU=R@iaIe(EcV;is+#X!ckIufK&OCLg4J_yjcUkW2H%C@6gnqedU1-kJ-8)eqDB zDjfPffc2I~sC#6>r{bfS17Y1w=xd%wy=f~9VjZLTvo~B;0Y$y@sV67HjxF%OwBytV z7s5+j3TU2|2w%U3QIk$k*DQbsbWhT3vm8FChYKA}QCG`_xoW3r9vco{-iNC#&rt7` z39pOK(i|2D+uwpk=I5yUZ-eUW^E99Jf&Q1EW}iapWhpT13+y_*i2B_kxT<S0&6ca+ z=eIC-atU?6ldyBgQkow`!_5uQWo#LBjU(`m#s!);MZ&3%VMm*C>h=3zj{G9c!NG87 zH53f3pnh`~+{wR0^Sn85*fppaP)YsCW_aueT;X|{`iycou;&$;73<-PW>_-yD)n9G z;nFVGXm(G8L*KxTPS>fkPrzq-H)y^T1rI-mo5$Rw9(5Q7XxyUNH4@r9hW%}BQ#Z(l z>WV6w`62L2HGDPn4)xmIutrc#^Ub-i@;ba=c9(kb7FhTTp7XAuey#$Z?|lz@De%G< zSULSZ^&7>o#`povPglcN?_rC}L+ZRUux;l@G<S}N{a!-r36H6}<ik1bpU}MgFSxND z<~ls3elZu;s@Kx|a}m^i1P5E!QFq%1BjxopZwrQn)v$i(GwPCb*kAaZ=BWWN_69sO zuz~vhtx(K<LGvJAIJ*+2^=+hnITf<LL9<y+)aRDLjP5UKey|p5Hp7WiUr|pw4=;Cl zO|x_*9Qzg~O@2fD#!0Br=`GFEV&U#a*y#9<y6G{vROda-70aMzJ@j$-Ks`Sf^4oo+ zc}fJ_{|K^dK2dkch6feRH1k8@%o=!V_-E>xdtj)zh2~p<(DXLkVDW`|%MLh|*GhAt zKkRx9CJp#X{c{?e^$TA1{ziS!CAhcGcbYX*Vf<J4W#$j+bIai4?muasybe}2L+fe3 zsGli>y6UWLs=t4%v4xu!LD&6I^AW6W!=}B>*3fMs)XRpC@56KjhxU9&!XBaU-ClUS z1}>FxY0qW^lm)}8J#a@goGszeUjJe6M-Z$?hpAQ2Q^cpezC+;8dGN|Exa}4U5C~{* zm<3b>z$ZIk-VGSf6Vl#PbJ%+h<Zg#G*We+Ji1y;m;EdUD;8v)-3SY3qv{!5jxBJ3H zX>jso*zXrq^q0{7D{ol23Fcgai9g_+zEav7;{|(ego+CI{u`|7Eu+1Y9&pD77*h`Y zzryjo<g{l#3wBI_!VB=-7kICSg7!*hz(ecd)>4?z0z<niY0qOi9KQ|@FM+*2!wx2G zXiwn|e<i{9MX>G@ykp#!_AX6@=hncyLYVy#?(C{YdmG*0n$<AwJY4nxh8wBV-hwGG zU={Q`2fg0InO)k^p1UiYx)M$~3titq7efu&b9MP`B6K?gr@e*K4K!)b!x?(7fc~dp z;2Rj)S&Q}}C&Q=&n0N}Ve+{?jYtvqa6Fe9XPn?7$ui&*#I<)s-5^RivEhixV71Zd| zp7y#-f&=29?Fs1m68d-4rM)E+;o4Z3Q2<Xg!7Cl~Xs>Pp{2Bw>7Qk*zaAb!Lv^RAE z42gkB$Kk$4SgO~N_MVJ~KcZp#<8V+Tbk*xbdke?IjnVLUKCFHLTXpqmPj@^V9t}P6 zVcZLtquZJGt~<idQBW@*TEBpEbq#25gCjf}1)m>-ZC}8lx`wpp=Ll1xVBs<NrUB~d zcA>q|jxZt$W*>w18lY6yi1vm#!k{Raehl7efD+xVv^T;LhDO1hWAJGM)Ydhoy$OzR zMHDPP2ER4Hfx6vjZ-FB`5CvZxgGMi)m#zuz?RJEZqhP0eIP(SEsoS0Qo;X5-Xy}~} zvtGcLx;<#G&v+Ob4Nv7mRwK02>q&b_<KdlX*zq{@YlKJidePpu@z5>?CLf278exwP zy=iaJ1b86^Y7{{4CU~qvAKK$jgf6jgUjh8u1jlvkOMAN~!sb{w`UKqh@^|mpkM_n+ zf*En}+X*=N6+GCfKkW&ephrABa}sL3hN1eVw0GSJ_D+DSPr;_waCGMZw3jm(N>;$R zr{R@1u#bTm?Ik<I&nw{6Gw}Rd*u`)l?X7fy?-Svav#{_T?AFDc_SU<?Z!4kCIe7g& z9BMR(_V!JI?N-C+^YGmVIHRit?Okz$!`8suLfGjOTxUF(_BhjESQ2b3g43Jf&2B?z z&)yxLT?<W1V9sY~(0wTFZJ7?$*TXfXQ1}H#_ZUWdKW4y)WcaxZhP1->J%`iY{8{jA z3Jfg&J%5Eky+_dAdk+|r3O`?j5#QmDK9;l>?FEIK;F?QN{U_YgZzSy*_`saa(DX7q z^9$OUTG8GOU+BICzPJKI+17MF+YGLq4LfXu2d=@PTpQZEJP=Nw1K(_i%Wpt+zAf$T z9Rw``;MJYb>lXYXu%o@TgP~C%Ji8k@SHU+Td)iAF3Omn-r!$~SHT)nMMSDrZVUJ)~ zkqP~3AYbl4dzqHdHWWU~g7NoZH|1#ByJQ9DEre}zVE#imwe1+%`(*<&7s0Uy;K#>s ztNK{lv$lt?BH_kdXjuziYK)`3O%Bj{DSUevZm)-9v>j=$bqw717o3s@MGf#|`|-3l z*AaGzhS&08Od~Y!FoE`7PJp{&q00#<e+5fBO{BfWPS7*~zB&an-@us$lW4EK3#>|n z>(9b*@1exViS{l|f$^)MZ6V};f@Q{&X)kUXv|9^BC9v`{OzQ4TdlP3s&187L4DM=$ zzP(&%ua^h>v;m&E2xGrP$G)z#r{xW6H^BpyaM3SlV>*TQ+WNsqTi}7Ka52Y??jJo6 z>db*n+u`XOa5aA_?ai=&{pLa5Zg}@LJSdt*d(lJTl=-mt9>~87A4=V6FMk9~3W0uE zaO8cctDH`IEmrX6LU<?#u6_jl)n?G1y&dct2?e?E`BQj7V<zooIl#oFFyIIr{|xrm znMHe=<KVaD@aZvF{sJD<^Ps&A6X23q=zRi?dj-w)J!!A=WGGt!TTa8exA3~57ww&O zh5J{*wDWMqN4Ut?oAzc;gKlf#=n^=z1@`ITLwg1@p=Jt{l*3<NVRLU^+I#5<Yd6B0 zOYp`|c&Wc1?Une#vs+-nRd|#$o9@pY2y^DZtQ~OAO_(n5r@h^S;jX~nrvLWN@B1Zl zXfI<p%nXM6_QL)5;336a+RL+oCl|tVIk4;zysQ>Ld$;W1{YY4!3*Xej7R`CI#~B0V ze?gr*Xw(4v>ju)E<#^~A1KkT?z)QHKQxNT~c7odz;Gxs7=q<c$IG^@jxWezNVB132 z^%ET0Z2|2~a)<uwU{ong`vQ;l45q!yv*7a$kW~S7e?aqoA+$Hy2QEm1Nmt-Ob|~Fn zX$D{VL+K94{QvvV{o@2-WYA!^J`f&Dht+rBcgaH9(;ortLSR4^Oui3KDZ^>+sWp@= zf~E(c`x6-7ZV~Mr83i9KfubYO>>2dbiJ-l;<KVd{_&OizHNmkRBWZ8xB$yiypPYhf zZ=s#xV%m#vg$Gx`+VfER6Ljphg!W?H;puhoV=3&}3VnJlrM(><@NOzpzXTnB!j=7( z(O$VP<ZXpk*WhyQUv&R@bNFj69I*@jbsH9mmeU?*7_?mgS7gG=HL#5$iuRnX;Fg8( zNe(oA3<K4pY45l_{J9v~ABOAe;eG8G+Uq(FE{K9>^P!{(x^|4Ey*-oQ$9QOU8m@l} zpBl!|UjHdDW;LuTgvQM<(j=btu1<#r$uRr^y!`cd?~_1#5nk~6CfMyVT+UiS_ty-7 zrv7lvcKG53v=$`N-p;}BTOgd00gqS1cCwYU7h(x-g+kM8nDP)dw_QbhE_U!_B-A?u z|Ehy^TB~Vq)L3|MIaJSwk&W<ahc&e4FbN)shwV?pn78n?VG`|4nF32z!#+iDYcmve zUrT!nXTbVo=u{4izrp@}*U?^vH*A*%<FCLk?Dcg2+=1}X95`twEWZVZijryX=up^g z0o<7hweG>SiWJ%tS;MGs_-#L2_yoRhw}JKo9AM*8=zA2_J%=8;skHZGJe(N|AD{R= zzy5uH=Z&=I=>qFlLcjB{=_3s6wu$yWxWn-E@JAVp`3fa{Hq&0R7i_;7reB6V*=clt zz8SQf11onxms_w_xP|tDhQjaj;mS;?a}VxQY^6POYj`mnPB{RZp1>s<+h|WQ8tz^O z&GO)-1~@}+JMDd%09VGr&ZppsH*kXC4%&O+3Zqs--6ELZ3@3EoNqaA6z=Rao<svNl z4rlb+MSDMd;MOg0$TfJMyPNJ`JP3A}2hZ(>9(N#5nofIJBjA`&_--FeeF%rBWzb%& z9ZXyd`yPgO>tU469@^{S2&<yuUj?xHD|kmgllG#WVV{-o;W@bKBedwYm-b$`!_DjA zs0*<5E8O2Fi}t2_!!~KK<O&Su?8E0}4xh}08+XC6Rgf#mroB_cVQ>iSu@BZifZN;V z(B2d~sJ<9pJp@<QLwlY5w8wLV#nEti0UYrP{?tD}d*__tUn`;IdC2($%eoz;y%p2p zm}ICdhqu4Mw7$8tH`51p-2z`<g~zyu=>DaHpzS=UOoughV21QC?FCxG!C_F418+To zyVZ}-UeG8wY$=o-g%6&?gStoYxD(*`IN13V{PYHv8|Km8)+sP(4YVnS?OWix9>-{} zd=}i13Kw32j=!MsfPC6x`@{R&;qjYrz3@2QKW``;y#N~Th5Y-lPFX;E#Wrwv1dPgs zo^{Y#`vmQE83%>Yu<1Cw@)91=KS_HVo#En@(BnL`{{(xRoT5F=8SrN^d|nQ(e}^ag zou<7#zHseU7<nD~^3TxyPJ^Lk5bV7NcBp|e#aY_>W(8k`!v_c8)u*sf^BnCR9Ro9$ z!?b+3rU^!OI!}Ayli|EX=zR`O`v@m>E2O<K)1h@T999m^zr%k0ifFHwFYLAz8eNB- z`Ned9r@^p85Y*lC+ZxzjQ9^sV)=+N|>~Iivs)YtxrL<=>7MeuCUdLhomvE4N8SM>s zhBhnV*z?fo6LdGZKzlwjU|<SdbP>k<fJyz!X>W@k%-RNz-GD`ci**0BA@I?B_&O8* zxCiBJDrm2xE$kZ!tqwuwdN^C>674N<gzIDA-V^ZjYk0$;lJ;J>Le?6nRSf&KK!=`} zY0t|8F5L(>SHe8j6}tbL8GJbhigv-SRnSIq6(45=j1GnA*|6jhtXIEAdjbd8Z5bSs z2LoTg<PO(q@AxEmKLN7OLgNq6(f9`KEp&%F*24=I;M;Fdr{7K5v-X97TVdLDSjN9a z_kS1+JI#mVGU4KTFh_Zt_G)aPI1&y%1n1VnZ8}x7cg+#9W1-ne=>G<8H@ri8H>W^R z5*%Iv!@j_Sy{c*NnJ4V98M<77>o|Am{!8YNKMz`_!zI=5q^ySaK97V0!eQ_Mc;qR3 zr+JU|`i_MQqTtcv@Y72;u=9P|i*SKwRzX$~wD}BI_IN;h*JeS@jnKUk?qNNo`(K&C z0dwKfU9h|gwv|4jJ$Fl(6$U@%K+7j^jmBfzyFVJ5EQgEoVR;kO(tkpGe$Md3N+>CW z?#=K}_ouYSnFU=^;r>gI#j2(Ioz38ZIgqmpPOXARC3UnXv4mb>@N5p$dIEzr>S^!F zXlSw=#^uA>CTOYujP`ao!yhZ5dm%j24E1_Er@f`K;Nw&{vJz&n8t8uEKsa|UytWGt zxC7IqFKCZ768bKLSN21*r*Ma6BR<|(I6n&BI}UAM!NZ-KXiv`-u2>D5i=bx<yx#LA z?Tzq+xtn0eD=>-kithhq4j0UWb?MOgF1#pzO?yMF;o(KlC>L(2gKc!)&|ZQg{22om zo`i4SK))_;Y43>}oVpfPmBI;MVP&6pv}f-FOSiz0*Wr2od%A!45O{Vz9J=@Sd>;;L z`+@e(+d<1Eu;d7|Yk(DcA8BvgBzQ9cx}Jp(KS1wppJ=aXIt)&MUoXO#pHMcSnf5mN zL;am_|7|!>@|o^09s$RP!3Q~T&J*}WqlNYo#z4&|xc4|Te+4gg{z7|huJF}rxU3ke zeSv#>wbI^TFL-S;^tlSZalg|2$rjKg2o~*uZuj5^<u}?}Z40|DhDC>=`*Zk3_dD%v zm<anNz^i9qzy~Pp_Jj6vro+)Gu<0UP^%M3S@RRng`oje~VY@1LLh_65cejM>g>dhF zIQA+0sL9%{`rplM84E{7!^Q%b{2C51WYgZWDR5m998wCOx5DH;9NHV<17B@{Tdu=V z0xsR(G6ZHVfUa3k_z<2{<I&!nQLw`@cr6dcG(z)EeA;_C8SYvMT?(P>Gc4&LpuI>B z*nbmzc^U5E2<iUmgP>L*yqN*l)IbNNi1q}wus9MfKMaRIhd*@1w0CAAT#^8Xo`pX? zz;oRsw6}Z)wB7&(mte&&m}DlUy-9PS_HOv-4%{P?(fxC+py?v`?I0|zgKKo;w5R%+ z|Hm&j^NYjba=Dy;-oa*ZSX?ekbuXLCVOE$O=0CVx9*4&j@cDc(^Gl%mhcD!c#WI0_ z`9~^YvDDO9EG6@gP$*={WHOdO$^0V_aAnM@KqeN5M0}P~CT0oL#D6~`kA5**B8jYx znx>vXx84H>7XE!V3-|xM#VkrB66S*|6pA)&+O%ueu6_IVR#sMj|As%CjLh!;y8ip) zGY_wN{C3)U2HpD)9J}N15BHysFJkuoJieNmnx>{^$BrEb4I1?KZ}{iq|F7%+dVG5L zj$L~XvYG7L{_hX>KRiD3#sB@48yFaL@7`VYz5es-|9brY|GMhu!~9~tcm?y_Z?E6A z_rT$HW4rwMXsmxdzG~~AU%a-qw!Xf8&z?R1{qgC;(TDsmmYIjaK0QA3-De(uz)+jP z1OMm8|NB#5e)!BcpZUo%kI#Jl%zyv=8~%R$|7Mx_UHE?C+46sXeasKHTeoii<H!GR zmYI*wd~cXvs%Msdx4wfc$4+HlPMm*x!7(2Ozf@cFgl4|2dU|?Yx^$sU)xVf8^zW~a zSz|s~=C}Np`y#f8BjUCyMLZE-BoGOi-zgSIVkJ6kF<XZvW;H5X6*bCMd4;l7c2e0Y zZIQG{vXyDd7BO=ZwTKdx5y}=}i_lN$r)&|l2wat}$`*bL-(G32Y~i)=%$4TK7H$jI zSZS<m;V?IL3tLCo%DN!2lU|V8$u7z+$n6vt6gJ9OWvP<a#->edo6<JCwl;0!+w#<G z)MC{xsM)B;t8?0QY3JQ8y<KTLj)sATm4>HAv_`r{u|};1N7F#lO4Cy_S~Fd<ShH4> zqt!*rQ!7?0f?KQ=!Eq4y^W69mYzu)u*MaZGGZFZ6bOiqFS}hB{8`ptn!gu57@HyJ9 zY*)4g&w*>qGv?WI>^bIKbFLOoi)YWaXN!3bEMu-Q*PLU{(ct1{#>P#^HD?)dj5zAQ zZ-#6`HlJg};wo`#P*f`#<mHM6S+%@C(I73CSIe>#4Uz(RwX|HeNzowAl2=O#WaZKX zMT2OQyjmQtXb@(}$|dEJ0%?IXL7pJ57FCPHibj@DE|fnL;O3{;Br6k_iJcYBihN1F z<Qe}NKT8@euM$=XpYfjY;$(5MGEtexUSX^-V{Sh3D#0^usx)7mDS5`xP&{Kh%d7Zd zvNEBqJWiS~s^X<eGQ~c!GJ%=AifbgV;%Lajr1`=swzI5^A1BEarHXB3Wjr6Lk2GJ9 zFQ{e-WoFE+j2kA&6dK9OIL^|1zJ@GLoGL0~+e*t>La7;ZD_{vF8q6(^m&fywWD3H> zVd7L_sxXTs6sNLMS$W(Tk&)C{lE=y8Wb!qn`D`C?iXek$D+v?D2xEk%k_@hsIE8O0 z$>3zLy+kpB5TUg=g=Z>G;W~+8_=aLHVTd4wqb^QiTZ>|NPQnnrsVIi)B`_4laMVTC z!Vq2zJBG~{#j%_OUVL?-x{xmnW0?vKg<OFbi_3TV`?aI`54;|DJk|4Gi>1Zl{>ROZ zcY$ZaZ&k+fi}^43t(;l`^K540bt969q#~I>9xoRt;uQjAyi!2VW=`8KZN1y3w{>F| zx2<i<Q8Q4};W@Ca)J(V*94)RE*PLz67IQ6F#vEgg2FHk=KMl$jMYXa;UaoAB6)0Pz znaWIMi)54Pbtj5b#wo*;%|ah#v%p!|%(qrrD?jo+azC>Ec{5YuHe1bC{kghtJ45C< zS>LXUhBx!dDb?UHuNrU7J(~5JU9=jxo?6jb=~~5FwOSl)18uR~O50OATH8XFuB{`h zU=?dOa2hx!3LQla*F;{!sbO14YqhoHTJj2>zqEpzEi{%H%PKf0`4w!j%t3mR=P$_? z6mSc;Zjx-ivD8>vz$xHpNwuT}>;kq}dXnWYP7^ptvUw4rL}3;;i)$fq6B|p6C24$r zQ5HLkohXP9ZsKj?If&hae#|YCgPZEPB$Q;a%*C6yuA&6Kk=RI_%1Pyf3xr|~=9bD% zWp85HixPO@d~;C(*H2(9isQs_?1kYx4UvW@j?LUyaV(+8RbVDG6NYiaxPE+lfsxQi z7{&?X`0-r%eC8RVdY-6mA?y%#7|TrH!?oo*^Na*u9Cd*g+l$Q?_^_O~PFyp-Ezgke z#8KyS`KCN;t`p0UXU#EXE{3dG6$*|{wd(aRZV)$0YQ)bJxHZU`o3ufiugF)F$;+4{ zLbWtgk*O$?mB~~`gK$NbtV~iSDHn&!Rj=<nIc_P66h*$QOd6+nCQ6k*6Xr|f<W(Xc zMV%l;mMK*o1FD493TuVx)n6hqRd~t0m{)x&z2@uKb?jTbTfBTxrZ_|zqIzYsxQaTK zll&GxL{=iSmd8j_Bwn%-fvMa{R>F^wWQbD4*0MZ7h{Q=6BTf;8h*N|yqB_|v`M<wl z@On|5Jp_Vy0Z(Wp^b~5bwdm|2WC>X-geycV#498#r18uvV}<-*uZs(9?An(8KE{`- z@zib9W7SKU<GevTD>~8_x2tc5BYhhCU&neAQ6fi2l*s;b%r_B6aQt~XLe()oUGtwu z`C?5Az8~9<tvb#d^Nsng99NDOUyH9g){FUWEOVYY&z?ErtB&@zY+JS#PslUk8gb1y zW*mE#kdE}sQJ!VUF=USJhRijtAxm|BX;c_!Suy9BR%x_WjXYb~DmkfWlvc=VWNFG) z<|lnpUL#FZwu&lbX^KX1gtAqbEw7QBl=&;uwaTUCQq_4fQPC)JQ>MvVm~&;gLUqhn z9rgcp+^-QQ%I*K-9I84GGzc05f6k@;idL4EQcI~ir*4vMl9h|g#jc7hX@R7HA1<#J z+AA7(39@pLxx!CgEok6wk`{=Kne#!GBuk=tJ!>hn6b<YKw(8vCDtDDv^Q-ycvT~ul zJV9E;tKt=iHc7I?ezJ0bIde{6Zk#HPF>?;mU~Xa3Fy=X=IzLpgU1im*GQR38p*m04 z(pf@vj@TsrbB<7*B~<4L<|fD#lr!gs5>5%nNap;Hb4EUMhA@+ciSxL5+*D!QKh6tz z>^ycp%SW6lu$5%;!bEXGGv>_juXBUCB!kVDWU{<Os&mAjGeinEOvo4i$9aPF&+~-p z48aw}(AmLM7{av{aD^c()w$uLvQGI?aZCA8UZVUcyQQd;=P64Rb+QZvSNZ2P@V}ie zM)5}RM+rs=M~Oy>?IeG$dM?PU<lgeVas!2pB34nV;3*T?R!UE0v~rKKR;j~xV{_UV zw6SWV^Y`_~zn?3FT-8;F`9IDVv)jyWt2)ltt9NPVORpRojaWL$+i2=AXQ)<IG+iGx za%weo6pd_-7M{bZqke_JLSC$;I<D);PYP9MfC{dGwu7{qUCkEDYgmbrY>|UZb)-Kj zFqfG#M|xvfIj5ZCDs`2f<R^-?WLmOvb~!suB$k!4%2_!2M~Ka(=2F!;AW`HdF=oyI z*?fO-7B7pA`Kn`kgfK#o&%sSYs==K5^Vve?ieZz$USclE;<}1A@r@)#64jAkb==Qn zXR?J7KT#$tla(N_7pHPlx#nWkS-?;D=RDvl4CkAP%tUeAIOf=|I_kR${P^Kq)%5|N zx#F-D#qm_fd3%8$&rpP040D}e#vK3u9Pgc(Gr+$e^L;pGeAP2Vb>vq)FPyomW4`LB z|IcH-op!6TQCXvGR8%Ny6epRh<qAcOj5&A8R9Ao1@>WR&a}8L)Tm?2rH!0~{E^d&h zt_2I2tHEk%f-*s=x~49dmCLdfX^I5q7NLw#Gz)R7l2l2u<f?1M7J-k_NBK<TtW1?x ziJSS)gqgB@sjbph+01L^l}j1~&D>_LsnS%bIzt#LKXQB&sWL8e{x4&$7&D|9(lF*q z(V96|l!>YYrV3L<o;XjOD$SJSN$U7@ycn66ypC(A;Qq%MB2RRSmm<j!d&zEbL!_$n zM2a{>k|9hHwkTR;&GKe>-S1n5vX1@`|L65#$1CRPa7@^>JTXgkeh@M@E#~@)$G75p z@}v1~0t;a}Uv)HBU9sy3BiP0KKSy&1UM=5PU@Y+CFgNCS&RoB<R9EjN%(eTU<2jDy z_FOlXn7M*i9n<YOT0AYD8FOS;9ntNX<GC5jjHS-S&6I7(Q6102gg(smV~D_sxo-3l zsE!3*{1C1aAIAVLAD_Q~`P`#<|NeRNS-9=tJ?DAz)A^<JxpM^J>~J>o*|SuiyFbf7 zU?tGut3GcNfmoo$+~|D7{7J)&<tZ@XIdD{0g5v+;&liTwpDR?iKc91$AdK%L@DbPw zZG~aHFrKT>mG3O@;hPF^3{zdLnDL#tUOcYQnt8UWo~zbeQ?Bak;c<2T{{D0S^ZJ%s z$`$aUd3$*Eye@pz&%u))%Y1dr_nhs|;t1#~Vm@aFmg<NkX0Bef==$|Pk4NFmHCwnq z^=kC{{W+>WJ6vzs3Ty?gd{>?i*N1B;4B`0j_{<SEgyqHY;@I+;*P4JUP`$=X1%?76 zzB6-erOtO^JF(4pwp=cAy>9sX3Jcfk0!}Qal=(X-)w9dwAI~izbNyk!RXtOzm@5F) zvqgu_{r`NfsLuZOEDfFp&z89cP(4>v&k$3#DVxtcV^q%)C%!e`iO1#R@kAWeBWe7; z{dpe$c|HiZvD{*=>Ih!T<?!$m{_|%@)ptyXYeCogM$DfXRX6_cn-L2))%V4gZ_8I* zTmI|%^52g&rrba0o<E<@|L^B%!;R*q)8|vnyf$jNs?SLEx=?*i_AGnm)$;%PIcjiJ zH`Q~F&-{7TnfaWYdCpu@{-0-)>T1`ND_}>n)7kjmtG*Y1zAviRw(9$D&YY`^eqU4J z^@ms9pRZvB^Al4Y3I03}quCZ5bLP)OI$SaHCn6J$7IQOZ8?%KRA;*|y%rfN~{^RS9 zXC6oOn0(cZc}*HKd#cadh|S!X?<sTtKR*6{-mkh>gQfBJ<Fo&KV!v%=MX*k?ELb%x zH&z-;ht<gPXJxZYSQRV>RwDEFBRsYZeFs#N33LCSuj7wZtY%g|D~$DwIcKFXH!oHR z%ZX*m3JlWs2@VblX88xs4-3`z4D<E%3Dyq{3epdm=MfN~-z_Lu-*&v633LBKj{tvf z{ceF_0Rbj|7Uu`~2Zs6tGan{Y-zP9A%x|{-JfC?%!4a&0ppa1gkcdF9*}*}9{*fM` z{y~APV4o15;DtWk`m=pJyqU)d@Q7gk&3xc6AC_-Wu&2Mbw@;wHr+;X$N2t&5{`c<* z@t8M1z(?OV*k?hQPoP)Cf8OsiZ~knL5dV<h-FlL>zSnFYuetiZ9{vG7-v4|6eddb` z@}ke`_r9lxw|<D1M}Uv7hgT@`Rr?2e`z&Iq>hI5|&%7XSAAPT&d7l1(_;OTt`UZQ< z^U)9R3G@q{{d?PQCVfRA%x+j<=)b;bPv#Nl&J2y1??a3K{$L?K0X|-;ZxQpbzCm>N zJP-fCncg0u9y2|C{QLv;|9q=e59$%-?H{DCy7S*3c@*=*o97XzAL`-Be4p?kS$`re z2QB<R?7azmR7JKwUiWsE+uhk05;{O91SK8zO%j#KP1uq&B6Q*g%<BY1(`lA0@FYS= zhoB_sC}cp<G)fp`q@yT~Fw(O;VNeG|LChPS?L7m`jGY8zUz)}IzUMAUCo(hd{Xf6Y z=l}nF{%O6bd#X-VojP^Ssj5>|7j*W@W#~*aqXdm0#2&H|(FcjSk|ToTZx9|DJViY8 z6Y<C{L5^nuaQF!U0C_$Dp*ALnXYpZp2H{EJ$3`&rIPmHD`UCvIkKRdXLfF0R4JI$& zB6t?KS759llxe;|p0-F9>xgGu#6ZU83}pOXgb{-oCk|#YbB40$wqY!4(>;vadk^AM zSir#)7FjTs1z(uV1jlsbpU(JAGg!cd87wF<mqpAmGrrl(!o^uEtob1pnm8Nv&1Ram z*-T*hEM#v!)6e-g7Q_me?x2fln|HBb7C(|_H$pWmKAR7S5O{qE+8LjUHVV8hM8JC@ z;)3`@q_OyW@r3X()Ij{WXDy6d6~RS>1PhzMMB*VmEcN>?`k|@4ew6kgo(m>9eRHo= z#{N~gk1OTs`{Yy0%~sOE#$G>4Uw}tVkL;By)4awnJ?k#%+Yq-(DgT#!(kBA`HJ<np za=Ts)QV=r3BC^8bv%(Uy!csEB#?}Ni1il!sQS-bkSpTxUMdRf1Qu@?42=Ie=R{fLo z1xT+|(oJ{CzXoxyDCu5>9u<ws--f4XqFnz>H9-j}{nvP2QPThWF6n<k+~bqv{5Ey; z06z$o^54d@J55g4_Za{lBpk%Ok}jved^dh(g^kS&OPdx}P!rq`^uqs&uWcD}xh1Ga z`hl(*@PO!|y2pxgI>FM<FMR<b)bycBvKkQn8a$$sUz)tAi3n*6XB!?hKiLTBmlYO~ z85W-zmRO^CQK91_Bory-jP1jpf2AjFnKJ!9Qi@jtqVGWhvgGuy)dVG^^aXehD(M^U zlD-CUW2egbyW6kuhsxfDM^w^-RR$ovTMy)Zn;Ev3|3Sx%MBcyPiO81AUk6@DzwZ2* zVJXwX#2Tfy2|on9Dan=b-%-$+j1PWJgVF`Os4CpQ;@cmTauWT@@s|rV{Rx#W1&{i5 z0iO7WWIEh_`PF_UohSaR$J4Cfy&S9{cDE09LgkO+hy0=ZBp2)vxt<OGEPosK1O8I} z0Pt(h0wurdRlHmM2Y*=qzv5r5O)l3$H2VFBKUDV-C4H}&)<^CM?@2s!isf<^sCb~S zFCQC_R;%ER^|LR1<ZN14$q(4TNNzsEvudeaPm-!%pa=OSxe-ZjHp(4MbloQWWitLW zyi316^wT&n3}rPdc-s^-MIO7y0TN;Vp@4X^0QrRF3jb7k?$$3~{IFk$zHP{pQX=Os z?OiX~6-fz*zK?+CQ1G0+@w(~jMI3Mj;kk``e^Byuk4K=7iugxzLG7ZvUnuz^|Cv3w zi@Z@kEx@yPrQEKc;$8a5{RDbdd(a?t7S%^`G4|hO{07Mzf{45E@nFCY1cUOETx_b6 z^SAutez>b#{VP6r9dfz<@c=5J-`(hPWZso7;zQA|<@~MxtX*wCln-jxHax;7a(>KS z<=@@vzl+^auzwKDIv__qs)PkfSgeFAlyI#Q)+*solyI98{!9t?D&a4c@FOKWu7rP3 z!qZB4RtY1lG97JXJn$RaJ+RC0h0o=Vj5scbq7s%U;U*<KsDu}kFye%QuY@H^xJd~Q zD&YksjQB#qS3)(uM1h<CAI5*7=2ODNlX5+B>maYEWw=BM3zSezpVJM?hH`8lIHC`% z=2OEjPO0_D`8RdL0TN0?AK1~R;w$NWVDX#Y=_UW&8{Ye0z2QxN>J6)Oso|!td#4xt zrwnsUu3v?*kdv~gu%-_j&<76c0}Fj%T^~49f#)dwqn4+_fql}|^40X<KIv+GYC1e0 z68$Qy?*ps#t9<DX`#I3hfqoA3bD*CC{T%4$KtBiiInd96eh&O^IS`o?Ul5a7kdT>| zSt8)Sc!xlLB80heNs*$}YAs(;hz-9*MRx1cD+|k>WOGX+Hi=JGEO`<sD;HX^kBCiB z=I}~8L-@mOVx{p?&V|n|E?dq3CQ6{ZMGG)RF1Mr%+pbSh$%HeuPi3^<N%3hEzj&2x z1py)e>~3NUlAvsYutmF=fH?r3TC{A1l<9E-mX}Ed7tnjzVhO1T@3bQ<=Pw~>@zO;l z6;!|~8Cr_%MFJfh;1V0QIRVrXP=@VZ0yYuwOrdQ>iA{oEk>E1h3PP2C9BO&eihW1z zQ_QlEtz2PSy12~BTDfx8#>?BrR(4eL<l;rxjYYz51F)xAPMgcO0~ReWsVK8OU9^I& z3oKl@q6pjCwSkPcGAnJ;T3MTh@r4V^nf*!Izq1kz+nb2}$b*U4!?dlivi00b+ma{Q zi-9c2whT<$&ndgQzvPxJUbSLj1*rUxE4SN9;4ze1bd+0Ewul|)G^{NNC0(FDn}*`g zUi#xm#-D@3aL;Jba#qVPTl_ROwb^TYA^Ry`&fe#ju3WOhR<fjmea2%GS=#+&U-44M zZvoZVpDkO=Ug2pA`6Q1j#!>0xK`dJE4*%qn?01MgND+%yu;214AQMlsKO^qKcwn}r z;m_W5%JTsJII`$%8jx3j^rcpInXg#3qR7fz0W45z?rWN-5SACQpK9b&0PIaoIeS|p z$zJ)2GWL-M1<pk=%@+JQ2#+>Ty!fRCoBZrUBwnC+M;`vPVGo&?O8v9aQ>-xn^*;t@ zyA-`HVChOQV?%&aXG4J8q3mU#eeoEI*!u)kG7o<)(4S4k*gKZ8zAtAz5FqWmv)>@Y zK|3(o=+8m8x#SxDsutZ5Ks(+S0+uc=FE4z0F}oHJ!1lgHevnOX)8B)8=&$1g>F*`- zhwPR9UXcDaU#6IY*H!l*g<)`|IKX%M(Y`6c7t$n<4OZYyq72hMBc&&1%kWqg1}o@y zKORb-Gfx5;wy-7mi}^BaR^SqHcH)<hhw#7nu>`UL1;!q>^joRGZ3?^|@DSju{=h~h zee9DGI&&%Ms-KYdX{db1GC6&}lCJs>KT^^!yd|ffRNyZN5kK1Z3=6=1nMVR~PDO^l z_>~ObP~epRkYOF_B79MSLlyYoCvtk63ja=qhbwTK0#8!&ACc2D6gc9j49`~JFBF*e z6r}n-mD3li=?c7Df!Q%Ry+VOEDe&_O+@`?wDn2>M@q1B$6BU^DAgI1(1^$@=A5`F< zD{z|v|5||y6#p#kO;CP^0+Sm}Do=sQEl9BH&poHWs$che1y=pL;SgZLSN*(31y=pN zV-;BS`(`Sz>i?aqz!8dnccB7{3S6$hB??S?g;d`r1>T~-s-Jk50;_)E{R*u5jXzOf zQStMBt-z}PnD*%<ekkca1y=pT0^G9_f0Xoi1y=pVDGIFm59w4J;j8}8A1ScvPt8$b z#s8YGz^Z@Ns=%uMwpf8x|L#f!j!^u+RSK;7hwIdI#eck6fmQ$VYYMFTpWjsR6@T@6 z3at9Gf2F{xzx!haR{h~86u3mm|3?Mhq`+qg)<b?TK#=geq`(Iim<O+hQ2IqVJx+o5 zD)30a;dn|EdyqyjP{k;zI5u5@+ahE*Pk}Ee@FE3{AVZ7aN(FW(aE$_wRp3T~@iZ&- zZByW}3jCIWAMvPM-iHdj_YoOBslX1!{{CHo4=VWA6`0O9(T~Ueozxx$4prcYNpiYT zO&=x0;}rOd5i*>qz<Wo^@LUBhQShHs;7tntN(B~8GCt-vQvGcT{F(wMD)3$f-m7d- z9#Y^ECH+eUb|~-}1s0X@?1};(RN51Ob0^f^HU*ARU~!;KPqG3R43gpTDt^2SPgmeg zG*IIAr~<Pj87@}fy-NPI3QXt0=(kCMOB8s!nm$xce~)1F(LrUrIi$ciJSqK-0|xo{ zU;cgF2X5;FpYH>6IA7qOKc)|y&<9TL1E=<Z$Mu0H_kpMMfv5L@AL;`?+6P|H2VU3* zw)cU{`oL?zrb;|(@l@fd#<LDj4W9LQp2PDzo(*_v@zmj|$K%A)fae7~FXF*Zbl}hb zjq(ziRh}(c<@Erw;+!ewvQOb;s`_43xa29IEm|>QJZAqZml4V$`K?fXEnmFsNklAO zwAhAai~3@<E%$%7N{1t9Vr`Y?!KnDDLd@Hlv`UeVuUd1MHODF+PVE&<@oGYO?-VI1 z$7)*&0<EAq2Z%BNM64;S(h*LE6{2(!Rt4os=xnSSGY##1N(F!|EzneW`BP7oFJ7TS zrQM~LFDzYIxU4&2iEY{9!ZH=Dn~Z0$I$i#Z6$B}7pcCZgJUUuBxC%On)<R~rm0Oqe z5CKRbzHIsO?mEg!)!34<#YiWzvAR+tmz6)YP<^M@iD_fUj<qgXPJHiy%dwyX=X)ZS z+E(FQuN*OPT<;tb?4Lu5@XIk_eD6AB*e{11;g@6l#NIh%*e{11;h$st*h&8F7%##8 zIiv``9OLezI{Yx?2tSNItdT%Jd<j<2i*O(q%pO0HS(Vpu_w~F^>Uo{e^9prQamV$% zj_rO;?|w_`ew*C=)>C{>={<$}mEE1Ar{t{exJ*^SyQLC+{*3KO=(r+V<Rc(5t&rp= ze-K$xXzR{Nn2Ikz(pe}8X_%~!1W1d@?j&W&-wk)K{JUeMm47!RxdUWK@*YU9J$?uY zRDBi7TDMnRPwgs}x=!tdMoU;J;wdXRFqBtvW5}<Pe?wV9`^EUzC@q)$S}ViSGF-}` z_*VQ2QKEWigd2dI2a10{%BDnhdkOp_{i|2-eo$5q0~HL}I#ahPR-M`=H&c%AD?&2+ zJx!2(McoWiKzK?dqGV7y_zuTPuPE}d_(gQPWBlT}y)}Muic7~Y2KLs!AT&uDJE%2s z^^$u>%AmTf;3t&5eRz@meB?Rw^YHa@Buc)$UNN$3QE~LCE<VM%r?~ZGho0=pL*0@S zPj%l>C^_zAkDctQ>-N!EpOKt%Kk!-7c;5f(=RiLP`Z>_gfqoA3bD*CC{T%4$!2fSJ zaN_2<??V(nB3y*hZPp9$l|IL0M=-f3S79&0YR#YiIBnYf;D^LsKN&_5j2^h*q@UHg z0(;L2fS_-AXD7>POSZ@%!M#ex)~1{y|D{6-E3tx9e|^h)T-k?G0!FZZd4f_N+AjU% z^5BSDQi7ulKcsKi=Q7@3<$w|FUmiAB9ZHfESgnheFDvh9a9{d_<1+T86xoGKFt#NA z;Sc30i!d3bZ+SPb$>qc<M5(Y^U@uw`X|=9gM*c7?q;XIChwY8<$>n9s0VB9?8EV-S zV%-MErL@GAqWjYK_)WQ>H%KV(Blw@Sm*mci$7-FHnV)H$`ta;LMfwyfL?lYT-Y}I( z55<xMTdhwo@9BkqT%NM+A?5U^i*!QSlEEA0@7u4v>5EXgq!dE1e|b_Net&wm(=S2n z-7eM#rZVYKut3+6LO2?hE?mCET7p9kGT(k!9{IMVAIkHmi}W;FNut0iUD@x6=v!W` zLXV)J5bR%GPfq!b+L?{VYMqrc+dO?*j?$aV(WjjX+({YmBdJkDP=Z78m$r0h8%B!9 zp%vnUxOmm#MJpw*niU@eC>pcGwh-Qm(OB`@76M}^ww}i#r1}yOBqEexio<UX;0p-F zYM$){NkkRZaRD2@v?p+(foEx861E8096a<hD-Ufsk&OBC4`8of0rC&)6(a))2&kUt zUwiY7dqc)A+;?L@<o9c?U8Z9hiFo9;qgIVxdY5@z$fqJL0+0G5JEro5Xb*fc1e(UN zF)Pc<h!^zaRg|w-ymWL{H&cK|+gDW1SZrwjO3_V#{l9(=^mCw}1N|K6=RiLP`Z>_g zfqoA3bD*CC{T%4$KtBiiInd96eh&0=pq~T%9O&mjKL`3b(9eN>4)k-Np9B3I=;uH` z2l_eC&w+jp^mCw}1N|K6=RiLP`Z>_gfqoA3bD*CC{T%4$KtBiiInd96{}(u5WUQ3s zJLVnKSicfN4jGIbD-|B8ok#In#HYSdJ#R$lr-miFbO~0ZnReC9%YCGNo-v7)c1oY@ zbXe-xjr*1`Hi_ayp5;?nXE`>}sc~2uDvWvCIi3C72ipyy6~+l(O=!!x_v;M}T&Q_F z%6oEP=Ck%dHuuo?UHJ~+;x0=JF63A!uaW8O!v0zVzI$0J?5dr|l8zauY}|kG30$*9 z5ST}zJ4UQ9G0~&L)1gUC#lQBfPeq)->C8f?R*&zmMXGpOCi;lZ#K5{Hic49e$)mUw zPH^Jhl240#sRD~KA#dsw7Nw1071n!L=}xp&2xN_fV?ucpZ$f&;U{+d0X`GlYM6e2p zKD1pxIaJRnq*3`Mq-&8LAh+*J!qY~G6*}gK%1t_ANaa#>T8^{ZfS-NOQ3LoNV`73? zKwjM1X~bO~wAo=1P;Umx-N~_hC*pAn$XAQ9v;S+=`=D#?S&hD>LnE{hT|!q^{!#Qx z8(^xhQxnqS)#zI4y1FJ7BaaUB2uVkq^eETHY0bH)7d&gBwyAkcx97Chz7Y^%Ow|0| z>Oj50EMEtFJ?IVza9HpuyBLm%>F%WCO%G*`J~nFD=S`!y(3Tu7%=}K}<E_V&rsf_W zEdC^{V%e(WNt)buE9bPHPnw;39&zCn%U6Au6qfrg7nXZ|N_MLX??L(=q=!~4U9}VG zSq?VWx`ve=)v)~0;Q2Rb{|@jeG)7DdgPfd#Oof4trAbE(qu40j9>RH!mDT{~Xf>O= z=bqz+|LW?Bdl59@PG+OjZ-uPXOMQbf+~D0gjke`D`1cL<C-}C^*ELCtcAh}KT*!zu z5Hh1>`Bp6}Z4N*f%1XIVmS4OeKF_{J$Qy+^-%;q|Q07?;*FyORfUXemssXf(WFvJA z!21yLM6@-4u69jW3+}JQWK3aYZILWL9C?VwFofrzBj@gPO(gy{Bz@jw8g{g)fz!4e zMZA;K=i0#|eT9A1RJ{M+qyraz|35)TBK{TI|1CcRi62647IgS@Ae*?GZL*M#jet!F z0Z*YXF=626De&D5yYo3@e$SMtxyx1=^G<L=?uQ&JJIrk~;M<=QvjW&$>emm^uLZDA zIp{+ZGwDbMKZG3ch_j(DsJ}=j&p;<hCO=nn@jJ++WFH_;Ij{-Tk9(kRFJ_vKjUINq zX%83HQU|?jgN&U6J=!i==Kcb>;6WB8*@yr!y>7~?_wg_KHlBryzKb+%pSaq)#1$e= zV0<V3eZqX$r+tZNKb4olG@a`qdq$33Yzy8l*;5AoP?|7Ibi;NW)4`^|ZtU}FQd)G) zb(W6ipO(R<9utN!H{p3Ti7i^hw<F%famO+kyV$O&YZ77|e=@SnOG&J*313W<>?_%7 zE9yLqI$=ZiWebO!IF55tJYT1ArF>LxsbWHB2*wRz;d9daXVCL1fnD6GL)aXCu^FM@ zt+BLgc-S^g3*ny%WcjtVFIlqI2(G2*(;~c6{M*Qzt&~{+eH9KkrFiMRd1J3K4gog> zby67%PzJqI83m9#;V*vgUu@`=j{~h#2j!cMd_;$o54KS#+1m3C9(lndf4W7KO*S}H z`)O0|F2U6f+g#t(wO{3D2=bgoo?_uhlabSO;wpH)9&w$BJBNH{AyZ4WpEvE<6XGI! z{sQu519yb>v!)z88JxcJG}=|HJ=$d6qjlLU1(yx)S@#I8WYB61U_Pm@r!`o1v*t2t z1MYjq2xud{8>l^_<o7s=2hS)TgK~^8|3&E?cb{XZKPaB;?va<}chap4PUt+1zSg16 z>>XN{P^otbRDY7*r9pZT=-~ki3U8oiK5Za7iLc^!x{)sjZAoQXXG)#m(k06Brs8Tx zitbd%j*a7;I>@3P`KY~=Z-n+pQ!%G=7J;XI^X*_aKG3F!ZsQu}-odf`)c#W%?wAhc zwQF?8w2;NOAe-%))D|75Kc-D#ZrqoRf!+9$@?fm{5;puxeE;?&wIS(tX6vatUHdXQ zb|37q(~f#WMlyF57b?-R477a4g*cDx5nL2+@>R9w;;|wf{}guqY@{DWzE9nP>m2md zx-GnP7Rl`e7HO>JOOJ%H{PtDyn2Ya?MvSl(rR8e%PLVTyb!YX5?$a9He7UP@t5Avg z0Qx}K5#DIxwtZRm-Ofwy;s13>`)?O6X)AMFG^f$t$=RHEC);^v^`YI=Zqhd^6YLF; zE7CW5e*yALvQO^?po3(e-f@LGpX7r2-n)IH6t{=+K_;Yh<RjUq_hyQR?1Psv*5>fi zM1mnBxIP?1x<WV(^b_eLz3+gos50-xSgFc=hlWojxekFWH|)^6yqM24K*ohNI@d_; zv8L~!1Lu)$5{@;U(}cGi)1GKr?g@91t=$MbGjyXKj}>ykgN7y0Gv^*1^g!z>#(SMf z>q-P)h!<8)E8&c!_+2`e39@RU_j~l+I5y;?I5p31$Hp&<{%y~t><5osN-?xw64qq9 zw0CkP9#fg#Gu+QpA{(W6fn(tR^zJm+S!v$aEzf?o6Z5@`iSJc6K_B+1d?B4EfSqgC zuol$@bbuctzy~|%h3vLC$##Igv#^achY^HNn>xV@;=x1jg}P`yNH!uD{4yb52B+)H z0$<F~!D6@8l?#2$!FvJh1JPf=v3*Q?P_o^m%R_;yM|zQ@%Q{Jy3zBpaE<WbbNO`hR z1_KVgcWL;OH=owHZ&(A|*B%RWUwJsleP?yB`-Ud4<*Fv2<udH|70@~mybv%ZwPP$% z$CzA&A03+dCX+Ij+{fyhv=~pWqir8HaHS)`58Y)JX&ua$3gImOttSJ<(%iHGda~43 zoYtTXbviiXS8bZOmQ$JmEvGf{Eh*3yuO{Byp6iIxR%sJP<gmH6N^!GJINFp`t#!@f z9hO`!#FY`sE>1;z?HJ$Re)UyL!>gV$d*$0M`<+FtCM}yw^G5K{kUQPvB>KG?AvFiO zoZ=P|K72jA^mB|;iy`kFCpK7&8lC+Gl+^*fp?6&M&(}eh=)Dbkl?$DqcL&~e&<T7e zAg1Hn8Yylm;X-$$biAiRH|af*;-Q;ZgT&~dgHk%`&_VB{biCI?AL;!dbZso~jGMXA z0=ye{hL=`@cdG1#YX4w3qWio__eYWuT?^??C*~k8YL7P^e@`#T&5Mwm?=(RzZ$oa# zwn3ir&jBX=`wqJIE_Cnw{xBEKT}bzGf%my^yvd0&2%lt!^1iTN@7hzTbG?Q4S4Zhw z#H*!9qp_w6@`!);JAW3^>fL(CW2lSDdDRpu;f+LE%O&(T>|zRRhW&}V_qS2QN`3FY z+LVGaTTs^%D1+)51$#?2??b-F=Fz)q^XOf*dGy}b=24t#^Q3gpLpG1z{cYZdKmDQ2 zBOKM{(R&iw+#{E<E$hDT+S>LsbGK<?Agj?W3zOKEJF90xXJ$ZmrbCCOxo<u_)eW7J z^epwxwAK+9Uik9ZTkcEFr$4@APCj)hxAK@P_s-PTPS~9husb6GH{6-t>O^Qq_(HJ5 zVuu~5+ZF2ae#^N#-(;BMG2a=CI~~ZAiae>6pP~%p0dCGN*xaW%cgJw%{u6M#-!hDm z%=b0kuRQ!8&}Ghj8TN>^vBs*k81oFwQ>A0Rs_%JsRTRS)VH{t^-|pI4FqCVg_gK7F z%>&NbAa_+6^W0gTiT3?g8jE_BH&*mPPWOd_2UX*l&mS*^@lFnN0d76-PJzu3;_=0E z)c^f0%y9(~>tfCcUw|~PQOmpn8l!>J2EOv3;S}K7AW@oY7-3g27tP0-Iwpzc?i|<2 z&^M`=pIh%}N-=lNPsJSDTB#|;oIIcA0;kBf!af<3*u`Sxr8zUL<*EF?-0Ip2*y2yK zP$GJaoKPysPM|Q?cna%EJ?1w#vi$ZP*I9X}w8kbIYCOcGeA>W(xfzl8XNDm6MKgQm z1A3dSdp?l3G_-{5ALWC7PQ*9)rLotD^~ovZYcB3dXSUEeDsEd*Pki(8P|1c;8DdEf z9gdP7d{)|nFP8e@l=kF3==WYw)`QdL_nuhZQ>LT5r_470_J54EHT3M@;-0dbpXw<u z@#&s-hu?c*QBS-&)*2(2kNuTB%oy84ZKucaV8Ax!Soa{cm*!J<!zp+`#t|Sx#>6Ne z`9rE5>n)Ebl8(xAsVfhE=&m)d!<<KOc4Vyk3Dx7=u-?)zbDiady7iV9bJkflzOdf1 z>7jL&#*OPO)eo<;tZQ6vshPXZvVQY=%X4|_EYH8R-m>A5b+G?BXF>5>4;B=^jb{&@ zcOIOGd8K3B`Y8p)y8*w8XD^=j@a(|zQ#?EIyn$yIo}b})^TAw>e{aW~u6!ZU;@gd} zTninfd8{5~RdHHR6~{ceNnE3q8+MW8+(bUDNa#QgyGTB`D-Ww}^V4;dMY@@SwpR^} z>ZO}qn!uB{mxsYlg~MJ&z-~oCzoTF$qG2bvmZW&mhdK8?(#L0hCc29ZqNg2jHvCeB z14N&f=Z;~X+IbW@RRlZojDh+73cbpPKAj=`#9Dyt3+a6kY|YBktnuZavc`C=!!j_+ zVIdt9kd}mY6e4dCbb!h<4rUi08i;u<blM1=PKw7nblM1=22TEOB;Ac|Id>B_7&?3j zwis)pacyyAqhnjHBA#pp*{l@Uh{B)pu+y<ErzCvYUW4W>lt)CKS|0kY>K=SUWb136 zM}6F&G9lYx(Qa~BhH|w{L@z(qVIiBsBd!MgXu~{(Y~>`_sXCqLs{^lVhl-whl=(F9 zY*C^Q{)2tQJJNBAPjS3rN#UByXpS}&c17|>A#COkPHCI$nBqcyqNz#~Q)be<(qsfp z_j9i{QCmNtaVLsRibtJA#^AgJj=_iPuso<0%=nxUY+7s!2VaRt;mupXcLcFX1wrDT zg<+X{PH)ugY1_c>DG18iv(RvGO40r3$3@I{N*}nVZMb8K19<Cn2dC5;5T8u(+@7{z z$CS3Itnt)Tu5mT^)^@vVk~doP)PY7Lr?nT}?#lO$0E{*geCk%0)DN3MLs2T)4PPkX z)+0Rwe1_}5pbx^>#x*rTe)Iyyd;w#=7Gq(D@AWT>i+_EoWku_y`uM+IGGTm6!`La@ znbB&z%3aj>Q1;}5Q<{0l6k{^GSOYsrJT(UEE-r!`5-;&@W#rTPN?V2XGsZQNw>ron z^^3p_7+*V-dGv#W^9WZ&Uz2~Z5TPkh>oi?m+e&oOy1_=i=#@j@W5!&Jiz!P*Ur1|9 z$gT-At9Zr0GsCZJgHD{~wa2z&{i4U*Ff}vPSq!<hqdYiGCUx?<V^vyqu@iKf;lr(h zY;)eO{M<l!ymEgFokm~UpewL}7J(Zq(Mt16RgO~<;R_?VLb*g2=?(Qe<O}*JNMoEG z<$H&+lh8R?_n-$f)}zd*JFD}c;}+=pT<H89=>Eg*+skKTo)Rd{Q&ism9dm{*4R`X| zV;t~#*aVGa6UY{j%}ojrVOQbXMjw-2L*Fo7$F>lRb+_bKPeB_dfHsORgiOXrG8x;F zg!p^$?qF=c+$T{|I|+}{j7Xz+r0?6!O75dJC!rjHi|NM81YRuRA%tF;YkB4=Qr<~l zXkMz8rw3jld<Sw}gQPMFo}cRGv35AqwcT<b(Q-fe&0|}tQAU>!ZFo?YiK0YV-?I@G zfsZl|r-CP0;9(~C#z}mmvg;s+sqjmhD!DvUDEtACnOdzp_UCYQ23@$rl9JTo5}qiy zQ44vb`luaesJ;-?hkmO?J;eK3gPaez2WruGbtwNRE4WXGvg-lcz!#yC&!aT8ohMNa z@l0;#z;0d<Pd`=D?j;?FA76W~oR8{1j5L*ZwLv}czo9(3p7K3v8K6br5_*;Y^ImC& z?lda@ElLYxp4xR{dJ#*+mmnP$@`b80Q-yTmcinfg-QdtKuOrS2StH!qAF+y^B#(#L z$tw?YkVU>*7E_jhmNe!O5=D=f#ZOk}<2mY>Ky!Ygw_;Ef={?z1>;=uuQRW^gPZZrC zyLt-qc*bRXMPtH2>IdMF9A&~T5Dlb*MW1AXem1EHdQQ4Ub7PVR(#JyRAL&Cj=q`Xh z6s$Y^V8Oce4^kUv`n9D9dG4&vg8V>s4$EtBb>2&Jb9|q0OO-CdQ^gCt#%clfp5`bt zUrDU4o|4Gnc@9q?y+`a3s#zmsd=KWW7f)d>K=@jg*hqO&;WH7DM?@YGc|_z9l{~P2 z-FawE<xfk>FwsQ&cP6xdXkeY8?--e~ULGT}(O-4gPnyU<YQc*w&~>ttTM(BL54~XP zEH+;2EDDP7ER0I5s4q^)OAW;yTpRr3Oqg86Gim-zc1(bL6JG7IL3u?35-WtUavJr~ z8KsYk_&Jcj7`+h6qKfzk@Uv%K(lwRGoJIq?76AJe2ptUquY(~og8NK3^PH;T+zUst ziCuBb=Y_utGUoG!Lw4W~@amcGYBbg)pu-!75c87#d}5;)xa}J3J;LYYNQG?$KKAD( z4g!zcle649ah*lD2jc;^&SJn^EuEX=0gkU7Wl&lQd@jP^K~8p&H6~SYc@Jn<6vj_q z{3xw+#h;&P9iWME9_Aw&Ph&3e0nfHj-;G#pj51}g$W*N{Y8J=F<KJtu%($tM`1D!! zNayT7KGPbi33G1b9G<<?Mcetx2-l``hbLlfq^oh9!_yp?X&bkexf~{khppjU)kzM| zPeZe8No#o5x`7T))*6kgCeq<~W71UHqBQ}o2Cc)>fc5*a>=DkTDD$HMqHRxQfb0C7 zIjs@j&uI<k!}VhkMq*Df5l<$bg?Ji}z6Z~FE<%5vi^Rk5aCmtASuRBXHWy-E3cB`G z2D%6jd&l~vpzlOhCdv=*i36Q`(1vat(0d{)t2Ykl?u7&TPh?H)g=0rM>?p@B)uq>) zFLRBvW(FL1n~!mh3C(Q1aIv!Wg$V4=X)E7<hYxd(xxTjbVnyXo#_)V28{)7;u!v(0 zgpn-r*eUo+hO$uSLFkW$t@li04$pe<O%t%*Gd<1W2@=+OW{!1ub|LQXYl2*w5Wp!8 zPfWym&!dSB&$o#G&$TfwO$^|8hbKOMy=Q)e!}HZzjcZj^yenbQdQX<%@cf8{J8MwK z{51)#-|8KnXJ*Z`<*kW!4P|`edhmD`o=@<6i)Rb^;43`wU2|Gj<0;4c8!SM-o(16v z#uI~Q0G@a}3HpztiM}}3lYD?#Dks6=DIYY$_Q{%H*LoJH{}^RTVKU)Gy9h^uM>srB z$4|HILc6--CJ;`r1b^}Xc!B(j2Tha8BKm%(ad`f=CJ^NY>D4^bG=mNdW0B719NP{& z1zfef=h<rqhz82H!SULG@;TFO-=cnM<Hsm>7uxbXdmT723eM{XcA?y-X3ek>ucdr! zyA=0#<de(UexN*Lrj78_xb^6>8uY^=l=}wa1Htno7U8@X@gIX$qO%4c<6ML~1JFPB zIJO^n1NuOGUj)7epzrQMJ!)Ja`j+B{IbJ`op4tk$K=k{)pq1i3QsW>S_o7`?2gScZ zc#xZW(QdU~il=(<FP3?dz@Nl5_-9XnSAfrw7JO_xFfSVGJJ|J8@VOeRgG+aGVtxo2 z&I!>vTkh34vmrA&ZoOy3a}G~2=A*fgd41q|&&c06JWlw-Ne6N{y<V?H-2Ogsp@`el zCoU3kyZXe%BJQ<5aRU+eQtvon@OqEw1&1dE{$v65f;K&DsyQ3|58q$pK-lVS!K~4% z7k%3`LMQiiSN@ydcg5XVoeldu6LxwA?Dcfm?P-{g!f!TJ_M81vdmaaSuHoHTu;+2G znUXyZhCPo{?0Goz-G&Wr`a-sw7+Yhm2eHO&8rbw;(bvUezmV)X@UvmhX-!2oTY$~> z-YZD<d?4)k1lV($$JPzU-WGVS1<#jMZ#z&&`wM7m2zX95^X<wI`0wVlnz#^s2zb7< zdi#N1ap3t<u1_3zzO?%F-gw~oQm#)Nc)qmywO)9{b36Ci0os=%p3_=N;&~u{peTq% zMuX?^;JFVzVj7Q(;5)m4wHn4AEwynd_V@<JOXE`ES}t!jk8ug@j~x{!jZ43P%~Z#w zNKPJ?ik~$`*@7^~#ke#A<B|>IQVG^fW=({16vm{t`B3LF@M0szq!Y03%V7IYRz|v( z!R9+KCLOF~u4S<GhblSOGT8Wa7?XZm$-9=pwjZw4xR$}DuOBzn_7TP&*_Ma6W~2OE zjCHe6?#Bkv)_}2u#-(wvePb{#^&OLHphJ@V2TtEH={%>=cS0v{2E#lHv^7))NquHV zpUnb|CuU@#{P3PQ(Aog{sb3`=(0pP>R&N~8-U|n9I5A^tFPvPAOSveAbQF7z`c&xl zh~H@rG+^wX3m>tbk968kvBnoPq0Z45myY9o`L(sJ=cTbJ{Mh-ET;o_i;#kC&T;n** z$Fz{gap+^R4|a}kJdOurZes+-F|rlS9bNg6UBQ!gKwcAJUlu}MvtVBmVS^TdkBjIX zHtI>p=z4mG4O<M^+(qxOaZf=eKcRQnzo#LK-_kqm;|j>&7R)OWVMkX&_V&{p19g0b z_aRGW+P+$w;K~C3$==>=?Aou4Uke$p&w~BSg8j>aUCx5N&%)T1#bWip<$3dA)U#;K z5Xo-ip9t3<1`UA`Go-l+l`X}A#zkabRT%UKMojO6v%L?F!xI=Wtq;z&UN~9P*@2;G zpN4mM7Gl0c?MX)41J-RnppGR(e=>Lz!1u%vP08S0z`EDF@uWELHh}LF2i^y)d#yJf z`X+$y9hZc@)2!Qepb&GoB+!w`IQ?n#r3P)FIULcJ1X@mm|5+Hfx?%87177sTdA$$L z>%f`O2WNX9ob3lRY-S%Ehew1w&{&m-u`2O*#sfdb`s`oY^26kBjD(Gkf~}8+&5wcY zkHy@4fcuO-!hNa>>$m{X6gli+(+Khl;e1Wb5Ud@#c9aQ~CfK+It%1X4nso8mrrGeh z&^bTdQ`;@Nfz4&6%2e3m1+7@?=sUheIh6NLwU)X&JIZv(dl))z=fccIc=x^)<_;b? z)f6^omgx&6e)Of+EVEbdz@Fh~jGGHu!}6z@20UmsUFO2{$GLFx!<%2WoOo<U+40IT zuH#7mt&(r+LmMrV$2XVRDko!(6`|Mj(Wqmx%R4;OZ4fg}(Mx8Vo<V#B;`1VYVu?Pz zqby?W1XslO3tFQ~W|)Q)<d_6aw7#5=Hy>!-W?A)ib6NS?G}kJmhifQbym=rOr-yIH z{B=;R<!k4TGVR*QIGaIrgt&#YEK_K~LnfVu_!Vz{{N1gVKOEmtrmswMg%nIT2`ty7 z<>K`M#^T2vwU!%yY6dUUq&5;i<I#>HPB4#vO~N@LbMg3%mQSY<zf)aaEAx#-n96hd zaV*lzJ^qrV@aB%Pach%Yhom`Lkol8L_;Sq6WxLkg>lz1|cimpl`ZE@(AIArpQ<zSV zePMH9>=w(Z_8ny=<ZGYLd^wc}A7;L4K3M-Z7GvHJ@VaHVYX{00?)n`ctKY{DF#o=4 zyXETG9c5eAPQn~*0p`66TI+b47si;cKnIdouzABchvm&J&1Egf*YOy9QV5^c81#>5 z63kzn-(dO0g&k%4*WTy)N;62`q#0tq^|uX{)oYr|=2bo5+K=+)buDO}uZh*~=MCmR zftGLC0P}rgoR*gl?<i|QzK%T1AJ*LGdJ{76ITvbPHnG++`hy*1dmtlWEJWV`zf*I? zE0)CI9c2xbiCDWVz<Ovws{?BsTKD`n7py<W!pz6pn=G?0HkZAGeDC0?m*$%R=2C8; zzT<bC={}9#yq*{I(OiuAYtVlk^O}6n>-|>r%w&R|=Xmo#O}PFB`u83#NdLEQHKwCX zYaW96J=TS0?=zy0p<b_D^cfIlYna|UhIta0!R%cmr;)q~JmN<%57szl@57=m9Jq<# zt-!+d-r>xHwVSybJR$i$f;F5sfnly3X7;WYePLAoa?FhoGVtRFWG1Y#&NBMij<O|d zM!T}`JXJLsayi=NeFk%|r)AtutLR&VJWJ7zw#mUJfzy~Zr`B1{ENU)0wl>+-IU&>? zUzO|{fcJz-z&mr@R0ri*f;@!3bK%RDoo?tR;XloM4+8H39s?e4o?OqnXkRCE|Lhn6 zb%dMWeSfoM`Jf$Tb!*4C+7p=X5$NscHDg>c2)$kM{7}HWqP<4+k$>b&xab+fYxEcS z0R45Gbx6XzBJ&gno<y44H;BGrz$yQGoh7<>N7?zx37CH@Xx+%Lzn}@$`!vBgo6C7l zXae=$YKF9&*Hb=0|L`Hs^B&g27cav%$%W{>uy0zdk;mbzG|D$;gZD$g?*=@3K)?5c z0C#3J=Q#phev9zOgqhZ$oL5#G^EeG>{sj1cpUiwmfO~dlpgR;H_0@MD1iR1AoNnqw z*{2gk&(-0gXBNiMv+qWl8lc~^c5og&<OVXVKlg5w=`F-{I+<rF=pZ>&<;M;>+Q#VI za}d6OvM)^5yX~NV57zeQ-W??8J1pmW3$`LNlatEW10ARRfMxLW(_H!jY}J6@JZ~BB zN3xgqN%nGH>_*GY!_BaL_e-{q@nlyc%;G8LISzgvzcat}c!e?QIAoCIECTH!dFCjD zENLiA5Pg9N(^!Q5XV9S|SmS0Fa-La9oaZ5q^SsD7PkXZH8LiQp+l`_pkqb6c{l7z= zur>EfbbR}(5chHD<#&HZy=eb&==CV{#haLO>;Y~waL)nvO$sr#?E}uMe2Dq%@R{JH z)_i_=w&@DO2H@5KrvdHRf^aLZ)t`OVm`C%<*@u{C3G&gI<q)1Tm#{zypKOELevS{( zC*#~|5qPH21evo78RldYFqfI%x@eU#isBo<p9b)z0laBgX^d(BpP$&lJhQ9e$8<0c zozJg@9@aWIkN3lAZh;$OK08MAH9-Ca&=-XIYAf$|4MF&sCP-fke1RKe4oCPMXuFUx z+XTOkS(fMdm}?rNAh+fV$um$^g!$s(neGTaQYwpdQl&i-wkip2JsmgKgt>=#DB6+5 z2Aa=o7O^%CG-oCCZVTp0=D%&Um?+J^jfIRe&(36?bt3Z+F9;9+!jPGP4-9-@D~wU0 zEY!U2AoJ`2&3j-6i7o*=5x^6n)EFf|KLx2>ocRTjgP)h$7;3IP$a&5s=el>JJ;aMp z(0?J>>=q!K0(cS$cq|{P7toHj!|>-p?iljwnI30)MbD|rkRSRdK~!4MClCj-9XK?P zFmue)q0jVur^)nu%IVCxpeYwL<${M;bDQfEvB!iq;asD+zJPf;k&oWLdv}3}^4B*r z_^Bpf9G>5bGNWh=)=OnG^D=}~X4|i3xx;Au0G^~Dkb$;8iyqRE`Zig932!vU4S$^D zTpa4>B>6rDTGaB6vmrfr;N54?eUc%Pm-+%ulBar<_cnOiEqB0^<PdlyYchY)zGjuz zI&*Cs2OsRCn9DtaIbA;Hc6pfNS+I_u3m><#uk<%IhB0;r{&ip5x53MCCi;$XJ?G{d zcz3`SjXP*tfOJ0D-^VX7_~5ZO$6+sxeB+oK`gZedUqO`UvB$G51v>Q81lGu7J@g!4 z^4%B0-~R~SrMx(Q(FR|540A-S!2VFd0MYYfq*VpUG!*FA9r9Bn-9q~Yef{$A!@|ET z=X<zMKG>p)_Ve2<@Cg@R(QKc00rOvf-#N}mdk!%+F(Uwb2%sruknG2%GpIO}BKdKd z!D*R}atp$k55D_-<l}bm8DG&JTS1uUdw}Xh8qr2{(q6;=)YsjGu^abTd`GY!bQR^r z4HJDI;Qbfak0w7zEZY2Ygx40a#t){+^t_KcSDfY=g;&;FR`G(9=(%)__Sj=uc3tn< zdISFPHk`@(PwZ#x4iY^@%V39IdEQb4Trd1C%|o-?bQVh5N5Op)7KO8GBF^7aI1PP) zI}*Ejxlc23zPl?LdC-@qYFOjxa-7wGkHG<+`9SYY_$clNeY;c92Ji-WK8ho}QyPO* z2jNk<1=z32sDYeduLgZ)=`u18wGrq1q<6|k{PSW=xcxqB{1xPY=0~qc{holmpFz@D zL(IEKhTcQJ<$r{Ce;J~?Alo#|8LwfTg^;P+V?@sao=v;~TG}*JMm)+G)be+~GT!e~ z2A!uxekaP2${?E3v3K$;`lSu!d<guEso)dNnP<#IyAbZizLEf$SNF9xqaR4l6S2ol zX~dWAy({AR)h>zW2a!&^5fQ3+$D-dTFY$}yLx=i{%FrK!<I4`>UJRXOp#D3J{%(UD z8c`m1sVjf?5bSp;eW0eReeAd>*C#?pslJ1>?+PCu(X^E0WGM1p=#u)6;!eZwMtPrw zzNmG#fu6o~m#OK{fAL&bKIAou_(gI{?U@NakbM4|B%iU+-GAXn#9nsKJ~reAXNh({ zAM&`siP-;vTu+4`Mee(CbZ)mTnKeEQ*b5nJ!`udTXj~$AREYW?R`3|wO!FQs8#12G z*-7V&kUmpQ2QSq3W|GY{;%4~eaMq1Yq%!XZUK{3}X$Ya)mUcbl67wh9P~Jp+13r4j zDL7*&M4nL;0%wGrCra|`p)EO%kjG7E3!N$10e;?DE$>mQ`_s`%zQGit+ysQ}D3A8C zs6OK5S?rmHAiirVck+gngDvM_(=}M12SBeG_Qhn~Jp}$-hEMt`&IpmM8W02jDblXP z7K4|HUXd)tNqUupGF83$Za{Cn!oQalbDi(etLvcWI?l<+@(_#saV?R4`Tx65emKu# z_9H*akaWsH_Cy1Fg7zS73*CimgMIF?pVQE$sc2gk#wqN<;!F$edv<Ap;G2lTxD}1~ z7^KGnZvfgJ=e~-zUO`)F3?jMlu2AG=Bb~1hec3q2@FB*DYk913t0bSapG@bM<68a* zdeyeS+lO{K;|o3A_mx6_ChSTF`j%{D4ky@a(T`e`2jh?ZNnJ}j)`i)@Y~stj=(~#j z%CAr_?fvgVxz|9OgNF>p%Hs&h=`OkMabhgXzm9Za)!-=DSbI_g>6=PpY|CCh8lUe& zBkjpTcK6X3NpynOok^f`AmUf6xG%8M6xcDXvIk7Ojsfi52%j_fWwZClW)j8#(%(C) z9|M0M1)m=Qzw^QOJj@p?I8PBI^#|1#^F7WPfgeY3k1j6JVM#-o15t;O3n(>=+iIXT zP&@5PI~}l>G}fu@tcLzwUBnu%Nj93=OY$_JWrbgRbJaE|bA?3Eo){>%m*fg<mfAZS z@vsHZ@o4Fc$ZVy~HrRwKz3PCCLml(|>KNCj4mvM@ySDrAPqazpQ@>Mt=|0ZADlT|B zQS*u+0&z)w;%JYZ_)9)u3eo0nx>DqN$7MoxCQ=`Oe*y<T0Ay#&<*rF7*SaP(!M6Ih zB|*u<q%ojJE>h)qX*^^q4GN!Bxlm<7Z3EGCHCEB_e;^l-#cq0U1DD369T&PJddrD6 z#L?N#6gr0+D3sE8Ot#01xj`FrvGHoxRvO>QW~%2oQ}8Ze&cz@fY8>XC|Ipt^woBFL zqDK{d-heaEm}9o><Ql)a(6v=M)3JzaY{k19^Bp=1LG{E3)*3Lbc`|TLSDJI+Jk9Q* z%!7jf9uv-s-H*-VTAXu<1C0jIvzt%6kIsagLb)HIEU(63&Q6X`5P%EcPNb3XcDlQ; z^M0{{&Lu@%?AqFl^GLgYgnP)iZ_|wS?><duXV~Nv(P0s#a^*d*6)4vj%t{At*lxJ_ z81vlJ7*ek#YZ`BB2DaRy@f`G%zWogK(itNg=3N9=qa7bp9M0X)ct>{98|*L?1@mdx zr@Kh~Nqc2q;pyTHoz*y(dh;>SW32+-5SCB%URUZ;>v%z_BS)EYP#te8bwJ*`>p05C zIa8`xdJ4zVsgAC7IPZ+|iML+6&P028YP;gmE+5)+GnsEB*-FWBNawKV?lR>~$Nttl zJSgMhLCEhd%)@R&->;$lgimcfgmUXaheN~Czgma=zZ%xK8f|1~;}ITw#onLVh6O}# z3@gn>T1ui^mwI;23qKIqv-W8{_UzCA8f*Xg+NT42gZ)nRV!pdOH`S>Pk9T@5VQ&}b zLAsJT_=#~w1bb)j!TBB?BkxthpXsUB;+#q{d}(O^EwrEd6o>tM*Qt%?dAHZdd_J6Q zo}>}ee~&R!lGig_<8ZX$6hdly3blvD+UY(O=Eh%|&?cL59?$^(AkH#G;S<?M5%{}l ze-H5{>25pAg<n|L4xb9b)E3;?&gEjwrld~|I`&gb_B}@oDIA^Q6gRtdY;H@MOn=T3 z?gIk$N6Bx{0Xd{}8|XaxY)^cx27WQjKU1!DO-e_fY||K=s}Z7KFBamQXUCgU-E_t| z7tihUS?+DoQol9Q{$)G(LUSD&7k!vh7GB4k{F_YoEzH5;6ZD)Lj(Hu<T#}8TJ!d-0 zla771ZFs!poZC2#U8H_Fb)_pGcR1rnmR6&DlA{9jJ@Gu&_DtIEgIKq0{QkVm%c<wP z@>O1chB%eipR4K8IW{_H9NTghanwfPyRJ!n`T7?4HB#ws=M!%o_@DAwx|exw!RB_z zL<eM{6YCFZ?|0zyNYMOQ#oGr$q`hePP~oRANqd9_C-``g!@2Q~(O!~;DtpQSj1A5Y zY0ilF4-wy$$2^G$H^i_lx0nAC<1&Zwna4P-!FU~j`B0#{t428KKOZU@sm`N09~Te% zS;IFzk9OC>W@5e}ogXvd{8&4Dj&-n`ILA1-PBUk6J<dz-hE31Cli5nTii7<YlF1PV zU$dBTzm@I*(wW}uX|N-R*W<1f#d#4&XK(d%myy%kbCGXBY<&~W1xG||u#8ahE(9K( z(V}&igfHi}-^ShPdf4UqDxIrym@Kcww&DXu*z+qHIP;8rDRf2>HoX=$o$Ry#n@;l@ z0r`xa&VG4>*6ppqe5|_GK(>m``?Za6O!01Do+G$_4jX3iI_3Ft{Bzq4R~H30)*`Ph zNv^MHIPMR}$?umTv)NN8JB3JmhXOw7Tez=spRH)sZS<`VGIR?3Bwd~)$=3k;RGfJx znC6)Ih)Yy#_95A3NA8C#!&Z54zQKMQ^Obg5pW=-6<;QYBv*@AwOj_8=PT=5<W@;Vi zs!P_o>Icd6U|-ES8TSg>K{IsQ84vmK@OtyJQF6K$Hk0Ul)Lyhor7cXMZKpE7BicqG z4r`=zrWuk(`bB3EV6RI#(0Tg-=KDSPGywgh@+l5{x{W%0i-PFe7%^mjZ<(=vEXVm} ztXC@#N8=HlBO$y04IkUtjB({A=GnJk8*hM*(i)rWJ06S+7agcefZdU7yu!yb-$9Q9 zSZPj(%*Rah6%SeqK<h=w{>==`>1)LF6pY(#hk5uLVp_gJ9^B1tnficO(H3lWn}9Dq zz$&sc<T3gn$>|v}y;d2c>8$WWpm(L7N#_LBHYT8r-bI?m0l1HR9c{gVw%!^6n?66t zePaxhd^6WEM#Y2vuh!wbJ=)NW@tJr|XH-;v|D4)@amu8OwKT?^L>$%==>yT;jBuR6 z#`?77HZS>_KvzVLts+g(YMqQTex;VvtdxWGt0YrY&WBWvj-{(OTNRw6;I%rQ{sM8N z4}^CxjHOrH48AYL{_kl=0Dl1<QXk#;X1ZJL_iK|y-&bL*al0nA^VSH_SB-NhB-@z8 zN&QUx>K<pqGo^9Xt?e0SPYr_4qDE-EvwAx0&@|Yisjy2~uuqv-H+&-9Nuzt6bl<yU z=NuFH4YlAk?nmN`C!G<GwR<Pj8c3HDpvw<k<{QsqU#NC^s`D)R1HMfs-IvQYr#gj; z0rHto?6sskWO5F|*qp5&h<J=0lLOrG7_S?kGu{U<4)L;12=|1zyfZO=UzGWM3qFNT zjQ2%%vRY}JF2-0+v{Bz<Z^9SLX`MGo)?v3v);l3{c8pOz`*e3Y#vz*1T%92L_Je1% z?@<LCEkf^a?VRDx>5}Up8%F0&J7Kc~PVbC^&ffew(Cvdfkv+}O#2?7O7@Gn+m9B|* z&Vx+tS7gcodyow|@qXX6uN|^ge_1Xw2l8PG#P@e_MmqJ}npTWS$BH?*jd*va<P@dV z;e4-7!RK%%`}72jWS`E!)~v;vo5s5%7ct(U+#}EKKG1%`;n7NGr53cBKvR3GKg>Ms zUpqYNT;cbSovX?4^+8@Rzigp>O6<`|_ey-rGu<Z4U+L`Dt>IJM#KY@2uS9DB=t(2- z>UtFJHfjcTGVsa^{tC9$X}htWYoAHq@kwx+U}ICy{^PdlZYpVhZEfk4<NCIBs?ye? z4y;q(e8ScNJJbo9&qA)xp-nFa&PY4{>^lce;CvSC7e35I;9aY{#~(P3^R~2qHydMg zE*I}a|6eSGz4{zHXopWV1Na#n`Vi^Z+jr8rxlCpJCLR%gZiS0JS`Y5$<DE2bI*555 z@yuAwN*4mRndeWQg8hFr3Vt6NOYr_O-VqPGme8^p?_~36p45qX70I9%GO6W)paYmU zNg>TamG|KR?kbu)VeH`A;g>_+H7KL2hQr<QAI=r7;m$buifFz-K8Qk^A81(P+H+l7 zU($)`FVXx8Fx{=KL|k<k&XhCGei&<cira>`T3)Qs3P%iS)j~q5_K4w$T|xrxZW|JD zcUzrPrC_e=hMt=+H^o_qTr(%=I<c>gy_nQoeEX&09nn^NDAk#Zc~LHSUJRc~>i+}} z_aSsl$jwH1(%CvrNX2)T4D~+~Z7GLRoYLJTl!yCo9$J&U1p3wX<bZaXdoPmgCf#X| zZ7D+B4e&w5fp1g7q4l49zc{wVia7FZt2mPtoQ1%lG4Tj&<u|zZaW`9tevtepYFV?8 z_XCorWY5yu%Q@If9(Gd$`xyW`8i@H^kh?2bJlRz<`Q#0yk7$i^<iGT?Z}fbaye6Ki zZHz=&-tp3$ZGW3sZ5co^h5Npup6wHoEwtCLpW$9yHDn3C|1B&z%7;CcebK?V%f`!V zX8~(xuMvAk$yh7HKamPsl8d`Bde|}(=QPlrnTcGz;Tn9~S23?5ndMOL5uP1GTIZ)U zH=6<53m$Y8Gmim&;f<k~mtnlV?u5O@n7yuSaGr+7X{@C)ke6Yc7L;)s`z-ka#%V9c zY4}Dxw4SE2FdvTcV&9&0sS9BW+CY2y13@RzUIf^UCk1yLGH@^NvN6*W!)-PQpr4Da zg)b_$<>FcRq~~)UdcSgu!4DbJa+cz(oadS*I`zh8=BwZfCVLkJHby7mt_aoPV!kVw zE6ILC`To&2$Wt(YrEQ^g5OjDI@W`I0;LaS;N^Q2F&6830<3y8EPS;}`e9?|CqX|YG zhNW0zq8{&7=9>?m-FB?ET-z?+7rQw;Us_wuYvmff^Yh%amckvK{F}pZCTpwcOGJIv z8e<x@We3XpC1?^i_rSj(cxMm%bAsQOVe0>P2)-=Cg@9WK#{7!PqrH-!0nRSBrU@KN z%`P{l&Ff^1XfOF2E+#7X2dmM(ZBjWyR#Cnrz^@P-ZIoaR@D_q6$T0bvHxZm?T$O$K z-&VChmgzBJZQ2gLWJg<98LI<I3+lyZ%Qc$~R@5n#3EFCqr};+LK7um=S5X;gyK#_s z344ss7J+xs=<9T@V6rfXMbSEed{VGW>9oEnFo@6ADmV)+%d{k+oTXGQ_IBiU4jxbK zq_HZy#+pWD6rv20pKOIsJCLV<>fYSL*98PCd?r3VPVnI#zUC9$+5^ua_>3{_XV7_) zTW{QUe5Z`~z#zLqs?RC<Y9ad*FsBw2nZL3baraI$b=(p$&gfEU-Q%@pdI-N3_r#Jg z|7bf5{YTjpo`Nli!n^UW_@*4$HpFqz-*JdLa{EL0;e`4egmhnK2lS16(=Ri}WC;&C zPkF!LmtK-|2ljyCha!&fXikYWfn~x3QPLwG@z3zge0qK+_88*y-(c->x#nfV04~~m zWGL>~C8d-eCYz85JwTf>uudTTs1IQ=S=gUTvBPHtADSC<da++$g!@~&(N}~^ctw1i zy{Li9PsCg+1?|MXK`O`b$4*DEEfeg_vkK)j<6f?}M%&0Z$CM1jU4_2FUlv1o&{ikm z{}K3J(3pbsB*eD?|Km>BOT-b)IjBDc@g~r71NjGFenIl~DR5xtTL>=}XY^>_;~Mni zG|~>COrjriS3Q+WyrKQC>wK)4Xs7mMKhI6N_Heif@n3!pyH|_#wU&#*dB`x_6U06O z#;R0PaGq&Oc%Bn^&f;;x&YC!!0eV+2tqri=)9YyL9M$4V&18)on8&6*C*J6o&wTA> zoPmQasXN0rwohfgYr$gUS6R`GM={T8&qF%;E|nXGz1x_wG|(o*z0%YHpH^)-?2aAw znCuVMHAk`#!go~%zgH~}n}c~oZ4}pdC0XO%9Okgh$M-9WaK1{w`6?kaAdKu6-Mc#X z4D*~j&pg+^VUlgzT^8*UOehO;>#M7okNo59i@;Z!x4<UDj@e1ZNv5xVBT9XIb+st9 zf$I4l^#8Xex-kfMf)nqs{Pso6H?mUvi4*sNUaU-TQTY*6{(Q_kfonPx*_dJ*aU&FG zvd`^gKKE;4+9~+lGDv?R+k{`6l;9F_$QBGP>)4r%vorPhP8$4A$S)v2S26Mion_*= zFelwBKf58yefmwT4<1JQHozwcU-3&}xVNbZaYiSJ>1AjW=3`%Ohi&mr6@BM5wN3Dq zcw`woIEB5oeoA+}Nn!=jLiWfFTI%jeaG5|$254cyuQYvE6Yf5tW&7X^z3;+f%y+&V zYXjV|OFgNXTk^<DmN}2?FEdx}#W|G1)+K>@oYxF7k37lGeIYg=@5N9)uOSfj?zQ03 zchR?vc+OWhHl3|$FyvOhXs}nmU>N<oM$586Z<d8tzJv3RPqvOmcpTr{X@osEx+^ka z^k5cs9OWOsv#|9G<UhJABEf_><7<J^n0mgtwrOj1o#AnmSAp_sVGnJ;;^)vD#Eb75 z30mfi;l%XwR_0qVkWC~x&rbfM;j$(r)mx79jydET6g}HC1MQ1&mxJ`~6np_;(5usL zVjtQi`oyA1X+{=pZ-*_!e6cadJ}C|RXDyIf`&7)gNtZ}QNIu$Xz;B#c{5kr-I3=hQ zcLHhe`O6l3Q>Y%_6w+3<xbDC6RI7GWKwc`|bJ4C`txlhgb2IVaR~-2DBFAE+F<7!0 za(~sM?A>KLSys?z&R@uFEDD5w1?`K&9dPQ$YOLq67xZN}t|C_g?52Qu##OX?Ajvw~ zY{0qRdH6PxRTFRD2_L~`v`ub*e9Q3;x&30%#I!3|mt|<8?K{v`S|jJPXy@*=@d@oH z12$eCi}S_AgZ+G*`9s*lGxxLnG_0rOvf^5Pg|ZyQ>1jULC8HU#hH|{%t-wV)X<dS` zjK;wV(mT>Qm6s(!EatK%elpP-!^PXzC1K2j?IoNb@QB{kJpO%f<pjP5%Y*-)2bUJz z!}7_OCS(T9)#ASMTj&QT`axIumTMm5Efry}J^=qG0e=+AKZkkDZs>H~2nHJ^IL+W? z1Ny;zZ-@)+cItCjdd@@mw(CO(=OUbo@DYTMAbbMh6D(c)v6y}Z^zSYUaqWhlv*%cP zbbQ3*m-u-5RD&vS@hxTGQ4Va_Eyz(V>L@A~T(?nwE&OV%j-_LLW<Nt?r6iy6El&Zz z12&FuDPPeD!6o6oAmi4+wy3!C{}FDZjJxhw4_~ihP4^)9j<MZBdQk^`>S&f_tsQIi zbm)`GD5f3783dB+oa8?kZfQ)ZSLpsL^a=NBozc*#c`OF!RO0P5DLr(ggANh8V`K?- znpYGRPfAOH4}tuR<WsDHT-4(HwtrueT_-(M^@`{z-qu4;8tBoE5z|cY1(Iy$B!6wV z0(xkFTc#)0nE-n7Sgi9VKM3+32YHXPA5LcZ5BkYy6lg1ej2c;tOq)GDO#p2^_yn<T zmh^l#^8YK^>bLgLHW9Sd{YXqB8Kp7sDCQH;>o5Ijivw+sgEs0b4m`imj`fCp0_c$E zUf$vfX*5qP2al@2qr>3QZa!MC>Im`1_!=uEo%k(yjc-b(ehS-}jk9*f3fzf@%(TF+ ze}^&dQ&WN~7xRW$rLsJCqQC5@e<}R6dtei`bD^DC2Uz~u$3)*};}TpA53xp^=X2VT zhrZRd@B_?&;9G7-J`?g;i&D}uY$<6vvM1O_v4Rd-Z{WM5chybeK|JhYFP$pH_k&e^ zDumuFhTbejXhUd2xD?@1=uxSd-mOEgvh=)x0(2<O{@Xo%va8r&(*Ib{pvu1sJS80= zUD;hGxNbqOib$_YS^5^zEAm|`dbJ6-s!kEEgtt=0ljf=l-t%|EtB~;)`RU%8yWv&J zct8Dl5AB=57qV0Fc!ZO|b8Q$~b1=4QE8Q3`3R`o64f=sNH%#MpJLpe=Ez!arnYbb2 zwXj2vARmo=bv3g5?Z*8>8vCL#HcWur(U@=x`n+0WupcJBwbTwnOFrmR$GKX_m~8K9 zY>T$<gshR?(V0WC2b5pZKZjh0J5}qFWPFI2205Du-T3l0>0K4sfkDo8%vmPDPOiq- zI+gq}Qk?@^CZo=R;`=4JCO@SW`gMkMA9oi>MyO7zC$+LqJ)^}m8|ooFzu8@n!LJ_J z8`|4Y`e?9JPr6hO`TH}Jda^YG^=ciuXZzFveRYR0=`N?Fr&3#DyX)}r33{?g>98Xi zup?8k<~8`)5hm4{Ce=x2`>1Wi$KAX^KL>og+n7adrtd@CElr)<l1vx$!Fj9?+}AeE zMS3q?Tj{53km;NX=oVx)rxGD#GN&40HFWJcKV91cUE9beZ-%ZVe?;;?^P{+yPrO}Q zw@CUF<GKO*<*^Fm+j}g%oN&9xDvbZY-Mugd;}g>NE9u=j64&y+f4WCbU-){DZhRNO zVu<Ht=k7M%)82IZPS~W(6lWsr(oxtyjL&8ccF7(JA5*Z{$i(QzQ=okX>LPikb7v&e zG{4jR6Fw5(35W9RPT(eaQIEih729Epvxjo|GzT)_{B%4X?D^TfSZmZIanij0I`p)2 zXo73WsLZsYL)KN=9L?PAoUts0bR6qe_&|NR&`&GoZJn5(p28gb3w)e{=B~3s;wR(V zUG%MW3(e<4mH3dTh{<HnJ5m!|X4u48=u<m<mm_day8+=y%)dKZV?1ZSj`5h$ziQen z^l^9kpOO9z($U}D>FD$B^fO5R7U^|<=`Z-DcOv~f(i{EKU-C=8jP&bBf7LJjHNW&* zNbf@W4!`tWe(9Q6&)MKukJ;^)zQ-?JkMwY)zvq{}-!DBH>2XN+_@)2GFFgV2Mx-C= zNzeTl`(xlA$xUZ+tj9Y%){_Cg6aT3n8nk@$IqY@5Lu2Xv2`=3Ga2^N$!;6=uZREmr zxDTN}j{KuJoVTAh;sE^Mk)w*1rsZ;>dTS#qO@<A4oAQoNaDDb;F@0oci23tEF@02M zsQLI}*zwRX^LHr!UErMmQG)9{#^?*SWoZ#Zj~F)L&cYWcvjk;c%qdA5hq(7}#{T5I zu?I@DEb=_!&ZF)zT)6oJ;zk!OOFJGIrpMWSJ>);q%4tiJaXyCjiO`lW%|*p&Z{vHZ zxND+U`~TRpsRweQFV-jIJ^t>s;;ZYYsP=T<x9~@7wN<oBesaNVDjggJe(8;n`&(oK zU>D*J!yiNX#-MM2e~mo5mqoise@Xv^xv(+V7s{O^`wnK<Y&T{I+`cO(;E%=nxXa9W zI-qYkv0_>We48DIwT=43YD@hHy(<rUOOdd<7h3c2y)IU2p26~+utDcgxBEW5t8RFL zYvMq$g8T@70}Z=aRO6NDY+?s|A>oMY!unOMgZvI5D0kiP5SN-a6>|>oAhP2O_EW~n z^kqll+Z~Z&ML?`rkph1x?!Woy&KUOYecz&9D~s-A(b!wGu+k9PXO;E}<IDnhlK~r% zHXeJ1iGOJFRxzK-m#bJ$kq`5>CKCJe5iK`0;qck;E!VM@zb@@}1YkcpsAVa5_jk<4 z{|fvw;N^AL3pyL9`cTeed?A~E0qfPvXyZl9Rn>OW7|fW^5~qpNH)4%PJlTykpcZ#K zx*o;95AohsgXz8Ph7NP4Clzwi0lu@uqfJ^az^ui;HISS9k%9g_ja;0&d4SW^+iq30 z9xbw^wR3E8JMOoAx@z?*x+7~IwdN-|p<JF0@48{1HqA;tiapbjsqh2T&yO@ai;?eB z$XosQ!S@|So>bt*VXf;$y<OnXTNmKhnj-#W(BNsUhq1@GEtyT+o`G-Z;d{D80*fS^ zbvSE~kp-GTf7;I#ekKIDReoLuZ;78b6@Fg53qK7cy9qPg|CpDtEfOEWw~OGb%17cM z@%TC)k2|R{ABlFlPm6D~+jn;0Y%H%a3&Xx{%1J&9f4)hFxsP5O2Hzt5r>XC4GUTir z5~by}W&u7T=L7Oypxst<pvcCe?3D?5#oGE2Z(x2T;7pVi=OcA&Z&dc7T7y>0CVc^& zZHGRjKp)zn5AA0#-e7M!5#wt+<a9pL*Wm1yko*_yeS{acVJvh%zUDv);<bp&K%4{f z+uewx?;g^aM{-+=_fE|7JF$O;@0(lF2w$Oj1ZcK_W*um*yIk3Nc9KkUgUxoJ4m3A_ zW~bIU;v>*(!oSN>1)BAs*><STkWF<c<>*mPkyH-un4z4vC#dBV9jNs$2j__ezjBJu zcKDcMIyE|TRV6DWIn*V8+63RSUN9Xqcx!46Igw~HWRt#=)-gsdm(GmI-w#>Px(@l< zM_^9C!PY{j$$vsNxqUU_2J2iM7@Kp**M)s=6Kv9_xGGKKZcgO?;qI>EqS_jMf$y22 zhQ<OBB}E3XTR{O8B}7H+ZV*MqPSV5{69dEo#W)t2*n!=33@k#$Zk+pDzZpE9bDsBk z-+Rw<?;m&k;CJ`hx%S#?ueG)^!5MjP&mK#=USR(gBF=Ec_3wo1zrBG$LO#-_E-kz= z^Kt##;@m8ft+9TMydZJ?SAD1sse*iSw7VU!2J2m@aC0?sMBCelXH}|m*7<QWt<7X+ zu7)^XE?9Rzth=G>pVwW9cY$f+JTgnJ4{@yK+{8JCGIa)cwiVlqGMxo3x-+|CU!$y0 zg#-g#l&3NAT6h{|p_GoNdCc+NAS8WUXr?pvLj@e)>(EepTmo@iX5qLP$x;6u=j2Og z%{pYD3{yIeO9qbb7UgWW<5-5j{W<G3IKIX>zO#<ZvNphSUMh?O4rBYob#Cl<ZUwG& zBY)L->w>sh;vVE`gzZC`a?xOHpOK?x*@L^JXZqpYwJWwSeVohB?aR3I_igK@JF9CN z!ujidL>UDf|8qS4A{?<F#r_cc@vQBi_oFB`xC#3)pYe<`eCT;iI7;k875AaCz(#jQ zSA6^7=RT}}eb^XrP!!@HvEOAVD-f!qiGy<gRUB0Rk2t*~4*GX-`Uk}6pP#Ciie*1T zeEna?Mb^K>MZd)9^)+$2h>w1a*ME(V98dnM_^85v86O#0YWCY-<0Bnx?_cAiFdeCG zV;mQ;{@zgOc$eoIo=XtFOw6o<VgKsd55={AuCykc*@*Z4bnPP^`|GtY@(BLzwU4}~ zl55}4{O`xT6z2cmId=+7{=SS&;~M`wcjoN>`?*sA=T0{ryyp_n14^U|kaofQ$9B6a zqYYZ5EtE)Gh&ZN|y)sEWo5+!N$&*_ciSrTfwZcVu$o-HS^)pZ}K%1WUHQgefxl4xU z_2M%}!;<(}h3gm3#-&kKocEOgqycSfNj0}1?#H<iEXpm2c=HS5s?!)2i1S6%%M@{_ zada}?mm3>(MLa6X;2Vm5#J#rFG;#O@T;pOsC9W<1C{6rYsH53GVTfNvyQPhAZRKNI zMA`x06bR3#pn3jk`o`c*E76VZE<hO)QQim7N()s_CtUS^YRLGt+4#`UnrA3wLVk6x zFLjj$32JA=FStkjdXKMwG*ij_y(F#l9%&^}9;6Dcp~pxEy~g|TlC;pTX&*_dkS_M` zuh)nl@)KM{+Q(HI;fA!20n$F=SSV#m921fD!8b%K5XT}7BjVCf9nnq`${QoSBcAt^ zNaq+J?SgV40Y*+aD{#*&H3MnxJmjZ`$_!>1SokHB%!6|`UF@5|*yrw;r>ccc`)Xx% z+gC5I*FK}7AL_#!<Ifa-W=6eaCgGb=<`E6WT}Jyr0lj3U3;Q4)`4ad1Ex6~u#65qc zp>cw{0%e%w#^JqjUCu##C*JL3?3iu673V<)&VxBJlK{M@u~<`6sySPG9uz6e0@OGU zHle>Q*4I>S8er;pVTC!4IqJ?E-BDe%7VncyMZf(;>orxS5oU<zzaE)uZGz(;gyWxq zu!`Qxc<f$w$;ix@Y?`zW$N#m$I9-%88-j9PCXVN<GZ?3u6tvb~(X}bsJr0x2wk}l6 zu@?254Y42HFrBeuj`eI#XIv17>3Yd3M2a#S1&Z0$=|^od56d;%UWjcUjBPLEwi_n6 za@!5L?EzSyUfA~V9kZ;5VB5p7?E!f9or7)f^~<)uRG9D{CAK{X+b-%Vi+h#W*4fzi zD{#LO+b*sLd|%7D7q;C5+rIC}Y-@4<3dFXHXD5@Fnr+{V^3~xe`!j*tZpdx_ueZzk zkL^M^Ap==<Lsx9Sk>gqGaBe>?9c;g?Ocq&RHVfxaf_Sf#CE^Jel)-EI$l#3&)>~X- zyTyA?#4RP)+LmXUHtEGRWLu2stkognS;i3YO(CwkFqG%B!!;$w<+qFuR+XJ8+DOh3 z<!zDvTqwi)RA;4>SdzXy@>y*uu9fF#OYKj2MR@lAnJ<g?4}N(5SK{4*-vWsD27Y+n zS1v|g5uWiy9+k+K<ok^yc$aem^)iqj&Ffd2?^5oGdTB|X%NDfVUy_eh2g5%jO(ybZ zldv3vkrn=U@3Bg}pRf%7Bj43B-38N&ce`SG13XXiokxmhx<B$=Ez>LgtLfHjri;aW zUF5a#T@#)ge$8VOd2#VrKk=Mwgy-QQLnkhrfq3jCo(nSID@(60Xa^(V74pE(pkFmp zVjHPjWrhjaM`Ap(kHmUZ6WuXQGyG#jp1NV7J@Uk(WX6TwzUq)3Keyc~{ljBTUUNRe z3`Kcvu}$0_?AOD{mlnq*4sn5jk(E&*o;OOK!=Gb5k^e8=MZKJkdh(cG<WDvDTC!iQ z((h}RE%LC%a+!~fyuCHr<sL&kvI*CP$iFI6#h^mTvM*u2lI4nJ27f78re*pWj1&7_ z?DwDRnkLrOlItqkO#ZoFv3_E|Zbo{z<XC56ezC44`S2zA*wR6%VHB2;i*vqYetYbv zJVVQ0w%am24fFr2?Y{nVyDig`F^vdUyu0g$uxE%m1jt{r$M(*|JMes@9ZKG%8ns5c zxvqCZl#LC46p#IZ_p63}UJXrZdN<r8GxTp2Z&iOOmX+7o|BIc8Jg6W}xxfqW&b?Cb zw;q3K@tzoN`Y^$;IKQ^*`270#YwSAy9j?dcrM<qS`AYSBqfCN?G6`q=4eE<`KbuU; zCK%v*P<eP}{ebC2*<5jbE72x+UP809yp5&OWGGu8%Jqsi_C&t0c=xkg?zBMkH&iGS ze9$hwz2t<l55XuafON%D<VhrnG=kFtQ68-1{wkK6w+3Z@(N3Y%R0_$}H%|)<MtTJ2 zvOz^<g7q7e!N746c_=O;jFJW;ud<b=cY^|yEfD!GB7bD8t8tRpe=#^VdB{@{<q-_V zkNhn1epQ%foHO1-RQGNmL%zouw4aRfW5_Q<+r1bsL)-UF(9L0p&qX<rrpOCJTg)MT zoDO+131za>%?wcvq)b-+Dg5P>$uh#UFYunpU3c=%*?2w?W$I=lUR)z{dV@0dA#SLb zBc>5~HAC^9q&41?w4R)S@&kRYX6Txr41!6(w!uR(@y#^X48(gE!iQ#V4;`9mf%fip zgjN-KbM3Ob=p}i{Qj*NZ)yQmWjXDL$A3Kb37qH9=;Z-xA;M~bGh%SZa$qEHn7gybi zwb3?5`$FuO@M^|Mz5QGh?6C~F%*o=pKI$tfyc&x1+YHI7UJUY|Mfu4k3Y6)=HH7p- zLq2zoD3cV1{Uyp*xXMtM7W>sp=`}&ru@~hntne)P2>aL`ai*AGe81=hmVsyXEBTA? z+-e{EMa1)A&Uk)Bo=*<S_zsbwPB+rjXotrrP}d+c+z)lT!%!~=`^(l|#<rYG(xahh zuTjGHA4<Xy%RhwW<M>?3!}1NV{9OIEX@>ZwN+I&2&dHStbFlm%Jok&Xe}-cDv$6cZ zFjb~X+^4k57u#JG$LKxQJrQMlN|rCSVXof4UjJEgtS6R@G?I}k>JiQIN89IUH_rfV z5GJB*kS&h&BjlO>SL;3w%l)V8T~d~(<X$Ms^!TA%vj22%#1qN@Kh(wXo9=_}%A$Ri z=`sv&rX4QF@aEd#3Jh<d9j=4nzS`ls7~WDlTo1!rX@~1Wv@g^W<yNN~i1ywW^ja*v z5oOTQCxm4pZ|Cx0)YDKQJtN9%&BVE6i0ddorVLP_tV|fn%7o#apbF(i3^A?~hUeoP zQ{fzIiu1`Ec`|BKe2)@o%0lE{e7+i-)(yvJC8ibWeNoPRWdQ1jAnlguAVXPq%R&j? z()!bWR@x+#9K%X~+0TY}zh8*+=6`x_Bz@Pf=Vw$Q!8HcQJI0&)z%>SCr(=Aw#B+*U zj10q@X@|=(yt#I`0>fKqhwEUtuXeaDhPTuX*Te8u+Tmiq;=8>u23e<Y?TUSX{6y}9 z??u6Bov{xRu@A&{ifbs;!4TgqE0f@WvP31@`VDPo|9VatqP%}0@>Kt)+nTA6u&q}A zPq$UniL%8pe2DWW(I06=oC`{v3#{wti2A}}Urdoki2JU%PDPsHU!C{jx-Wc;aw_M< zGb!r8;9W%Fh?Q52PVIObZgc8w&WP{Y?@cwoT8Ok~xL^H*7eVzCMEq>R{b`b9U?E#D zXK8e>NLS-LM%iK6f(*nHc>fUo@Qga-HQKnckQpabKiVxb0?)%2JyG8BXobw`^6r@z z529OclUdyd-JY_nratJ76~oaTi|(UhxE#}?Tiyf1(Jilt>Cx?}!1NU}?P7am4nx}P zp{Vx|i~gfMG9QZi4@c20?}=^^Mx{(UA9Uj!Z0dvVSTS6Lf$pPXIJ%FbTiy%9MHsf2 z9^EnM_Ca^77>@8_(S1}5M>n2b>=2(ll<8o4DXYe3{d$)UdSzWc=$-Xifp<69wo3<n zvfe20&Ia4_M%Fe{GhCh(5jGUv76GrZ&aY*nJt)(Fh_I@euVg-)_chk-wX7M3zry;w zk~P;3S7?XnWUa?B7U?3^+rv9|1GM!j%1(;<7fR7x1@AaT+Q3oVi=dkh>i%lGZ806v zAYyoaD(VEIKFDFD7k+)uD$-N-dwzu6Lz#+M4v7Czw{bSg_(mbVNkLfxk$)`SlZiSY zYTUnH8KG_DeuiIOnpxEo!^L<pP7D|42HwS7xu7&l5N)}yL3*Gs-l3cLg*OoSvsDrI z72$hyukl^EH^|4AVZWxJ%&j@@323kOO$^cwqQ1#PeA}=H;#}qXxdg0NxXiLv0@h2^ z;luf7A=<7M@4kF?;oX;CSc7w2!^TD7*)h7j&jguBlOtbqEz+!5zbiv!#yNqwher6j zCtSpR>5|MZ%K~lq)tutBNVJ15+NQjW^9SwJqrEe)MMY?bSk%e6i0>-RMp!66^Tr<c zt6Z!Tmxp*9&-QLUNLOSO_r7XUtlmAO?39JbJH_|&4AY1CSHpRl?fJ<2sHa1Ga!@lb zc|^bLO{PBLFW$+lZ@g2RT$C4<;!`4IUQ&cThD+iP<Lof*p?9q31=K^s_4P)4^GSR& zrZ?)uT|oGz+I=qe{Y&jWH^(++D9y3Y&5YJypNO=!nV)!1C|Oj;K7WmU{RaE}A@W%4 zwfnp#_PM0<$37R|2o(D~!Cb22jyA`{`_L#)lvBbp3c|Y50{eYUvB8K|NNbDtZ6^48 zjpJm3;V9dLV=hDZXyYGYjzGGt9nx)YChx$$?Q^xJo@o2u0^fyKj*#P+Sm2$eInrzG zexS}G-s|Kd?8m5I(p>V&T8Hz&$6Q*_PrGgfSf@+fsw2H;p8g!&MF?{!rV-&6;XQvF z1I_y4yM?Z5tgnk^{jSu<dTky$X<;<d_IUT2UZjt5W_WHZ!gJdNZ|qk-x0w`*vcTf{ z5^<<V+yA?GRHXY$@}xw4y9}98PL7^Y!jQ_+IB|{~!7@cY=|ye0-0uk2F1Be#%~)xH zxsN7XwaoPYINWU93()3l&P6@5gck@G$C%+p$xOn<`7X{6ar|)qbwxgjt9UOg&Vyk% zCT(y`E>7NtbGy&gB3(1KU5o2-!C{<VV!0Q)MPx?F%nD<1uAiIWHtsF<_h94R^~Jsx z@5x0PBcq{hsq+{&6w4HOjp7<Sx>Oy4Z<D$jhlMvd-*xD?s%rguTO%#;9^EM6LKp9b z56Vk#T49+(aJ-Acl$!je@mn)RnO~7_^{UI(%rz#O?*fVVL%gpN&gXSz?iPzQwE2(T zSKI1IyXWCLOExhGI)XpVd2N{9+rMUlT*~%rw$9GXXPsRenTJ)75B?O=z|~G@qqzkX zZ9xyjFnfF-pszG&wHP;u!}XK;p+DBfD##JzMVrn}819Jv7|i2@am~@)2lMsA_340d zKKM343k<J};mvTpDx_%7wHOzRZn;;iC$23E#A$E5QCCGRGcNo!4eIq#9Wo!suMMu% z5&qQ^?9h(1Y?2AuZ|;889`_e%k}29ZMBA%!WtO;>aGmh`ZR>C>#IY5}VKeq^_+qc| z;mCg#$K(Qz$%P5-<L2_1piBaei9>=q<b}f2)g)|4g9}|F##O^HDUys6ie$|i&O_Td z88{Z2V`R)@bP>-@MJW3{A881SE}COByoGs^8P@R);<VR@KSWr4Ce+OAV`!0JCn>W; z8{=aAyii}Xch?b_xCgpcLwqAcTULnQvb@<Yb@!_gKlJhK9a*|KpA3*TF1i1>XzN*& zlt-|Oi}%Pwy`22JK`K#J!=;;)^)3o+$szwBf8>vleAI(b$;yS}J#~mH$|WN|HM}&+ zhr6I21fGM#MIE@3dKV>iH74k2>T2ZSJ$p%6H&IVRRU6kO$`onpby%`q#}G^_mSuot zyI`8Uq9E2a_H#Duj5PQcQ4i`7t})Rb8|uX^K)pEBIrc?exfZB1*Bo`{nxPJz59%Cy zr{z1I8Y0?`I*q)jli2P&cuZ?H6nXhap^J8Z97K0bgx@p}>3gJY4O-bJDD7nUMxo-m zmrB-M=&jX9Ycs9QwYJdetF<Mp(ZVak+%P%F+{ZkkwqI06h)=1A#YdA(J049jy)n(n zY|k{OHf8rEN9^?}8}aGrTGQP}Q%!ec_y-K%J8e%;S<JT^)0<;@a}3{(;fa_o7}Eu# ze<AwYPTL+-5=Q+aO*3j}!yDmKI-=Imb*7_^t~X7@v>}+b6vFC&b=ZA$1D3Io%lHk$ zgQx8ZswG?PQ3~M&V;*zNBf@KoaWye*q;}d`e+jRKZnUQgX;E=(QgM%DdtJxGcYbtn zEKqO0mp+b-0gjOp^%)J*a@(L?hNx-52I|yEr3>n5qW-OD>o_!cRj|va)W}xo7wvx< zIIRfY^ju8i&1pm%vo2MWf@fUPOrwK-rHfBk_=4HN0kcyh{qaqW78q6_iw#cil^SVO zqgj~v?nWmJ8+<uFc(8kF<Sg`eNB?)!|DJViS#ZJIwV19sr}Gul70wAhyK^n4YlZ$# zsZyGu%bH;SVPd)#oUWyq?*4*cS7*(1?a^P5oEUue7TWb5=gVnAFf6^n?BIgh7-rCt z!@7uJow07eCrA3@o7-K{KWo#B;Pk1<kw#K0PSZ^cn>Q;s-90(d5Yq&qKL_ztZ-s@C zk3wNoSD|CH1nq2(m0KEpmTZg;$jhO9>~aAeQTHkrZR8rG&0R^d3a~_b!g=H81RMO8 z8tIDt8HVer5N$+^bzL2Nb9zeT=_t#j`zUWcM^P@|Wo;>I4xX7`x=C5*Q6}Lf+L}J2 zz<ZneXfp}RY=U&&B$?c359aTHc8l9$okV-B>3GKxD>F38bwqg{<lS_Z83&vzJ2Uv) z(1U27+dU}&(~O-vH+ZSpfynD<6FnViyc^@D2H!|I6uCI6UQ!zR^BtuxHmUQ2J!T$= zlqPv386e*6jd-W5WEddf*;@(4d+B^feN~>!G+^eK6~W5yscdgvC9e=ruqi3n@b^@< zFF#na4ls3|7i^j=&V_18bJ6B)^_+RZ7kyLNF1(T4B;fqHMZqT5)}kHxs!17AnE<mj zOM}}4tVNsQ)srqpc_h8ZI*WJPqOE#S4_Vaz7VU<Mv`Z1{w9UU68+>WIXk)qt)2FYI zo;R242h_YbJ=j7i+K#Wu_LJWrU3git2zcCeO|WB^WVFfd$TaRTq{&5_#;tKo3-JD` zGWMYgX<jp=+gy+by<Mg->W?;c2T5iDJ7s1864J;QG2LsK0iNv)*{-+0%+#pM>D9pv zkETYxtm2imb#lX`V`6<LyC)gD&kJ@BIvn}ZO$>KWx{KkWE&9Di3xk&y9f*9{*jKd; z{UUAcj5gHKrUjmttODwxjE#jt5nw*WBdNh;kEA;|-c_-Gb5TA@w71_*EC+wbaC{7L z-1N`}_3$YTldRDFVv>8(e2kktseV#C+$o{l8_tKZGTne2Nr7{+v{5*Y=~SGPmF2nt zo6vUhRLL@6J<ikTDD(3i?VYD#7|PD0+c01N+J)|=K>4$cE3C&)mX#Lo;u6-+#=9L^ z>2b31r~@O7*t}se`=?;tZ86?pJ<2U%yp60<zypjwy<rLaE1*5)rWo(CekS{^WfcO} zVEl{?iR>3`ul2%szxA_FZb4Ss9qV}*{b}pxu-_Huv>J5<^4Cpge-#{y{Kj5*FN?N4 zuuL(J3hP_NNm3ogbcK#ySvk5!0U7J2;+>tW^d4+e6s8SdpTPAUEkhgjAu<)F`|`4> zSJq~n+a@}t12V9$M7YTa7vBRbT}CSVr};*r{A-;+xvH?bcn&ke{*)VCK=F?YIA4%= z$a%M7-U|rxB+k=c!|W~73viYcszSLA<}=5i$)CoLKzqfn@QhrufsU#W?bYX^y=ylE zUDazv>3||dnSdG|da9R-vH?#KS5z&duX=*G;;}+M;K@9Fm6Ndn`VG-<9N=WER286( zWL_ID(au?bYp9{>8`}E+uCNJcJlsh232o+oMp?P~y^U2r6y*b&j5AR+=x(a|f^><; zJpIhZd1flt+2$&z*|<NLXuh}XRT1ryAzd1yLLTlUwEq#37<}3%Ir8)*m!zinF10An z(+X{u=b`O#V+<2*c&lnCRK|((g16L9!8Z-u`Q3^0p$mhnE)ngWS7n<HDr~C~ZJ;aB z26{NYIU&yRYH6#3=YC6xY=gG)#r5Ilp{v^5G%h#+-?vDZ<i=?tFiyk?ZVi+wqf)Da zbKa#Ou5n|V1)G=52@c3hi42I+OzY}ys0xcxG5qva(}G=3rbNz)a^<ut7b8`^v>^D* zwv@>HDVk{vqpE7h8LQGhObgEMg7+Gj-+%DR;KAclBF|!8FWI2gb``CH_?%itDpp2m zw$HU_S+HU0l*oc9CCfKe&1^d>IP67o<V@{4ghsiry)TuWnW~k|lHk1M$&szJ!(5`# zu9R1+?;?%!=&{sY%1+Td3ws%ScbOfXb*3fiOOzAerqHw*=7MAN9BEOzc%KY8o}a~h zk8`E&KG~_JqWc)SC3K7R^g^24u1vJ2otKQ$IdI%sPA5mVefC;YdrT+8boN%5F232% zWj1^C$1)w!EtYv2>(UDAl858%kMrRy&Ij>*k&<}Z1=nIL_XWYHBXFKf(QLCHwl^Q! zo2K2@E>1F4$$2wFJ59;{3i~;YT;+oOYJmMJ&Ns1qCC;lfoL9<8nq%hTq)=_bvC6}- zaw!Q5$14oS>kQ5-aUXGU(ovnp`R9W3FLbhIIVH#5@8@!KRhw{*xZoTy&@QLs{LKHk z96i-0oMWwUj&0H|M~QRr49>x{pUcr#x!^pWf%7<jTT7J+(}{IR$9X&p=W#gplQ`E^ z?gpxvlQiFC3Ds_!%1){JdAw}?I9_Y7i~X)SUa{!@)A6#4_8fro;MZd!_S3J&MY9k7 z|2ifGI3^-};NtT4V`7M7au&xV9s5@^%^%04U}sB}KaPnQ{xfbt{2`8sD~?HC$+6d7 zvo21?D!b^D9wLuQTvtA)H2Yt4JD^(}7sdtR8jGIh(KJd*YicCn+ob+TZ~GzL-3saN zmPm*D;+d!g+I!c2x9yk$?ZFsgoDrrm#<V6#o13N?;F(`6`|LhtXMa3zrG+kBcqZ)7 z+XB>uHcVT+aInsyx41_v2=5~;cyVCb!WYhm-c~I;Z=s3D;kQAEhhHHcHp4Zt4cCY{ z;#c$A_#RD2;=-B-55IN5c^QlIvKg+~W4LCYESk5l`RPM%bx}uuS9h<ljaJ@ad&>BP zy_;g3G#crOt5ZypM#5!NOp}&RF-x*j3|cMOS_OTcWS;b8l0{OAsg9`whRHGP7M|a4 zBi}&m3r7r7U|4^Q7kPclrYJGLaZ+Ur*Try=hma|jf#o}6Sk@$E(s~TDi%&NFgs`4f zvI;ta{!hpUs2soE^qG9n>Q7j<7=9ANrTDd`YvVVVmMrh)Bn84vHNAypDzLoAm`;S@ zgJCxj?u{wtNyo4ZF<gpYXSxpKO2+TOH=*{5{00nvf@zLpnt0B;&a}Bfvgs0hi}D8c zL4C=&(nqBAKTR@A>K#+*`zH*$foFi5Soe}{DKoj+SWG8|@5Qr2$?(2PsrVD_-D7$* zQ6)|>OcLMf*(EPy^c?d(M|y6$T;J#<)<Z&g{Duj>_jM9!w)NP@;@dvG7c?CzzWF$y ztW0Hq;~sv5?><L(qwR6={aQQZy*yH6dpc<2_taf~#M$xaw$EP2_}yE?@6j<HkK&Ga zluWC;LrlA#_kw{t#k3oKPMd3%?b#Cfw$Bmg`(PR3Smt6G-tj3x_QnV^?l_kt=Ks@t z6*Tib{$;+tCG$n&o4;|V{^fkU_e4+k;5Om=2ak-rip8~%yY-Ja&%O-4i-2LW%~JQr zmR`kA9KDMB;a(|@XFRS&aqQx7+#T(t;>Xo7zVRR9V=-QAgE%i7+@<2&mR`l)nAaY| z>>EhMcFm<?q@9@Gab~shXMTrh!?t*05U$bIxK;yk%?99l_Q$oXU|T|Xf1fDUsm3a! z&XU~rhUhl`rTg{DKZalWrF;7?-SdCx9{x*r+h4kC{L*dyOZV%fUzYz%_x4}9=l{|@ z{Fm;wzjW8ocGpbOlofy7@^G5imhDTF+%DAbv-*NO8VNtq{Sn<}+U|GguA=Q0-+DkE zFsFHmZf|Y3$j5G@?H2jiD4Wb_L|KF|ZTBN|kJfhIM|X_2`!2fYX}fQsdzH3Zw1<Ya zFS(p6=+4x3Uqm;`cXRkTbYInWpFwvnx?8tx(bCR)bpNnncFhO$8`gh7q+N|_HS1QZ zY3I^+z^FbdsoAjM<0Hccg^sdwX{NHPRij3Ys`#&tU55xv+c#{KUC4lbp%KG|3>y?S zV5Ga9UqruZ(!UvJ=Mfe$aG2L<?cCM+4IA1-3TocMr$b9S-?puL)vM#<7h;DMlXRoa zq79`A(Us81g++Aj=z5Ze)G*pbsv2D-+Cl0UJy04Vg+-5(CP$Brj>PtLi0&2LRSJj> zlA252(Z`}sO6R0A(YK`Eqi^Dq*srAz(dy{0QepHfTvm^wlcn|1+oIE@{n3Y{UDA%| zMbS&7mD2L)8Pc5S>Cv%LT+B4tY}w41WwKQ<OJf$ww##<M9FEy1+Z?l1woaB3^HBCQ zrYNRB_ATaz?7i$w%+;71vU{@IF{fqcV@|~!m3hfp#I%X=mvxKjDGQOciy0X+Mm9+{ zJ|<K)G-gmtUzuZ!v&>zlifJJ8jHw?}OJ*)B8)F+|Ei;NSmFdW2F^V`ng|R{zXQikZ zXBk&YQA1HTu4!B&g<D)Tg_FWQuD4=9+_1R8iivSk6r&U);@Zb`RCHH#iEE{39oI6> zN0F^K5qB}}tm1CmeZ@7!<+yio9~IvfU*hr<FXNua<tkF+HYm0z(&91|2jlj}{ic|& zSRA(|ZiONtZmuF;5fc|JpBg(ab{0MYy;`0qUl6-9c8~mkJS%pSJR^2v>{|Kb*k|$= z^8DD(^5WP}v2W#<<kw>##NLtT#9ojemmi637V9eyl>5bYmiLJ56dNobE*~8m6+1y5 z9vdO=FYgm;C$Ah^J=Rs;IJSwrj=W}U>DY2|8+rLy1G!18ek|S$4J-Lc!~W?0V;H)m zzYiDVdxs7$nQU0?pIxG(Hhcd(jKhDK?k{8i()-8aYD*(ZeyCnv()m*k!DIM;_w)VJ z1itM3^Dr@iFaDMM{^;TmU#V8fPpb7t_aDR1CH;N47~imU$CAlvx&G`D9j@&C^Dqwo zWxBtN{Y&p3i*ps%^1t{s^7LvZh5Y$v`{&*ehsu8*;Nn)TW}W(&^OxmK)^>l@I##CX zc&~K?O4o?rE3M(k`4_)Dtpjk^5<gV@;IEgi#(P@3;7zvpp~0~~{j}jm@7D~?zM~zh zU61Gn+VHjO6TSO?bG=H|r(``!0@sG?wNf+S|9bd;3HSdryy#lm{jWV9(cAu;<Dw1M z%T~LcC}1dl**!E$|DpZx*Y#?Sn<%$YyZpy$wHkG*q`E)U>JND7^`KC#-inV}%p0m! zSE`JRvW1c)`jH-!#P}Q>W-)z5?P~s$`4O}l=>WAjwZ0Uq)t9jRkw`qWM9QP{K(+d{ zlT2!mAW8S}ag<%9B*_eww$QkUgt~;1HU9n+^Z$;8+{d!^Bm889ugq7gH(^^{da2c+ z2wxp1Nw=`EsHZ2{A^dI#|173Q-5!SjPv^gb@E>7W6A}IZgrAB8(`AGu@2pl&bCgLr zlO$;+&XEU5fK@^G&In(mcgkwR|EKfcMEH-ftcD1`62foxOsz&c#!_Khwc5`?CMA!S zBzJpB8joR>5&nBjdkB9h&&%!qr}JM$_)oB`58u`597I9+NF<KMo0aE&YV|HVnG_Qt zNi!TI$<hS1VG#ZaOuH9<*hLKgpU#i;Bg5a0@P{D$<v5|mdH&T$tv*#rCPfaCq@9kE zbO7t5MEJ`Q?soi{Ys3F1^W&0J=V<qT7{XU0N^XyWH;oWgSMgA*<7{NonBJ0<;Ur0e z3?=C`)(fcu33Uo391iI}F+bkdsvlxm_6UC(!nei+>5Kl6b=B(p@-k^b7fBjd8N*S* z>oUS`g>fnP!{K1~|8#zoBT@g3W!?IwR!a!K=z&^ojdjVz%k}T&WYP(gxGLw2+Y`bT zFXgc-q!swX;b8dxbp8Vf|0b3-58;PnzhB40$evGX^%xhm`cP?^R4!1GrX&27I5(mY zzKGQq;SYy{;s2BQamlIo;!nh9z6k#;ZrSG%q1fOdtDb{eUEN$JO>ZGd7ZE<{CrLpF zU&ObF5+xiC=|3_54lM7qSk_nUcZ7fEo?0F7O09OZK>;6QnN*=Ek`@TRCH75ugpV?* z>Ud0#OM&74lli}6S*TZ`K8R)QLijzfbBpl+=!-bmr<__{)j%d)LjjrR2)`QE?E#KK z2Bx2k>9H!(e`0==IaKe!vW6i1g@{`lAbeBAK}*eX{1y1%6H=E45I)MQNNW-P5=@UM z@n`t|WPTiS^&0%8VtLL8KMT&gqgJoOIp}1hRvW4%>9D&bMId}cg;HOHAA{*d9Dq*g zKQaF@EDyJM=@B0IMO-RF_{!UA^-Eo~x-`;ypAfbh*MC(^V~ao|Fij}BaXK>me=@(M zEG153yY)W?l>fTc1$SM^yuJE2<H_yNya!IPw5Tq6hg=LrP&(HSyDNH?nJO+nc|orw zvKq5|uty}>hw3?!RSOX#MN8k74v=QAZHsO%sW_*W<lD{#-FA|CKzS)uvv>)Mm$ZwQ zqLKDhX%;VKyDKE^;-%h8WRiCAQjHu*(k@<FHURf$&ElnVI4`t|mj)tzq~hA+USW(( zdak`BiKMl5@lsWsznZnjIfONDCe|K5ZjhwV{*$4Yq8xt;{E2_M=#uMp=+Hsj?hVkV zzhe1vgeDo_{8ub=@+*aI9i^mWXme_WjTnw(f{q1#=$0edple_sFK$&bT*i9lI^O7x zmZEU_#(3GG+e^YJW?+sV_mfOg%5@CTZ7!)5h~i{A=r)kl`jU~CBuBT7q&Aa`%_SMS z<r2OxX`&M?ZiPrEHI+<dUg(a-`4WYa_;%>_Lbn=<e|C~2wnMD5SU<5|VtvGVh#$j6 zcp@CJe6d_E56eOFPtw=d*VFzKzx*&p^Q#2@yJ<w6rK>CFPdnS+z~TEjjhOIn6JUS{ zO9wyAlH{_#|1g2rMZf%Ha)plWAA{Jdr*D83GmTA5B^gHk>@$=8G}c^_|2k5;jHp!= zOk?~rP0DWCZ+0=GrdhQ!BR`i<KK`kCZn@$YgT8+~J@31j<+_(<S3j%G0+*=G#@Fer zKDlPnkHA~6)mb-BsQb<wqgcDPoIHJ;t)9?#(GKI}Ne7jAbx)hNs8!Q+e%@-c-9voL zf*<D?Wz@fDs6S(hiI^rnxSzh5M@&2Z)G`AxZ<F-jq}=Tnb;L5oa4}uUvi&~XGZV`c zf1+FLHys@uNdrS;^HSw(99*i^tCy`As`+1Ylno6Hjg5^>O-*rblqplj+S=O3$ERch z%@Q!-zn#iJ1X0Gy#=*5#y};Ff3BmwlOM)m>s#Ljh<tkOG)Sy9wKL_#OO{EE;l5@2N z%|ixS|2+t7!q4@0aBy&Sb;Xds1@SMZ((DEVV2a&jZRcFAUK8Iyr=LNHJ^1HMu(GnU zv$Jz|cgNy1GyhMfVF1`k2%wHf^G5Z44dCbeI1JcFI0gs++koz$0sNb3eqGex*A=_l z#l_{<Mg5y;uu1rdgK6hdqk&goS6+IULGu&ic$#1z*x1-OIXP)BO}QK^jj>o2O!@C8 z)6><}RpO^7{&e*fN+ot9{)`ZtmqI*ihCjqG5|$$Anc+_lIhdGK&sd2=p(~jgD<wVN z&=4KUC51vlydak;@MSx>T%kaRLZKtq!F}N8PedGIoI)<?M#U*>w`ps1zRf6+v^F>V zp;vm~>g00E*W`&u-Cuv=P9x#Ih^JDd7uUCU65?KoJGCT@?(2&bgCs@H9w~0wQq1=q z)r9!f5&zw^+e#B}^sOuUmu#(APx!v&eLA7dy85Djz@hpcLZ{PfD8lm;{U1(_p+>Wx z(mwq<HW9<CH9A9^s6BD3L7HjpE~=YQuDR&PdeXs33+T52mnb&1g&5zie_L91?gF}h z+*SI{ww$jRkL{yU;wl>0C6`*9tI|@8|DHFLKHjp69xn5p-ZXUx6yvd9=yOFl&3iMC zHg(%gv$x)%eiNnEV)~QwoT+PJAjSTq>mygtt1FMtQil07Hp@In%-1Tt0bOvnH=Q3i zlj1ngl!807UOAmMV)}$BRcVn!Cz>gbp-n1orVmG4r<gQEOdr#)EOmYCN_R~0q8ICS zq)iNl(ET4`sN%;`isMc{_Bc+RcHhzH{DvObuHQi{e@93qnqyIyUVDzBi1^`rp|^e? zPlpuGr#5vr(aiY6)bzy-S~U0-b(86J6!YUeqw<k;X|tf#w5rzt&G=T6Y5PHosprZJ z>h}Bu#ra7`9{Nb5{mnXw<$fxxLVsK9Mdw6xq5a!L(lRX)D9&p-I^rPBO}Rl+@{8!1 zwL0C!^3Ha(pvP@0(T#bo6xRcNwW>L-J-r=up3swKjR~jsCXJ(Uv!~KE>lad7M^yfP z3$3QwM^_9wMH_9qMv+lVA9g9C7Y=-<xc+*G^;@^fl8&rUncA(bMU!iK(dTDc)BM5R z=*lu-6xXe0cuYJU+F~IcW06e1KFy#-NB2|zO=qZV$xVvuo%WdZj=q{N>nYY}=NdD* zeosZ3dEJdZ`QDJ)y0@Z;Cus88{`6XYBz@N)hJKhgk6wPYibi$VLO&kcM-jhJ+svCZ z+w&P!=DerxdMSE|^%?!$f=*AiqYi=9DdHu1H7k(bo!E^Awirz9%8jROUrndi&M%?s zcde(0&uFP-$7pim720drBibtUH4WLVrcDRw_ZREa^OGq>JV<LeRHDBhs7&>{Rizo< z>(DbP9<-}}bK2u$07d*s(>iyfFHQT=C8r0|wNoRhvF`+WRT)d)Uz$k~@6x(q%W2z2 zDRiG{8jX0ioenvYNw=-ZrgdXZQ^eO)-TD@7((obOQzeh~EB~4{H~maI=t%>__Aizh zP{i{zQD#Nk=-JV#rY^Kv`5H8+N&`BpffvmUY(;T@px38#rV%T9Q_F*)^y0(ebdmme z+P7v5ZP;@r#eIdo&t6Wie@vmftEbb2;lI(a^nJA9i=$MknL}|uqM^s`QeBHDbbg-~ zRDbt-&3L0?x}(4DK(YM~vrQ=OV>B<O5<T$DnGOr8PKz_^(}B)jbmNj%^pLV0#r=;C z`rL<p7&({*zm24mMoy$7KE=`MQ)biM`im*<o7Bv41AVw_D;?ptmu5daOwUa?O%p9I z(=vN+Q`~Q9qaOwI-uid6M%(YSZn4fFvAqRbOlUx_a<oesTZ;QM9Wkv29oMWOt*r2& zqfhwLL9^P^ukE^1cbfqe_jk?s%rSK6tSD;KYX<eMw}2X(ub@L-tfjqjHdCYv=*Rg7 z>9VmW>8aiqX-wcPdZN)Iy3nnFKCASOB0WLpPLmH2+o@LQ)9tZFG(~PsFUOUkUV7!} z%b67^(joLmqBHGn<EH6fS6wr{S{<67)qvLZ^`u!>y(!W!H0-TET@=@bzAGC-XQp+g z?VI$V?XLBqap40g(miy_s$sNcgHhD$+BiCR#AJHRES3gtn?@CF6DZP4^jl&gZPai% zU4MTS^_aSr{&3$&3$AabQuKC;bQaxsGmF-rdWgQNeT<%ae2QL9JV(FzUZw$GuT!MY zXy^V9XqgI6=({U<^h3f+YUTTu_K<y|#}0m@NY@P&$E~QLF5UG-Ntf+2r7I?tru&*& z(NBtswCx#tiu54u)X9x1>}t@n`E}^#T@C4m=q5C)bu;?3LMw`NB%Qjy9sNAJBaP|R zjoR1lO>gKApvk|7(WqS!6zNYoZooLYu<2xa*gBRLf1E~xt|idzzs;u(3l~$QTWN!k zHS|usb#%6M8VyuuQ0u3^(GNL$>HVDtDAK$1`m~cYcSH{T*5eYj4Y*EQH@riqx;&t# zte#M$lj*?kFX_>ux77K`C%W+VcdBzq79oz)<WqXI_^=U0`kET=Doa;xv!>Oz*wRyJ zPPE@96_szQMpHM{rbw65S6e*klI=dU>F$;^e_tS7bfg{iJkyarzub)?Jx?1x8$cht z8BF7U45QA*qv=WO3AC?k6#dpHp5i%x+V`4Ew?;0ab*C?*dsnWawRf(iX=gW5tH)a? zo*!s#xxKV;tpjvU&=Gng{3NxUl|zHlF40M6u2VdB(EY{_>DlT}>BaU1^z^tQx@Yx! zy7a^sI`riaiszMK;<&tRs-($-O{w>i()8+4E86*WMS8xHBdrtULh+nKuWYMDmAUn4 zjk2E9*UyIrOle7*><XlIh3zPwkLZ?e-D#)Aedw!;18Jnu5SrU^1Z^^P44ryxBE@qR zz2P&B-j7S5mru;6TMd@bQGrR+X+bhQcw;@q^BCRKe>?rQWjC$+aUbpIl}&pkoS;EB z&r&C+OBBy>G%ouNH8g)n$Mt?n&+aIoGM(47Vy6$(X7g8yT|Y|f|HtWa+MuH@Rm%)$ z{jG-dVOJCSRo|RW+g*y{xskrIu%bEH*3@cvMS9)Vjw&uW(B$aKG^3^q#q%aDx40^e zY*~YPeyv5vWYnd$eHzeuWgF82XFMsMQ)!tx&FIto7St)Z6}{XsfW9yZqN7i=rQws? zQ#{|&HLp6;-#2!nGy3$T$rbw0$~XGaatj91QGsC;&&8Vl;}M$iF(YW@CZp(@Z)0eD z)_8hj>?FFVUKGXiG!5DvPXk9!r+ezoqO(5Erl<GLqmknm(y5IXQ#^;$!t52aN&G7M zwPiB3Gft)3F0H4V7H^_P-8NG^zf<Gq+i7~nPP${%9%}EAMZYQz(8lKu(I<&VD4zT2 zh$^RO`!{Fks{Q9^n`swmSi38<(B?Y5mUojPzkuG0`JH|XdPrkz9@B_|r}SuM9-TD3 zkgn?ZiaI&Jp`|{)qXSQVr1nd{Q18(1^i)GN-DxBrEzWn{`#Kc)6ZBS`A??=5g!;Id z)4A$W)azPV+A+<FUY=5cB42}kaJ8qaWlnVSEoWMByNbS@?oQo%SEpwi)S}1_p*0HY z(=W#x(aLK)>F)7fbW=z(`lGrp-D~7Wk&i;#9}l8+Qrgk+Q$na+_fFKcQCGUest4`= zsTW253$3ze0Ijejl#Un^PF0;EXtM?*=%MnX=!$P+DDrLS*z8GkTxt}(JuQ|d4W3F5 z1<jy7wG(I+tGN{UJ=EgyB5HYN37x!cIc>INB^^9@4Sn5zExi%Ao+6)!9<8{Up3>V& z-Cl2}uW#?9rH}8Si??RcvC9uo<S)@q!;jLA-A~Y+txnU3x;b>F!v!iczf5lxU!};G zqA7Q7(?w_Q(cH`jbpEDXnzZaG)tQ+`bH*1^<Y&?0-QUnQLGNjT*C*;!`zx*BTudX% zOJl_OTggO0kq<@}e=wlk3yf&g15^6rngzXcwhS$G#FB2<YfX`VMjx-YqY0}V>Ac0x zv}lfsrcZOHN203JI^%0m<hxO~p$+KvL5=DBzD;OO4{zGLOLN+;Lrc1{oj*l>9c>=a zmab{lo_6r<NC!0ULNEDrr;ELN(Oq7BDf0QK<Q1yz52ri5B50!b2ztS16z$u5EN$aE zfi7t^nbr%4rqzSuXiU3l)V;$@TC>Y+I=9C>+M@45ihM=7f5<XAF*1oJj$2K2qf+R_ zsq5&Q*&AtiVmd{BBn@4+ofd4_NssT|Lq8tMqS2=h&^}iV(-rrQQsiUO(r-`G;Nl#b zZ*Y;`EOUk0*k7laRd3PsMt3RlKk4EQkLa9!Pw3qd&uLV20i8JSB|W$LH66Y69Yww= zJ$>N|jePK3GyJuho|P%ait}}BX+1ijvXWk@Z%mQjO5=N!qW6cFrE}t~=z?VxXyKMh zbj1;Sy84C_MLsRvAakQ>mZ(C5pR8I<y0v*7y1iR{sz0(3{cV<~#<gBlZ+|no?W!-` z^1_e)&}~gqZQIgS4cpVg_8lqmg=yT(?)2QcUUYDFU)t^70Gj+clr|_kggVt4Mv<RP zKMfg8f1fpumP?yRQ%_ByanEAtZr!Q0apf5l`OviKfVuS0)CF|jhD7??sijnvzk<Fo zTuqIurcmTx(?*dSY2e~?x;-<44!XCU4wH7#vrc>I7{7fK`QG%zqHH=S>lp3&;3Qq6 zdzRL7KTj*QzeGDtxJr><P7j^AO<%mZM+aL!q>Y+Ard@|Tqvsaq)47LVP~@{y-7@d! zz9t`OcGwqMZt-_|AX`nlpgMs#KPDS1DDvm2XG1-D`=UNwHBd=s78}yliN^Gfn<;H_ z%#0#mpH6vOiguk<hW2nMM`!M{r1yf$(@urf^lO|A#rpudXSXfAgw}P$`dQ>T(D5-& z)UbjxJ-Vw3O$ky_yhornV%@1*#cFiZ-s&_kxF)rHS&JIZs6(9`>ruRapy#_Zq&+?~ zqNNvj&^PW)=*QEjy^Wv40B<@<){Nr41)bN(mv+3_lC~J-N4r`C&?Q>~>6d^Y8kgUO z;(Z4-tlXX&91EdU`*ft^)SYO-sxCCvqZ{?U+nwS)39VJWH|?L<haT+Ik9vISPji<H zq+9ES(&QUq6z^B)r*cDS_q`D`uhVe4{PPGpV);lqtkGz?@a`Cj_cAoF(gd1&cp_ch zXEKdeM9~@Rqv@WOvDC02j^cd|b*Mg_=3Smaua25UA6w3**8AtsF+Jze&$0y+?}6wL zzeL*W<zhN^!BV=r?s8iG&I+0`WhHIvxSHbq5v@2hg*GmgN~89!qj}vo(6RDO)NNB5 z)d|{6@!p9#uh>c>ytdPO&vwvZb9T}yb#_zTyL+g9Y$nC~DmvlPe)?kUK^kj&n0lVd zrWJ=Br4E+IY2e`#6z{pHiTN42A@eNl*XJB<Zg_zP?7T?FbiYhb=w79GKSr-~zCq{9 zZ_&stx9Rwfcj-Fmcls{<J{{EIA;o(&dNBPlUESd+O_iS0^PBUiO{W4nSN?)l-ujZ_ zeH=Zk`-UFd@s<|!cu(sYexw`re4>r|eW7p7zEQl#(-`)HzAL9G;otbUY_hmsH;z!y z`nI~X@SGk!I>CVA{U5!5!-(2XHK8+Vo6*v_=Je?NQZ%t?89M7#S&H|D^ig1W>hs;2 zp4x0fhjpt&8yVSA*Zua?Gu)BleIq@e<4pZ0xzGZ4SGx6gH@akQRhrVYI=%S12E}_y zy10EET2;3m&D&F-o(yeBPg^&pFVA_<x=~Fi-fz-sPrT`aCC%tAzZP`!cVBvPTPv#Q z=TG~U3#522O6N>&Lp#=NM}3|K({{^4Xk6=#^p>nMZL_Bf#rssc!L|pTcC9C!F|#+# zXwsK{c-N2iP8&d9_8dg<9+nO}JDB#59zrM9i=ew-45JpQBk24tBWW%3(G>4*>AlJ0 z=#x4VsM(8&v`6Y>daf(Jn1Nr<QZcmD*;tw%6Hjv+PNT(drqf30GwF)H3A93mIrK2T z0xp&_b@qIU_r-MVk3}?f?_&C9_)^-(bvb?acm>_GY9*c0X*C^Vkxb|3q|kFyQ>m-h zdYbli0}a@{iJA^ir|(?1P`sa}jw##d(C$0vZOff>(A8bE+`K*Xxql|TqqmRZy*8~J zb&yVKe3*XtluhUFI!Xga9H*|;PEu9jDT?>uboPK8TI6t^j(T{3R#<(B=61V6bIM<% z*Kb~@c#lqlLT=LorS8(e%lGK_dH3mspojE`NiMy9?lHytciJc5IlXO|Pb1G3P`6nx zsGk2TDmQ#hZO^`;cyCV+_<x`tMxW@toX>Ri?5{MY^>-R?`h#w|$l}%#-uF)t=R-)a zg5D{uOJlF=QU9d|v`!a8>RG{<hW>6sQBHu`_O+l}oJ!L!&&$v%>E&p-p;okV4Qm?m zt^!5*0$O&0E#2s8Pdm#Tsp|<RT5+Z`t<l<r_P21QD3?IpS5&1(dRC`n9MLK&egS#4 zsCPyk+9|Rgom0O7MR^9=?Pz2AcDg4`Yu%Jam-eRPZu`)AYnszj1AHmULC~dd{b=>9 z0Gb!onr8d9p_wM_=%s7HRJk&QqWlEC?b?}+c-w`l_I0DO*dFwYUoUD=st@(M)0d*$ z1+@$xNVnDwr31c)QI8YhwAS3Av{k2Jbc)>wit-xNZ|5j_f6^Gb(03diXg+~<y)%&x zT{oE~M?_JS^PmG1arEQ)c)DrXG&-)|3>sQ(mZtwp0^N9g4n_G8+OOLJ`r3IBUHLYV zh8|i%LuM_bJv*+TGaOb@lq;c)_OGEwrl-)*kW^aTemyPoY6G>}zlnOxNT(=|LLWJ7 zrF~y-ql!a2=+T6oG^NXKy1L3<y8lBaML8DQZs7r%)B6zZS3R3n_;G~3Id_acPdY)r z4L(It{)NUUbLiV!=QRDBF3=j|F3}$?uh0U^YxKkO>lEc?Xy}aF^kV0`w1et*`t{3w zdg$y!nw*qNQ-(aDC~rf5nC8)L5A*4b9ffpw+)JwJP(-CFZ|H~5Zz;;@P>)p~>6~Go zX|eZLno#CDt^d53%J->h;cQuyxIR(7hnBCcOMB?))9l*@)H}nFK8iM`YeG!vL>F_4 zazS*?rPB2Hy0WzVcuP9Fb$MFJp#r_|(S|1FRH7(PL>G*9pjrM-RI+oX{XbNp&(Esp z^kg^cJEkf{IV4)qp(d^SxfUIAp$<K=t{$yDu>n2at`UuN@t`QbL|ty6<r(~HWO&n# z@y+OpZY}8dS}o~BLqBSj>rYYciEddCL{r1s(!JinG{1ZZZTPkW-FUVWt(Dq^qP!GM z3F$$nR_#Tn>-C`<9`vP;GyBsf3kT9Y;h_}etf;!u5PIqJP<rUfFnV^&2>Nc?NZP2+ zXu7)bSc>vl^ziEmbW+YF+Hu1a+Bznh_U#@^6YIy*$EBuGl<T5*&dj7S>l3JN%pB^{ zV;-&2Z~<*rb`hQYCXu2%7;TlljNYEMg3jo-lD79+O+6|mQ=hLXbimD2igILBzHlR* zJS>ftX}y`AcFmwG47Sl3&$iRV<G)dqKcn)PJ+yzXO!~xgAC0y-KpTELNX_mXrt+*K z6y?@v)3GP$%#NpMQQb3iWZ4{A`olST>DmRFzUvZ2c{jRq)HV7f<OZ!#_ZD4I_71iC zc$Xf#@jH#%`+%aH9PK>*F^%Z@lqNTRPK#{vY1bbGH21*^I{nBiit=^TdFoqgH|RaB z@Ar`ocKb~CnS7<rufNf4SBfdh<x!(^QoOi+CLEN}Pg~_QE?Gfs7V6OBak_NEXg!MZ zeAJ?g0e$1Iqz^p|>F?EyXr7%hm6bN3DqT~Ga)2}?-;BPyYfjr=u%Jh>OHt3ArRk~l zWoWNuWhu%J(yYmrbkcAu8rZKqb?s<PE&VD`3lAG=UA-bjxkK8atSy~kU`J1X(`Z>_ z&;F6Q4)p$YN80g>6GeGNI%2ysEwio)J-*b1#wDm|n<!VR8tFzY2Dwv|bEHOXs?mzg zs#DMUHE6h7O}fFh7JXg1Hf?E8hoXEWwR=;SraY}jtKX?l&s}Ih#~y2_8J^jQe%R8O zqFg22yu_0xB{ZSSqMOpx(O&exU~l@kmk+h-(2SxyCf(e$1vRMaOGml3q_1pS(a~l7 zsG*TR-6920l;floUIfzTk6P30n?ZEb`8IUrv9@$gRy(?FTQEiWPx>V(gw|TvfsUWi zkzSb6iPjk1nI?yKp_Te}r6@N_ecE)V`7L_TRUSQQ&)U6cHP_zM$i5H#VA+?VyeWOB z+n?$cYpn8q0Q)->4x|fm2hqE?LuswcVHD+5sWLm9&e%JImfbd#Zr>0=JFgx_O_vO( zm*<S2DBnt>Cy%5<MvtNchK{D;1IEy(9%E@rhjH{$>+uxjVrj=F6Y17^lW3{xlWBaF zDOATUiY~B<rfwE76y<5@40#+4_@=SK`*`+$ele9kemafby+55kx;cZQ94;+$b{6$M zmOv*Rm`#uGo<ps-&83q!&7&_<=2Mj4r5_R((m8V%(b_W->C>3Sbp6C7bmZuzwDquM z6y<)YYrhrLy+;!D=(Lh{X}5~T1+1p~TCAZznkG|}7pB|ltfdvIr_#l$b((&s^_uaO zHqf@^H_{)aH&K)`rm@O&+F55aZLHSl_H_&UT|Q*cTCcZK|H5q)<&$ahqaF0Yz2B(Y zt(`Rf>MmMvVK?o0b`QOOVlPFxW~z5Ei*C)_NBiyCPo1_Opzk&xq!%|HqM50ODau3B z-;$2dqf3v{2aAqT<^1E+d-e%Bb;e10BmNXcIcl0b`3$w1aF(tflS6BaJV!4MJ5MJL zxj^fNU8E>~O)vDlOt<#BLX)~*rHi{<qboaJr`y}#pqJa;q$syd8wK2^F|F><8!hhA z`pxdq4PL)f`zH5kTH^;4<-O^{dXMP5I=M8U)?-?_#uJ)f^(oD9dq(%Eo>P<)r-v)& z(`$|e^pkxdb+&s!`&N2MH`~0TvI<2M<;&?+%Qv)5xwrIInRj$(>G#yU)CYRl{3D%c z_KBigIxTPVg?=~sN(&9Y(dWwVw8)^C>Kgo@RrJ*q<=Ll-bi)E&8NIC|r`2>6be=+o z{*dd^@p3&X$@MA9!P9y&C4DRz($$g?9UvLghLQ;_FPTz3$&8}>ytdy$JH8ZcD3zuI zP<vUd-)gBWeJquub!C<m<?g9kR-TTPThs6I3UrRbhPvuhq}OyR(F9#vit_r@R^Og} z(|4dx3>@hlr4zkpSeX_WIa588Dir1XX<suHO*MC=uPxlDe`$BRy-Zc=SgsmfYgwJ5 zegHjbU6Y2})S@<(YSTNmb?7?#x^$vrJ=(K!eTsSo)L+$*2D>$)gQ_;BGpl>hJvBY) zo7zoi{d!F)>LbvCM&7ierw_f*v>9#h)0{qO-h#%o^rde8Eh*|T&~<J6=*VDy8q@(z zbmLdAb0Br?)|$HY45AJCw4tc~K*tPfM>h=)rq719r!_}}(CMQ((1NiYY1fIJDC$kn zp0Qo%+o@gY!kOJ@(>dMgm-#*Dp~Rka{<2;)Vr6gIIk^vQv#u{~x2YfPy`?{$w0!_g z-8GQj%p62fPlNV55=IZ47)<TXhSLQXhEUV1L+P@c5wz;PVHEW{=;Ws(X#IjnTKsAx zz4UGr-THYnU0ytf&X<p)s24(0jVI7U78B{Sa+9dF&1BleehS^-97TV)MN`x#p;zj~ z(l#D(^p<x#9nx|tHEBJK?hBqyM|Pe;Q4fV0_Mb(chb7R<!)DWyqvz1m6X(+FG4p8A z^!XI^S7^(`g*1M}B6=Y?kveT$Os8cmq3?Gtr4jp<Y5KF5YsQ~iK`UQKq8G2Nq*L#% zqAhb*)3W(%Xi-rzMSU51s(39up|g%&G+IxemfAq|tvAxT_M7N1mo$ocHk$GEH`4)4 zw$KYLGHCPGTj|M=ZM1#&?et~89TfF*XtR+!sWfpHJrlc|uAa4rMlIY+hpfn?1J-6y z)a#)We%nu%>^ndY9X&|jo;^fsT|G>v+|8yp9v`8o4@A@6AEQpi$LVI>leCHHDf)Z4 z({#G+8O?B)vlR7+=!J&o=q8`@bWXqp8WnPpPU>-qP91oet{8TOqW%$m9&?S_CS0fe z5^vC*t8P-WjkoBS?YC)u)*Xs^OZ4rzdvxZF->KWf`}9`+1G@0tL)xkM5p~gjOi|y7 zzO;TyA2~hKSnauHc!NBu(=4A>X<a}&b}FQ(Cq-|Bzoaf>UeT%1MfBCI*R<c_H}vtE zw{%$gJBs>Mbo1d4wCmZAw9NHS^zMVtG^5}Po%P`>9VvaMp+?0ttlSSe+FniPxJ%PS z{JXurj6U#@)AB(I+N+BWMSU)6He8R6ov2S=Of#TE7AooIRfcq4nh~wF+nAyr7+rDB zl=i-5Mr%GXrzWp0=!b8mXuf_Knpe6kMg1|Vbho5#4XkMA=H=;vw$}7|_X@Ofm<^2? zU6G>R8SOgPmfl)nNBeBFryqAZ&?VW9)aSet{c^i9MSV3o>s=MvUs6#&6Ia^E+Ktw$ z;!Zv5RHbdbt5MW*qszP1pcg`GQnN9&Xt%i9^tbtSXxY_uY24;|6!qh1?8yeS^tFa` z+oMLbV^L$OEcT$M44cpeR!!+ZXD{ko$D7vj@u8}=&8S<?=Ct9E7BqN*FC9ChB}IKa zn!C=Ay6p6)6OIJXTNeYV*ZtOX*NY%p`&%1|dVDm*Dwuw7ZckI{hR`m}J5ZbU9ce+I zPW1Tj&J^|k=<>N;>Ec!0=*lhK>DK){XwKQ5^!@E#)Fr<+MZH0~L%$!@x9m?tod?is zbqCVG7K7-8kWkvae;7r5L%Jd^ocb*qLUmGy(zCxs(4?co=(sDxX|LQ76!jEoTlpy3 zwbW=D;V_2Itu>Zr`HZ7Q!Q*L-eiJC_H_~fylW4uf$#mViDYWA5D7yAUG_83fhUPqr zrKlH49So+@`&QHFdew9~w$TjQAz&u;>^_Uu9GXB;pOQA5H-`o#&!rJN=F#Ox=hKT< z7f_3*3u%v!izw=0Qp@s7=v3FG^he`mG`96}YSC*2-8?*rwvAm$QGb)}U%#5h>|I0K zpGl_G@21dlFV|9~I+f~Ktf#2=Nge8Lq~0wz(ZOBP=$i0!`e5>As+zxrMy<`Ds4q$b zPHm${Z*Ql~UhJTke*8v5Ep|~ur`<HO-X4m2rnFA?OsW``MeoJzqel|=)9o7%(DZ!= zHT~xgQPfYRci&}Gx&BdF+xi$CR`odD<8^`>gq)-U2A!g)*GiktJwp$soTV*x=g`}y z&(X2>&QrVB7w9#`C5rm6w5Qt@TC3?*TB`juT0HPNeLLX>eK+?e{jv5IMLk+tH|GxR z^WZLB_U<0Nt$&|7+dQC?YdoY6nm?kbe@l-KeN260pU`Vdp3)(kpHZ{y=k(yUJUS*n zpQ7F_H7Nap=2m%0PkOwfyV@1etpi`vofF^Cqx0WV)c2*b{qJdwOCM<X(~orf*H2V3 z|3bS~{z|hOeWR!+Og9fGrZp%2phxGcX^#!kba5Y69FWmnm*sTWa|K2HVyahKkLJ4Q z(=$yB=)Mpo-80yb9*8!g7nT@P)Jvx3$4sfuZ8JKh$ef<gEk!MDO4E_G%FsKl%2L#4 zrl&_+(l)cL=)<+;>EtYH>U60Bz46S3E-bD{Q4gBBx!F;DAA9<$vjcrN%#q%k=0qQ_ zs!ZSSa;B(1O&dIRp<!QDbiIWeec|FxJ-w>Z<(;ZgX;^iNde`*js+x4<?pjpmd~KTi zqz?7{UYC9<U7!Bu)_|hEHudY)h&qjIObrt}=-0KL^uxX;n*J+IHRB7t{ufL49Tjrl zhjF~3Bo#tvFQtf#j50#m8mK5rLrX%1gtU`UiZV))kW@yc%!;CAl_V;=WoKqSzvsH{ z`=8f&Uw-^~pTjwQzEJo%Z#Y+R1`Hfy3iIZf!5=O&;p{E5VA{UfP$FA+y<GTD`1x@7 zzG)ux{Wc$p_BMxybS&T$6HEAZi4{y=w-5?HR}Kx2Erv2ztl`H8Hn8cPEv%DR3hPzv z;L8d2Q22RtsI+Q1oE`1}w;gtb#TQn<UiX}!Q@b-P5p#vY&#}WaLpP{l;SRGrJfKOa zCw!LV1*7v<!O3^Mq44wXuuN<XJfO4|ZWy-?I#~KbD=$B29_|mVQ`STG!VNI2W+Tje z8vvh31j2#po8fZfEil`9E0kOt1cjfshmGmM(55H^K5htwo?pVCSnmjUTsIOfGL3@5 z&*{TEo1)>NeLJA<nVoP^<t{k&^=@b=5(~#E?t#M3_d^@2c(}oPFHDWv2Op#*z<$>f z;j)JP@XVJ3P`C>K{f8yN)|tuB#rZJo*qQ=2A3Or(^HbrKdq<&gPXOvjro%Uy$Kj=^ zC*WTDlW^n44CuP|6kK*D6AE_-;HuUv7}_ld9#cI7?;4+l-Itt$rvB$)%${5*+%JIB zD)M3G>kCj>tPm!tT!b3NmtdalWoYSt1qyc$;K}T3(5bQrYPS}{uidW0yJ|P!`N^d) z)vgQ*_Y&ZteYfDrbLH^roeJ3erV{q-Sq-OX--cUf+=0TK1*jNw4{l1j51$v-z(o&h z;oZ*<piSS0uw_I&6z(%XZLbDc7xfs%9)AKC-e`ns&zs=)zs;~g=@}I6I>0MSUeFCM z;mv)o;FI&OVb{GDsPUl{TFbOU;T{BRnDYkedAx;@k?-J}^!L#I#s~P|`A4`!q!S8v zBw*0wFHmjSS6ChR4Tc{44yPCXfYS9{@cGxDP`Ez<GsgUZhZg>Y``7)07PCcm{r~@y z_4U-%T@?NO8x`(WpohtKgVo2WpJ8{jN*TSoSR5Vxica;HKnwRS;Ela>x27c8K9`Q1 z(Gx9MOJ6%nq02j|a3=$uEGG?P(rEZ-8FcV<8nRFp9r=RB`SwN&_cdUCJiV*Y7ya%$ z?K?vbJ+YR$yYxdJ{7i+r9B7&T1E57ZO&BYWeqKsPSr0@<zNXLD4?+v~JYaevmC;c^ zZ!Vx8W+|fGAJJDHN@%w(D%=4<Z&FZ!Qm5$=V^y?KHGRBH4ZZCh9U7#L7Vd|@9Y^R4 z15LC@3B6&Z#b19xZTyCyhj!P7!rc+rFhmDlyg*ZC4MlH%L^pWqqP>1nmz{cO;a&-J z$);XYhNCy$rQ28Nqf<W7i=iXX4gE&Kzv*=7I0LlpExL2bDD;hXD!O?zdWQ5ExZ^Ob zA2Aj^w3r528KN6r(24%z&?(~MVUPWE!_Wz6;jRjFnl}+XZKO^<M(DPG)IZJ`Ev`8U z9?GM_Jr?wXdb-JT3R>eAy|-&BI!wg`8lR=#r%gi(cU)lb%IR?4cd8gY1N~9K6jo-@ zQ&Y^)yYErq{tMdW3$>1%g`PiXHk_SF=S-S|wzxx=u9%A!?#95a;qzdk{Ct>~LF<hc zp#N3VVUFhL<)5f<Zw7s5fF+d8po@&G(8<;Gjl)9plutA<Y!O<xQv<Ct=w%~ow9ak1 z-_Zsw-AN<EZPDTbmq6jZ4eUE<DNMOT4V>)Iw?0#sNPBd*!OP&O(^R;NgBH6_FSt0M zeZJ9Q(T?c%iYs7#4h^2>gck1UKpl5yDEgB=+vS2TRdt0~=jkD{mFQiMsBnh|z3uOR z#<`;-v^-#J0Zp0fi9X*%E7y9Vh5J2FYCj#N=Z#)=mF~7&jlTYp{@&n&HkMigg}XoS zmcd%szm&S!u0vnxpo4;Z(E)w^U{g93?ggRqtEjHydi2pwsvNliePr-PI3$~%H3>iq zcZOh{`zGk~i%Q1^qR(h-hPD@Ix4B!;c}-NfPlVPI4}z}_(2U{R(Cdonl*Pg5zHPK^ za|l|vYXsAe(dhAEXum4z>==%={!AA{MWE*@Mnd5p5?nYV3NEjwt5<DDhyJ5Ud!x}8 zb#}nU%T&0dgdX{dt_awLPL$pa@1@e-hB4?x6*OsiELym~1dSs1z&M3C_%?^mpAnBf zTTd0d_oBCp?1RGHCg`i10N-DwYZfM=zqZhAoA;w-`y7Br)2VRp30;4i1~?x=tA3}I zJCo3XYRPa!K5d<I7%kk1g6@7PaHQlB_%oSSjY>tQ-lT!{N6||^QsKT7T1(*=>~n^S znx><_KcbzhkE1_{oq%8WQ{gTZy4Q88Y@2}|^Ol;2oI?A^XTrUw=@paHXyKj}R9ck< z7l~xU*aUh{F9$uKm^xUWL1%YR;SLtscECB9mq`bhoJR-N(N|u%=tUxV@Kyp9?q{K| z6w}Ez7tlA}Q1g%ibd!7`T$e?qre8!0cemi2)tBH0vCHt#0XlcY74+X5v|#B~wEqVx z-0MRBQ7D2HXX(M2#pu<Ibe3-kT1)ae?2$r+J74I>6|~Z^6kYU{7Va!VUr@gZFBZ_^ z1-H<`eK6RxsT_9pu7J`fsNSSX^nx1d?@@(L{Y!<rVrYqBx1mW1-DZ0Sef=Hn8GaXS zt#A*XI7@|lWZau*o?i`mpj0i~mP+4@dw^bco8EV+LkoAzVC9~NaDh%eth-8`7C%CF zcF?Gh2DJL1$56O`23^daK&eJr;M<6H@7V;EQ)&IUW^}@BD%?#&tNo&H<DQ|f41Esc zi|8tw7wEa~sDAiMv~X_?ikzpPX1_+aJf%-Jw4j@1TH&*F+G^Z}7Vfmc?q2P1kZ1=S zeSlhye1rDANe?c6i!S>@h5K%3UCsB<<q}P``hb4XMs<TfqWuScf~7fBxC@6~*F^97 ze?}Wfe}VgtQ8DAM{H}(+_WXtx?#aQ&2k0_`ALtjisJCMm`qwua8}k#bqx}mCcj%z2 z^=~Nkj^>5`K|3q`g#+^F?Ro#u(J!fRzi#*c|9&UiPZU1Nq$j3}p#vUM3*T<&VN%^; zuQV#$z2on@Ps=<d&;_DBV9r5$YLp~8qk?8R^+XHz@?c4v6s*zh1=~ufn4L6Qy_1^m zkU@KE$U@=H9;{f{8~*K}<HP!(*DLmgg}L<KJUR5-S5&yqhkoC`Kb)0KkDCoZOElBf z8|2aTvIF7FlT^6thaUZi=Byoz9@$d?<{za~jTF(hYv_tqN@(F8AdF9@qYYKi^|xuT zn<`rWAAP!C4V_@14uv~{u(z`Yto=!o_G+R%hHJqIWmMK-2)gYX748qBPYu<9drIhL zyP@b+pQ+<6UG$P6deHhB748<Imw%)l(ZkUjHT2<*%QS8A2=ujgv^jDlTDW%z^)FKU zg`?2B-_X+V(dd85W8jnm8frNfE!;_j1H%lVhtfEBEuRjw7?0l2MjJvVpiLAfLgBt5 zR5Uk&v8_}x#26i+FbVd^qq`SOMh|SI!d*u6M1`sFUM}@sV1kxzrRRdDq3sl=!yb85 zxaWvo(@OP1OwsKMW-u#{`kT*0o3zosp|jA!9Y|P|Pm?X?po7|}YuH@0h4MT&rGSpM znvWLlM?&q01yt1>4!cOlF0w#Re@7QbS)x~|TS4LOBuuwn2+KdvkI{?JN?MEI{A)C1 zi8cCCCl&5hqK$NHVQ>kpvR{H$_(oUnS&A;xvxDkoRJe1AZt0>H`<9`vj#v&yRM6ut z4rtZCH06LJTDXr1Gj7wd9!}^|F=x2+Fzp=gf{v}B2CH4s!d*=moJL1Zc0)g}rw4r9 z(Tim~VE+vIXu2m_xW@@s2YA6L{Z_$#IrQCZZ*<j5njN$ny>GA&6z+IJAB#26xr5q8 ztVP?Xt)rKzy^Sy0^%E8Df1<;6{NbVNG;jHObnOrNZSMxO^2m*FP9+uYhN81YHo@0P zRAYP~+NFkOtlo_7l-vSM(y4H76y5%qnr;X}AM3jfN@P=?*}>??FX`NEA!y-FDV%VD z=39lK$GxLhwuhr<YDK^YMbzCs5-r>}g$LrJ;Diy|VPgdiTN#Zu5ZwWvCDVinJJG^j zRM>0nE_l1wZn*a(T|OfQJ?ts{8yJhOlive{d#W(jJP!JGQ2WSu^em0NaQrno+-@Iw z$Tuq7VMS|=NQ8QobgbKc^mMTUaB&J<Wpof7`H%|tThSG=N$^u9Ri2fMUhtBJY&(p; zq?iJ~7f|8uD>~>Sy|pV9JwW#;bT6aVoYK&P{?d(yj-iEnv2c1V&0cdHtt@>4#$`|` zvy<q^=d?#q23oi?3kMX?v_+Zdu^(yWuG45&-7F|}lOA`@Mho|8;rFB*cw)jCxU`P; z^*xKeEqe~`K25D=pGOOKZDC7DE-X;VgS#$Mw<Y=L8DHs;_zUP>BMYE#4;Q}lD1;Bi zFT&etw0!C%^sPo(x#=>xM*a#E?&!kzmRF(Jd#bSW8hZTDBDkcCZgnn3pZG_G`@3jy zqwCP9p8EUWK%ehh3cu!1<N0Oi$aX5+?L`mOx&^nD(8mttXrtdW<zNL`Vtgg^eL#hK zzi8Xu)$nc>oj><B`gSW_7;y*PsBss17E|F)FgorR9d__Ox?)@n^nO6)d~4BHdq3cw zO@;fy=!b1IF7hGTN~<0YxK0}#AE7h;&`n7VXyGm~)UKyu>z|-s$~D6Bv-F&K6FTKB z-Ls<^E!;DP+iudWuFu$F&-v@AG<M1hbV?&V8~73}+(CvfE>KbH*J!QJbbee5dgI7e zc=9%Vys8Z?+)sw)88l{Q2fFqZRSbKB_E3Kd3yY|X!#lKacNyL|^d4$W`~Y{<)6eTa zqMiDGg0<)AY^zSRaIYDf#C(P~hJS%`s%Wj}SG2R_H~94g-D&n6E!=sAWuZTyr+OFc zQ%o;A{6w$%LsgQ0p&uIkhQfVlxG>-klppvPHs{mK#sAQoKU0f%k(mGgeQD?@Q7GJ% zhOd3ZV5Lkqn43jY=XFQNb<n72adhxd2`Jp7hTGhFzzA_k7@JO$XY@qpyr88aQs}2@ zy`XT%8mc-<!<m2S+QTyFBa>v|{U=m%b8qwvg+5TYe+|o)^o7ztsO^3^^oeo(;Lkd0 zwZ1<(yZ-=wpGVg&l1D%4q%-0NqH{+Lf;#u<k+p--ihUHIaBmx`St!Dc_jGKG61q%Z z87{p|JH1uVvC^tgxYG?E%u|C~-%!1s>gXqW8gNe~o#Um6mXOkd!hLVJd(IGO(@r&` zwb5UP>cGl!n(i?a9U`d<g}dNz&TKt6x{a!BABL72Ivh%tQ!x*Hw20&gDBKh0ug@L{ z<=Uv)b_4Y2p`+lOa_ZtS8XY1z1`2n`Vdd<x@Jk!jj5b7D>yCrFD(Fqm@n~_W2~fCS z4rAs{gbf{Z=uRW_=3&P0eia?=Jqf*2dNLI5o<r*eQ(*BsIx=P|I&Fjr9DJAVTQd#a zug`QS+)IbbRx@D6Cptdf6kR#m3_8`)-+nXE$^B<R;m$g2v7Qa%zEP9?bI@PL&xNNS zQMXO=&_fjFL*YI<JZrxIZvIW@9X3a+OtFApo9Vr6mi%7L3JQ1KVW9Iu=+<o!v`(k9 z%@(6gTBvc9HQH#X4HWLdLo+X1XxVECbj+fD3znjHyr;)w?a-wL_E5MZ4}1G9gGT+A zL(hDgY~z5g{Z3^MI-<>uRzTtYJbbjp32Lf1L*F7=w!#IiB<2b?9-|LUSE7Zx^)NNc z4ffJ?hnp(t+f^QD7a333oI{sedZC4T_t0(cD)?!vH{AA+$_1=OpBn4~XI!Q)maRbx zck-cL>RMPgZ5<4INev@>(Qmc=;E8hT>gA6X?(6f{v*`tk4e0Ps)MoES^l-xfC{a&e z1#ChKcllw~6`J6%8676F1+Gt{UZz{ot}WDQdk|W<=MO!q={lcabWooV7<-<kFAhat z{YD=j2ty0+06?`SI%iu1dV_i-JaL0QSs8`yFS#9BW>Vq(0Ce4ZsvNfi?Kx&AyjVwN z19qX^6n4XsD^z%Q039J33*Q~1OJ?ptm$%VLJLAx~`tfkYJu19cfF3nqA1o}OGwc%3 zHNWY~BZ=r=)Aqx}S5$cC09~(p5C&D#p=%DIANEax(Rp;LZ8Ey6iwf@}paZ6+z$q`N zWW*74olYt|SxL97K8m*PlLm!%6<~jxW3cN7eUX%ozBA=GEP77!!cU;HbWTFyJqEfu z17`O*1@m)hiA^T@eiwb6d>Z|GY8DjUae(6^v!T6i4h*fP*=x?A8|BWz-WTZ1rRUJX z`wy__$ayF>BNxtYq4Cjq=x4+8;plsGyWa)0@NNX0dWjxgUWk?uy$IK))23OM(B^OG zjhM@5;k^l1SVt#rx{AK4bPbvn)B7$(Xr~^<@M|U&-l;(AcGB{M>uB$ZH(<XedM&sV zy;`dbs+CjWeG7D4?_1C!m&)0eqaXdGX(<)xwbLu%v=%D7i-G>AUk&fvr)SpRM(-PZ z2X4JeJ)Q2N?Zodv;XMsFYr%au<I{g8)Nr3z%kP?~UC0Bp=a4!myu$(au6_t}`qsnS z`Sjz`M`-!K)FiC|y=LZPD7@bRAI3a^ea1Ax1@$y`a})Z3YBN+WrCuIS(ZahQu=hFY zZv7lx+C{ZeUZA6<zl0xJsQu1YXyLsOIQaq13ur-)RBnYiCDg#J4P7AB4yT==!aF1A z6+h^=<TvQpX>Xx^3%#@B9olc?d#Lz;3h$Gk1C&3);n(Raw@>KQUY&5oS*mIM8U3b< z3h$brBW8SswrzC8?r&(x(cfXqLt4K12RcWs3kvU{zzDCOa6|83a8(|4UHTin;xBbN z_6NOk_FpKxqXIX@|AX7di^Tr_?<dKPG&e*PeMegizN@0W*L6b+@2|iWmubujadfe` z1pJywM_Tqkdw-?bha}O$yDiY@HI3XMg{~jj3+mO;&_HQ)v#Jc7Tt<cWUeG=I^oHy5 z=`*`N=!GJEVfk@7eV!b;=pz;0i9z2q?hh@V(<hMw(B8x4p-2rquyG)Itnwfzye|Vc zdJKjtvI?*wmu_6Dh}Qc@pQS6I56xAE!n-tZaH0xqHdcihZu8rn=>o!`~cPXQWe z;XNCeT}t<OX`wgv83LUzP^)FyXj3sAXp}*PcW}_7zR)p;bkP$`^x(7>YQAe2+F|r? z==X>U@8_UTYK?$5D{1@Mk?1}H4WRK=>g6&Do!oOY6yDu|(l%q@oZob3+F10x*@ke? z2f8w096H~4JQUvRflk{ez$+srLZv#oZL<;jwYo91ET`9eCZUCQe&C7ARMmM3I$3fm zR6aw~tWD5*zv+dvX=venAlUGMu1lPOmY!@1GhfmLJIv6Z4Q9f_^;CFQ2>n}YHau5F zy?p1Obq3Fctwr>-+dQ<N%zP-kM+9Z;7r<wt=CB}x##vaP*L<T^hb__LO|78tjuDiJ zUkLw9SOhzt(vHZ*=oWoz`1%2D+iZgt-amprE2!kUC1`~~OQAs#o$F?Yc9*e-+w-XK zZW6jqY&jIoqy|<FXxAS!>4+ox;mj4V|9dLDw}d`C$r-l1q+@rwpd&`R!iEMqI%Fj} zW~dt!-f4nX8{OeW6%VL&lg6+1M2ipbf}5|<FD|Rl!uw9}^LZLzw;C-X<^y+~qDoe4 z&}V<pS*dH$!n;r~_yg74?~AUO;s<?Os9KCa`o7_M7|}$9_oUE2hi`<J9?-2@0??*f zn_%y1+T<6AKBKr93hz)s$5mV4q<&kW@?|RO5`=D-+6L>+(=xkYwD5ivJd;T?7lxuU ze$vdeF#h`7aDLxO%ML}Lg?F!DM+X(#8--Re-VP_fq$_qtqa(-cfM=gj;k_($pW(Zp z*#jE1WjFegRt)@AO{c7nMMo;{fx<gmP|YU}`pU<{@@rJXeJ?t=_dfW%fSRpHKnw44 zL4|X4$I|`iKcWYqe<ppu@F05iFZ$uwA^!UOB!2&e?l_!`R-Ablo_SAa?N33!n0f?; zv{9|NRCMLUqtO2a)!3Pat{rm>Zf~U1BGS=+^p8W~9WfZZ?F5`P^dywKPoHnfK<8?l zg4?U8vwtR9cz+D4-lW~uWTD>-%!Ut(=}pfZbfMfCc;+${-Yr9)kU0lWUZ7cy=h69+ zxv=CMy=Rw)e$_1>3h$l40X7%ln19qdqX50xst~6Cr1y?pM2jxC1ci6fp!bo>@Z{_( zu;mjSnsgQIV|oo1zN6y%i_kVE#W1s-itQ~yJ50I`ufC>gu{Y3B6H4Ky=Tvx?4SjFy zO=#9kuSVTMPaIVaFFvM|!Yj}>^edt8o*Qfou7W;#)v((Gn!NQkdZNx9*l>?-4ZMpM z-hqR6Z_}WS_t6IGHSl#MJ>p-BUZ(N@DwR{={Wx@n;zQ_HMyIc-M-LeM2)?;aOT8P= zY4VSu@a`OR_j&>?`Zq%3YgEsp39T&G4EtT7GHy@N!h3a4`V#Hq`W!u2_65``q+^|5 zqGw6Jf({p`@Xj4NL8=87<k3clR&@8CZO|Z>u2|lV-rJ)C3h(3byJc_Sbcwex{4A}o zdxw@2e-9nb(43_o(89ZVa7hl$UGfRtw_7Ll&8ClRKch{=zQF7(D!j*s-Xr=A_Q;~4 zHs8@AqCa5hY1+f4i{Fd<gu*+1Fw6QEG!gj?>ocjZ^&fN}k-zYKCbhNxhZg>-u<!qW zU$C*JIhj;aL=?M=H7&`cY9eCTL#(OrZXkNLNH>^cP32G1V3F?F-&oV7r)jx}ICkN^ zL3sK!RTY&$C)!ZiEE*-+1A8}H8k|LicM7ow+fuP?8YR{fyUY@rkWE#(Nny`iLWTDY z(KoyGg0@R(dkziiE{(mv9X)-9nu*I`7v4pLThCG@30d@2d+K<OcI(j_`>AEr>O2+R zQ^bB^IbD=XMSJ$ee%^t)=Fve?a@g-UQsEs&^weJc;LjDb-~wGQ-5>inXZoXnUXdAq zU3k9{&bdhCdds7mTxsSd8qjAT_StS!;R+SreZ+plohDtS{{04HH}|B&ifGRP3fSAd zsPJASI!9g+?(?RbuTz&nO8j$ts8J~$s-TQrcxMty-K2jMRnVR5X!|YtTv-)+qaS@# zLF-i2u-C1p536W{x;pmejr8?x`c6{=`}a*$c-Io$S6dURZK0!TsOeBG>`Q{E&jT8z zHw3%z9wxl<kTwk0M*j$<gBz&vNFD4eB533jD!ikKy*`SHHPew}b+J3_pfS&A@i;x~ zUv^R9{Y|v<#9=TgmOgw<<t7csZWT}C+Gy<*eeA-!op9M3dTiPV^xOS(+<O{oIuiT+ zLsab(72f;AUUrx&e4*>+j>2A%N;SXJZ3{+YZ#qVWcS6xAmSdpkNxJe6tzI-1``Ao+ zSi}(B)0PVFi=tn58wYLdXvJANxyN|yxyz|u9!-~;fL(Z(6ebr?1=)${Bv-0@nI7$H zgk9T%W?!Sid#2b+R?!95Y2%<t*uB@#KV>vdX)^yDKPtR~indmp0zYh^J8x56t*O|{ z1F7eIDm~N$`?(-$TSxy5n}+>VD79{&Vg}RseI#{iqQbkY{PTCvpy$+Zf+_Y7F*Nfv zb(>^{eaK!ayw{38X)+Uf?WYFs>37pv*o%|sj!tSbXEt`>omcqf8!cNf2Yn!&uKq=5 zES!s7=@k9;j|%U@Vn35jW4g~rud%0A=c!@O1=tl=&~61(cvlvCy(=xfOmpQdupjfJ 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 K{;w8W`u;CChwZBX literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libmikmod.dylib b/MacOSX/codecs/lib/libmikmod.dylib new file mode 100755 index 0000000000000000000000000000000000000000..7ed92ecfd8c4554f4339694c39cc8111d9482e69 GIT binary patch literal 877900 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 #CtEU>J8R~3oA-&ary)1?aRr3 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 literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libmpg123.dylib b/MacOSX/codecs/lib/libmpg123.dylib new file mode 100755 index 0000000000000000000000000000000000000000..f689ff4742654a706925fd01ece6210ccb25bb7c GIT binary patch literal 805966 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�-ku9FMY}$Jt<V?HHSyi`sVAX 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%0AC$n9pB0LPR4gCzEiF7GtF@`MLKc#@WvYfjQy*> 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 NZn=KMYf-u9{y#Im+y?*v literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libogg.dylib b/MacOSX/codecs/lib/libogg.dylib new file mode 100755 index 0000000000000000000000000000000000000000..c871163ab5d6c7e437815613019c519e064337fb GIT binary patch literal 152235 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 literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libopus.dylib b/MacOSX/codecs/lib/libopus.dylib new file mode 100755 index 0000000000000000000000000000000000000000..deab0724aa863a1e8910fd494e608d6f20080dac GIT binary patch literal 569548 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�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�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�q#p{(hjQpZNs#w`m8{ZoJa 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%0D=;<pEW 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 QEgJTx%ZK|e;zFJO1$82dk^lez literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libopusfile.dylib b/MacOSX/codecs/lib/libopusfile.dylib new file mode 100755 index 0000000000000000000000000000000000000000..9940498cae2764df92d8c2d756e58dfe4b86a586 GIT binary patch literal 236496 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�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%0Ah3Ib=s{)X}zrWJmu74KmVw7r2| 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 literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libvorbis.dylib b/MacOSX/codecs/lib/libvorbis.dylib new file mode 100755 index 0000000000000000000000000000000000000000..6ff42c55f8eb1b7c9a879b42b1b694be37ae11f6 GIT binary patch literal 747726 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¶LZ#`dYV7a6r$6=!cd0SJ& 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 |5@hE_MS` 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 QCrqbU%y*B?33yTSUjQ7d)&Kwi literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libvorbisfile.dylib b/MacOSX/codecs/lib/libvorbisfile.dylib new file mode 100755 index 0000000000000000000000000000000000000000..06f5a322bde7ea3d00e221ded26d383974b5ba79 GIT binary patch literal 203138 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 W(K7Vd+fmP)`|`sdb-!!kss8~aM>SLc literal 0 HcmV?d00001 diff --git a/MacOSX/codecs/lib/libxmp.dylib b/MacOSX/codecs/lib/libxmp.dylib new file mode 100755 index 0000000000000000000000000000000000000000..71e4bd9131f37dcb8b9e7f735ade72aae2470bbb GIT binary patch literal 1815769 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%0AEOTFP9AAtepO}@>BkvgJHH>0ube!mBXg}$`TYGo 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 {`&;Z{j$Z?&f}drx~8;3U6XA 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�CWEhY<B|4~}ZD$`;<gGixub9P^L*;5=@F37vVzS=_Nk&@&i76M9@ z<k&@oa3eELZ)r|%AIA$!*cqJZt(8a$&;JBOVm$wOKFV3h$MetQ-?M~Y@82n;zah%A zF8cdk{?<p|i=w}JTDurVKCj~RWPCnt7vGMt^Ufc4TjTv~&SyCz=XLTylH1M?Yf0%q zKfh%IzvZ`l;0b;w4*V+78mn9W209ia%q}NY{?$*GmS}zZ2@#tHe#ozZAGnjRZx4Kf z-w6Y^dE4Q8(r!kJX>1+`qpcrQG#MVSq_+-&rJf;MY-97Zf?c5<8(ADnImNLQ@>jrC zls<>_d{=VQEx_}7Z+9P+xi_i!D1X>S?{0rPn%);zaoBK5u!`g3<nURm;>9W;oiJ(u zr|{2hp7f=OcEveH*Hs0rU^NLP13R6L?x&x9N{T+e5uqb5p*Qwr=2uN&M8ps^i}h({ zB!K(CI}Kb<L|Tvin&pmV?&9WqBM#Q}tnHwee@i(i%rh1Rh9YHIV@2fs9$?>oQadu! z>8%l<MHgOrv6ucND2c#d3$Wsb1t~lJv2y_{cA;f>!Z{@8sSS&KzhEtnF9MdGKsZ(5 z6taFUgOttb^wVx<W=9!TWSqfy#$MsDhyzam<Kp@YKkTLVL26NZ`dP9;3g;O4hdZi# zo@Amcy-MLz4|o`WP64110Jv!cz_*SEV7~y!sx)ZauSY^0fF=RBWbS-=v1A0m#|?nh zaIuvb8MQoeR=8tpw=3z3V)GBJCTn@0Q#e>1LvD56|1+xxW87rafHyo{+7nzf1@n$E zvo5Mxd0J-fRH92Vb45-n7rhtI@^on?xNItJ;#VyTF047{!YQ?ntg7@cbX9AE0gf{B z%cenGB}k$gb&FjxrId$V^Ki=JPxB3Z6!tH4zOZmqPtn?tJ%@7&ZO$)1f*Y=f`g54j z4LAQhxQuqL`dRcS(WqgWS0g;;YZ<uRt-J+!rRcrvEo!QJsi^#MCzt(wA4^kuC6(ck zj$gIs^JEhl^T%e@r*1$c`yKXTey>d=6o#n;^CV1m7IdJ4OGg&BwI~n5WE|^U&51Di zx1zMqSz1RS?NCwLg_ic7p?taFqO^BgT5};S_L-6TPP4RhA#Hq7+TYpZ(au8JiA8DJ z|Aomh1zqfEpBRDpb4!aC(oQZa_dQFyyO4H9QMtg<IuNy8-z$pJt|3i$H5P*qa1HIo zC|w+YWgA7iv}yU{h3nqy2;tir1TsHIVGVM00N8rUjPADG8qmnJD5cTjNF(xQ8L`>$ z((?MqHuRtSu%r=r&5GSwF&~yhMm{Y0I!eV-yHyfF>o;?1zZy7~2JYm0IHxm&=#rk3 zA9aSz1_L!7I|9GYD39$!D_?C#PCmJ`Oy*k?N>8fBN{eS5M;kw>O!_es`WLo7Pv}7@ z$g<ZFrKCfw@cR2o^!Eg0t$_)7{o~@MQ<WGe^X5eJU-X^(4H;h4*S|Ut+D#bmcIP^0 zPct26BESD=ds&YIkKAw5sd%O9ktT}<Q-fL|?1P3wdub1U_x(yT-@Z>pBt>-_XE1|E z*-47(H07Zp-bd4=42sl<(o_YOi1u~dvSWn4wuchrkUp?=zlsmBuvl@CfFj1xL+pm( z8*L96S-@~w@6W8=NV;&BG4V%V!ot~8Y?1qFV6pI?^*1X|`en-V!B+_!*}7@3X1h3f zW71b(`SOSWo^i1;Z*#<}t5<5#FMbKX?+`?FJY_G^AMD$l@X{XxZ^H&7Y0zi3r3Km! z<U$pgwLwe$%G(A`7-@(=UI$2kvG4HHuL|%QvmI(W&Lu}WIfbFd1f6_psu~WAWVXgy zy8t?rnk_1;WR0l0ti>wJcnzC!SLpiMTV2<dYMENAu|ogb&Yz&e@YG$~$CWWPXz?!J zP#0KPloRjNm|@UQVy&fk4faQsywK!49_&`h)Odiali{Q2dAXc*H!297RDXfLK`7|> zKH!%oYXzyCD8Mpuh!kh<v9k}a-SS%_rMo>eUgM?e75bn;*0fA|Q8bzhHT)|fcOI`1 z_zpXv36(6o)d?dEF|}k@M|e0vO)>!T?UH^%ZCh&#O^1DRfylf@O1kDwks#R;4=7B` zYY1ac%x^fqk9$~I6*rgmy03<g{ljJ6_Bw8cZ6TrOxvHN2$*7DvRLtBxM)4JjRN3)8 zcz`r7n`KVq=N6md{XK7$R;?#H78MzRl5UT{i8$Wu$yK+fe@7N<xAmtdTkeO?Sa|-J zet&QB*>R5#Z7%gv7vTgYdFWhkZ7m-`>gJPKA8qgOM?UiZ-a?xG{e7bQr|&v!eBQ_3 z&+zYi(ZBn7eOB=e(cd$eqWYI6{4?_Wj(;V5PmR+5%HMpR8_9Pc|NhLs(<YUa%;w)0 z`1fP}3FhnlOOW=aqtc%x{3ps?$ls6iFVUs0mw2hK&?#<WD8x+%e%lw~8dE_oaH7bW z7=(&NRkf*oE*H{FYIEZr+PK@Gat|+QqZyl3<*hrJQ5!Z=X-kU`G#wlTF08d^Z{0@K zcU*cq=`1(zzJ@}lz^XQ!C=eZDbx22_)Rg(i!@BzNqTm<{tkdjj|B}tFwK}S9nuS{* zH650n=u$?y`!S%t-ek(ob~S&}YSvW86#06;Yb!-(9AJeFLVf<zb=Dk3ZzC7X!a0go zV5i)g9sHp_d+gy)x7sRPSZ#3^?Hl}AJ5=?`4VkrapH@;+&9t*gDtY=^J?@-)3XvoX zbsm~Y%W{Kku<yx*FP()b&JVk(BCwS5wI-^D${%znho7$CxBRxP<m`Di=7&{^?5I?R zwNu|JgsZq1LV_$}mHa6w?Ljf%GG}Mdp1?pxOx2iaur9n(pqQbpw&JD*#}D`DmtM3o zbPl#FE6!E}WU(9_$cpVunDUR|18J2=G%buinkV5#Rjr#_1OG~&3{CLB9T7?EAxnz7 zWlKtjqG#QvCB<8(i&MD=RXKFCk98X_u0-if#GFSxq$uk>QR!-uf{Q9J_e)!@z5YU6 z=2*RTHMQ`14O`2bYxk~tBX*D&t97XakE+YA?*v?$5W<j<dlZIA-%JA$_`-h5W$)}& z_4?EbSr%n#Q>OfG#sV~z>+yife#uJclM-l{W$DT5(GI%xGjJuAOwBz`E_HGaWo*$L zv%C@Y$5SkIVqr@+o^b*^fPY*0_dEWbFoC;g{Nq^zniPc5Vxtomw=QZt(62n2!H&%> zcPaB9<<^aA<T12eP8^(zu<zz*F)=XU8r1BK20;_jTmMZK+Q25M$YCoGG8SUAN^)&V zG-lpAue>C84Q9k{MIQy#1dxjCOrYkbBJ~I1boyStK}0Uxg^vo`&r2NW(5D8wCRi(4 z4?;;EnfVn{ARu^*&5I5d=gwCRdhQC$s;*(jGkWp1B|LYYI%(7ZieSt(FKm9$ycpDO zw+|aQ9fU;vE2ufwC&)$?4!;2#x#IQQUTtv(qn}1aPPz7PsEEyaSCG0Y;NFEfNIlL# z2|?vq*w(;T+{`F$liFr&l4U&k?k8VP){w6GvaZc%SF=?`p$OS;RQB_f{g|ffj9c@X zf5-=HZq($L=<3l;W}!K5liwxS&!~@XKD(ZNNNCZix*yIaEidO}YoZ$3Rf8qrMCp7U zf+Uk#?66uMDvU{=-<R5Vu#c0W((dk;#*Oc5FCDh5+)N@vZHHjv7RX4wFp?D;i<|16 zR5Pq4QQ+ogP{j2ulb+AFYW34o726>(YiCK{xRP@^lmzXy9V#X0ErM0Vh{<l<<%GLE z5VnN7k7_LomBdAA6)7f$BH`}xXlJ;Qa&4|&;Bt40GHq5;)z+Gz=WV!-p~_WjpWZc% z47|3(uNunbH&qfz?C*Yq8?IS4%akHrZbzSR>r6vqRhg1Hl{0CVC2)Dh9{Uw6?_L8I zVcep_*j#Tr&tun>BKeNr)pm$uA{N?v3_^<Eg|)jpdlxB!A6i{8uBd4>b?nr?q&<e$ zJw>=`YkOAS%$0VU$Hg(V(z&vjHyqV(U9$998%#D|cZ&KyR-UOl47Fi|+GAK*>CeT= zl*dcm&2MhHILvKo>IJ#WfpUyE)bR}M!caZ^573*qy1Xp+DjzgV@s3sLbnlNu?lrjz z5z~@PbZWmShV-<q$5N1VtrW6U?p{I5%V8{}$YG<4<+<RP6MKFrc=^J~Jyq@V#^%JL zj&5u2BShv!Hl4s)Z5*K`_tfdYa+Z=!&T|K}MP0B=OVp853ov#fj&e*{eqz$vS>-Kq z@b+9OV1E*}{|T^b1?*wVWEkwmWl28!ovw3c)zapWAPhM8DtFWW0(`nMeO{R&0hP7l z3I%QHn9<GRv3?XnIX}*Wr|st!gD=TRo9UXNIpb}RZodHdr-ea_<qo~7LDL3el6T84 z_w_FvAB~sW4MiXPZStih$?T-rWv4%!%zd~pzyWYw@7tGfG;Jf@zNA>z##t-CBYL`E zjD~ofBCLO}I}+U*iK~<^kJ=M0uY+^+xb+EZ?=8+<lDl3^{-0OUuS$k7bsVWA!bwz( z2y9TWf2&M|5g9>T(VoIfb&`oW@omk5@AF+i(ju|O{MwIgwe3sVFBpxb<*Fje1Psvh z>0%f%x-PVUU1c=iM#FfwU|2JA|5@lhgw9oAk!rGkoR@kdjX7Y!istF=NL6SU(hXZH z3X#n%f54%*n6{o&j{Inp<T488J5`d~Stw8GYS{tg?jD`v!?Y+uNz<YNAWQ{Dh{pD0 zbz@F+a7Xi&<Q}|1jm<3)(2-Wi^IHKeB?CWm9cATCnO&vz^MPt`$JrYXDkO(aUNzAj z+G_h|z5raM<@Z3gxmWDQt#HM`QF5r23tZMkS$jhUkCW{Dx2=DrQ1QV&;cq8NBlinU z0RQ;U@(09a^WzO%6x@wPK33f$=cRe+MCJrYcM?24J6Yxg)pnSzv+M+I=lNCf@xuMX z{7bQ>#*?!u2||NE<qX0qI!5IdCQn`B6nWCrBAf1(!(x>A=A@(sz!`G~sV^Om{<=!5 z>583ULpR<TBM%)@l`StnV?T!Y9MZvo4`K_2u?9&aj@=^h`i-YiP0_iOL`iD@E`CuZ zTQx!uync9Q)7e4%j^kEC=Ci3IIW)EDtGTz4T^)Vj1G)+-k(YaHQq|a52i82!Xl<Ka z2~)-s$*AoJcOE#R&8LsLG8UD|$C>0C#bJ%+qT71x*lo$wdC5a(`i)!thAqvZ;4fy$ z&BQlb3uF?vIkJQ!>D?qrsaZcI8Q(m!t!48f^i0jap%fnIPbJaX$6uP}|E2s!3G2$g ztNfxV{zbBe^Is{yNwGX)%iY4>nFo2|v8?Tg;9&FC{7}Z6YijE%P(Mc)1C&6lP6*bh z6Yst;vck+`_$ty10||yRpeZ?Ym6!enWG`UL1gxQ=?S4VBX#&_blSejuTWo~P8*Yy> ze~8Rf%XqF&6J=C&3&m(B2ky7?n_0b|W||B1)p-}_s>Y+F{*H5h(Wt-keh`WT&djtH zYB-eR(~$Pk<dLylLZDf`6bRiUMZ}yjYW3R3y6WALKX$-Von>be620xfW7&Ts5qQ{Q zV~k>i*ZjvE%4f!K6VNzN+Y}LN9ihA~^7@EaH<M9q@$r_CamI3a>pW4{ru;RgcA4KH z_tDazP1I?p|94STr~fmnu!M7@0p{OW`S<+$PdmVcY=U_Ag~wjFccZ!*h~<(A7gx$> zPrR;j_KC}8&-U~NO!+<7MkQOe#hO<q<9AiGwcJ(0%I>A@32+%HZlXnbcSZ8(pBsc- zQSO9+-lO~vy8F<^uYN>zjyIP7-}%-3_*DL9{OVF~#|i$E{v%8GzI33c)Z4KS*IZ4f zAzNeQ$FmL}f0#pj4&t5FPEj<7aM1~Hn16qo^BA)?@*4-ki-x)4jf;gt!%frtr`&lV zZwogLUWo6%o)==-R{Cw-@n3@rj2}Gjk>)=_sYz!Ll|LUTI$xCSNMzA?=XRS<Ve+X9 zq7x9<;(Ay!!<w-NVrpnrrcIg{eTf@>Yl7HX<Rh?cx1ibK7A{$637Ja5mMt?53{;Kq zf4JY&rjw#N|D)54Jz^hd&f<2OBC0E|L(=gYm-bXo2A6z+!PI1nri<1NvF-~dI^MdR z^7wAyC)uUnn&vdtr*Lxs^iokKo=}T;kB-EFk45W@KMs(2o;bZ&d*gU(DvB%SlMPrO zT69~l@kwrN?!8-3ldskI4T+|I9Rb;)=-_9TTYd?y-w;`rU$xCRb<TPnubg4}v@>a@ z-#hT8B73d?Q|Zji(gSV73FCuPnq*R}n-^l0rLXavd_(H`-$V%gQJ2lMfrkq{f0TOs z%)rI@^;8_>mB^9Ep7ME9%%<SzC=U4xQOVcx+_)5J3V!U`F|Fy;84st2ug9>$?B{1% z&3gvEr4cey7%}Rov!{_r{PB5pl;^LkdM=MWPLzMZLfp6QfdsIOEpNC<EU%&Rp&BAg zb>TRDfxAcE1D>bbQOmw&fGefz?9KkNn|QPBm-fwE3TA(EpAChdo~^NR-T8E(5Uy~h z5uZ)|#7gF=PZb)ohPrk#Y~rJd{3?K>RpnEol}~>q1zZcWGV~m0b+C0KLd9gN@_W+< zuAdOK=6$rV^uUG9FJl7ldM<q(kx?#pSz%Hk7d9a9;*DB0unXD~J>Y@AN%drG^Z3Lg zd;FV}irWS;?X5I0aIUxAow~MNBJ8$9iT?n?!pdgo%cQ8qIOCEWGvToHB)Bm_N!>*F zn;_)L_;MPON$Y(DV$o-RKKk<0Gx@@?8ox}1mIH?I3NNKKQw`}*PS+f)Gn`hhQ*fM^ z5uxX`AJcJc?wPmt_HAVJF~0(3GS>{<yfsh)q9#NIH?r(6rTM8=hGfCsyVVZfo8%Xb zv#M67lX&z@OM8HN{%k1}WKg45+6%rDzt5cIK;^-l9Cc^XvYN6=LVbx282UP5^6Tl@ z#wES>Cl8VAu9z&{nkU2TNBL||n^m$Sy_X~s#H{nWx4uAjO0n#Tm%HOeUD@+e0ie9? zoho&(S7gZf5Ase%?cjOP8h*XhOdWrODv)7sVhMGYP^yHqCDa*_Cb|Tv#B0~fl*tzu zk)QC9&r(Smqo(|#$D;d%$z5t3?$@;7iWh&8p{dPy>1NenB}x&M3^7an@Lhty4O~o| z`h$5f**BrL$H-=0<<d<21u)iii2!li*l(w$Hg{N4zy|O*1kna38@tS5qK1H%dWG~L zZ9AV1`wbPJNmuhL#DuXro;@PqGWiXg!iHxuHo&9;Q@u-em!lQ>kb&tLVyoGQV<qCl z#;5&`MJjBt&+ZUZKRsDV96#IZ%JRC9t{^7aC90`uo{UDH4>Xee`r$(TrX3J{2W6T- zFByI<cDk<fU8b<*<w%EIrHz~RzL`^6KKIrPTXP-!y5`&PfM%HNa6N4zkGf)~xw7Q& zJFew7=+bW{{jn(7=9iL#Hp%ZnsD$Hqi*)uaPIB|MkFzKJ%oY=K`30rimL{gYv?*3+ zccvHcM54PheHm!uaNldcH0G_Xgx)x=_yW|W;|lIAOy_Lk=zpK9EGc=tfA1yjqA2|% z{N)Il_S$;isH3W>3c-746WYo5aBig(`fhqX^+TqY%QCkzH&;tWG!KBp$;7`BbFf!) zqG_5V)66`L)^P5X!%AT=N}A5e(|^oT9wH^;BP#^nsGD=AoF%w=|D&khSS~bJ&}T{0 zlBkw41NBjXf_oY30VZ@VQY~>tXks4<8T-)eVqW!fhz8mC3*b1p_0sA&mj9<Mg_e}% zVghT^T8qtDm+(T!r<Aor^jh1YspYNShEyCjybz?P5Iox=IRfN62<Pj!L*LmoDAiEf zh}>DUAMX!r>hUmIJIsDPj;pvVv8gxyy%HR2w!=5@HCJ*Z{=H;IcQwAZbnmCzYi%;M z{xOGP39wapZK#HLYn>8a-(lkmzEyZOXLM?iZy8-vvZbRM!To9j`S^<<Vm-?^7g0C$ zrZ1*c$x?2zw*L~G9kDPxXS;nQd&{GC{64py5=hQo3JXK7g&pxy7>M!l7ccdoeZ1nO zHrvNvVW##m=&ivRtl+y~*ya*_Om=;YT4P>XJEWvp;c;rN=~mg+Wz!J?^3pe`jmC~d zs5gHYvMr2GS|L4)Go4Z#dGR~T7E^ECHqL}|TZhC@gtannO^Hxwc#;(|P=u=F50zS; z{T&K0d>mM^OUbSvN;g>QOLGGZcL9#P9u{YeKzQ4imuBZv#-NYqYI^&E(&BtsDeBr6 zl-YZ-$1^m>D}c<NwcE-)$wvwm`$iWrG4~7iVQ9?lEDH42mzCze=OXUOQ@!zgI%%#8 zAmiDeplaZ^x_md|A)zdHoeP{u;PIS1VN<gLH|H)VP`uqcN<a1B_w)O`*#CXM_wbni zWxwb5;$bV~a+$d#YDGF{dx+L+P6;e#Rpi9rWjW2(mSyIY>;fF5v2S{6CnGpKu+Qz} z+^_a~{!^Fwze>J*B}?OHohF8r(i|V)yD|Purp|-|VGQbYe1fg>Jjeu~+%M(7<nAkV z+a!!F3mTq*7X03FF67*#{S7Xi;C2a>EDP$V@z4a!Bq+V#V9CC>GN{5c<XJ#LBlcrh zs+Nwj$j5>mvf^05zo3S@3^FL@y30J=%O_V&Dfhk+-A{~TUF&$7%p>z-Yu%@%L-=*n zA}IB!ZhH1lr!krM{)P7E3ES9jZ`@DI%jK=3xxc+J>o@GaU(7o>T<#C9!fd`VD?{^f zJS!12?$$NBU1cBg8+SMVVL|c>{gui16O)r)*k73(9^d>E`ZuF{xYTZMgJ1j`fChME zbWJ(qckE<_`JwCqvcLO*#>Vfx{#c{N#P`rQmMpxuf#(Y7##|(~+mqd8Tz6gmxFV(# zp}$k3zcubJI|!YrW+xSbGLy@e6@t1SpZ)8-R+!9#3eNwo1>4iFDD>WZ=&uUxA?woQ zkRDxom2k6e=8GBdnu9<sMQ+Cp{TyO&7cOWDN@So=owrup!`rco(WnU12S|?8WHF-v z=G<obDL1P}Cs~1I%rLDlNiwmcPy^s~=TcT(|At}DOLvp&vxZQ~)I2FKSmDq34H8=! zMr=<kB+giiPbSDAy^b<eD~LgdvO-<?uz^yGBT$jq++v)|iIOg&XkY;0{K8mp(~!n^ z9vYRjaK=InC}9VB&-V@Ei#UPMYUH_KH8Oh+Oj00^5J<LEuui-}-!f(=N5kcRR{29S z{g`FZe#cf~T5kyKZ(wbW+9|bg)Yh-S$<)oe$;*J<DIn%ZmskGy7Hr<&<V$!w<!&wP z7AlKsOzy%pt#Zz?UuR+0y3gFj1V+J{$EM$&RqCz(067C|o@*-aFABCb5s$Fpx*I2J z%+j){@ZC|aA)QC1h$&xPqzZAz$asFrLOH5rQgq>1mx=Af*&oc$@p8SGqlupV4m4|= zB?yJsVjnGJ5eqS^r0gM+VY<nZnKwmP$jmdld;|}(^^mQ+K{zf;iTsD&9i4_R)DkBS zHqX~PlNzaELjn&A^X-LNARM@)b+j&-?js>K>!yuV&7Diqb7ep&&~~bXC~nKUv4RBE z#(XEc7$=R_r|-1Cz8N}Y-%gjb(M;d34WuJ`<Gm5%4b1c?tgORYtGuBKKTojYxyFiV zI|wjw&@Ks77C5hwXONKE2jm4-le9N;jSJ6>xbXEOTv)8v5k?+!`9WgBo9gVEe{qcX zBsH_4a=6ryx%fb?TIf2{y%#cs6T##Aclg407-T2>eg{;*IMX{{8Xi9O*$}|1b|&SB zN`$%Jau?;Bbrh8SB<1H|2f?B3b!5w=e+D4se-QH~u@HjA@A^Pv+K$4C&I3r8e1O-# z;2Y#JK7qo*nPbH2C@x$?uU35VL*#Sf^B*@!QL&jKWTD0_(HC2s^!NDo(idWL8+L3R z(9F4<7{egz5P!9Ou(PATEd*ewvJ*nV%A~vbRjQX-Z9Tb~@(K?u+~}=;2?82UD=O$v zc30H9Yj0`kKHtT3Dn8kzJm>oc8S}L9zcQDoUg}-IOm<mYTeb$B1}R=y?{}(N^qpX2 zEFE*h(w^Q!Z1!*80!86g#+h9-5#IJ8WabUOqEWr6_b46=3sTsa4QJM&OfG#gvu2Qp zI<k1%y9DK6MwH>Dz6Mfe95|TK;CQL!gbrqe4J=~pTQkH<ozFLW2o+2|I~@~g!pRrw zywq<=$5pW^YsiMN4<nw0)fMIUWr^|cdzs&$Q*A6y=P_ObK(m0NYhOP^*9^mWo+hu| zwHwhdN5nXW{<3KSN_*_Y`dYa7DdJs@QnQ$?6(=@7lGC);*s6mzwr~Iu<?p`@-s}xz znKaqx(^KV8PCu<0gz#n%9^U+qb4p7Nqwk_wq~e|V5|RhrQY_yMTWVXE^85|0hL_?r zfz~KoZVe8)R4S8R!LKmshci{lukKgixGxGd{~+j89(+yn>uq0lg5Rlm;BCKlLXHzR zQ`^wUjV#%0ItpsoXck<r=w^$K9M#&a+Q-xu4?7nCZ4V}>+-YFnB7l}LdPRPcBET%@ z^9SwRt$-h9ov?G6M#D|HN~_Gyelywg?}2O1oMNijtu#3ME+V`K@%v)M`n7^Y?UicP z+mW#m;8QiIMS^}hr>YWBO`|#T`mo<-M{$KWh>J9#{vdZ5YW(y{>TDX(hWf8?Kb?m} zl3m7n{Eh_a&8H?`r~!QP2p&&4lI$Mqx2Z93Ej1=jFx6@d1hYjG4X>OLwTO`yut8fJ zAU$RK^c{4~=o{{W;==Fv7<FMu#c%1tY21CSO)CbKZ!=E`wgX20MTmJH)FxJY3q<3! z-z2@_tqGD*Vr`hrF#%-)E0Y|m@-}=)%EEhh`D;>SQRVHgI;rV$6*M3WUmmksyQOmY zZ%vXl29^Exzd@>K%_73)LO}Etjq0smC$q6}oj#|Zq2<}HfC)A74r}Dgx_m|5pI1)C zRM}Ewi>}RXcr;31L^}Cq93V%XpWZJ>Ps86uwCR3A{vgszttG5FC93{33boIFPd|rC zvF1Mnohk)(shFx5ih}C)n}2gX|2VaU4O@AkSMzI$vUdvIVXT9g5{|vcXXcMRtZy8j zlaQHTYN6(*!se}9wINE0e&>9ZwQx`W7}qRs{ZCcSBDq6D2Ar^#yF4$Qxp&ChzH&^z zOD^SzyY%e72jES^;mou^?o9CG|K;(a^icD^?5ra&W1j_ZM`yF*(AU7wE_5US-dUr} zH<h3*@c&{^qH?0ULOHj-?sDbQD(B<f6lqdzOLpm(m);cbIekQj1`ynqcWCeml+n>n zbpA~4=SIOQ3zJxn@)r8oM2L?PHg)Mlo<cem%QLu9TF(m=U`<0~*}+=5rR8xaA`RSZ zunb{rHR@C4uS&B%t^<tM{x7U0LE4R*z=t!p`kf1vX{<<Yqh-25E<n;Mzy$@;kS1|h zue8AO66PL++LcVJK^4g^1!}xBk~-ZIU^h&)_8lR|sE`R$o)$U^$cd)S7SXrfml5?P zZJxw}P6cNDI6>FEb=b_qkU8w=rnqk|b;QL^{*l`S{T!9u0pm=l;bSm4u{Jw(jUE_A zYI^&h92wsx^`5PT?4AK$!cc689=#3X`)lpk*4ywR3w1<1KV;Oz)Vmes=;8;r+dR#9 z>*Xp+bM$r>)9bDODlu)t7cO2r*Gs*}zAr^@(tIM&cuG^v{ycfLG#9Z$fw&uD8wije zlU<wXW{J1vVz^u`#t)DGD2D$s>1~BC%Vlv}qByr|Cb}eum8@9Gi#>cKyYxE_aj5TZ zlhEWozWKL7mmne0tiRAuB51Z=&Ny&Rs3i7M{PsLs?%loX@%{rnH9Usx#d~>_lxVh6 z{F==z;~JRs6_|h}M)<(3`1*g?yXzqD2s5sNrUQb(@mw3T(nI6-uyGTF%ORTx(N{^Z z4Nb_Y{t#|PwZ^61@eFj3E0Lnw&E<~+dsHsiV(J}FE7x9igjJOmoJX$Qj}>;MrYhW_ zup7ahaN5#tZ^vM+Ns(@$y^~0{g<2!QD)(<B$vng$zR)2mmH9V<VD@Q+j3+y8ylSj_ zv5g${+Mw@Lx~sYYsK5}_8}F=Uhu$5|AE(C~W7&Hl23v^}jAZRAtvBVagVCBA?4e-^ zJBv8aDizsmo@4q?ChO|m&^S(FB?UE9o_(bFe2JXwo-4Db-4?-BUh`aOE~s=4?i`U3 zU6NammeN))n*98L(YcT6Za8->34w|4FmJqZaVP>tC;|n}j=ua(aTBgo>$hVezv@V* zl7qB@<v-r40(88Fzg7=)zL<XW)}LwiSOzP<T)1qJGXb-*k7c)Vy1?X1y$I@1CJVGN zfuvP1z0CkfUsBtlL@#|k^pu+}e&Ggs_!hQEnt@*G4vYfja<uY6T4Q3+b0qqQkUnXw z#ig%SFYI^xpm*1<QW#!GlWK(s(%14K;u-+A;+eOr#`d^u4MU|(2$j|ANMFXEM3;UU zrZ<T3b}BvSQhFwRr4slLEk;yvl8o!GMOtOfl$IXwUm3Pc;}6M0ewXr}Z@#mepA16P z8nF&*vveh(b*bisc%)$Z8#j_Bs`=NPA+Y^hvRO3L<@w$|-P*CHdZ|g;&30Z+$*_U3 zzN*l`y6DRfuM*hKMf@hM8#MS%8XR<3&#dReRxp`XCWc03H8lBsnlg@m#J8+Ga!n?B zR~xD_?+)>#@8*1oS4LKW$#P6FTP+|~iHCVX>jWo_rR?5CXi`Y>i_;<-97y^9aRZd` zQo2MXG_=E9HDpt$ta+l;5B0?4zE5(pOOa!6EktbJSD*;AF}+#IXZe+iznU&mVcgE$ z2eM}mLON|nq}hbc3lE{N$7uqIL8qpK<S1@5aB4`Drsa^Bes*z=kkzpJtF-BW=W|ds zoE!eLT9Tq%jP*!%2HnZ71SLx_uvW|U?WOyLi6IUUd-_qs5q+2HGqF%IMIBNNGKGrq zA1z>RDMP2C^2TRo>2S%`yt6jEXLrme8S&<zfh$R{fuC9BrT)g?9o>xc$mykhnMu5c zk7PeQg9v3(LcXmlEz@dcI)vqx-%%4~QbInH>(JZtnS!(+_1vwjF|JcgNb8Fg1BY=v zFIAX@+b%mSE%(-b8P3RI>6P3I(qZY+jX%P9`qBS>#RjAJ-<{;ihc}S6GfMB_Zvpk+ zg3%n^XV+40Y86l)bZVq*0J3~Ait9JASY*<75Hi$@6B_EHqhlomvFX}o$nI~=7LAWN z$tyQW>R?)cgnDE#I_{;`DMzTfIY5+;ra`Jn|Cm@K04~^&gn`t7h(Ov2Hn%*eTMKVK zqAn<6G_t>vFU&m=5>Z+7JXbOP6<*vXG=7(yDCn$uY}1&qZhHGz+<bH>Md#J?xJhJv z2=%-7Znd^HG%Tb&@!U-uJx1&3PdPaBGv-o!Fn666c(;V!IT8=$ss*{(Bg=ofC^h#{ z#k*Dc3&rsXln!pJD!dJy!jMf2Xup7=wtOc!7NC(u7!od<ml#QMZ<aLFDC7H}wVW>7 zgmZ^ypSk?)oQrt~vSbZ9^t<=&yZEi`a9!mvY&iGZS9N@bm%94$l7YvgX7+M+9d){I zU{loNACE-RV^x{^JUw$gsPr~m5A`40gSh5|COL-{qkFK9rg-Uzq!*2|B1ez&6XFt@ zd0ZY;HyLN{Cn0{(;anZ;hB}FtR6B|0a9Q<PZ<HgXxjH}8J6?7^sb}R<4>zAmV4`{I zQ^$n>yK|X%4Pw2B8WXQ^Fg(jXI2eAbeQ+@B*~j4WM=15WXO``pq^nN7cNgKVd0hda z-MNV@P|>)zE(<zrR_x1<dGm)NUQ_`ljvnvH5h9dU81EjfGma=v9I2*n;OR(ado38L z8&egE4t%dLX!p{gV+ZZa#751i9Nml*K`;G5(u)R7k)sFg1Oae^CIF)ctx64c^5hjG zZR^YRj>N}D;-NJ$)7(``b+hR0qf%>>`Z-cpj!z!pq$@olU;m1X4mDWuku4jt(n&M_ zP@k9jE^{lKr{lY2mj;$hLi-0<(jsiu+^h>`D(7vOrsz=Lv|LLm476b3wS$?FJJI$w zyCFqVN^&&>F}S0^Dc<@&adJZ2^X0Sz!>7%L_RExwkTFPo$sel7sgm4HpvuYL6z4vG z&0WUV%8ALYYso=B7ptG_SCEss>WC`eDG60F-BUM8Ubfqv>FK0oZv}GDAyGz6s8Kd& zAnx}f1I$#G6i0YV(+7GNoQatCKjc80NW44WTy|~HDL}=2kFGZS6q3tn(~5CJA-}iw zel@N`F@ed{P9Tfqhicidn*1X%q9Xg5=kj7i%S}Mr<~pXHG=LohhF-7zo)-ZX$t73O z5zGhy?u3%7^aW0ZM}wU`1&A8WW|cA=MChkuC8dK_H?q|c=p#2)jgKH(Cp!&(Ug9y} zF&t-An#l9feuM1yu|(uf1w5R<StZ;I2@-Ht32R0IH|MT*0b?^}^>8&2(V%~{y)Zlb za;Hmlbu|9Lk@&&fbIR|g_&Fo-%nWhF+-9X7vvl-oiFXpq5V>q=jn>^Tzxw0&<ftU9 zhVnDN1gsv#fV{N4Vj5@QbWLD6a~23BIIX^Y1XYX;@A$s)d!XXnH#L~9OV_R~>gs>1 ztFB9zkHin=aGRV*P2EU5U9ALe?mDF&)76HN{#22xxU2GSA91qkqmq87Y2XkvnWSU7 zdZ*GQ7t&RMrEdaJ)KwKL>gsut8eEssYYJW6liRCx!122;jKtF=p(^*)kyYZtQK`af z?n<RP^vxKRD&*(huGD5bK0A3Nbx-aBI7L+I@99EIs8KD>oupLPp5Kp3Rrhk{LEQD? zp;4*AL2eT@78}@LPf>KA;^Q>p0iX}hncgsO{_*aAvAZkgf->pIu7IQ!IgNnY72ONF z=sDQo(f7hsAM9Xz+3XXWPM&>6)A`HBLg-lRVQ(Y<quzENdf^^htZ5E@f}7sPn`zDa zd32@eH@#&WdP_@n8O_Y=Bm4i}vU`Z?ElVV7oqoT+u3edW%TDYqbr0bsXx8ZaXp?!j zB`Afz*pqML-5Yr0AGV(32Q^a)(a{t0gZBm`KIVb*m@3zq?#=rs^&jH?(GiDsxl!~B z7H!Xr{EknR*Wt^u8uCW(Y?IktVdJC3YL*LDgP$NK0`v`68oQ5Wo=lSyO4EM>ot9Mx z3*4Ma@MpwV=$_x`bxX0&vl&W(9XVeE|H+px*E>n(<3G44#-W3u;hhc*C&)$WkUf-w z*>Qx3;vv^4!+&wb-mA^*ENCoh>>x{tx1*1Ca`{~IcB5`!nLShMJu?oZ_u-Rl)h066 ztKcqjyJrw7u%LFU^0q!VkSJUrOb`*hU&y0FQG2heN*_4NUs*xH8paa*U&@<`m94+$ z5Z)ReJzQ>&$^DWxM;Gv-n@~I@IPh*-RNO&1OHc#9Z9U^^(w4UPHZy~1+~QoQxBLX; z>(-Rns%Pd$4lLqZ@?coSv_xgU_*<v&FhgNI?^1ZSj-0VKsUjV*v68)-w4AB8Xm0by z7+W^?c3YH5_h<lFk^S-?3iwX2`biktfiQHQ$~9C(W)K@R@Zk+2%|bH+cQ??-fulA1 zbHg(Ock?hBz8QdnQg!*T%0Hsj`@+@Kg}HYN&*5z)*NETz_mHBu2L&HT(VNR3*hXi9 z<x|v`$t0Hc`peBnVjfGQ>-q%}&h5!;!mr0V|Clzmt*DR?wrU)nSo9G!aHGT`<=$L$ z{m@=oDm{H4cUunbOX5P|qG>{&ulAHSY}O;UjhpS{uRk{4x!!Nw7G0U(Ik(q)G47Hl z4h`pILsTHg6aXW7T!@3|h#nW>YwKuw<e;PJe`va!Ja+No*H3GBS3ITWKac=Ude|uP zzcTSB1a@G4R1c3`3FA8RiY`z6z-VX%?)r@%{WM_`ReXOdbPI8k{fXLkfn0TO<b(HW zUjxZ0tQB}9r2<XgHSrVh#h!!vZ1nbP&~9!Oa;q*B>B66RDdFkt1}o~N-v~ANe__{E ziEm+C?XTgbw1M40^V31g{>8~ZmwD}968X9ME-*lLLWoyg^PcF1Hj3`qG~P^Wd<H*N zIH(G<G+U!J9|h1&TNH?`Ce^Ih`!bw_!X(++@!x@Xe`(V@s4w~F@)d81I{L>|P~k52 zrfts+lBeeoh6o=HFWES;{Z#UoHBGv31xFo*g>7WTpqA*Ei*{~XzhTkkL|3?I=f!x9 zMaPJ)Dh6_mMUNr6rWnZO7Ckmx9P<b9PL-Xk)5*nS6&RD9Kp?k=RX1!N%xPK{2r8j| z89zR6gr4lNztN_P!FfC|1wH9{9#f$r*s7H#eZUClx4bPYIMGY9ktf+(X%U}6^Q+P^ zSGb2QG^1NcaE2e;z-g)yImTagcI)y(lYBAObV+e!&y_W0d8QWK(`kHF-g(5{BGg_F zMN(#%H?HEZ@&M%EEHh&B*6GPNEahg3Hmo8bRjIKfhVpfU9J6E}<ZjA*&CYnQ|DoA* z$o}^-|FKK`CzCJNhy}(6v%Vyy**dsb=#S0*Zl#5A6yVp#vcGg8JAAIM$UayI`t_CB ztwo`#?01Sn)!ADJiR$Yo>j?7t$+jXVch@+t?<4Ccw>914W-Y%@uBxbMeJZ)C^32w~ z$yHTnw*FUgRrQ&zzhEe8)Gai)e~<t+d&*K?P0sG)n~ygodt<{5uQvB9{atNtrEcmN zSntFd`rG#M9*U2U#I@DOE_vcQkc6b;Ja@bf_~1n9Ss9ZWbv(vNKi_033A;X~ae%%L zK@r)zph&J;eIL~}(Rfv>uIqVjtX_<$zz<E(zEyzDV4vqir-|yKsH@1%bEngbqONvP zP;nub6iei)D~ghRJyG*{1P<G-N6I&<3U9~!<!3DQ=fP2lOZLP@qCpg|Y1EN;LGv&1 zcSmuKjQOp#{<+g!$SX@vM#jhR_cV~<&(V{|^^;+LM@^{@*p#Z531uFC=fdoc!C%-R z^o(FJx=zHJ=k67O$&au|fXQz~n3SR9>tQlA$&G9QO@_?W36EMU3bBUI)CpP`ituMB zO`Y(}=vc#Q>V$q`{k>tw4MK9qLVlC0&L~^;mcYKf9c9P~A?{8V?s73pxh9qDu33uR z;>cjQ`$`PS3Wj9$epgY^sEnk)DVZrFi>wAX{Gv8qQmkuU7mZSfjgq^tl9tmgMoGG~ z=zW2<mv^eQ1(y(c|E@YX`u+7XzuA31$5bW0-RTRu)bSbJhyQv{*pgBnAMqm3lO#sT zypVWrJGSQCK3=lp`?Jq~nTZ$K@JL`)K8>{|oqvP82b^>4b5y;!Xvm)P2U}n5I!M#+ zS)9V;HK<sVc89+vbJQbv|6q|fR%rPpHU7OHZW!9Iz^?3a2@u#>N_q>E{sdPb`#AZ= zN6BZR!EnhH6OV>>PXS&&_r08}xZDTEkvlq^)O#QK9K(n5ITquuadi7WdJH@d0(S5& zR_+MiyNlpm$l$pgmmdRf0{JFbKfLrk<O5?GoH`*pGVaZt$zd_awv2&AvkK@nJnbQp zS2%zyLlu#I=X&LKLmvr3WDFdBBU9|mGbT-)AH{<8_o!D066Rt8S6OfL_srOrNr=!A z{3B^zvb)l~fZF;Z^f*RM%@0%dz#k7su9W`=WE{0WPQF|vVXqh8B@Y=5H4b{)OWJt} z5}SaY<g@2*u4_7#cRxy(K2%nMm0Eu*7Ea@PQu|iC#ou%AX&!gPHSHeO#nSWqJ^8&= z{ysP5%9cJ<o-a31<*wgDZ28iMV)@u=i@nc#us*i*p)uSPe8c#jfjf`m4}d4{m^R|= zVfqZQg79SxU59)rXjJBd3k?H*Y>RUU*E)ga7wKNf#0ol8T1&D4$SzV`XmKKEUE<50 zr?@VQLknrQnX*%eV{&mIsT`-~L(>$h$cLsYbci+2a!M}9zMKzf1C#v&p|&oyyeIjN zZ@L@ZO()$?c(`r1b#9M2C<r=LP5Qu!{qF8n`r#G74LSq@-|~I#p7dF(GRZF0an`B_ zlS5~%x<5K=#=;gR5NkP%A-<Z2e_(pN>T9#?cJr#Q%(7d}t8P3T#y8zBam7z>6-qMx z;9u`SsY;QMhl0VTVG(SOVDO8}g)L=wcvP-BvI*x#I^d8EUv}&=@;R`F%H#X}E-hl& zjnH0EY&JnS*(H?E^45QvK?|DqBR%-d`&}*^{ZOoQFv}}kNZ<Qi7~vTXSZ>g>xIbiZ z^46QvA&YXEs5JX#OG5_<5U>3<HQG?Y(-O5Va)X_K7)69#SJDoSaLC4uA9cNef@rh* zC3VV3MJeLS>b7Xj@6x?7nSu!Q<D12Q$9rq0Se5Eua_H^ehL0fc!xxg>x?h~^uHv^m zt%4yuy<<Ng*)JYe8x$8<M0vbF`w`+CmgcZ=Sznol0v7tCTvj4GLxn?ipuC|UzYBJ4 z5;vpN@3r3^AxdL#b|{L#pC7;8x>dx~8olwVGT(u9#wf#9CA?$<!4Q&;MPGq^l^cB( z&@_rt=7R)jXlew}FwCt6>QnCXBh(qiMEZdz{?qcO2Gt3p3721QlXV?dLpS^zC*(mX zGE}&6_{fnX2m9W<tL?c2|25?}Jnd53da_jqcO??YUGw|Gxn<t`Jtg~+zbQY*st#Ay zj`1zquyrY{FP&u{p7kSX)tv9pziMn~R(5V}vH1Z5`OE30DDWCL@euqQ+%yR1eQWmV z%g2QC`rGj$c2Viv)V}6{@aC?QN_ouSeAdE@U9%SU{0`l1#qBNabcF?6Thk7}f~(Ye z5E67Leb`C`3u4Jk%(oaMut(gL?ZDu$kyMc$^v$7p8Nd-K;DfFzfj5?i?F-+k8Y7d! z*VTou&*#4w5^JEAGkWPW6h{x4hDy|K{305%H($q)@p8j^u@6WdDf3cm7@*{lF<$Bf z`-l;v9@z`rBNIne=~bj?9sYk=dk^@iitcaxZXpQ}xB)_M0Rn_-0-=OdB1@A9BEepH zz=8!e0Ym~DHVavoB|!<IqN3s>A}ab2dN4su08t~LprQms*fpqtO51Y(-|x)bWGT=4 zzQ51^N4R_M%$#Xw&YU@OX68(L<|de}#5@Tkn49QZFm}aK{pTt4s(?YYzl`|KQqq#^ z#Wzg`WecIOt9=)IM1(`v-GrW#mT=zl6H%0V!m|=+Q+Ejbkb67_c>=5Sz=vy6R0D_j z@*E=NmPWwSV?#7?{?J**kw(@CmRZW!x3Gm4evV<DVNB&Zm2EH-#R^upFOc^CQr%rM zSY4B9KZ^Nvu)2GoxD8gf9GU(fs;k<$$#)ByM)8bfDRqp|Ms_fXga5ZArii>rS1#vt z3U*(Ms8x2(_nG;1FfAZRn$>{ubU_L*Cr3iuf`xSS9?`ADT8ynGfCGO%SU1G$Z>%rl zesKFMj8zK>P%p6aE7Z9z-|hcBUuM~ajrCzj<U3Jlkj7y|6O{Y4U~AVYHDcR&7l<TN z$pS+uQN-5yd#@*b*l@-w#i({}0@Ax%2;mBFNDGkc+?T=B#mQxB*;K@7r`jVC$Mdlu zFG0rJvQf-nqa4wz=qTe-#&wDcvo@$IIko3Au3cGbJpTa8wu{O0A!XKh-eRNSy$Ww} zUpDU#7x!hjvd*}&|E8>W(Y=}?IZ9aRejXhQwp?0mM&Zyoq-q?K^#U{(dK$E%mcP;Q zVA?4sdERVv^qh$x%-m|ChY*5`Vc44pw9qeF#NtTE5O*K!C&oo!|GpZ$n-1Oq;I&`d z%9~vcU<^sG_Cqil`<*BtM*ph;zXyWp*N!RK>(o!O{8Imf$(Spv#ti`FE*Gu|B07YX zzKiZxIdu_;$VZn0BCfI3Cs0r?5CIkv4XbuPG6rUH;^sX-w4@R(P%xYj^8yrzQ%@|+ z+LB>FT$>P4`~G#p2I^r&*9q$^!#td9vHnxoK-VTeL<bv#;H%D)KQSE}G6Pv7M&&dX z%`4A+qe68!#HAJGqeN|9cpP#ork}$Y=hl%~qjL9M4QLjCj{p$MU`!$g2t^#>omnLs zdSzV$SP@A5->p!NNz`Lm%yto%rM-jz>?mu47k89pg5Q6D@Bj9!|1V)1;ZL!%5uVlf zz6ozGinP+*^!q<OTq{n&BQ;a<7Zt0-9$uqz7uVQ2;uq_bShT~wI4s*8Q*9R;&pLs! zQ+dI%v&^?34H{y&UiooPfRc}ADV}wBDvfW8lsAaqDDk^4G#3wsP2$IPDMGbBfhNUD zpMZLwP@;6g*<SoY`5%cLMZ3=w8im`48CX^%-G(c|Ypx21xPox(bt~WyR%vX6bZD9% zNvQ&qL6^XQ5OhV7P)3i=;fZ{?swpyYA#$aW2?~A_V!ur)bHw=l%fp}=%wXl_>=@J# z1a!ru;hRV5=n9Au!35*rfBsPf)o<%&OdOsNdr5v|kX(RX|B%#i3TcN6wTQVAeu#+) zAC)I|N<Z#4=;$&E*xz#^(nTHoak#L{1hBcepz3ItoAZNKOBm1Tq7+41XUCqa8%C!c zZRBI#EAnw!*05h(RemuiItK(min~R0#Qa@EjegUT6`xqZ6)&0TKmTu;7J;|cI?%mn zAw+Ryy;s{lB`POH-8ftuIUM`191Ex*u<eYr1-j()p*QaM{;6^}j*>iIju2zjg6(+m zU+rE={|v0%p(FIZX{?l3>R7;zq<fDJ@m^N%oe<)^qTYKgxTKEVqZEEbV>qhZMuLkQ z(K8&vl%)=|wH`=lN!;I04FR+=VcE1x>j5j>1#}29z}9g#^4p9h%AO(CwjDxgFBiAf zqFEsAss*Rbit>I8>s7}PU1n9bu%MoKBwDEU7pz3K7<P-s1JPGNHw}TFAfdSq(R~{m zTP;+P52=33VkUq|%$=OXNIPOUzm#2<FOKh$xb!u#Fs8)i@Ipl6KT!xPKA`(asIsiW zSFkn4f*nJz>zWY&-4>D20$8)a{G}D&NtRV}zayGI5~?FdegQl=>F5TVcP!!KltZvf z%g+2sy9n2pEX?kC>^&&{QY$=pdM_6klUgYt`>NB<Of`!Upe7gBDH37lxp|leA@ao~ z?J<fHBkyT%jfGzimO?bgp(>$XLk__zothH5bgqeDY4<5vEV<7;<Pi;MVP%5k@ChPG z3gGdVDo3`}{gLQ$*g?%~E*6x#CTqE!G)sYff9^zEUO|Ssgj-)c;2_Z5inNfJ6&1GC zbWRfZnja40WFwrnSYsTARQp`{o#D8gi~IA`CB;a<@ttQjkcSl0=hb>TAhmjZz20S7 zqHx&Uq*HEdy<BH84RM_5UXC<V`Qy4x%V{b*i2IiZp((yCfWw_RFF6j?ZqoS!QgF@l zljH0JfDXF}pPp$bLdd=J?3jvY0?18v>|p$?NLTJ|wsQ=^$w<jMIEM2e%gz6y>H=cz zZQRGiHLaCmsWt$>NJfxrS!VaQI|Q<sPLS6{G8iN<mK{&_(9SF(>@nc}LV3G9f`0@% z5Z3V`9RW~E{nFh|5fBUPGa#~lE&e?bfW>xkH0X;5M4HG+Fmxi`Jqj&|E`S5GaOru! zO*qMGaK1o9ipW37>98|<nJqBf>7ZD_G^9<ZWzGHuuB2TxY2ayV1_8!>=V&In0Ks_$ z`-VmWutF?zW6b0k)^XoBCd-BXWpeX@v%o+o{l<C@8KP|H-(s}*Zo_4PUL+^Y0m5Lj zj6stX)bnmYZdD_~soPhi%b61%V?RHynZCB4y)0;g@Vu}XYRJJ&<`IsICJ_~jokr<z z%!vp7;V*8G<RWPB`<vM@^`AH~AtAoO{t0w|szlAQGT*XH><h81Ocp2nRM&9Qg=HmD z3^qOaA35HX&4QmeUggAuE5r%s6Ie&bMNj~MIVB2N7zJ{!upm|-HV~+VKVM`95x7V? zF?l_i=G<+b?Z~vsvYH9hrqqd-dViHezXd%C6kv11dY!|vV*XI%%=_OhtCIyAR9z!Q z$ye(o&p=wilK0xml0RGOc~IoNy2`?QrM<elNl=pTCf>&`yjvV<a%2^<3yw#30h6=$ zV#M4Pj>|Vg{S&2G7K0NnnS-c~+!eLu<cC>>wqu=>3&}~;*LK?S7N_Gt5a+vph`po{ zjtlyMkrI(3?l`-~VDVy1ea>47V_aq&?BncHwI4=u@XBxma$Gvuue&!$_9SgfvHN{+ z9+pw=Ixcq2f|4u@yGC-Rz>am!&5%fvU=t1g0ck`HtgmpmNl)!wrY2_Zu(b}=KUA-1 z?$NA!x4&@?)KVOSJ?E_G1<!Lt6}Zc+0J%UcV%8qLHsuC-%I1)iarS}7)`KbU!Ew0S z)jH!mat~$|dvKe{#_F8rfIF_*YG#Nlgfm>@7GT&SCJHH5k_bNpw5&$qa09Nm$7Tx8 zkKoYtD;}7SgzN{r8Kp=aIdaUzE9OU>1tlVc@4keHiOCwC`!k&#>6|p?<}tZn)7cbG zRET{c18o5>)<W1r$DH?LX`jS)`r-P;K+Zh5+~Ud=f+Axfwq(N8bRp3_NECM`U%P$> zLSjx-pMon3UELE6u)vXxb+;aWVQ!I`UPsh9pNdro_sY9*QKbQ9x+zUWLj@x`9;WLy z1Ry4<L|(-Wzb8ZdIDSx@eOHJdr8@c@0^Rfdwf-JL7;G8R?b2retgccZm5XQ<T6VJc zA&F#1bXV}UZDnV`5ZoRP4^KwaulHa@3R6!~*-v)`OPPU=EyS?-kv7~cUrzI3z^~)G z1WgWb@)z+&G2&`OEEM;pBg2tNTPeWJKVBCTz><Fi>A`}{B!V?hM?@ecBYB|}QE=2$ zyt&VlyDd4t#(nQ%@jXgvRoG-<KmgzU5t;8EcyC3OL`p*ZoFA32KUrLei6q4vsurlN z^LSf(h&^SbPkY)K!TLk{FZaCgAnY4L9OFIYn7Hgj5DN-Tzoq)w)|;7~ZC8fG%ZT8x zPvS@{LroN&!9>R6YI~T~trl7eENx%{<L*&PCNX;(uA7FLb~9+VRNuIzmm?dQ;johB zaIVTNS(bxImg@Px01k6Mu?=(txFgw2uBdeOVU8ikJ0~v{9B(nP@3Ne6SoT@-4lA>> z)s1<FFH~i~7iKJFOaFBTYq}3-pY+X7$KkOxAIYUyaTwZZ*;g24I~9{-(=+^x@LBt+ z-MDVXC~u9Idz;oGfJ|D@&ueg`MCY_gQD>SHpoc;Zj!U?t5m$Y9W+Cm(Z{w%dBZk~H zM3OnoIjK10v|jc>Fg>zd%RWyAVD<KiXD>z%Xac<OJ&2j&-H)Y`y~=Xtk#dfn4vSkJ zvvtmh#YUH=wq5a}t=Lf0ii3To12PZoGrN#5J9|*N>WU9$a2k}w(&oD5fnWNKhIB*m zN8hjL)@6zjhFEa-hB%$JE1sEwH9?>|6BOY-Sua|wkjnr}B~!1$F#SD1fA`kkUG;Z6 zyr*ZMNpxhNc94h!_X{mPiYJ8-_Cuc@>%{F6L6LX^LC&mTDYMTwzPdv8sjpYfZGyse zTgr7Yq@aZThgLS2l%F;Taf{VRzF#0CqvB#iM;JYNOAqKT>FNL%2jtw-y5tGJ(PU%N zU^Bd>qzdl@;Z1>*&>vGGV+!qrH^fm?;<SDR_y~g#)XrP}Hs?SeQ!i`5CqmzbcDl~j z2;V69B4NwvI(aROyV;QbRxyu>xbR)YAK}iWlsauE(I?zaT|za-y2eIfPA}$)?7WV( zmqi2SBO()cmI<JW*{7u)b=#a6*jxJtavAK(9L7FU(3OzJsFom6kQ1Of96<eFNuuD2 zD|Qj=#H&u=BD$r$Eq3bqAuV)&i+?i800#Jv{{CHmcV|C=+{jT#NLNUq%3916@z1?{ z8?$v(<zB0N<>1yC;$;17oke!prk_R`FmkfS5A6^&cUV@rY~!&CBOzw!5bn`3xFLf- ztqX4TD-y7*U>fcofN;GS_Zxh&ml3f7_D>y_S(pLQ*s@Bs--Yf{*HIDRMF8EzC;@AA zw^?`p2se-m#So-1WX4lEa_=jEf8Hw5y<G3zH%nkSb-&`q5U02fMpt5>p?0m6F~y>v z&@;Pl`9OM!wQ$SI(Al{zmwbc{<?b!=bl|);=dRA|6~Gx}W8w_uXXV|rhtF@zYM1R# zOlKM9v@8>-@@^+0R;%`jh#iWEbBGj*h~v6Dh=~1gJF|;feGauED|uw;@D^Eck^@mV znvhf?Sm6PMM<;P@Nbp4UdhB+44#6Xn*E4+X3HC%GOkn4354lX2TdZyzkwA+oLIcM9 zcB9J-PZCy#<{w4${K5!GLorl>S)=epMhlA12gQeu$1KlgR9UcW&lH5Bj#Aj82!@vU zO`_fL2nfT&{Rs8KCcc951xkQ!@$;?!P2Svv5JGI15J7qK13GUWGdxSmo3F!p9eK0r zBcXb~p1jG<NkPSxcdfjc17bw=?wBOy&1mO6e~W4c7lF8+jkOg5CwYXVv&)ykcG)ct zyRVcv6-W`RL)^sc$(#sK5rCNWGAI1Jx77OynG=4eLi~ix3BM`iAb8)Uzdw^O7~MqM z$EZcAXaH0pSbEut`gk3bCtY<ZXGm#MmlN#ZQ$k?Fh}jIsI6!gwE!Xp#B<zRSsPB_4 zhV(I#tv&(?U46P^-nYTf9@hz-zpJ)X=*PwUqfXxRPLN{Uf0sAK{VKY=@g<<yW}o9N z%1a4Q3Ya5+S-Ew0{#dpe37Y+pLo=g%B4|h7T}_XCq#;`ahZ#O$=L@N6P(GFl)7lS% z?mGEY%0H>HJWy@9jrWM;l0UH`B}{T54Ze;kZf-l$N+geuD~_y#K`E3Qd|O;8vofA2 zse3$95_{vgJ%TlaRblcV_dLP%W>;Yky?y`u@Xg#tS-V5uuT$F;^8pQ;VzO$IvX0C< z&N{w^qzZ68Gv^dtZ-CO#z=b5_a}-aDIg-sC;DQhWQ~EdoFnf;F5nZUvKuE5I>bH*= zbrQ>zeVF2Arm>dSYdQ0Uz=$fDF+9W4z!hR6Huy-f@o??Cj2|uI^RjTb!bA-Z*NeA> z&1#o1;P;zF`xaVGxsT%$qH70;u3?pyQ(#WWAEK+eG3yk?*IPmEQhYsi<@^EmgHd)8 zwm1SsDQr2?(&c6+KZV*IXI`XQXYQ4ohaWj3#Maz3Fe;kAo=HuBsx$XTBmn&)njuu! zL+TVG+|eW^3N)BU;npoiW5ykk8@qemQ5pn(A_Ac!P!L#HFppExQ8w+d+#_IBp_B`g z{G3v|FOtacuFeu~rf1pg-WlTB<=!A&?sfWmbx3HryN47*reO__g0f}1yFiDVi#K!& z=XV-(fozSeGZkg$cN*cDi%P9AEo7mER&A&G8c6f`ol!Y0u7E7u4S1vw1An3=n5^(O z+Ky*j4?cL};M6!a7lz3-&gYpgYrGSxk4(p;rtwG))yR;dp`)PHJ^+x%13@4Cmw1Ra zR7R_db+A6xvy4TGs16<*T7&DM4%tqs6@Qu?Ife`tMTpss?S><aCns9N_1v=7=%G1= z5p{4iB7KO+Yn;nj1;aPa;qjxfEpBEb+XH<A($kcUs4Tw-2)DgOq(S)`<;wnngut_5 zWMO1wj_lQ70Yb~O25n}$*il_*!DvhD1}V-tG9J^{nIKgCB-#}T=-ZYa4aN><Y)%E% znAWq1&V?)r*jCXdE?US+-hC60Be8o6KY@y1eVuZGl?$n%0zwjWja0vLnxJ5|SldeU zN}FY$37g4rGgu?FKrZ0#W5<YY<<&@z(;Oq_jm8NsCsy0B7u!6C8)hX5PIF8ci^Abv zG1;G-mJLZG<L7_i>A-<5cRe{GCv%WP+`qmhMW}%+NN5@7ViE|mW49wpa7Hg{b1P~? znz>2TDjKO^RafYjLc4dJbzh-XrcvZ*jPGpt+=DWoij!fET>U0LlbnX>V``VNqVMzG z51fJ%&E&MKlN4wwXhr?Fb4G;yd~TEATu#h(&{v$f>r5M>1VFaXE_^pevXL;oRVv|@ zt%8NbEp*5_2MglN-W;4$PKuA#^Uhuur0;TPL6}hDkBe%<UJLZ&GD6YCow?hc1x68= z6Vc(CWOvmk8>1&HStJhJE)!`w4Jf^1#DF+_uuxGjR}1rha-xXg4BzfU*}y#}oVX20 zfH=dh1N4aiiv2$Wxdc!g&->;^OgAJtmy`agMnv@$WC&Z1yU$mcb6VkmX<bt;B#3QX zF&JD$L{3{~fVpRcZUDP3)Mz^vg-}F9(*@1z%f$u6g+V>Raw1Ux9TBqimWhTnWv>I3 z>l0Njk#ky6^D0(7q+aG*jKunYw3nYKLsOQ)JVw^QWzL6TMcZu5T#LA^0$0<aj!-?p zM55kc2W5jLjWfooMLp4%J<kZ@7rn4rR6l!nZA{(twSZoV&9Yne$7=M)HX_1q(sTiA zOw0aQFz*E5*vna-XPsHQCG*GjPMirTKFL5HOsq!VbY@pe-jTGNykq{Gp3mh}il@E6 zxuW1HL}<Rz+r$j&WvFJsWeOKvWM7STHu7{r@6^i)`3mQkuRpn7HA;5b75ckafA2;| z1IIzBt~<F-TF3nU>*RU>6!}+AuH%0~alv>gk~I1VsdF+|?XqRoo%3j+L%3@{#MIfj z<y%C^+6`r*xgi1f>wrvP4<PUs{>HkKAYc4IHn~e+<Xu2ChQY&YCfBbcZw>%4L?4n` z0yn6QTez~zDR+p;G*3++aOwLJug_w*pxZ!T^e?#pbj9_XXmH!B5}I4gktEkFqF$F? z-_i?w`-*K+qM%QVMtP(uOZRahi*g>#%e`H;7xbz*ExVDs0RQ>}mS7j1pnu#O<+2Sx zqa!TB{U3xiwj5OL4<UBlActbF1u{bG{0iL8EUqGn$|5c9Lj+RXt3(M@v8u!hM-ehu zVSV0=zANR_l=V0g_6$<FV&42bMMd0l-_cQho%1A8eLMFQV*Qut@<-@*a-yZvFUwJg zstM8F!`<enOZ|KqSl%kJ?BJ1F&!YgidcK^0dJS7pY+0nDJ^Y&EZLZSUKw41uXa#f~ z0x_aFESNLThv&?_)-vWYKexhBn!`r5^OwVKX;Uv$rf2d4+I)1|x3IYY0qVv~<C-(M z%dB%u8MBti<u1TF1Z;T{tZ~jD)MD;0kx6mc3J?zg0=D@WxM{a*L?bP!Qe8|N7gz^; zW2dkvRsiZA3Ljj@1F#5}*rbvq9IDu_<g%PoH<mJKoC^a8(^Zk~G^Aw@zyrHR=nc}n z2m?)yN*5HGfT@K;!2CcMxfX>sWe*TU^8Opt4R|ULs-I5_*`Ku%3<~pjtRoVZB!(1| z-VtO}e@mjY=+GI7N{bHsVmUHau)ow@ugS#3jwYJdJqQzfEJl@mpZ?_;jV8hT8Dk=B zn9{d?Q^0ZvArQ==uaRn4UKFt&v7H-+ilG=}b6~hGO$bw^BgN6)>wvA3U_9gx9t^v1 zBBS*j@>t}4^%+62D=ZVV69N#7_X)`0y}!;|a0NuBy!h8yB7%aK|Kb)I2;?X$PTR}D zzd)2SD8)#>5@Nt9L%66fe5*zbjniN>PG8X%Svp7XVnD3xv*)tX0Ez{wV1koL<X3Sv zhRY!EooFkgS7#g)cZuZXf*^s(dD(bJM4PCNWoU2D6p{okqqGtLI4sH#Ez9YIV2Zj5 zMB?FT2IfXwHD2n=wb=-i%V{IW=ho`0trO7ExaQ+SC#DRL&wQ@gXtY(9sPH>N$$cU3 z3W-f@%Hyt$&8U<6Mf#QT6KcH4F4qZsRoPeL7m30M_6mGqqcwhUZVVVKr3d!787lQe zCn5n(?!s_{XngK(nt;VQ27o1%Fx}j8y~S7DhylsI3SOj;^;RUuty4>wEE?gH?Z|+l zakv|Zzi6J>$U4u|UoCis0xPPybTK19{eW&2hDu?Bc{$R8Cln}99APlIkcs=Db>eU_ zunIOb2!IT?G{M`nnG~5&juTh7KUu_QGbf9*=Wa*J7_>E4$q8%^5LQB~^&A`}%kbrJ z730@wr!R_J$6`5TgUWAvSq@}a2+)CWi-ev4Q06LVK<ql~yBXajeg!(14ohh=NOmCh zz|BFAVrOzOV*vs5)bU$=Qq>alf%_@+Ja9LL{^h8uvai>_ou%}JQDxm-aneL|yF?|V z?F4h7)5U^bz54;ml;kp|?uv|87cPd3<rJAY1vb=;<|tTeM=(x>;TJbNE_@g;>PA!) z2sDW-={qsR*A=a}GR^Q^kRsA!^=y?9&S<f|itC+9is2&!*Hf<nks=XI)XY}KI+#^^ z3fQ$K^0bvPXLz*|UMwr_z>r?tN2`ejunCl#VRTxC@YXPpgeDtOU?O-&bZ2&8ZqBO= zdj>S(Dm%ea=94xnGYpRhzl<~F7aA<enZH?Y8U=4T0N@Df>@VS<$PxW3x&0_Q?JH3L zHZsTSHE3Z7h?Q!=yJ&p&i9$i*d*(ewR=x|MqzXxBVDk8M(NpKq((Vd-Mn+udEjof$ zK-8R|a^i!@BdEpw$_C~(djRqol`j$(l)sr-&V7~ruFVL+rf58wI~K^^Jg;F1h+(IH zfx`)hERDGzOS3@qSa83QCpdx6=|u8m2x~V%`ZcOj`ad%@r!vEg(u>*)Ny_YA3(^&} zw;Rz+o_1*J5Q#*{<D={4@t{<4y-jrb{*8vIR8MricK?RU_TlHE>&Sic#6D`2i5fvE zx&Jz2_n$DWi#7J`SL*jd#_zf4u6jITiPer_wSkJyPzs$-uNa0;sq&LoLr5;1Pj6it zPc6I79Ul$xW}E2Vw}yCI>%CJ#yjRwHcbDF_txO?93^=RsHBYYZ;jAkPE>F5*@PRxl zci7f(6;P`~UYyLTY)(c&>xJ<KJy6#W2K9Z4sE1r3lTr)0m|QE9(tkybNt%yx*>3no zL`M2JkIf7-2#Z|KA7fp`MBt$!$v?+~AlMy*5qxfcC7Q&Y2feCY(dE462&jZ;k935- zo#~8~#UUU5bg4`yoau1nup&OwxlbQT#I8CF{wdg-a2`Aw%nA_fY0$mO4SQk=>_&~* zUofiV3#gDTvmb*652j<V)T4tD*M0Hw4kqb&P9%ZNpP#X?-QmT`!&9G^M!Ii7o7paQ z$L+%8N+nE<_`rG{AR}85lCv1d5r>vZjJueR&IOi5P*TH&ukSI!@Z>mdFAGXE&bq)K zV32{5f)MUxbUkc`<wsuiR~JQcm7q)|r9qw3xL7pD=r|Xy9V}%9bwLuyPc=a_h73u` zPlO1`kC)*hFh&H%A`ci@cb19pI=fB?R}e1kI-!W-+7pwI`SRz);21J2TBd^?W5H=o zoGEydAfybUKn&aY0_{>-W7>&H0*9(=FD0KKK8bySbsd*|B&|7UNYC>#2kiRok|1)i zy8@_}0v>4UF3f7FJ@^knIee06f`X$o)aCgG8DgA80Au1dFM?bvCdBLHiM^A|)m6&# zWGtV8{u4?a+!{P^C}vd}ufJM|FYGjSl&+G=26rxsTq27dmn$xJuK2B^%iJ19YkE~X zC*_+(o3CS8qKjRl!fiXvP)d%evejI4B^s}=g9JOkNEHW#3d(bEt#1=t9qN)k!ws-+ zL?uk&WUPS<H(4*M>Pr>Y%k62c8rLlB&WQ-x2_9v$Gmbf5<JtmtGqe9;L#RZA_|><C zF6O<Uo~KYDo#zXFKO6iWB;+Rc?h>2zYA_uQwg#C?2zK0Uhp^vZn}?Y5hO9ukY-hi~ z8BC1DiqBDXouhnU`(J<*Nt+uKua^4Jjt_o@vAWb9TluDy_H|(4F#NbbXAKUlRfa3I ztFDsIuQxu4lWiFJ6bu2b8SeZ5tblf&*?b4EfGr>)1r%+q*QO2L94?)x4Tk6a9Gc#O zwjV>I<zUWdoNVi?Kr#*Xr@^p4i`gj-JA-8%WKA&CBT-?=3Fs1AO72|91Swr$dj;Xh z8M`B8d6Z2Mcs(03yT^jtlfc2J73Yi702o?Kc(Rz<#JXdEYzo~MyW;ktOi(FzB?q`7 zGB>#Z(b~iaN2Rc~?0oUT|6$rQMB1u6pU?C|6SyM%<>a82gA(Jw)Zib%fuU@m2qQe* zvGjQoJ|VIOKhd7S^<GTIf;D$75@(1}Q#Olx5aus<7em{>g^ijz=~l}~5>A(!dSpq$ z=@*PD$_3#6Ad)UBL=%U)GIBB4Pr@E9aPQ_GF`56ZlJfIUkAwK-vh(m03~FOH3=^G; z*mXEZ-Iha<2P$>B`a(b@02`A4A{*D=+(e_#68=Piou%|~+0;Eqx+H^f?4W(YsjBR; z`j?}$1HNFog0V|#@T=23_>{Ah?$DgX*hH-u>gg1D5JGf3XBm_5UBB}sJ4=`$3_?{F zv}7#}P8aiama?*7GHnV+v;xl=-WG4%A3nSt-X>TNAdD2Ej!@7kVI&xG>aEL4Jrh_@ zdKQlCs{^)xU*X7px=8j8qQO{Je?7u->5R8kcG3h6Y<AY56Rt}@BAq2RRJ#UxfjL!I znK+1s%I=64lu&3tju7{Hx^iH3rj*7cLJ?$@EnaB<g>VlKs3V17Td@bBTam@N$1oV9 zh1eF%fO@UZbW!yVw(`zWy25d8<}CFHa4>ntf>lgRif=50l}<1Qvbp=9YC_j^71ERX zC~6!w7H`IaTe7$!47+2+J0qzg_ZN<DLQ#Ru8Y05gO58uh%thzC`MXH2QmPbWr*|Mh zhg6RMVQI+UW%KPuiBK|^EgDpaFSB582v2=McCD#)!3E!SE};Mm4c-zS7KM2bw2Ih` zRAu+!6JgMBMWc=Q1@pD|l1sME5{84atlI@;DQdx4q);`YX>138I$e^&Ml>@a`)KS| zYG%Yo6hF9b#Qqb*B+($)|0YW*ghEPA#N?<$NCo1VzD7^4C^3`4nF6!|QRiY2bn$FN zJoU!Z4j{=0cd1~?YT;)D1uGNA&s^rFVyRy(;>lWg=T}mi(L_~kqMC^|QO8cQdeT~` zx>!ZmL55`P`}Bk#Wx|y7tVjy%yeNTdsyGOCULFL4Z&dyCu2!XF8yFV`q9|BQOtWS{ zf|zZ}Es`W94(AX+i4}G$Ajy5xzu8jHe(Jdhp=Vk#&YTnrmEomPPEpi~V`1u!jJ^*0 zLAFPY38LwR!?4p9DxJnNh6D#}KZhB|VRdDkvp@t^jffC*tYcF&t{&u=6cHDS!lc<) zkD3LHc(wuuY;blmX9-DXx<F+o*)ph*kg8oHqN3R-NF=Dmo9RFo<b;7*BBzUFrEVGy ztshAZn#U21Vwj}}a268?!Tm#mV;Ni`$Wg>G6-uDYcq%r{nU3LcvcAlvgsDnVcbaW> zyir;cHA27XDHWotVEy(;Kp`g(yc<=KUnlf0M@bYyYr7Wb3ot1J)61M+#&`vHvt{of znvr2Cz4S>yLA<yL*>0wnol&eqm7L9@wOOx?8Qc&Ku2)gh$W;)L0)`YEyK4FaOJyvA zvy?@GtrbLP!E9BX^D9YBwY{&BmuvziL(HVg1UN<70-R<hbvj+5WOBAq!r-7)*|||z zWCb}Bja4J!V`A{GbH&0@?~1!3OxzWGU0Oz*t7v)t+d}klP+s-KA@?eKj9w#WDZkLF zL`(*w>Kqj$CB&smKmgXoAeWb%#%FCexh#_sq1x5~JSAK$phPtaGBN6^7OaK?HG;K7 zk+P84JLzjhk?V!<Zn~cEZejt%sDR!_$_@(iu(;<+g!u#9>B|DJkCGvH`%pSIsSCwz zjxG@d*#o@DO?$WM#*wBJ*h-p&DyKA6?RVoH6yrVm{96-PkmZz{KGnsi(YJ&xc38Ck z#M1+@Fb%#;y^x?pr;GH&1s%t5GhQagaBTG8QTcKqaAu(3sE8D0F=Uc`-hz_Cuo2>M z5Dnrv2xTiDN1(o}j-52uAz$=^^%!%68dwT)kl#Yi7yX=wNz<fJS;{r%i_E>`K(i0; z)LU=ND$D(uITE4FQP^n4c;rWR9Jk&97{d`v^2gGoV17Td$a2jmMurIQO`r+rjh4#u zN1^&6q)*Eikn?Xu(fEEYPQ1B;FN0+|!>drlsPp8f$O~lw(N*9wJ#JeD0@^!eyk98e zKzjs@d)@h=ui?ius~84_6T-yFZu<Qv1m4QB!tad`xB}hJ83I>KKe_Q4&`%+Rv0g@r zk-BY5A%ZjNRZ6Iv82t0MSP?)fpMSz84qj)>|B(^zmsQ0qVY2*k->mxxdr9t$plc0? z%RM0IT1Qu`9;1W)j>a1s80y*tH-?*A3FMFMEs95pf}t@e3R{#dOWjGWp1^^gqBagY z&AhlvAi4#yxss45Za)2VEUwc1zU(34xPn7v6ydheFGRgZKMO@cykA2Y-z9{>fWDcD z3kFd1Ir7clyb4aTOkD5-w^OVoL)<Cqhc1pp>+L~80cR3r4XLuI@139;B<&O@v+eum z4R=&Zi#teFmhT2x=1t|nvzTL%mA;y!3FACY7ftjeJ<rn3{{pFz(vCeRIa>!7Otetw zioCwOc|^1W25TXw!Isk;j4@SqTG3(t(o~WB+Nb+DT?|DgtchqAeeG;jp3Lxl4tf|2 zgqfr3wWEG*9?IBJwxYWM@hj4G6u88e0$`++Io2ODIo2I*A=fu$h&XAIKQ9Kw!!@{r zkSm*Ns{j+nPV6E9G3Gdgp-~(mBFIYs!NvAS9qOv5<LFhuSa{FX-#G-K1R*tTG}v^_ z0g~XpoYAx8X=Imx(idLq4%A%khpCFbaZ((p851kB8jiOZGee?XaW;qL=@0}GRgtT! zayO&NcKKSf<|P75Uuo4ZJfK-~CiP7>neQI`U7^3X=<kp9_ZSqI@K5RGe1t`yw8XTX z!Yr@6rXCykVzB%LUkIorT-1dvV5$doDNj~LZ`RRq!}A3}NZE#IB|1clCp}NvQ;SxU zY$WMc>ZJPs2NM)!CirxceI4Sct}Kq@%!3>c2XWP+Blv(4xF6X>W0J2~h>Y&7dqp3V zmcyYq&F4VwRH~E=zU^y}+;w`yUbZ}{yWR>Yu4`VV)Wr@ey2$={H&fNT9gz`^4njj> z{1Qz`@8FCf0>{TxJB$mF5sb_iQDo&AB{BJ9rZ;yt#@+cC4u#ptk?wsQk+2b6*hQav z+OwIp6*Xs3?KOzWE*E01O{!DuG~Xu8Azsa3F6r&~X4jB0Fr{t`{6P<%h@3IvNMj$u z6r@^ojH^cI<xUqfX5;8xy`|nj<&+o%Fy|=wL<29!70|*|hD{XAoFu%|#S~LK6GU23 zrh-y8zOF9rSdtsL2eE`eIfW6*{5nwTqICJlDc5QpD*)|DKyjq~&J!_|jj9Xn8{v<& ziW-xlGO2Vu9VG;Hlpe&dx<tc%BGGchpL2nr5OYMOeG{AtmQByw32k;Ip2=xSN?eR| z3q`05iO6Y8?_7Gre7t~;l70^eKbR3<3Ng|zOZb_jUxxHc5`JcD8H=hs%cDK+?(nmg zu@HuwC*()tnT?<!pjSp=m=OEanLScE&6=d{*u9xFaiHcstgg(+xe<Y8UQ`50#J0Oe zTt+zA=*m2klA$iz1VC5j*}{=Vr@+8Si4?V{3JH7C@lzR=U%M(OLe}o8vQrs?SeSzG z3+)?R#weaG`TaKNidpC=jAXcMLSF8H{tR!Yh>bYh#cE&4`1xy?mP>q_BOEwcg6T6w z5&NF`Qw8;iY(!>BV#Q~^-7^;&W=FNSr4L35aQ?obx@ZB@DX_iS5CgKfS241YqIAa7 z2hT7(WAJ3-c>qrip2c{qcqD~9$dONo2d)WP@=|gW)pZ7&(5@~aZ=V#~zF5e)yTmQP zu1uh)!Ro@1VYu%}@sO@?QIPPO99CQF%Cy>cuZOcKAZm}eGH2L!GlFn_DIv{;fUIz3 zPJq9eV5Mj`BOJh$*;bBAB*SXolAvt~x?Fyn`2D;qGX{`t0pocNU8-IQD)sN&B^qKs z+m(Bw0aZklH`s~ue04nuWAOK&HFN=bL1?KLwlK?p-qAg$vzUNfXF1k+1hY9`m8F`| zbQ^=$R}}8z6f{p{0Z_RX1A@7aIZN?7n%=rhGIWj*zn5LR-)bFlLOIP`pAT~RgS!yZ zK9_v5l)qvX0erh44M0fURk8-YtQ|Xvt8BY;N%bn3NXcyYaH>_@Nfd{&lZEm~DFd)9 zh+mdktRhqYm=bHN;u3k?Y(rn$gZ-EK6ii3~8p__f!g5jvGKioubEI$um6?Yz;s|A? zREh49PN~df=C(5acFx7oZQQC;6Ph!sNNtvAsBb#f75`*=oPDtt+V2HzsEfJ^)sdJ@ zeu;oW`+e}%@h%1v9iwEa&JyB~*jP}X+z<|l*Vky)?`;EfVs`qTC?SgKTE~qdL;D`7 z*%Z8L-fU+XGeTD^S%Ek1lgF>bvQ@qc_yW^muuw%K0|FH;5Ttxr-!{3?m~=)Rf5x`c zI41WT3Tdmt_(M2c{f=K;CWhZ+VfkS0CoowH5V@31G?MC^b~ZC=%--R?=QAoe!$8=g zvq+`fLlA7)Z$KD}XGos+6%dD{>gDEc^bi!oJs-tLlEuem==vAgTnWA94F-;q0(@it zjqpKsFr8C~?_lGKWe4Op?rE9dy-eON;}FhSD3*&ijqJ^hbTR6t$^D&n1~?|*=8KW> z&`~)>f{x6%X|{QxN-3BL@2jsd508SQU)AskD+};!9Cn9i#z2&6BD1Q>5P}rSBouAa ztDv_O$inywRr{z=%^S+9%oJpjFKRC(9ab+fS?pp^7jqwvj>cb~lGR#-d<7agbD;?F z5j}va&1`-e{7PfR;jx~RS!sd;J`l|2J;p`<S{2c$jY{51fV|t-zWUm~b94+&$sI-U zg$zORCVHs^1@#A8eC$#d<=M^kl)t-Nzm+O~7a5M!hzkxw3RsI!8IVvO5`^n?QCAcJ z%xEziNVr3Y=s{8C*(*>$Xu!(|EmwXkP8pr%p}JJ+V%(7ZDgrrT#Ec#aGm5qfsJTBe zkF*8Mu=33%S*BwXIYMNjL(;ms_&Ia|&&NPHv|3g6RR|G<E6KqZ(U1YBQ}~AzGF5Mv zKM^lMt4+f>;H(n`d$2ZUy|hNGjOBz^dtAe@u8ge;zoN5=MP<uLUa})riwkij?MBNf zNF6z&MB#-<Rl@w`6~eAWTm&K-g3JpgkyCrYdssH|p0KuZ%*ppmBh9d$A_4K6EF^z* z@eo$<7$yz%qn}v+qrFz$9>3#jN4A?Xt7vy*#|HEuaq5I9pG_N`qi#hySQZLe6JgNI z)*+%Y#zD(zmpPnha<4;VEbn5D?Z(YItN{%pAW91{ivA4=8lWc2X@?PtJuM3dBmd4l zN`P}1N1fSjEOUv2AHUFPaR*gpq|hKPY~{^aPD2|EgZpV7tKeQ%m9jI}7xPaG&Bc{V z>|9?*oU&F>hfU9XeE7Ai>A)gUJ01DLUa%?mD1;xPg}sS6L)$A9EPIhH#%g__i3ll| z!?HoF^B|w8KoHjKb6;`hZg9QW^aCu@6B5F}dcGakw;_$q`b0G(NGNieqo~M-f@3&8 zvm>!g-^?{S+Huj9z1=+!4Ues8+$73|c3Hj>WGX3#*kW~`05=8z_YCTKYJs243?_ae z-S`q)5JF@gR#u1`NZ=>bLm#0Rw8W>_%8N5mxo|jwJ7XV)1H`RFp{-ZVyk?sMZdOOo zEO)AS9Rr?Swx8ce36Kvl-fI>Th8%Kpv@3g;`z{bH2xu#?;Ie$j1`w4YERgcrlZ0Ib zRVzbScw0FaH^kywJPXT1DuwVDqzAHkmBX~qBZ?~o^&z+DHlieSxz9B!I+$cIy&9mM zlzBUo5R$N*{7GA7MbSvYkzb6wSh5!%ksMoWrO%CUZd{B2*v`qds!M)DTUDHFz_dQv z25`CMi6sQa3fNE|!#kmTT9xH_FrD0jikb#>`;Hq$qZHh3PF(q0z`@gQVr%)Q5R<3` z9SNybsF**52P7qIa}v;RNM}<WyjX&B%dttu38EM8IxgcHDJ<K(jcnPs?BS4(rfHVv z)lHV?lPp%Xh$?g^j2xD$1<eHaDFAXz!)#U2j<UH7(|4VzOKwEpp#i0O1B{@5)*7c9 z2q=YWcCa8V<UJ~}xPfC3)Jv$DP}Xows&$OMUWG4=!L6Oy>*X3x&`_No4D>Wj+N~~} zf;4*V7BQ*q!l)l9A&^v@<FZ_ka%RTCPT9N`loH~C3ohYeQ3b_=l{hCZxsxiZWkO|z zWST-(LeYj*(a-B$wU10dI$f+J_mPc^vQ@^Q`GDp~otlNF!2QSLf?}lw%6!Xu3I#z! zl%yYZ@qS`BtAG@C%N7LY3Of&#I<aAB29Lm6<*qu~)#nJYXg<sUtVqP2jEI~&SXR4T z?LZ(^mbLJxbd5BE(HUmm0fTfIfUB}_D8fo#-nyi`#q-;JGj*}kvY7betY|gKG>$33 z>|OTiX^zA>I$0$lO<eL=m*A{2byM!TX^z~r?5TMnJ+)PE2D1=kETkAK^R)`4F}^6z zoWOfpe%@Nepe}-}iQ+IF9OHC|8!qRycI-^p<IG#FZZeM_E@j=!q_1*+*Gt$JybY2H zsY~8BjU?*!6{^g(zHiQptFs|kw;9r?7Hvli<QQTi@CbNl9}dv6v+jnHK+K{%IAjZ1 zp>-@X@$d=^XLbR*>A&kBxGIao!fd~#b)HAzsh{L^;xfgM8-Mgod*}7`T~2yHFA)|P znTb<BP^A_X(UpsHf*YK98<KZe;hg)4XQv<+qMUTbZdHeVp_)S3<}4Cj%+VG&@=QQU zT%)v<v{_A@S=d^qZroWpqQc+AnYT<ALPRohZ<G7$X22hXjoHMni@(XDK&nezU?^99 zdU1fvUM0F*xhuyQjf2JdsST-WG|BkU3pi8UX?A26yQem1p&XWFYT;XC8eDu#VSf=k z-aQ!^!=0eH_kqV(T3%5qEwAEPiRU$tG9;>3r(vA2@+#Id1{{Ve;F2A^mZ}Bq`H2~C z;c8Sy-BfvgS4IxbT}Do$Ee6o(>ujB8knpsI*hTg`P>9>Ua=HkFbmwszb>lfuzbo;q z`<@3cYeKYpMaXs8uNw|IE?F<7tBa_d(%Eht$00dVR=Sf#&9F9&LU@*n<^i6sN;WJs z+1kxmBs)1DI`Ifzk2K$U$t2{<hEl$avtDW}+>z4V#(JrVaI5NaZ0W-;MI9~b#tPfT zX0x)P13HaGXsH8A1VTqaBXmEWG58*XkO%R$;yHw81)hC)G(1fJ(;iPRJi$26;(G-i zXYOhaXJwd~$*$1&A_-lRkmH=oTv3@}iY%O9_M8%kDRx{!d1wN|W!{OPrn$4RRepkJ z4?}ZhsLNc*5N@Ftg1O@i>@pU-O9+@Y0&VU^!jZc{qg($);;wX5V_Eq^pmMlLEgWw4 z<N*>h*h0%Io~Ic}FO4h<lQnqmgg*=q*uJ{oagK%KN)f)YUn9~yDRiAJ%%aQW=}*_0 zLJM7HPmFNUMjhRaR69*CGZrb(V}v7^U$FKDX5bM_Ay|7^cVppbv!@yXxa(zQqwLpm z`x-7tDq6S|z94ObyuRTobT&qUwZ|NnqzMsH-SV9v>o>|_z_L20%yD@XPy-W4!;uY> zF2sd(8?#?SEXTzZ0w<kSS8~_qx3zUs0-+DPoyQ<CvOq>go9<}@<wyZYDy2|T*p=ox z<TgyfRwyN+k4n+OQqB?Lu}JI*&HmMub;))yI=3=uZw`u*sb!`#$^DCoKZeA)5Mrr@ zO@=A6-l5;^@Z)=e{%(W*V{>PumZR^@vN0qq#7AB9IJ%OwBse%^+dkkjI8?cNH9_|a z(VAg?LT}?kLKYr`$hxHhro2wdcsMESelz&F+r2#axzFv?KdapN{HnlM8!Vf;i2Kp< z^Y(G(s4n`BG+^1?@S<Ay1wOILDYif5=k2E8i-Vd{M%E3pa&;yDk_aiHt``^DCOd&c zeQQADP}Bmi(TydJ`ZnZXdr(?PRP9ORDi;vlHA2;rEW7izd&a|6Zyy@%8?rv{18)Ut zIITdMH4(sbO}b-IAu<E+BD)oWKiPdW?4e9Wo);7L*EXw9FEhh-IXXwR4sDYAcV;El z$KlL9>#{|y5~Gbc?{oX~ApdjcAqzJ5qGDvB+ohDE>Xcvz2Y;P$jt}}-;irBi%H>#8 zKmaN51}F>L<55Fh;QbvQGP1*-2yb@>G(MPj@Eiy$ER+x!J=|yRVHoZ_vz0(}t6IeA zDVxr*$c#-EPGL0@Qtc80M%^lV9FjvIzDCr2jn==ME`}0cLU@I2#r-Db_lfii^s?Q; zvXv0fQBZO_UZ{k#lu4L2fo+OeLqApsYqpC}AjmDuiBQrw1&5_b0BmJBdhK+yx&lnz zyc`rfuT6Ttm?~ho5k_o9ri(<T_HoPu>%3^-k0=kh=z(?Kr{bJ15yI&rH0`Ox0g;VH zb1Rn&5Xl&DklQvpmh^1c@0dW1E%9&#y;4^pux1kVBCSnA(}I%1GHsU|=d=k8wWdTh z$#qwnqm<g?IvtD(W4Qz}bi@#gLDLvG>?*1v3(7@S%m$)EaZ@)TkW>?azJqqPyTM#F z(XRQTbW#P!+9o=Mw=|%tF7C+O1ew89c=k1R=z+P<Q61cB3OHa)scr8p;dk;&B<8#@ zx%U9KdBSg`PP)%D09Vy=zat@r-zy4KDDIsTbPJ%+rB?7OHvWCc1qCm>frH2*E7FFm zh_iR+CON%SmzY4TTyPz#m!-<iQ4AnTZ5Qm%$rk~v=}4OhNlX?|acYFTKu0elJI6)E zLLK-O=?{A`3Q9?`Y+9y;(g-H{WjI<!q=OJ4Vwyx-5Y9?CG5tUSa`R+UD27pF$4s&* z$h5%OB)xP_@x^!<b@9w@zmAzy0h<x5Neq<PWCNJ)+vypRUnas(Ew#WYDncFxIyhQo z?;Ffv(Hi(UOPHh6MPDe`#L3S^oanHgaF;M4RFC$w5~JMvOk9Tu&Zl<>7mksN>GXQx z!gfJ1`F;y7hy!6fMiPl*B$BPIluahIp<IN-D5x%aiX|+tIlyHoh5ZFp(mQzG$MY4Q zf)Mw|_`Y=2a}e&I@ce?ub5)oL@>?Vx=Su<s`{zCDD2qjna3k?#lheh|kr0#IoekBF zo!?yM2P{1qz)h+vY9e~!keU^@QUVI>wgbv19h*DbYj3&m0sSk=_}jVSa)Ul4{IdOK zbu1+b+A1O)BK_n|%zADSCP_|ACp6KpP8ZRhTx3NMHt^!xGn%r^NYjU!Xd!0_TO?T& zTV2eaB19|z7;1mQud((JOcj}3nOaKNtW*d#)609qI|8>WqJ3(&;`@Wz4fu^bKiORS zK0cb%zJuS!wQt~8t$n#}iMFWj%Z`v$9!?JN@uue)d<cEmXizeQ9}bI9bE1P*8pN<= zbEEwXGp~|=>=$u1HMngDBYV9FBo5J&+f4&)q;lpkbC*+iR)rWWIE?7P3I>)V`WH6e z;H$QkCVcYC=uZ%}=pj;$2xYSK_rVgYy#}Gu&sJ`t_rt=QN3Mh3!fM1V!rL9<-H_13 zg!kz>Z*}90CbsgX3_AM7W$4OTmZ)hC`#AwZz&>`Sf}1Y+i_2SK^XC`UeiChl4UaW# zgbMaBT+UJ!!m+pFHxuO2W#t7hKwl1j+c9%alk*}vF4+5!kS?YL5vinNnyrjEP2uci zw`wnDsGYeciCoo1^XO9|tH)RdflFA7i-F?3V7GuL#xfjsqShgh=;3?}yDH$JzPK~V z&gkk(!X!TBdaS#{Lx#`X>}e0L{4&OtXm2b)_Q4%&XCoQ{%u0&7Kve-KBo$Z3;keq* zplhtXT|5IRYywVm*e~G=a#4m_^cjOb+6j_!nKLSC!d)ATre@H{RDzA-WK+@G2=8?! zSyV_}Py&}eoRU5yFEzWz+${vxxd@f_t>r~1xve4GV;Vsl<yHa*`D5XP28E-;=q>rB zkne}$MlonKK-`?k1{c0<fo7EWzs5bE>Y~+1!&&ej8Z;w|DrQB4&x82pGYx@!xO+eN zEXQ|_9!?k@&0;(^{44NSFXO((RCrh~hw;=@O~Rh7X82>44vNDOEq8Aqy<WZ)Du^|z zYX1yz)|^r89sq}~_tYEUbmCgmOSm%2x~JHY9kI130H@)=?1}mVXr8aoj*i`1BbXt! zomSvFjfRlmYt)T<9F~aM{RMj*dvn&+-tO3~Z=JZ<bk=L&)I0$!=gX|;2n;iP_`L@q zeAnvlV0ZxTE;?Kg-mzC?g;^^y^E`-pI`#&3ss%&wg%H<x!&Zt-vM`=Z>Fc;${u_=0 z?cKTxL5xTINW4K28-llUpa;*FqJqGLxB<{sV@ffpnY)1wBq}iCsU<0AiyG@l^02F( zuTa&3j~Ir6M3y0CWh+)G6x*>BX3EW)0%Wm_u7fZXseA}P&kG1aE&@udLRo4=j*LDN zVRHRBB>6WHORwwXy6`LKClqS*f%Hb7S4%M!S~jT#6HsxNZO)6p2gC*T!VCcyyzzP^ zh!?s}vSRmmd{dFM9wr>sf?Loc7`!QET*0XI9RZ*EaVSzKcou#`NbJB6lK`X+$NDO1 ziOE*gFoZraI$W#-8?JPX64&I^!jV)t6DoJn#l$8!&2qw46_uZNf;(Y_;XSDn$6Y_H zVf~`Py|+jK?^c<+^HT;x3%cY{M08qEf^v93GkaLRj_?KZl9(t`0}Tav-eD|NJ1o1M zFT`~R&BBiSZl~plY0G*7=IzrBrCX|r0;CCSlv9?2p3&XxR+;&CBCqW*c5f?h=-k3} za}Ea0MJ=6{?Ya>nBiy~P<WudK5#!9>&iTWipJQVuEd38hM+TS}jDDnFb~Ux>^b_OC zA_2D>OBFPlV4bEuQT~^DvizKSyY1VB=(TDu%Zi`yAJ*WuLt7Aut537a9pmH9XErhC zG;-!u+s5}bd^0}=DW1=05|I;*3~Xcj;;8rb^TV4&!7V_{D4cUf43@rezGh!lW~`_% z_S;#?ZI<m(`If^%;<p@0bmo;Oi=Er*Vy*xOnJ(b#cs%DYmI%2m2-sNWC8?nFv!e2M zv6Y0@ORjHA>F|Y1Fw!KpN$XcS=^Nqa(4QR=W@Z;y5%Y>=C)&lTjjpG!%nZ3bET^G$ zGxu?5&}?HpaH*IjL%)h$-|~|7kb>f5&w94lnaiRCPH`zhQuQ-EoOzom&9r&5ZoQr* z7ln4&3elfD??cX}!GKrc?~0ySaXcK^QyR)%HnSC}L{It#B!SuBhv-$P3)}uiLAtYr zrCJB8#a-PccssK;bMEr?D)ym>x><G6tH3VeZY~B))q>#MyJ~?C!$G`=7qOLZYu+Z4 zYT4<?S0Ii;rW{57mm47sZ|AKSlVKcVQ)!$Bw_J-=J#}2QW4B|um>K0o47XKAN_jYG z=lp%1SR@c~<#q=1%Buk;Q8}RpDV!)f0+}gAeeCMOMND-F#x`ahkws|AB<QFYy$wi5 zAZYLsyDx;HU*6Y+^*eOeUHA>|he9{4apvvPPqD)S4SMaQ&DUH3k%F^%Ve(LVY+*R2 z4u--}5GHPJ;J~0g*+~9|f9}3ev%(h|J>GF|s|*Wn^J+o;YaVDFd&zbs7YUJkfz5I- zB0ujScXX(Bu8*SuXu;T06Fi^JrAf~i{BS7*RYu#3W(r={1TT)BVkLnSA8Z4ns$&q= zVL7Ef1Nza|N|MBNO7pjQS|hbk{UXmB#{sW^gHcCkUbG|oh%@Vm!*W<}6~`IJWopaf zK_Os%g=AEYLs(vh&18($N9-DRDOgVDc1^0Bbu+iFjU+8$55eUNXSoXP#;c+>n)~6B z^G?r9PS}%hUYCn_xnzyw945BmxSL?Va^VNtt~hyziB;6A8uu7nIFEf+6}1O2UslVi zY-c(<EN5`{HNvsI<ILt5d^j%mv79+@9D)>ge4xaKuvg)Lo8b*{8OZ4aCl6qZ%{p=5 zH{r!pajqRjlit__0hQf>-!5Em;DCD7g_B9y2cK?<tBD<#k}Q9#FO(;o=c2{UXd>5m zw1sB`zE~gPMlbk<>>AInz^%TqOUiv0?m2ABKB8Q>=LnFAIPz3rJwE|HM9)!Q*qNN` zhK!wXp4UP#9S`jgirr=j`!AsWp0#ijCyH|BQ~9>0%l8u*@*S_g<HXyVU9P)VNx1U8 z8Lzy|e_Ql;d-U)X8Gj~S4rKN}srygR--`aPMt7gl-!Xc;J2Dpdm#qCWvhi>UxI_1^ z*5TG?T=2}^mysH;zt14N97s4S;WLVK_*lO0_jYNkyA$<y^{4PhlsOr`_s;ImdQg_D zTsx|VGd;z+NWDqVe|>tJej_G%yEM$u-{tasNiWX`5zkuqtBl|Fgm}+5bUfqBef#!p z*mg{Ye_E6A**|f2f3!{JW9|O4gx`21<L;uJ|F|FeF$44O%|8$RLHK8M{$7T6IxO(( zh(DAO{o$x%YbSjt(<}To<IvkPQXk!WP{Or6n868r#4`tkd;OvP(qB=O+f8w%%f@Qs zzl~Po-Ns?Yc1E9}#_+jeone_F&+xF}RzrrNzoDa{i6NkzQI0F$DSMS2$_8bvvPyYL zDN+_G^Of1kQ_4hBSJOYnFN|*)^Ne>GhZtKMFByI^>@>V*SZa9AFx7C2A<fX&(7_OC z@GE~R$CPiCJxZDKALTve4Q08qL|LfJQ)VHZai$KYGse%2uN!9@vyB6d(Z=(J9}J%w z{%u%dm~EJ17;i{1^ft6JG%|RV-<2BW0FEbYS3XwWRbE$06qjOG@|2m%3}vLLwdprw zx$$LVj&XwV24j@*oZ&mecEj5Sry<vHzhRtVm?6&4#t>n+q|_=uE8i%U$~I-a@^9re zWtp;ADG=#AsbrX%nSM2HGcGeeX&h(lV~jNZX*gimVpwG;G(2s%*D%&F)X>Aw$`EF_ zpm>xcO0}{}*`j=;yrZmCUc})En=)6)Ri03WnHrmFj2n$b#_7h<#-7FqW3Az9L#g34 z!$QLh!(E2ahCzl{L$twc_y=>PAC<3^&y>x|hstW@RpkZcd1Zm}oRXtFt|XemOg|Vu zHad;dj3bQQjAr90!#=|&hF1(W!{dfK3>L#cLsvs{gVFG}a#HzT`4Y3PP0BjuZRHhZ zsp3%bl{v~YNT<I^F@0-XXIyA}(3o!QY%~~881@)GGQ4E48m1d28*Vft7-9^#-PmwW zIiVa@_9^8`sq((^rm{jQRtgoX@~rZ-@|fZ@{qImvfhkBqZyV?SUn%GhP|!hT_jM>} zp6P!^K}Y`!1<f-3?@-WFrfVtakN+VBJqHS!Zu;M$pnsYEcPQvy)Blu$zPK(0fdz3= zBpwb|!EX#bb>EOF>b@b>)O|y(QuobtAk`=kk;OlzLpT2g(+qtxEa-;7S@%uhCg@Mu zC-{v|k#;c6V0`-XAL0JnKgg|07#^r)Y3WF5gohLTCU}@f3p}mxw8ImFrw^VCJXZa| z>;KokHi(^oXDprv@XW^J!t*8`uJC-0=OCUMJhgcK#&a2uACIQL>83x!Yw!@B@iyRL zI!ur0GJWR5{FpEQxzSEv<JpMk4LpT-sB66s&p15Ec>3ar!P62?B%UxlCOiiHO*j1+ zPB_9d-Z(t>;bD4A_YFMEhxsvIHjEWz$iUMZPYj;6cv|A&p=aWsnxaTNY!kK(wlj!F z2)g*jKdbn~Pn{sEf6$+GWxa_5;)A#$o`^Hzk8ir^&v3#Kp7HpPWqkt=>%jW3ZmcKk z%=+_9H~kq-xHs@H9*UNpQ#dF6i~hOk51xB6eZ~Gq(+_+#HGTHU`_s?1xjTK`)Z5bA z?wgpt?xvg5kNh$wy~{F7`o+73rym=ZntpeDQu?3CgVMX)laN05#eV6Ff9{oDliDM_ z;m2LmUm4Olz4tfm(<kJ$NnexPGX2ZO&C~Duy=l7tXyf#oeu+r`<9vhk#qCV#Uu7xj zJ7T<P2S58KEv4X0+T;gn(+ci9nbz;gV`<x7Ka%#U`%qfSxC3b|_I#CAa_`=><jBgj z{BJ7KPJK|8_Q$F%Y3<gQrk&gUahm4)Anhy5+O*%_`ghtNE#6LhaK#&G$8K1eX8d7A z+I`DQ(w6<}g|v(jMQP?ii_`K4JJRkMy)Z59QCr%+SFLGNw>+1YbjQrJ8Lgg5d-Tlo zwC7JwOB;Ogfwb>p?@9Z9`t4~S?7KDX^O57zR(wA;?e&6@X%k0frX_YsOWW0KSlXgC zgVRid2Bhtr)<13h2ffpVM)XWmXLU=PdZ}~T{v{pKP7iLIHtuZ8w54Uu(<Z;Frlma} zndWgcO!L1SmKL+sly=FZq&+;*mwNG!^QpcyXH&nOe>(Nor%$CW%|D)c<NH6QKJ@3| z)W@<8rtaGHb?V7UU!;!pSEfE%wllSA*^bns3$~^XU9>Uvwl_aX{k;0a)TS-pPc47^ z-PFf^csup&J6EOpeqWi|blJ<PPmNoi`dO<NQ{OySl=}YB#i<29Ia0r_U6?wcQ9&xm z$4VNy>Yw#0cZd^2qyG!QzK{I#Yy9(xKd<K1E{nfQ+9e$KyQp2j-+BD~gTKGEzwmbs ze`mEb`1@1)L;D?nr?pz`H~e|f>rQDW@%O8CLi<HKt{u~Aw4>V3+E3aM?MLkg?R)L8 zc1Zh9`&K)s9nkh`-)PmK<S(^-+85ehZI4!^RcfDWyR^@=3awoGR4dcAYum8qy;<9& zm1-Nb|7ag;>$MNH543gKTJ1gUUG3l6YVB?9O>LF-y7rp(s`iSuLR+qtXfJ9nXvNwR z&80at2e`vRtw6J3XYzb)o;FvTqs`W4X}Rc4PiaqTPiT*6k7^HV)3kqSQ?v)bQ|{63 z((cf1)3UW&wOh0a+Rf;DW3|!RNNt3csby$sSiT*m4b=u~1F`l02CbjgN9(2a)Vgck zv@Tj_t%KH1YooQ&qP6B)l-5LRtToiawFa6|Q?x+97q}F-5cntXSKv(GkHG1`Z-G;R zUjx4cY63q8js(6B9146J*dM44d=>a2uqRLz*cI3rC=Zkcwgol^HU>5XJ`Q{oSQl6u zcsKA);O)Sw!0Ulm11|@b2bKkv28sfU1J4H*1?+(Z0c#*H@LXVaU}oT%z*B)I0*?hA z2|N_|SKz_GeSv!dcLr_`WCtb&CIqqqHw8uqMh0#SWCYRz$$_N6;K0B@LZE-3Z=hG8 zM<6!PCD1w0A<#C^IuIRb7El9`fkuJwfH{DzPJW;Nvj2krAOAW3pZ?$dzxhx3fAt^t zANBv_|G|IA|E+(&|7-u3{=NPx|L6Xl{!jg7{;mE^{!;%Z{*U}0_}BX1^}pkP%m0S| zHUBIAm;5FE7yLzjm;ZVHBEQ|gz(3!g=bz)B<<Ip$?SIn$xc^cAL;k7$2mSZ^@A2R1 zzulkhpXi_9&+?D;kM>*qnf?rasz2F3)IZ2S&>!#b=kMc>^Y`#~^T+r*`P=*3_*?l~ z_?!8g`WyQj`osKYzX7E0^Ih^?@cr#O=lj$5yYDyODc`TY<Gvc-Pre_0hkf7q4*0(D zedXKd+vBV9?egvPed;UoZS`&TmHPhUTkreO_rC8v-@kpUeQ)~S@V(}H#kay&;(O6o z>|5en>~r`Q`3igsd{$qc?>XPIzL~xp-&4LPeUJMd^*!vH=KGiL0pESTdwh5LZud?0 z-Rir=H{O@!8|xeG8|fS2%k-uDQhmw3B;OEUqHlmN-q+vP*Vo(E)7RbC&DX`(+1Jt6 z-q+UG$`|cx?u+s@^+oy``67H_KC{p0Q+xrh&wJT>(R<$exA&a)jQ0=kY42}dkN1@K zSMM+0W8S0QpS(YMfAAjme&;>t-S7Rz`?dE=?-$-Z-re3x?=J6W-U{!h-ZJlY?^f?- z?<Q}l_dniGyz9Lmc|Y*J?_KL%<9*lrj(4^9E$^G&H@vTVS9)LdzU*D$UG6RMzUY0y zyVP6cUE*Erb$Xxo7J3(X7kUf4Htzy&zIVQNo;S}s*E`4itar9|mUpH%*ZYk3Y420s z8Qv$oPk0~qKIWb7eboDi_hIit-f7;c-hX+gcpvmW;Jx2_pZ8wxJ@~uZdzbf4?;YOT z@pqedvNs!llf1X$Z=&}W{7vwV$KTEP%kqxH-%a=%i@!1AZ?t!`ca-=W>E)kA{~O_z ze>Zxs{LA!S`FCaLje0D`l_|+onFDhgE%IdUECoxGB}z6PrJR7WPQ>4>C_U>i8MV0` z^|}-FyIa)sUex)1)P4%EFcsK%2v~Up*m(?idII=*3YdEa7@P@AJ`0@A1#ahit-!R+ zYX{Z~y$-a23vE%1R(TPv^Ag(WRkYXZ-c@M5)!u)jE!TS2c|Sz!e&XHW-H7(yigy1L z6!4k%bI`+H?>_HWppXNgmBXN!pFlmwy(d6R9#GYv-m{>w3*JkhIL&JW{e^=Pn}8-; zfI8cPN;`pGyZhpNeL%wrpynaIVZJoqa8UUu-%Y-oLHXI}19zi0OhLbR6g}iA^p)AZ zxxV>68+y_6=ua>BmZN{Yj-K`o`rHS;kI@IWpf^_dDt&v=NB5(*{@^?6`vraYwC@c1 z^d+C)XGBkL>{tEK=>Hx4UBM6ffHw^CC;8L-H-c|ufrm`?-vypB75rrec+DK}odUnZ zzr?@H|FZve|7!nx{tx{d{9C}kc7d0D4Zik+zs7&kU+X^$?&tR#0}+9y;EwGAG2obe z0|Np>!AnO3#)7}z25vhAymtmT@!Wtd;0P3hTfYY0y*98uuqm(u9R3S%{O<!t11AH& z2mTIt14fJ(QCe%Q6ULOj7-fcG+!=$B=r)W_(=cM?ViYUD*!CjEytgnGegf-^6&OLk z!3bM}arg|zZq7KOAc@B)y&!K6Q!<sClv|a%m4878FcZ3)LTCkEfp%aWRxv-tjCwzG z55FpZC>IqYbTusvoejO9QAjn6GE6kwZJ1_w3fdgIq1f=M;T^+z!!~G&strFHP8!Y{ ze1-^P3u7l^FXJF%26QF28K)SZFwTL7;RWMs#`lb+#tP$?#_x?MjpvL3V<YHix|!m! zJ~_rT+4P|4Nz+`D!&G8=%k+_HyJ@fKkm-c!tSMlMG`BVPG$)!f&Ew7Yn5Ua(n-`jw zncp(6H}5d-Gyh<Ao6nog4VpLT(%^;$X${6TxU<0{4Q4l3*r24r>IR=QsAy2#;An$C z8u%MThP4mt9hMX}I_&nahr(utEetCOdnar|*sibxVZVg^6=n=?9^N&4KzL^O#PA2h zpAKIT{zCX$;h%)>3_lS5OZZ>m=7{Ks*oZ+9mWas_4@Jz1D2#YHVr|6Mh%X|JMEo8R zh)^5GG)!oi+3?neQyb1~xTxWZhHD#cYxrfupBw(!(9ozwqu54+8;xpoN2BSD@)|8^ zw5ri3jdnHqu93UZ<wlW>J2j4PoY^?L@k5QDZR~9PdgJwtcQ*dE@u|j_8%IWVj!cLg z5qVqWBaw3>iz45Q+z?q6`9tLIkxG*mO?os*YBH|LeNCQjVsEmd$@@)qG}+(e*CrR6 zG;Z3t>42sqo8Hm%@ut?M%bLF1bX(J}njUZZPt%5KM>Rnmq28`Ordriy>bvST^=tJP z^@7?ss&mx9s8LaON6m;Th*}Y~E~-50+bB<zKdO1N9?ga|8{ce7vsuj+H(S-LwAr3! zKR5fUS$Ojf&EuO}n%~*{iRQNEE1IusUeWx!=C#e07A;%!YLV9B))o)9$ZPRJi+5XW zZ}ClwlP$b0qN2M;4~rfjJvDkxbW!x`=q=G-N1uqk6y3CCY|EsUH@Ey(%V%3IX}P-P zmX=?&Jkjz}OSM&Ot6{Cix0>2&POIWp@3h+1>YG+4TlrcwYu&STYU_!uA8tLb^^2|F zYyD~KZ(IM?T4~d&P2V=d+uYXX@iw+LFSq%y&8{{-v^moztZj$31KN&mdr#YE+B(|4 z(YCbh7j2KVz0kHvyKe20+Kq2FwcT^=mbQDhU0J&W?L6(YcCFg?ZJ*ix_V!P-FKGWt z`}OTB+aGEFSNnz?I(Hb<;ie7`beP>?Nr%-PwsxrQaI%BHLyL~RI;MBb?l`^Uf{rUX ze%NtW#~(YM?HJyvW2b?g#&){D)67nbJH6FuOQ)|p{o2Xfsd?wP&S{+|b$+ySe&?4u zf6)1}&OdZM(>W}rL(G7fF){bW<i<E--i+BC^Ht1=n9DIyU3zv&?Q(0EN4m`KQqpBz zmz`Y>clo1>xof+w@m)uCy{GFlT^(KD=vvzKi>}AIUg+AiTWq&s-6nLK)@^RL7rL$K zwxip@ZohR?Vq3-bjm?a`J@$#%g4kDL*T+`I9*I2{8{WNR_krEVbic2AZg*$*H@la1 z-`D+k_lw<|_UP7QXpftFOzrVpkK!Kh^w`#;y2q&={vOSH_UxJ3b5hTTd(P{*tmm4Z zpY}Z1)6-My86DRrE<G+g?$J1FTuI#8xKHE0jr%Q5>D97V?_L?bvU@$+Yksd~z1H^n zwAaC2?p}dj(Y@n(r}duL`{CYmd%w{8-@Ui>{<`<c-j{o;eY*7-+Gkv!DSc-3S=?t; zpVB^i`W)@^SD%Q!9r`Bpwe-ES?-P9&^nI!Cy1o^CzwP^5-$38y{d)Er)^B{jDg9>m zTikC|zYYC%_xq{e*?#8!ZTt7@pWc5`|A+g}?O)t~b^p!%_x1m||6l#XZ)ktR4L1zG zVe$=++>m!e@eOa^u<3>`Zut3zvo|z|Zxi1)K0SV7{IvMl@y_^F@t?$h9)CFgbbKJb zc|vT$kc6=b_ar=-U`tq@uqI(!!dD4334bMo4QM@}_kffE;|DxAAZNhB0WS}De?ZxQ z>H)_G{5>FSV4H!x2c`_XdEos6pB`8+uw>wxfm;Ud9r)A0KL#p^%@eyN4oV!Acw6El ziO(fE6JJaGFtI%Go5bUZe<zv;wH(xQ(2zl62Hi2}kwMQ5at>NK=z~E!27Nu~=%6!$ zv_VmWy9`bkoH=;n;3<Qj8EhN;;^4Oi|7Y-LgAWY;W$<5vjYC=t={97*kjx>s40&M4 zj3L$`MMK^g^5KvjL%tmH(~#3cE)QumwC&Kip+km_96D*}l%Y=#%^zAk^!1@14Ba+# z@6hjuo*H_7s41y=QkSIuNvTQWlI}=)I4L*Dmb5f!Rnoeotx0>5zDxQg>1<LUDRNl5 zVLgW>4jVpf{II)+Ju+<OFx#-=VJnBdH*C|e&xTbG`*E0O*!f|`<fh5(lY1r)OioW8 zmwbEj)Z`h-bCU~`mnE-CUYEQn`LpD&lD|*>HTi6^FF8D=MM|fXUMYzw=_zAUCa2t= zGCgHxN`8tnr6grl%G#6-Ddj19Qx2y5oZ?P7m*P(ePi>akE;Tl_f9lZG;i)&JPD;He z^`X?KQs<=FQWvL|q`sc|ZtD8fEvY+G_og05J(BuM>hG!lqy|zOr2T*Fy$O6x*Wd5I zPG)lqRW;Nx4<!<kh$M0nVu*@_glbDABuEhvF%ONI(n?L$mP*xBl(bb8B`s<!scNfA z#aPr3v#Q~~zbD_L;nzO*_uTvc-}~Ix<M7V<>~;3pd+oK>Uc+~-wRiE5vLTg2YKC}) z_=kjqv<Qg|=@`-_Br&9KNLt8<kg*|CLZ*kj9rAw2l8}`lYeF`JWQXhs`8MQ-kRu_- zL(Ya=47nb1C&buXZAERRY){*swN<m#v3c2iZB1-8TevO4*3K4V>ul>{i?{W(^|AH0 zrP+qqM%l*LCfcUh-muNE&9S{}n{QiaTWtHtw!)TW`^@&aZG-JgTej_M+c&mdwmr7} zw(o2QZ9m$6w*6u|YCC2-VLNR*V>@d*XS-m##J?-HtF~*l8@8La+qOUW_b31E+V0u^ z-M2lkVeoqF-viry{r;|fZ~4`2et(1GT;+Ij)C(N{Eay4R`HpekUpW7dgyTEHvxjhf zL-?`@=LW+28R1?*_!n~>^SPcmT-O_1-$br+6xW-^b@$==<B5mP#78^gC7k$aLOgj9 zU)6}Wr-{F!#G|p@Ax<w6x5tU&ABgK6#Q6r|ekEz}K4~$XG#N|Uq>)C6q*X`KtOaT3 zPa4)FEz6Rot|9kH-;1R45z>1%>HY=jzm$A1oBS}2d@+Fh(UpAiJozPnd{dqLQ?jXh z(|hEnv*fFT<gaY<*>dvRZ1UY0@?RhFVJGsVjeJ>${8>8KJ@_v9^)&f*ANhA3`8bpO zJeho*LjLYdKDUwIYmx7Z2RQ}Z<UaU?`(Z2h#Yfy98Qdp>xnH_)--L1h)Z#uW8hD?3 z>LmBpF7C0F+-q-f&kf?<dy#vvDfeO(?n&n+H@QE5=04rX{rW!l?HKOg9^A(*xu0uu zUl$Iz!##eKdwnza`~vR%bjpBu%7SK;3DqbYoEl%FocNyd;xo#PnUo&`DMva`p7>C% zc=|t}j5$VGvzany9%au6%Agl1iyBiVJ>}=(cbzioJIbn6lvz_LyOJowT2Yo&qf9ft zmnh$MQ_d};yc<us7f1OQOgUJtkz1qdl#4l(k1HrACsJN^r`!yt{Cv8hTf=LVr~4>Z zmr=fsqnzzZdE1zBx0KI)%HTtk#h+3pPo-?`Nf~XUtS;y6>V1W>dk<y!hm_@`DAPMp zwl|=RcW-cw@_sMn{vyi%k<<gR)Ccvc7hJrqP)F>fuE?a$7)sp{MIBPBeyRHRsZ)NS zZdpkkGnTsMCF&d>>K>1J*QkefQ6FVeFAbr7YD+y;?YR=q-J#yvPyMxodTb>1SqJL1 z+I7p+y-z)Nkos;p_1<gLe;ug@>rx+@I_Ieyw@^pUrmlRII@3noS*G>_>d}MLr^~2U zM^nGXQqR_^RjSrK>fIdb-^J9!BdCwtQ7>1kS-j?L>gm1I*B?-C52F5#pdPPO!@b5; z>h*7^-`}O4Po}<aM!jFQx~YDicED!Z12bqB^rU?dNIRi;wOh0q_Rw}%KpSEpZHZR2 zDau!Msd|Yv#@DnpX4B?KqV3U?Hi&1HJG4jk(JuLb_Q@dHDG{_+Dq7vFd9+`)(vEqX z_ROoaYeHz>l&btEZJqtJc^1<48B80f4Q-)H&$>T*g|^W)+DLP0EA^qxWTWj=y3#$` zQ8~1y7SXO6O8e@0+F6w=7OHrScGowwzuu)CmP~uB8SS#N6&}z=`<}MiQrc`IXuCzx zhO1V-SovGD>GsgJTR<CcAZ@+YwD~GN<MvD*ZNP1`1>d1f*pIeh7;VI|<xIKrv>CV1 zcAQBYvNvtXrnD(bK7E(=<#)6*7t`JxPP;RT_Gk67CCdImdvqV|(nYjShtW=LM|-vU zQ^lY9gZArw+Odmh&km<u8%6uJMj6jCf70Ilj&|=-+P|Y{2glGJu0y-nl>VJI@>jH# z=h9|QrtRE<Hgv^O?xn8Lrrt%{I+Hf`5Zc;Nw7F}RELHLzZSWsxi?5_jKAyID7ux8J zXsZ|TyhXcxKkfIWwByrh&v&L>??d~(P>CC~_4m={UrO6Qoj$;e^aUEyCn!?<HvNMG z^b=OlUzk9@p&R{&CiEjp7c<2!(y!P-|KbDs86)X$yg<LhhyF*=qIc+v{6L>1i@wQJ z`Y65Vt2Cp}@@$c!Mefjt`H{ZNr}Sywq;J!QK29t8I@Rg(SPEaJ|MM;Vpyl+3CebfS zq<_?mev-9Ni9+}3Hyxq>w1IxqJM^c9(68!5|H_YkRv8Z$k8AY1zNi27DgCe+^v6=^ zmvx|j){uT$DR(FLYxLW`r~kHwe%x&ObA##Eb*6vUgnnKHx1w(M==U9?|MwOBz(w>2 zC(<uWqJP+yeqsaqi=|v$TyN5UJWM}wGyTbh^eZRQzwARlGm8GEFa6GET#CBfryqKX z{^)M{rK{<m&ZeI_lKyIU`mGW4U%lzaKJ8rC`9A&HGxTr2rJwsb{oVQWdneNWO{O3G z0{!7o`o(qVAD3qA|1SOIGxVEt=s$0yAHA6VbO!zE5%jNn($DTdf4eFD?mG0ppQ0b` zWVubB{4{;@1N70i&{ubi=uf5(KbXFJ0)6@z`u5G}<NMIpx6<eLw2wC4#tv{6d%z*= z0=uvee1V-{Irf70up3OpelQX{LNfM*ZrBx~u`e{k&d>;ZLk;W>Ph)>5gvI(#>=75S zOB};KaR58THtZGauv;w0elZ_AMh5nbao9BmW8X-^&e0WnM>KYiaO@ue*g@)H53ynw zDT95)1B>xJ>?K#Qo1DRZau_?xe(WjRu&aE5ePtDPmPOcG-oftjCia){*kOiak4eEU zlZbuhW$ZK^u-CN4ZWDt2#t%ErbJ%mLV%I5$eWwI=9=Cf=_wHf$xsLtk0(PL2*n<vZ z7dn7_Xg7AEudo+=f!*j6>_;DANBRJJ(!1D|W?)}>9Xr!F>`f!FJBgiEth7C`M|Hz4 z)fxL#d+b!tW3LLwZWV(4O02Rz*t4F)u2lp3*0XAjEsfo)81^rByB+ocHnBgjja|n^ zb{Sil*k4a!I}__`zU}pU>}vb4ukFUpwq32R`8L<J*y6<Ex(eHz*jty_t*x04ZLM#s zr8NWF-W%BXreN!vh|N!|tm)VQ9X8g27FLIS^<S;4e`i}QXjv62rPx))vikRS)qGp0 zSUn3`RUJ0f@W*Vb%^$O=Hv5<F9lvx~XaBOQ=G#^CZMlDER~5^uSb@c^`lw~~?`*5_ ze`8(k^U%JU@`#0X=tCRpXkvJb-O4(iSf51PzfKxVBQ2(5`_8wt&cPn;u(dA0PA=Bg z#n{co-ns%i`f9ty^)qbi>(u7@rCMFLVT0d^Eq)I+`TgXO1K8;EZLh!Bt*^(i;h(nK zU(b`PE@9ulN*=q3z5fn5?*5;KF#s3F0zAlxMHw6LWQ?GUT4O6Qc2I>egc^(`)MZS; zi?M}<cB^a?#v7V4?$C@}-jZ>MHjGC^k@I61pXkguMOW^Ic*ZSyGJYXe+WvMs?O?_> zMli;a&REBI?xHD-eZ0vS$V|pU=5l|{XKdsH#z>ZM&#hq0B#W_=&lyA6z}>ioF_mqM zt?XiqWglZL-*dMfV(jH8V=yNei}{T)nTw3gT;-m=#hrbZ!Ac8bH*SpK6k#l<Bx5>d zx&JFL#$#oyrzT@Q&oTDn%@~j$V?jZT357B?)Pi!O4W&mkWk^THj$UF6DUPwEM8=d} zWo)TGV@!h>YZ}g&(`$@9O<)Y_b;hEmGbS~gv8i_%qgudN)ndl1mNRy>nlY@;8Oz$h znAR4?wzf0IwVSc7{fv42z}VMe#=wp-7IvC3vGa_LU1p5z2BqH}#>^gIF?L}LtuSM0 zB^XmH!`Rw0jImW_tgSjFW*y2+FUH^+F&5W^F}V=N=9)7`*P5}qNXpj^jNNr+46iF= zdEFV)>qXhymodHpjP(s>%x?r^f9Z??PGBtXb;bmzGd4Jj()u073g2hU@I%H9mr{nW zWGwL$#uV2wwz!co#%#tKw=w3pi;{jHV~__Ji~Na_{|IA~xr|YsW~}l&W0sc~yS&C2 z<}JoD@7}+E-%wMyGR9emvCd-D9HkihEXx>ZdB#F3GbUP%I;9q4q|Y%{+JG_BMvR>X zP}>AEmKsXE6VBLbYsOgHGS(W+m}?AUuP-nL`!Zv(-58VY!Psn1#%Nz<tTvf3+X0N- z4q^;<C}X)J8Pk1@vE6ahXcHOhokHFA24lY&i~-MNEO-uM!tYY&&1Z}_ld<9t88cqO z*zrfyg)13LUd5R5CyXtxVT^elW6c{LY-HT|OU9qGsWZ1e*v6RjH;hg1VvKqZW7Xd> zW}QQgdVn$PgN$YW$e8va#<mYL#(m_$QO3KEQRg0K{QD&1;HT{);=fT3pR<pW|IT>1 zjGA9!{9H!Suh>V_Wn}%jeUx2B+hx>UM&D%=K7Tx3M&|R!=<~<x9i#X6bv$330t5Ya z>7Sf^XHMPUFFCha_{;K$<>$py=19%F(sI?h&RgeC?Y3#|mTJSByV&<;1;AWOy_Di> z0`nR^UDCUAolnKv3EC&WvDa@@^sgUH*t{jftC@Y_iTHO7dDf$Lhf+J9PMAGt?wQ$N z$^NeJ_J^aqe_GWqdRO;zhbC1R{kr(ed4Gwo8qRB|&)q4x{?AEgf8B18FZjIs%cq6h zD~6BVer#Nay#p6m9sWM`nlA5FJ~n**t!-hiZ>J%Yzq|3-TD;-icV-`W+xpp%XxICT z9sbFG4E-v7ReLwrk;yqVN8gu~X7<m6BDpoc@%j9{S>tBCGrIc7qYnR<A2e8hIe2r& zWha*I@ABo*PaXcJlYJU=PycFugX*!@rr2inb@=z$*JRe9W^QQ*#%+3KM6=474*zOH z%2lfJUfA@n)?B|`_2{9s4*x@6Z#+{nr;F2@L3>8F8P)vZ{{H2jSu}s)!v3A(w*6de z;erUq{-cw^*9H`;RVJlt_`ZEd8~Zr?OP=fB{rJ}HdxKV=PkMe|w+jw`w>Oh45!1gc zad+MHx^Eqyde-4T;8@9(T`#!b_UvE#jaDzl%3=%qXLsXi#V18Q`|XG4rXDTX@{J^i zzkdC%j<b8w5=D9Dm&0{&FX~y;ohQnw>+Hez9(=E^iwEC(@V&aO9z{zQ^>8&0-9l^^ zVmse0%B(nNDCoNAwz!;^Guy*JC<up(J7>0^n^3sBRIX62^uzF#E?1#)#d4(|hOczF ziX8Z{f92RN03m<mA0dC_pFQ_WPXGUo2h3Xhce&5Lk8=+{2Y1m9c$=gV?kIoY3b)~w zaufFkT!(9L74qORT!IU59?rpUa2ifRF8m6=z|Zg_9Dx0>7k0un$cBxu7CwQMumm#U zU6={eU;>PSH0TT6;YEmoa0r0<V1?4)3b$BPc@_@A4p<9|;4K&hy`cjHLv<(uSMCv3 z*Z}ikG`s>$p#t3Ei6Gy>3K$EWp*}qL(_(U90rZ0aaDrWTEM_`%fYNZ_54Ir!EU@mj z#k>mTVdpK283+|1`=-V80H(8>1vfYz?7MC;@o?oD;RiREdevfz!PF~UGmOk5Z7y3( zSJ-*UV!Yt3i}+CjM8NwjJiUD0VuE1YIg9y*62KKge&gI{Eat=0oaYp2ebQpeK!Xz& z)8e?rbj-DwxMLR6^H(^EK7!vb#QkBe|7VLSd5HY*qs46h!D8M%NcwzlF|`g@%$Xd* zzn|;pfxh?m690QFrulA*IkMAY`tKnBQKF}BBmTa&m?2-0kG5D$>}HGkVw1&`-AG)1 zVKJN6S&aKyi)pjQVkS}IZpyNl-&YZzA6ty?3i7~5#MM%ZNug99@*#YHUVz_xzI)GN z{NCYO-nN*FvxwIj<fjb6^QOg=nnqrnVll5x;u<Dc%)zl1GdLap(H6681aUshVzv$@ z-qJ|N0bFZ;@<m^Zsr#zM%<08Fm0&U5x?9Yb-3V(}((xto@(YBuBj@d4F|(p9=7+W% zuZ_jDZAE;ClLy1NPeKS!u*KM#kO%!O=FLVH^QkxIug|?!m+Pu+G2S)!O;wBORoP<3 zRODWGhJDIf%<j?_bHbB*wiw4PLRdVAPgjfS;>2}Ro6opw%xWGB^zBV!E?#2+(iLMG zT{7lHCX|jjYs|{i#vDGu+|^uTY)5&(z+q!P`H2-fOg3$Jz?fnCjoG@FImWwLSGmKO zE!&K#^fhli*<#FZn|R*)24m#;b)ld09kqRU7V}X*HYRR`F}If)GiM2J%3H*~A5cdx zFeY|BbCp>g`0HH4HOH7qvpDVyV<Iz*Y5JxyzS9UFwSC}Z<^fM+o%ncT#*Q^+c{+9f zXk*HZGN#iA<_r&GKJgG^q6af4HjTB?18Fl1U|w#DG4qp+sn?JB#eF#TtIW|&GUn@E zyv@0%F=2_!n@%w1M0dg)Z_J`N;;5T3lV34rVppD7-^G~sUM3D+;yPY5=0;~@s=^B| z7&EIA&ot}EHVlg8SsO9Nc)_d=l<qL7y)l=gjY)x<QG^@Hz>0Rpw1)GM#=Hd~aH%cl zhF72>{Q5lGkPN|4434*9oh8hGWM~Hspfuc$FeVpv!Dp}lronLN4V|GCG=^I6G`Pd9 z*2bKHgYY%1hWB6sBts_%hAQ9!r&^KzkO{*f25Q6ImOR%D-i4mv1=m{`vkr!UFI)=e znxHdyz}n{I3vh?!&5U^-&V~_BP!3jxa&FjV<2-OUg!qADO=%~>p<vP*wg+)tur!eP zh0#s8rT}Bw!s^DPH}v;6W{;mSHQ_a1V}5MJym)x6p)ubvak?rD@Mfu21L7K9^5PjP z^~v}3$a^sUInuW-@dj~qjQOaxF;{C5KA2e3n4B6s%MN-~C;qE3e;=Z%k`7fkhSiv6 zFsCx}wx2boIn1j>+*c(3!)Fx;Hw-OLx<5lY!KdYnu|mev#5)WxYs|H$$V+g!j4`Qj zt2C2!p%~07MP7h!N)kS}=V{FQ&>Vg*!MUL&+%8U>KoZo1v&D#K7zAP92`7v4IANFx zDbOB#p#r$UwIbvL_zCvG4%iA`!#3Cn`{8Gh{jP#Dzk3SmKqz#ERCoiH!!9@ng*ksc zh=w$H2eRP|6eGNT&=n@aD)<Q=Ky9uq8iqn9?0}0<n(GgME|3ljVJn;jC*sKp!SDj4 zz+`wIK85Y@Bb<h-a39=>;}TE?o`z?j96SY{PzYopzzz2O4Gw{%i5zbpjE7et5*k2p zxIkET!Ur%6qM$0=ApF~57Q{n6xXHC{h6&IHio<ur%}j^^Ebrz!;&D1W5AGo8G7|jZ za$z2O0rF0cXW+X+Tr-5iZ4YDQ@zK4&3WwY&pP&u6z-BkX2YztHmH3B#P!BG+81pgo zhemMQnf+k`w1aYR%87Cm(jgkE!c7bJB~UFJs#MbnsP0TjxI$EZ59?qajE8>E8Cn3h zv8e&vCN#?PThxEjXT1Tkmgf>&R9Cje{|<0k``Qd{B~t|&0L6)k1d4uE4H9m67qVa{ z<ia07^=iBz0(!zY$OM`thGvhs3l%v*Fm!>DFdsI<uOKJ45*MKm2kDRr*>DW*K?UNk z33P%~coRN?t#A}>LNVgJIs`%#^nk%I8Qy_qunx9C4*UYA;S$_{KS34|xqutEE25o2 zzPrOd*Wn_Zg2S*Mw!&Ii3Ugr+3<3#*ghj$s1B$~f!g>t80eP7J3>X40gS;T53b?=- zu6qY8gDLPTw1GNM2+k63J7FnIghXfo)j=LnMpM*$4GTfiqzBNPGBlHnJDlT^_QGnI z2}7U@G=ti}tz~YKH;%zh_!Q=YtN|JX@^qDGut5WmHAAJq1#V+7k*B(zfS(};<hi3? z!zPe-2CV^k6ofnyMIKP(APfB&$m4`Iz!s1<+wFz#;TJdsmq5-VYnX~d1*ipnAWwE_ z58a?YjD|PieOL|I@Ex24xd$Y9<({bvlJBD+9tOfhm<!8c6YPUyAon6oNPGUThU*Iw zzp)^3oeJqN9p(W|ZnG97O=#MipWzf-0=h5uo3#+>Ruam=vmj|%2fUym_(K2$g4|C{ z3n1I#FW>ut>@UBQ-^+0-!!u9{<eg-aNB-ozSK%BS1G*yivL_q&b65`V16=?^bKlUs zH#FxB&3Drt<a+&q=C>&iMd3b|av6?;lvUecEi8j~U@DA){tyo_&=LaRIiM+Er~(YP z3VrMR^6EJ5kFW<M?LLPUun^|LbeIIM!4OD+B#=DX1v-J`2U*+I8f2}1C^UsY2mpVO zyyFXv6w!kC%QOF*KoH39<o9wMd0NKvAoqei@Zm*x1rk8QAo*_)jD)c;1u{Uwy#SWL zDp(7fVLN;aa=pL88IW@OCfo<A9s9jW6UfkfGPR%q(3~?NAaN<>c1Mu=xd*%oDIoW_ z#Qiv!0@Gm@NV&cMJ_Jdpl_2H(8j!kXBW#9j*b3WW2ke5~um_|p`SvlyPrj3VWM8Q_ zz5&S-Uqd#02^&DpBj@`BK8BBAF?;~?LGq4-Rl+QJXd;Y(ks#M4byQ#I1(L7i+B-pe zcph3pD9|i6e&7vtp$1rirlx((q9<+<a03h6CC+cbHIQ^T50WM)K+@+hNLn3${je8y z!8foKB)>|!ZiFvj9Y|WQ0Vz{Ifh>@6N%Dd4@ju}BUiOvW$ZzEspMl&Ha@_T>0XBi0 zSI+-6Y=a#jVUsZK11SR!f`tEPI0DB&uI)6)`p)0s5?q1nAaQXA?g7zboI&Es10>#P ze%bHeGPpF+?Q214%G>X2D{eKAIG21|2cCoaAbHpa8iFrKer^m>E(C(4TQD?LB(K|) zP+TGGZxDY6j{W7gj^oHN<=AqLCLrgN^GY6(a5Mr5m*f{Okg!UaCG54KCR7Kxt}0L& zDnUh%JXH=P9wa_WLrEwB#X#b#Fi6}<9J+$Ur{p{N+}C*iQ{((LuEhUMkhG9Ic@-pW z^58N^T1gx40!Z2kl4s8;lBU9Misa@0436K4>o}I<*m54nIpzEk4ne{sVUsWl5?%?n zgkP@X2FNuDa(!~0e}LpOxpuh+CBI30$VcKv;z)1;i8Go^_V|-{6x>1LwU8q5Eb%QA zRU{20zY3Bj4x|ilAn8>Q?atWOHvhZ2;O|8{j_q(A=XHcdTnU@t2&*IPjyxmR<G41t zPC>3&aKwS+Cqd#yka!X#&ICssBJH32*v<bdaqY-|68D0nLqQ~M3L@$CPe^+HXZfdN zIs6Nr+o21F&!HXRcesvgbGQWUUp|gFak!4SD(E`m@p0D?&wuAS(&GQL`*&gaJHN-T z<?pr&#=$>nN4)(z?!QF-|AQX?&UOCp?DJ3Y{9n=kf9E=%{Psx<Jc)t-PBHLzHO&7x zzkhe0z<;Iv9-pu9pWSxMZTKhGG2h{F*D?RW;X39)INXBsA!JU(<MSdMb0Zw{BMQ!u zka-eUz%f_CF<;^$eiz_(C^&E84BIky;uM^K<8TaQ4#g2T42R$+_yN9$9M}hYVHfNG znN#r<Y=KSi1$+*l!fIFnOW{LU0Pn%uFazF%DKH*J!!Q^K$<Q0(;bn-0NN5Q*XbcUY z7F33^Pz+q)&VAwl&cH8_1KZ&X_!vHbSuhEPLtl6Wq97E!!3v)6;2vZ6@C)pMwXhK0 zgyE0~QP2dcLSeXy!Tx8+h9xi+QXm!@LwUH1;qWMY3G-njyabJ*3|zj$xH~L@QP2_U zgERd62iE~(AQo!EP3CfZ1GAwAG=M)bihcvrp)*v5GYpQbfd0@BuHUejHIN1k;qrC9 zheW6hKV9Qmp*h^f(76J-fXx5c#N3Z0C<|ZZF&6<!!-mVuQ2=LHf^oJL{KkBc2~ZU_ zUm!e?_d96-mEe=}oC6MGNKJsNXPF}bg<<Az%uj(2m@85fK00kN&%p|ezja~hNsFll z^G{gJQ!wo~^ITw1F6TXFF)zS3zcOzFGLLdh7<h#I{R?>sK0M647U=ae`yFCl4y6A? zn*YdeVA>Dd9|uVrc>R0)4{&}M{vG*0hiite`?*$((igwAm_{&UFY&-2)ZN|8^?~8L zEN1;q;(G`4W1!bJ+zZ>8_p^;TKw#TyF#|AcFZ_!6I@yFDyta@hHWP1OavyEtUff82 z++Z;^pv@QDBkL_DV;%R|T7L66akhp$3-v!^{>Z1q<0srxS=?)@`TZ)c?PKoim6Q=H zn12K1mJ@#;5x!;2`&df4F0q(Ci@66ES<J)_xjz>YrynpcC6jY3V4lhQ%uShZF?;55 zzV`^vyOb60F!yRM@%%RB%N*w8%qCrD5tf<E=a~U-K?Y36?@hjYgMFq^9!+JQ)a#T# zQz&;P6Rt_*wTT>e0%gm1!a9!fWGwgW81hCsY5p4NKiXp68O1e^B;SnS+J=*Fhmr4w zGB;=l_sC$2d43T0a2n}0&|>POlD7shPbh`!?N9#gM;QB3#`R%7)vJ_SNz8@n&9Qq? zCiNtrCz9t9NQWNWL*2Qz;wf+9NcV0QQ~MQ*d8R9QrwjMhON9SL!ra+nzI}mvxRb@K z>c~8&SdI}xxH^zF?I}~DEv8)*^PJj|mXQ|oY+H*d{ycMdBFHDLx&K>ntu48aS}+GK zoG>(}tY}7F3FDeVnQLYv9YdHC)RglFTg=lz%<~E4UJu|tZcLf%Pr2qtS?fzV(TFmw zA?2tKdE1-tH?Wu(FYc-O<i~p4AJ36b>vB)lAuVc=W;MCjY7ht2x&NzK%;KudFRDVi zTgkhXDSMyg{FTUO6`8kHfjm{7@IOQTD#!e=r^&}p5r#74fzp&yrHF%)<S|e3Zwbnv z;ubTx7-d>f%9$dBr7-tkA=1W!eC|%#xRExl9M6R?Ia`c}6Z5o;%=csd%6-N??lDe$ zmvO;Av31|UZq6X-+S`l`-(sxprZJf}uw`FoOywH$QLbXgzJeV)4?Ff{?AVtWbGpdb z$OU8i{LVa;^Nj1A!-jtroAz&vyPRRZ$7#m<Pr*qz!S-?da}9INm<#l)F$qVpfgj=b zzc63rFvt6uIRJ;S`~QU9|3~cpKQM>lAajAf$L4>4Fnx!uKL;E9e(du57@PW*am~Gq zjqYJ=Xg4;<UD%+Y{7&qhJFty@!+ebG%n#T`__i_+<7=+tE5?bk8PngwHE-tkUor-? z3ELA?*oaMc17nw85We+{X|KbMzn1v;oH2nljDdYdTNf&QiVgM?#<H^*w_R<_>{X0G zeax8DO2#2qU`K_(<y`Ye#Md&$29`3eu!Qq0#%>S6i-@NW3Clvp5k6pCI1^hKG+e-M z-sigKlMeG37kv-=8`$0@e%@hhVJ_GFHsjE9u<=6o*_?Y8V-+*8{m;Pm3q9Xr3@?N6 ztm)WmA?!`A`wfCUjdA{|*nlDab@rJ;+D|4t&|wnsJdtBhz>Wuz<C)trj_tA78KM0c z;vt>+8m|#Y5I35+K%>Y*BMAo#8A09|jx7(OhA{>?lsQ>Lm|Flt1~U#bh~vP^X^fQ& zWDGHt@n4uVfH+OTb`2ByGhZW_bb}H7ICo#>7{K5@jLW==y&8rj;olpZJdEna{ynk9 z!<0ngDuFR2c((^>(4Db5$co2a3jN|3^XW!-VA?B;iFYNO@JSbJ-7xfJV~)IJOeidQ zkvs&coyi+75Pz_|6ZUWz*^zl6vBVdA8G~IN=5)Yb390Rk$&F@i1Y}1MFYrM-eg_jG z86RxRm=7F(p7Ac&(}rWi`UtK8mbNy=3h%VyH}GalY^E@w1-4HZ9ZniICoSQRW{hvb zA7O06pP|GD7#L?GFTvCh@(#>tihUnG3}!3<J_}+D0k#D)w*!7|!hHyr1Gql$fH{pB zCxB1=2_t;xN1lPJz8oK(f@O_34(xA8UWVH~<Qb?2Uw9J_aJGRl=}-<n@nUQXPS?i| zD!{sWq!Z*l$8X^|*j1N%72IKI9p>7>+1kdu4)tJPEymBF46Luo*cn)0Ne$+V!PV-- zA%wzj)yUTn0LQBmC*TLis&G8;gX31t4T11mW$q_v4p*L~{DUZXP>Hz*5C<h;YenWv zKrJ|2f!{+I+$c|8fo@O+c0a?lLSwj8jxa)3V9l}F|1|SGpc&jP%l!@mpdOrkiu()V zp%VO3hHHWs;3+s*ntKOgpbQ)=MYy38$b6>5B`GT)4ywU#p3GZ>6!3#PCCH;N5h9^9 z{8F6x7tjY9!QEnvox*f@5vswZqWN>n#^XjqML1W4u){cL50&9!VdfveRCpPlgFg$A z=V2ZsgAGc;DGz=RQ=lt&gA4rZPPq%?pfh-Z%wsz2MqYx+&<z?x3HZ&GYXX_mk_yj* z%wu`r!f#*=Oou+u5~{)jXRaIMT^h3?736&~Jk8h?h2NdXkFX3TLoa9rwZI+DTKFE8 z!!+mzG(!wc14ET<ZW^uwHbEwghhESYyn&>(&l~s^8?uafegxA&#^7IuW>6bSz)c1K zeg&Cd@-fVYQ6O*EX$OtL3Websg9k@p2YdqW!9+-bm!TCjgi25dZZP<89QMHmSPHXX z3?u{Zn0gQajiCncX2=IlkjFsAG1v!R!pATVrol+)3tb=*nt~Tp22ZfSH3mmc!H=*L zHo(WQ0A|1h7z%yh73cshpb6B6Do_>*gACYQhjZ{Nd=EQeGkgXg!2*~K(_kzNgB0iq zU7;hih2{_hji4@6g$hs_ihv8;W#I1yT!P;q7Y@Vs@GX1;*{}iDz$#b<AHsZ?3p3yi zm<;1!Gz^D9FaY{OZ%BYR=mMP~7NQ{%BA_KS0~-WG6Yz&d;0<2z9MplDP#vm5WvB!d zpgfd=vQP%(l_4d;6N*DIC<^i_=fY43Jir~?6jxjq#TmCCPHaC;!S5Zv6IYJoIHnw5 z&Lig&<lGVl36F%U1V|VqtP*AkyIjN5@C?XxRfK0juD1$QgBnl^Bu*r5>O%wY0bh{# z3xFVK3ZWoz+yYub8<6;qf)3CTByC=XS0Ek|pclLf{U8Mf!Vr*j9tC4yJWPVA@FqyU zm<{iM<dsZV1j}FrtcK5E9c+XxuoZT|9@r1x!%y%F9D|ea8~hHJ;X2#~$;TG*vnv#W z;!q08g5>$iP#tPReeeN)2m~9*z0w-wzG)Ag;3en=3D6t*K`IP^5s(fO;B|NtX2M*U z4+~)ltbi=|95%of*ao{`9~^+6;0PRtGw?g)!40?r55R@8p%4^@(oha6K~<;)^}q-G zAqYZ2%9u6~1+nlVNcqzPdP6@*g&{B!#=u07H(X}G9C!~hVKFR+)vyM>fX%QKq|Eyk z4!}=v1dhWQ_#N`#2HXJ|tahQyECj`&G?ar%P!(!HJ@5g42!c>(0c{`(V&O%21$sbl z=m)7V1f<MPhY9dHOov(U4!jQ^!ZKJ1pTJt!2-&b5c7fCd-@_p|0>|MD{0>rIT!%m4 zK1dzH%MKs#TJQ&+@D!AXXQ3L@hI-%w{tyT@Xb!C*5_r?pgHG@gbb}ty8~VZk7zD#% zG>nBwFcmUD>bSWuA3lJ^upCywr?3t-!WP&DJ7F*6z(M#Kj)K&kr{Nr2gsX59?!bL; zqK<Wg!cZJaL0Kpd&q7tG33b5>q;B?yKnQ_m&;lYL652yYcoDil93((*=mY&>APj-w zFdD|f1egMEKnBc$w?Wzm3t%BEfsf#0$bvPn4mQGO_!_puPS^|k;d}TIeg<iG<ibh# z4bH<w$b;)}3+})@u+Ua<0e5Y;6vOp|G9WLCDi4)F+BManCe#6WIcx)H2!0R%K@b9A z5Du-N4Mai|bbyY~8D550AP#zfw4suq4<y3?NCSCO;V>8pqhSn;hlwx+rox->7R-b> zFc;o~`H%?<VKFQPd56+Uka@&1pV%>Xcs+U}d<k1X<{oc@Z$RcE?}2Y&KOBIA@FN_8 zU*ISlgX17?oj(I-;XGUbnSY!ISK&HHTk<yi3HRUuSa4*1vMablAt($*p*VO#DJTPF zp&XQlitsE{hAL1EYCtWJwrgFe2VT$se4r8dfj<O5AOt~Euz}21mA0?US#1HWAOhMz zTZn`xh=vXj3mxGF=nOBx%g_~Gfo>2F-9hHMCPFXh4N1@k`a&}FhZIPKfsh7+VF(O` z;V=S5!YFtR(qRmYh4C-}Cc-3`46nmfm<Dgan=l>Tf*CLqX2EQj18>7zcn98vc`zT| zhXs%cAHYKR5Ej8=SOQC78AxAZIjm4t;(iRPU^QgHC-5nJ25aDRWi9SHSPx&o24y4e zCioIID_d}7-sV^EwXzj=8*Ep;!QBBnm0h^Il|8t7m2YwPDf@AAl<#m4DBt4>2jK_h zM_l12IHdfHD;!pS!9AiJ#T9;4j^PTq%5hxbgmMzs!6~$GS~-I&{8oUoXyIG|&ZC9j z3vdDL;38VMRDjE92YF}*SI`By%C>`R=z?5l+rbTVL2j~LkXvj&&Tae(@(0_Ga|ge_ z<4^qmj=T8(6ZiP;KjJ>$|Ic8T|MZ8h_`mtd4f|_H$uXA;Y|A(Q|9x+<Fz#wROO`So z?uFb6yB2XN>RimJxCQgg!;i({<mBwkW3XM_+}zzgJPH*mT(}6&jxL7%h7kqBLlcav zac4eeG3JUsW2!J?ILySGG3F~{v5ev87H5l##f_Jt73Gy*<t$c<H?Mt*dw2o_;ovNC z9yybo%N0wD%-57-yK!_6j$fGhtHqe7T9UcMPn!zNHm=5O<VMV3Zq7=I9;{dy$1MJ> z=A>a*f=^srTuS=njJcVMmSwG3zbX6ix9enN$X@@qKN8gcRWKQm0{`n^k|K`(8BAKF zz&|62^dEs4jnw;RFu#$ue}S3KK9|?wV$ORw&sQ{Nzem6{_;6mcXv~L?Ko)&Cmsm7r z$VZTTE?~m6gK5(~-x-sqeU3AxQ2V@fOr-WX>|$RNFsa(X)JjgwpXZJV);`}K)2w~& zJLX#QXg-*A?Q`NW_1fphV*<9X3BW9DtWX82LN%xkHJ~Qcg4$3A>cVqS59)&#Gyt*t z`9MQx1is)0{?Hf#pa}#*5ClV02!T)tgXYizT0sOn50MZB?I8v_!VB;sybN6-4!T1E z^n~8<D)fb9NP$#HgTXKqhQml04P#&&OoFK}9cIGY@E&BsB3K41Aq&>PdJr4vSFjy+ z!ME@o`~YGjJqjn_44j8ca23RcdIugT|5_^i<-;z2`;qd>@sV;%K2mo5ReHJcaeuV9 zEMB}s35wd%Wu7Ygbh&5BSEyL&*~(R_R<BvRZapvWhQ9s*fx#hR;jJU1V_)vpy;r}~ zp`%~RKe^l?+@r4czwY8VyULccyEyj0`Mbytk9<PboN83)t!s^@eroXzwifoSR=%`v z+(#9Cm;O}K_xaU6zR^KVeN!ey_*Tp8<hy=Gf^Wxu1AQki7~^}l$m_l{U1s_w&6wxg zaLW>3+w4z#XIB2w_f*m@-;dLO^z|Qb%6Cb`HQ&k8EPmOy3i-KRF6B3PL`A>sB{lsT zkMQw3?A+Avm9`OnLGhjZzKBZjyIW(R-|NH1_)R=H#c$-#GyEnb%=7E;<`Ta~@t^qB zIJ?R3h}SN^ePKWPg?XLwd%@|N-}Igq|ET?i{BLY6<v%yFqW{@JHT@g5^6^jG8|?o| z$q4_%s-67z6;1G8|7)uM+c9JOD{h?PpSo&>|7!nv{$si>@%O9$iT{qQP5!5@?ew=e z|L7n0`$_+2H(vE$7;0(!`;tP9ugopgcvt0$jh}5%vvJeXK8>H99o)G8kF6UoJlV1F ztzA7DPkB4F@#^|x8gHI4rE%K08I8|)%xk>4-jc?x{>W-PY}ls8_t)=i+-lnojb|)7 z+4%OrtBteETLNZ|E)?)bzfu8iS1SZ`FH<w1(=qRWLtTRdX1v!r;Oe4|0gWd02uO}j z4fx)DOhBJkrv!}cJR_j)FYg5uy1O`__x7xSpk|u_>WtnQkU8OpfS(gj2Ar*THQ?NJ z)1+mmLQRS{FV&>|whB!?KUt&6Yb(5)EUX#aWP4oeCNVubHW?S*qe<^VsZA^=(wkIo zHl@k@`ZJo0`1rjhJ@zba^3GdXO^OxS)TC$golT0g`k_g~YA2gqJbk4}rTr|+^(qwT zU9ME%M{_C!KJ{6Rz;#2s14mvC3M^c+b>NO#9Rtr;dIS#rdO%>%ru4vb&rAvY#%V_2 zFR#59xaZx)frq+g1z!GsW8h~VI|C<s{1CVx_e7xkf-8YtJ~BZ$u7!eLxmYr&L{f#I z@ndTQ-D~b0)N6fEQ2g($f+Ekw26f%iJ!syD0YR_LNe|j^WpdCTKfM*ys>6FhVXrO@ zs#P~D=)}B@L8bQX2zq+=!657VCxZMsUkO?=&IB(#>JdEm>yp7^gDM1DI@Ab`_4E#o z9}^V3Gpkkb>E*G(XGeAqKIl6jcz;TI@SI(fg9AT)D>%FQd%@eAEDoM<b9M0P#ErpY zXYL68V(P)*H7}nC9#-;7@Sj~x(<z^OG(Glq$)--lD>QwhN{yyp9BI(BUz?z&p@UmB zeXDP5(+Ppyn^wJ)(zNdL=}lkzU~<#RW8Z4p`qsNmI~Q8q^y=5Eo8I=?*wp#O9Zmc3 z9=0yeoM`&p?!2Zi2bho{Z+L_>>Q^!(Be#4=tt-_-ygq6WGO2V>$nKz4A(39OA&q&5 z-1wy_A=7K5hYTDxIpo9(Z-pG$^=`-?hZcqOo4z`v!tD(qv!C4&(x}A2kf(n-9@3Qe z-+fcc*isWcY%`mcv_1D(dE371>b6e?HL!hpB+!;<X=SUF7i0VL^LX2zaVa*#yZfSg z^@=g}_FI0*ByFol3JCi~!S<!yBi*sj;Qp!IlLk7r^4lr0<plNvSvU*26NCbvbo*cZ z^WeiG#R}8@bE&k(%~ebQ72NNySn2t|gH~<{$5+PQw2q7K-Xmf3Uq!E7$zi0tllFkr z{ZhY69WHgY)YVc?OWo|Klcg?p)W1^qO1&#}uGF{xQC(Yu@Bgm8{kuB%@p`vl-P?%c z6s&&>*1-kqVMkqDus(Lw$t0Y8ZC@y^@K}^QviX4TNdkL%i2f&}9v%Qv7fW&$+)wJ} zg4^>R+m?2f<9msB(epvlg7kg!Vfv<zDKv%jowU-kq{r)<A8e6i{VS0l3AbazJmb^q zrB?@ydTrF8S6^!7^Njgz{})T<OdU67+|)TszS#epz4g8<Ykl_4oI|;1^KKgt&vMq< z-T|SlqdUj-P8pj1*ypv!KAoLuKfxU`Yz{1ebm#)IUc5ZqB?5C{JFJ9Rz*IHE^fJSg zFcS()$1+T*GE9xKukp^~+E2ibup2gmv`dylCP@25+A`9vc@3o9Bk}(y=UWP6AP6eJ zJ&yS?#6lP_<;yUI%P<v-o(#{DfQ2B@*>g~G_xOPWY10l&tMA_=kd4H?Ny&+(gRB>J z#Ohz}gAZ3YySliobYJ7~Owq!Nm&~7M;ql1hClq>6rb4A6#XL(E|7f{cQOxN9_au+i zEL_~VkjI0KAG%vy9=N)37`gX|K70O>``rx+HZ^#BH$Hq2c75Ic*Id7Twp=+LgJ-Uv zJ!1a?H|L?q|B3vi4VAx<--Kd|CKMV$Nrgg4Ul7SePd@qT;Q>BFErPl528@FdAbDEa zpVA)f0sr*b$`|nv267+Q0xL+lQ4Y#N8L&7NF5==|sAw^wz+V2i6eB<sOGVrZ8|OlQ zMfhXNv`$DH`}&M`7cN=8>eIF7H-EkDo1MG&?#nrF@W(@kkNlc@;>4*_XU?2Gd;a`| z3zshC<z2mc{rb(Dw{PFMb5|aDdjEc8i*PAhT}a!om>1i2jI>4$8kp3>+OmIYzxXt3 zCm%0wzRv$}?tJlAdG72csrFj)70Z_glk;ivA8Ce%4c!K}IWrs}y%pGez5Klznbhti zK@lR|#W*>;)5-AiGBpO8&XLjGBHG2ocIX({qFrpa=&;z<csJmi8Uy(g)1!CNz<$=) z)c78K5>u@;ynPeu*YIwb|L5^<y}fD-H60>awlvYP;jyM={J^w_zl?}5ErzBgCMP5& zSR?x<4C<R0Xf;Ga!_JYWM*W7~UJbnm+JE6V)!>F+-rgoEB{7+Hvtw6l_hHsHUeUvn zllyaT$O#_qZnf`UW1zKjq_swZmjsfC;8f9l2laXw3?DBa|AKpj^-Jm%Z;ejvpO$}x z4Vw4wmlB_r)V*(_iS%L?Qe>6qtC+}|{AtJQAdG)=p6C@If0~E;`|u~g$Ha!eWdGAp zR3rK0Yg&eR+yD5B3NUTMI)s~cF_AH*d29Z+GcDV;=xmzzPad3@nwFU0xJ>g`Kuo*- zNdpr#R3@hXpyUL{M!|SxLTsNz$JLpr9%=D?hYd_jHQ`CUlF$#oY1ub%D8C;n5mIZQ zwN+~T;6#!yH8K8S;ubi$wMSox-;T+BlKT%ywmMEs<dP-A!lRo<KK5H{qsKk+lVGTc z=ojCszcnf~rFY^Wer`_~@l6@jci_W-KlFDbx9%sYIMn{f5kn96Y?j!ef2<={>QM)2 zcx#hQht?qjTVopiOGq1<nC2ZKO?2~^*iNQOeiT&s`_Lztm=}mA5+y$YWJB`G!~7+g zr9aVa_4jXLl6sns?IL3Ax@CN7d~!nnzKK@HE@alnz3hicFp-1$rX@L|I5IXe-{aA1 z<DTJ*=>C0&JxtMp8`kJpN2VWYqWVZC7)~aLdOkKRCaPU4(>yXN+{A=MMw^)E7A;In z+ZOFiwEa(5Y^;fHCf~}Rj(rKo!!tyN#dPav4@b97+={_gA1_~%j~}l8qq~zetR36N zT07P7Zj_Lp|5D@oP-vKlb|$t1r#GEinCKR!WeY=L5FKVBVhZkNjSO$AG4fdM;D%`y zVWKDoBuOJ;ALfCW*vN?ItrQ)m85h`)&4<Do6WiI~foEsJT_d4j?rubh<L~9qv0Ap| zhiwUA%P1nLU2J|jx9n^k?Bms_0VT>q54Im_yMJ1IYFcWd{Q_IIjWsPgM-jRj1HCwi z-Azu*cf(@x-FOPqSRb#3TKd^f8S~dc2qZa^9UA@f4vkFMpoFCUF+B$LO-UP+n&{*G zm<I>(=4{p)zFxlEsF9LFNmM6^)<+7Ef*aO|&L-R|%B%S!yGUVb9JiC^O{<TeH7R*u zTI!&FiCkR!LGcM>mWTQKv2AM$V%9pCh;I=Y(cA>Ykog`h3y5Ox$Gq^dMntwW;SsGO ztj+rOADBk=DY#+nXRkUQ^{Y|eez`3PuLji=(5<4{h8NtnhDXITBB~3Ns9ddogNPmv ziz8D|Kfa@Bn>1ihQo_T#L^riglh|(?(f(lxA(xyuQ0w-XVO&r@(;|g>J~FXae5?3= z@?BU=go%xaZEIq}Tap9ih7FhKib+b2PfenBii!NY-~6M$51o_0Ifs>+k3&5S8s~_x zh9wM+Pww%sPS)m!oIfJ}X0(Qp9x;96`=urIO_K^cKc5UtlbmR;bFGn);Wc{L>z>EI ze)JnH)OCN^_g{S)dii)akZO#t4L|pmKR)uOx#JA7(NO+0G93~NRB;_*BWX$uwBlN8 zXsyv9wp}=LuqlB$#1e~-)r!_|N{n!+)?>Wddr>@fh@mKmAq_hDG%?{}6gc5w5wRw= zMQ4=OsIB|=<95owe14xFOAo)b7njmdqDo50KmMaNu|%2gKYh{YpT6MMldwLT^{nlp zOjs%nw0?;R<Rd*bS*cx16WJ+B%D)yJOk_LCfiU?KX)p2Hb)-sc(Z1uuAjb^rm(sg` z@-Tbi(mtYuqFH9&BCOuB)kwE|>|4I}t^Bm3VrmiYYd@CWuTnu8vTs}Bvt1_&eEvw> z75MsLx`#K5^v=(!`L{yH$j*lNmRg%;p;THggmp5J(G5*RWHdLyV+~08wgtBB#N@<O zGJ+$8><wwtD*Rzqx7Kc0U`tHykAC}jL8q5i$Fz#?8$Wc|BX_UWk20!un}*H)@msPG z*AUeqyu;uA-j`A@GK?G<8Q&{8F-@BMNr`<E23n)-O>7f3a9H0#{q&sL8?YCZksV`N zSbOwOPK&2sm}+Fxv`!jmjf|IKl181q#YpQRB}Hz7+V)DIj(wYUd&8lB{V`JbIEu;w z+8Ws^R*Gz?E}QpGN^$J+d<UxPu*j$w4OO%F<USl%x+_*Itylt;B<+nbDu@0_35oHv zuv<zSFEKTVOOaUY!G-2~=l8oL4J^Yu7|Tcxi)T?+m&tUxYU3yUvofj7Ibhqc7Kz@n z$9N|fdef#DqlY*XT_!o>@ToVDUaM#BbPve)`Ri}!ST_>~cgMMz45&BW%>=+av<GfB zZW?Yh>_z9nDM)AgHq3=ZkTn56m<CzmhnogF(FdU-x;FU2LCD3g3|xSnY`cIbbYVLb zHyrm6=dt3h!EKA*CV}k>xYKZ#;olo~F59_q8y^2;%ERsoe6mYCx?SL_zm-|V9^F4j z9?<un_~cErm|PMq=XKWhy<ss~)8Q@F*Un^{HHX=Aap&{>2e?dn&-v71Ul$p=iQjGG zd)DFQwrA~O2iD<YAjx5^o?+ddcV{%~_@ZCt`&U@=*`4hqbPDT4(^ykDlx@}>#<6D4 zw8amiBhl^95Xz+bJouk|zlgl!ec8!)I%{Tn?AlwWxtUBR_IsB4`|lI@-tm#1coN%^ zTje9$$+|6mvOVyz?V<X6Il3HaRDo@=iH_C%CCAJ6lL~Ch_tSJ+zLRsjRbX3Ea!!G5 zImdeiwk157x-B*z*<M^=TaLNBz_y%kwQl#&{ntFUJ!TO3yuP!^g69UK!<|h|3uiMC zZH;j@xv&83{j#&kfIaBkUd|@Hx3jr{j%GncE>sxeW^zUnVjd{lN%Tb0V6wBxM0>yG zY`j-Fo1^IHHO?j_+u67d<v1suP4sDJ(-7^M$8WDXo6hK*+s?+y)r~=?<7Qc0%w@vu zS<=PiJ?&z~@{rq5D_393#e9zTtc|YgVtz&E`Ma2$#xADxaPE7Xi-`+$F=1%$HXH{= zpfjWKk99H2(9u0yOm?D+*(Ce0a3p=0i}4si88ixiXpYW$-Nl4Xbur24%y$U`97N}> z#|pH;#au_He2f1+7vnaPR5;FYPPiB=aT|BV#bjbJzlnb?V}m)Ag&v~_e^FOsE$eEU zqch97nz(0NO)NTxhxK~bcQxJ7={~L|y`if~L8sVUO;$@+GhO!S?rK8&yP7?sM{vxM zuI4cMC>)1Va276re2R{y+#JPk(p^nYbnfe%dxoo7f{vceIX-YTThZx@Tuts`j)nI8 z*wtjhHMIGRbA$V9?DIJ}n}^GWphLHCZipBE-L58jkE=;V#~t99-@BTr=!~O;|Cp<p zE&7bB@w^~+#*@#J7<du`Ph#Ln3_OW}Co%9O2A;&gf0r1L{=Iyx>9ijQ(8ox~@8?T@ zU;6#hUzdLSKYgzMxBdK6j6Csw5(7_S;7JTTiGe3E@FWJF#K4mncoG9oV&F*(Jc)rP zG4Nk72I%)Q?&;!!%Se!m*Z~URR#&&Sy7kocR@YbE0Cj`a4OKT>-PY>1RX1AQSamzA z+eO_tbraO>t!`g+Q`AjUcc{7})lFA-yt<Rsou+Pvy0g@stL{8?Gu2(B?lN^(s+*<m z8g<vJyGh+_b+@UzQ{BDl=BRs6-9zdgQ8!oJQ|g{o_ky}+On!QKsvD|qw7Ti)j#qcG zy3^FnP<NKPbJd-vZl=16)Lo|TN_Df;U8C-LbvLP-t?o8;cdENr-5hlfs(VP?BkJa= zdrIB2>RwPcPu=V4-d6Xnx(1t-JwL1Kp>9!iJ=HCvZaH-;s%urZy1KR1t*5THy1wcL zs2i-V*wf@b3fJw{>WVE*{1bG$x4P--pP_E1x>@RGtDB>4uDW^Z8tim(Tu*ha>Uygi zs&2Hpaq6b1o33t#y0dU4{^qJH^L*s^nYz75U71@W{wsAmOI?|ZBmV1kdy~4^>c365 zcd9FMhGhR7-9D(U%<U2XBf6cduFNeG|FgP%LESv{zpmT2)fGFY>~EL{WX~7s%G@RK zFRI&~>dKrW@h_*_71fn_M&e&xw`;2_^P$AwTep4Hl{r%4AFSJ<>dL$&@o%l$ZPk_e zQ{o@1+nv>w`A*^=r`rkY%Dg7=@2lG>>ZYmxP~9G>Zo2x9*X_ybPE-F3-JYfHT=k!) z+nMSvQvYSTy;9vQ^<Sgg>($+){@J>{P2HX9zgM?&)IF&Fhjjahy1D9qO1ICddqMs4 zbo;uxx7GiyZX0aa_VmY<c=OQhqUy@rGVw2?+vU`id1>Nr)$Qu)%3L+^uczDI>dO2z z@ek1LV0A;)KU}w4tJ_xnqjfu0-OlRYMcp`c6V&akZeMlN)E$Z|*Ev$%boC#v+mqFu zrv4eaJxkrW>OW7nGu2(B{>yZGrMg+_zecy$tGh}4vvqr$x;xc>uWsk4dr<uk>GlzI zbJhQpZl6{6g8Jv__H}h{tN&fyHWTyXV-s_^6SVntxPZQc?n#V2x3C&B>GIbx=JB%b z*v33(0uRyRUmavFrD&$dJ=6)}!AItb$(ls@$a*-tuABcH3ejcIq3Z9AmS;tXe+s&v zYAX+~7^PaC*ZijHP!`mFfR^=+)&@MIS9Llo+p=|^Z1f@3IcRx~gZ=m{+H>P~qOA>C zPpLW%?X5Z!9j-bT&6Gj={@yIsWvZZEr=w+VsT{}CH~*c*qT|q?sDCDUhw5nJ@0e<9 z0MC?Aoq{e(WXW%{(eh4n`*C;xhrE|qbQZdqYHt<-zo<Hg#lUH*Ls_l&y2Bs6M75Pg z!e6S+Mju2=yrr|E?}S5#8gosxcXJ|&scy1QW(%H`qS~}1%~gA&160Sc60o&nf3&Qh zmEW2+JZD&SdL;7{Rp&;Lrf9jY^k~*$s?J1zru$^0cdM3%iR9`&q3CPspM~~dTAe+d zEZ~%Pp4-nmlKH!;qtVSB{$!-isxx?yNP_AV7Tcyd{3o&=RCNye9o62Gh)=YHITQVb z>O3-Dw(6ACJOf{KF8VvwaasA#ewN?nqED)S`X~ACycd7#r#!b?{d3Uw9s96YwJ?RJ z{k&+V<JomKx~l42w3ljGP%Q6Gm;JrbOvkh9ICQk?O!P~tbI}Q^LqBJ3DO%z%8_krx z{PVI<d4gkqv@GzohdG<)-0S|{U$I76wfUNL&ALx0dYkH8^iQhI*8F$E%W*u>&Te{4 zbUD@DXdl&~=$2>+TM9ZxwfAAduluB+ndWHUC;b@D@>YL&kjrBA_xzn}Q~x;hA=O#v zTdMQW<=peb<9UHK*Q!I&FRD&Qk5HY3e#fD&kcU-!UgcTis`Jn%RY%|B`2<XSm21yH zS67{bZlPKhjQ3XUjh?7F8@<e-AMox7)p_V6s#7SDub?Haa##!fK>c%_ET$A4SvhYe z?+0n1I-@@CgHfG>epR(BU>}c`<9MT|tByv`SDo8{cN3|Oqww7B*ryTiic#(9YcaPR z{%DWF`NzyamscIldrjo|>~gLY-g9C@OE|rG@5xK5bI>WO;{tdmjAQ>Myz@r=v(c+m zM+fm<8OQ#-dnH$O7Wxm>dFT>F^3N68n)geoPC*B&&O&!^>=VJeQdFm-(^Y%6;XNp- zz0n`5PC;*0ZDn40j%t}hep9u~HLp}u(*@l^wah(FRxK6m9LGNBEvjWs`Z?7yH@yst z%_ZJs4tx{UG8ev^YMB#1QMJsCU!_{+$p4^P=E~nwEpz5;7SBJXeeS$!nL|HPwalge zNVUwV|H-jGbL-to<o{OY*!!xMx%NF&%bfd}s%7r|Hr28Q;GAk%3sAyS!|=Mr_^Xz+ z0k5c*H3AbHnzaHStClqbKRWhj?SMQ0#2!C$EvBAoSxfMuYFSe-$>G18_kTJ3Sz~ZY zwY-C=bgBH~$eM%Zs%7m#n(EANIgaW)^t-CfKH^+;G<qAlxa9Nwyq`z?Q_$yCdw<8% z@=E8QEAxBa;iTFe;vGGz(|_iELEDdWn0r}uCXJ03Rp<Rioa_E6XUSKpL(f^v2-VT& zi9^*HzjME<PQSo=m{faT<efhbfAq(yGtui*TQBj>DAgJ0!>aSp=h60XUgjM@>Ysxy zUMBw<qw{zVnd(e*UDY{gU)8zjDAnc)@3B(td6oB*skUCTn8B*OuUpJG)uA_7E227@ z2G~5+<`!#ARA=3`n4PM#(YdN~{va)$$`7aK9gC@=IvU+fbqYFBbtZb8>Rj|<)t-Oy zUM<xb=;NyM(05g*^MH{GW%JLKiw;m7%7Z`Js+RZF^;DgKPFJ0cUf|g00q@jOZKXw? zqdF6PQgtXVk+`io3;jT~r-zeq<KZ}RzgW>lRfnQWtIj}IP@RLWrrH#8GIbsMqkUB8 zp~KOV2SN)wnHbeM=y-=e>yP^A{<0QnifUO`v`V$CN!q7c))(DSombk)6fc(_<}4o8 z(nxh^u#<T~btXF9;UD5;K2RNp{z`QU`e)VAHYamMb!MoODaONsBu+fToJ>{K>F5B} z(ok=!Is@HTwY53d;@BU(LUk^Bi)z!t$^7Kl2Yp_(XG<q@S9KP;TzSnKt(=Un>h#u5 zrju$D;baCo{LwR1TiZC9)v80EcQV<kQ_#Pvj*E0Mw^V1N-74tywsSINRY#+1skXLv zGQp~I(9sV64o)UPwKsaW>QJ=2t4885vlH=;mi*xPvXfb^+8h0u>KybY-9MU#@O-P< z+Re$F(S1VW$OG!1gDzAt|M(`}$y7qi@pF4Qnd++Z&<#~b_jWQNs#DPIRp+3)tM*KC zGW{L<pyj<ga?F%hoy-K));>-q!{Lw4RGoqTM0Ga$Yt^28oy-B%(J4;mxat)2Z>lrV zmsIDXudDVR;AC7Y<zHh8x;k3Ila6kt+H;_jX{R~`-9>dC`c>6AbRI{j_8#P9CaaD{ z&rzL%&QzT~*vYJS>_3$7t2V<4v+C>-PUa?B(l>XslPU6Se%P$9k#EuVbVoN)osDj< z+B2Q7>Hgm6p{hgC(^Y$pCvT|EnCxV>qwVK<-N{^39X-v-JXJaWyxC|U)!x&&M^sy9 zIGKK`<7RU0s?)!6GVi11m|0t$%onOt&O4bys-u5*GJmM{yx?SNTJ!hML$^>JchSkD zsP?=>o<~a>$=bj<s&mkbRcGCFGV4^!+QDqqvQ}`n>hzM%<_E_<rJT(%hh}ZuIn}aG z?wZ4&wQ~1V%bGd&Dw-ConJcAQ*3VT^Eo<m%sg|{LK8}6p$OoyGb#*ON%i6jq$3Ey6 zRm(cN9;#F5?Duo*Guqh<QJtOcY{sb0Lr+y5H^$k_R-J)fpgI@*k?QF2&gL`KvYzit z)v~5<hw5||^Bz?#>->IGEo=R*sLn#)QJpu#*%YptA3s?$olP0lakHFFRn>XCpvhac z_uI}U#Gx@_v{juu&)K}BIxf@M^j4j-(Af-Dow3;2j92Zw!r9Dl=#{KTbm)(r%_@gx zZQ^>>vOe)E)mi9oReP>=Hb1FOL7!2bv(DMvboggGn+K|8ZDXNo`PVCJ980T~b&i!( zXQOMW&bvZ>P%Y~qgH)$ukZGY>)<s6Cj{C#ebW?3LE+)ybKYE~QSvNUKwPEe#bk(ws za;|DwPx*mrSyQ=EbvAmfLsxe(*{V}&x|rRnW&Pz3s$~u4G1ZyqvyOdOmw8pStj)Zq zTGnWKRM-5#I?Yn5WxZxa)v{)@rehzpw`y6x8K^q6y^D!fZDL$Zg2Nx3s#?~1j#Mq{ zJtwM`b)OlkW$ovCs`Jo`RhzypX0_@#^p~pB(R&>Gqkm8x+TX>TQk{anq}qFsi@ELa zN4wO>zjj$~T0*s~IjyK#)}Gc;E$dGksg`x9O;yWU)YhtHO==8U%GH!i7t>R94tk*O zllvigKy~P17qde5$v}UpIvPXV0o5sMSktOH=X26db=+DPQ?zFOxy(8jQw1$$udIiy zr&`v<HdZZbW1BhlVU290YFQ`yg6b@EAJwvUc93dWKRa5r^{R_`)8UVvt2+Cdi&>~T z<vMv-bryQ9Lt_BUR_%F<JghqU4r_T;=V2K9Rdoh0l{>3i*6&_XEo*r1sFt<7&b9Kd zUDop!SDlM4r#hvWtEs9w8(mLzTya<9uR0SQsyYkZMs+SaR<(BtSM!SM6m)OZIp|c? z*`-{~NY%2oc#>*aU;LJ8S!ev7YFTT%M769r{zSE`JKm%^7roQ5PeWJpgJU0bu4-AE z{JZKL^nKOVP*+p2w&wFNR}-LG)-g9%Eo+%0RfqO)H9b^kqx(5DM${pyQxaXx7}cgX zYm8M#zsee8$3A^r%_7xteO=8e)tUWV&3e_ce)?<Gc>`EWtvVys)%>hl)>fZ%XbiR& zRm)oHTWGo0qDPYl>S!KFcQwUS%Npx)s-vfp2UMp|BM+#~LkFt1zTs+r52n4HiSFR= zpYCe9IP?rx(@V9i+fG%TjUK5wXO63xs5<U#S2Ig>26~}tD=$!7sXF@|SF={NtONhb zp%)P+s%1_152|Hd_zBgrKK!z3StEW&wX79)t*hzIdhrsfW!?BQs%7nXHPy0)yuM@q z-Q*M1vYx!T!~Z+tM769h@8a-hoq12yvetZnYFTqW(&5j#^NFfM&$*g+9Q&YGtCn@? zU!WyTWejes_&d|azV2%FsZPJ)YL2NkcU;YB$3E!ms;z&zntQ6_&>qj_A1Cgvt0|*8 z8(m&?=sj2aJ5l9aaSvEm@7Ukn&9ryu5^g5Jp`Ug$L(tF4{*~R#2=&jb@;}&n`|zl$ zYkzzunLyCsiHeFZEwPR*cqtM@B@NabG6ORjlv_cuq9IHYNX?tc42G6K;>-|E4+FH7 z%I($aZEfql?X7y1$VJ2?AQRNufN!X+;!Aa=X)C@o1W@Pu`Ru*Vyb;vj@A>}oeIDk? z<gByy-fOSD_S$Q&z4kt5M%h9Nf8W<e*?y|<MZQtC-z)g*fOjjn4Dc%oUJQ6p!S?~? z3+>5I58!bM{tWOp0JB~`v-NF-FIzUsc9oSM@FE4<>PFcbEx2KnZMA|OfY&Lw4Di1x z*aP?>1uq8NtKbg6Pbv7{0q;@pZvp>7!99RqQt*MsQMOkVytrwU?R5or0Deos_W^!i z!M5g6wnG+-=h2QT*a<iRnC<0rY6ag^{Ro)9YfJgu2lyfd9{^mc;G&jMwrdsa0equ^ z7XrRn!5x5?5gu)`**Zqqz7P1TV<20=KO`Qo4QGt*Qg9jI-zc~PaJPbc06%5r#~Ga$ z0h3M{;P(`~81NAVcL2_tBJ=PJ&Ugj$+|9ozm}hOitze$7!7H`|O`fT#Rxr=e+^%4r zo%x}Hd0yro1@nx|Lki}(m_7yPhrp+T#{rHhxCro31y2Ti%EhwY8GyMD&33r}Pgn3f zz;hJ52=Gk`UIw^P!G6G<3hn@Wr-Ii3{*8h+1Abh=_XFOmV4g8~N5MQ-GOS>pB`KIH z`QiDIA_eoz$R!HqIT5#lc{bz*1v_v~;8q0}0$!!y^8o)?!4m=hTEWu+Z&Pp?;6Et1 z0`LLA)RTpP;|lKw{E31)02dZZKGy+uDtI&C%N2Y-;JFIs*@`L!^E`!L!8}9JrC^?$ z_;&^Kti<mX%<~a_3g(%J7XhDg67(78AzoLotqXht);MpzgLf}0xCd~-G>IR09c2{U zvmEPr3m%0yl7gqcf$|FOh}mp47Tkj0%vNyG4{)Brg5SgM!7F$p@;{_t+q-sKua)N= z#EKO>0QeIHFaC?&cJ?Kbw*v=Y8Wn5{;5R!IJoP(xU#)`Yy$QQ)<^L1*EG+!nIM1Nq z9_$zVn}VBx=kIJ&CI`S<uYwEzf<0~v51MZ)xa=*=PZk`<S&QkiY*B8G?K}l<1UyZ_ z_t_CIRq(tV#M~5I26_I#%6~iF)vRE=SlM=uf~SJF-z)f`E%<#83;&wk_6G%bppAc5 za2eqIOI2Ht=R(2`*fG4bX&PbJItT3Am4MM){9&(Iz}QH|XHgowEDdf>gO{hl9cgel z4gO&o{Nprua~gbK8vL6y`1fh>mNa;K8oV<N-jfCoq`@zz!EdC&@20_nY48VW@ZmJr zei;QN<ufJ?J}nJCCk?(J4W5_=<E^hrI+v!w-%f+)q`?(w@bzi%qBM9}8r+-)x23@y zY4F-K_(y5*&(h#uroq2WgC9<Vp(-5+|MAoDd0&JDZ3qF{4&wU(z8~WI5xyVe`%iok z60{w{cNpKp_~KJ`1lObZeuD3(_<n|O0$&^Edpo{4`0~|b4t(?QWtma9j>b11-!b@} zgfGwa@b|^X;!9sa!?zG$gcwDc({Mc<-*Nb!f$y34o`vste9y-B9DL8k_dI<2SU)}p zmx|9Wb$v=*cdKhuUHjE_kGejsuFt6Jv+DW>b$w1<|ER75>bh55_o?gi>dG@t{Jf~H zFRAOx>bhTDUs2ar)%7)X{gb->SzTXO*EiJlfV#e^u5YR9+v@s`y8cC7-&NQ5)HSBA zadky#S$q&y79WI>#pjmGrEKB)iqB2zYROyOW?Yb#gMP?CALKy(Igou0<emeW=Rn>$ zkaZ5^oC6u>K)yMUZ4Ts`1DWPPo;i?Z4&;~v8RkHKIgnir<dy@O<v?CJkW~)klmi*% zKt4H;O%CLe1DWJN9yyRj4&;yn8RVe-IcR$h+MR<o=b*hgXloAInS(awaExFK*f9p| z7z1{U0XxQk9b>?bF<{3Suwx9^F$U}y19pr7JM`ZU{kKE^?a+Ta^xqEs$Ik%32;mF; zw?qH!(0@Dh-wxfkL-*~_eLHmD4&Apy_wCSqJ9OU;-M2&c?a+NYbl(oWw?psk(0e=d z-VVLDL+|a-dpq>r4!yTS@9ofgdy%cOvSC?e^@{qsC6&u+s;cp-O59Xe;w83ADwotX zR@XHyMM6E^SBb153BSkStE_Kox;4;jt3<iBhUUuUbuIqNrFbWMQ<Fav*;0d7wJ&d~ z^VMYHn;Nt3YilzRqM)s^s=mI-SE&dzRH>?b%c>e1Yw9ygAaz8%pfqBNU@ePEOHF+Z zeqkb$bW081MxTvD>E^1eW&l@HTU+DHk^)2{nt)fLXA(yK)`l!O0@v7Bbxgj-CVv)J zf&ss8S!UMT0yTjeyr@4L&)j(HXj64&_L2E&#+y@*t<cx%uR_ae#Sbx{?^{#NWadhL zQ)N~andr)fy0&EPzG<z^)hv=x&(c6^Wo=6h8qw%m0X3{?PDxDCKBh<ty#zm^V51&Z z*5Ky@>YJJ&ut0M)-twJ>XsD~Mt8A=W!rw6fL%3P8f|9LjZmwS;5e-$omZnOpBWv1f zd;yRUc}0?~vJPC<wY2)dE8bLXs}wp`sgw*Ht6G;g;f1wGZp2RvR5rD6cuBaW>Gq@` zn(M1p)U;Hhe?TTv`O=bVF*ut7DS@+<qVh_-#~f9t8f#mc8dy_hU1M!ivI@ywZ9QxC zEvxa}3VBplHq}<Dmxc?OwFWTYlP@t>O|k@uHc28$M5V8)rDcUp@GV7ESzS|Gg;(|? zFB@a20)9!Mx)KAZ(a-9T7JwSnHA+S-e(D;RSJl_S@KiN4vtuA&fHjq^bt!#K5h62H z)icyZ@K#k_d>Mu^@x_-dk-)U+3NvlG!dx;<VJ?}bFby>g$$|n-;giLIPf`G!BqCts zzrCf-Un8g}$ij)70w?O5>$()LqHb*E0J2r$&f8dr9tE&KXsG~a<K5<9lKop>+ayJ1 z-Lzt{W7%9L0-td&l^_EpdSY3+MPor?t81G5DcfOTTQFLVA#gi>-a#_03_clZm7^57 zTYXiHNmY_+B2XB4DLW=GRvAl0np*4pb!l@!ZB<Jp-mTo&TF*g?SHd@^l$dGOxT;$M zJ~NXzRw~6$d4RZLlSLY9Znp;JNXZ!^cjOFWOnx2>Rv|~y=Mgx54#{<8b4!!2rWKYY zWhC+ba#8Wpn&fa&O=Ajw1_>>cW-kptk|>y;e5QtYHm_C=WyMBH{#;?PyfR?N6P8uQ z$f8ImaQqyfFRW!v@LrbTec>q`z}xwyd8NZr-Guq0v8K7HB~3L)5WI!LM2galba+zJ zbavwR0%>!2cH$D4q!c$+D!Z;ymaA&S8^G)9$TGM~yW=30_K@ZpHWAjsLfqa`)m+uW zUuvMKOUs#_fMH+B_lqxw9aTnGwj(V;BC4vthYZrsl9dq;%J5j!2<4FX1zK8Y$1N*u z>0DhKB+LwG$*rw;<9Sm0nDLR+3_?{c*;sI`{FG%){?^;!+>J>07!O6#Y;CIb3n;5D zuyLFcBX~xN6g;kU?<$G4rm&25f^E#}S+!=*+>%7L-<Tw9`4-uP(;Z5gxiQcnnv*hW z5}#%?6(Y@p1_lPHu?Y@?xK_?s0@b0hs7dqLj>(0I^9!=^efl*`UrbKrJ3c{~;fwjp z%J*dmei4r;k}Bu%i5@FMX>!v$KU2_>*5~9(=kANM9hY3H5#&*J$Oz=JvV941U%+3A zpvrh$lE;%B9A_HjFDJs!%X}=SUm|xpyCY>!wJ%$)Un2LHC;sJlPcftNe^CX;%DlCi zTJc4~{+wLtoPKdO$>0e2QcX$8^^3E8336Y+U#eb}@wg<9C%cjQJtJ>A#m~!pET>;0 z_ZJaQwJ%$)BN5Na{pE>&Io?y`RsPSbfbN3$-8U?S)HFypCJQBeo-CYlR<Kk>bjn&l zTI<pzvHB(~JK=8CH!TgM1^}y2t7^EIDZI#C(_ELCTlp<wfs-VR@C5uREO~5LpulO8 zt}2pQp>@O7Nk?c|U6WXqVzp|4VlimlNOWsW4g5di{5AD(E(p~$Atok(mX;<MOoE7M zpk52A#P7?H1N?MW3J3d&b|tg$cAC7$Zx^=Kz>TCw%QYtRU^)lM6bW^oA|eXOyr~AU zdGI}JTIyFYLI?($7z>aD)lxilgXOSwBi7WZo3s?MR<=@Rz}+D%c=I6$xCAbJ$^}~1 z0FQix#Sif#Eq;jq{Kb!z<2Z{SCV%eYM`rlkm7-O}$V;1a0>{sB{Kb#8@*279=PZJ) zg2!q3=eBwzSt}N)Ay)WH4ezv+EXO)6Wu$IBeydqaYDJqIqGI%^NRq0YC@Qso1*3uu za=bOj!PX!~T7w*04L<A2(Socf>BEJQrDO%oh;vnm1(~f9PHZ#$Y-{aO*O-2X6&(gp z+H&+5r@QJ>{DP!q0Y^;z5|;cJA}LcW<^`r_lkp=&SdS=>4?oq3UQUg!>;w*PMqRN% zkXi#DFO#rEO6JGQV-4tJv$HccwaCE#=VhQ7PNs`#VgyA%r-=;&**U2uDr{!NQ*kY5 zsday{0$E^WtoSjotegVZ3Js|oxs1Xx*p+VBGOAIDm{>T?Dej=1D=Os-n8c+TUfC$Z z(JC)h7E5wJ=L4%tIAdjG5(J51TpwRC!KmETb*)v1lXIFu7X^?d6`G>rRM#MSpZYOg z8RbpZrE*{n7Og}aKtzF)=`s?{K`E;Dr3Wc%vG<fVvc=F%7UU!@$FbtGRs0sSlow+? z$}>=@Dze{<nI95K3)LWBb=odgU2QFAiDWgr=cJy2XsKC>eUG&D3v*?!{)uBSJ3SIY z92v(?WVT?cuk*Low55$cxChxN{90w@66z3x!~moPs`%~==>HT`qLb^tpJH1eTI-fJ zRDpaw!(8Y-{+hCNtHdJxm`p1vd>G4;)kwDkOb41P8-!|#$Ug4m;FBqg(q<(Kl+443 zLNW|O_X_(*sKtNDG&m5=B2b6cAm-$!0}+68f)tu05ihE1^wkHTWf(`T2-(>%rL-); z-hkLF5RqyzT9?qoN@+JYfkcV`j5j2U|M+23Uf?{j6R339|EL9=>|I3~nKF~HTLIZM z<JU@|?AY}XKQNmd)u~iaRypy5;2<kDeOhalir<7~-7`RhN$_#eTWJW2B+$A{CCk`9 z<OXw9*HG=l)PilWOQ0S#EmKt>G6RpT(3Z*;m7-dK@lywiYI{l{t81h#DFski<>0Bi zk#bNZQYk)1W*Hk!iWmzjEm9bzMV3Y?yIk42O!TgWwl>lv9=(sI!?#*q1GQI#gn?kE zWcMEiH3oSljLK5~GNCv^#Z$Il5jZv<3|eC~^3kp>!3MV&olrjb`t=C2i(bo4qew00 zpy$ms+#t=)B=jQ5xn&lWE{KSn;wd93yJ5l?wmj|3E~K30W}p~b*(Fo`hg~%(>0`@h zbVa7fkIgJAJ1(uX<j<p|nrpSG4PJ(fPl~0RjJ&hoc$=EzfI&`anBncJGTbl}z93vR zAZ2pvB^F6S3g=Ja07;w=zf!K~2vB0hW|Uxvki<14OB0f~<|K}g#5LWDDN2;3@O@xO z4r@wTLCy4EMAtx9C4{X{3qtD^Zb`DNfJj-^fvr|mhk%mXW>#>SSjBa9y~<gO$S{`5 z5FvKhFrCv<!b6l*Nt+`WUWQ+Oh0G=1C+?atlcds`;k2gi{8*l*?&|6??$BXrX&L2O zGiWYX0#Ws4+|}Z)0nLyN!lWXlE1H3I1|1W&O}aK>3QUU#2nDii7$;gqrq$o3=n#^m zoBfw49GR9@O|aj9pZ2a~s?0}Rv%ea+R)|q@L#X(Y%4syy^c#3Dq1t3$5mKozj&032 zEP{<QIe9^Y6(K7R7S@)Av%;E&I;=%R)ky`JAx@BpjFN6$L#-mCI+^o`<;qm!2ZvRv z02O=aZCP_IAVtQ<9a!!c;Pj5d)z{soZ~{6;<ub8yQ$>yPr0;i|MZcldq7O*c*-+JL zamPlsR@bUgKrdD{yc*4|^sz657%(PMcT7vUJ8F~9$|ei63TIjn2UH2KK-8J4zW6f5 z74f){DOE|C5|X%9oV-wZ1*m8=fFb2@sSWG~ppsp|8|F;2XvsmyG`c71AVp<!9ggv+ z12RmL%L6}satx{wC;`cRVUow9S%i7g>XAiQ!IEY~j98xfjW)DFoV>Lhbsl#T`|>~* zTk;^7Y@;<ukii-eElE2l#$VHt??Jb%V`Y_0m8GjKEw2Vj9t@G{&t3r!m8z#IZ&MJt zQMl#!`SC3M=gc5+)$q+Mh(0sv$+n?NSvNd5snY-?rV76ku5cnhBqB><-wj4ZXbL2$ zaIh~Ds!Bo)DWi?eI+>a><UH}9aLExXCjn8h<e_y%Qjq{j96EBEC3%8LtR;DJW}Rb7 z!PJYIWS0P(o+2{c^5VqGOJtlb=qh}=PG+R8XcVp#TqYc6;?NUxB}dguEZzllj7cDC zDJz;9eyMJwFD*rc;fqn8WxYuNr-v|S5yJ8m5UY~a6IbiQgk$Zj2byoi8Y9qP*<?a0 zYqiCxm<822y`{ja^s4$x(=<VP!laM$RI2~UYRcTO38}kOGgQ+^E=k$y2GVQ5@h91u z|KF5lzo8>)o2~u@Bx|b@zmu-e>PDtC1Q7p~`Y%9<W#~~N38|b*twGuVNaC=_wki{# z#ERakT5>BEXbe*jlEet9g7_VDh4c}W*tVoeB?OsqiE8;SBJmhqB32g0Vbr?i)peKH zD(5V?4z4+><m9YQ$y5px2~EN}5z|-Wa&ekLA?N8Xm-m`En4NhBgGZa-I>5mb#u`+J z7KbXD8mk&P2h!YPRza}HS1I?bD(eG0iIt7QWRi_4J{AQBsNpsap`}$-EtsxuN7J#+ z1)Khwr7dK*6=x06B_i}f%h)>Ql1nZ_FaWcpT-8+9e7|n#_p6o?e<|?@)X<rL`6g<5 z614;|6=J|_vT!mR*i9m>jNn%WNo4g?rcb{V{Hg_juvl=mERmoCd=_klk5dOmAa)*_ z#aOlSG%Z~!*U{>zG5T`pw94sIrcc8|U20*68ZU>5x5%~PM5NE()G}qp)al?C8i8dv zPo7S>?2^lnPxyWG{qUvtEly^nBe4`ronEuT&Q=Cad9c})O+2uR01d8{ZOu(MNu0bz z=ZIUW9hEbD%cfjXLJk!|gev^R%^(-(xmF(-Weo^rtCov{(-`)cX{@GOhiEZXi`h*? zXc7KR-qd3vx9*kJS+^=iZr!SL9m(9Pw>VG`7-++kl!+0G5&D%4RZHnkW~O4LbPURW z3<?XT>|7W_*(j`$vQg-yY!p^B*(fYsvQcpUvr(MmvzYe_xr;;Ts{QcTkI5x_Cp{Ou z@?&xxgQ1U|oeQ3IHi~|AHV$reHY)v0yy6w^^D(&^V3IN$Nyl^~9OH$VIpM2jqv)w- z<LKm#fICKRaN)AEas887XJhJErfL<<Ms_ZEJlQBZJR{(a;ex(Lc0Tw6*(l8WFtRw+ zCN_LBdBmKboqZ{0>k)9r)PxB)JDZ$hv$33DvvHVTvr(8{vr(K}vvHVAvr(K%vvHUp z@tg)mVoTKu7}1ubdFE3ZmQ8KIX?Dg?QW#-11p>1<4&Gw@BK>CKcvM_&nae`FZ-woV zcOr_MkzaUZ>5mAIh(PkJyz&Jt97a?Cp;+l4TFCU;>Ker=LaiQ|gIbl`XU{?)3WoFV z*8UPk&WP!9b9=<3R4l4l25?jJ8S{$`&m{r4j<9t}go?6?d&IgcGs{>Ttg@-H7|-D` zs+^7!2c$C)I1`{w_mec&ZS*Xq4~~hHr?;(ybdfP*CJV%fM-Hs)V)BBXaB5XV(4$EW z5yuckUSfs7Wq2?xuMkCwpX`)l@>^oaNRR<@@c@J(ATTNQYW3q7YKBl&z)x(Uks*Kd zG&7RZ5F_fsG3hB?I3_7w7vRb;sw-<vu8u2R@`;D<1R859nxJ;bP-#WH@n}_5>#Z$F z!br5@-ZgcY#YDutx(<@}@qr)&f#5KxFnq1pi-vxQBOkRGH<+Oj)nz}a&AD1^FcV47 zTU<~9b~1Q?q*iWdqm)=C)mIDJV%G)#U>mG$9JI~HSP8GqFcr8qG|>|V0BympHWpff z#b!P<f`2G{o7{t8y&?$!cUR#?ay`@9*o*@?e&mC0g90>_TY91z!pqPCURf=#tQJ?X zdd9WUN@%oFl0}dTe@i^(vOHPK#dt;shvl1E+rHV_;=6dM&-cwGfx7x?LKoYnOt~0; z04t|Y{pO|9OQs7nW&xn4P4U?-Zff?YQD~cS*$5b97scu>n{nAUxr<oy&FZQa`0FJX zPoFY%O7X>#-ju3|YBe&YX%ZDcElnVmrS&yMN_#UNay)T!LINiwa6$qnByd6k|Cc53 z$0L9L46gy<s}yW_(-eRE&o%=<*j6ZN!fTjqe1Ab@<$U+T`2v;sZzD^kebhZ@+Vb$t zS4ov{zOZeO{AANBn<SGSzJ{gn5(nJ#RVB%fL%dred0SbDHQ^Ejm-y^C-dmGR?}OVV zooV7tCV1b3y0-}6w^TX^Tik;lA7WPzuOCa#xkA#bR_`j{y#g(g8P`gzbFmLlRX;<b zv-w+#ciHh%rugGM`@s5Sv>izJiPrfHktLg6Ki-GO&%(9hV&i=}y_0RW#WF?yujHx? zJ0aF5n_f|#l*|Y1G6(Nv4OWTFE9k-R;t6Z{$)-0R@0;T1fdZM%`*i-YWto&8-etp2 zHocw=lHNp_Y~y`8jda?~LOq^{43(8GeZH;=@nY$3k-}N`QvGezW710L38Ql=FD}QU zr-}>u*}SAmvwS0TSgLX}9oH=W3Kc&VJ>I9clYHUzL&*>1R`q%GiWI%gO7D1|PLJ)y z>u!>tWA!9cemy^ulG&{KmG_^oC*m>RH2RtJ7XDn)v+M@%KVN=Ja27T7$(G+@MXx7~ zsWcET(#ZT!PdxZmR#tegx!UdWS~l+?r2!o(|9y(j<?^0#OQ$s!_Z<3omA=5|j^c=R z*vjPl0YtE#YjQ3Mur!?lt*Tps9C)p}D04^TKc|HjefrR-`*Xha^+`9K&ORcoslOW~ z-c2+0jZwD!cn1&0wQU~0{B$D|zkGiR-_?@dk0L|bzm0#!`|i^2ZD`N6XaHU*E-ZiB ze~q$j#XY;#Y6p2ZIfn)Tzo!#uZ6WXcUbg~A&Kjo7N;U#HPJB*C;DiKDNZ^D7PDtQ{ z1Wricgal4V;DiKDNZ^D7PDtQ{1Wricgal4V;DiKDNZ^D7PDtQ{1Wricgal4V;DiKD zNZ^D7PDtQ{1Wricgal4V;Qs{)=+{+5zVg^hiG+S#;=%`ON7=Lqw#0?M2e46m7I=)m zczi=1vx~oaWx5VJwk7Zh_q2`kZ1$LU@wcu#bv>KWR&#!#!x-4JvsRnn!VgqU=wSO< z{yK95e<CS(*ru&N7iV%RWHEPfkGptJg|SZ$ek&0;H@*YeH=1{ll&7<gmqd>i`Z=z8 zqDL?354`O*cDl?B2S5v@9tRt%i+l8~<Og+zkP*M<SaQ<JbIq#?OI~RoXFQ`DJ&F%2 zJ<+3RyGr&4_PN77+S)r%%<CKQ)a_%PSNRG~Q>~4<`W+;WThUCPE63sKJ&^0k6~aj5 zCpO?`l2Ep%qOM=C?R&}7`&O>U7_hR~5?#!qD9kdZ=O;mbzC+dHGC<g6^xU*(r#}x; z8T@bAsKLS7jg(*MWB7F@TgzzC(mgvpsKx4z0Y_;UW!w7po}EJM%)ckTTZ#nTAo|a^ z`Cx@nGwccet<Yl})r}WwgHLY6k15*P3O(j|&I+^InXk&nOcX`$zQ^AENm}o^jOxO& z!GRI!eH>eWQbwO(Fubqrf~`C=<|_RqyK3bb9$#N3Ez?z4mR7M;82O*{uLGmw!RUwD zsqR?p$Y+9~uWtiM+lN}AJ7(<m7;kujyT;$NC%*k7n=QS(L{kT)J{(K$za+ggk0G`9 z@6f-I%6pEHU#vzFIp1ZxCAmq8F@EGAIGSSBpVrJ||A1Z${eeDdV4qC&8lULKi?LHd z)7S~w-{jfsHSct$3%{hkaJs+Tc)h}SFLom;plJ3N?{OJ_l{ohYHe2yNHfg^=cuZ7b zq6)KNcu)MU50m3DBVni1FUmU~@{VozREYXqOThUM@ZkF_3r&(zMiqI5IO7aCA$6zF z&#d+o$@Un}#IBU|{>6BOjP3^W8P&%Ve@pU}l2;nzioX%$|Cdh$rz6S#Tj<6wlz-NE zh;2GPy>r0i|7Uvc<I_9oA74aIzd^rVU!czy{o*w~H8*hlhxcgfe}y67E>5_Mhs?V; z?8Ez3eK%>~I*<s%_>njF9;!}->07pqR;hRh!zH%Ln}<Z-vS==bY9d-LESsK)dOLSB zle^>z5?uYHZiYo|J*%b`?<wBrHN!OgQCFcTVBI>zdEP{?C)k&-mqb`%^$U75Ok>B7 zP!D~PezSgyUWq9oIUYD3lWl{}nU9Hf46VAzUHo@<@jD(fNan9HR~9Xct@Y%=_CMwA z+(i~$CBGFc{wW&dm7i$PsxTTP4-!YK!;i;&oU~#($N*+LVwVz*iaJD=Xpm?DQlrVT zvV<vnl+_=f7>}`r9h772Z-2GfjNQ5!auTN-At(8$)q~re!oq6C4A`xRW0aM|5&Rem z@t)1__=b0|b+Nf~@@!rp$+DPZJ(!$A_(@iq+q_$3b%$SDrL$Ag#-kTCvqaQUNPd#H zs=v@faw^qJ)(IM`pPL)m?p%x`#Gb8eHI1sbq-zEcTIep`__m8CczWN<jTI}NC?mlR zr*F5pPULWh_pG{-?4;XYGLWe->ONCrB!$&`^=Qaxbz$*7%$rsxNWCf9tzCOCz6XZU z4TDH=xx@Rk^$XEbi~(rO;KfPxm-e3GUHfA@)MmH0^C_v>kBXAo`twn&!Wi`C-YrD7 zV?5|RNdd(6x}g<D`7*D$T_jy)`Y&GQ2@eGxIz~$V3u7N3w-=04?)-?}ieD+jFUt@1 zgSX<>+z^Ijx@Yw%gHdflna!%fW3HUAEcP2vf`WTGcS=rwC;RACE7#yp)O?#hU(mi9 zA61wSvi?#rep;);`vQKC?=?@|Yoz3jEcyxvuM@KM_{xRb;?0#^k;wP>PEYmIfEd_W z)?ywQ6V^i7328JkjJI<0iuc9-_g$N9Fqr1=DeDC`bz=xKn|UwCM(MpA87t2jtWVdM z#7@2BZlO-A=F6$<q(hhndoc~ZGr~0JFLVT+)q|hr_)GCW*FVV}{(InY;TjmvvG1RS zuB2$L{+$@n`Yn5QO5#^&;MJ7yset1vkv*LsCGY*1pATSuhTH>~E800v&x5(rjYGzQ zXN|f2F2lXcWz6l7zL^$W1w9Jy6AqB(?KRx}X8ZVXLJL2_-tfH)v&K>3GOGt1dhnBk zw*GPy@cMRD)Wz6g%IwWH{S(XF;UO*j7?NFPLqFQ5tzCed|Hap4E<nZa(wxtSVK5hf z1#!0~Mq)207giB7=RRvx6i!Xv6&e*eaJz)<Gw1f;&gC+O(W(34DI9>O0FMEUHQR^x z>@**t-hz?!Lalw#iiqPWFhEAx5Vu)vbEqMBLAv}><IYtgXlUyTAmR!m=E)T`yGq*} zfmh50&z8=c8rW;jEe!ARUyF<3DGRob&(%U<)B-5Se>?u$wa~p;wGQ6xGCrdS{^KL8 zT8v$=lEyyty8a~UNyI1NpU?-F!FjL3aBq!0hS^v#USYbo3g+YANo5o={4p}c2SErz zE}b_$U<TU@bNr{73yQ+~{Qr%MF|RD%ibBEmqTE0%T2=-**y2^dK$@i<mlmcMJcu3= z?B#$xBgzHF5@z`c$AI|=#{m7|NP!S%$%pM{D9%h*z9Z4+3HIhEdRD*ZihQ3ebBMbQ zJPVbkLk4xo_$2;kcvqJH1zoLyt~Nkd1Ju<rG5G$e8!t%(ZN0%#PEUW@`eD(4BX~5i zYL@Y|@p|k>Z_&ICwVmbh?acN+4S(TO7y8h=8H$3MOw?ospeXtiXk23O?eLzqkE1T9 za0_r1kH176PDlt23;fg%W50lWb>peQtx{dm>;?S0Z2pVHSflZX9r;jobDN&MCc!$w z5gfj9b%AGd$M)R&AS+v-5w4~h6-A;!e-Dgtl|Dl0w|_0^jaQiU&cX`Q?;M}CURA0? zjTk9&y#7e0y(r$NDtqKju6RT}D>n~rwfx!R*l*qVXY715O!)h4nEB`&$C^MRWwn#W zTut#FpDQ=Zkb8YEW*c&AcFQv8tFQb*gPvON2d{9{;PD{;7*8bcX!R%?)|`>NA1@k( zC59(*MI0DU<kDFSN5Nki&YFKcCMHtH%aN<>9@F(wz6Tl|?g_*_zFu$C(L;3rsow~i z$@+?Wf}f3Db@D?+!Ox1cYjy`?r+lbg6!l<99?6^eOdb|HH#!FJFYjJG54?<|KWYB_ zM_%KFaAMW<r17D4OI`~K#TI>AkjZPn4UzIXxhFDjHAbj+p!djV<8-61_sE3azn*O$ z2p(8HX+Sp|&ZG`l)#A6A@rjCurv~4Y>nGIoM|^ja@Oh$wh5dlXju&uY9<Q;J1P6s< zPnR6@*J=}ct@RVu<y_Dm9GX*<?>{T$a(GI*He;Etg<e9PvWAPEM$WmzkjB_o%Gj2L z{btwQ$OKcNh1Mfqa5&fRW%d6i(hKu=jhR<4bKx0x3gj&iXQBIGtu`g^5g?X3KyLsX z_0jk301+(tq(23uXiJ46#%t``Ach3?$r-1Mgd5NBiR;1z!-Myy&j+k?hDchpm)WNS z9=s#99*E2y2o7Jcd@S>Ag^tFT!<-m<dk;GzdVZ~T!@l6KrghQCM)bnq;e>XLuwTAj zPsGuK?;W1V84LI1*|f(Tvml{?_+`kN<{xwX756|NJhGPx^L~t4AfDcsXC{Fg^KO%f zyc=<)L{{M1@(oBf?_NN$!BQdSyq}3|lY1;pkgfbsTa?$vY<D8t;LFk;tNt8jABTth zH=%KJaWiG?Y~=iYPRmuvF7vNucYPaP)JL%9V9Pxmdq`AxW1f!8<R=czX_-xaG*)zz zNG2cjCyQ}K=`Er(Y5@tMTCwjbDo0V8RDOwT>o&5x2T<%U-vYZ^Yd3C1Fu^wIVDAB_ zz(qYsc2l?VwjfXH%F1LoP_z$o#KfV|cK-$D97nik)p?Nun=7J!h8UXmr0a(BN_MY2 zTYGZ;4PPaHsequA7b0%{w<7u{Fy(gi-~1WpB^6HSosJcq$LMuwPoCt7lzrj}{?&mZ ztMc@c4_3botgGa!{8ywsHoxR+u9D|g=DAAx+w)vT-{76vll%M|T$B1-lb+Kae91Mb z-{>_kvL_rmJS#Fza$?PwNq@Q%;U#GM`YSN5UFIqJP%m7L-#{iV^Lo^b#m3KY6MT~6 z5YEXxxG}r9vg5=)5k8sQcv=s>m1EvA&YV5o6>-?i*#)l1c{Z2v$KZPoUE9>_KNocT zXSz#vYN4N@M27vMk0^Y9R26;@)UnLJv)3Kk<G&DbMKpExc_n=-&kpSgoJ1;lpyEF{ z;yBl{86uv2-bO5$(nCFnkJgTJnYWA=TucTtg)X$+W%Tcj89Re-+l@E0@IF+d2j6t~ z`^pt1)-urkNc;h$WcG)}M53o;K#N?D!BxB`ezO>39mov7WT*Dz%Gu{d=GaRHR>BPc z_gZ)+GL*cmZJ3U$aU}jtTqI-HOU5XkXM%6%XyJbYjqn~_yR(NJX`#u;S{^|N*4HZ= zKcI!j1LqF)1jdG6^N-O>p3y?1L@t<TDTVkDSBTK8Q@p-DQ4H+%`7bC7CA83K$P2c@ zC*hi&tc80}%IkYd2r~W%Zo+%EvP~|{H4yiS#AM?TmW2S;-5`jOT`hbyU^McYm*YC1 zM4x6nj!`HVgNzRfD@6N)b>#Sn<20k|ZuGuoK9raf&jtQ2((V&!LO)Gm^)V2F!}i<1 zYTi&FwRm+Q4B0+Z4HC(C3g*t$1vY_9*2j2#@4I6>xsUNF>9q1#B#s>t+FPcDa*#GO zJEzcJV6G_wZ13{mzlRUail~4mJjy@DT=NNUXIBi(cG&&X%=Ns*x_^TC({ad{c-rjp zV=$ETX%z#d*H^R`8rN3@YaO3K;A__-!$$Lzp{I&S$ALT2c`Ao@lf~VP4Bq?!b9M!X zRX^%5?-Fzev<(*_t0{P6+Os09jdddJGv3Xf!Gz~C3cZNCj#Z0n{xh}i**AO44U`08 z_hZcKD~$R170G!H{PmWRBeog*9qL8N9RFEn*E%3TIJ}L7*A&R)p{E?oJXPGy=zNn8 z8*3pKy5C&mBvLRc+hNQAIy$=o<x>qXt^_h|eu|0$B8zB;D3qQ)dj=EZ7mH%Br`OMj zUm##PKO1+k*W!mPeS`et&xsqE{s6p!ImjO`!9N&=3IvffqZT<7XY8%`^|+U2N%*T7 z`qOz$evX5BdmQ}=UXyQUqO6bQ%{k*RbML`;JOeY|wG%OsY*>sQlQWE*pR8dZ>l=-k zybNois3-EH`;gO|m5<W7#+*WPR)H~RoH?t|5P|}US>xaV&6#R;ZbwF=s}PYZK`d2& zv}+M$!cVkoJ|MI_5$&3n#4S$Zs*}*NBvhZw*PMhFCZV-Si25Px@B?BUU_;I?z8hv@ zAIRY`_Ih$RY(%O#x>V2i=VBH$=j4~_j=(?7t`P8WjmIVC%)oYz$mPl@Fa$oafvFa~ z^mu9T$xkkVnrZ7disp$MKxP*gmY67~%P=ZBQ_7<P0fO8|g!W^}d<$5W0aY94yOQ6s z)auu`n)dybYvjk7Ggf$s2$;4Jb`XvRiRT9((E=2kFe+vm&xMbgjNWDHgSEeasI@kz zXU;F?Pd-5hmb~0v?(s#jh?_VDvh-h;<lp1lt96G?C%QCv09jYIM^@O4!$#>)@F!4! z{J;|yiIvZrkMKPgB`>Y^dVIT4Oi+`>+AlM&n~8;Y>Gqw!`x+*>$am2S>~#WVt`jKZ z<Q;6-U?gLHMybKq(#9j)xl^I6-!VfwAEN#RIs8gYs(}AACO|_&J0C?7w6uJx)_teo z9ZUIqu;wux111V}AbV+$TDtnAsJK#~rhts{{1nQ#+7T@;VB%2lP7p2h-xv)hbv0<| zsu_$yH0b`)?076HW`7|(Od{4D*3G<?@%s{!g;&2A4O)sk6#NnDqP@51PLyHiGE$%_ za6dp%=<K5|DIy2dz7RF)wgxomx|y)k;h)03m?k?%NjdHmHmXeQPe$j67Dl@kf-*nR zE^A<#V%WkKTt3nOHpTD`4k!GlB>IifsnNbC9>P>i|I_T^hy{VmkVC*`7so&1i(`#B z`B8Dh!OMZ!#eQkWA}BS#CYZ+>>VtB>D{DXCQ}Zq{`1Y+@F85}n0?Ge!KZYW!Fn_rp zmu-}m+>#l*m}_!@^)Mv)e(V;QoM<_HAnedgMQ+@QxIT7eI3F726>`glM6hKehVR`- zJb-&lR_g~*WUld7gk0RkP}?%x?4O$(X8p*;eulfOZQy!R&kgUtNZzmC&HHHCj52ZU zXhZf6fEXWow1Zv?d}I)~V=8*^0f+y(;DM>V!w&4quPs}|ZGbry#$StviW7sUC3a&= zsKC=1C5Q0O{ga18DTn_r9^<e#H$qmlZtSyst87tVuWPOMW_@k*&4W>WciAGFE;ASU zPe#4$IQ+q2^?EyZlAaf&-6at=R@?A32q|fB<aPo1HSd@VCUv812Ed5|6zz#mLw;qS zGxuK+Pyf_|Z8PIpQ^&N^c1BdsXAfjL);k0$a>Whc$ZI;BF0I=Jr&J4#0XMp~qu-P0 z@gian(XpT%v%D{&KN%d()7HF&Cg_o}duN`#{B$gwcE$67Na>f>-Q)2&Ft-gS4)AS8 z{GN;)Z=$;NuVVz<cI5pXzB7@=a#nr|J`MOes@yW9ufz8ae9d4FutwkBBP*Q6`*4K9 znD5Mwk423-B4Pz`hB3|HCn`_dpMpnLYa519F!+|%JDe9hpbb82mKP#OV)PLea|~`b zUZVc4dV|}t+S+%K87sUxaW2H08)g_&3k|UD=7qtb{N8`$9(pPGuHE<$<&A^TB@m7K zQLph*{3V!%;+}ZBuo>IQMSt&bF10&I9)?%1ZW8qpJ(}gX+CXF#iSeJYQ0rv!@;{B3 z>&z!SAYisum{-p*ubZcDEkiCur2Gz-Syp5m)E<m#5B6#g_UYP#J-xB<FrnwOhOt)5 z;%|WBHtZDGw(=D@@d4g~Bo^NBU4V;+;+LcPh`uNOEKH8r0EqVq<I{m$*7=K(_7kx0 z|C!f7jP?Z&_R4)IqZ?6=fxYs#DvW<r7>8ol0%!EO!-=+u&`T$x^;oBm;fimBkiE1w zf`P$5<0i!FMg8gaYNDw0V+2+`*u99l`@wtyn;FkmMA~~eADZr-ju|%pEfvOLL{i~C zkP!w|jGb37R^Y$6^XL&?&*(hL#ejco=TTaRz*AzD+_oBU@ere#b_BqS_lZfBw;v+h zsi+5jfq^?wZOvrv4`)>SBm`{ij09-{xfTj%r2Yp|alj||w$}T0zCH#bPH~JDZH;vx zgA4I~9X+ab(OytD&k@9+(WkOeeJ&Y#oe%Ef2^2`WCnL$P^KbjnJlKn^!=xg8vDN2# zI(HGD-XKf<W*7Y%DsT8aOyXU_XVJnnxG~St&AE<}y;}GexYNxA1&Kc0SWuvwk%iE( zh;D~cx(l)VKT{tHGv?sX!n@Dn9{>BXU0}d%ZlOg-%zo8H$@$qBz<8sP?JNR|N5uv( zZ6|i=#WerA+pH;Yhu_gcUm4F@1r~Dy=K^~_^#9u8*9Ol^>QCf4y9fJeR(i?6s*ClG z?SCH4cUt-1@<ty0Ghc6Iyh@%9OaZ~&A(^Ns5AJZA;&=e232psR3?%GQY>c|^M|n7t z?zQ3?nY+tlM5cmaPvqu)k8#gL0lJ^{7-2Re9!55yU!6~^#69N)E%Yn=*Uf7u>*kif zK@KG!Xu$@&w~Dc5bJKX3ei)#9aEF6wPDXO(A<+!8Jo+Qtg3@N-elmVTEZOe~_x+wu za0Q8Zg6@qD^XB{Yl6yGMB1S~+&Gxl(bDyAq^=Q{HF8q+ltb?Q*n4%BO$tm)GLpR;y z^xQ6y(QuCo4o}cFOgM$5+~bN+MCqAs&Y20J!++5YLR#o)I71%P;+3^{%`N@tnxQ$l zg)+ViUHCC{0b!~Rkoia}?0OVjV7;YH>DAVBjw5bi*YAM)NIO+s3pYH(JX3m?pMj7h z@Ee#O6(vCgIVTU$%CEly9Ae*F3%z~@0PIus9?0`V){U}Zc<9D}x!`_}@fllt|54>% zNeTYt6^tbzTAtZ^8BKt07of{SS96r6b<%U%nl`-j>)1|mp_4F7ZbBlesgTvQ*TRTH zpok3p0(_$F96)IMR`i8#cKr=VicSD1{_`G8s4(wsdhkhFD@|L!nQ9)qHs7I}H&l3i zT|}$pCbbIiR}MXfmko{!>c$Nf+Jp1Y#_rk;6*A_s^6Y%{O9g6*A*-qfcOT;p-FB*| zTi$4)Bd3$6Ic2DSyy#Crfm8I(YsCUu+GjA4-}~2-f^XTC?mhk*W-KYhvVRDt13iBa z)rMmJ``@Wl{!{dhCujg{n!z&~o~`-#&#xz(>z|AzM{ouTAVgd~p39E$mc8(EUm-Y; zeXr&N&o&2&@#_hn?$@zC{|S?^UhhGacwqU(W^f_y*%Onn<|64u8KjY`PYZq%X<|H* zNsnamd^0!Hv*I+6Bo_;VWuhFosRgyQJ)*<Ha;pLzsH307p2a!<s!ZY7n<t8Bb^r3Q z#ru?0UVS@5Dnq%58umfKun&om_$x8M;I@c4e+SgXi{m(Qh(Kwc0H690_9Ic~HVpru zFdvACRO2QZ_RyB#!z`o9w9pI84q}VFky|EjE2EUKkjan3b2P%&AhSr+%~g}jhN5== z65X6Vm7-dMzKB%VK7&^43@3U@UeY4vKyn0>;+nLl*zlc<(?Kg|Uj+lU<5X5HOnZ+1 z3_V!k%(rLFKe`Ddg3^IACF{BVv8G@fT7l3xxOF*Qx;fwJ!8&XG&%r-8u7G2Fx6pLM zdWppWPTpc@i|PFR*j-h2o3T?5KB1!8B@l)_<Zu=t9t+7LLbUc;nkq9Qf^g3mPixma zkI860$iCI1V(K7(YG(kwi9VM0m=KWm;DAWi4?V#ko%Z1V-a+i4gN;qXZD0Qyq+z@Q zM_{A&;M)68aNC6N;J+IEhyL1oB(L}Igh@|(&B$65_26K@SM<&&$O1b_3oQeiy+<5e zvXARTd<CN8I<?GSNGZ$%C$o!CfA5h3)ikKt8nnk_&c&D#D~};PH{V~Zb$8N*f%hK1 z9cqc&VcZ7$JJt$(qF-J^JzIgcVS7+F?sU=<HRs;1mx>uvi{!8&dr@h`g_Iqt75^}v z?>#Eo@eCYmYF?4%+R4LS!^ma4s+2kpzPjGA(z(c{g@26!Fp@HV;Il*h!p%@SPh>M! z#H2SGjT((sQxlhAKNkAA>|Gk)MO05@u$SRfjCr?n00kKA3q8!<#aSRC*kuKZhx1=V z_&aj9vmb2~F0ERGPP$o)`yQB%@G_zEA?JSNN%Zs{D1bpgLScjn+-pK60h5o7H?abl z8Sa|4{w|L3SPolH0-mjf_|LC5>~Lz~Mo92OT`QdLq}5umS!w5ui|w>KsAi#iGdvF( zz6T2ZG%RDUa7z22b^Q_@3(OfGUBI2HO0j$SpCFAv{{Wl;{ZPpHJKQ2LXY-#!=ZYIF z|AZ)#1FVC|IK!gjXju=yM4!^!?auAEWuFr*)<k5p!dV2Cgh*)hPJ4&WDJ4E8$3KI^ z$KfxIn0!-fa2VdgZKq}Ec7f3Cx>s$}$bw6l1pJ5Z!uB27jhY;O9lo4@rW_IbIU)*r zk4~8MYTZ7T(r<M+Css$!%hAo1&H_E+_;zskR&B!}2qLwfbfbfpVW+6=T#vblsxx#4 zH77rCvMDsA_rPfTPS$dnUbmZ6?K^|-I{Xvexmfw>!O!Mv8~z;x17{`e?{{B^^-JzI zs6MK>#cqq7H(qdpqa#BHs12uv7YiK}J*GPB&aYV=wgk2b9VYT94XoUkNc0{Zts8ec z4}wXg=G7xV;>9A@huY*GZl|nfKi?z?4QO-3X#5+MIrs#p6AXw#C|c){1jh2}0v;)3 zDiuvl1jxblvm3S)vccBG&!Hh6Qw*)44j~^c^h4k}pWrC^6os|*Gav?P^Zl$zdobj@ z8$j=HzK*d)yQS}-Rl0)zT-r4U_0G>&Zq+Fma_g_b1Z&OrPmBlQ3R8Hu6=rxMD)5*Q zdbP%@IHMH%;g4unp568kN-Mei268dy_HTPQg}PIqc5VBg6si*_<CSgn#8tT_U|hxr z+u*HQs6{|gA`gILez115{0p^C{$VA}Oy5xXs17Z32)vrD)fJKZgjFa)39j8ny#*@9 zZk*2@D$mK+!ndM*GO!qob-3&Y3=vT<A8DgpBG(*<T;GAQG(4fWZ_)sAXb<*B^a&8W zr@!}bp8W%C$DW^>eRiTwOf~1>!Y#n?3J@_LUyJ|T9K99StrRl)7yq?u`Y_>o`-8n5 zG`%nf$4(%TJ35fl5D^UX5kUwZ?G+$YyK$QhX-Zu8?M15&$(2<RmNTcqd7G@4hPjx~ z)^%dN4@5qEn$f|27_m9|s$Bm7wS6+;CS4zcXuKZ_U8pF%o{LQBEiLNBaDe9nmrA>1 z|Bx6R*Nu+~-wM3hf)^YO`W#2q<PV$mDDudIA2!>;Cq0I6+TuS47Q4t=_$eHUtPMUv z7sM7AB|HV3BZO;Es1MDa4E=rq8R(5fT<}6ROD8100m!7e3$b3bDEz03q<?oR*v7%+ zl3p!13SfNA$2d<`yl-m<vSkS`{1m)+)%x$D^>N+{E0#v@!4DG&`$3ZX6`=T!@vnBH zH}cp4$Vhnf@5go&L0l71S<)Y}j4vj2x3=R^2W@t|1&6E@-$P|=-Fr}S&hh!d13B=i z&#~ONa0vt?2b#(+eLB=ACQJBq;mOG2M!-(*jbR>u$o9sq;&=9p=?%VVPkMZM@Bl(m zY8u@428P#e`cjMIAN<p*MhRgP21I<|1LP1MKpEBGFr>Yau1@JDv0hyFI5enuUwktA z&ho!?9FB8=J2VHZ1ovRAfouF4Fe&6I?1{GiFCfj8B2_-VA2&Qo%rVR-mO__*g4%z9 z6_|P5M0)N!u0uA?Nx#Qp0*dE;z)F~^5;h@09_0~gTDaf=p_*&vVIZTxbx_?x_XF`2 zPywOI+`mJPeyytkrWH`$;~1aXnuW+<sp*a~9GM;;Ukp@geh`btE;QWZ+prb<dV1f) z0<z$g_zt!x_^WlmeM(lJhg*+Xb)kDI{-5feN}TqTh^zfK)<LwqG`R5ybiorbH=`kl zSas0j!9m~mW5M}wxi=<|C5(Z%%cXhV(tAG{!=$a4jVPw?LPA(ccf<~T2ZSnc$JC$6 z)bJ04PTj-VxASeTrh-T9XTJszs@=JhOQg9Gzq46*MimAkTHp_L8ayO+=%{Xrl81KM zY(?<lu7b%>K1*1-M$&g;sY$BBb5J3JX?5hr0i|GKf#UTj5>2r$WEUGY(z>D*Ylkpz zDy<lUkt6rtgkJDu<QHi+yaA7SkMJQocXFnqjw=m6_$SC2`n@dvAoSa1=5mObS06h- zOwI_u;EW(gh;jlRLV07iQC=N?{xEd0d|_nV9r0;m>_Wxmu!K#TjD5RAzZR~d)~*H5 zBdptTo}#-aUVe~?a+qtOvyeYIT;h4SqrhH+JA$>($(Cd22+Z|H);U8$KO!?=Ad@Px z7=n(>yAne5^z{ypvhQU1e;4Hgr+UmMm^t>^JoLs%5Ue5yACg=8!{E~!2`Rc^W*vN1 z*Sh`An`N-89Nu%>4c-6WYRctbDxC8%AyqglMpy~N?*+BARY+?6Vf+F$i$%#K-MqN~ z2VBk%9(Y48KW1V+z5|^<6RNxcS8G{v;Q>?_?CC%h5rtu3Zo$Q}FBrXfMQ7((Q{1Qh z86MWQ7jo^k_;wf@`ULdJ`HB0`42D79kIiMPnn17jNDkLoj?T!qu*kCkO)y&vav$l3 z5*e)purRa~MJ#ps%fjry7@UJ1gtb5*Y6>7&ma8!bPV9{riJle9Nie*Pwm=S`p`Dog zR-$h?1}XSKR4xWye1QFL-aef*xNo47g6C`)R0^DikdQr}n?zlAf*XEx^RA5m5#OPO z@kGYv{)RD~PTdfAVV0&KW(sxWkqEvG-(2N1ubDXMFdf3vkt70OCjkIi(o$quL!uAI zfA(r~5uX(`dd%ymda$4fy@p{dCgAX1Kz1BjjSh{=iSNRV)PFf&KoDUYwe9cEvrWR~ zfb;||ei>S923MjQIrQT;(Qx|XxsN(`0k0dpfoDIF>kyYy2)z$oMbqhW!VM2OpB4E+ zVwD#kD@GaeXUq;8SptXq^3S4=eQJ0fI1*GvE^Dgzo}_ybo)-d1aJh;3(5ZX1E<UtC z3cJr#Uj3S%L3N}rB)#sq0R)b1((&n<jqGmIjc{`hPMr-V5{y><4#>EP8|ZiVN6-t5 zhQpAxRQmX8U@{k(i;|1X_<zH=bPn3`N8949kQ!)X>AygpkJ1kf>yrjp)%rth{*HPO z)hB%xj|*W03T52lGvk9vdxM7&Otk~AtsjP=r|04PJ+rH&VEiC7RBmY<?Guy9+Do7q zp3TN980721^#9}K@1qv_V2=3poUuB;!FYT82%2VYT144m1<BPzd<%Gmkf1$ENYy|v zG&C*7Mm#Z(a)PrP`Wo)3?(bq&;Pv-^#&8@9<ncqg{o0yu<LE|OSQp{lyBHFVe;s)9 zG0wt#qU1ZcD;|p7ib!pIHsH=98_;5H!?yrO#=S_T6MHo=FLOA7B?ptif!hq^dwp)K zg1SR_Jc)s^%e@4ybjD!bg6THGJOky~ToIXxIUKY2Ygj9IeY?fu(uO#}=ZUx<LO7!k z`Qm$#MUD@wQpd9-kMesA_d^}+4|QsxzmT);z#|6Eb-$+q;WIUy`@_m+<}bBSJFZ&y z+$|l4f!vD*b{qz_0obyR&rZ=onm_^gCjg*+qJ_pHvEwj+3jtsV(oA3;DSRNuKh<q+ z;wk~l=2cGPRgbxaOtST-oQcJq@d3g%Ti8CL9={#tU?(0)w2@AU5QMfq2RC>&l4m@w zGRMup6BHib{5u>#6#~U$AFk4=+PYKN)To<FJzM-#+-Thk9@e`15G_{Aj^M*!L~NaM z=K@<f+{bX43!Mz*tfwt9+a?F!vrFlS)`s`f8SkF^C^kf6cphS`7UCm1Dapn6iVO=L z#R!lY!rav~aLgUzdjVjg2b&Lw$)SU~=&ozs?uSD?{xR&?t{4zls4(!J<9Bzo|Bo&3 z)sFTpw!rv~_J?hO)7WKxr`A2EBGI$9i~HTc*a8K>6cR&%BIg)$&eXMCZ<3r9dJI2| z+99RQL`EGLixA8`f?ap_%n4f8WWd~I7w1K~;pw>x<Kt!eqf8&d7Ae#Jfh)Kb>2C>m zL3gUThk=pJ4O8mzIPQnsj~>MHm4M{HMVlXmc!Vh82T{e4yBityW@m{1QB^<Kg(BVY zTR^Zl5x*5!s1=W+!32eViRchq2|H#qKE0)N?;>k@=N4ulKHiBOG`wm>k=qNtZhVi1 z0+VL^Qw;jlQLDIy5cC5@TIg2TC9iMJbc`zpl%oerIkPR_^b|}w9G?y+Obh)M!FWWW zKq$Tnpoyn>`Z~6c7U!z8@DJg2Zw14NxChX->lZ9oz|bqV(kD#ni;Vluq`in?Cs$%g zdwAe)Y~2E$pwi9lPw@y<@bG8;M|mPY)Qtv}9L5?JS8P{t?j(OD6;t!uF-M0(K=1>Q zt78Su2S`q^QRd)oiQ85ZT{Su~2WHa^<$XWa3p>Q?EATFOeG`_L*A;&P`!=wDA-!PH z<M%`OAxy{l?B}O(reMs=TIeV&nm94rz2G6u)wkCDQ1Q@i_anC5?nk+M&-IgTv^$K$ zXq3gafgP{69OnFK1-h|`e2Zfv$pCSWnxs~6xhAKrWYjob4Wv51%VT-i9`fK|p9jOn zV~hecPe8NtJ&~@(Py&xJdpxjZ5?f?;JpiE^vnL{%;zjaQdAQb?U6^^EE_ogh4|(C> z3bvR<b=vw5!LZAGkhWPI&2K9x72D6+x=)Z2g+T#bUoP#qg9>4kJM>aKxs3eUx*lec zXU&8Uj&o?d78vCsyk2OOkK_F~togh?mvbf`5wp75bRZdC$$PO+l#lV~DfBTW_Za0) zI4P4|&Z$QEd3;uBs%U!o#Ax~SF^kcCK)HZ2%BND<7z7&Xa|FiPQ8J0aZdo9AuMhVj zrw42r<v85qa?UWyXA;HLwozV2kk1ku<=7AbgGRZ>i^s5OS}+QE<cSYcuKxptV7!7O zQpJc*c#I?H@iE@qJ4HquG+nD-Z{Bebg=!6bzIg|oAVaS(@Ay~%^UPV3*XlQzv!<`r z7n*kr1BufsYxNt=J1FC|`geEhH*tS)bw$LrbDlR^hA<+!BPHqfnPzK#X=_3IbUfii ziO7S2;|9EVs6|d1A*Y-*#toECTY0sdC{=s|hoL-)D4r4=?=FdJ;VUqJl82!9YLGOF z;;3PHL3|1ZhcPOiiwllLVy5kLc#X1x!AE&MjOTAt=R-RG)`sZ@YUMQ!;n_hWvJy6h z&p}@joil^&h<4e~LlSZ*2uI`b@)DeZVA-@Y5PJF{iB*3>Hq5Ut;(V$n67C>f>}}vO zxJWio{&yK4xh4&=D@lG*KOUO6cE8v6X@wokKkxB<;Dt||k0h57UWU@KpW#Ng-|Zw{ zy8X}Yl7F~Nk)o}y71m{)Oe$R`C<cB`E&clIsNUSd>T#<m{RixYDhn^N4e?>No}2R$ zDh+SP{i>;4I$2UcrU!uJbNgh<3_pZBx_RUtPfC0fEI{k<2*{*=czrL)hQJFuI64no z4?Xdn=#+GNge|$sm%zmDLzYy0MVyx&;dx0M>(LD!>(L`2=VJKKkAsoK6)kWzmY-$p zPd>+%{@|lD9FGj6iGNP?`}1NOo~Jop-wcx^pQ2>A;`{$)vpo(TAc?kaJ-WsPH5W_X z=$bMMG}myKPB+$Ybn5cyI6XRBOy{^3pfs8}8~Z)buIOwoHIPjnZO3({xHo@F!)3e- zEtyead{8_z)XDRPcwS)E?$BlTVPxAOp6>fprIFcoj9s2L>@6sXuHF|+T)BDz=cnDF zQOt}ALTjwdiN4^GvcQ|Vc_!M&6FDVMuRK5A08&};Q69lL6HC4I|B5tHgRLATeBRPE zw3F?x({H~LiC*6*B;F|!z2+J@iaF*Wh7P8iYiJ(LGE60FIF(SCWA{?R-E63y+s!jK z#NPD;`b&yf3ttO>$Z5#x_3fZ>+d;v_Cg<@55o_8&>X9Qj!zP^~D+}Gx*ch3GCXa{Q z{5%!J!&rx6<DlHSxrWrZLfQp_@X&G8=PW(33-2Fbad*kDMc{J%uaSxvkvF%Sl%i|y z#(&PWB=iF;>cTxM_IS-5OpLt)b@fKq5ay@&H6*k#;Tf4gn4kFVn46(K6h1#nJkc_t z6iR23NK126qL3d;fdFO8PyBaEP<1az!Vo4J0S@8?s4DGwHM}DMm9{wetQ;+1T|a$m z9L=Y1ZQka@`Kfn;N7|N;@tB=FsmNS?=y#p;W+wbmIF=>5SM|Ux?>#WeldCd`crC{x zVhVT*6RKz}Mi%oflC_Q=iBm1B&JNb*zaO2wnByQiyINkB@xqzCgUwMFF}}kI|4Al} zHjd`Qfn&)wjAMwoFs~Qjxj8)c<eGC{$w5Ac)Xn7N{v692dl9V=ZC-_y$V+%DfM_qK z7ZlCyB70EW9JX#Nh1qc=;n%PVDeXFlMrijan#uNMzuyPXW*Y~wI`$p#_P#TwBKJ4! zeB<fZMs$eRc#0tfxC}Uw!A;>G0Ez9TxiEqkP$$0%e{W*xtcjBK%rmw)&w#gI4W`cr zY>#?=;3ISSWZ9Li*NTZOL(t-k*Q(2czWn!NkHJP^<De)oI$ADdKGe~Vc8Yr;e7Wf- z?nN)CQ|qXo^`-e&FXB`%o-G9TIC2CMSV*ts>P<dH<p_*MYYGj0BAr-<Qs)7ffgK|) zg6=~1aw_2Hp<Tb9vL<Z0XJW~+mb-iEi7sY)07=$%ylw{Y0<1S;jj)V>&kOF(>HQ4P zMZOWMmzZ&cn+5DHVrj<mypfg8W=t*<f%oDqFVq;^p3Q97cEAO|?vRtw76A-f0C!yk zk39tNA-~&kCCh34MeWA4cHM`>cqtm0-CrX;&yO>c;)t~y@0McVjJ$<kYnz=O)sko6 z{|YysTNT#cSfGMYu653Ns1DJnywhM;YISW2;$F+oXHta|ezbavS^D%Q^cP#*fj0;D zC&v$7p|g$K-&+R%Q>3eo)WS_@$lznbe^2>C!M`m8<6h%qW5J^y->aV9xA9cny;OJU zOl#fO=XM;y^VS_l^8BujBj49T&p0@snzT@#0G4W@{{?`j(DG*H`p=)4=l{yg@B7c5 z+2lWC=2AHZ@FtN#%^KfP_b$r3;|PKm8)2n*NF)z%7l`1rE|M6A!6^@DP&k1R>@MCH zb@vbtk2dOlRzSudqwei!5YCv)bi(<47uZg0<lr!!*6nc4M2IC91YKre7lfgO`Qx52 zB(6v^B3hrdX<h$B)h?s85X0%HSw0!3Y4HjN5hBJ*PacT<8gV!;)=J?XmpS(V$sOV( zxt;=#Z^2e&a2Wov_oxttwgV3wf?a#BF?YM$Y?<gb{^&Aq?m<{10KYy$%cGY(*Xl$m zoZc*=3B9#vh9|hPaH`FJ3b<^;qo2=d>n;_1g9hF>ahmDgZj=`Uug)*C<Tn=&$&PX3 zxzF%-AV>4MLbc2NvGCG%<2W!*n!W;qWCpf#F<HQQ5i+*h{DpI&7bmN|5hq$G1f7F8 z$Z3!b9v>;MfD8+<^7T1B(}m@%Fy1tw8B%dSXk{PtWZ?b`oFJ1M?D5RBYisyg6~#n_ z@u6ZO3MNpw7FvaVLMj>u`|u`i%yvAxu7$aHK~OaKC!zw6lJVys!V+|XZK&Li2eFf5 zWwbuzF3Q0poxuahY8M4MFW|Xm95KLwsv_hs44l*PgGIIgmUE-frp)=LxCg_1VVW18 zOb&q{8e^SA4$&_iDu?7le7Z+BubPO4&Ue}qPrJ-=oG~Jo6~==5VmCexhsIoRpKi{Y zXp~QnFGcp`cr*k3Z1|<nRrZ>A{x?;}SAmu>64B;29>mK3B;u0uozhwiN4N^nau;<R zFE=BrQPFxroxc1}u-bQ*igUs(w^|kW$GXgRykZCS-bQValJ#Qb$Wg_SC`T2c_^+rd zY$INCDFSI@wD2O}5O2^z*8#u)6&b$^Sji3QTv0bHVtJ;B<;^l(GsHpH+c`Y7?r}~C zOl~jE!>$2F6>8)}d6xdLJ;~@vW*Ju46EP$wLxbu2{R14SfsawoYN7fFY6~`m6<{Z8 z;e!lwm^tX^RBmLp#a~83?Z(cl#o<(CIBGXySSr&Ie;A~2Qd`&~Wro5lNR1*Gl@dV> za1=rKQ*><n2HXkDDrW_2n@DN;Sa`Y!aABv2J{m^L|3V4~*(lLZ!R?5mzX(*>c!Ub+ zzF>Vn8oGo~Y7g6@1Q2&1mo&^SBd}dGMMxt43=@w3b{dR0STA$I)-<jCXp5*3&r=HJ zjjt8$I{xz<oqsDrCwL9?;6IH`PP7UWh8IpWp2WsT_vGHiX#?{BEVq9Y)Yh0a6_2?- zP~;yK>~|Qm^35;{>7`v<9IU*2uJQ3)=~*Ez>SQY+cQ*<L>M=$~d;)~)d7OLZp-#v0 zGflySc#<R$yAbAYaE~}IDjqJ!TQiUg3mnHC9{WJzz{Y*3yA2F(hIIb`2C&5fm$XdI z3iIH&g9nT-`VnGq(Lta!;z#eSc8US!;+6^eX;VI^#fnSCVO%ju2#i19ESpF#$>YWo zN0ar=0<=p^Np2gbqywNeGpL39r{a1C_V34uS&6|x^c|~qiTpuShYk3<=yK~N`?Pf- zo^Z^)iw9eHAMxXUuGvjrzQWit5zGkd%I9^^6>f8Rfo|UogC!23-*phhIM-kcqKG5w zag^qs;3K43y5RtlwaBk=gZIhi-ph&V_^RZFV~huQ_L*DQnGi<ow~wGxjYZDsaUV!* z)H|_Z#OJB8_`eMNcuk=fIA~O$m(D5FA`^g|8*!fLHQiW)xqCX=`|u(jz2kl-kF2h? zlmWWXqjk6AMH$_P5c}WRad;dyKyYXuh*-zrTrJcODRvyr(?U-I&^td3vZu67J<;$~ zu!b9?!e9BV$OeDq7XpC4@^1h@{;8QD5&=9DG{U?hcRR1h9KbayUh_agyWNl3;LU_8 zffesucne59GMm~g4pRlA=t}wnb>e{xuUv$<%+2S~3UFuR*T}%|T=>wrD9RNCPclwc z8nssJAX$nv5gT`SM+g;5>y{~|RImmF-fq&(N4xmopJ}JwROmxpJSAKhn38oW&HUH= zU?0w=^~sk2@r=M|^`b_O1iUK(os+qiliDj37k&U;r%moH9qqm7AwCNj{u8iKaae$2 ziH4^uNz>yTt49`yJ?1s%qMO*(&}NFs8U>x7cH&kG%{!Aw(Op{T`Eziy15_}oJ~D;C zasDaa9r1q!{@F*YIxwB$ni`pvl6I|ncq2pFW(S201z$f0$)?~E)66L;Rh<Wu7d+ag zt+^B#qTw=Di_dO%H+uL!?BsILvTJ0o#O_0w3F|$?%w{4R{2sbhTUd;W|3By@tec>6 zyZvW!zsO(cGVh`8iBrk{BL=s-57uz9aIa)%Q5q1UI63X`pOzZ*mW@d_Ja||L?|(*L zF`#SNJ3O$Kh}C=#B8HvJLSF-PM|-!;e^E#KV>Z7tef5#zd|5XpDJ(2PV$I<W;Ye;r z`+YY5Wn6yz<dDN!erRh-PXnuvh_x@DqTy6Duu2h&M-Ti-LF5`!2$roafNFAA&EY>E z+p813<_62{Whk81wRAp?k4MJgNHO@iNLt)fe+~Sa0m}%LjHg<|RWQ);H(=>gb4SXG zKvB-<Xz#K4&lPcU2o0UDt#$WOpfSo2pOkgE8P??)BjN{b2Gg+uSjQt4;MUl*639*r z@eXL~-B>7e9PQM?KLLQ<%wDmZ84b@v9zoHv0G%SeFVg~;YlTkk(e6cc*hFTj_zlRJ z^bf`J(`hR%PJ+3#OdV(}EmIq>uuRRo!ZI!66}D(GuFQ;O7o0O9k@;#~k(rNXFf$*` zzzOh~OYugR-SJCscbxi=z6%8KmYOlUK=lP<!JQ;-hmJ+v8`)59Lf!*0>K*M6MA!i^ z>fVg@z$;`N5Pp5@WS8l~;CV~<dx_X$?9X{|bj@s?2&ex}Yh8kK@QIk8hYLE|v40qD zfzaXmOjNf%+_G*iOimFa2fm$Lm{^OFxEu>&U6P31xKxaV3L_Ie3usksh4Gdd5Y=9R zAw4(z4onk#QPaH{G2ipdxtoovdGKE@Kaw-szuwO*8#!fu54pLr(87xW>88U8p5pTX zgF!4RGu`uSzg(A59W7|b0d5hX8;}mO2vwOY@n9GZYP^FdQrw|;;Bv!23Rh4jyK?9W z%8sC%@rHu^6n@!Mc1!YZI`3rXgkDBRCzrzuu-Jz4@hgz;I0CPO_E*&NFmkce+!lNH z10no*5kH(O<A=KGbz<<X??R%`{opXx&ns|;jWaHvJ<;+aQFm~K)4poF*X*=G!Rg@_ zbk6uy!H1)@&{7QW4AsEq22Vv)7?DC;VwdAc2_`%kT4J#{#Bp*aXrWnn98`L|DP?12 z@t?xhOaE;_Z)!ARk2D;HXBR0?%xt^e%OKs<#B)jcUtA#MpEd2NrzcNCqPd9%A@MXd z^v7TdeIK?#UePeaXsj3}U?(CX2nnDXL`ATs6#xcZKmZtZ^#Z^c^#On;3s2()z#O92 z@`~JZctz$bd9@-X;c8SPPR?>wsG>kx@FL_H>cuhX^8uJ56T~~F<H#6n35zLtev&<R zFDL5DkrA&~T^AM40Fd!$xL)OniiZy*ZlS_q=3>jm%(V_l$ypn=F&{71dZvs%UOt{y zLarb(Xd#o&B#8Sv#Qh}974p7Q+}A;#u-+6LtaqRUz01~d=^uI+1HpWv8Mj>h{~XU1 z2H!^WHUYqkAb?KvL(Oi_(=m(GN5gHz;Dh~j{0DWL86mBcBlGazKMwN@9~mw4pG1cN zrvOm3yYxX3vM$3Lusn79(+8YuJQk>{zTqyZcTV=7EDn1nVyEK-g4+PbYpQXVE4?A% z{$MJDATa(5QI9DEh#tTJ5llE^#QK1fMshZn&!TVwO3Q)6Q<%=SkY)NyGhF6>Qv%#R zlWPTxDG>}vTA)APn?_UC0vf_a5%FiL=~0}7kWLCEVmT?47*ogMm=i<OH=6elg^1*} z2+!uj?2Thom3|=S$F(#p_=r~G`G=2%`rJdUf=c*LN($JLmK)O2xlVy|E_|FKS=2vD zh)V{P*n1V0GpTppuNG7o>+owv@Lo1nfrAm<o#jYT`hynYWgO-ftA)497HXm0I6C4o zHxZA6PTJakg*Z*2I^?5ZBnPAE=PVLlD2hNWgCN0n(9qvb7;6;K2rOpm#Qh>?Aw9^h z8^v7({D!&PjaPYMI}y7LkEvnLm&-9&Kg4{HhdYy-h{>IW&>@~N+;Qji3=_H{)A7?3 z5vG_oBD%hT%dV1VTE8aVO?#K+C#mot&ds*v<Gpa}Ud3RC;MmKOteR=R9z&x?z+b~| zlC$io3@dP2mCMZvH_u#-B$V&o!(%1!6$epN9GFWvWUKEMCUNZ=E=*ww?L3pR9(sd` z0ka^c9LW3&f>g>Fx6VIiB6MMaieq3st4c~*Cu^azVPCic3FpID96KLs-8J&5zNk2w zM+F`{OHLJTrXg%B5~$Xg?)=|MPKa_b{s81b@*zIHgrMp<sc@Qn#sXaf<?u}&JSFoU zF;~12mmS{mj__}=CRVP^77xlW<)=^uA$JB{-%&x=MC?HnP_B&@ej1F8?9i;eMfGx~ zLvtI^qAvO~$-2G=10Y<Qr*KFU?*jn~c%jAwa}y!sx)B_kwtq)Pao~^3HW4w!K9BHe zFwp4(<Min5pe9_NPy-Ktn&Lfd+Jo202gmh8PjW{bUJz8}8f3_H)Z{DNy7%d&B8Z`F zczhVAwm2zkT@L|tMZSkKq{7f6IEZ(FBw`mpHXJoSLb4V2av7Y#mZ2T&#drrx!eLRa z06mKM`hRj-py{Iq#Cwn>8m8T137J4B{x%YH9%i+J;d|hi3X$E3(#nfG9S5%BA>0Sw z%*CqrUNp#s$*ZINUK>t;fw-KQ=n-%y%bJC?&|wY+H30?WJW+;GfjnwvIU6k-c^)R) z<WAT~4jnPEupwrI^GR=93w~hd6Fi8>Af|%;m$RA{{17*o*|J<2^^SoTkr;Z73ujDP zL%ZyOix3*me*iP=D2ydB?`fe$4FBLEox((~S_jddKdDkTqdKdNcsyUVPYZVtFP2RS z{yIy_HavnShN8lhl7As4y4d%yjR=5*k6=!gQeb*2XS@^HQZbv1K+a5*Wp2b@?C~J9 z49yrrSyTX-T+B&7hgy=N%=Gv-$bjW7ova#`gL7dc^+x=51g5NxNXnaYZN4#ZVLRtt zOe6W2VWy%c%rJqIJKtI<(8!XU`E|TQ)YAH(0ZTtZR7flexuRXa3>i}K6ih{IF-%}U z<2#Ecr;@m>$@o~2jJdF(@h*-_T4CXqmy}Q5%2vBH_rZ8IcXz1m4lkrNp7>NxdG8kn zezQ0MEezRN2cY|0SSyVk&HJxl#E3!Q0ja~>GXqhVakX&zX&7Aw#xBddlpEjt21iqr zaVyJzzn)H@u?HJx^7Z|~4HFynDn^#JZx*4!a+x<+)1hASv=&^CN@b)fb52AQ6)9q( zzm<(e-pCRFXfEbRNELl0t}?caJqJivRAB7I3N<MWE9Ul&a0Nt^&1GCSo$ZUCMtZ{h z2zlE-CVLU-6ycCeAJi-UEBsRy?EDMy3<rHavkZ>}ogW-NA1eTHnjG<kWTfy(njHN8 zQC8$lY?=HLX~L^|pZc^I;z-0d{2%h(JwB@H>L1P|0}L8HK~s$uHE67WREb4P1SLae z!bBzlaxo|<HG=h4ZA}CeLgLIoP7edL5~WpJtlHA2R%n%r$R!gX7eowr0q<zN%rUkg z*boDf_xoM@oVg?cZJ*!!d;fU(a5DSsv#)Efwf5R;@4Xh{>`e^m0Au4*n>6%x3|*kn zEeP73bZ@?hrrWv?V<V9))L~;wRAHHPv4-kOo+4eHV)nq1*vh$EAx`VS6skQ#!?3WU zzE%t6N@yEG7a@c*Z;FChh?>*PdB_A}Q3#D?*_+_G<|_P&fj(OMBw8i%o~1%Cvmr9s zosB6MIE=P(!TcTc28!TI&<kmFJ}w)G4krfVN5PU4&X|il?=i;a_`<UW5oH$LPo9m% z;k4*o@2P3$7Z3+3U#^r@j&K2}t>U0m%L-n}P>hRBGI`0tBA6@Q=NC%z{1RVkndbwA ztTd+~jX48(5*5GJR>BqUl5#}jt2DhZ>kIV#zpCvui{cESC)#6PjRkN5ZoGicR?`nA zZ-mTxN9f*Gxk8sz>kD<{Loo`aF>t^IxM;ykF>~YxA#nWw0g$w<DZ>FC$L^vup$Bk- z42s8T*ewWqdVUpXyI-5%3Jh~s<>Yi=o42dh*1QJoQb@T81w+Dxz3}1bIIWGh+@|3; zTL5ePO1bN`#E}5CR|!o}>U!f|oRrcQMKOXzl$VHH>U!=TgcQ15g|1Rcf&W0X2@JLp zpSVJ*oVx`zxn&X`V&Q>%6TiO1KjvjzUQ)pvYeQ=?80;;BpF#x2Dc-&KDwT(Rf0Rst zl1sgJ3(s6GLPU~?D^!pLKA|KZzQ!l)&p|MHV_@HYi#w2gNrqkcklTTIOcu>$XJc+X zL)DYm?gyes^^SQAlVe;uQR{G)Vz1V5fFiz37Y)%3Tt9Hp>=FvsJR%$D@)tXioZm8p z*B!x|#X&E9i-_c{l;zWv0I{syYdLAixr;7%LN+-Z&43!LxH8S1p5|Sr%aYG<_t!&y zbQL^74t)i96Il3e=XvDE{DADnxWUG1>PR3I_YKVEwd}oU0_;S@*5iv80~os{v3m%l zfeacJG~9!9XAaJZtiud53;B&OD^3!Q<}bq_c&mNJ#7bjij-2b)Lb#<S`;8Oq4!~^W zg%q4FM2pz75`I{Rvf#3%noHVGAY&Qc>O9#=EjtHk7yHTTO84^Q4ip#5FeVL7HQ!73 zk)*mAa)MDKz(9M4n6;D}VglU(oa*mZp!;aA&C@v0il;F|^dBwA)|KBWY59lpmD3kH zU=GG>Oy7;0BmwZmQ~W4OFtQr~WyNFQK0VP&u2B>AMR}u~s0=Sfz$@^QvY#bxVjUo! zw0bTZ<bY`QVVj6%$N?TyR!Av~XLV#M0GH`$aT$-}fG+zL#?7|afpzvnO=unZ`Fro0 z!#D|XUbT0*`HxQkwFV_k#JNy>3(Vd{GS@Sq(5rjXL+JlY{9|6m*s5<T5!Mzx^)Whl z7z>W7m$_9cla4tblQ_ATT*x*@qWN*ed*rvs@Ff<NLiZ5*UROHGV{cg28sm##p`DX4 zkHQXbfnU<cr3LdKsS+|HESq!DwF&tXG|L>?C%~vAtEKlh7gC2%g>5VFwwR_Xu8A|h zMoV!*$q7AhCqZ-HZ-7B+8jsE2?_;&vow#r(mk-C4-DKO@n7APhks&o`m25kIL3GAK zM>@U)*z6vLjdX3{tS<nwO1z&~rIL&32Aa5hU@I9fhFoo6#RmR!jFY_}O<0T`0$3V^ z#z>&%dO#t!3Gz}i90Zt)FqSsV%%`zYs1~~xoAbSn5((=s_(f@$IxmfYCn@F(Ol`3Z zb+d+r0!Fg<F}-a#Q=N}gfwp|@+P&fX97W;HZ3A&I`NhvuQg*cr*h?xYF*l%LQrT*7 za*w_bToR%<6;b0z1CD0hyUb&Zv$0=<?mS>x_d@r1#6hy6GpOO9(0vL5#~(Osz%27n z;yxG~I$PrY#ls>XQaDf&x7t23H-J($-6|cs6?SLf=g#Waho)i~6U<jBn1k5KmV5+1 z{v{y!4aA5Tsm@a0k)Q-2W->Qn?2<LD(|?IE{0E4m$PlLjzS61HavCx`{M@4OkSoNh zarD$Z&J?qTl^+*VF$WNpIvtXj|7)~}*lIk%uUHRv!7~vK%()+u2~6CoH`hj;!%xvd z&tZKb=dZZX5c1<vG|qMs=jxsNfKFqb7@p7~jEa%(0+NLS2-+qsQu2Mc$7J4%sQ5;p zoFMFo-je0OdBXn2eNaqdGW|L9m80(htMmz)!1<3{hVO_DTxK6}`Vc6{^TfCai8bh% zk$tY-aF1*q46}aJ_v`V!*9pFlN{#Hx(AHe<h<t=HP?jplqwKp%UVcvHH!Be<ihUoI z7TK4@1d)$2to#WHG5H{+`m5T5wlH~`U7loOZs|ei^f>Rkw;O+XgK<tAhoPcRzwQJL z<Ivjd(d&q7)VH6_^UEQ8SkD+N=r4lhQ#F?#?`%_$sF@Ny`WjrUWVAH1fNP{=_*k3u zN4^e|*Lu7@%GW`7)$8!4vqq>Oyi$T#(ams2KF;#=-sg^d>hknH(7U;%I^O>i_UEhU z>u7;n-<Hsyk5zwG<3mD!GION6-_oB!3H^CMN{;pCPI-;>X9`~J{(Q{-sL59PgHA-z zmkjhJ@=+GLqbJ~3cjvLKv2jTi9Gfx8V`J`)_vPY*vFYZVwE~<~UvvsGVtin^^@HgD zAPlon7=l0W^)b9k2bOjk5V#+5VL;IOeQ5e`yTPx0o&4KnOZ&fy`lJSqh24H@EC%3% zJr-zxY%IRD{g3a8xBqj56Wad{UhVcL4FKDZ0TAM9c`OMYq$j{X=5GkT`BdBg9bG7; z6ZQpwJ<o4iba6L6*lj=0f<0yMM9;|fdFSXC&C=ez1n`x}2w?v$3A_L-8n;hdTidds zd;8}WERUijh1Yg_ELgsW4+-rNSRS`Ma4E>~m-hS*!m2$9;8L(+b2eJ{EdU?f^H=`K z)s@!hy((uvAJ&dN)l{Z!s*N4<kKc#I86PBpmhH3X6$#Dksh^IUB(FwyzACNx5@VwH zhczCZ>r0XPX1m4G7)#7zi60}k-SIQ@)73{K!C`uSO7t#O!-p3BCpLIZZOg81>eCP9 zYinRc_tWU($g8cP0wmrua{(gb=bO9DuOE)=M*}~N-iWmN2UVZ(dRAnA2BUnjGNV^X z@JMp;{TZ3e?>oUi-oB$d?e;~#M6gp$?;|SG!geJ1N^CM45dAIfSAC8?A;ouUUo|4F zyIcHW|D!I%8Mu~Zz55zQDII1n#|7To8b&$wzr3=)VU+9GyX%+1m&E-OE|Uw>m1OtK zAHUCG^u+RciO;|#Y>0LE&A{(+{NlEacLjbyn=pc4;1)Jk?D)kT<^|dn4#jVy2bZdi zF)m|fy3xy+x+J_bYu3|u?9mV8HhTKi<{og=MYf;ian#``PxytNlh!sw^+r!_ZNKK+ zMn`>QXQty#W9qW-!n5AFH#<jf=9dHb<A_9>G{={Q_i-=o*8FSd#s~^*?$?;x>~_?; zBaJ7y9gW7+<>94guhi!JTW`!gkW?8Cus=OA{KC}(>lci|E!^D3#Ok~&!V4Xz7Y<(0 zr8<u>{n=6BV78;C@SE=HTZQ`eE~~t~OMQm-1$1uZVQfZrstsDlbtA(I2mI|uh<9DO zH+2KLm$hln6uoP8yazH86`tQ`$(>y)<Q)}s@QR0jzU-T>RZeU~m3<Z!%>H9HRqkMw z{ah~;b*++Pv^4dW3(sv;Wnv6DeBYPhTY(<tKc5dnw;UvnA;<4bjGuP{06Ol5n|{C& zIS$PnzSB5-OE`T0)3C;54=@M^)bQb?F`Bsa%BdNbzS*TJ^y`xGnV!@x6#+}CK7Dd; z*IJgdmc}Emeb%)Wj?B{3Pha`4Uw8GK@n)|dZ|PDGunrwsaLOBBb**X@tNLf=4c@L* zp+lGTF#qxAE)`)l1K71awf|_BsxVId-b%gaw$2r~^(J@jm%zoWU-}1z;i#@F>_+Cb zV@(|KIJQT&_mvS^g<7gwf4)E(fI-0Ue9s=9^MCTh-BLR!5`&ZBVBs0*Lq8Ej&uvuW z(wk%@NZ|Q=)6;@=7-pb=s$e-P`17mpk4~<DeV8`-rPeOR_rG_;=1uHbV)2AheZ^z_ zyA-|zg|}by<mbtStFZ_T-v4@X@rHK=N213$)y~c}s3Fg5e*LXZbpWx>{p2_Ae41PX zu&Qm&AI|Gs{4y3lebTdAyA}@~m+Cox0I=h5v!^$>3n6qih5!}(;L(nO1u!1c+?!;= zAvnYFCaLjH7cBh?D#ix@ghS9rhG1yk@`r&Ihz5bEK{#0v$JtvZ-#EQX6@<qNJ%7C; zeQ`IH44C`Xek_ZVE5UfOE4!u!LtX2EaT|1IOvQ?Oy3_<<?fZ1lvCh>PQ^7vZ$}Dg^ z)wv=d)Zi!kxUTK47I5m+hbqP&?ox{}bptB8{NR-vyHo_KS?G9a_nv{BD>A0OfF5Q2 z>b3bT33a8Nsh_Dgrj2r9dN|nwOBth_jxjFB%=DydTS@Xxx9c-;1@dpW%k>$fFcHG^ z$>(W-k4CsR=VRh58nEY@uydaeKG=%$KAU+RZf%x%ec_w4eBt4z`}Ou{zXoTDoDIPJ z^){^P9N!cVI9e1qI^zDE1o^`9WKxb4MS*SkMFF^`Mw*$Q<?hA_gYq-FUmaZ&o^u%l z3;IFnHi7wcy(PuS{65h=fp>(nl<?>`e%SgRE~Tpr6nlAFhVwkTH?(@<9u*o~J@HKy z>R&za4He3+o(NYgOqW$X@ii67sGbOmlZ<m!Pux}QZT3Z?X@Pws))Pj)0dV9!GT#?y zclor!W;iQ_ahJ=RO5iaK(s&j21bpH0=JikvO2oa0;BlA2+}$yG6n8lvPIFg#mZoWI zJrAcclxjF1jznDyIuLYMJD1Xpa-iK=zU%KL%5~JLZ2-RE-COh{Z%X;exU!ceW8btT z`qkDh@)Pcs09nvzeN=jP`UibxJeu&-XS!m^)VnkJ{l{_no8M#ivkRTr-u<D`6L$T} zu9%mJW&Jc?>7;aDxW~V*he^WBB`x{9(SFlaPe8L)b}!GTVsrvqT{p(cUr!BGpd$Ue zbq**7v@y+=Ty4wmdb75&z!l2_qlo1j;OjK9FHLd|sB3u-&Zns7+r<0r(H(EnOlS(q zYT0T`N)LSGz$z#KKiPh4VO;CP_Ra-?t5eHPZ8H0_W^28`rp!AD0we5xe&iYe6X9|h zKS^I=`Rhcdf6nerfh`SJllc)wd&Uw_%~!CGf(me;p)5CWwWIuFv^P+jErvuRpPx-{ z(<25nhn?G`$14k6iS3I4#)1RODnwbeWuHhdn#?QF+PJ{X{@|``*08lSv@kCNr^tX} zz4Gl=%Ni!Zo&eLs56DS!TfJi)HPotltG<TdQ2V1VP@CnuDg{a4&pXhNzaDqDQp5;$ zlbO9GkshyiPf~a2tG)m&;8NT-`s&x)Ar{s&<1g+FK}A=IlMmKiwRIdRY=ALZm%q8Y z;adkeQ*ewHcZw<|<-Ri#CJQd6Ar4#tT!-QH8N>I!$o&?W+ZDqcXZcEZ<6GPg2aMr_ zYJHk_yHDSaYw&Y%Av;{)pf{UgAr?O8Ss0?>9t{p9HlkfeUnHTDU2Np*A>Uto;qbj^ z6YS2?4n6PX;q+ZLPR==ZAtlaGV7-lh;gKk{4yDS?y^k8al_(UN{h<1(RzC|Ri@Ge} zHfo&MJJV~9q9PRChN9tv38Akf)QE$JgTnNgsfSb00^Gu6Zgg)IyN=Pv+3^u8PJ0kH zvv8~!>P{qLTP&-ZG^Uy2(x2#yXd^_><N9*wWBfLR-o;-Q))0y^9{(CbUs-X=e;qb2 zkdJAo1g53PX?W+a3%?Da4C`w{C^Htyj)jII#BuSJO2q)~I+X4U*W8Q46F$9W72a@} zAjE#L%oXz0y8#K8OK@T>QZ199xCL5*V23o`Ydph&^W;6lu4n-bXZC%iPw)jkgKF`E zy_?6+5pyja4XWdS)o57hk&l&gdgOPM4R;TFf*7MMyba4poa`o)c#K!GJX!Vf=u&~Z zs)LwW@sN2n5?W-jMsOHsQ>Db}38&;+#m!xfjTC=4eH#I1A>uWL(`7tC=;mduW4tzI zi!RW{&EBOL-i$I&gEtXDV2Y4fggpf1(+Ny|S%VX;AjTu;;f5H9H3Bz#F59OQOcqK9 zEo+PU=no8<36+%Auyz<A>{&S+=2b(t;(!|r0<-ZvJy8_)Z^Lf>-^A%^MJ7(0S5HA- zec`HAXr1A6;S^Rdm51UK{)6#oiw+<~k+G3Bs$%^d;-ak?U#aI2Cn{?|6&z=u?tF~~ ztLi*?k@Am>EA-U|2#eKhlNP2s2w*(Idgu%MO~k`@8bWP|VqcT^(K=ikO9{-~ak@6f zy8|R+)G%3I4S5F!6imek6Dv<HUZRDbMIZd78(Fpu4{R{tE1LMDk(I-T0wCW<Bm8<B z&I`+jH0Nc<&?^Nz!+9ADDD(ms8jgbF=$_jYV+Y!zZE~g|3#GELK3ul2g62XDTYhDS zrUfs-W=x<R9x?hMfT#*Bm<d)^b>t7og5x0J@yh~7Zq}BDeulhNN1l?{&=`67i+Z_7 zUKXgAyYS+!Y(p_Gan~_$jCt=yBpiF;!W}Qw{lFXCU52ILz5tCpzJ_ET{lkdqjC|<o zjRTF@NX+?{t(w0bUn@5<Kf21x6zegxDeG{N3DNIx7|Jg4UC2o^uyG$=FEwiT!`XRE zh@rT?r*b2^kWzM5<;J&}Q47}ch*#j~V7FF`t5g2hJ=)5tjULAn<T1eVQ}l_A4IwrM zwc(`HJ7BRR$RGF}Y;bburx-=Lgdn59hvFUZI|B3iB{8lv4Jm;Nakf>tk)V@Hnb_-j z5yJrQ3<A{P@9>g1zgBJ}VC|%tDye`x_%*oLlFE&Qwf%jK`Yxjod<-vDN2<|kE%+$L z702ePj>u{6;G1|wmFk6D3f}@pPKFgyP%nlHp?~3cDM#lB%yr(TVi9^pVn3`pvR;aP zjvuOysTW>BmU3{A#sMCIau5n3HbI^-1pPW{eH{|8CM7N08zX9jiJE$t*W^K<d;!`E zof^)!jWFpX&sDJjQ|+9#UQkkgfY5|CS9J}CvJi4aTW@TbA3&_9?WF1uF$4GJd%snt z<09@yI1H%^HUy5~eDr;)g$Uh_P~b=(SS3~6MCen5WFMdC7ut&hJ8)r&(ty)iS+9<| zmd^kh?f}y=Mk2z1ZSuw>?jM{FG^Mc%<UbR^K-+oRqEiw0uTTeQ7snp+x>$SIgmz3@ z7M3WqcWd6)1MR14i}vA*G|mVUS>0jh$*8^dKS0`vJCbW&gc21bSo1WgSy0&mkEU!t zjIt}X$OyVgDaWQF^9M=gTrcGa9>;qC!y9O5#uJLVKvn3;`<*(XP2LhGyl!ZYRxr@e z&{-Hx?0;GmIvLig`Zt3}cY#Q2NSuLVj*1cbp1^0CNNo7L&z7$Z?~Va&>$8FF9KkWo z`b3cT!0kw~)gtrej!53ld3z9xJ=V#4@jRh8!A)-+)TX=!5kl%n0;ENjq1!Q%n4&ln z!l7J@#}7#bFARJLn^!#@jbdA077yB(y6T?V%Hl?cjAxvlLxWL{;u^3T*a$?0Z4;0F zL?uGeJ8(Wpxsu_zUWwC!G%KUdsOw=)a19|&eCVak2|}%a3-&*{miP8}BvK~(A(X^Q zY({!@noJkL&5&!jx=io!(&NIJ#alwkQJ=@=dRTRQ?hI%C8nZ$;b8OezAD7z2a}Z>Z zSnWS$?Q-V6YkzER6}pazYD60A0;Mu3H%usCA!LX+r(G*OIdOkDnNys!nqo1)PzMTv z2@*JtZ37d`2fq!p^@Ir$L>mHe*sjEUrN0LEpl*GyVs4PSQCind|7k3TP|}My5(j%| zH<*_KDjQ)wf%22&5&F-y<~-PAf|kRahhr%5`4E$RA0sThP4mD4Px+}vm=ZYUs&@8a zd(}q=P%`|Q={p0TY7i`V!31VOP755v#Jv%u6=+8Q3;vW9`C5=d#ejp_%888*Sv}}d zocSEe;(U(!GHhny*@|@ry|BSG+?YB&#KngARx!d9SFj#U*Bjwtw9z4xt+ik=yp`Cq z)3{&|p-io2jMZc=yl!*{0O9V~(ji|B`I{%$tu49*!0HgWP2G$Vw<d7?5abaFP<9fH z%3T!qCQi%sBD<uRSK|!FON_{^T|Z3XMVP1;Nyt$jlBv2rB%I7Vila+Fa<Cv>#0O3# z3$EaCkRw0EHE?3Yk=vCiaF{?e!pqTn_+OHRg%MtYH=~BjCisECUr%*SHKJ^y-iDi& zVqQYUT4WvC!#XLybYhg>SxkX<T`+5!t@3t)#vBx#EUTK+aWK%B*m&5Ij%Z8z&wz^Y z1cyRf)4(k$ZROk6Bv2(IBnDFCXs&q!6cAlzhWk+_ZY4zi<>cM23_!_IzSVpWN!`jO zH=HBfhta~B8oh>CV*U?6Dt)%<iOYtj8*LtN(C{{5j8`@%;p4d=1sLaGOVI|Cr)s}t zhR_zBg#k#OC1xzq+tR!{ggakFb%W+V?hNsU`4$g=8KD%etcAh2^R{YX${FDN>rgmX zhu`Ds&<MZIy28S%N)^k}Yibc^g!-b%oPFt}LM;e!%82I$Ew)0U03xqPkHE?RL=$6@ zyb8t1s5C4{^HEZ4DIuk!0YPa1<TAAc6~oLzL?|UC7l-lG`Vv;C;Rlh110bofATC*8 zyRDb*>64BrO-zf5#HRaGX=h#{WGSpqNp&eCt+B+C(>sYJ14XHTnG|AlOrFjNPeV1B zQo~&3W9r67%l{hv|Ge`8G(3fH?g&G_RO%$?niUliW)GteWE`X@c*dTOS&*l#Xpo&u zEHn)91lf=9J76{Wk;T6D6D@JQ9r0XZhAzjuISbj60UKZ5+e`S%1wx`?;Kv>^x-~Mo zGOXq~Ky6MM#AlMbxgUSv6v(>Zp%sZb1AYnkZPQmwtd>kV`ZB<~Rj)t%zPXWkq&##d zcmU_%6b9u92EjcGT4BgktdDh>&G?Saute$1LP;;{Tp2N7kGT<jBfsX6>l#aERp(P{ zRW(@+b7>1{)!uv$e=G%%$sRySV_iIz8gWAXXIPvAmSEdiP#+-Fv0aze#&tZ26l`9A zqwU6OB0nw3HQ^q^uuwDJwBUY>7<3ypv792{6g`fjD03$g1ip3zM5zI4QT5KQZuy;& z4@S)P`NG9p{o&#r{;;=Eugh)S4B(_h@53s{oXYzxG7rJ1IYd9bFdf`OFLVJ9zw?4` zQ1d$Ua2}De@b5&*I=wIxCIeBm{;Lg`?#!#uzY~<G^jJvXg{+xjp*vk!mRKavN8-$Z z<cb|Hn|;t{P#8z4$Qa@<hoJZ*U4=OZDV1n#-UfE5CVW$lj?22n41rTx2~LU!>2|4; zew+H(_<4n@FMQy|*r)LsJ<i{TZ3P1x850{Vuj+>ANJC(2W7beF<|}RWMLq>H*hFR! zUG-P&5kLojF~NmV{ocN<ETOp3_oI`vP%&6PNSWm)kTUEGGcOJOeuP7yMaJ*=Y8w$g z59e+5G+0n>hCmGoCiG`~w5l_D0sU%l)(fDp?l@VdmU)qn4moIgEBBx7%8LAs@-xkE zfE18_wKXH%&<`C0^Y|BH+#TE8d9Re4?z~2A;e%+KSD#P2_*|+i;!*_*g9u)3Dx}Gs z$%W!PO#QvKf9`IOTg3>N&kL_+Gr%r$af^Q^&FL2zkFX~`y^*d7V6UDZR^dZ<9F(^a zcitncX5NmLb7=IrAz05${KqiU@n1(>Rr@jgR=fjK%7i$o%gx=*_3&j-14>Kh^btGf zJtcC)$ZCAC^uu|QWgd+4n)je}fQ1Jp+=G2EIPR)8ma8px;-$E>tr!;ABOg2c`ag=& zWCUP?Rt`rWhGmdt;0MvAQ4WO#doUYDV)xK(WDbW?#pw>`I|{3xy^3IP>$T?3`P*8^ z)v_PK*qB|_aUIlKi`<CYOwE3D#9y4ix2<v_`g}>LtXTWf_3#GNVT^U@HR~AgIrZ=h ztkvjW6rR5VV*?HD3Ph}DL2%Z@6I4h42RIn6sYNuDy36rX9IjA12eKgB$f)R>NJW&p z2Z!I?Rcj~!<6lN6?0XVl*=1>vC$ImUaS3S+X`Sv%$4rkR!G;ZKo$hmb^#0N$IR~|o zEsRb_g|dBtwE$bdv;O0x5uZg*$FF%2B8y57keqCY{{-;>iv?>fcngy#axo{d&<FmE zoj202aXro$&$?W19`-1aWbVbV*SsbuE;z8Q0n%~I>%R%|QHOpYVS6VioyMuPU5WZB zC{^+nP*kXZtTD??`_hZ8=^`?0@Z7;t(V5t>!@(z%i21V4t_u=F1UD5HR08i?mRfvf z6J#W*7rPjvu%y7J+Qj<Ueyfocy^sPZ02|fu^-SXTQyVO&0HcVuV#-?1TP524pLeRg z^Q3B7$NB@uM$C-*N_T2&UeK1OLL;hes)zVqaSHFhEe%Rs(-w4XOZ8Ig#nu<F{_kAA z5nQ|+oe#9%I`b`kse}^%Udi4|e~$GmyC`t%q_Xn^$6VzuWfs3_OJX$@2Q2tm?LTGa z2e32{{vKpWuwBcD;!wQgGXf7*lqn^6rsBB;&mDLg(Dh&7_W?W);h`GwX*|Y)Yz%PI z7Gpt<_1oY29i)Co^~J|g*-Sx2J%2su7k~4u-=|glsH~<ft)sGCWv8nn?f9DF%M+82 zW$82|jvP{EU~?vZ9cR@BYEwIpuk5AcP-r3m=A9v%%n9IA_{v$>2g-Qh)S2mOp5b0J z$NZAo@_#+>1%%8VtMDCa8gJCNFVlD_3-w~!HMqMKePR@x8#)K4q|B^CoHvSO0kV0J z!D7*Ba(oicC#timK4bHWf#?|wrDsHM`6CFkA;1X!;|}{-<UK#RfIj0Sem!L(Zkwg% z?uG;#Kf)>W>Vs<_MVA$4&|bQMY{5M#m>}zedwOw+#BQtpvOP`an=@=R0N<_s?<4xI z05EATF=<xd7__;I(Hy(v`w?@0pY=k1I4NN5d8Y^#!IDQDi)JiYg4d_;yo6^bo_Fwk zg6Aln-Wbt$(3$h`I}Fcke#iTC{8FAY0+#QYC5qnG3!kwooUz1aK%eOb5h1xf`e>Yk zgg^0hXbyhwg(#D|yCo8UImrbhQHgF4Q4#fA*nR6&jjVFPK#3>fBL0!U*QwfqGbM^R zjHrNa5R2jU?|w#)?u*b}2pI+0^tL)W8|E8wcVl}fY)+JX#BikX;ic+pRYyIzkZus= z@!`^h4}X;pqyc<510Mok->NNmRANaHh~=(Df_|Lim0;ifsD21OGbq$&pb%r`aI8+M zS*d&23ptbsuzutl{E={0q9eZHFg9~{B>H`}zJYF8$>ZI)oG-P&zIboB3(lpGJ8y4A z1$G6w>=TDOwzr+RSBTcJY%G`{JfuQodqI5Z<V`u%rG<aRtgt#1M3eZ>J?wF*WbS1` zVYnURg-3Z<ya1L9Cb_4$r#6|6d*m8=*<TX*dHg$2*h3pST6j7@!d6vokVYNTLgNt= z9uEs74&3q5U(<^Anm<BR^tlfJ_<Hj*0JMv18QMqU)M9vY;o(BHmaU#*wc7Ne1fegR zKDzLegmWJ@eT7<Qrwfm@NJO1unEOTU?kI&6_|a*pPwbzJr#fwbV+L-$HL;S4S;p@< zIvp?1KDA|{^uOcfz>$u!B7f;W3NR=a%2u&ji_iU7nekr#K7^2A-r?o1j}AL;_2#{> zjRzp+)ysZ`O0pKyJx#U)p7gG<KT6cgh43{I6Te$4^1=uyhQxhS)0Ra3kkquZASL)p zM-3mgw1J`~&&!B2fFhjq5$2$J8U97bdKBIfEkK>dcxTJou?0gVaYH`pZ$@*h&o9M3 z$N5!v@UPI6ho~PY4^eY^S+$1mbx22}uVK*xXj{<|w@DhZUVUiUDg96EpRrhYPg6yY zXw7D@5aT8C<Y?V;@Mjzmmu{Ia;7xL>{>AcdO1U^CMJ*KzB*PYUwEu?<!qM2*h5%{$ zRtb@LRU+gIzr@2n(IL;1XYI9`n|vMys)w1k!RAkCpu;imroge3In!`f#2-HA<{|LH zV`M&T<mv}1rn|$=%K~ks6(=`1SjQ&*>3Fs5X2k!(@`Cze2I8>yBfHSrweUpma_fE6 z)+pzQe07D14n$af$B$I`9=$oufwjU(hJ)4V^(}vD5Gu)SZF$1uc(bf&eS_z;6zH?z zTKE|K1;FDkb_?zYv)mPRw06|V>&!#pkv(2S$8kGV!?O9H`E!g&Y``n=LFAdl`4UIs z^h4p{r)|P9nw03GX<Qf&qF2S}X>Wt(``$>5{wzKtnkOT=)A*pgeVy*#3|2?&^qpS) z6~FPQoJui_z33EH9*+(0tu5dL2H~}{jC2^$=ONh`JUvrWQqIRimG(9~|HRWD-~WII zEc0s^jE8z()8_vObFd&f?=%;?E5C8vKMK-efqNJ($<G^3%T-S0$^@L;Tc-!2C;_W3 zJ@5qr4S@sr%YSe#rw6`5ATH11c;P<3F+J)x?mpl*%G;W@unrUE?9<VNT~OGcjNgbg z{@=N#+*)t&pD?zps%!a8)yb8p7LEgsuw#+WQq_1IyNTn`C%_p@2J<-S-b6Z_#p&^{ zT=Cqh(z`ME@XcTwSiKCdo!!rPj43o32K&mH_*zst(h1iKIHUNz=_tsPHsqneXr~h! zz4fq8M!yg9{TKoWV&Z*17Yl<+3bM3EYr~!t0Ir0itF8IB?BTI{o-eT`@o3k638i5H zJctj1b}-U*UT)n0oRv$1#;H{>+I{#KRC;3?b%Rrb`O9PAuK=m+L~-V&Q%hPe)<>p; z9xjn@^-4h<x(DB|Riy?0$jS$dbWt6b$p7g;O|UQQbK!2MF)JOar@c@;y&I(|eCiU< zLWPF+UCx-$Imxx(Op^;6j~+$Ys5irKyQsdTz-5dB4=-~8Fd3w0w{cyD@pFLe!F!|2 zQK0!U7_G-Ba-x}U&~D@D44|LbhHzsuv^*_vat4)+<6JF&E-Jmo2_z=Kzq%Ceh@HRO zOjPvr!{#Bq6l!a>iv>BDiSz741Fo&tk6nBp^d!*!YAYjpL~(?#QS8Z>99m%}mqUTJ z0ktU&hDRZgNvIA%vw&Xv8{Fg`DW(VGO{=Nf&}Lt0Bf5cB^!OQDky)*Zg}sfDbj@3q z6KP8gk9F*7Hy=l8x8oNs^BI6g!Nv(aE(NMxZ5_3{+AKPtGI#MENF0Ev&&4wkSkG!r zdP8tGjC4s8enPlgUZSI!Qx&F<Wn+Jf##(HP{NJa439m_thpZtF@$qC3%|JuKca-CB zYMfp<9QUIuv+r#(sbG!GA6OV*RWSBKaJg~6l?4IA{AbMxo#q>rp0!2$sq_q=F#RT; zJyKKD^51Yy3$O}dOk7)N4Jka5*N~q<Sja*naVGCt|0WzNvdSB)%3~8^<+)UO2?ar4 zCh#&A2$TY~Fe<<nV<l+Mc<Q@A(U^pJC(_mfOd)*A>p#Q+TxXTGvT%5$?WD9x`TDNN z*XKpdGaT4}>;Qiquw9?zQSyqvv~ZB$_`MpCMN*YA$5eE?*c$O03p2Pnf<+LJ%2jS- zc1B+N+{=rMf{beoXRW_<cL5HYeN%RU;T{5?o`ZbLKqJnS;op??!;ElyZOUbs!Q4YQ zVPc_|tRK+F4Oy3RM=oUEaT#;p#_3_$8!gCyDx;ZYq{cG0MB?zosgb{x^;Gk(&zR2! zcjQm7LJj#uIY20$o_bPafu%(`;43`{w~MQAY;6HgwE0n0*zIuVrBs{-tXzi7a1#Lk z7qxx<R@R4=R1)I0yb28w+=d0uV5O)E>=RXWnm?`6u#ivv##*9GQJ}(=Qg)^B=t3li zy6z%z#U{CmcsI=$o)umAC~jlIHCted%bWKM6VCfbkx}7_-iHq;AS0zL51U<5LT$x` zRteB^;;cLK`@7Gd5&aSK!{;<9<syc0V$GtInA94lw@&oMZbrX+MCglQ{_8?to#c;A zPzPFQemisOTj(y4b%JWjPZNAkT9h}W&@6IM>4qHkPC383RC40vHwf*O<WHIEQwEM7 zqP*2D^)kGC!VibSXAcVCUrFT0RPZ>+Z~y~Xm!JF;BmCl!2qe()t$gfr95_0!O! z+}0*@KMLUdBJ_Hk`}6QSg~h4mP!3M!e8yU#Nf_X9Rb9=tmSuN)JtBc$#>{;A!<nf? z#^X6`NwM)uw%lVpI6<7>(5*Wxkc^e>%p34xT%V3BAsvl4I1v0L-iu0MnF-e@aPWS3 za|+BmAx>^psMqTy|0qr-<>%6<QL3Zt4Cv?K_BBf{7$hcRVKsLWOCFuh{Q#~FLD$$T z#2@bW$$PrI8wI#Ipe=eBsrjA>gKI`X33e9-yN8X;nLChMX1}Iy5AnuV3j5#UDJpFN zEf-bI%B}>6VMiJXi~@gJfeU6{P+s+Ah=45+Xf+G``AA|E^k+4ORZaigChQ0m^hL8v z&}{tl!4Du(1`Y6iSv;>n|91Llr&*0(oBrK~o2?CQ=VW(%Ismq~4ndD`BcS<?7FvxL zw^+L||AgQYqycNo)D}J-`_NE;6GQ@Ya{(e_45pH?R%6Xf`I4U!cyKIs=<mW?L%~=k zFsDg)h)O(I{cxf}R?eU?Z%73ct?`zleu&F>D*@n9)D*r2N~axbplN)5=*u7U&Z!rq z;|Ea8Hb<Z;ICtXp187MAI1G(HeAQrvhPl(V@CyhPmBQ>Vaiypfnl@)6TpVS1!zB)n zexoxyG6Qbh=YNT!VU&@US?2e{prII(QX1w16c3=I_$Uw*g~B7s`wZp2gNo?y%q~77 zp?G&ktp{$2t<tw66-p<vXyNOSISFBm2^sylZWy8kufR9j*&2eam1t=pmheqx8$^>t z{sH(C5av$A8{?<=O1Jxr{K48Lrz;Sxgxmz=>ZsGlPYJZo(-tj6qSk_G4*DHT1gv=< z1)epvMWxOKen(r!z8Omn08(@Ctj1G-=OjF@pd#J@Nql~TxJ3!^`PMs0HMA8lBbHTT z9g96To-gwbo18wkuMH%O!D}1?9M8m#7t}j?0k9dqh(+x5=3&ehb3dqKw3A~{1MyAD z^Fo4QNm_UqLfw=$#4gSJiJj-#SRPL|d58s81N8AFfzi|8I-%9fu`_=lqs<E6K&W$t z$(fn41)`s{bbT!2s&C8aV#dGQ8E3{a-u-PE$$?CIzLFY=Q3^J`ZZoE59Dd90>1e6* zYCCJcSk^PU&6)tBbk^Ae857Y4^f3a+y#ct=3%}RkcP4(RC!}}k)9`TPiq8kY1)90d z$1@*K7!Thu`apNM*2V@QNXB?D3yKji*4Y_z2ijoArJ+4G<#L5lkX6<G4f0~vX(x`A zH-S)SV+iml{|eMP>uOT!+@Y}o5@}OagrkyWSwKT<V-{q&<$w~<FGE{A2q@4oItwMv zl@dYvSEEnzanTTjx)z!aOp?}{*VtJ;Mb}l9cM<BEg^-mj`uL%!ik3@-%X}8g_g=U8 z)L^QdP+d2fd!fLWoS|6G2fNLgP-8ywEw}UC8O!&RZ_9@%$)t~K&P#)=2?<dX?V{3I zl(5LuZ!3yTKgZ6;m7@ZdvXZR$brM6hft8JXpI{3?x@^SqRUvdjAP+~rzak%e7a^%R z96>q6We&%1tI*T25Lw8JWP0YyvAFhF=oJtFEwzCj{*4U@mHBcoEeW+etRm=xP=z!U z^rF-{C|2t#d{s5j=ax!$9@4>6AX6&VX?_Z<IDtGi7AF{s^jC`Y`eOanL)ySS?hVXb zbxexT#(agl3$2>(5I*fZq)k5M!l!zq9MVco=_kJ#J<gHeJ`-0(oeQ1#GP#GQzD!)D z_214MY4Sd`@sM`IZaff3CZF=)Vs4)CEcFd<SIynQx^Qp?M?SV<mMq%4>xi%P9jxrj zurq@!>C5m3hqg1m*RqKDO0caq87Et&Y)Aek)bS3!e~9>xRJxLVDEoDMt2=}|3;w`D zCL=tk)~$Ql`j^$iw%ml%GB-rx-+OA;pYu&WsrDUweHUN1#J~3HUNTKsPaMLn$U$^^ zpX`shFeA5>&Mi*juK5e%gBd3HhW$KeZZAK4gTe!|-}n{9Kd8o`vzmF8XV~H|F#p{* z#3;B6c8rnt{>jig6r`1<rh6Pa0gQs|=u+5sq^6CF!NmFfM9QwDg^eYa`IdRKO$*&T z(Ax4_dp+KbeiZ5ji0}FyFRa#vpJ%Osm*|);4bCE9j1R|8;JE|*un%=eHz44K!feg$ zPON3O+<ybsy4yW^dJb+|yn?4zZ|C6!Y{^Y+w3~0Yr;GkFS$<^6Jy>#2mOS&1D7lMH z_HVdCcnO{hAU4jx!Pi@$E9S}2D(r3##q$q{gjIOPBkrDb#Nk<pXD#%u|3KV@xPtOL z-eJV8gU?e4?}TF-`<=fJTkjWHzkh+(n8fenQC8yn|6jtFqTfe=7u)bWrD2cvRLFsN zzH9%lM%s43|1WrcfoBANQO@;vuExW1GVoiEwZN@-a`Bvu=K#iaGsceM)*+0$7cSq% zLT-B;@dlnz7;omy#BT|nEx1|}#&a8<iFiDCnjpHD;j!C#DZ&RqiT3;Pem_OJ#OGnW zuSdSccnrW{GM<5WvhZ{+!-+PYg0|j?w6$pWM|gh>kDV?Z@vq{06V^9}fNLJ$*;ja< zjrSYya95gX|BAe6!1<?u>zCkZ157Rh?jJ>*7|R|OAXCu-k6|LBTK(Y!Pk?c?`doYk zN$s}C^IXhT?m&8u(|DfS#eq+=TXN*|{&X~jD)Z1sXCa`ic^2l1RZNhdu*&=p#cUIu zxE{gPl)%?o`8H_RBHUVKT6gU~sdL`O;`14qf=Kflik88Dmi3X`1sM&2478g6XbBT= zL7KOarZr$)n_2@{w-)dm*s};>E9E?G{vQ|urvWeQk*Raqm@J1dz|?zuRV~v<kEQZE zs8(CkjH7vDw(Fxa%}NwZ1^!ULk1ZO)W(Gdd+_Z*@y4m62jRc9^HK>#a)VcMgIb1TD zJl5PAAfRwdZ1K4kgw`{V1R<UZW|@`f4U2+2#7kE2&nNpPUt`*i6?3~?%pbcHvkU2% z-7e}d?h+*xv<e9nm&Ovi9>^l?mVFO%DKoQQ=$I6O{zlQB4osB6oG;ii?0p}=FaH_R zE3p&-CzQdQuMlUBOKj&x;G`hL6+j3Ss0P_Q7vhP4EyrrCUdMfcpa~?w76WXj^={T> zjLp<oakwjj64WLH_sfE_zb}QuF9o`L7&{&~q<|I>bsXk)h=F!b>>ZF3^@aUn`}xld zGc$_GK*{gvdoiBjA=~(c%hBE#N&S87+!WCfJz|14A$gY_Hgm;B8HhJ<td*9-I&Hw2 zlZV>l*`;GU&Q=}c-rTn2ZXKeu2`F@1WId1pM>K9Bsf=Kt@@rgs9Re^hi~c6sjP*e& z9dv7m1jrA+O*Gv~jMiVsp?_umHse>aPUEN%9r6K`S*mJjP&E<zHY;KVoA^HAHW4wK zz-qDg^RJ@thMZ*xcJ2A^H`qhtV#D6k-^Yz096=;-9|9w@fUB|-zQ-UCn~wo!+(vp% zpefZ&nSoUI2|f@;!cc?*y###5a0!0=hOI}^0ocF}=1>j6LFQo&{xeso%nG3(WrpU1 zF)EbF#wImN(SkvwQJA%iJubKEV|mLNaVsJ`hOrP~NH|)Ez5t~`0Ya!Dzz>9nISe0S z)Y}hSS*T(jdK+T`QZ)<0jpi&C0x}TLzKa4_<39XW&gT7?f8ubpmBRjDzJ)kNko55K zGT#1-^iDdJhr5)@yec^JQA8*sI14oq9Be25k&%|DKs?e6qL^5-dtuU$X0HWRqx#1c z#|E8b%MfZIdOMZT<EZ(Nmq-vqspfl}K}b<%BWcUR>&H>KnT>Sd(CONOGZ?}rY$QTn zNIWa{Hs<!%@H~%aC7u;{p2Smy=RQ2s@lX~h!ZQrd5AnDI{v4-+<;8h}G@s|uX>;Cr z%zT<bqzKejE~Bj4-~6?F#N;CgMo&Qet~W&XJ3}4iz4QiL?>zj0Ti>8&rcx##g=8z( z1g|?m4kx>tiv$)(%TAN_JVta#nhH*_3rU>n%)_|0A)RueNpFOmzs3=7)wQ80n1t-Z zuN1jMlA?=;%}6)7h%{aDEQ{v}BPit@hP(g;D`rk0vpwg&IF}>38nh1U_Fy7luNQJk zkZXz#Etm^Dfo&WuRET0?*mE0@hK?C?!Q;_>Yq|&MDv?#DC@d8{RhWn4b6$^l0T!%Y z1dYaEg^FPxnR7AJtqb<TsfH5!!Jy;Fv*bz0jxVFJK|H@icov@P@C?TDeLU$511ayr z6NOw!huB+DRwmy6fUpcN;DAQI;@17}Wmh>T2R`S6w;>TCJvmb$H<3R;Q{P+nXZX!x z^`(0*z0aO<lkTXR1Ffl$Q>`Z_-|UStFb3tPNq75OBO5$;&_XzD9HVlfWquS41<z9O z&W1-xG+Ef-7eKE7%`+Up2pryv?Q%~W@i!Z}$N_Tj%YWvhEE<?)1mrelopvqGm=LAR zxpt-b0tSnqWZFOhoHken3**$muz3x#5QTzn1gr_TI+*h;)8Y58{Dn88=kO~TH{e$| zWgk1Ei<Ke?vp}IIhZs8NOh7$Q0=}+HD2{TWS%*7q(vBAq=#pHTgF4t85$e3v&q|xv zmspc3kTpqKz8evprDeLU!z{9B921lEIAf^)F1V49(~IPwF-pfF6YzR1^lJ*^u=^wI z)Dp2@+K*;qDxLyhO4fGVt`eqo#N02zPjJy}hOjx1`TnBtl$?7v(cl!<&*!YhJj`Lh zi+PL8Nt?EXot0o1ipxDKMWB&nC4xhW9R%YnM7JwEY*sKxCRZs9mGq4$-kjd)gW^W= z=^Fb}emu_!5#}srfX-l$y(DoVq6?5MFRfnyJPOEYzr8H6JYlJhrjf_RptnKN15iiI zzu8%3YG5h~jRNCG>{Q20gF##PgW-#Gq6grW5grmkateaM!{E{)14jS)JOq>|nRa3a zMxl%@9q<E7urqkE-3qRD><-l9-k3cev8FrhMjbI*Y0;jokO=^$@<itC!pL8hWWxNn zA{ax%#o&w5&r66li7YrJo1B5LkSS_WVy;3=#gc0q_+*z{u{^Z4FUf9Xdg6E`z+~4Q zdL4Bm^Lru#SQ2#%kk5h5n}3IVhi$P8>R^NEC=IH*9{U#cK(<SQInM&!wE6!gfQX1# zOA%1eLDn9U>0%YWBQ!;&MEvNCL$IHsK61a#eDSz>SvKjN$@tG)#QS@)wpoEC+cxM4 zq-Vw{R?l2Wh^y-tQL^gMy46*FP6A_*oBERhVPU?bEYc5N$?72hbs4(Wz^?!sCp=Ix z1t#%nZ0*UhCQypYF6+$}1pf_Z7VLM7En=}0<EEGfyX9WB$YhU0@GZMDRmA8d97st? zRXC8&2K+KH*JL}_?(T9C2PDrV<Pk{ylIe*9?2GXd*S`6!4S?lm(6Jyz8O-D;wnI>= z1TgOmh7E)7D9wjh{*nk{UsF<3%FY18EbrsRIr0*Gl8yWiaj!Fp?3xkLne05qT|6NO zk4k@M@;J$jr*91mi_`oKKBz$_#4#QZL-&L64}GB845L!^`1?`!iO2tLB$e^Mk$E_D zSF&Df{9_C^Huin_6&;qb*YIM^cZgbt%FLr^W^4>cqhSK(W`H?9hA2E=4PXkhG_hxZ z@~}V|z^^TSk?)W!hMFr8lKk}V+m%#*tn?%nsd8-wdc>qA2hotvl1Qiqk)BP9wJp0W zn>FeY7+{hWJ=8m}j09Siwb}K6g-|bMDarW*tBG-a5MjWA6=0yB=ml;9L!x`ZGrd^G zEzKFkzWo!IHsb`kyoUvkLmVl4dNsGmk^|flhZ85{^he7McI>37H_niEUap`6!IL*) zX(Xo4!kn=voScAohek@6h=%`I|Dw_)M7s?U35X`{(v7k{;y!FN6O&Ux3WIZY(W)6i z2Nn8g$Qwoq7o~9G0%oV5$Fx{}`B6)X*#~d2p}xfK+K&>uMj%_1-^Ny2l>artO0feW zyar>7s}DI$kW${89D_jz<CxHjW6)u-RF_$U>y}pCmb|^#MiCM!2Cb|wn=h+lj#U)d zVQGZ}!xaFRuBY)93FDJ>MqeR@|5RPLdpIComlpgTNS`PX8iRhK1|<uTUSKsEQZ4F; zuj0*r;fkbE^<kxZmO@w1lqcs_{+Y%<KQ)_p%QA5~UWbS-!!-xPh4Z72GqE*Xgs!a! zHJ0|_kflN8fblUNCMn_Y%c8rO9%m~2<}D0iWni4%txBepIL|4&J0$${GRaF#A2+Xf z;}_b#;~^o`xgF*q_-qldu$4k%Km?_1oP!ZEU*q>G%>77w%-kk#s2zZJm}}$T=5?5V zj(@96F&~S6+uUJ><KOaA%z1d@0fdy}XtL&=kMAUxmiOfXMav#sh<fcrIW`WA<v`N6 z*%xBdLiV7K)Xg~_Do8-iB_gUqCZZJ+e!*YRDRB-2mSVmOZ$UQE$W?SfrrT`(*p~&< zj+Z;~iBmBS^L?<TL|s*o<&5F9i{lIgZhN-_dJD?5aF3HR^up6nH+ul#8qOPtDE&=8 z;^KuvO=xoJ7N)nH7+!^bk;9l5AYtMi#sGKEv`{*tF$Ek3?(^s~xPbZf$8uzc&4l=g zb6O9BfCvmyrkXCyHtJSDG!6v|tOB<nm)lU}1P8VR*j4;f1{<*&xpL@9rr_K`x}_-0 zGGzu?fG+~a>oNG~VK66)aQq4CmFPQwR)~H)XDM=-UjcN|!3vf7J-4nDMCS8om1KY^ zWyPPjGQ$N}mq_$RyZ8(ie;34P8q-;cPD3qZT|$9Lj`5l1zu|<7Q!*!D$(jq|7miPf z!Tc#!_!8ZQ5+(Ww`-8DDU%}wZr=QrLB*zudI7xJWyA9GsI;Te6mumCx2bP%ipm9lc zrt0z1oFJ>43WYtRgM}({yvJvt5Awxp=>yGk?an@FS0tTXZ7W*ltBE0)Bhi1bo3++% z?Z<@J+msS4TB&5j6UZ)$!u{qQm^P%1TarpT-%_b@P(`@-Swe)A;k1D^#jcA8W%fmb zPoylk1D@Ih)$9f_mnb2GE5#=8{QwzPD!j5HY6qg2IR$5Tz_=_O|G6m3rrzKHG=r;R zQ^C4>J<*hVlJrFHeaN-L!<?$=mMl0B17<cNlI}VOalSYHig_4^YEObUO=zZGCZP~7 z7_gO;(NCX2w&4J>t-FrC&X~IZ+T`{1dx#dUo?%vFl`3$54saKoBbX6TYx@OiG?wPv zN}!&{HE!iX@!?!)hKOa>a0=S>0@d3QG6?+>21_D7A+cft=7cK|zep%UB0i+*3FHh# z>%LB<H7R6_qp91HzicjI&ZZ<{wMY>0EFzc{A;sU3fP&KI5Ldm4S)Qf-!;0{s(-ynk zL2XWANh81zlOkruT7GIm%cU7p_=&4WuoPi73lbX2c3G9&M%@uKI5Dz+QvomzuRmJ^ z8SC<o5}GSL{DG=VCM2o6Pv;cdIf_<Swi27~R(+FNgfkQ*)FPCdO<tYQd#k-`Sr^3) z%ys6&ocJ)QaUSPCh&^m&B@yT7`=G|RfZCp2F(EjLI1<VMBtY50oO_vaH>6(1aweA8 zGR7`dBfXoM1ruw?t%;=2F%e;7<W~sFG^gV$GD~s+%8Z2MjA(gP_UkHuj@HyOH`bMG zZY;5)WvqE5S}AES269_z&m-?h=&9O;l8&B^<Tjwl<t;!hB7`C4nrC4Kuu6$?zm##C zP@EO_Ebs#ITrizziW;&}1piUrnZxEh|6aU&U%dQFP`=gbtxWbWi_X-Z8DK=oBU~uE zoQcARl#P09>DGK484tfr9cw%56lQl1XtZ*6+NoNIk`zv=IKlb?ZKr6Vd+=^PB$0J7 zjO2YE9_+=~%h>G&?pW_K7LD<D8S#CX+9(e^Nf;p$*H3`U0rN&MKq^x-4t@eK)FM&9 z@$|dGy~@W4=emnszn5$i5~Qnxm=LfMTqg;B$^?%vK>{wDqY@%S()xJ<#YmYKCZv!) z+?)_0g<gvY`*II{<@}V6L%oyww=P&p^+8#>QHUexvwG0#!V=u;hFxczvMkK>7>k*} z7oL>mZjCsK^eukP`?fzk*69lu_C-`G-kU|MG@qDYqyZ+?0wg1q;8}&(jz+gGFNahT z+HLBI>EhRh)ZV%^oAqbVkdqbRDmz)s>1);P$kMtM%8gqfxEPaguTHDJ9>E64CfGJ9 zbRyg#*Tm!ZP25!<rT~^@XS$^gi!VZw#PeEi{p8jKJj(z*#L4)kUz^T;Ut*ufuiVT& zr_8<ry;p{`n_x(LcW#q)EGqBqGTe_T>~DBnPV_O<a14du%5}u$$=hE3p;u1@9MH** z!ff+&d{Vty;Vet%r64`cdUuueYCt0XyEfZ=2!-JKci_Wp&5HvYY356aP`y;?&3_|8 z?)Px~S{Kx?17)WJa2U9x`)v(9(fbsAlCz-@8YOj^sFDGz{qg*%C(JJ%9X#qjuyHju z=z7OW2FUbDIZf)y7|RQcDM@V@<zp=kqhzhkD@;MY%l(w`MYx`WJ5#r}E<=njZ7o-R z#sUxIP>(TbtZ~zXhQhH-+)y}yKl<CA-jFo{2u9k{iit`uA&he){>D&K#m{I_!C_r( zbn6k^bZlMF7lk>?C+QK-fF`85rnvNNf9Y!;{nf)C=sP_FaM@h7M{kU@xwMr~Rn!$} zD_`?P+Oyq`3<Tk#qYc4)XHlTm<@nlhY-HGZYN&SJPN0Wf>Q_aj?H+yS;rI3Jo&nos zJYwZ(D;rb^xLj51bbRSJhyqSR0q>yzzp-E_8mLFi;TZ8md?fsg!Xe6w_S}B0BL`)d zeP3HsSc3IQ;D7_$ZuZSHm8<i8H|Af*AxF;CZtj;wA47$JU=2>*peV~;NoRk8hv38o zM^ghcO7{DpdL0;@F1gD3xeYIFZVbgwx?V7x7jXvV!_3X-l8lzV(tn9cE$`n@FcgiD zqfgmLiL(i~5<MMPqVL9)Xi2HsPsKqFOJq?Q<=K4iZx`(>f2L(y^7+Hof)Z!hpIi3Y z<H!DXbDun0-6t>7-!LYX05zhi0A66bQ=e1<2aN8(r#P^*i%_b|C?6E~2$zYT!kbYr z{NjS4N=bl2o}wwx`V?fh3_xQod}$6G00c@_xXLFO1w$RRYD0AjQzPXPKqk9`k<c@s z2;6v%+}{JAMrV6qn#DF0<2UZg$?!vDhIyUj{-FtQ({?eG6Tpw;vRj_Q`OsJsQAdeY zY0EF;{K~I?9_<h2V2m#@&%>Y*K1KR2pp^0G0Th|nJl7B1%$>DEed>Z!k?!!777n2m zGsM&m1VLIc#-s9v54ehr>mEAvYjAqr2QK+AVOh-{&>So60P?alWs1O9a4(n=GPN{y z#&6hMYYuf(+!|`Fm_~a)CAYxdPwM>>s4^tL?z;vZ{{W}P-o^u?%rw+|6AoA1bk1`~ zi4^Dj4!<*V5PGNl+z0xid0PT)z2@~;hZTS9W~Qoj9biC%Q}*}?zL59SE8eq!yeDt$ zkg_xMvG)diCD}H4S^aCxFUc?eIGKN``<~2bu`rCUXRr*Veg7`z57G^9NUZLCRo(BI z3l<jPFYtpXO(c5sQp_JQ7m$h`JGT!@sf;ogPVe<W3&ocXII-$qU|PxH#QCb*{#CVe z>Mbj+=vUSLH-_@6+W*eq3lh*z;dh`twd`Wt!Y=<rujT>(%&vN&{Hpr&>S}qj;i*?I z>GaNWz6D<Tgq}(BiP(_JJ20mQHv5X|nK{-!_Q$?2iF=QOfx^+q6kN76ULpsLu4cF) zz%c(I$RrXBB>Dle+bi(t>Oa*jS0guJa8fq+o`!NYma9u)>xn{K(*AstGxmM|jq;uK z^3x2D{!|vi9{n$zc^U#VY(zHP5TGfeTP4J^qAHFSj8w>v5dSp<e6bKopZ}C?sYJ$! zUJC>^v-WsbrG+iK6YhT|`G+Mh?23bBIpC#^vP;0c9m(ujjkJYdr6tE&_Qm;&ao>=r z>vtsdZJ08}U)N{RQCQmp2&-W~e~`2Mxj<>j;g%IDe|-Epw}2&WdV+Wist?Q>lrjr^ z5-ih~G;YVwzqtk=s%qz7?b>$zK^J`TZ0akg@(XBoN|j^Yi4|fee1ge4lHstmU*PY3 zgW=N1cYCeSrz7Gkb?|TrSRofxAh~k`K38_&CxiAYF)_dVoFx1VOmlsZNPoGzo6KdI ztdew~<Q>dU-T6z)7Xw3w_1E;`9cY99_I+%FKkZL!98B;$`8dH`FMiCqYmve77!W~@ z+NhEMUk6EiYe<Pay(Nl>n!DSh!!7Los0;Xud)%<GLY+OfXa+&m-w1||yl{Z<Yw&5@ zuSH1EvV2P7_`7jWc!dL(44@z$<ltMdc6LvBOEo6$;NYoRfI@pQ!^8N=-I(diG1Jd& zYclUfJ5+HNKMicpqB?(2%OB(T0r({0t4}|qzX@NbMrnq}xHCPsNw15(fH@7Aira>W z)bC91gt0Ms-J<W~!5f^~ixtQo8S}jfJQ+8FvC)_l*!KY@cVqOuSm#xfM2C$YQg)Jl z5QrWf2Qab;M!^u+K|cT@#bi3dx6FU%zM;iw&+xV|hN}qYD~r=sbLyPo4$Q&m%)X*q z*eEW?`O_+Z^Cxa4S-EE6hE0YSQUs(5zy2kh*9o!hk6r^!3qFm8z%j63IOf2{UtB4v zK+dkR8*l-;Y_U?PcQYPSp=L@N56Sd0N;#$d2F$6E2R2JtE$i&@YRm^fOfIeBO?VWl zDA4=Tq;~xR?P{rt)2n{On3-v8CRapr#XKK=<sf*p6-2q7X8Nw`fj`>FX8mDG|B;VU z!_L!M1A@t#2aAN=7N3WgI$;ZDuj?rRB+n0>@dy0QxW2E)xF_2fBNwe71r{2ku&6B` z>oZ0am4bwP;l904Ji{)Zqro>|Pf@rmCnx&YBv>#geS<IX*~`<!ak<s3z()%%HhudH z6mv6+EAf@igCUXOvtTmQ=cx4!XmG%P(QZ|&2RRGE6Ml%(a=TmpkkJ053b5Wj5&nWM ze8$LWoNs!2jGJ+Q<DK&J8Va&V|J|e5j3upZECb&0={=2+Ltz)$7&)9v>yaga1JI46 za?=9~aQ7eyWHuC1(}<(5gHp8WdW0IhI~d{K%!yI#^w7w1L0^ylV7AA&qXgOykm&eK z(FM04jSstXr3Eg3c*scn!gfy1NMHED9B>K&22=^X{d%i!Kz;PGiI~E|5B4tzXN~|+ za2hLm9-=(PX!NV8{HGq&1YJVK&B%KghC2w;Yr^S+i^4;kEf)X<6n~`~OWFfj>nxlB z*)tGH^#$rvJL-65<e%jqYHNG8e70+bYuAi)^o6}}ZzgY~51$k<{YQfZi#CC~(BD+c zx%8!}%JbkzuycatZR%?+_*<l5neVZ(Ni847yP9fsHI-eJ?(Kw&xaimks)t3Td)PZS zUX2Gcuyh`7l<$D-dpUY|crWbWT@xO1nI0($XJ)p*4=3w~v0vxl>Yl!ide}1Vh?Jeg zia*xYq_%u6?LF0Q?>X`G*(0l+=f|7d0vVmT-e*~twR~jZE%7VS9yE1Aln;y^r{M}r z%pSBayqJXRgJUO9zOjI!3l0n4^fRQ<Yf2CYB<u@2F#dab@CYhy4A$|R=85?95WjOl z2fLwJ@jbVqykL%Ox&;H6aj4(G!E=Pt;INA7G>SbmB=#bAdvNfCvojB#Ec!J94IvK- z#h@YNw?goZ^;0_-p11@JYX)3kE_@-{-6%nCC7MH{#V{H?3u%#N9p22(QIJrf#p>4r z3`PyButb_$A=1Ebxs;-Z53mIIMB|ShYLho92<4?9QxVKS<6@rJK8xy550W=yAqn1% zkar;%-zjH<1<2(|w>A(PeCRAzH01B${wM+A(OL1Aj2?$T3}DNVndgu>{}XT8{8O=G z(~19d2wZ$s0twD%su%9Or2;=~(M0qNCjSYjqO`|zC|iK%r<PsdHJ;7kumVXcP9yRg ztJ!~!!1X*xQd;tj$M`;Y%&f=I{2nbpU$g}FyB3^_GBELDU3baoY;A#wTCoHxz&gJ_ z&1VfIuIQn$D9pGo!)+|gsl+Hl36sVB(ICQkyUNnFm2X-q8@(PzJgUA<sYK_3b5Phi zgi;2;1w=i(H=>kq6(h8j2lUnXEEH39e%To-vbE6F7zs6Hn}-m@`uM*bvp2BQV2(o( zkxzT+t68aj@bKGu4eM)Jl)$esM5D9KQxMHvTuxf-ASbMFW=d<ssd?($FZP~>nT>y7 z%&ZZrQZ4uZIuQ6UHSo3Ltd7Hbsy?g4d$IAjz=|-VRPPomfL^Tqxp)8*)PnaTnJ+xn zk=yECU&*GNT|cs89%guFe#!$K!W}$$JIk&s3T(l#hcu5Kd95wbHgDcrSIuJ!ajv*} zWCyko5^5%xyVgvRGNI=3NmOIoYZHd;)d?7dIfIO1BFw&HgZK+bJuv%DHj-fWT}~&& z@o7PCK=(Q@B=jYfeMv!QS}x>zWk$ouW2#3p91k2rj{<e6=#mzE5FJSD)>R$zV6vzg zKdNIh^pVF};1@8g$QmvSR}1wU8?%u!`a)ZLg!GUPQBWP~p<59!YB;_ZkB6CF+DF{T zI6aglUpU?ukM}2ifi#aj&l;A&d2Z2<L4_V;HQzxPq5k*<HT1ad6Vi8|P!w2nvJ?jw z2M8M>778t+9@@uOsXfx}(rezutFIIm$kh%G*Bv<Io-w65bRKe0GSfnXP#J0wO;5;$ zXp#C56Xpvjuu*%6rcF9vFqX}fAL7oUC1jtu|0JQ>&1CZiBbiJ?TCkE#Z}cGC4lD?J zeh5TfDu^8T$mxYUDjZ%1YtR-wg!vNP4xNu$ib|o>+?NXXC!}tVF(I|h@T4Bqg(X+L zL{$I{J5*%oje&iKjpwOB00;Lp!sHc(ssx!}2qGfo(#C)<@ZdBM{b3~Y4ErkwLJPN} z-JSvR0-h8m2t!S7&GQE3p8L?19#LE@1t(Qq33GUGSs(*Wh*Zd>XXYIAXoIkTP!JCj z(6~VX6k)R=){)UJm&lrB`00Rmu>=rfuo+7rGZ8zjI_wK)J_L@>Lf~5jf8E;3ZH@xW z3~YpY@w;1t0!Eye($E!jThhDRJOi5bg0Y7C=*0pqy<h_P75Wh#jLgvH$%qPn@ecTx z-}vh+L_?jYW)-`|(eGoADO78>O$)vQ*i~*k4{33lWhY+19%a`2J1Pf{3|<L1!>gXv zg*Z|EBFYiG^Ii<btReWy>Z}=TEjRbDnbCo)MWx$_pj_QhYuM^Z<+lDOM4bXCr9TMB z0-+PZKXL&36~epGAk5gL0EXZSmqZ%neH9}tY?jVc`57h|%u6xpcADR0U8aQwA_aO? zv8lVBtl%L8utV~H0ER0gc-+9d%)+3Ni1rZo4Q(0`cEEkAMR&2-IE|2WkyjAQ+;bH4 zwFLexDr18XU1R}<ltUmdz6y!VA4t_fc2FoJMja0wH9uo13G;_N3?q*!bTE&IF4bc% zlYyoe*N_kzgjcah^DxS=<z48cEjDnIaGvO0MRGu6AnX!MZ6w;8INUby71Je|2oDPs zQyRtBg=Xa&a-4i$0R~C!RU@_(LJef4BpE3mqYMvNN;nEzQc()pZlO^npmkgZeLA+W z<5H6OoK%~iLcO}MIALvpVStWVPf-^B1!97q`74NsHZHYe5A?XT{1weMuajYgK&DV( zCd>Q?;PHifoHCsPtq81MV?z$le?h>;hcbT9yz<3LU>0H78~qqw4m$0hx^)~eec5kZ zKMl|xlMSWOc*sLE{{@#vQy}6^KIL*hS=OLP4^F>0h1;GH9)6Oxwi)}Y4I^RwDFas! z!9TV*dSdzF^f<O-25QT2G{BZ32*(Yt<Zn{#lrQ?_uJw)WT;I0Q$FI+=ZFY`4ab<6@ zGPKm%uS13G-_5c9{j_s^6IFe?s_LYJ()il&aG$nzdvSQYBd$MG{msl^r?VW*k$t^l zy&f6P>@D364<Chm?DQ_|mBkps3EFd8=k{#7M*4r8_M|4ZXAj|V9sXpFcQo&6J5h6X zCpJgXyXZUI`tD@-OzzyC%T;?ikAI^*{#h7*y$&0Yjx#VawT?m<%C2|CAmV5cfNU>s zMhg@>Ngkh0^-t<t|7ucuSNxOu+5dv?Qu%ABT-J{h#-qn>eTN4}0E|&Fthl3dts_*e z-H$?vgZOOWLssM?7f~Wb(ZN;+{ARx9n3N0!8!xt(H$m1+poinM=hn{cS?N0gR+OY# z?I9`@5GeT=if?PltJ0D<J|(TM1xl}Y0Vty!dXl+Weq#)wH7c8onl=Zl<H)#>c{<yM z*uBO)pC|8N#n__oWXFspMWwZXOS%hgmI0nLfM-CXM}K=)J9eleZJMJ|Z-*?27n^f* zK%sJhkdfO_>(SP}?e5s_&3kjs8py6?<BGzw9ZC3;Tz;>v<pT!WRN37WTwa?X^vkUA z-}fJUHL?HKp#Q1Te+&ig=L1Lo%bssw&)w)b1{m{mtzF)zPUW4rr}dqCs=%1k-y;2> zTh#d;y|~eD++&S3hT0R(0sX~C`@%xi+eYJN->``p+M>nawMAiXs!#Ve7l-FMio(Tk z`Bz+9RC<)-e<{Y_t2erLwYjxTLq<eCb%ireg_^w?ug<Gw)W|o85p@t*Y7v{q*aNZH zUG4f_IqJ~tcAQoesB@-G%>r6BVpMYlUA*BO5AX$i_hnDs)QmYHEd9%7qAjV#;c~QR zY8vUIOMB3|AwO2_Apws_ZVO`0>)a0b8r@;F!GJP8oayLXfBA2cfGvzaf#1dSSKl4p zt393I&0S2u+iAf&wJ2QP)2EjM-dla)bR6j0T;_$dFa`0=!{OZa#|qq=ou?*1)n}B~ z0yR$^fN`<F{~rT-Apw0K0PO^z(U7S<6XdU=QrPC&TvnXWmTS=#(!-d9cHnh%QX9Sl zke^NfGLShwpT*z{WOnPXdi8o(<@c%SU$L%cvMy{;;3frFS4n{aZmq`{<1^;@fzTDV z_`{`O@W7Wkpl=q?7ub=R4K_ajmZ)I)8xB4r?V1BG>I4oLnBJxk)Z+V|wBoF^x!FL_ z{uV#01Af-o`1uUMRsxl)#n2Qz#_I#>4HaaBud@VpS%-nzBeQJ1HOqEWLHW95*mz=k zw<LQ1j_?^evMYS106vNz)q%Zny2->5qW?3H`3oWA17w7MO8LMKVR!#IBsL{L0^^y~ z{{;Gj>sTFb8WVY5xNj26y9}1(W!m!?xA}l6L=$b%GoAPzNFdFxmt*@$;iIqgWpbDS z;4mJ&VOIxv3^^N!aUC%#mly@XX%CU9jwH$yxx#aB1d9yu0GxA2zQ!CGftfWM-M|H} z!_lrfmnUs{7BDT_@NNYwqR))BjBwwA1WeNw&g3!?Fr7^TEe;nuio?^>6ux!WzTT)E zd^s~cscl``1y{*ngsJqsY`3QSR{R(Iu$%GdJO@2F!Wt0FL9y|m3MY{-qQ^Z|Pi^|z z3S6Dzg-W4**D(asM-g`mar|xNn?lf-ewu-9?g1e2dcwa=f9v?*=Pc9-`qo4gBXr@9 zn25^3AB(&4N1I<Kw8_~UO*)xqAx#3w3yZef(;eK4Ir^@|iHP-=FHgdLuz^na|4os8 zK;Hw*2lm$%8`GzOF=lv0yxU72`LfL;hg_|I-RLzY&VikE&S^!ZHAHfH;6#u!5`xXe zr5kzR#%)aX4Vw!JS%a5iY)3j;(m{WO7nhp{VTl(QHROB{2K+JLz~ZZ5eLi%p+2@E5 z*DezpfMbXl^E(jPr{S~~(ljECFY@&nn^1Noj!$AO3<W&GbFvty?3lNXe|&nq5AHbN zKcZcWOAi@5&<MxVv6<WL*h0af<JCO0ci{~n7S%+a58r@Nd8NbQMqN<)4vH=36n!73 zEGc073HyjHo_)eDLa@Mb&NE(Qzj*krisy%=hwTYHjG%|xIR|Ng%T~7oE_z_@!S2I$ zua4o;Ww;P5gB8nJ2`HiVYh&{z4s?81e8?I8-{Qk6^n&=1+65ng=0hfQMFwL3qygZ9 z|F<z=nhnK+#Dr%pOh~mb;e3&DzHR)E(<gLk{PDZ=zZiLH1Qqg~c;xN*DTyEW^o{o- ze-X~Fyrzd$QQ@B=#)nlhB+W{-_QQIBGtES73&vLjr(dZM;s99j9AiNxpye-JKqB$$ z-X;FhKaoGcYtk}bsknInt5{y7w;A)wyvEpBUSpPT*i>+f1<*|57*1tTU~4K;H)Erw z5_`zxF@D2~=vqv#-W4rpSaj$~n~MWE?fR>j7~RkkmliK%cCwa!U@cz#-|k)CaJL6$ zN}YY&AUJ$pQK+rS>F23_W*++nv+S6{mecYoNNAal)9`eehWiP9Lg3ma^Kgv)EI}HQ zrm!D3SOocxqRz7!NajCSQ+?%*9My_&8iW-=WnfpNZ3?josKzq@>pH2&<EZUYk???Z ziS>ZbCDs$?0v^Y{U2PtFRqb}9aTCf2aTLMuddduevk42mVQ0Qa_bvqIJJ|6u7EId0 zRnRjkFbYIrNIh7dJRGay!?7-5IBHw2u<_|T)b?G5YhB`S)nd4Y_v?O~R&lEMe|?-F z4K@59A0%yMh$My~>UdcTZAk{c-*|?k=*7+u_;)a;64c|?=j4=mar!Kgg?E~dx~J!Z z|2aJuTw&3(PygDOH^-=A3;d;3af;RzMHhpjf5jP}6zwr4mw62LERQi;(eq3o5ceQ( zvIT3^;uU^`i*U-t4-JDLQ=ks()``t6nMyt*J$v=N&`0ZS`e9$`#D&a_iD8@<RJ7|T z@;7?5&4b2?n6@^3+zdTj0YG8e08teu5LX0AS8(naC+p0uok`eYvWkX5VBbc=U%De- zgNAKpu_Z>sn?r1XXFwDL%vwB-=>Lv@8<Pk)mCBCqM!=haLj;=wAnErup<e+xykizC z`o$JCK)%iz7J$FFwq=NgN8h0`Dg6-Yd6mP%0p%oTjSmV1?P7coU+dM@4j<S3$gKMI zkrAfnKGDbs*K_Ml#~B$^(Qx8nk-<L^U#0wbP(L7}ieZV7Y${2XTY&_F0*K#$(>Rc` zJ{trp)Z*1AgIwK-)GFuW66CF8Sb|dHwgIeo9c1tq5?7#Ym|tJD1@PxDQ}kHtHEx0c zKA+@RRQiY|fY%~u3E+^$AF;@>*=x-3d5vrRGPO1%2UT+|XC>%o?B%0}G<OJ&4mfiT zR6;oks<{Xk=q!nwtoBNo5))MtajCraKbOiq`aaQ_)OEMCHM}pxmb8uru4t`^Y82^B z8cZCINWZ2#+?x@oR0z{@K^&i5UCa5dy*>Xs^cKg5A)0>c`or*UfR<Y=m)CK*Obogy z))B9cQPpKs5rmvxn20vV(a#s@-yMJM8~ne;pO+Q>q@EamKy+mju`MF(I1zhD@Yhr3 zjq7m!KR_LS4B`o>lbVD&{gd<sP_di<e@@uj3E$S+{|)Mt#yWCh)H$Ji5cmQYc{Wlu zgv^htK6;p2_Z~f@mOkMrcvG@}h{r3E#s6TU_@8-+B`z2@ThhO;bg^Pi#no5{C|SXa z{X$#%UxtN3nFtq<7Ti8Cz^5TK_&vj>V;S%}5gXK*4mDk^u=mJuL{xSsq(#<xpqaP# zDuJKy1(D@ILD0M6uB2DrrSHWiA65lH>x2lnTc6mv03vK-ArxH>H#A+4Mw;PRr%!ba z)n%5n3E4*2A0>XIhCBgJN5T}kt_rHHRe>85N=l`u3+z?FS&7nmkzVV^$u=mUBF8kk zmcgQ6nYH?0Jy;a51tM=^f5ci8V5`|ue#Gj5;v=OpX@2ZfPaW#PB?@>p)C}*_!e|e; z9Y69|ifU->Mni|V#btyz(6Qx#Q5+1zg>`X|YXf)34o@D2WZ@q;+Yy=yu-?$eIONu4 zm>^-O6Kyg~SR^D4Q*Fz|-&P$8$1?8QMr~c<s9~3I&G0_m511?u9N%fcP6SA6z#;%- zHv<-19h_*i{sU1%TPbAdcAN}(gOuoYz(rNZ4lTrU-u4&(On|Pe>+}-L9hH?p2e0nK z+%apG+%`}?x7{}<-tS3XAN(Jr|AF6){{4#n{rW_U{@aatvy5v%(xCnaEb6Zjsny0D z2(DhN8-y7^JjK!hXE&|$UiRwY9DDtF9QvOK`WL)ZlIlVCu67bXR}y0rRucCM<;&ES zK>1in{6EZn34B!5_5Vy}0%3hYf(Av28k8t1v7k(Wnipo0H#!ljMAV;K8%?!}b(tZd zC7Y9wygnbsC6!<6LR+;|tzwlB*)o$rCPAwSAfi|axbTKS0hbUKng93P``#>JLP72S z|Ig<G^WJ@TIrrRi&OPVcbMGb2Z??{2mIPb3j!s>5h^k|bx*yE<%{A0M*I22MSVQ9f z5!3%8hTtGg6EHojy21$4)Aj|qAcpG)VC;OM$x;2~#QA>{tcz-W*n#{>*Er;TSU-+2 zFbbK0agDBP#1B{@Gcc}+E-@w=u#*v>3HjczFKFR9(P;fBOy8l80qy=j8K!4iejLBU zxy#n~H^b8CbSb~m*Y^>%5x*dse;#M%$m%|Ax-GyZ24UvNcdEG267Ilu`15gmfdA+K zoFhOBM$>4UraCO$k6{01>-|_FrTOv-mwHk1n{-V?v&(}pc)uA78d&v5@|W##$r#&q ze6dOD^v#`A$Iud%-G696ANM_5{GZ#2rO&LGwN+#7UwD}I`(wpRsQw#++)a?*lZhyR zn=+HQdZ+6P$H0$k6|eU(sH|w5xdAUnn!Smo=>U->bO}-~=J4yONSq4LNB038)B9#R zlL4y^h@l~vZGB)CYCM29)-NBoA27yVWX9sL!xz6+Q-@>xXr&SX#Q8ir<8^)fjxxtP zjUNRL@bP=sAIA87Etz{TKxvbtB7_ePE5t4%4B>n>gw0l9;G*0We5}fhA#Ao@hU5!z zRvV41p3H`@*_th>lSjPEhOk^8!r@pPjtk(hTO8@Y2h<J&AAA{xJ0nTIr2(XKzlroX z=roF$59R`NQZ6YnnA6{3mukIY20CEnH24H!u_83sY^?yKRgE0d2n{w{%Q0NPZi}Hb z?EY*=E!Y=<FSFi>`Qkq`oDU=mKCvrt#HRx;)XeQOj(zR@zK-=M6S5$iX>lvgzH|6E zYIdcBkK<*S7-{ryQAiE*)T^_J6ZzB#Bw<v`Dk%d(SRI{Cd^JNnw>$9((Kuyw^eGvi z>cImB{xpB@0IaI1qkgd*+t+}zTxZb%yk4`0dOr>O-$v!HXJ3ZW^VEN_=d@f2^Cv<h z5a{+UQ=QjZdFUSk<qPY;3iRg3GM!RbufMgJp+F5FK`{vn-iUvtF5nxYK@c*CxSus- zWatTy5|UC@slT<D5pz1g+|_juD`AX^pu7$tXS3bnNjJP>vy=Jyw*!%O&|P=y?t*lk zlul*Xn@!k*!VR1Nb!AHoZdgj_0^SOj(I?=otcgAWZw?=^O)`_GI6lh2SN0om_&R5G z1Yf7Ei{fj@+fjTqMe(&v$BB<&h~k}ee359m3<&9qtg^*ADj259mf-DY48w$`rTSYG zP0%5^bD1Hje+2Q+^cd0epY6q1Ls2F5G}dQ@NU?Y#K0KBaG1i6jP_cYA42~n9VP<)% zg&^AoPR<3eN12}HRLd|-WuRdeQw9<)BtJ2TyI?R>jJhcOf*ctAPXF^iIo9*BVNp^i zodPkoXeHxdQRbGcI=!rgk6AuG-oJs5j0gm_W3HJ4oN<G<i~<1W81xGw<Zo=O%Ifqt zHbA&hsCo8eNW=zSlG)P8KqSp5nA12<h@o+wz=mr$r)nPD)@~kx8_q%0H-o5|>Tj&s z=rkR*$C7|~rjMP*@L33a7S;njKxP4`y9}5l;&uRy4$yWXh@D8gfcbmz9cV0Ts%Pw^ z^Z#o)rGoz<O)mqAuEw+t86bl1XJAr?bRZcp?D7uwJO-F^EJNCTTm~#f#~<LN3$FL+ zZ(Ig6>2Iwh1BOGyf>)UkD67xKr-7^(k@8}^l^ECqne(?+;(vxI-8kZS>K{kg?*shw zF@qAs|LEb4eZx&CkTpL3;Y?1(h!Km4{`nVXAfT8@TRrL#Xf9}q>buO!$NYL2VsG|z z_{DHR^yCA4Dz(nT^vbLc=sZa7ewFJONY-^Es7{kNU@8Wc4dtn%{({*BOi!<2=0$o$ zMLMo8HR9)0JnNu=Ow=_Hnz#(FDxD8NGw!SC6rxq2F|k0QzWNfp7Jd3N{d~PYq%i5K z-Sm-qXE=D2iY`w74%0GqCYm}8J=qmI1w+nbV{yb+8VN0e?nIDJiHBUM`8B{kLHVUS z+Y#*I@IeJ$?NUmjDscRG+s}yTP`^QR(XV*4*CsaJdBjqXNLSNXLqg31%XyY@wGuiy z^r?cP)~nP>)YG)fpirUXR<3+lEBKH@-dMAd{KY>wK9J1B1q(eQ<!LjUeTQ=831?9( z1It(;wI;8^Tnq%pXjPbyQaHK{3Wx~~n~U(IJ2HT~)iHW!te$n1KI$*AQNI^zRxv`v z@~jd4I9@-b?mz-ehOPjBbp6mi*@V8F9oHB1-8u=WL(mZ#ao$5porqq1iy1Pu7l<2+ zjJVGTCQA&pz-En@5$A~4;q7DZFnx=r7Wgz{;u+%9E{bJna3fEwKhr)sqI)5pT`A#9 zD0I-IQ+1IBQ2<%XH3$e>u1`bSat#9F)<qgb0W=7%dHD>@tFzDi8lz9_c!^0>D^4C* zPT&B|@4QZEV)D0jRaE}2Xl2i7B!6Rc3ep0iI#`TO5u=|SqgIe|Mv4SiD@e(RsuhNk z!PN@GZ3yZb8KZ@97b30OLKVyCt7#}Ib%orC>>)-gqxp-(&3O!`Q1CGyfvLD@iHT}9 zX|siOgi6R)EMao3jOmDE5LlQ}7K6V(zjzG(7C|M@@#lpqV9Z}7TnixlF((t$vWa{O zt3>}VW!UhO$l}vDdrYX4K>?0I9_e&Z<dF_c<vH@8ArKh?brH?X@V)ZT3`2KKh%kX| z(2S>fuD}0S^gjF4MD#vWr+4TUx>gorV?e=hV0gGb4Q_CeK255}f=uWbT(O3d;ppTH zYRJck{=9$bG2`{|vdDOCg28Q!R{#b%o*BJEKQQ!-dI%HJH@FVHM1SM@25E4*E&_dn z1hJdj9L&VvN(CqRO5}_x9HiaR8&}PKWRefVlS3q*p_4q&%1IuS?tqAxjk8>^FmFg0 zFaeh^ONrhG5WNqMq4(GRb`1WW!KACx`{S6C4gA$Yg)s03CC$JeR5t^EB$qi7K<v%d zc?<)jsYNkIIx@?{(dLVkAgztmyC~XzD6yXgPKhUWyRpACj^2U3I(<%m0`qx&+<e|n z`WrSe@)&>jNKW6~Fhe2>R8JBQ0poBTKEhYeDS)Jzub!8|=Ui6jP=3P$S;n$4yG}O{ zuO{gZX;luAFY64A1aa&3v;{LRTbj1ZpEFJApsNVW2d_d0=SxXToH!tnBn8t2r-%5g znFfsrh%A5%Nh3vR^Yal!smn}CB18@QunIFT28A>z{-F~eNFDqO*BE#@Y@*0|5jb)v zZk#)*Xjw*P&?+G7b$>@$Jrsy(y7J|R9N(#1*Ml)w(Z%>dQ8a;$8Jb`{-<uS|X@_Gm ziWFahdHtBmSPgHTAkJ32%y3}f3{zm50Gus(t`BN31+ovdu+*bCgN2=T2@rNaGuU-R z_CZ)05T=LT9xptE1)vzgw@+YkpBD8;8wh!eJRx@Z#s%_2l^`@cx#is0W&OVP2xw_> zJUv%L_0w*mXIweY>G`?Th`c_Qo<YP0Jui*Y^D>0wEOsdOb9z394b&XWx+HLBlIR9K zS3nZ=p=VEop1%Y=7ZkmHl{#&ZPSeYDnqJCiy4iXKcfOqlO$HJd4qzf_$c8kybcdP$ zN~uGUYEU#wpB`kBbPPemAWU;&fI7MLZcy~_2t`BD`W_U`{YFuWE&vhE9>zUJqIq46 zYBJCm!LLbL4~$|8q+Egs{+Ym1L0t$Dz&brAsLCK{LK-%m^@FeqCIp6k{&!B$I>sPd z)8@O>VekH#(=A6CiQ;mkz6m>>s5yd2%vovkfv+XZT8|KP9KL=CL6iTCcLxN$_;>`} zC!SpL?#YqlHRDm9;>r<IoXM(UhcdYogShp0Vs@}dtPbuQ1{#MOTZUAYk5UlgABc}! zMT<z*x@0v6wMj(_x#(u6B1lDxxb$X+R@jwW5RG_UsWMNJmy?5r#X;SIgCz>onK)XI zd9R#mK8T-OBy3nQ>6Spqdzz5NjF34@%lYI31ar)U>$IRVG&WYBq4h?#dhU>ML-JdQ zL_VN6mgp|2$-|ehiFZ<-RK!k;z~~*utc_*IO!!nL@5OYDd3iz}(m&B{Xaws|q;8RB z-)J@0)l6b<*rwMwDLbcb`DDC;krB7hICPM`PQ8q0M(6@%zMS5QzCuU=KPrTU8gtB; z+i2DiFtcNu6YDt%!a;c7V#Z=n!BXS(J@!f~=V^m5lM^)9=pLO=*l`zF^c)ZkfsR`{ zPaFcRhfi(*Xl!h_<j_I$Bj$lRM!*Sc8>q`1F1%0&@dBvuLj5})Owk<^CnmP-W<>QV z%z4MRA!7ptEz~H5ODqi;XpBvGIF@D_o*gh_>@s`g=Ncg3Ri6aE#hDB=_M8exYFq{? z1Ia+XvIu%m6{u`E*#ICcEMe&SbUyixDv^;CiaO*1t$FH^B^k80ICS|*0h5RZhyDI( zPJ^OOgP^+-C>Nl+OrpEHp?}aaIML&++^Wx$Yo-8B&_tz9Wd(l&J=QT2bG(2(qxGB^ zJ<rpWV&r-5gb0sWJF$evq9)^LkD<mOKZ4}{0{J;!;IvoxH-qpBpEszk@HvoNzi@mn zl0#qzi9*`01C8M{TH%dQ4~$Zhm~!a?xt`>mUB2FJmuFE-N6s-?alAh4-7^dFmgKcA zZ`1Gyl1;_WvGSJKELPsmO3~#lTRKQAatRGlk;?_JA#x>ZELP;sMgkMLzvd$M2+00= zq(P)&2IcV`>P*-?WZjp5RXlZ|e2NW+IhhY5(gEFdCi(l9ghq3z%j7N98$;{Nvtx+d zKm9Q(a;bwL@w&f6MeYLbBw!-<J}4fTNO3708w^I`E38tn%<#|1e8r@zi{<5XdJj=L z;+cm!aa6K80SU;y1Scs{_KWG2OI^YN-{8T;BuQOtbtdA1)TPeTH16a?hLqBn6fSrx zSq4xX5eQL!WFBW+`GW*6L8l8|Hgsmc(9F&zBKU;n2BJF-8eXWAcp<^t+(2DC9!%eh z3zP;L$#}urKyErq15vCYdubST*-MYQ>}45s@%#BP;`e$keqmvghqeUd=4l6QrRXy{ zXw6}$y)@&4);zGXXATC1-i9_pcHK|M<nPJB)DLA2GcS$`V(N!v?tsh<JsXw9+qrJQ zWbr0u%3C3eX#xiIH4*g<BI;vNO0@E_!kPl=b5mW4XQ{Aa(r^ vl1MWh5xJI5tZ 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 ^&AHJD|YHv49XK*t0Yw=2l_)RSHN)c+uWo<C0u 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%0A*}o$HAC^bz9`c`xyzV&Dy|wsy+e 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%0Dx$)U^bq~IEu5QN3b9t)iK-XMHR=&FOFtAw9 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%0Dtjgaa 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 literal 0 HcmV?d00001 diff --git a/Misc/QuakeSpasm_512.png b/Misc/QuakeSpasm_512.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4d01a4d1e70f495c12538faca75fc1e3616e1a GIT binary patch literal 51125 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 RI|Uekz|+;wWt~$(696nj(v|=K literal 0 HcmV?d00001 diff --git a/Misc/fitzquake080.txt b/Misc/fitzquake080.txt new file mode 100644 index 0000000..025f250 --- /dev/null +++ b/Misc/fitzquake080.txt @@ -0,0 +1,417 @@ + +================================================================================ + +Fitzquake version 0.80, May 26, 2005 + +Filename : fitzquake080.exe +Author : John Fitzgibbons +Email Address : johnfitz@u.washington.edu +Author's Homepage : http://www.celephais.net/ +Fitzquake Homepage : http://www.celephais.net/fitzquake + +Fitzquake is a modified glquake based on the source code released by id +Software. My primary focus is fixing a lot of the rendering bugs which made +glquake inferior to the software renderer. My secondary focus is adding +conveniences for mappers and general users. I am also slowly adding support for +new modding or mapping features such as skyboxes, fog, and colored light. + +While I have made extensive changes to the code, I pretty much use the same +OpenGL features that the original glquake uses. Therefore, if you can run +glquake, you can probably run Fitzquake. + +I am not finished working on this project, so bug reports and feature requests +are welcome. + +Acknowlegements +-------------------------------------------------------------------------------- + +id Software (quake and quake2 code) +LordHavoc (code and assistance) +Bengt Jardrup (feedback, assistance, testing) + +additional thanks to: Aardappel, SmallPileOfGibs, FrikaC, Vondur, Topaz, Tomaz, +Tonik, Radix, EvilTypeGuy, NightBringer, MH, Maddes, Fett, Craig Wills, Heffo, +Riot, Gleeb, people in #flipcode, and others for their tutorials, code, testing, +and assistance. + +Copyright / Permissions +-------------------------------------------------------------------------------- + +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place - Suite 330, Boston, MA 02111-1307, USA. + +History +================================================================================ + +changes in 0.80 +--------------- + + - map loading is about four times faster. This is due to some optimizations in the texture loading code. + - video mode can now be changed in-game. You can change resolution, color depth, refresh rate, and switch between windowed and fullscreen modes. This can be accomplished easily using the video options menu, and is also available at the console using cvars. Note: if you launch fitzquake with -width, -height, -window, or -bpp in the command line, Fitzquake will use the command line settings and ignore whatever it reads from the config files at startup. However, you will still be able to change the video mode from the menu or the console as you like. Also note: to change video modes by execing a config file, the config file must include "vid_restart" after the other vid_ cvars have been set. (see cvars "vid_width," "vid_height," "vid_fullscreen," "vid_bpp," "vid_refreshrate," and commands "vid_restart," "vid_test") + - added control of entity count limits (MAX_EDICTS.) The default maximum has been increased from 600 to 1024. It can be raised even higher (up to 8192 -- this is a limit set by the network protocol) using a cvar. (see cvar "max_edicts") + - added control of vertical sync. (see cvar "vid_vsync") + - added control of anistropic filtering. Anisotropic filtering is a method to improve texture clarity on surfaces when viewed at steep angles. (see cvar "gl_texture_anisotropy") + - console buffer size can now be set. The command line option "-consize" allows you to specify the buffer size in kilobytes. For reference, fitzquake's default buffer size is 64k, and glquake's is 16k. 16k is also the smallest size fitzquake will allow you to set. Note: this buffer lives in the heap, so if you want to have a HUGE buffer, you might need to increase -heapsize also. + - increased max surface extents from 256 (the software quake maximum) to 2000. For reference, the glquake maximum is 512. This should eliminate the "bad surface extents" crash when running some maps that could be played in glquake, but not fitzquake or winquake. + - increased max vertices in an alias model from 1024 (the glquake maximum) to 2000 (the software quake maximum.) + - increased MAX_CHANNELS from 128 to 512 and MAX_DYNAMIC_CHANNELS from 8 to 128 + - screenshot filenames are now in the format "fitz0000.tga", increasing the maximum number of screenshots per folder from one hundred to ten thousand. + - vid_describemodes output cleaned up; now displays a list of valid refresh rates for each mode + - added a more intuitive cvar control of slow motion/fast-forward for demos and live gameplay. (see cvar "host_timescale") + - "reset to defaults" option in the menu now executes the "resetall" command before loading default.cfg + - game command now writes config.cfg to current gamedir before switching + - +mlook is now saved to config.cfg + - changed smallest allowed window size from 320x240 to 320x200 + - console cursor images are now hard-coded, and the insert mode cursor is now a vertical bar instead of an underscore. This was prompted by several popular mods (OUM, Xmen TC) using nonstandard cursors, which are incompatible the fitzquake console enhancements. + - gl_farclip now defaults to 16384. This should be high enough to handle even the largest open areas without unwanted clipping. The only reason you'd want to lower this number is if you see z-fighting. + - added cvar r_drawworld (see below) + - added cvar r_showtris (see below) + - added cvar r_showbboxes (see below) + - added a command to cycle a cvar through a list of values. (see command "cycle") + - mapname command now works on dedicated server. + - added a hack to fix those white edges on the bottom of the large box of shells. I feel dirty, but they look better, now. + - changed stuffcmds behavior to allow hyphenated map names, config file names, etc. in the command line. (example: "fitzquake.exe +exec my-config.cfg +map my-map") However, you still can't load a map or config file when the first character in the filename is a hyphen. + - skybox loader now reverts to scrolling sky if all 6 skybox faces failed to load. + - tweaked circular particles to match the apparent size of the square particles. + - fixed crash when loading mods with large player skins (like the chainsaw mod, and PerQuake.) Colormapping can now handle any size player texture (limited to the heapsize, of course.) + - fixed bug where a replacement model in a mod is messed up becuase a matching .ms2 file in id1/glquake is present. The fix is simply to disable all mesh caching, which slows down model loading a little. + - fixed freeze when gl_overbright is 1 and either texture_env_combine or multitexture is disabled or not supported. + - fixed "numgltextures == MAX_GLTEXTURES" crash when viewing multiplayer->setup menu. + - fixed "numgltextures == MAX_GLTEXTURES" crash when playing large maps (nesp09,) due to frequent model recaches. + - fixed bug where entities and water were not being drawn any frame in which a model had to be recached. + - fixed skybox texture showing up in the place of other textures/skins/lightmaps, when the previous loaded map had a skybox. + - fixed missing polygons on edges of screen when underwater and r_waterwarp is 1. + - fixed missing polygons on edges of screen when r_stereo is enabled. + - fixed long mapnames that scroll are truncated to be shorter than what appears in the console. Well, sort of. What I did was increase the maximum length from 39 to 127. A mapname longer than 127 will still be truncated, but these are pretty rare. + - fixed rogue's teamplay skin showing up as an all-white texture. + - fixed checkerboard texture shows up sometimes when an animated texture has fullbright pixels on some frames, but not others (reactor core in junk.bsp) + - fixed color 255 is not fullbright + - fixed fuscia dots appearing in corners of resampled textures + - fixed mapname command crashes when client is disconnected. + - fixed cl_nolerp 1 screws up speed of demo playback + - fixed annoying client-side step-up smoothing when in noclip mode (except on nonlocal servers.) + - fixed scr_clock 2 displays hour twelve as "0" instead of "12" + - fixed skip textured surfaces still drawn even after running tyrann's skip utility + - fixed crash when loading a map with a sky texture where the "sky" in the texturename is not lowercase + - fixed hang in e2m2 on easy skill, where you can shoot one of the buttons at the beginning and then trick-jump through the open gate. Now it prints a warning message ("SV_TouchLinks: null link") and lets you keep playing. + - fixed bug when viewsize < 100, and r_oldwater is 0, where you can see the water textures overlaying part of the brown frame around the viewport. + - fixed bug where imagelist and r_speeds2 would report the same megabyte counts in both 16bpp and 32bpp mode, even though texture bpp should match (and does match) framebuffer bpp. The numbers are now different and accurate for each bit depth. + - removed cvars "vid_config_x," "vid_config_y," "vid_wait," "vid_nopageflip," "_vid_wait_override," "_vid_default_mode," "_vid_default_mode_win," and "vid_stretch_by_2," none of which glquake ever used. + - removed cvar "vid_mode" and commands "vid_describemode" and "vid_nummodes," because of the new video mode handling. + +cvars: + + - gl_texture_anisotropy. Controls the amount of anisotropy in texture filtering. If 1 or less than 1, texture filtering is normal (isotropic.) If greater than 1, increasing degrees of anisotropic filtering are used, up to the hardware maximum. Set value to 2 for 2x anisotropic, 4 for 4x, etc. Default 1. + + - host_timescale. Scales the passage of time on client and server. Set to 0 or 1 for normal speed, less than 1 for slow motion, and greater than 1 for fast-forward. If greater than 0, overrides host_framerate. Default 0. + + - max_edicts. Sets the maximum number of entites on both the client and server. Default 1024. Acceptable values range from 256 to 8192. Set to 600 to mimic standard quake. Changes won't take effect until the next time a map is loaded. Note: if a client connects to a server, and the client's maximum is lower than the server's, the client will probably crash if it ever sees an entnum higher than its local max_edicts. Warning: you may need to increase -heapsize if you want a high max_edicts value. + + - r_drawworld. If 1, draw world as usual. If 0, don't draw the world. Default 1. (compare r_drawentities) + + - r_showbboxes. If 1, draw a wireframe bounding box around each entity. Note that these are the server-side per-edict physics bounding boxes, not the client-side per-model rendering bboxes. If 0, disable this feature. Default 0. + + - r_showtris. If 1, draw wireframe outlines for every triangle in the scene. Like in Quake 3, the lines will be visible even through solid geometry. If 2, draw the outlines only on visible surfaces (like r_showtris 2 in Medal of Honor.) If 0, disable wireframe overlay. Default 0. + + - vid_bpp. Sets the color depth of the screen in fullscreen mode. Windowed mode ignores this setting. Can be 16 or 32. Default 16. (Changes won't take effect until the next call to vid_restart.) + + - vid_fullscreen. If 1, fitzquake will run fullscreen. If 0, fitzquake will run in a window. Default 1. (Changes won't take effect until the next call to vid_restart.) + + - vid_height. Sets the vertical screen/window resolution. Default 480. In windowed mode, cannot be less than 200. (Changes won't take effect until the next call to vid_restart.) + + - vid_refreshrate. Sets the refresh rate of the screen in fullscreen mode. Windowed mode ignores this setting. Possible values include 60, 70, 72, 75, 85, etc. Default 60. (Changes won't take effect until the next call to vid_restart.) + + - vid_width. Sets the horizontal screen/window resolution. Default 640. In windowed mode, cannot be less than 320. (Changes won't take effect until the next call to vid_restart.) + + - vid_vsync. Set to 1 to enable vertical sync, which eliminates tearing, but caps your framerate at the monitor refreshrate. Set to 0 to disable vertical sync, which allows tearing but doesn't cap your framerate. Default 0. Note: If fitzquake detects that your driver settings have forced vsync to be disabled, it will post a message to the console saying so, and this cvar will have no effect. + +commands: + + - "cycle <cvar> <value> [<value> [<value> ...]]" to cycle a cvar through a list of values.. Note: this command will get stuck on a list that contains the same value more than once, such as "cycle blah 1 2 1 3". If you're doing anything that complex you can just use aliases. + + - vid_restart. Tries to set a video mode that matches the values of vid_width, vid_height, vid_fullscreen, and, if vid_fullscreen is 1, vid_bpp and vid_refreshrate. + + - vid_test. Like vid_restart, except that after switching to the new mode pops up a confirmation dialogue. This is useful if you are not sure what modes your monitor can handle, so you don't get stuck with a blank screen. The dialogue has a time limit so that if you don't press a key within 5 seconds, it will revert to the previous mode. + +changes in 0.75 +--------------- + + - totally rewritten bsp drawing code. The new code combines the advantages of the gl_texsort 1 and gl_texsort 0 codepaths from glquake into one codepath that uses texture sorting and multitexture. In my tests, i've found that it's about the same speed as glquake in low poly scenes (like the original quake levels,) but as you get into the thousands of wpolys, it's faster and faster. + - 2x overbright lighting. Lighting now looks like software quake. Just like overbright lighting on models, overbright on world polys requires GL_EXT_texture_env_combine (TNT and later, voodoo4 and later.) Without it, FitzQuake will be use two passes to render overbright world polys. So if you don't have that extension, you might disable it for performance reasons. (see cvar "gl_overbright") + - colored lighting support using .lit files. + - totally new water surface animation. The new method requires no surface subdivision, isn't plagued by tearing and sparklies caused by tjunctions, and looks almost identical to software quake's water, and doesn't slow down on very large sheets of water. (see cvars "r_waterquality" and "r_oldwater") + - old water aninmation fixed so that it doesn't look bad when gl_subdivide_size is 32 or lower. + - can load external textures (currently targa and pcx) if they match the texture name in the bsp and are located in the id1/textures, or <MODDIR>/textures directory. At the moment no other images (skins, menu, etc.) can be replaced. + - gamma correction now goes back to normal when Fitzquake loses focus. + - tab completion now adds a space after the completed command/cvar if the cursor is at the end of the editline. + - increased the max length of the video mode list from 30 to 80. This should alleviate the problems people with newer cards were having trying to use some 32-bit modes -- there were so many 16-bit modes that they filled up the list before all 32-bit modes could be detected. The video menu will still only list a certain number of modes due to space constraints, but you can see the complete list by using the console command "vid_describemodes" + - number of listed video modes in the "video options" menu increased from 27 to 36. + - added alpha control for the front sky layer. (see cvar "r_skyalpha") + - clock can now display time in 24-hour or "military" time. + - added an "mtex" counter to the r_speeds 2 readout. This measures the number of megabytes of texture memory used each frame to draw the scene. Note: this doesn't count textures used to draw the console, menu, or statusbar. + - added optional drawing of surfaces inside sky leaves, for compiler/map testing purposes. (see cvar "r_oldskyleaf") + - sky surfaces on bmodels are now visible, though drawn incorrectly. + - fixed multiple textures in bsp with same name or no name get overwritten/not loaded. (example: rd1m3) + - fixed some nasty texture loading bugs that were especially hounding 3dfx users (wrong texture, no texture, or unnecessarily low-res textures displayed on models and world.) These bugs would also occur in conjunction with nonzero values of gl_max_size or gl_picmip. + - fixed bug where changing gl_max_size or gl_picmip in-game would screw up alias model texture coordinates. + - fixed bug where if -gamma is specified at the command line, the "gamma" cvar would be ignored. + - fixed model more than 2048 units above floor us unlit by static lighting. + - fixed crash with con_logcenterprint when centerprint message was too long. + - fixed crash when changing to a nonexistant gamedir and then trying to write a file (screenshot, etc.) Fitzquake now creates the directory as needed. + - fixed "bad surface extents" error when sky or water surface is missing from bsp file. + - fixed alias model shadows write to z-buffer. + - fixed underwater intermission camera has warp, but no screenblend. + - fixed console buffer still scrolled back after using the "clear" command. + - fixed console command history (the list of previous commands) not being rewound after toggling the console. + - removed cvar gl_texsort. New bsp drawing code always sorts by texture. + - removed cvar gl_ztrick. The depth buffer is now cleared every frame. + - removed cvar gl_keeptjunctions. Extra verts created by qbsp to eliminate tjunctions are now always kept. + - removed "sliding on monsters' heads" fix, becuase I decided I don't like the idea of changing gameplay, even if the original behaviour is clearly a bug. Since this bug can be fixed in quakec also, I feel safer leaving it as it was. + +cvars: + + - gl_overbright. default 1. This variable controls overbright lighting on the world polygons. (For lighting on models, use gl_overbright_models.) If 1, overbright will be enabled and lighting will resemble software Quake. If 0, overbright will be disabled and lighting will resemble GLQuake. + + - r_oldskyleaf. default 0. If 0, surfaces inside sky leaves will be skipped by the renderer. If 1, they will be drawn whenever they are in your PVS, just like any other surface. + + - r_oldwater. default 1. If 1, use the old GLQuake method of subdividing the water surface to enable a warping animation. If 0, use the new render-to-texture method. Note: in general, r_oldwater 0 looks better and runs slower. So experiment to see if the performance hit is acceptable to you. + + - r_skyalpha. default 1. Sets the alpha of the front sky layer. Note that if sky alpha is less than 1.0, the sky will be drawn in two passes even if you have multitexture. + + - r_waterquality. default 8. Sets the quality of the water when r_oldwater is 0. Can be anywhere from 1 to 64. Lower values give better performance, higher values look better. A value of 4 will provide water that looks at least as good as glquake can get, and 32 is close enough to software quake for all but the most picky. To control the quality of water when r_oldwater is 1, use gl_subdivide_size instead. + + - scr_clock. default 0. If 1, game time is displayed. If 2, system time is displayed in 12-hour format. If 3, system time will be displayed in 24-hour or "military" time. + +Changes in 0.70 +--------------- + + - added anaglyph stereo rendering. Note that this will cut your framerate in half, as it is rendering the scene once for each eye. You might want to turn off r_drawviewmodel as it is hard to focus on becuase it is so close. (see cvars "r_stereo", "r_stereodepth") + - now uses ARB_multitexture if present, otherwise tries to use SGIS_multitexture. This should fix various blending bugs on some cards, such as weird cloud layers, all-black models, and inverted torches. (only ARB guarantees that GL_DECAL blending will work) + - overbright models now uses GL_EXT_texture_env_combine if supported (TNT and later, voodoo4 and later,) which saves one or two passes on model rendering when gl_overbright_models is 1. The command line option -nocombine will disable this. + - gl_overbright_models now defaults to 1 + - custom palettes are now correctly loaded when you use the "game" command. + - RecursiveLightPoint is now lerped for smoother lighting of slow-moving models. Check out the ogre in e3m3 for an example. + - dynamic lighting (rockets, etc) has been moderately sped up. (some lightmaps were being uploaded even though they weren't actually touched by a dynamic light.) + - overhauled 2d drawing to allow independent scaling of console, menu, and sbar (see cvars "scr_conwdith," "scr_menuscale," and "scr_sbarscale") command line switches "-conwidth" and "-conheight" removed. cvar "scr_stretch_menus" removed. + - user control of max framerate. (see cvar "host_maxfps") + - improved the accuracy of the FPS counter a bit, but it still seems suspect. + - particles can now be drawn as quads or triangles. (see cvar "r_quadparticles") + - opengl information (vendor, renderer, version, extensions) is no longer printed during initialization. (see command "gl_info") + - rewrote texture management. Now instead of quake's memory usage going up and up forever (becuase textures were uploaded to the opengl.dll and never freed,) all textures will get flushed when you switch games, bringing you back down to where you were when fitzquake first launched. + - gl_texturemode command will now accept a number (1 through 6) as well as the name (gl_linear_mipmap_nearest, etc.) + - gl_describetexturemodes will list all texturemodes. + - the inside of sky leaves are no longer rendered -- so when noclipping inside them, it will look the same as noclipping inside a solid wall. This does not affect gameplay. + - cleaned up intermission display in singleplayer -- no more overlapping numbers + - r_speeds readout modified a bit. (see cvar "r_speeds") + - r_sky_quality now defaults to 12 instead of 8, since skies are now drawn in 1 pass (with multitexture at least) + - gl_texsort now always defaults to 0. (it used to be forced to 1 when multitexture was unavailable) + - fixed bug where models would actually darken when dlights got bright enough + - fixed deathmatch, coop cvars not reset to zero when starting a new game from the single player menu + - fixed r_lightmap doesn't work when gl_texsort = 0. + - fixed inverted lightmaps / no textures / no dynamic light bug when multitexture is disabled and gl_texsort = 0 + - fixed scrolling map title in wrong place when width does not equal conwidth + - fixed a few color borking problems in 16-bit mode. The front sky layer, sprites, and pics with transparency will still look a bit off (as in glquake,) but at least the console image and statusbar background look better. Though it isn't perfect, it should once again look like what you expect from glquake in 16bit. + - fixed pixel gap on both sides of the console in 1024x768 + - fixed wpoly count being slightly lower when gl_texsort = 0 (the count was correct when gl_texsort = 1) + - fixed lmap count always zero when gl_texsort = 1 + - dlight fans are now drawn after water, so that it looks right at least when wateralpha is 1. + - fixed a possible bug with older 3dfx cards (voodoo 1/2/rush) where the gamma cvar might not work (untested) + - fixed old commands showing up in the console prompt after hitting 'enter' + - increased MAX_HANDLES so that you should never see the "out of handles" error message. + - removed cvar "chase_alpha." the transparent player model was buggy and didn't work well in a lot of conditions. + - removed cvar "gl_doubleeys" (yes, that is the correct misspelling) With overbright models, eyes can be seen as easily as in software mode. + - removed cvars "cl_crossx," "cl_crossy," "lcd_x," "lcd_yaw," and "gl_reporttjunctions" which didn't do anything (in glquake, at least). + - removed support for GL_EXT_shared_texture_palette (special 8-bit texture format) + - removed VCR code. command line switches "-record" and "-playback" no longer supported. + - removed support for command line switch "-gamma" -- just use the gamma cvar, or idgamma or something. + +cvars: + + - r_stereo. default 0. If nonzero, the scene will be rendered once in red, and again in cyan, with the two views shifted slightly. If you have 3D glasses you can appreciate this (assumes that the left eye is red and the right eye is cyan.) The value of r_stereo sets the eye separation. If your glasses have red on the right eye, use a negative value to flip the views. + + - r_stereodepth. default 128. Sets the distance at which the two views will converge when stereo rendering is active. + + - scr_conwdith. default 0. Sets the virtual console width, where smaller numbers means larger text. Values larger than window width, or smaller than 320, will be clamped to that range, and all values will be rounded to a multiple of 8. If 0, the window width will be used. Note that values that divide evenly into the window width will make the text look nicest. + + - scr_menuscale. default 1. Sets the scale factor for menus and other centered overlays. If 1, images will be drawn at 1:1 scale. If 2, images will be double size. Menus will never be drawn smaller than 1:1, and never larger than the size of the window. Note that integer values will make the text look nicest. + + - scr_sbarscale. default 1. Sets the scale factor for the statusbar. If 1, images will be drawn at 1:1 scale. If 2, images will be double size. The statusbar will never be drawn smaller than 1:1, and never larger than the width of the window. Note that integer values will make the text look nicest. + + - host_maxfps. default 72. sets the maximum frames per second fitzquake will render (also the maximum number of server frames per second.) Clamped to the range 10 - 1000. Set to 72 to mimic standard quake. + + - r_quadparticles. default 1. If 1, particles are drawn as GL_QUADS instead of GL_TRIANGLES. Quads use 4 verts instead of 3, but the fillrate cost is 1/2 that of triangles. Depending on your card, either one may be faster. This cvar has no effect on the appearance of particles. + + - r_speeds. default 0. Values of 1 and 2 will give you increasing amounts of information. When you see two numbers separated by a slash, the first number is polys, and the second number is passes. + +commands: + + - gl_info. Displays opengl info which was previously displayed during initialization: vendor, renderer, version, and extensions + + - imagelist. Displays a list of loaded textures, and their dimentions. + + - gl_texturemode. Now accepts a number (1 through 6) as well as the name (gl_nearest, etc.) + + - gl_describetexturemodes. Lists all texturemodes. + +Changes in 0.65 +--------------- + + - gamma cvar now supported. (see cvar "gamma") + - fullbrights on models now supported. + - odd-sized world textures are now bilinearly resampled (instead of glquake's nearest pixel resample) + - removed all fixed-size buffers for loading textures; now the only limit is the size of your memory heap (textures will still be downsampled if they are bigger than the hardware can handle) + - styled lights (torch flicker, etc.) can now be disabled (see cvar "r_flatlightstyles") + - sky now uses multitexture if available. + - centerprints are now optionally logged to the console (see cvar "con_logcenterprint") + - number of savegame slots increased to 20 (from 12) + - if a map title is longer than 22 characters, it scrolls marquee-style in the statusbar. + - gl_flashblend defaults to 1 again. (consistency with glquake) + - gl_ztrick defaults to 1 again. (consistency with glquake) + - command line gamma now defaults to 1.0 for all cards. (consistency with glquake, plus hardware gamma is better) + - now checks hardware for maximum texture size. Users of later voodoo cards should be able to see large textures now. (see cvar "gl_max_size") + - now shows AM/PM when scr_clock is 2 + - fixed crash when starting dedicated server + - fixed crash when loading too many textures. (now it throws a sys_error and quits) + - fixed fitzquake-specific crash when player goes near water in a demo playback. + - scr_conalpha now actually works. + - keypad enter in the console works again. + - optional 2x overbrightening on models. (see cvar "gl_overbright_models") + - optional quake2-style noclip. (see cvar "sv_altnoclip") + - new icon + +cvars: + + - con_logcenterprint: If 1, centerprint messages will be logged to the console in sp/coop. If 2, they will also be logged in deathmatch. Default 1. + + - gamma: Brighten or darken the screen to compensate for differences between monitors. This is now supported by using your video card's gamma support. Just like in winquake, values less than 1 are brighter and values greater than one are darker. Default 1. Notes: I have added special code so that this will work on 3dfx cards too, but i have no way to check that it works. If fitzquake crashes, your hardware gamma may be stuck at the wrong value. You can use the "display settings" control panel fix this, or you could try lordhavoc's useful "setgamma" utility (available on this page.) Also note that if texture-brightening gamma has been requested at the command line (fitzquake.exe -gamma ), harware gamma will not be used and the gamma cvar will have no effect. + + - gl_max_size: Now defaults to 0. If 0, textures will be as large as the hardware allows. Positive values can be used to impose a limit smaller than the hardware's reported maximum. + + - gl_overbright_models: If 1, models will be rendered using 2x overbrightening and will appear at roughly the same brightness as they do in software quake, which is noticably brighter than the default fitzquake / glquake appearance. I disabled this cvar by default becuase this is still a poorly supported feature -- it currently takes 2 or 3 passes to render a model when this feature is enabled, compared to only 1 pass when it is disabled. Default 0. + + - r_flatlightstyles: If 1, styled lights (torch flicker, etc.) will be displayed as a steady light. If 2, the peak intensity will be used instead of the average intensity. Default 0. + + - sv_altnoclip: If 1, enable the alternative noclip movement which resembles quake2 and is not constrained to the horizontal plane. Set to 0 to retain quake's original noclip behavior. Default 1. + +Changes in 0.60 +--------------- + + - graphics: + - better sky projection, configurable for performance + - menus and other overlays are now centered on the screen, and can optionally stretch to fit resolution. + - all 2d graphics now obey gl_texturemode and all texturemode changes take effect immediately + - underwater warping now resembles quake3's perspective munging, and obeys r_waterwarp + - fixed frustum culling b0rked (giving HOM at certain FOV / vidsize / screensize combinations) + - fixed lack of support for VP_PARALLEL_ORIENTED, VP_PARALLEL_UPRIGHT, and FACING_UPRIGHT sprites + - fixed fullbrights not displayed on world/bmodels + - fixed texture cache mismatch error + - fixed pink edges on sprites, menu items, etc + - fixed particle z-buffer bug (apparent when a particle is in front of a water surface) + - fixed ugly resampling of non-power of two gfx, skins, sprites + - fixed large models (shamblers, shub) dissapearing near edge of screen + - fixed statusbar not visible when gl_clear = 1 + - fixed r_fullbright change not immedate when gl_texsort = 0 + - fixed alias models still dark when r_fullbright = 1 + - fixed HOM when screen is partially underwater + - fixed gunshot decals not showing up on some walls + - sky and water warp now freeze when you pause, as well as lightning bolts + - r_novis changes now take effect immediately, rather than when you cross a leaf boundary + - removed mirror code + - two particle styles, circle and square (cvar controlled) + - console: + - improved tab completion: + - hitting tab once will display a list of possible matches and complete the line using the first match + - hitting tab or shift-tab will cycle through the matches + - autocomplete will now match against aliases as well as commands and cvars. + - autocomplete will now complete later in the string (e.g. "bind mouse1 +att" + tab will complete '+attack') + - autocomplete will even complete inside the string (e.g. "bind m +attack" + tab will complete 'mouse1' if the cursor is right after the 'm') + - new key functionality: + - tab -- autocomplete, cycle through multiple matches + - shift-tab -- cycle backwards through multiple matches + - ins -- toggle insertmode + - del -- delete current character + - backspace -- delete previous character + - ctrl-v -- paste from windows clippboard + - leftarrow -- move cursor one character left in line + - rightarrow -- move cursor one character right in line. or, get one character from the previous command. + - home -- move cursor to beginning of line + - end -- move cursor to end of line + - ctrl-pgup -- scroll up a screen at a time + - ctrl-pgdn -- scroll down a screen at a time + - ctrl-home -- scroll to top of console history + - ctrl-end -- scroll to bottom of console history + - carets indicate that you are scrolled back, like in quakeworld/quake2 + - left arrow, right arrow, pgup, pgdn keys now auto-repeat + - quadrupled the length of the console history + - commands: + - "game <gamedir>" to load a mod. + - "reset <cvar>" to reset a cvar to default. Note that this is the engine default, not the default.cfg value + - resetall. resets all cvars. + - mods. lists all child folders of quake directory which contain either a progs.dat or a pak file + - maps. lists all addon levels available (i.e. all levels that are not in id1/*.pak) + - mapname. outputs the short name of the current level (e.g. "e1m5") + - cmdlist. alphabetized. 'cmdlist blah' will list only cmds that start with 'blah' + - cvarlist. alphabetized. 'cvarlist blah' will list only cvars that start with 'blah' + - "inc <cvar> [amount]" to increment a cvar by amount. amount defaults to 1. + - "toggle <cvar>" to invert the value of a cvar (nonzero -> 0 and 0 -> 1) + - god, noclip, notarget, and fly can now be explicitly set. example: "god 0" will disable god mode + - viewpos. outputs (X,Y,Z) pitch yaw roll + - "give a <value>" now gives you armour. type depends on value + - bindlist. lists all key bindings + - "alias <name>" now outputs the current command string + - "unalias <name>" to delete an alias + - unaliasall. delete all aliases. + - condump. dumps console to condump.txt + - fog. set global fog. syntax is "fog <density>", "fog <red> <green> <blue>", or "fog <density> <red> <green> <blue>" See section on modding for details. Set density to 0 to disable fog. + - "sky <skyname>" to load a skybox. if skyname is "", this will turn off skybox rendering. + - stuffcmds now parses the "cmdline" cvar rather than the args actually passed to the program. This is useful for loading mods dynamically, so you can edit the cmdline before execing quake.rc (which calls "stuffcmds") + - cvars: + - scr_stretch_menus. default 1. if 1, menus and other overlays are stretched to fill the screen + - scr_conalpha. default 1. This is the opacity when the console is halfscreen. 0.6 will mimic glquake + - scr_clock. default 0. if 1, game time is displayed. If 2, system time is displayed. + - scr_showfps. default 0. if 1, FPS are displayed. + - r_waterwarp recognized. default 1. if zero, no underwater warping will take place + - r_drawflat recognized. default 0. if 1, polygons will be drawn as a solid color with no lightmap or texture + - r_particles. default 1. 0 = no particles, 1 = circular particles, 2 = square particles + - r_fastsky. default 0. if 1, sky will be rendered as solid color, for added performance + - r_sky_quality. default 8. Higher number divides the sky more, for a smoother effect and slower performance. + - r_clearcolor now supported. default 2. specify a palette index from 0 to 255. + - gl_fullbrights. default 1. set to 0 to disable fullbrights + - gl_farclip. default 8192. set to 4096 to mimic glquake. note that the skybox will be drawn somewhat closer than this value. + - cl_maxpitch. default 90 (straight down.) set to 80 to mimic normal quake + - cl_minpitch. default -90 (straight up.) set to -70 to mimic normal quake + - cl_keypad. default 1. if 0, keypad keys will respond as in quake.exe (for example, pushing 'KP_END' will be the same as pushing '1') + - gl_flashblend now defaults to 0. + - gl_ztrick now defaults to 0. + - gl_keeptjunctions now defaults to 1. (note, contrary to the name of this cvar, what is being kept is the extra polygon verts which *eliminate* tjunctions. This is a good thing, so i made it default to 1) + - chase_alpha. default 1. lower values make the chasecam player model translucent. Buggy. + - keyboard + - keypad keys are now bindable: + KP_NUMLOCK, KP_SLASH, KP_STAR, KP_MINUS, KP_HOME, KP_UPARROW, KP_PGUP, KP_PLUS, KP_LEFTARROW, KP_5, KP_RIGHTARROW, KP_END, KP_DOWNARROW, KP_PGDN, KP_ENTER, KP_INS, KP_DEL + - command line: + - running with -gamma at the command line will set the gamma. There is still no way to change this value in game. Default is 1.0 for 3dfx cards, 0.7 for all others + - if unspecified, -conwidth now defaults to -width + - modding extensions: + - skyboxes (worldspawn and qc settable), currently only targa and pcx formats accepted + - global fog (worldspawn and qc settable) + - physics + - fixed sliding around while standing on solid entities' bounding boxes (monsters, players, etc) + - misc + - default heapsize is now 32mb (was 16mb) + - default zonesize is now 256k (was 48k) + diff --git a/Misc/fitzquake080sdl.txt b/Misc/fitzquake080sdl.txt new file mode 100644 index 0000000..5808c72 --- /dev/null +++ b/Misc/fitzquake080sdl.txt @@ -0,0 +1,89 @@ +================================================================================ + +Beta release of an SDL port of Fitzquake version 0.80, July 5, 2008 + +Author : Kristian Duske +Email Address : deceive.inveigle.obfuscate@gmail.com +Author's Homepage : http://www.kristianduske.com/fitzquake +Minimum SDL version : 1.2.10 + +This is a port of the Fitzquake engine to SDL. The main goal of this port is to +allow fitzquake to run on all major platforms. Currently there are builds for +Windows, Linux and Mac OS X. + +To run this engine, you need to install the SDL and SDL_net library binaries. For +Linux, you should probably use the packages for your distribution which should be +available through your package manager of choice. The minimum SDL version you +need to run this is 1.2.10. On Windows, you can download the SDL and SDL_net dlls +from http://www.libsdl.org/. On Mac, the SDL framework is included in the +application bundle. + +The Mac OS X version includes a simple launcher program. + +Known issues: +- Mouse sensitivity is different than in the original Fitzquake (or vanilla Quake, + for that matter). +- Pasting from the clipboard does not work. +- It is not possible to switch the screen refresh rates from within the engine. +- On Linux, there are problems with the default sound sampling rate of 11025Hz. + This can be fixed by supplying -sndspeed 48000 on the commandline. + +Changes since the March 7 beta: +- discard mouse movement while input is deactivated +- implement maps and mods commands using POSIX functions and added a POSIX wrapper + for Win32 +- activate mouse input when binding a key, otherwise mouse keys cannot be bound + through the menu +- fixed shift key behaviour +- implemented TCP networking +- fixed fog command (use fmax instead of max in Fog_FogCommand_f) +- fixed bug that lead to the screen being set to minimum size when the sizedown + command is issued multiple times +- LSHIFT + ESC and circomflex always opens the console +- print everything to stdout +- and more... + +ChangeLog: +---------- +01/22/2008 +- release mouse pointer when console is active. +- enable key repeats (doesn't work on OS X, test in Win32).c + +01/23/2008 +- implement Sys_SendKeyEvents +- disable mouse input when console is inactive using SDL_SetEventFilter +- move mouse input processing to main event loop +- add vid.mode to determine window mode +- fixed Sys_printf() +- enable key repeats when console is active only +- return 0 if any of the cl_bob vars is 0 in V_CalcBob + +01/24/2008 +- changed in_deactivate so that it does not always release the mouse cursor +- adapted all calls to in_activate and in_deactive, because they need to be called regardless of the current mode +- added platform dependent messagebox code for fatal errors on OS X and Windows + +02/06/2008 +- fixed numlock acting as caps lock issue +- fixed: input is not activated on map command (hopefull got them all this time) +- center window in windowed modes + +2008/03/14 +- discard mouse movement while input is deactivated +- implement maps and mods commands using POSIX functions and added a POSIX wrapper for Win32 +- activate mouse input when binding a key, otherwise mouse keys cannot be bound through the menu +- fixed shift key behaviour + +2008/06/3 +- fixed numerous bugs in sdl_net.c + +2008/06/4 +- fixed fog command (use fmax instead of max in Fog_FogCommand_f) +- fixed bug that lead to the screen being set to minimum size when the sizedown command is issued multiple times + +2008/07/4 +- LSHIFT + ESC and circomflex always opens the console + +2008/07/5 +- print everything to stdout + diff --git a/Misc/fitzquake085.txt b/Misc/fitzquake085.txt new file mode 100644 index 0000000..ad3a468 --- /dev/null +++ b/Misc/fitzquake085.txt @@ -0,0 +1,532 @@ + +================================================================================ + +Fitzquake version 0.85, Feb 12, 2009 + +Filename : fitzquake085.exe +Author : John Fitzgibbons +Email Address : johnfitz@u.washington.edu +Author's Homepage : http://www.celephais.net/ +Fitzquake Homepage : http://www.celephais.net/fitzquake + +Fitzquake is a modified glquake based on the source code released by id +Software. My primary focus is fixing a lot of the rendering bugs which made +glquake inferior to the software renderer. My secondary focus is adding +conveniences for mappers and general users. I am also slowly adding support for +new modding or mapping features such as skyboxes, fog, and colored light. + +While I have made extensive changes to the code, I pretty much use the same +OpenGL features that the original glquake uses. Therefore, if you can run +glquake, you can probably run Fitzquake. + +I am not finished working on this project, so bug reports and feature requests +are welcome. + +Acknowlegements +-------------------------------------------------------------------------------- + +id Software, LordHavoc, Bengt Jardrup, Baker, Aardappel, SmallPileOfGibs, FrikaC, +Vondur, JPL, Negke, preach, Topaz, Tomaz, Tonik, Radix, EvilTypeGuy, NightBringer, +MH, Tyrann, Spirit, Fett, Maddes, Craig Wills, Heffo, Riot, Gleeb, Speedy, +people in #flipcode, & others for their feedback, tutorials, code, testing, +and assistance. + +Copyright / Permissions +-------------------------------------------------------------------------------- + +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place - Suite 330, Boston, MA 02111-1307, USA. + +History +================================================================================ + +changes in 0.85 +--------------- + - increased limits + - added a network protocol 666, which supports higher limits, entity alpha, and more (see command "sv_protocol") + - can load and play all known limits-breaking maps, including masque, warpspasm, indian summer, sickbase, 768_negke, digs04, omlabx, and bod. + - increased MAX_MODELS from 256 to 2048 (and MAX_MOD_KNOWN from 512 to 2048) (requires the new protocol) Prints a warning if you exceed the old limit. + - increased MAX_SOUNDS from 256 to 2048 (requires the new protocol) Prints a warning if you exceed the old limit. + - increased the upper limit for the "max_edicts" cvar to 32000 (requires the new protocol for entities past 8192 to play sounds) + - models with more than 256 frames can now actually use those frames (requires the new protocol) + - fixed crash when marksurfaces > 32767, raising the effective limit to 65k. Prints a warning if you exceed 32767. + - fixed crash or other weird behavior when faces > 32767, raising the effective limit to 65k. Prints a warning if you exceed 32767. + - fixed crash when nodes > 32767, raising the effective limit for leafs+nodes to 65k. Prints a warning if you exceed 32767. + - increased clipnode capacity from 32k to 65k. Prints a warning if you exceed 32767. + - increased MAX_MAP_LEAFS from 8192 to 32k (these are visleafs, not total leafs.) Prints a warning if you exceed the old limit. + - increased MAX_STATIC_ENTITIES from 128 to 512. Prints a warning if you exceed the old limit. + - increased MAX_VISEDICTS from 256 to 1024, which should fix static entities flickering in large maps. Prints a warning if you exceed the old limit. + - increased MAX_EFRAGS from 640 to 2048. Should reduce the "Too many efrags!" messages. Prints a warning if you exceed the old limit. + - increased MAX_LIGHTMAPS from 64 to 256, meaning you can load 4 times as much lightmap data before getting an "Allocblock:full" error. Prints a warning if you exceed the old limit. + - increased MAX_GLTEXTURES from 1024 to 2048 + - increased MAX_BEAMS from 24 to 32 and MAX_TEMP_ENTITIES from 64 to 256, so you can have more lightning bolts now + - increased increase MAX_DLIGHTS from 32 to 64 + - eliminated "packet overflow" errors in single-player mode on all known maps, by increasing MAX_DATAGRAM from 1024 to 32000 (NET_MAXMESSAGE and MAX_MSGLEN were also increased accordingly.) In multiplayer (including COOP,) the MAX_DATAGRAM size is 1400 because the MTU on most internet routers is ~1450, and anything above this could get fragmented and lost since datagram packets use UDP. Prints warning when packetsize exceeds the standard datagram size. + - increased signon buffer capacity, should eliminate sz_getspace errors (example: hard mode coop crash on Travail's qte2m1.bsp.) Prints a warning when signon buffer is too big for standard servers. + - "no free edicts" error now spits you back to the console instead of crashing + - visual improvements + - added model interpolation for animation and movement. See cvars r_lerpmodels, r_lerpmove, r_nolerp_list. + - added interpolation on the gun kick motion, and ability to disable gun kick entirely (see cvar "v_gunkick") + - disabled torches/bolts casting shadows + - more content support + - added support for per-entity alpha, and it works even without a custom progs.dat, works on static entities too, and both bsp and mdl models. Set values directly in the map and/or control it with quakec. When setting alpha, a value of "0" is interpreted as "default", which means 1.0 for most things, but for water polygons it t means obey the value of r_waterwarp. A value greater than 0, up to 1.0, will explicitly set the alpha, and override r_wateralpha for water polygons. A value of -1 will explictly set the alpha to 0 (invisible), and override r_wateralpha. (requires the new protocol, except for alpha -1, which makes things invisible even with protocol 15) + - can playback protocol 15 demos containing the nonstandard U_TRANS bit, as recorded by nehahra, joequake, and aguirre's engine. When the server says it is running protocol 15, and the U_TRANS bit is encountered, fitzquake will assume it's the Nehahra protocol and parse it accordingly. + - added support for -quoth command line switch. Loads quoth content regardless of current gamedir, and enables hipnotic statusbar layout. This allows you to load a mod that requires quoth, but is in a separate directory (i.e. fitzquake.exe -quoth -game warp) + - fullbrights now use additive blending instead of alpha blending. This allows me to support external glowmaps, and entity transparency with fullbrights/glowmaps. In some cases, additive fullbrights are rendered using multitexture, but only if GL_EXT_texture_env_add is available. The command line option -nocombine will disable the use of GL_EXT_texture_env_add. + - added support for external glowmaps (names must end in _luma or _glow) + - added support for external liquid textures (name your files #water instead of *water) + - added support for map-specific texture directories (put textures in /textures/mapname/) + - interface improvements + - improved crosshair accuracy somewhat for protocol 15, and improved it a lot in protocol 666 + - rearranged scorebar so that map titles as long as 40 chars can be displayed without scrolling + - statusbar displayed values now cap at 999 rather than displaying truncated numbers (1001 will be displayed as 999 instead of 001) + - tab completion cycle order now alphabetized as a whole rather than grouped by type + - added scr_conscale cvar (see below) + - added scr_crosshairscale cvar (see below) + - added scr_sbaralpha cvar (see below) + - scr_showfps and scr_clock display now use same scale as console (scr_conscale, scr_conwidth) + - video menu now shows aspect ratio of selected video mode + - added aguirRe's trick of making the window perfectly cover the screen with no titlebar/borders, if you create a windowed mode with height/width equal to the desktop size. (not tested on dual monitors, though.) + - developer features + - added ability to monitor various stats that change dynamically, such as packet size, temp entities, and visedicts. (see cvar "devstats") + - restricted spammy messages "packet overflow", "beam list overflow", and "too many efrags" to repeat at most once every 3 seconds + - r_showbboxes now draws point entities too + - "mcache" command now gives you a total number of models (note, this is a list of all loaded models, not just the current level's model precaches) + - "soundlist" command now gives you a total number of sounds (note, this is a list of all loaded sounds, not just the current level's sound precaches) + - "give" command can now give armor values above 200 + - added imagedump command (see below) + - "x is not a field" message is now shown only if developer = 1 + - bugfixes + - added Baker's fixes for Intel display adapters + - fixed tab completion cycle never reaching certain commands/cvars in list + - fixed -dinput mouse doesn't work after vid_restart + - fixed rotated alias models incorrectly culled + - fixed sky animation on brush models + - fixed "invalid pixel format" error when switching between two video modes with the same bit depth, on certain chipsets (Baker had this problem) + - fixed alt-tab fullscreen trashed window on some nvidia, intel cards (from Baker) + - fixed some TGAs load upside down + - fixed non-square PCX loading appears interlaced + - fixed PCX loading from inside pakfiles appears as random noise + - fixed player skin corruption bug (thanks aguirRe) + - fixed improperly trying to colormap the playermodel before a map is loaded, after switching games (could cause a crash or discolored textures) + - fixed too-dark fog on world/brushmodels with -nomtex + - fixed overbright models too light with fog and -nocombine + - fixed r_wateralpha support on brush entities + - fixed grenade shadows spinning wildly instead of staying on the ground + - fixed solid fogged sky was not quite the same color as solid fogged geometry, for certain colors of fog + - fixed trigger_changelevel with missing map causes apparent hang + - fixed hang when r_stereo and r_lightmap are both enabled + - fixed "W_GetLumpinfo" crash when a graphic is missing from gfx.wad. Prints a console message instead. Missing graphics will be drawn as a checkerboard image. Note: conchars is the one graphic that must be in the gfx.wad, since the console won't even function without it. + - fixed accidentally stripping -hipnotic and -rogue directories when switching games + - fixed give command doesn't update currentammo + - fixed changing gamedirs while a skybox is loaded sometimes corrupts textures/lightmaps in the next map loaded + - fixed unnecessary creation of "glquake" subdirectory + - fixed 0Hz/0bpp showing up in video menu sometimes + - fixed -aliases triggered on alt-tab + - fixed con_logcenterprint considering identical messages to be duplicates even though the map has changed in between + - fixed hang in proxmap2, when going through one of the teleporters (thanks spirit, mh) + - fixed lightning bolt memory corruption crash (rare) + - source cleanup + - removed all ASM code from source, and removed gas2masm project + - cleaned up unnecessary library dependencies in source release + - renamed local variable "errno" to fix a compiling problem on visual c++ express edition + - added dxsdk folder to source release + +cvars: + + - devstats. default 0. If 1, prints various the current and peak values of various stats that change over time, such as packetsize, and edicts. Note: even if devstats is set to 0, fitzquake will keep track of peak values so when you turn it on, the peaks are accurate. Devstats display scale follows console text scale. + + - r_lerpmodels. default 0. If 1, do interpolation on model animations, with exceptions for torches (r_nolerp_list) & muzzleflares (interpolation is suspended for two frames if EF_MUZZLEFLASH is encountered, on the assumption a muzzleflare happens at the same time.) If 2, lerp all animations, without exception. If 0, disable interpolation (to mimic standard quake.) + + - r_lerpmove. default 0. If 1, do movement interpolation on MOVETYPE_STEP entities (i.e. monsters.) If 0, disable interpolation (to mimic standard quake.) I recommend that you use r_lerpmove and r_lerpmodels together, or turn them both off, otherwise monsters will move strangely. + + - r_nolerp_list. Contains a comma-separated list of filenames of models to exclude from lerping. Filename must include the relative path and extension, for example "progs/flame.mdl". The default is "progs/flame.mdl,progs/flame2.mdl,progs/braztall.mdl,progs/brazshrt.mdl,progs/longtrch.mdl,progs/flame_pyre.mdl,progs/v_saw.mdl,progs/v_xfist.mdl,progs/h2stuff/newfire.mdl". This should include all torches in id1, quoth, and bastion, which look bad when lerped, and the zerstorer chainsaw and xmen fist, which also look bad lerped. + + - r_skyfog. default 0.5. Controls how much the sky is obscured by the fog. 0 = sky is completely unfogged, 1 = sky is completely fogged. + + - scr_conscale. default 1. Scales the console text larger, but only has an effect when scr_conwidth is 0. + + - scr_crosshairscale. default 1. Scales the crosshair larger. 1 = normal, 10 = maximum enlargement + + - scr_sbaralpha. default 1. Controls the transparency of the statusbar background. 0 = invisible, 1 = opaque (original quake behavior), in-between values give different levels of transparency. Pro tip: set it to 0.99 and it will still appear opaque, but the 3D view will expand to fill the area on both sides of the statusbar. + + - v_gunkick. default 1. If 1, standard quake view kick when you fire your gun. If 2, interpolates the view kick. If 0, disables view kick entirely. + +commands: + + - imagedump. Dumps all loaded textures from opengl into tga files. This shows the textures as they exist in opengl texture memory. Texture names containing '*' will be renamed with '#' instead. + + - sv_protocol. Sets the network protocol used by the server. Default is 666. Possible values are 15 (standard netquake protocol) or 666 (new fitzquake protocol.) Changes to the protocol will not take effect until the next time you load/reload a level. When running protocol 666, standard clients won't be able to connect to your server, and they won't be able to play any demos you record. When running protocol 15, only 256 models and 256 sounds can be sent to the client, which means you would see invisible entities and not hear some sounds, when running a map or mod that has more than 256 models or sounds. There is also some other data the server will suppress in protocol 15, such as per-entity alpha. Also note, dzip's special demo compression does not work on demos that use modified protocols, so you will get a compression ratio no better than standard zip compression. + +changes in 0.80 +--------------- + + - map loading is about four times faster. This is due to some optimizations in the texture loading code. + - video mode can now be changed in-game. You can change resolution, color depth, refresh rate, and switch between windowed and fullscreen modes. This can be accomplished easily using the video options menu, and is also available at the console using cvars. Note: if you launch fitzquake with -width, -height, -window, or -bpp in the command line, Fitzquake will use the command line settings and ignore whatever it reads from the config files at startup. However, you will still be able to change the video mode from the menu or the console as you like. Also note: to change video modes by execing a config file, the config file must include "vid_restart" after the other vid_ cvars have been set. (see cvars "vid_width," "vid_height," "vid_fullscreen," "vid_bpp," "vid_refreshrate," and commands "vid_restart," "vid_test") + - added control of entity count limits (MAX_EDICTS.) The default maximum has been increased from 600 to 1024. It can be raised even higher (up to 8192 -- this is a limit set by the network protocol) using a cvar. (see cvar "max_edicts") + - added control of vertical sync. (see cvar "vid_vsync") + - added control of anistropic filtering. Anisotropic filtering is a method to improve texture clarity on surfaces when viewed at steep angles. (see cvar "gl_texture_anisotropy") + - console buffer size can now be set. The command line option "-consize" allows you to specify the buffer size in kilobytes. For reference, fitzquake's default buffer size is 64k, and glquake's is 16k. 16k is also the smallest size fitzquake will allow you to set. Note: this buffer lives in the heap, so if you want to have a HUGE buffer, you might need to increase -heapsize also. + - increased max surface extents from 256 (the software quake maximum) to 2000. For reference, the glquake maximum is 512. This should eliminate the "bad surface extents" crash when running some maps that could be played in glquake, but not fitzquake or winquake. + - increased max vertices in an alias model from 1024 (the glquake maximum) to 2000 (the software quake maximum.) + - increased MAX_CHANNELS from 128 to 512 and MAX_DYNAMIC_CHANNELS from 8 to 128 + - screenshot filenames are now in the format "fitz0000.tga", increasing the maximum number of screenshots per folder from one hundred to ten thousand. + - vid_describemodes output cleaned up; now displays a list of valid refresh rates for each mode + - added a more intuitive cvar control of slow motion/fast-forward for demos and live gameplay. (see cvar "host_timescale") + - "reset to defaults" option in the menu now executes the "resetall" command before loading default.cfg + - game command now writes config.cfg to current gamedir before switching + - +mlook is now saved to config.cfg + - changed smallest allowed window size from 320x240 to 320x200 + - console cursor images are now hard-coded, and the insert mode cursor is now a vertical bar instead of an underscore. This was prompted by several popular mods (OUM, Xmen TC) using nonstandard cursors, which are incompatible the fitzquake console enhancements. + - gl_farclip now defaults to 16384. This should be high enough to handle even the largest open areas without unwanted clipping. The only reason you'd want to lower this number is if you see z-fighting. + - added cvar r_drawworld (see below) + - added cvar r_showtris (see below) + - added cvar r_showbboxes (see below) + - added a command to cycle a cvar through a list of values. (see command "cycle") + - mapname command now works on dedicated server. + - added a hack to fix those white edges on the bottom of the large box of shells. I feel dirty, but they look better, now. + - changed stuffcmds behavior to allow hyphenated map names, config file names, etc. in the command line. (example: "fitzquake.exe +exec my-config.cfg +map my-map") However, you still can't load a map or config file when the first character in the filename is a hyphen. + - skybox loader now reverts to scrolling sky if all 6 skybox faces failed to load. + - tweaked circular particles to match the apparent size of the square particles. + - fixed crash when loading mods with large player skins (like the chainsaw mod, and PerQuake.) Colormapping can now handle any size player texture (limited to the heapsize, of course.) + - fixed bug where a replacement model in a mod is messed up becuase a matching .ms2 file in id1/glquake is present. The fix is simply to disable all mesh caching, which slows down model loading a little. + - fixed freeze when gl_overbright is 1 and either texture_env_combine or multitexture is disabled or not supported. + - fixed "numgltextures == MAX_GLTEXTURES" crash when viewing multiplayer->setup menu. + - fixed "numgltextures == MAX_GLTEXTURES" crash when playing large maps (nesp09,) due to frequent model recaches. + - fixed bug where entities and water were not being drawn any frame in which a model had to be recached. + - fixed skybox texture showing up in the place of other textures/skins/lightmaps, when the previous loaded map had a skybox. + - fixed missing polygons on edges of screen when underwater and r_waterwarp is 1. + - fixed missing polygons on edges of screen when r_stereo is enabled. + - fixed long mapnames that scroll are truncated to be shorter than what appears in the console. Well, sort of. What I did was increase the maximum length from 39 to 127. A mapname longer than 127 will still be truncated, but these are pretty rare. + - fixed rogue's teamplay skin showing up as an all-white texture. + - fixed checkerboard texture shows up sometimes when an animated texture has fullbright pixels on some frames, but not others (reactor core in junk.bsp) + - fixed color 255 is not fullbright + - fixed fuscia dots appearing in corners of resampled textures + - fixed mapname command crashes when client is disconnected. + - fixed cl_nolerp 1 screws up speed of demo playback + - fixed annoying client-side step-up smoothing when in noclip mode (except on nonlocal servers.) + - fixed scr_clock 2 displays hour twelve as "0" instead of "12" + - fixed skip textured surfaces still drawn even after running tyrann's skip utility + - fixed crash when loading a map with a sky texture where the "sky" in the texturename is not lowercase + - fixed hang in e2m2 on easy skill, where you can shoot one of the buttons at the beginning and then trick-jump through the open gate. Now it prints a warning message ("SV_TouchLinks: null link") and lets you keep playing. + - fixed bug when viewsize < 100, and r_oldwater is 0, where you can see the water textures overlaying part of the brown frame around the viewport. + - fixed bug where imagelist and r_speeds2 would report the same megabyte counts in both 16bpp and 32bpp mode, even though texture bpp should match (and does match) framebuffer bpp. The numbers are now different and accurate for each bit depth. + - removed cvars "vid_config_x," "vid_config_y," "vid_wait," "vid_nopageflip," "_vid_wait_override," "_vid_default_mode," "_vid_default_mode_win," and "vid_stretch_by_2," none of which glquake ever used. + - removed cvar "vid_mode" and commands "vid_describemode" and "vid_nummodes," because of the new video mode handling. + +cvars: + + - gl_texture_anisotropy. Controls the amount of anisotropy in texture filtering. If 1 or less than 1, texture filtering is normal (isotropic.) If greater than 1, increasing degrees of anisotropic filtering are used, up to the hardware maximum. Set value to 2 for 2x anisotropic, 4 for 4x, etc. Default 1. + + - host_timescale. Scales the passage of time on client and server. Set to 0 or 1 for normal speed, less than 1 for slow motion, and greater than 1 for fast-forward. If greater than 0, overrides host_framerate. Default 0. + + - max_edicts. Sets the maximum number of entites on both the client and server. Default 1024. Acceptable values range from 256 to 8192. Set to 600 to mimic standard quake. Changes won't take effect until the next time a map is loaded. Note: if a client connects to a server, and the client's maximum is lower than the server's, the client will probably crash if it ever sees an entnum higher than its local max_edicts. Warning: you may need to increase -heapsize if you want a high max_edicts value. + + - r_drawworld. If 1, draw world as usual. If 0, don't draw the world. Default 1. (compare r_drawentities) + + - r_showbboxes. If 1, draw a wireframe bounding box around each entity. Note that these are the server-side per-edict physics bounding boxes, not the client-side per-model rendering bboxes. If 0, disable this feature. Default 0. + + - r_showtris. If 1, draw wireframe outlines for every triangle in the scene. Like in Quake 3, the lines will be visible even through solid geometry. If 2, draw the outlines only on visible surfaces (like r_showtris 2 in Medal of Honor.) If 0, disable wireframe overlay. Default 0. + + - vid_bpp. Sets the color depth of the screen in fullscreen mode. Windowed mode ignores this setting. Can be 16 or 32. Default 16. (Changes won't take effect until the next call to vid_restart.) + + - vid_fullscreen. If 1, fitzquake will run fullscreen. If 0, fitzquake will run in a window. Default 1. (Changes won't take effect until the next call to vid_restart.) + + - vid_height. Sets the vertical screen/window resolution. Default 480. In windowed mode, cannot be less than 200. (Changes won't take effect until the next call to vid_restart.) + + - vid_refreshrate. Sets the refresh rate of the screen in fullscreen mode. Windowed mode ignores this setting. Possible values include 60, 70, 72, 75, 85, etc. Default 60. (Changes won't take effect until the next call to vid_restart.) + + - vid_width. Sets the horizontal screen/window resolution. Default 640. In windowed mode, cannot be less than 320. (Changes won't take effect until the next call to vid_restart.) + + - vid_vsync. Set to 1 to enable vertical sync, which eliminates tearing, but caps your framerate at the monitor refreshrate. Set to 0 to disable vertical sync, which allows tearing but doesn't cap your framerate. Default 0. Note: If fitzquake detects that your driver settings have forced vsync to be disabled, it will post a message to the console saying so, and this cvar will have no effect. + +commands: + + - "cycle <cvar> <value> [<value> [<value> ...]]" to cycle a cvar through a list of values.. Note: this command will get stuck on a list that contains the same value more than once, such as "cycle blah 1 2 1 3". If you're doing anything that complex you can just use aliases. + + - vid_restart. Tries to set a video mode that matches the values of vid_width, vid_height, vid_fullscreen, and, if vid_fullscreen is 1, vid_bpp and vid_refreshrate. + + - vid_test. Like vid_restart, except that after switching to the new mode pops up a confirmation dialogue. This is useful if you are not sure what modes your monitor can handle, so you don't get stuck with a blank screen. The dialogue has a time limit so that if you don't press a key within 5 seconds, it will revert to the previous mode. + +changes in 0.75 +--------------- + + - totally rewritten bsp drawing code. The new code combines the advantages of the gl_texsort 1 and gl_texsort 0 codepaths from glquake into one codepath that uses texture sorting and multitexture. In my tests, i've found that it's about the same speed as glquake in low poly scenes (like the original quake levels,) but as you get into the thousands of wpolys, it's faster and faster. + - 2x overbright lighting. Lighting now looks like software quake. Just like overbright lighting on models, overbright on world polys requires GL_EXT_texture_env_combine (TNT and later, voodoo4 and later.) Without it, FitzQuake will be use two passes to render overbright world polys. So if you don't have that extension, you might disable it for performance reasons. (see cvar "gl_overbright") + - colored lighting support using .lit files. + - totally new water surface animation. The new method requires no surface subdivision, isn't plagued by tearing and sparklies caused by tjunctions, and looks almost identical to software quake's water, and doesn't slow down on very large sheets of water. (see cvars "r_waterquality" and "r_oldwater") + - old water aninmation fixed so that it doesn't look bad when gl_subdivide_size is 32 or lower. + - can load external textures (currently targa and pcx) if they match the texture name in the bsp and are located in the id1/textures, or <MODDIR>/textures directory. At the moment no other images (skins, menu, etc.) can be replaced. + - gamma correction now goes back to normal when Fitzquake loses focus. + - tab completion now adds a space after the completed command/cvar if the cursor is at the end of the editline. + - increased the max length of the video mode list from 30 to 80. This should alleviate the problems people with newer cards were having trying to use some 32-bit modes -- there were so many 16-bit modes that they filled up the list before all 32-bit modes could be detected. The video menu will still only list a certain number of modes due to space constraints, but you can see the complete list by using the console command "vid_describemodes" + - number of listed video modes in the "video options" menu increased from 27 to 36. + - added alpha control for the front sky layer. (see cvar "r_skyalpha") + - clock can now display time in 24-hour or "military" time. + - added an "mtex" counter to the r_speeds 2 readout. This measures the number of megabytes of texture memory used each frame to draw the scene. Note: this doesn't count textures used to draw the console, menu, or statusbar. + - added optional drawing of surfaces inside sky leaves, for compiler/map testing purposes. (see cvar "r_oldskyleaf") + - sky surfaces on bmodels are now visible, though drawn incorrectly. + - fixed multiple textures in bsp with same name or no name get overwritten/not loaded. (example: rd1m3) + - fixed some nasty texture loading bugs that were especially hounding 3dfx users (wrong texture, no texture, or unnecessarily low-res textures displayed on models and world.) These bugs would also occur in conjunction with nonzero values of gl_max_size or gl_picmip. + - fixed bug where changing gl_max_size or gl_picmip in-game would screw up alias model texture coordinates. + - fixed bug where if -gamma is specified at the command line, the "gamma" cvar would be ignored. + - fixed model more than 2048 units above floor us unlit by static lighting. + - fixed crash with con_logcenterprint when centerprint message was too long. + - fixed crash when changing to a nonexistant gamedir and then trying to write a file (screenshot, etc.) Fitzquake now creates the directory as needed. + - fixed "bad surface extents" error when sky or water surface is missing from bsp file. + - fixed alias model shadows write to z-buffer. + - fixed underwater intermission camera has warp, but no screenblend. + - fixed console buffer still scrolled back after using the "clear" command. + - fixed console command history (the list of previous commands) not being rewound after toggling the console. + - removed cvar gl_texsort. New bsp drawing code always sorts by texture. + - removed cvar gl_ztrick. The depth buffer is now cleared every frame. + - removed cvar gl_keeptjunctions. Extra verts created by qbsp to eliminate tjunctions are now always kept. + - removed "sliding on monsters' heads" fix, becuase I decided I don't like the idea of changing gameplay, even if the original behaviour is clearly a bug. Since this bug can be fixed in quakec also, I feel safer leaving it as it was. + +cvars: + + - gl_overbright. default 1. This variable controls overbright lighting on the world polygons. (For lighting on models, use gl_overbright_models.) If 1, overbright will be enabled and lighting will resemble software Quake. If 0, overbright will be disabled and lighting will resemble GLQuake. + + - r_oldskyleaf. default 0. If 0, surfaces inside sky leaves will be skipped by the renderer. If 1, they will be drawn whenever they are in your PVS, just like any other surface. + + - r_oldwater. default 1. If 1, use the old GLQuake method of subdividing the water surface to enable a warping animation. If 0, use the new render-to-texture method. Note: in general, r_oldwater 0 looks better and runs slower. So experiment to see if the performance hit is acceptable to you. + + - r_skyalpha. default 1. Sets the alpha of the front sky layer. Note that if sky alpha is less than 1.0, the sky will be drawn in two passes even if you have multitexture. + + - r_waterquality. default 8. Sets the quality of the water when r_oldwater is 0. Can be anywhere from 1 to 64. Lower values give better performance, higher values look better. A value of 4 will provide water that looks at least as good as glquake can get, and 32 is close enough to software quake for all but the most picky. To control the quality of water when r_oldwater is 1, use gl_subdivide_size instead. + + - scr_clock. default 0. If 1, game time is displayed. If 2, system time is displayed in 12-hour format. If 3, system time will be displayed in 24-hour or "military" time. + +Changes in 0.70 +--------------- + + - added anaglyph stereo rendering. Note that this will cut your framerate in half, as it is rendering the scene once for each eye. You might want to turn off r_drawviewmodel as it is hard to focus on becuase it is so close. (see cvars "r_stereo", "r_stereodepth") + - now uses ARB_multitexture if present, otherwise tries to use SGIS_multitexture. This should fix various blending bugs on some cards, such as weird cloud layers, all-black models, and inverted torches. (only ARB guarantees that GL_DECAL blending will work) + - overbright models now uses GL_EXT_texture_env_combine if supported (TNT and later, voodoo4 and later,) which saves one or two passes on model rendering when gl_overbright_models is 1. The command line option -nocombine will disable this. + - gl_overbright_models now defaults to 1 + - custom palettes are now correctly loaded when you use the "game" command. + - RecursiveLightPoint is now lerped for smoother lighting of slow-moving models. Check out the ogre in e3m3 for an example. + - dynamic lighting (rockets, etc) has been moderately sped up. (some lightmaps were being uploaded even though they weren't actually touched by a dynamic light.) + - overhauled 2d drawing to allow independent scaling of console, menu, and sbar (see cvars "scr_conwdith," "scr_menuscale," and "scr_sbarscale") command line switches "-conwidth" and "-conheight" removed. cvar "scr_stretch_menus" removed. + - user control of max framerate. (see cvar "host_maxfps") + - improved the accuracy of the FPS counter a bit, but it still seems suspect. + - particles can now be drawn as quads or triangles. (see cvar "r_quadparticles") + - opengl information (vendor, renderer, version, extensions) is no longer printed during initialization. (see command "gl_info") + - rewrote texture management. Now instead of quake's memory usage going up and up forever (becuase textures were uploaded to the opengl.dll and never freed,) all textures will get flushed when you switch games, bringing you back down to where you were when fitzquake first launched. + - gl_texturemode command will now accept a number (1 through 6) as well as the name (gl_linear_mipmap_nearest, etc.) + - gl_describetexturemodes will list all texturemodes. + - the inside of sky leaves are no longer rendered -- so when noclipping inside them, it will look the same as noclipping inside a solid wall. This does not affect gameplay. + - cleaned up intermission display in singleplayer -- no more overlapping numbers + - r_speeds readout modified a bit. (see cvar "r_speeds") + - r_sky_quality now defaults to 12 instead of 8, since skies are now drawn in 1 pass (with multitexture at least) + - gl_texsort now always defaults to 0. (it used to be forced to 1 when multitexture was unavailable) + - fixed bug where models would actually darken when dlights got bright enough + - fixed deathmatch, coop cvars not reset to zero when starting a new game from the single player menu + - fixed r_lightmap doesn't work when gl_texsort = 0. + - fixed inverted lightmaps / no textures / no dynamic light bug when multitexture is disabled and gl_texsort = 0 + - fixed scrolling map title in wrong place when width does not equal conwidth + - fixed a few color borking problems in 16-bit mode. The front sky layer, sprites, and pics with transparency will still look a bit off (as in glquake,) but at least the console image and statusbar background look better. Though it isn't perfect, it should once again look like what you expect from glquake in 16bit. + - fixed pixel gap on both sides of the console in 1024x768 + - fixed wpoly count being slightly lower when gl_texsort = 0 (the count was correct when gl_texsort = 1) + - fixed lmap count always zero when gl_texsort = 1 + - dlight fans are now drawn after water, so that it looks right at least when wateralpha is 1. + - fixed a possible bug with older 3dfx cards (voodoo 1/2/rush) where the gamma cvar might not work (untested) + - fixed old commands showing up in the console prompt after hitting 'enter' + - increased MAX_HANDLES so that you should never see the "out of handles" error message. + - removed cvar "chase_alpha." the transparent player model was buggy and didn't work well in a lot of conditions. + - removed cvar "gl_doubleeys" (yes, that is the correct misspelling) With overbright models, eyes can be seen as easily as in software mode. + - removed cvars "cl_crossx," "cl_crossy," "lcd_x," "lcd_yaw," and "gl_reporttjunctions" which didn't do anything (in glquake, at least). + - removed support for GL_EXT_shared_texture_palette (special 8-bit texture format) + - removed VCR code. command line switches "-record" and "-playback" no longer supported. + - removed support for command line switch "-gamma" -- just use the gamma cvar, or idgamma or something. + +cvars: + + - r_stereo. default 0. If nonzero, the scene will be rendered once in red, and again in cyan, with the two views shifted slightly. If you have 3D glasses you can appreciate this (assumes that the left eye is red and the right eye is cyan.) The value of r_stereo sets the eye separation. If your glasses have red on the right eye, use a negative value to flip the views. + + - r_stereodepth. default 128. Sets the distance at which the two views will converge when stereo rendering is active. + + - scr_conwdith. default 0. Sets the virtual console width, where smaller numbers means larger text. Values larger than window width, or smaller than 320, will be clamped to that range, and all values will be rounded to a multiple of 8. If 0, the window width will be used. Note that values that divide evenly into the window width will make the text look nicest. + + - scr_menuscale. default 1. Sets the scale factor for menus and other centered overlays. If 1, images will be drawn at 1:1 scale. If 2, images will be double size. Menus will never be drawn smaller than 1:1, and never larger than the size of the window. Note that integer values will make the text look nicest. + + - scr_sbarscale. default 1. Sets the scale factor for the statusbar. If 1, images will be drawn at 1:1 scale. If 2, images will be double size. The statusbar will never be drawn smaller than 1:1, and never larger than the width of the window. Note that integer values will make the text look nicest. + + - host_maxfps. default 72. sets the maximum frames per second fitzquake will render (also the maximum number of server frames per second.) Clamped to the range 10 - 1000. Set to 72 to mimic standard quake. + + - r_quadparticles. default 1. If 1, particles are drawn as GL_QUADS instead of GL_TRIANGLES. Quads use 4 verts instead of 3, but the fillrate cost is 1/2 that of triangles. Depending on your card, either one may be faster. This cvar has no effect on the appearance of particles. + + - r_speeds. default 0. Values of 1 and 2 will give you increasing amounts of information. When you see two numbers separated by a slash, the first number is polys, and the second number is passes. + +commands: + + - gl_info. Displays opengl info which was previously displayed during initialization: vendor, renderer, version, and extensions + + - imagelist. Displays a list of loaded textures, and their dimentions. + + - gl_texturemode. Now accepts a number (1 through 6) as well as the name (gl_nearest, etc.) + + - gl_describetexturemodes. Lists all texturemodes. + +Changes in 0.65 +--------------- + + - gamma cvar now supported. (see cvar "gamma") + - fullbrights on models now supported. + - odd-sized world textures are now bilinearly resampled (instead of glquake's nearest pixel resample) + - removed all fixed-size buffers for loading textures; now the only limit is the size of your memory heap (textures will still be downsampled if they are bigger than the hardware can handle) + - styled lights (torch flicker, etc.) can now be disabled (see cvar "r_flatlightstyles") + - sky now uses multitexture if available. + - centerprints are now optionally logged to the console (see cvar "con_logcenterprint") + - number of savegame slots increased to 20 (from 12) + - if a map title is longer than 22 characters, it scrolls marquee-style in the statusbar. + - gl_flashblend defaults to 1 again. (consistency with glquake) + - gl_ztrick defaults to 1 again. (consistency with glquake) + - command line gamma now defaults to 1.0 for all cards. (consistency with glquake, plus hardware gamma is better) + - now checks hardware for maximum texture size. Users of later voodoo cards should be able to see large textures now. (see cvar "gl_max_size") + - now shows AM/PM when scr_clock is 2 + - fixed crash when starting dedicated server + - fixed crash when loading too many textures. (now it throws a sys_error and quits) + - fixed fitzquake-specific crash when player goes near water in a demo playback. + - scr_conalpha now actually works. + - keypad enter in the console works again. + - optional 2x overbrightening on models. (see cvar "gl_overbright_models") + - optional quake2-style noclip. (see cvar "sv_altnoclip") + - new icon + +cvars: + + - con_logcenterprint: If 1, centerprint messages will be logged to the console in sp/coop. If 2, they will also be logged in deathmatch. Default 1. + + - gamma: Brighten or darken the screen to compensate for differences between monitors. This is now supported by using your video card's gamma support. Just like in winquake, values less than 1 are brighter and values greater than one are darker. Default 1. Notes: I have added special code so that this will work on 3dfx cards too, but i have no way to check that it works. If fitzquake crashes, your hardware gamma may be stuck at the wrong value. You can use the "display settings" control panel fix this, or you could try lordhavoc's useful "setgamma" utility (available on this page.) Also note that if texture-brightening gamma has been requested at the command line (fitzquake.exe -gamma ), harware gamma will not be used and the gamma cvar will have no effect. + + - gl_max_size: Now defaults to 0. If 0, textures will be as large as the hardware allows. Positive values can be used to impose a limit smaller than the hardware's reported maximum. + + - gl_overbright_models: If 1, models will be rendered using 2x overbrightening and will appear at roughly the same brightness as they do in software quake, which is noticably brighter than the default fitzquake / glquake appearance. I disabled this cvar by default becuase this is still a poorly supported feature -- it currently takes 2 or 3 passes to render a model when this feature is enabled, compared to only 1 pass when it is disabled. Default 0. + + - r_flatlightstyles: If 1, styled lights (torch flicker, etc.) will be displayed as a steady light. If 2, the peak intensity will be used instead of the average intensity. Default 0. + + - sv_altnoclip: If 1, enable the alternative noclip movement which resembles quake2 and is not constrained to the horizontal plane. Set to 0 to retain quake's original noclip behavior. Default 1. + +Changes in 0.60 +--------------- + + - graphics: + - better sky projection, configurable for performance + - menus and other overlays are now centered on the screen, and can optionally stretch to fit resolution. + - all 2d graphics now obey gl_texturemode and all texturemode changes take effect immediately + - underwater warping now resembles quake3's perspective munging, and obeys r_waterwarp + - fixed frustum culling b0rked (giving HOM at certain FOV / vidsize / screensize combinations) + - fixed lack of support for VP_PARALLEL_ORIENTED, VP_PARALLEL_UPRIGHT, and FACING_UPRIGHT sprites + - fixed fullbrights not displayed on world/bmodels + - fixed texture cache mismatch error + - fixed pink edges on sprites, menu items, etc + - fixed particle z-buffer bug (apparent when a particle is in front of a water surface) + - fixed ugly resampling of non-power of two gfx, skins, sprites + - fixed large models (shamblers, shub) dissapearing near edge of screen + - fixed statusbar not visible when gl_clear = 1 + - fixed r_fullbright change not immedate when gl_texsort = 0 + - fixed alias models still dark when r_fullbright = 1 + - fixed HOM when screen is partially underwater + - fixed gunshot decals not showing up on some walls + - sky and water warp now freeze when you pause, as well as lightning bolts + - r_novis changes now take effect immediately, rather than when you cross a leaf boundary + - removed mirror code + - two particle styles, circle and square (cvar controlled) + - console: + - improved tab completion: + - hitting tab once will display a list of possible matches and complete the line using the first match + - hitting tab or shift-tab will cycle through the matches + - autocomplete will now match against aliases as well as commands and cvars. + - autocomplete will now complete later in the string (e.g. "bind mouse1 +att" + tab will complete '+attack') + - autocomplete will even complete inside the string (e.g. "bind m +attack" + tab will complete 'mouse1' if the cursor is right after the 'm') + - new key functionality: + - tab -- autocomplete, cycle through multiple matches + - shift-tab -- cycle backwards through multiple matches + - ins -- toggle insertmode + - del -- delete current character + - backspace -- delete previous character + - ctrl-v -- paste from windows clippboard + - leftarrow -- move cursor one character left in line + - rightarrow -- move cursor one character right in line. or, get one character from the previous command. + - home -- move cursor to beginning of line + - end -- move cursor to end of line + - ctrl-pgup -- scroll up a screen at a time + - ctrl-pgdn -- scroll down a screen at a time + - ctrl-home -- scroll to top of console history + - ctrl-end -- scroll to bottom of console history + - carets indicate that you are scrolled back, like in quakeworld/quake2 + - left arrow, right arrow, pgup, pgdn keys now auto-repeat + - quadrupled the length of the console history + - commands: + - "game <gamedir>" to load a mod. + - "reset <cvar>" to reset a cvar to default. Note that this is the engine default, not the default.cfg value + - resetall. resets all cvars. + - mods. lists all child folders of quake directory which contain either a progs.dat or a pak file + - maps. lists all addon levels available (i.e. all levels that are not in id1/*.pak) + - mapname. outputs the short name of the current level (e.g. "e1m5") + - cmdlist. alphabetized. 'cmdlist blah' will list only cmds that start with 'blah' + - cvarlist. alphabetized. 'cvarlist blah' will list only cvars that start with 'blah' + - "inc <cvar> [amount]" to increment a cvar by amount. amount defaults to 1. + - "toggle <cvar>" to invert the value of a cvar (nonzero -> 0 and 0 -> 1) + - god, noclip, notarget, and fly can now be explicitly set. example: "god 0" will disable god mode + - viewpos. outputs (X,Y,Z) pitch yaw roll + - "give a <value>" now gives you armour. type depends on value + - bindlist. lists all key bindings + - "alias <name>" now outputs the current command string + - "unalias <name>" to delete an alias + - unaliasall. delete all aliases. + - condump. dumps console to condump.txt + - fog. set global fog. syntax is "fog <density>", "fog <red> <green> <blue>", or "fog <density> <red> <green> <blue>" See section on modding for details. Set density to 0 to disable fog. + - "sky <skyname>" to load a skybox. if skyname is "", this will turn off skybox rendering. + - stuffcmds now parses the "cmdline" cvar rather than the args actually passed to the program. This is useful for loading mods dynamically, so you can edit the cmdline before execing quake.rc (which calls "stuffcmds") + - cvars: + - scr_stretch_menus. default 1. if 1, menus and other overlays are stretched to fill the screen + - scr_conalpha. default 1. This is the opacity when the console is halfscreen. 0.6 will mimic glquake + - scr_clock. default 0. if 1, game time is displayed. If 2, system time is displayed. + - scr_showfps. default 0. if 1, FPS are displayed. + - r_waterwarp recognized. default 1. if zero, no underwater warping will take place + - r_drawflat recognized. default 0. if 1, polygons will be drawn as a solid color with no lightmap or texture + - r_particles. default 1. 0 = no particles, 1 = circular particles, 2 = square particles + - r_fastsky. default 0. if 1, sky will be rendered as solid color, for added performance + - r_sky_quality. default 8. Higher number divides the sky more, for a smoother effect and slower performance. + - r_clearcolor now supported. default 2. specify a palette index from 0 to 255. + - gl_fullbrights. default 1. set to 0 to disable fullbrights + - gl_farclip. default 8192. set to 4096 to mimic glquake. note that the skybox will be drawn somewhat closer than this value. + - cl_maxpitch. default 90 (straight down.) set to 80 to mimic normal quake + - cl_minpitch. default -90 (straight up.) set to -70 to mimic normal quake + - cl_keypad. default 1. if 0, keypad keys will respond as in quake.exe (for example, pushing 'KP_END' will be the same as pushing '1') + - gl_flashblend now defaults to 0. + - gl_ztrick now defaults to 0. + - gl_keeptjunctions now defaults to 1. (note, contrary to the name of this cvar, what is being kept is the extra polygon verts which *eliminate* tjunctions. This is a good thing, so i made it default to 1) + - chase_alpha. default 1. lower values make the chasecam player model translucent. Buggy. + - keyboard + - keypad keys are now bindable: + KP_NUMLOCK, KP_SLASH, KP_STAR, KP_MINUS, KP_HOME, KP_UPARROW, KP_PGUP, KP_PLUS, KP_LEFTARROW, KP_5, KP_RIGHTARROW, KP_END, KP_DOWNARROW, KP_PGDN, KP_ENTER, KP_INS, KP_DEL + - command line: + - running with -gamma at the command line will set the gamma. There is still no way to change this value in game. Default is 1.0 for 3dfx cards, 0.7 for all others + - if unspecified, -conwidth now defaults to -width + - modding extensions: + - skyboxes (worldspawn and qc settable), currently only targa and pcx formats accepted + - global fog (worldspawn and qc settable) + - physics + - fixed sliding around while standing on solid entities' bounding boxes (monsters, players, etc) + - misc + - default heapsize is now 32mb (was 16mb) + - default zonesize is now 256k (was 48k) + diff --git a/Misc/fix_externaltex.patch b/Misc/fix_externaltex.patch new file mode 100644 index 0000000..ac7090f --- /dev/null +++ b/Misc/fix_externaltex.patch @@ -0,0 +1,113 @@ +-- from quake retexturing project + +diff --git a/Quake/gl_model.c b/Quake/gl_model.c +index ea6a68b..eec1f0f 100644 +--- a/Quake/gl_model.c ++++ b/Quake/gl_model.c +@@ -40,6 +40,8 @@ + static cvar_t external_vis = {"external_vis", "1", CVAR_ARCHIVE}; + static cvar_t external_textures = {"external_textures", "1", CVAR_ARCHIVE}; + ++extern cvar_t r_externaltexture_fix; //mk ++ + static byte *mod_novis; + static int mod_novis_capacity; + +@@ -808,6 +810,13 @@ static void Mod_LoadTextures (lump_t *l) + if (!q_strncasecmp(tx->name,"sky",3)) //sky texture //also note -- was Q_strncmp, changed to match qbsp + #endif + { ++ if (r_externaltexture_fix.value) { //mk ++ if (strstr(tx->name,"sky4")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==13039) ++ q_strlcpy(tx->name, "sky1", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ } + if (loadmodel->bspversion == BSPVERSION_QUAKE64) + Sky_LoadTextureQ64 (loadmodel, tx); + else +@@ -878,6 +887,50 @@ static void Mod_LoadTextures (lump_t *l) + //external textures -- first look in "textures/mapname/" then look in "textures/" + mark = Hunk_LowMark (); + COM_StripExtension (loadmodel->name + 5, mapname, sizeof(mapname)); ++ ++ if (r_externaltexture_fix.value) { //mk ++ if (strstr(tx->name,"plat_top1")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==24428) ++ q_strlcpy(tx->name, "plat_top1_cable", sizeof(tx->name)); ++ else ++ q_strlcpy(tx->name, "plat_top1_bolt", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ if (strstr(tx->name,"metal5_2")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==49173) ++ q_strlcpy(tx->name, "metal5_2_x", sizeof(tx->name)); ++ else ++ q_strlcpy(tx->name, "metal5_2_arc", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ if (strstr(tx->name,"metal5_4")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==20977) ++ q_strlcpy(tx->name, "metal5_4_double", sizeof(tx->name)); ++ else ++ q_strlcpy(tx->name, "metal5_4_arc", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ if (strstr(tx->name,"metal5_8")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==48444) ++ q_strlcpy(tx->name, "metal5_8_rune", sizeof(tx->name)); ++ else ++ q_strlcpy(tx->name, "metal5_8_back", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ if (strstr(tx->name,"metal5_8")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==48444) ++ q_strlcpy(tx->name, "metal5_8_rune", sizeof(tx->name)); ++ else ++ q_strlcpy(tx->name, "metal5_8_back", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ if (strstr(tx->name,"window03")) { ++ if (CRC_Block((byte *)(tx+1), tx->width * tx->height)==63697) // e4m2 variant ++ q_strlcpy(tx->name, "window03_e4m2", sizeof(tx->name)); ++ Con_Printf(" using %s\n", tx->name); ++ } ++ } ++ + q_snprintf (filename, sizeof(filename), "textures/%s/%s", mapname, tx->name); + data = Image_LoadImage (filename, &fwidth, &fheight); + if (!data) +diff --git a/Quake/gl_rmain.c b/Quake/gl_rmain.c +index 1406759..7b6280f 100644 +--- a/Quake/gl_rmain.c ++++ b/Quake/gl_rmain.c +@@ -100,6 +100,8 @@ + extern cvar_t r_vfog; + //johnfitz + ++cvar_t r_externaltexture_fix = {"r_externaltexture_fix", "0", CVAR_ARCHIVE}; //mk ++ + cvar_t gl_zfix = {"gl_zfix", "0", CVAR_NONE}; // QuakeSpasm z-fighting fix + + cvar_t r_lavaalpha = {"r_lavaalpha","0",CVAR_NONE}; +diff --git a/Quake/gl_rmisc.c b/Quake/gl_rmisc.c +index 963d55e..e9b251b 100644 +--- a/Quake/gl_rmisc.c ++++ b/Quake/gl_rmisc.c +@@ -47,6 +47,7 @@ + extern cvar_t r_noshadow_list; + //johnfitz + extern cvar_t gl_zfix; // QuakeSpasm z-fighting fix ++extern cvar_t r_externaltexture_fix; //mk + + extern gltexture_t *playertextures[MAX_SCOREBOARD]; //johnfitz + +@@ -230,6 +231,7 @@ void R_Init (void) + Cvar_SetCallback (&r_lavaalpha, R_SetLavaalpha_f); + Cvar_SetCallback (&r_telealpha, R_SetTelealpha_f); + Cvar_SetCallback (&r_slimealpha, R_SetSlimealpha_f); ++ Cvar_RegisterVariable (&r_externaltexture_fix);//mk + + R_InitParticles (); + R_SetClearColor_f (&r_clearcolor); //johnfitz diff --git a/Misc/mk_header.c b/Misc/mk_header.c new file mode 100644 index 0000000..de155dc --- /dev/null +++ b/Misc/mk_header.c @@ -0,0 +1,102 @@ +/* +gcc -Wall mk_header.c -o mk_header + +dumps the bytes of given input to a C header as +comma separated hexadecimal values. the output +header can be used in a C source like: + +const char bin[] = +{ +# include "output.h" +}; + +*/ + +#include <stdio.h> +#include <sys/stat.h> +#include <stdlib.h> + +int main (int argc, char **argv) +{ + FILE *f; + struct stat s; + unsigned char *buf, *ptr; + const char *output; + long i, j; + + if (argc != 2 && argc != 3) + { + printf ("Usage: mk_header <input> [output]\n" + "Default output file is \"output.h\"\n"); + return 1; + } + + if (stat(argv[1], &s) == -1 || + ! S_ISREG(s.st_mode) ) + { + printf ("Couldn't stat %s\n", argv[1]); + return 1; + } + + if (s.st_size == 0) + { + printf ("%s is an empty file\n", argv[1]); + return 1; + } + + buf = (unsigned char *) malloc (s.st_size); + if (buf == NULL) + { + printf ("Couldn't malloc %ld bytes\n", + (long)s.st_size); + return 1; + } + + f = fopen (argv[1], "rb"); + if (f == NULL) + { + free(buf); + printf ("Couldn't open %s\n", argv[1]); + return 1; + } + + if (fread (buf, 1, s.st_size, f) != (size_t) s.st_size) + { + fclose (f); + free (buf); + printf ("Error reading %s\n", argv[1]); + return 1; + } + fclose (f); + + output = (argc == 3) ? argv[2] : "output.h"; + f = fopen (output, "wb"); + if (!f) + { + free (buf); + printf ("Couldn't open %s\n", output); + return 1; + } + + for (i = 0, j = 0, ptr = buf; i < s.st_size; ++i) + { + fprintf (f, "0x%02x", *ptr++); + if (i == s.st_size - 1) + break; + fprintf (f, ","); + if (++j < 16) + fprintf (f, " "); + else + { + j = 0; + fprintf (f, "\n"); + } + } + fprintf (f, "\n"); + + fclose (f); + free (buf); + + return 0; +} + diff --git a/Misc/qs_pak/Makefile b/Misc/qs_pak/Makefile new file mode 100644 index 0000000..ea51a26 --- /dev/null +++ b/Misc/qs_pak/Makefile @@ -0,0 +1,18 @@ +INPUT := gfx/conback.lmp \ + maps/e1m1@c49d.ent \ + maps/e1m2@0caa.ent \ + maps/e1m4@958e.ent \ + maps/e2m2@fbfe.ent \ + maps/e2m3@237a.ent \ + maps/e2m7@10a8.ent \ + default.cfg + +OUTPUT := quakespasm.pak + +$(OUTPUT): $(INPUT) + ./mkpak.sh $(INPUT) > $(OUTPUT) + +.PHONY: clean +clean: + rm -f $(OUTPUT) + diff --git a/Misc/qs_pak/default.cfg b/Misc/qs_pak/default.cfg new file mode 100644 index 0000000..25a4b05 --- /dev/null +++ b/Misc/qs_pak/default.cfg @@ -0,0 +1,118 @@ +// +// load keybindings +// +// commands with a leading + will also be called for key up events with +// the + changed to a - +unbindall + +// +// character controls +// + +bind ALT +strafe + +bind , +moveleft +bind a +moveleft +bind . +moveright +bind d +moveright +bind DEL +lookdown +bind PGDN +lookup +bind END centerview + +bind e +moveup +bind c +movedown +bind SHIFT +speed +bind CTRL +attack +bind UPARROW +forward +bind w +forward +bind DOWNARROW +back +bind s +back +bind LEFTARROW +left +bind RIGHTARROW +right + +bind SPACE +jump +//bind ENTER +jump + +bind TAB +showscores + +bind 1 "impulse 1" +bind 2 "impulse 2" +bind 3 "impulse 3" +bind 4 "impulse 4" +bind 5 "impulse 5" +bind 6 "impulse 6" +bind 7 "impulse 7" +bind 8 "impulse 8" + +bind 0 "impulse 0" + +bind / "impulse 10" // change weapon +bind MWHEELDOWN "impulse 10" +bind MWHEELUP "impulse 12" + +// zoom +alias zoom_in "sensitivity 2;fov 90;wait;fov 70;wait;fov 50;wait;fov 30;wait;fov 10;wait;fov 5;bind F11 zoom_out" +alias zoom_out "sensitivity 4;fov 5;wait;fov 10;wait;fov 30;wait;fov 50;wait;fov 70;wait;fov 90;bind F11 zoom_in; sensitivity 3" +bind F11 zoom_in + +// Function keys +bind F1 "help" +bind F2 "menu_save" +bind F3 "menu_load" +bind F4 "menu_options" +bind F5 "menu_multiplayer" +bind F6 "echo Quicksaving...; wait; save quick" +bind F9 "echo Quickloading...; wait; load quick" +bind F10 "quit" +bind F12 "screenshot" + +// mouse options +bind \ +mlook + +// +// client environment commands +// +bind PAUSE "pause" +bind ESCAPE "togglemenu" +bind ~ "toggleconsole" +bind ` "toggleconsole" + +bind t "messagemode" + +bind + "sizeup" +bind = "sizeup" +bind - "sizedown" + +bind INS +klook + +// +// mouse buttons +// +bind MOUSE1 +attack +//bind MOUSE2 +forward +bind MOUSE2 +jump +//bind MOUSE3 +mlook + +// +// game controller +// +bind LSHOULDER "impulse 12" +bind RSHOULDER "impulse 10" +bind LTRIGGER +jump +bind RTRIGGER +attack + +// +// default cvars +// +gamma 1.0 +volume 0.7 +sensitivity 3 + +//viewsize 100 +viewsize 110 +scr_conscale 1.6 +scr_menuscale 1.6 +scr_sbarscale 1.6 + +// default to mouse-look enabled ++mlook diff --git a/Misc/qs_pak/default.cfg.diff b/Misc/qs_pak/default.cfg.diff new file mode 100644 index 0000000..085513f --- /dev/null +++ b/Misc/qs_pak/default.cfg.diff @@ -0,0 +1,76 @@ +--- default.cfg~ ++++ default.cfg +@@ -12,24 +12,26 @@ + bind ALT +strafe + + bind , +moveleft ++bind a +moveleft + bind . +moveright ++bind d +moveright + bind DEL +lookdown + bind PGDN +lookup + bind END centerview +-bind z +lookdown +-bind a +lookup + +-bind d +moveup ++bind e +moveup + bind c +movedown + bind SHIFT +speed + bind CTRL +attack + bind UPARROW +forward ++bind w +forward + bind DOWNARROW +back ++bind s +back + bind LEFTARROW +left + bind RIGHTARROW +right + + bind SPACE +jump +-bind ENTER +jump ++//bind ENTER +jump + + bind TAB +showscores + +@@ -45,6 +47,8 @@ + bind 0 "impulse 0" + + bind / "impulse 10" // change weapon ++bind MWHEELDOWN "impulse 10" ++bind MWHEELUP "impulse 12" + + // zoom + alias zoom_in "sensitivity 2;fov 90;wait;fov 70;wait;fov 50;wait;fov 30;wait;fov 10;wait;fov 5;bind F11 zoom_out" +@@ -85,14 +89,30 @@ + // mouse buttons + // + bind MOUSE1 +attack +-bind MOUSE2 +forward +-bind MOUSE3 +mlook ++//bind MOUSE2 +forward ++bind MOUSE2 +jump ++//bind MOUSE3 +mlook ++ ++// ++// game controller ++// ++bind LSHOULDER "impulse 12" ++bind RSHOULDER "impulse 10" ++bind LTRIGGER +jump ++bind RTRIGGER +attack + + // + // default cvars + // +-viewsize 100 + gamma 1.0 + volume 0.7 + sensitivity 3 + ++//viewsize 100 ++viewsize 110 ++scr_conscale 1.6 ++scr_menuscale 1.6 ++scr_sbarscale 1.6 ++ ++// default to mouse-look enabled +++mlook diff --git a/Misc/qs_pak/gfx/conback.lmp b/Misc/qs_pak/gfx/conback.lmp new file mode 100644 index 0000000000000000000000000000000000000000..09d68e6f3accbb56bef4450e07ba905597042848 GIT binary patch literal 327688 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 literal 0 HcmV?d00001 diff --git a/Misc/qs_pak/maps/e1m1.diff b/Misc/qs_pak/maps/e1m1.diff new file mode 100644 index 0000000..f834b9c --- /dev/null +++ b/Misc/qs_pak/maps/e1m1.diff @@ -0,0 +1,18 @@ +--- e1m1.ent ++++ e1m1@c49d.ent +@@ -715,14 +715,15 @@ + { + "classname" "func_door" + "targetname" "t4" + "angle" "-2" + "spawnflags" "1" + "sounds" "2" + "model" "*15" ++"lip" "7" // svdijk -- added to prevent z-fighting + } + { + "classname" "trigger_multiple" + "target" "t4" + "health" "1" + "model" "*16" + } diff --git a/Misc/qs_pak/maps/e1m1@c49d.ent b/Misc/qs_pak/maps/e1m1@c49d.ent new file mode 100644 index 0000000..3b22d6f --- /dev/null +++ b/Misc/qs_pak/maps/e1m1@c49d.ent @@ -0,0 +1,1970 @@ +{ +"worldtype" "2" +"sounds" "6" +"classname" "worldspawn" +"wad" "gfx/base.wad" +"message" "the Slipgate Complex" +} +{ +"classname" "info_player_start" +"origin" "480 -352 88" +"angle" "90" +} +{ +"classname" "light" +"origin" "480 96 168" +"light" "250" +} +{ +"classname" "light" +"origin" "480 288 168" +"light" "250" +} +{ +"classname" "light" +"origin" "272 96 80" +} +{ +"origin" "272 288 80" +"classname" "light" +} +{ +"classname" "light" +"origin" "272 192 80" +} +{ +"origin" "688 192 80" +"classname" "light_fluorospark" +"style" "10" +} +{ +"style" "10" +"classname" "light" +"origin" "688 288 80" +} +{ +"origin" "688 96 80" +"classname" "light" +"style" "10" +} +{ +"classname" "light" +"origin" "480 -280 168" +"light" "200" +} +{ +"origin" "480 -144 168" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "480 -376 120" +"light" "200" +} +{ +"light" "160" +"origin" "480 -40 168" +"classname" "light" +} +{ +"speed" "400" +"sounds" "2" +"angle" "270" +"classname" "func_door" +"model" "*1" +} +{ +"speed" "400" +"angle" "90" +"classname" "func_door" +"model" "*2" +} +{ +"light" "250" +"origin" "592 544 88" +"classname" "light_fluoro" +} +{ +"origin" "456 600 104" +"classname" "light" +} +{ +"light" "180" +"origin" "688 648 136" +"classname" "light" +} +{ +"classname" "light" +"origin" "688 520 136" +"light" "180" +} +{ +"origin" "688 480 80" +"classname" "item_armor1" +} +{ +"angle" "180" +"spawnflags" "768" +"origin" "616 72 40" +"classname" "monster_army" +} +{ +"light" "250" +"origin" "0 576 120" +"classname" "light" +} +{ +"light" "180" +"origin" "160 576 72" +"classname" "light" +} +{ +"light" "200" +"origin" "560 -32 72" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "400 -32 72" +} +{ +"light" "200" +"origin" "0 712 72" +"classname" "light" +} +{ +"classname" "light" +"origin" "0 728 -136" +"light" "200" +} +{ +"light" "200" +"origin" "0 592 -136" +"classname" "light" +} +{ +"wait" "5" +"angle" "-2" +"sounds" "2" +"targetname" "t1" +"classname" "func_door" +"dmg" "10" +"model" "*3" +} +{ +"sounds" "1" +"target" "t1" +"angle" "180" +"classname" "func_button" +"model" "*4" +} +{ +"light" "200" +"origin" "412 780 136" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "328 904 72" +} +{ +"light" "200" +"origin" "168 800 72" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "-72 864 72" +} +{ +"origin" "264 888 -136" +"classname" "light" +} +{ +"classname" "light" +"origin" "-8 992 -136" +"light" "200" +} +{ +"light" "250" +"classname" "light" +"origin" "272 1064 -136" +} +{ +"light" "250" +"origin" "-8 1232 -136" +"classname" "light" +} +{ +"light" "250" +"classname" "light" +"origin" "256 1272 -136" +} +{ +"light" "250" +"origin" "312 1464 -136" +"classname" "light" +} +{ +"light" "200" +"origin" "128 968 72" +"classname" "light" +} +{ +"light" "250" +"classname" "light" +"origin" "-48 1168 72" +} +{ +"light" "250" +"origin" "312 1168 72" +"classname" "light" +} +{ +"light" "220" +"classname" "light" +"origin" "128 1504 -120" +} +{ +"light" "250" +"classname" "light" +"origin" "-56 1464 -136" +} +{ +"sounds" "2" +"classname" "func_door" +"angle" "180" +"speed" "400" +"model" "*5" +} +{ +"classname" "func_door" +"angle" "0" +"speed" "400" +"model" "*6" +} +{ +"classname" "light_fluoro" +"origin" "176 1744 -152" +} +{ +"origin" "80 1744 -152" +"classname" "light_fluoro" +} +{ +"light" "250" +"origin" "-232 1600 -136" +"classname" "light" +} +{ +"light" "250" +"classname" "light" +"origin" "488 1600 -136" +} +{ +"origin" "-56 1448 72" +"classname" "light" +"light" "250" +} +{ +"light" "250" +"classname" "light" +"origin" "312 1448 72" +} +{ +"light" "260" +"classname" "light_fluoro" +"origin" "416 2064 -112" +} +{ +"light" "260" +"origin" "416 1968 -112" +"classname" "light_fluoro" +} +{ +"light" "250" +"origin" "128 1880 -112" +"classname" "light" +} +{ +"origin" "616 1944 -88" +"classname" "light" +} +{ +"style" "10" +"classname" "light_fluorospark" +"origin" "344 2216 -88" +} +{ +"light" "180" +"origin" "352 2016 -112" +"classname" "light" +} +{ +"classname" "light" +"origin" "128 2056 -112" +"light" "250" +} +{ +"light" "250" +"origin" "-112 1984 -112" +"classname" "light" +} +{ +"light" "350" +"origin" "-472 2064 -88" +"classname" "light_fluoro" +} +{ +"classname" "light" +"origin" "-192 2208 8" +"light" "250" +} +{ +"light" "250" +"origin" "-424 2208 8" +"classname" "light" +} +{ +"light" "250" +"origin" "-248 2088 -96" +"classname" "light" +} +{ +"origin" "-200 2384 -72" +"classname" "light" +} +{ +"classname" "light" +"origin" "-424 2384 -72" +} +{ +"light" "200" +"origin" "-448 2408 -128" +"classname" "light" +} +{ +"classname" "light" +"origin" "-176 2408 -128" +"light" "200" +} +{ +"sounds" "1" +"classname" "func_plat" +"model" "*7" +} +{ +"light" "350" +"origin" "-352 2656 184" +"classname" "light" +} +{ +"light" "350" +"classname" "light" +"origin" "-352 2464 184" +} +{ +"origin" "-576 2800 -40" +"classname" "light" +} +{ +"light" "500" +"origin" "160 2920 232" +"classname" "light" +} +{ +"classname" "light" +"origin" "160 2720 232" +"light" "500" +} +{ +"origin" "-288 2992 8" +"classname" "light" +} +{ +"classname" "light" +"origin" "-168 2776 -40" +} +{ +"classname" "light" +"origin" "160 2824 104" +"light" "200" +} +{ +"light" "150" +"origin" "-64 2760 136" +"classname" "light" +} +{ +"light" "200" +"origin" "16 2832 -152" +"classname" "light" +} +{ +"classname" "light" +"origin" "304 2832 -152" +"light" "200" +} +{ +"origin" "504 2816 16" +"classname" "light" +} +{ +"sounds" "3" +"wait" "-1" +"speed" "600" +"targetname" "t2" +"spawnflags" "1" +"angle" "270" +"classname" "func_door" +"model" "*8" +} +{ +"classname" "light" +"origin" "160 2840 -152" +"light" "200" +} +{ +"light" "80" +"origin" "16 2904 -88" +"classname" "light" +} +{ +"classname" "light" +"origin" "304 2904 -88" +"light" "80" +} +{ +"classname" "light" +"origin" "160 2904 -88" +"light" "80" +} +{ +"wait" "-1" +"sounds" "1" +"target" "t2" +"speed" "50" +"angle" "270" +"classname" "func_button" +"model" "*9" +} +{ +"light" "100" +"origin" "0 1800 -32" +"classname" "light" +} +{ +"classname" "light" +"origin" "248 1800 -32" +"light" "100" +} +{ +"style" "32" +"targetname" "t3" +"origin" "8 2352 200" +"classname" "light" +} +{ +"style" "32" +"targetname" "t3" +"classname" "light" +"origin" "32 2392 200" +} +{ +"style" "32" +"targetname" "t3" +"origin" "56 2352 200" +"classname" "light" +} +{ +"style" "32" +"targetname" "t3" +"classname" "light" +"origin" "32 2312 200" +} +{ +"style" "32" +"targetname" "t3" +"light" "200" +"origin" "32 2352 88" +"classname" "light" +} +{ +"spawnflags" "2048" +"origin" "112 2352 16" +"classname" "weapon_nailgun" +} +{ +"sounds" "3" +"targetname" "t3" +"spawnflags" "3" +"angle" "270" +"classname" "func_door_secret" +"model" "*10" +} +{ +"style" "32" +"sounds" "3" +"target" "t3" +"classname" "trigger_once" +"model" "*11" +} +{ +"origin" "304 2368 96" +"classname" "light" +} +{ +"angle" "180" +"origin" "248 2392 40" +"classname" "monster_army" +} +{ +"origin" "272 2352 64" +"classname" "item_spikes" +} +{ +"style" "32" +"sounds" "3" +"target" "t3" +"classname" "trigger_once" +"model" "*12" +} +{ +"origin" "832 2608 16" +"classname" "light" +"light" "220" +} +{ +"light" "220" +"classname" "light" +"origin" "832 2480 0" +} +{ +"light" "240" +"origin" "800 2816 24" +"classname" "light" +} +{ +"style" "33" +"targetname" "t11" +"spawnflags" "1" +"classname" "light" +"origin" "752 2000 -88" +"light" "400" +} +{ +"style" "34" +"spawnflags" "1" +"targetname" "t12" +"origin" "1280 2000 -152" +"classname" "light" +"light" "400" +} +{ +"style" "35" +"spawnflags" "1" +"targetname" "t13" +"classname" "light" +"origin" "1280 2496 -216" +"light" "400" +} +{ +"style" "36" +"spawnflags" "1" +"targetname" "t14" +"origin" "784 2496 -280" +"classname" "light" +} +{ +"classname" "light" +"origin" "1368 2584 -488" +"light" "200" +} +{ +"origin" "1368 1944 -488" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "696 2584 -488" +"light" "150" +} +{ +"origin" "1016 2584 -488" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "1016 1944 -488" +"light" "200" +} +{ +"origin" "1368 2272 -488" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "696 2272 -488" +"light" "200" +} +{ +"classname" "light" +"origin" "960 2296 -488" +"light" "200" +} +{ +"light" "200" +"origin" "1032 2352 -488" +"classname" "light" +} +{ +"classname" "light" +"origin" "888 2352 -488" +"light" "200" +} +{ +"light" "200" +"origin" "960 2408 -488" +"classname" "light" +} +{ +"light" "100" +"classname" "light" +"origin" "984 2448 -304" +} +{ +"classname" "light" +"origin" "832 2360 112" +"light" "400" +} +{ +"classname" "light" +"origin" "1144 2448 -488" +} +{ +"origin" "1232 2360 -488" +"classname" "light" +} +{ +"classname" "light" +"origin" "1320 2448 -488" +"light" "200" +} +{ +"light" "200" +"origin" "1232 2536 -488" +"classname" "light" +} +{ +"classname" "light" +"origin" "1232 2136 -488" +} +{ +"origin" "1144 2048 -488" +"classname" "light" +} +{ +"classname" "light" +"origin" "1232 1960 -488" +"light" "200" +} +{ +"light" "200" +"origin" "1320 2048 -488" +"classname" "light" +} +{ +"classname" "light" +"origin" "832 2336 -200" +} +{ +"classname" "func_door_secret" +"angle" "90" +"spawnflags" "2" +"sounds" "3" +"model" "*13" +} +{ +"classname" "func_door_secret" +"angle" "180" +"sounds" "3" +"model" "*14" +} +{ +"classname" "light" +"origin" "552 2480 -56" +"light" "200" +} +{ +"light" "200" +"origin" "544 2296 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "664 2480 -56" +"light" "200" +} +{ +"classname" "func_door" +"targetname" "t4" +"angle" "-2" +"spawnflags" "1" +"sounds" "2" +"model" "*15" +"lip" "7" // svdijk -- added to prevent z-fighting +} +{ +"classname" "trigger_multiple" +"target" "t4" +"health" "1" +"model" "*16" +} +{ +"spawnflags" "2048" +"classname" "func_door" +"angle" "90" +"targetname" "t5" +"wait" "-1" +"sounds" "2" +"model" "*17" +} +{ +"spawnflags" "2048" +"classname" "trigger_once" +"target" "t5" +"model" "*18" +} +{ +"classname" "item_artifact_super_damage" +"origin" "544 2480 -88" +} +{ +"classname" "light" +"origin" "832 2104 -208" +} +{ +"classname" "light" +"origin" "832 2048 -368" +"light" "150" +} +{ +"classname" "light" +"origin" "1120 2464 112" +} +{ +"origin" "1120 2080 112" +"classname" "light" +} +{ +"classname" "light" +"origin" "752 2080 112" +"light" "200" +} +{ +"classname" "light" +"origin" "1048 2280 -72" +} +{ +"classname" "func_button" +"angle" "270" +"target" "t1" +"model" "*19" +} +{ +"classname" "light" +"origin" "1136 1848 -504" +"light" "220" +} +{ +"origin" "1136 1672 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "1008 1672 -504" +"light" "220" +} +{ +"origin" "1008 1848 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "1288 1848 -504" +"light" "220" +} +{ +"origin" "1400 1584 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "1224 1584 -504" +"light" "220" +} +{ +"origin" "1400 1736 -504" +"classname" "light" +"light" "220" +} +{ +"origin" "880 1672 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "744 1672 -504" +"light" "220" +} +{ +"classname" "light" +"origin" "1312 1648 -392" +"light" "220" +} +{ +"light" "170" +"origin" "1312 1520 -392" +"classname" "light" +} +{ +"classname" "light" +"origin" "1200 1760 -392" +"light" "220" +} +{ +"light" "170" +"origin" "1072 1760 -392" +"classname" "light" +} +{ +"classname" "light" +"origin" "944 1760 -392" +"light" "170" +} +{ +"origin" "832 1992 -208" +"classname" "light" +"light" "220" +} +{ +"origin" "744 1832 -504" +"classname" "light" +} +{ +"light" "170" +"origin" "832 1760 -392" +"classname" "light" +} +{ +"light" "220" +"origin" "680 1936 -504" +"classname" "light" +} +{ +"classname" "light" +"origin" "1312 1392 -352" +"light" "170" +} +{ +"light" "170" +"origin" "1312 1264 -288" +"classname" "light" +} +{ +"classname" "light" +"origin" "1312 1136 -232" +} +{ +"origin" "1224 1456 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "1400 1456 -504" +"light" "220" +} +{ +"origin" "1400 1328 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "1224 1328 -504" +"light" "220" +} +{ +"origin" "1224 1200 -504" +"classname" "light" +"light" "220" +} +{ +"classname" "light" +"origin" "1400 1200 -504" +"light" "220" +} +{ +"origin" "1312 960 -208" +"classname" "light" +} +{ +"classname" "trigger_teleport" +"target" "t6" +"model" "*20" +} +{ +"classname" "light" +"origin" "1312 912 -472" +} +{ +"classname" "light" +"origin" "1312 1080 -368" +} +{ +"classname" "light" +"origin" "1128 1064 -504" +"light" "170" +} +{ +"origin" "1128 856 -504" +"classname" "light" +"light" "170" +} +{ +"classname" "light" +"origin" "1496 856 -504" +"light" "170" +} +{ +"origin" "1496 1064 -504" +"classname" "light" +"light" "170" +} +{ +"classname" "light" +"origin" "1312 776 -504" +"light" "170" +} +{ +"spawnflags" "2" +"angle" "90" +"classname" "func_door_secret" +"model" "*21" +} +{ +"origin" "1072 1024 -168" +"classname" "light" +} +{ +"spawnflags" "1" +"height" "400" +"angle" "-1" +"sounds" "1" +"classname" "func_plat" +"model" "*22" +} +{ +"targetname" "t8" +"spawnflags" "2" +"angle" "90" +"classname" "func_door_secret" +"model" "*23" +} +{ +"target" "t8" +"classname" "trigger_multiple" +"model" "*24" +} +{ +"light" "220" +"origin" "792 888 -248" +"classname" "light" +} +{ +"light" "180" +"classname" "light" +"origin" "944 608 -248" +} +{ +"light" "150" +"origin" "792 512 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "792 512 -56" +"light" "150" +} +{ +"classname" "light" +"origin" "624 928 -240" +"light" "220" +} +{ +"light" "220" +"origin" "504 1200 -248" +"classname" "light" +} +{ +"origin" "936 800 -248" +"classname" "light" +"light" "180" +} +{ +"light" "180" +"classname" "light" +"origin" "960 984 -208" +} +{ +"classname" "light" +"origin" "792 512 128" +"light" "150" +} +{ +"spawnflags" "2" +"origin" "944 1008 -272" +"classname" "item_health" +} +{ +"spawnflags" "1792" +"origin" "144 2352 16" +"classname" "weapon_rocketlauncher" +} +{ +"spawnflags" "1792" +"origin" "1216 1040 -432" +"classname" "weapon_grenadelauncher" +} +{ +"spawnflags" "1793" +"origin" "1392 1024 -432" +"classname" "item_rockets" +} +{ +"targetname" "t6" +"origin" "-32 1800 -56" +"classname" "info_teleport_destination" +} +{ +"spawnflags" "1792" +"origin" "832 2448 -368" +"classname" "weapon_supernailgun" +} +{ +"spawnflags" "1792" +"origin" "128 1216 -208" +"classname" "weapon_supershotgun" +} +{ +"origin" "296 2136 -192" +"classname" "item_shells" +} +{ +"spawnflags" "1" +"origin" "1424 904 -432" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "1376 808 -432" +} +{ +"origin" "1176 936 -432" +"classname" "item_health" +} +{ +"spawnflags" "2048" +"target" "t9" +"wait" "-1" +"angle" "0" +"classname" "func_button" +"model" "*25" +} +{ +"spawnflags" "2048" +"target" "t9" +"wait" "-1" +"angle" "90" +"classname" "func_button" +"model" "*26" +} +{ +"spawnflags" "2048" +"target" "t9" +"wait" "-1" +"angle" "270" +"classname" "func_button" +"model" "*27" +} +{ +"target" "t10" +"targetname" "t9" +"count" "3" +"classname" "trigger_counter" +"model" "*28" +} +{ +"message" "You must press the three buttons..." +"spawnflags" "2048" +"sounds" "2" +"wait" "-1" +"targetname" "t10" +"angle" "180" +"classname" "func_door" +"model" "*29" +} +{ +"light" "150" +"origin" "832 1928 -384" +"classname" "light" +} +{ +"style" "33" +"sounds" "3" +"target" "t11" +"classname" "trigger_once" +"model" "*30" +} +{ +"style" "34" +"sounds" "3" +"target" "t12" +"classname" "trigger_once" +"model" "*31" +} +{ +"style" "35" +"sounds" "3" +"target" "t13" +"classname" "trigger_once" +"model" "*32" +} +{ +"style" "36" +"sounds" "3" +"target" "t14" +"classname" "trigger_once" +"model" "*33" +} +{ +"sounds" "1" +"wait" "-1" +"targetname" "t11" +"spawnflags" "1" +"angle" "-2" +"classname" "func_door" +"model" "*34" +} +{ +"targetname" "t12" +"classname" "func_door" +"angle" "-2" +"spawnflags" "1" +"wait" "-1" +"sounds" "1" +"model" "*35" +} +{ +"targetname" "t13" +"sounds" "1" +"wait" "-1" +"spawnflags" "1" +"angle" "-2" +"classname" "func_door" +"model" "*36" +} +{ +"targetname" "t14" +"classname" "func_door" +"angle" "-2" +"spawnflags" "1" +"wait" "-1" +"sounds" "1" +"model" "*37" +} +{ +"angle" "90" +"origin" "1312 880 -248" +"classname" "info_player_deathmatch" +} +{ +"spawnflags" "1" +"origin" "1376 1024 -272" +"classname" "item_spikes" +} +{ +"origin" "1184 992 -272" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "1376 856 -272" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "1256 1704 -432" +"classname" "item_health" +} +{ +"angle" "90" +"origin" "480 48 24" +"classname" "info_player_deathmatch" +} +{ +"angle" "180" +"origin" "528 1888 -168" +"classname" "info_player_deathmatch" +} +{ +"angle" "0" +"origin" "-272 2928 -56" +"classname" "info_player_deathmatch" +} +{ +"angle" "0" +"origin" "832 2048 -152" +"classname" "info_player_deathmatch" +} +{ +"speed" "300" +"message" "This door opens elsewhere..." +"spawnflags" "2048" +"targetname" "t15" +"angle" "270" +"classname" "func_door" +"wait" "-1" +"model" "*38" +} +{ +"spawnflags" "2048" +"target" "t15" +"classname" "trigger_once" +"model" "*39" +} +{ +"spawnflags" "1792" +"origin" "480 576 0" +"classname" "weapon_nailgun" +} +{ +"spawnflags" "1793" +"origin" "464 728 64" +"classname" "item_spikes" +} +{ +"origin" "328 848 -224" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "344 920 -224" +} +{ +"spawnflags" "1" +"origin" "-16 2064 -208" +"classname" "item_health" +} +{ +"spawnflags" "1792" +"origin" "-480 2240 -160" +"classname" "item_rockets" +} +{ +"spawnflags" "1793" +"origin" "-96 2456 16" +"classname" "item_shells" +} +{ +"classname" "item_rockets" +"origin" "-104 2216 16" +"spawnflags" "1793" +} +{ +"classname" "item_artifact_invulnerability" +"origin" "256 1808 -40" +"spawnflags" "1792" +} +{ +"classname" "monster_army" +"origin" "0 576 24" +"angle" "0" +"spawnflags" "256" +} +{ +"classname" "monster_army" +"origin" "8 1520 -200" +"angle" "270" +} +{ +"classname" "monster_dog" +"origin" "88 1520 -200" +"angle" "270" +} +{ +"classname" "monster_army" +"origin" "224 1552 -200" +"angle" "270" +"spawnflags" "768" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "-8 936 -200" +"classname" "monster_army" +} +{ +"classname" "monster_army" +"origin" "648 736 104" +"spawnflags" "768" +"angle" "180" +} +{ +"classname" "item_artifact_envirosuit" +"origin" "712 2040 -408" +"angle" "90" +} +{ +"classname" "light" +"origin" "712 2040 -360" +"light" "100" +} +{ +"classname" "item_rockets" +"origin" "1328 2536 -528" +"spawnflags" "1793" +} +{ +"classname" "item_health" +"origin" "916 2416 -136" +"spawnflags" "2" +} +{ +"spawnflags" "1" +"classname" "monster_army" +"origin" "1312 936 -248" +"angle" "90" +} +{ +"classname" "monster_dog" +"origin" "1336 1784 -408" +"angle" "180" +"spawnflags" "257" +} +{ +"spawnflags" "257" +"angle" "90" +"origin" "1392 928 -248" +"classname" "monster_army" +} +{ +"classname" "monster_army" +"origin" "1384 1008 -248" +"angle" "90" +"spawnflags" "768" +} +{ +"spawnflags" "768" +"angle" "90" +"origin" "1240 1008 -248" +"classname" "monster_army" +} +{ +"classname" "monster_army" +"origin" "1256 1760 -408" +"angle" "180" +"spawnflags" "257" +} +{ +"classname" "monster_army" +"origin" "824 1784 -408" +"spawnflags" "257" +"angle" "90" +} +{ +"classname" "monster_dog" +"origin" "1128 1760 -408" +"angle" "180" +"spawnflags" "769" +} +{ +"classname" "path_corner" +"origin" "880 2048 -168" +"target" "t16" +"targetname" "t17" +} +{ +"origin" "1232 2048 -232" +"classname" "path_corner" +"targetname" "t16" +"target" "t17" +} +{ +"classname" "monster_army" +"origin" "1232 2088 -216" +"target" "t16" +} +{ +"classname" "monster_army" +"origin" "1232 2448 -280" +"angle" "270" +"spawnflags" "256" +} +{ +"classname" "monster_army" +"origin" "832 2464 -344" +"angle" "0" +"spawnflags" "256" +} +{ +"classname" "monster_army" +"origin" "832 2072 -408" +"angle" "90" +} +{ +"classname" "monster_dog" +"origin" "840 1960 -408" +"angle" "90" +"spawnflags" "768" +} +{ +"classname" "trigger_multiple" +"target" "t18" +"health" "1" +"model" "*40" +} +{ +"classname" "func_door_secret" +"angle" "90" +"spawnflags" "2" +"targetname" "t18" +"model" "*41" +} +{ +"classname" "weapon_supershotgun" +"origin" "-360 2912 -80" +} +{ +"classname" "trigger_multiple" +"target" "t18" +"model" "*42" +} +{ +"classname" "light" +"origin" "-352 2912 -24" +"light" "120" +} +{ +"classname" "light" +"origin" "160 3024 0" +"light" "120" +} +{ +"classname" "item_shells" +"origin" "528 720 80" +} +{ +"classname" "monster_army" +"origin" "416 1912 -168" +"angle" "180" +"spawnflags" "768" +} +{ +"classname" "monster_dog" +"origin" "432 2120 -168" +"angle" "180" +"spawnflags" "256" +} +{ +"classname" "path_corner" +"origin" "248 1992 -200" +"targetname" "t19" +"target" "t20" +} +{ +"origin" "-200 1992 -200" +"classname" "path_corner" +"targetname" "t20" +"target" "t21" +} +{ +"classname" "path_corner" +"origin" "-136 1912 -200" +"targetname" "t21" +"target" "t22" +} +{ +"origin" "248 1912 -200" +"classname" "path_corner" +"target" "t19" +"targetname" "t22" +} +{ +"classname" "monster_army" +"origin" "80 2024 -184" +"target" "t20" +} +{ +"classname" "monster_army" +"origin" "-16 1888 -184" +"spawnflags" "256" +"target" "t22" +} +{ +"classname" "monster_dog" +"origin" "-248 2144 -136" +"spawnflags" "768" +"angle" "315" +} +{ +"classname" "path_corner" +"origin" "-560 2352 40" +"targetname" "t23" +"target" "t24" +} +{ +"origin" "-104 2352 40" +"classname" "path_corner" +"target" "t23" +"targetname" "t24" +} +{ +"classname" "monster_army" +"origin" "-432 2352 56" +"spawnflags" "768" +"target" "t23" +} +{ +"angle" "0" +"classname" "monster_dog" +"origin" "-544 2584 56" +"spawnflags" "256" +} +{ +"classname" "monster_army" +"origin" "-344 2656 -104" +"angle" "270" +} +{ +"classname" "monster_dog" +"origin" "-72 2896 -56" +"spawnflags" "256" +"angle" "225" +} +{ +"classname" "monster_army" +"origin" "432 2920 -56" +"target" "t25" +} +{ +"classname" "monster_army" +"origin" "424 2832 -56" +"spawnflags" "256" +"angle" "180" +} +{ +"classname" "path_corner" +"origin" "368 2936 -72" +"targetname" "t25" +"target" "t26" +} +{ +"origin" "368 2696 -72" +"classname" "path_corner" +"targetname" "t26" +"target" "t27" +} +{ +"classname" "path_corner" +"origin" "480 2696 -72" +"targetname" "t27" +"target" "t28" +} +{ +"origin" "480 2936 -72" +"classname" "path_corner" +"target" "t25" +"targetname" "t28" +} +{ +"classname" "monster_army" +"origin" "424 2672 -56" +"target" "t27" +} +{ +"classname" "monster_army" +"origin" "424 2880 -56" +"angle" "180" +"spawnflags" "768" +} +{ +"classname" "monster_army" +"origin" "424 2760 -56" +"spawnflags" "768" +"angle" "180" +} +{ +"classname" "path_corner" +"origin" "832 2712 -88" +"targetname" "t29" +"target" "t30" +} +{ +"origin" "832 2416 -104" +"classname" "path_corner" +"target" "t29" +"targetname" "t30" +} +{ +"classname" "monster_army" +"origin" "848 2584 -72" +"spawnflags" "257" +"target" "t29" +} +{ +"classname" "monster_army" +"origin" "824 2008 -152" +"angle" "90" +"spawnflags" "768" +} +{ +"classname" "item_health" +"origin" "-376 1704 -224" +"spawnflags" "1" +} +{ +"angle" "180" +"spawnflags" "768" +"origin" "248 2352 40" +"classname" "monster_army" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "-72 2464 40" +"classname" "monster_army" +} +{ +"spawnflags" "768" +"angle" "225" +"origin" "904 1024 -248" +"classname" "monster_army" +} +{ +"light" "100" +"style" "10" +"classname" "light" +"origin" "688 0 80" +} +{ +"message" "Shoot this secret door..." +"spawnflags" "1" +"angle" "0" +"classname" "func_door_secret" +"model" "*43" +} +{ +"origin" "672 -40 48" +"classname" "item_shells" +} +{ +"classname" "trigger_secret" +"model" "*44" +} +{ +"classname" "trigger_secret" +"model" "*45" +} +{ +"classname" "trigger_secret" +"model" "*46" +} +{ +"classname" "trigger_secret" +"model" "*47" +} +{ +"classname" "trigger_secret" +"model" "*48" +} +{ +"classname" "trigger_secret" +"model" "*49" +} +{ +"light" "100" +"origin" "0 632 -88" +"classname" "light" +} +{ +"classname" "item_health" +"origin" "600 2200 -128" +"spawnflags" "1" +} +{ +"light" "220" +"classname" "light" +"origin" "832 1880 -504" +} +{ +"origin" "72 2056 -208" +"classname" "misc_explobox" +} +{ +"light" "200" +"origin" "-128 584 72" +"classname" "light" +} +{ +"light" "200" +"origin" "-128 568 -136" +"classname" "light" +} +{ +"light" "100" +"origin" "-56 632 -168" +"classname" "light" +} +{ +"light" "200" +"origin" "-56 864 -136" +"classname" "light" +} +{ +"light" "200" +"origin" "40 1672 -40" +"classname" "light" +} +{ +"classname" "light" +"origin" "216 1672 -40" +"light" "200" +} +{ +"classname" "light" +"origin" "128 1080 -152" +"light" "200" +} +{ +"light" "200" +"origin" "128 1096 72" +"classname" "light" +} +{ +"light" "250" +"classname" "light" +"origin" "-352 1656 72" +} +{ +"origin" "608 1640 72" +"classname" "light" +"light" "250" +} +{ +"origin" "-48 1144 -320" +"classname" "light" +"light" "170" +} +{ +"light" "170" +"classname" "light" +"origin" "-48 1256 -320" +} +{ +"origin" "320 1256 -320" +"classname" "light" +"light" "170" +} +{ +"light" "170" +"classname" "light" +"origin" "312 1128 -320" +} +{ +"origin" "136 1128 -320" +"classname" "light" +"light" "170" +} +{ +"light" "170" +"classname" "light" +"origin" "136 1272 -320" +} +{ +"spawnflags" "3072" +"wait" "5" +"sounds" "2" +"message" "You can jump across..." +"classname" "trigger_multiple" +"targetname" "t32" +"model" "*50" +} +{ +"spawnflags" "3072" +"wait" "5" +"message" "You can jump up here..." +"sounds" "2" +"classname" "trigger_multiple" +"targetname" "t31" +"model" "*51" +} +{ +"light" "150" +"origin" "1008 2128 -408" +"classname" "light" +} +{ +"light" "250" +"origin" "1312 544 -184" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "1208 456 -184" +} +{ +"origin" "1416 456 -184" +"classname" "light" +"light" "200" +} +{ +"light" "170" +"origin" "1312 728 -56" +"classname" "light" +} +{ +"map" "e1m2" +"classname" "trigger_changelevel" +"model" "*52" +} +{ +"classname" "item_health" +"origin" "1224 2464 -304" +"spawnflags" "1" +} +{ +"classname" "light" +"origin" "688 1680 -160" +"light" "160" +} +{ +"light" "160" +"origin" "-392 1688 -160" +"classname" "light" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "288 1536 -200" +"classname" "monster_army" +} +{ +"spawnflags" "768" +"origin" "968 2432 -112" +"classname" "monster_army" +} +{ +"wait" "5" +"message" "Walk into the slipgate to exit." +"classname" "trigger_multiple" +"sounds" "2" +"angle" "270" +"model" "*53" +} +{ +"classname" "trigger_once" +"killtarget" "t31" +"target" "t31" +"spawnflags" "3072" +"model" "*54" +} +{ +"classname" "trigger_once" +"spawnflags" "3072" +"target" "t32" +"killtarget" "t32" +"model" "*55" +} +{ +"classname" "item_armor2" +"origin" "1312 1048 -432" +} +{ +"classname" "ambient_comp_hum" +"origin" "250 194 72" +} +{ +"origin" "714 194 72" +"classname" "ambient_comp_hum" +} +{ +"classname" "ambient_comp_hum" +"origin" "626 2058 -104" +} +{ +"origin" "466 2226 -104" +"classname" "ambient_comp_hum" +} +{ +"classname" "info_intermission" +"origin" "-112 704 56" +"mangle" "20 45 0" +} +{ +"classname" "info_intermission" +"origin" "-208 2736 192" +"mangle" "20 225 0" +} +{ +"classname" "info_intermission" +"origin" "240 2664 104" +"mangle" "20 120 0" +} +{ +"classname" "info_intermission" +"origin" "1376 1936 64" +"mangle" "20 135 0" +} +{ +"angle" "90" +"origin" "528 -296 72" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "432 -296 72" +"angle" "90" +} +{ +"angle" "90" +"origin" "480 -240 72" +"classname" "info_player_coop" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*56" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*57" +} +{ +"classname" "ambient_drone" +"origin" "1314 450 -200" +} diff --git a/Misc/qs_pak/maps/e1m2.diff b/Misc/qs_pak/maps/e1m2.diff new file mode 100644 index 0000000..4080898 --- /dev/null +++ b/Misc/qs_pak/maps/e1m2.diff @@ -0,0 +1,28 @@ +--- e1m2.ent ++++ e1m2@0caa.ent +@@ -1567,23 +1567,23 @@ + { + "light" "200" + "origin" "-612 -500 548" + "classname" "light" + } + { + "classname" "func_door" +-"angle" "90" ++"angle" "91" // svdijk -- changed to prevent z-fighting (was "90") + "targetname" "t110" + "wait" "-1" + "model" "*33" + } + { + "sounds" "3" + "classname" "func_door" +-"angle" "270" ++"angle" "269" // svdijk -- changed to prevent z-fighting (was "270") + "wait" "-1" + "model" "*34" + } + { + "classname" "trigger_once" + "target" "t110" + "model" "*35" diff --git a/Misc/qs_pak/maps/e1m2@0caa.ent b/Misc/qs_pak/maps/e1m2@0caa.ent new file mode 100644 index 0000000..2e04e9f --- /dev/null +++ b/Misc/qs_pak/maps/e1m2@0caa.ent @@ -0,0 +1,3019 @@ +{ +"message" "Castle of the Damned" +"wad" "gfx/wizard.wad" +"classname" "worldspawn" +"worldtype" "0" +"sounds" "8" +} +{ +"angle" "270" +"origin" "1496 1664 296" +"classname" "info_player_start" +} +{ +"origin" "1432 672 336" +"classname" "light" +"light" "250" +} +{ +"light" "200" +"origin" "1496 888 272" +"classname" "light" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "932 640 340" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1104 812 340" +} +{ +"classname" "light" +"origin" "1104 640 544" +"light" "300" +} +{ +"light" "175" +"origin" "1216 536 353" +"classname" "light" +} +{ +"light" "250" +"origin" "1816 328 448" +"classname" "light" +} +{ +"light" "200" +"origin" "1632 472 208" +"classname" "light" +} +{ +"light" "200" +"origin" "1792 -392 240" +"classname" "light" +} +{ +"light" "200" +"origin" "1452 -124 508" +"classname" "light" +} +{ +"light" "150" +"origin" "1196 -124 508" +"classname" "light" +} +{ +"light" "150" +"origin" "1044 -124 508" +"classname" "light" +} +{ +"light" "200" +"origin" "756 -124 508" +"classname" "light" +} +{ +"light" "250" +"origin" "744 336 145" +"classname" "light" +} +{ +"light" "200" +"origin" "1176 -912 672" +"classname" "light" +} +{ +"origin" "1328 -544 552" +"classname" "light" +} +{ +"classname" "light" +"origin" "1528 -912 640" +"light" "200" +} +{ +"light" "200" +"classname" "light" +"origin" "880 -648 672" +} +{ +"origin" "240 -264 392" +"classname" "light" +"light" "250" +} +{ +"classname" "light" +"origin" "-352 -504 464" +"light" "200" +} +{ +"origin" "-448 -608 804" +"classname" "light" +"light" "450" +} +{ +"light" "250" +"origin" "776 -912 472" +"classname" "light" +} +{ +"light" "300" +"origin" "1630 -806 428" +"classname" "light_torch_small_walltorch" +} +{ +"light" "150" +"origin" "1528 -912 464" +"classname" "light" +} +{ +"classname" "light" +"origin" "1180 -484 560" +} +{ +"classname" "light" +"origin" "1184 -612 560" +} +{ +"classname" "light" +"origin" "1016 -368 472" +"light" "100" +} +{ +"classname" "light" +"origin" "1016 -464 472" +"light" "100" +} +{ +"classname" "light" +"origin" "1020 -560 472" +"light" "100" +} +{ +"classname" "light" +"origin" "1208 -776 472" +"light" "100" +} +{ +"classname" "light" +"origin" "1288 -776 472" +"light" "100" +} +{ +"classname" "light" +"origin" "1360 -776 472" +"light" "100" +} +{ +"light" "200" +"origin" "1792 120 376" +"classname" "light" +} +{ +"origin" "1538 182 356" +"classname" "light_torch_small_walltorch" +} +{ +"light" "200" +"origin" "1640 80 360" +"classname" "light" +} +{ +"light" "200" +"origin" "1928 80 360" +"classname" "light" +} +{ +"light" "250" +"origin" "1792 296 208" +"classname" "light" +} +{ +"light" "150" +"origin" "1800 40 160" +"classname" "light" +} +{ +"light" "200" +"origin" "1776 -392 160" +"classname" "light" +} +{ +"light" "200" +"origin" "1304 -392 152" +"classname" "light" +} +{ +"light" "250" +"origin" "1632 112 136" +"classname" "light" +} +{ +"light" "250" +"origin" "1432 312 136" +"classname" "light" +} +{ +"light" "200" +"origin" "1136 -656 160" +"classname" "light" +} +{ +"light" "200" +"origin" "1136 -416 160" +"classname" "light" +} +{ +"light" "250" +"origin" "1448 -552 160" +"classname" "light" +} +{ +"light" "200" +"origin" "1920 440 136" +"classname" "light" +} +{ +"light" "200" +"origin" "968 88 177" +"classname" "light" +} +{ +"light" "300" +"origin" "1088 312 129" +"classname" "light" +} +{ +"light" "150" +"origin" "1376 168 129" +"classname" "light" +} +{ +"light" "250" +"origin" "112 -384 392" +"classname" "light" +} +{ +"origin" "300 -1004 508" +"classname" "light" +} +{ +"origin" "296 -812 505" +"classname" "light" +} +{ +"origin" "300 -1204 505" +"classname" "light" +} +{ +"light" "150" +"origin" "470 -1006 468" +"classname" "light_torch_small_walltorch" +} +{ +"light" "250" +"origin" "984 -1216 496" +"classname" "light" +} +{ +"light" "250" +"origin" "888 -1128 552" +"classname" "light" +} +{ +"light" "200" +"origin" "800 -1216 592" +"classname" "light" +} +{ +"light" "200" +"origin" "664 -1216 592" +"classname" "light" +} +{ +"light" "200" +"origin" "584 -1136 592" +"classname" "light" +} +{ +"light" "200" +"origin" "584 -968 592" +"classname" "light" +} +{ +"light" "250" +"origin" "584 -744 592" +"classname" "light" +} +{ +"light" "200" +"origin" "528 -1144 464" +"classname" "light" +} +{ +"light" "200" +"origin" "528 -856 464" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "1496 1544 440" +} +{ +"origin" "1384 1392 440" +"classname" "light" +"light" "250" +} +{ +"origin" "1496 1104 520" +"classname" "light" +} +{ +"origin" "1608 1400 440" +"classname" "light" +"light" "250" +} +{ +"light" "250" +"origin" "1240 1712 360" +"classname" "light" +} +{ +"light" "250" +"origin" "1744 1696 360" +"classname" "light" +} +{ +"classname" "light" +"origin" "1384 1136 440" +"light" "250" +} +{ +"classname" "light" +"origin" "1608 1144 440" +"light" "250" +} +{ +"classname" "path_corner" +"origin" "1168 736 296" +"targetname" "t5" +"target" "t6" +} +{ +"classname" "path_corner" +"origin" "992 744 296" +"targetname" "t6" +"target" "t7" +} +{ +"classname" "path_corner" +"origin" "1000 544 296" +"targetname" "t7" +"target" "t34" +} +{ +"classname" "item_health" +"origin" "960 704 288" +} +{ +"classname" "item_shells" +"origin" "952 512 288" +} +{ +"classname" "path_corner" +"origin" "1344 -128 304" +"targetname" "t9" +"target" "t8" +} +{ +"classname" "path_corner" +"origin" "898 -128 304" +"targetname" "t8" +"target" "t9" +} +{ +"spawnflags" "1" +"classname" "monster_ogre" +"origin" "1018 -126 320" +"angle" "0" +"target" "t8" +} +{ +"classname" "item_health" +"origin" "1344 -224 296" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "1400 -224 296" +"spawnflags" "1" +} +{ +"origin" "1528 192 296" +"classname" "item_shells" +} +{ +"classname" "path_corner" +"origin" "1496 1040 184" +"targetname" "t22" +"target" "t23" +} +{ +"classname" "path_corner" +"origin" "1496 840 248" +"targetname" "t23" +"target" "t33" +} +{ +"spawnflags" "1" +"classname" "item_shells" +"origin" "1056 -648 288" +} +{ +"classname" "item_health" +"origin" "1184 -736 288" +} +{ +"spawnflags" "257" +"classname" "monster_army" +"origin" "1646 -698 360" +"angle" "180" +"targetname" "t89" +} +{ +"classname" "path_corner" +"origin" "1400 640 272" +"targetname" "t30" +"target" "t79" +} +{ +"classname" "path_corner" +"origin" "1496 752 232" +"targetname" "t33" +"target" "t77" +} +{ +"classname" "path_corner" +"origin" "1192 560 296" +"targetname" "t34" +"target" "t80" +} +{ +"classname" "item_shells" +"origin" "1616 1280 176" +} +{ +"classname" "item_health" +"origin" "1056 -840 416" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "1104 -840 416" +"spawnflags" "1" +} +{ +"spawnflags" "1" +"classname" "monster_army" +"origin" "262 -458 320" +"angle" "0" +"target" "t96" +} +{ +"spawnflags" "1024" +"classname" "item_health" +"origin" "136 -296 296" +} +{ +"classname" "path_corner" +"origin" "-536 -704 472" +"targetname" "t42" +"target" "t41" +} +{ +"classname" "path_corner" +"origin" "-576 -416 472" +"targetname" "t41" +"target" "t42" +} +{ +"classname" "monster_knight" +"origin" "-578 -654 480" +"target" "t41" +"spawnflags" "1" +} +{ +"classname" "item_shells" +"origin" "-368 -752 456" +} +{ +"classname" "item_health" +"origin" "-16 -520 360" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "-16 -576 360" +"spawnflags" "1" +} +{ +"classname" "light" +"origin" "1848 -568 320" +"light" "200" +} +{ +"classname" "light" +"origin" "1760 -560 408" +"light" "200" +} +{ +"classname" "light" +"origin" "1624 -560 352" +"light" "150" +} +{ +"targetname" "t43" +"angle" "270" +"origin" "800 368 312" +"classname" "info_teleport_destination" +} +{ +"origin" "752 168 296" +"classname" "item_health" +} +{ +"target" "t43" +"classname" "trigger_teleport" +"model" "*1" +} +{ +"origin" "1712 -568 256" +"classname" "item_health" +} +{ +"classname" "monster_ogre" +"origin" "1494 1134 208" +"angle" "270" +"target" "t22" +} +{ +"light" "300" +"origin" "1856 1288 384" +"classname" "light" +} +{ +"classname" "light" +"origin" "1136 1288 384" +} +{ +"light" "200" +"origin" "1920 328 380" +"classname" "light" +} +{ +"target" "t122" +"spawnflags" "2048" +"sounds" "1" +"classname" "item_key1" +"origin" "880 -300 464" +} +{ +"light" "300" +"origin" "648 -384 430" +"classname" "light_flame_small_yellow" +} +{ +"light" "250" +"classname" "light_flame_small_yellow" +"origin" "1104 -224 406" +} +{ +"light" "250" +"origin" "1456 -128 406" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light" +"origin" "988 532 353" +"light" "175" +} +{ +"light" "125" +"origin" "1100 648 328" +"classname" "light" +} +{ +"origin" "1616 936 310" +"classname" "light_flame_small_yellow" +"light" "300" +} +{ +"light" "300" +"classname" "light_flame_small_yellow" +"origin" "1360 936 310" +} +{ +"origin" "1792 504 390" +"classname" "light_flame_small_yellow" +"light" "300" +} +{ +"origin" "1972 -252 332" +"classname" "info_null" +"targetname" "t47" +} +{ +"light" "800" +"origin" "1992 -252 336" +"classname" "light" +"target" "t47" +} +{ +"classname" "info_null" +"origin" "1948 -292 332" +"targetname" "t48" +} +{ +"light" "800" +"classname" "light" +"origin" "1948 -312 336" +"target" "t48" +} +{ +"origin" "880 -328 562" +"classname" "light_flame_small_yellow" +"light" "300" +} +{ +"classname" "light" +"origin" "1056 -1288 504" +} +{ +"origin" "1184 -1288 504" +"classname" "light" +} +{ +"classname" "light" +"origin" "1312 -1288 504" +} +{ +"origin" "1440 -1288 504" +"classname" "light" +} +{ +"sounds" "1" +"classname" "func_door" +"angle" "-2" +"wait" "-1" +"targetname" "t50" +"model" "*2" +} +{ +"sounds" "1" +"classname" "func_door" +"wait" "-1" +"angle" "-2" +"targetname" "t50" +"model" "*3" +} +{ +"classname" "trigger_once" +"target" "t50" +"model" "*4" +} +{ +"classname" "light" +"origin" "1368 -1016 504" +"light" "200" +} +{ +"light" "200" +"origin" "1120 -1024 504" +"classname" "light" +} +{ +"classname" "light" +"origin" "1248 -1184 464" +"light" "175" +} +{ +"classname" "light" +"origin" "776 -480 480" +"light" "225" +} +{ +"classname" "light" +"origin" "1904 -144 168" +"light" "200" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1706 -206 316" +"light" "300" +} +{ +"light" "300" +"origin" "2134 -34 316" +"classname" "light_torch_small_walltorch" +} +{ +"origin" "1152 -296 422" +"classname" "light_flame_small_yellow" +"light" "250" +} +{ +"light" "250" +"classname" "light_flame_small_yellow" +"origin" "1152 -760 422" +} +{ +"origin" "1528 -556 478" +"classname" "light_flame_small_yellow" +"light" "250" +} +{ +"targetname" "t52" +"origin" "1532 -552 328" +"classname" "info_null" +} +{ +"origin" "1340 -544 384" +"classname" "item_armor2" +} +{ +"sounds" "1" +"targetname" "t53" +"lip" "64" +"wait" "-1" +"angle" "-1" +"classname" "func_door" +"model" "*5" +} +{ +"sounds" "1" +"targetname" "t53" +"classname" "func_door" +"angle" "-1" +"wait" "-1" +"lip" "64" +"model" "*6" +} +{ +"targetname" "t53" +"target" "t54" +"classname" "trigger_teleport" +"spawnflags" "2" +"model" "*7" +} +{ +"targetname" "t54" +"angle" "180" +"origin" "1408 -688 449" +"classname" "info_teleport_destination" +} +{ +"targetname" "t53" +"target" "t57" +"classname" "trigger_teleport" +"spawnflags" "2" +"model" "*8" +} +{ +"targetname" "t57" +"angle" "180" +"origin" "1408 -400 361" +"classname" "info_teleport_destination" +} +{ +"spawnflags" "768" +"targetname" "t53" +"angle" "180" +"origin" "1912 -856 217" +"classname" "monster_wizard" +} +{ +"spawnflags" "768" +"targetname" "t53" +"classname" "monster_wizard" +"origin" "1912 -936 217" +"angle" "180" +} +{ +"targetname" "t50" +"angle" "90" +"origin" "1320 -1112 441" +"classname" "monster_knight" +} +{ +"spawnflags" "256" +"targetname" "t50" +"angle" "0" +"origin" "1056 -1144 441" +"classname" "monster_knight" +} +{ +"sounds" "1" +"targetname" "t61" +"wait" "-1" +"angle" "-2" +"classname" "func_door" +"model" "*9" +} +{ +"sounds" "3" +"lip" "64" +"spawnflags" "1" +"targetname" "t58" +"angle" "270" +"wait" "-1" +"classname" "func_door" +"model" "*10" +} +{ +"sounds" "1" +"wait" "-1" +"angle" "270" +"target" "t58" +"classname" "func_button" +"model" "*11" +} +{ +"target" "t61" +"classname" "trigger_once" +"model" "*12" +} +{ +"light" "225" +"origin" "984 -480 480" +"classname" "light" +} +{ +"light" "175" +"origin" "880 -368 176" +"classname" "light" +} +{ +"classname" "light" +"origin" "880 -592 240" +"light" "175" +} +{ +"light" "200" +"origin" "880 -488 184" +"classname" "light" +} +{ +"light" "150" +"origin" "880 -304 472" +"classname" "light" +} +{ +"classname" "light" +"origin" "-96 308 864" +"light" "850" +} +{ +"origin" "-32 -440 624" +"classname" "light" +} +{ +"sounds" "1" +"targetname" "t73" +"wait" "-1" +"lip" "196" +"angle" "-1" +"classname" "func_door" +"model" "*13" +} +{ +"light" "300" +"origin" "104 144 688" +"classname" "light" +} +{ +"classname" "light" +"origin" "-264 144 688" +"light" "300" +} +{ +"sounds" "1" +"targetname" "t73" +"wait" "-1" +"classname" "func_door" +"angle" "-1" +"lip" "196" +"model" "*14" +} +{ +"classname" "light_flame_small_yellow" +"origin" "-24 -232 414" +"light" "250" +} +{ +"lip" "-2" +"sounds" "3" +"speed" "350" +"targetname" "t73" +"angle" "180" +"wait" "-1" +"classname" "func_door" +"model" "*15" +} +{ +"target" "t63" +"targetname" "t62" +"origin" "-12 312 264" +"classname" "path_corner" +} +{ +"target" "t64" +"targetname" "t63" +"origin" "-12 312 356" +"classname" "path_corner" +} +{ +"wait" "-1" +"target" "t66" +"targetname" "t64" +"classname" "path_corner" +"origin" "-13 440 355" +} +{ +"sounds" "1" +"targetname" "t71" +"wait" "-1" +"target" "t65" +"angle" "-2" +"classname" "func_button" +"model" "*16" +} +{ +"target" "t64" +"targetname" "t66" +"origin" "-13 440 355" +"classname" "path_corner" +} +{ +"light" "200" +"origin" "-96 440 376" +"classname" "light" +} +{ +"light" "150" +"origin" "8 456 376" +"classname" "light" +} +{ +"targetname" "t70" +"target" "t67" +"classname" "path_corner" +"origin" "-220 312 264" +} +{ +"target" "t68" +"targetname" "t67" +"classname" "path_corner" +"origin" "-220 312 356" +} +{ +"wait" "-1" +"target" "t69" +"targetname" "t68" +"origin" "-221 440 355" +"classname" "path_corner" +} +{ +"target" "t68" +"targetname" "t69" +"classname" "path_corner" +"origin" "-221 440 355" +} +{ +"classname" "light" +"origin" "-200 456 376" +"light" "150" +} +{ +"targetname" "t65" +"target" "t62" +"classname" "func_train" +"speed" "50" +"sounds" "1" +"model" "*17" +} +{ +"light" "250" +"origin" "-96 632 406" +"classname" "light_flame_small_yellow" +} +{ +"targetname" "t72" +"origin" "-96 288 304" +"classname" "info_null" +} +{ +"light" "450" +"target" "t72" +"origin" "-96 288 368" +"classname" "light" +} +{ +"target" "t70" +"targetname" "t65" +"speed" "50" +"classname" "func_train" +"sounds" "1" +"model" "*18" +} +{ +"lip" "-2" +"sounds" "0" +"speed" "350" +"classname" "func_door" +"wait" "-1" +"angle" "0" +"model" "*19" +} +{ +"targetname" "t65" +"delay" "4.7" +"target" "t73" +"classname" "trigger_once" +"model" "*20" +} +{ +"targetname" "t73" +"angle" "270" +"origin" "-96 552 320" +"classname" "monster_demon1" +"spawnflags" "1024" +} +{ +"targetname" "t74" +"angle" "90" +"origin" "132 -192 476" +"classname" "info_teleport_destination" +} +{ +"targetname" "t75" +"classname" "info_teleport_destination" +"origin" "-328 -196 476" +"angle" "90" +} +{ +"target" "t75" +"classname" "trigger_teleport" +"spawnflags" "1" +"model" "*21" +} +{ +"target" "t74" +"classname" "trigger_teleport" +"spawnflags" "1" +"model" "*22" +} +{ +"light" "200" +"origin" "-418 306 356" +"classname" "light" +} +{ +"classname" "light" +"origin" "260 308 356" +"light" "200" +} +{ +"sounds" "0" +"targetname" "t73" +"wait" "-1" +"angle" "180" +"classname" "func_door" +"model" "*23" +} +{ +"sounds" "0" +"targetname" "t73" +"wait" "-1" +"angle" "0" +"classname" "func_door" +"model" "*24" +} +{ +"sounds" "0" +"wait" "-1" +"angle" "0" +"targetname" "t73" +"classname" "func_door" +"model" "*25" +} +{ +"sounds" "0" +"targetname" "t73" +"angle" "180" +"wait" "-1" +"classname" "func_door" +"model" "*26" +} +{ +"sounds" "3" +"wait" "-1" +"angle" "-2" +"targetname" "t73" +"classname" "func_door" +"model" "*27" +} +{ +"classname" "light" +"origin" "-96 24 360" +"light" "100" +} +{ +"light" "100" +"origin" "-96 -40 360" +"classname" "light" +} +{ +"classname" "light" +"origin" "-160 -568 624" +} +{ +"origin" "-160 -440 624" +"classname" "light" +} +{ +"classname" "light" +"origin" "-32 -568 624" +} +{ +"classname" "light" +"origin" "-96 -88 484" +"light" "150" +} +{ +"classname" "light" +"origin" "-440 -408 804" +"light" "450" +} +{ +"classname" "light" +"origin" "600 -128 352" +"light" "200" +} +{ +"classname" "light" +"origin" "576 -608 504" +"light" "250" +} +{ +"classname" "light" +"origin" "384 -504 392" +"light" "250" +} +{ +"classname" "light" +"origin" "1264 240 295" +"light" "250" +} +{ +"light" "250" +"origin" "944 240 295" +"classname" "light" +} +{ +"classname" "path_corner" +"origin" "1480 704 264" +"targetname" "t77" +"target" "t78" +} +{ +"classname" "path_corner" +"origin" "1448 656 264" +"targetname" "t78" +"target" "t30" +} +{ +"classname" "path_corner" +"origin" "1264 640 304" +"targetname" "t80" +"target" "t5" +} +{ +"classname" "path_corner" +"origin" "1328 640 304" +"targetname" "t79" +"target" "t80" +} +{ +"light" "200" +"origin" "1488 -392 216" +"classname" "light" +} +{ +"classname" "path_corner" +"origin" "816 80 304" +"targetname" "t83" +"target" "t82" +"spawnflags" "256" +} +{ +"origin" "816 312 304" +"classname" "path_corner" +"targetname" "t82" +"target" "t83" +"spawnflags" "256" +} +{ +"classname" "monster_army" +"origin" "806 206 320" +"angle" "90" +"target" "t82" +"spawnflags" "256" +} +{ +"classname" "trigger_once" +"target" "t84" +"model" "*28" +} +{ +"classname" "monster_ogre" +"origin" "1790 -146 312" +"angle" "90" +"targetname" "t84" +} +{ +"classname" "path_corner" +"origin" "1088 -672 296" +"target" "t85" +"targetname" "t88" +} +{ +"origin" "1088 -376 296" +"classname" "path_corner" +"targetname" "t85" +"target" "t86" +} +{ +"classname" "path_corner" +"origin" "1088 -376 296" +"targetname" "t87" +"target" "t88" +} +{ +"origin" "1448 -376 296" +"classname" "path_corner" +"targetname" "t86" +"target" "t87" +} +{ +"spawnflags" "1" +"classname" "monster_ogre" +"origin" "1086 -498 312" +"angle" "270" +"target" "t88" +} +{ +"spawnflags" "256" +"classname" "trigger_once" +"target" "t89" +"model" "*29" +} +{ +"classname" "item_health" +"origin" "352 -752 408" +"spawnflags" "1025" +} +{ +"spawnflags" "1025" +"origin" "352 -792 408" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "352 -832 408" +"spawnflags" "1" +} +{ +"classname" "path_corner" +"origin" "408 -776 416" +"targetname" "t94" +"target" "t95" +} +{ +"origin" "400 -1088 416" +"classname" "path_corner" +"targetname" "t95" +"target" "t94" +} +{ +"classname" "path_corner" +"origin" "584 -1096 416" +"targetname" "t92" +"target" "t93" +} +{ +"origin" "584 -792 416" +"classname" "path_corner" +"targetname" "t93" +"target" "t92" +} +{ +"classname" "monster_army" +"origin" "390 -970 432" +"angle" "0" +"target" "t94" +} +{ +"classname" "monster_army" +"origin" "566 -970 432" +"angle" "270" +"target" "t92" +} +{ +"classname" "path_corner" +"origin" "208 -304 304" +"targetname" "t97" +"target" "t96" +} +{ +"classname" "path_corner" +"origin" "208 -464 304" +"targetname" "t96" +"target" "t97" +} +{ +"spawnflags" "1280" +"classname" "path_corner" +"origin" "-344 160 304" +"targetname" "t100" +"target" "t99" +} +{ +"spawnflags" "1280" +"origin" "168 152 304" +"classname" "path_corner" +"targetname" "t99" +"target" "t100" +} +{ +"spawnflags" "1280" +"classname" "monster_ogre" +"origin" "240 152 320" +"angle" "180" +"target" "t99" +} +{ +"spawnflags" "768" +"classname" "monster_ogre" +"origin" "-392 80 320" +"angle" "0" +"targetname" "t101" +} +{ +"spawnflags" "768" +"classname" "trigger_once" +"target" "t101" +"model" "*30" +} +{ +"classname" "item_health" +"origin" "40 -16 464" +} +{ +"origin" "80 -48 464" +"classname" "item_health" +} +{ +"origin" "520 -72 296" +"classname" "item_shells" +} +{ +"spawnflags" "1" +"origin" "-424 -216 296" +"classname" "item_shells" +} +{ +"spawnflags" "769" +"angle" "270" +"origin" "880 -400 568" +"classname" "monster_wizard" +} +{ +"light" "200" +"origin" "432 176 152" +"classname" "light" +} +{ +"light" "150" +"origin" "432 -56 256" +"classname" "light" +} +{ +"origin" "264 -96 300" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "264 -140 300" +} +{ +"spawnflags" "1" +"origin" "1184 1568 240" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "1184 1616 240" +"spawnflags" "1" +} +{ +"light" "150" +"origin" "1496 1112 108" +"classname" "light" +} +{ +"light" "200" +"origin" "1120 1152 96" +"classname" "light" +} +{ +"light" "200" +"origin" "1080 692 184" +"classname" "light" +} +{ +"light" "300" +"classname" "light_flame_small_yellow" +"origin" "832 1184 294" +} +{ +"origin" "464 536 358" +"classname" "light_flame_small_yellow" +"light" "300" +} +{ +"light" "300" +"classname" "light_flame_small_yellow" +"origin" "600 704 334" +} +{ +"light" "150" +"origin" "1736 1096 110" +"classname" "light" +} +{ +"light" "100" +"origin" "832 1056 134" +"classname" "light" +} +{ +"light" "150" +"origin" "784 704 294" +"classname" "light" +} +{ +"origin" "856 592 182" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "824 552 182" +} +{ +"classname" "info_player_deathmatch" +"origin" "-416 -144 320" +"angle" "90" +} +{ +"classname" "info_player_deathmatch" +"origin" "168 -480 320" +"angle" "45" +} +{ +"classname" "info_player_deathmatch" +"origin" "1496 1328 200" +"angle" "270" +} +{ +"classname" "info_player_deathmatch" +"origin" "1936 -136 312" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "936 -1216 432" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "792 -992 440" +"angle" "45" +} +{ +"classname" "info_player_deathmatch" +"origin" "1080 -720 312" +"angle" "0" +} +{ +"classname" "info_player_deathmatch" +"origin" "408 -752 432" +"angle" "270" +} +{ +"classname" "info_player_deathmatch" +"origin" "792 -208 320" +"angle" "45" +} +{ +"classname" "info_player_deathmatch" +"origin" "784 808 206" +"angle" "225" +} +{ +"sounds" "3" +"wait" "3" +"angle" "90" +"classname" "func_door" +"model" "*31" +} +{ +"sounds" "0" +"wait" "3" +"angle" "270" +"classname" "func_door" +"model" "*32" +} +{ +"spawnflags" "1" +"origin" "680 832 182" +"classname" "item_shells" +} +{ +"origin" "1392 240 300" +"classname" "weapon_supershotgun" +} +{ +"spawnflags" "769" +"angle" "270" +"origin" "954 -754 444" +"classname" "monster_ogre" +} +{ +"spawnflags" "1" +"origin" "520 -1280 408" +"classname" "item_shells" +} +{ +"light" "200" +"origin" "-612 -500 548" +"classname" "light" +} +{ +"classname" "func_door" +"angle" "91" // svdijk -- changed to prevent z-fighting (was "90") +"targetname" "t110" +"wait" "-1" +"model" "*33" +} +{ +"sounds" "3" +"classname" "func_door" +"angle" "269" // svdijk -- changed to prevent z-fighting (was "270") +"wait" "-1" +"model" "*34" +} +{ +"classname" "trigger_once" +"target" "t110" +"model" "*35" +} +{ +"classname" "trigger_changelevel" +"map" "e1m3" +"model" "*36" +} +{ +"spawnflags" "1792" +"origin" "680 728 184" +"classname" "weapon_rocketlauncher" +} +{ +"spawnflags" "1792" +"origin" "1496 1256 176" +"classname" "weapon_nailgun" +} +{ +"angle" "180" +"spawnflags" "1792" +"origin" "-96 -496 360" +"classname" "weapon_supernailgun" +} +{ +"spawnflags" "1794" +"origin" "-112 -8 464" +"classname" "item_health" +} +{ +"spawnflags" "1793" +"origin" "-112 -568 360" +"classname" "item_spikes" +} +{ +"spawnflags" "1792" +"origin" "1616 1424 176" +"classname" "item_spikes" +} +{ +"spawnflags" "1792" +"classname" "item_spikes" +"origin" "1656 1424 176" +} +{ +"spawnflags" "1792" +"origin" "1696 1424 176" +"classname" "item_spikes" +} +{ +"spawnflags" "768" +"target" "t34" +"angle" "315" +"origin" "1070 646 312" +"classname" "monster_ogre" +} +{ +"spawnflags" "768" +"targetname" "t84" +"angle" "90" +"origin" "1624 88 376" +"classname" "monster_wizard" +} +{ +"spawnflags" "768" +"angle" "90" +"targetname" "t84" +"origin" "1866 -378 312" +"classname" "monster_ogre" +} +{ +"angle" "45" +"origin" "1088 -1096 440" +"classname" "monster_knight" +"targetname" "t50" +} +{ +"spawnflags" "768" +"classname" "monster_knight" +"origin" "1400 -1144 440" +"angle" "90" +"targetname" "t50" +} +{ +"spawnflags" "256" +"target" "t111" +"targetname" "t112" +"origin" "896 -1216 416" +"classname" "path_corner" +} +{ +"spawnflags" "256" +"target" "t112" +"targetname" "t111" +"classname" "path_corner" +"origin" "704 -1216 416" +} +{ +"spawnflags" "257" +"target" "t111" +"angle" "180" +"origin" "758 -1218 432" +"classname" "monster_army" +} +{ +"spawnflags" "768" +"target" "t114" +"targetname" "t113" +"origin" "-96 -520 368" +"classname" "path_corner" +} +{ +"spawnflags" "768" +"target" "t113" +"targetname" "t114" +"origin" "-96 -152 304" +"classname" "path_corner" +} +{ +"targetname" "t116" +"spawnflags" "769" +"target" "t113" +"angle" "270" +"origin" "-98 -194 320" +"classname" "monster_ogre" +} +{ +"spawnflags" "1536" +"origin" "1936 -96 289" +"classname" "item_health" +} +{ +"spawnflags" "1025" +"origin" "1040 -1200 417" +"classname" "item_health" +} +{ +"spawnflags" "769" +"target" "t117" +"angle" "315" +"origin" "-560 -312 592" +"classname" "monster_wizard" +} +{ +"spawnflags" "768" +"target" "t118" +"targetname" "t117" +"origin" "-528 -344 576" +"classname" "path_corner" +} +{ +"spawnflags" "768" +"target" "t117" +"targetname" "t118" +"origin" "-352 -656 576" +"classname" "path_corner" +} +{ +"classname" "light" +"origin" "1360 976 224" +"light" "150" +} +{ +"light" "150" +"origin" "1616 976 224" +"classname" "light" +} +{ +"classname" "light" +"origin" "1208 1296 368" +"light" "250" +} +{ +"origin" "1784 1288 368" +"classname" "light" +"light" "250" +} +{ +"classname" "light" +"origin" "1496 1664 336" +"light" "250" +} +{ +"classname" "light" +"origin" "1752 1176 112" +"light" "150" +} +{ +"light" "200" +"origin" "1776 976 112" +"classname" "light" +} +{ +"classname" "light" +"origin" "1216 976 112" +"light" "200" +} +{ +"light" "150" +"origin" "1224 1176 112" +"classname" "light" +} +{ +"classname" "light" +"origin" "1496 1432 520" +"light" "250" +} +{ +"classname" "light" +"origin" "1496 1304 264" +"light" "200" +} +{ +"classname" "light" +"origin" "1496 1432 288" +"light" "200" +} +{ +"classname" "light" +"origin" "1608 1120 88" +"light" "150" +} +{ +"light" "150" +"origin" "1384 1120 88" +"classname" "light" +} +{ +"classname" "light" +"origin" "1496 864 368" +"light" "150" +} +{ +"light" "175" +"origin" "980 764 353" +"classname" "light" +} +{ +"classname" "light" +"origin" "1228 764 353" +"light" "175" +} +{ +"classname" "light" +"origin" "1104 464 353" +"light" "200" +} +{ +"classname" "light" +"origin" "1104 -40 423" +"light" "200" +} +{ +"light" "150" +"origin" "1416 -128 367" +"classname" "light" +} +{ +"classname" "light" +"origin" "1104 -184 367" +"light" "200" +} +{ +"classname" "light" +"origin" "1184 56 423" +"light" "150" +} +{ +"light" "150" +"origin" "1024 56 423" +"classname" "light" +} +{ +"classname" "light" +"origin" "1272 -64 399" +"light" "150" +} +{ +"light" "150" +"origin" "888 -64 399" +"classname" "light" +} +{ +"classname" "light" +"origin" "1104 152 129" +"light" "300" +} +{ +"classname" "light" +"origin" "976 392 129" +"light" "200" +} +{ +"classname" "light" +"origin" "1104 656 120" +} +{ +"classname" "light" +"origin" "896 712 144" +"light" "200" +} +{ +"classname" "light" +"origin" "640 704 280" +"light" "200" +} +{ +"classname" "light" +"origin" "464 496 296" +"light" "150" +} +{ +"classname" "light" +"origin" "888 1152 96" +"light" "200" +} +{ +"classname" "light" +"origin" "840 880 240" +"light" "200" +} +{ +"classname" "light" +"origin" "848 584 240" +"light" "150" +} +{ +"classname" "light" +"origin" "784 160 144" +"light" "200" +} +{ +"classname" "light" +"origin" "440 336 144" +"light" "150" +} +{ +"light" "150" +"origin" "584 336 144" +"classname" "light" +} +{ +"classname" "light" +"origin" "432 24 136" +"light" "150" +} +{ +"classname" "light" +"origin" "656 328 224" +"light" "200" +} +{ +"classname" "light" +"origin" "432 -128 312" +"light" "200" +} +{ +"classname" "light" +"origin" "600 -384 360" +"light" "200" +} +{ +"origin" "520 -128 406" +"classname" "light_flame_small_yellow" +"light" "250" +} +{ +"classname" "light" +"origin" "424 -320 352" +"light" "200" +} +{ +"classname" "light" +"origin" "664 -1216 472" +"light" "150" +} +{ +"classname" "light" +"origin" "336 -1208 504" +"light" "150" +} +{ +"light" "150" +"origin" "336 -1008 504" +"classname" "light" +} +{ +"classname" "light" +"origin" "336 -816 504" +"light" "150" +} +{ +"classname" "light" +"origin" "880 -1000 496" +"light" "200" +} +{ +"classname" "light" +"origin" "880 -792 496" +"light" "200" +} +{ +"classname" "light" +"origin" "880 -376 304" +"light" "200" +} +{ +"classname" "light" +"origin" "1048 -912 480" +"light" "225" +} +{ +"classname" "light" +"origin" "1120 -1192 468" +"light" "150" +} +{ +"light" "150" +"origin" "1376 -1192 468" +"classname" "light" +} +{ +"classname" "light" +"origin" "1472 -912 464" +"light" "175" +} +{ +"classname" "light" +"origin" "880 -304 480" +"light" "100" +} +{ +"classname" "light" +"origin" "880 -680 480" +"light" "175" +} +{ +"classname" "light" +"origin" "1600 -704 484" +"light" "150" +} +{ +"classname" "light" +"origin" "1504 -704 348" +"light" "175" +} +{ +"light" "175" +"origin" "1336 -704 348" +"classname" "light" +} +{ +"classname" "light" +"origin" "1152 -640 332" +"light" "200" +} +{ +"classname" "light" +"origin" "1096 -552 348" +"light" "150" +} +{ +"light" "200" +"origin" "1160 -456 332" +"classname" "light" +} +{ +"light" "150" +"origin" "1216 -384 348" +"classname" "light" +} +{ +"classname" "light" +"origin" "1344 -384 348" +"light" "150" +} +{ +"classname" "light" +"origin" "1544 392 156" +"light" "225" +} +{ +"light" "225" +"origin" "1848 248 156" +"classname" "light" +} +{ +"classname" "light" +"origin" "1936 136 156" +"light" "225" +} +{ +"light" "200" +"origin" "2096 -80 156" +"classname" "light" +} +{ +"light" "200" +"origin" "2048 -408 156" +"classname" "light" +} +{ +"classname" "light" +"origin" "1456 -392 444" +"light" "225" +} +{ +"classname" "light" +"origin" "1640 -384 352" +"light" "225" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "2134 -474 316" +"light" "250" +} +{ +"light" "200" +"origin" "168 216 496" +"classname" "light" +} +{ +"classname" "light" +"origin" "-328 208 496" +"light" "200" +} +{ +"light" "200" +"origin" "-96 360 432" +"classname" "light" +} +{ +"classname" "light" +"origin" "-96 144 432" +"light" "200" +} +{ +"light" "200" +"origin" "-376 32 432" +"classname" "light" +} +{ +"light" "200" +"origin" "208 -72 432" +"classname" "light" +} +{ +"light" "150" +"origin" "-96 72 360" +"classname" "light" +} +{ +"light" "150" +"origin" "-64 -232 368" +"classname" "light" +} +{ +"light" "150" +"origin" "-96 -320 560" +"classname" "light" +} +{ +"light" "250" +"origin" "-96 -496 448" +"classname" "light" +} +{ +"light" "150" +"origin" "-416 -104 392" +"classname" "light" +} +{ +"light" "150" +"origin" "-344 -152 528" +"classname" "light" +} +{ +"classname" "light" +"origin" "160 -152 528" +"light" "150" +} +{ +"light" "150" +"origin" "-96 8 528" +"classname" "light" +} +{ +"light" "200" +"origin" "-560 -504 688" +"classname" "light" +} +{ +"classname" "light" +"origin" "-440 -368 688" +"light" "200" +} +{ +"light" "200" +"origin" "-440 -656 688" +"classname" "light" +} +{ +"classname" "light" +"origin" "-336 -504 688" +"light" "200" +} +{ +"classname" "light" +"origin" "2084 -208 336" +"light" "100" +} +{ +"light" "100" +"origin" "2012 -252 332" +"classname" "light" +} +{ +"classname" "light" +"origin" "1948 -328 332" +"light" "100" +} +{ +"light" "150" +"origin" "1892 -452 332" +"classname" "light" +} +{ +"sounds" "1" +"targetname" "t120" +"wait" "-1" +"angle" "-2" +"classname" "func_door" +"lip" "4" +"model" "*37" +} +{ +"target" "t120" +"classname" "trigger_once" +"model" "*38" +} +{ +"light" "100" +"origin" "2076 -312 336" +"classname" "light" +} +{ +"sounds" "3" +"spawnflags" "2064" +"angle" "0" +"wait" "-1" +"classname" "func_door" +"model" "*39" +} +{ +"spawnflags" "2064" +"wait" "-1" +"angle" "180" +"classname" "func_door" +"model" "*40" +} +{ +"light" "100" +"origin" "332 -264 356" +"classname" "light" +} +{ +"classname" "light" +"origin" "144 -264 356" +"light" "100" +} +{ +"light" "100" +"origin" "1104 572 316" +"classname" "light" +} +{ +"target" "t121" +"wait" ".8" +"classname" "trigger_multiple" +"model" "*41" +} +{ +"targetname" "t121" +"angle" "180" +"origin" "2120 -256 332" +"classname" "trap_spikeshooter" +"spawnflags" "1024" +} +{ +"targetname" "t121" +"angle" "90" +"origin" "1944 -456 332" +"classname" "trap_spikeshooter" +"spawnflags" "1024" +} +{ +"light" "150" +"origin" "1312 -856 472" +"classname" "light" +} +{ +"classname" "light" +"origin" "1184 -856 472" +"light" "175" +} +{ +"classname" "light" +"origin" "1560 -568 224" +"light" "200" +} +{ +"classname" "func_door" +"angle" "-2" +"wait" "-1" +"speed" "50" +"sounds" "1" +"targetname" "t123" +"lip" "6" +"model" "*42" +} +{ +"classname" "trigger_once" +"target" "t123" +"model" "*43" +} +{ +"classname" "light" +"origin" "1496 -552 330" +"light" "700" +"target" "t52" +} +{ +"classname" "light" +"origin" "1288 80 140" +"light" "250" +} +{ +"classname" "light" +"origin" "1288 400 80" +"light" "200" +} +{ +"classname" "light" +"origin" "1328 -664 160" +"light" "200" +} +{ +"classname" "item_armor1" +"origin" "784 56 304" +} +{ +"classname" "light" +"origin" "1544 464 352" +"light" "75" +} +{ +"classname" "func_plat" +"model" "*44" +} +{ +"classname" "light" +"origin" "1496 1192 280" +"light" "200" +} +{ +"classname" "light" +"origin" "1608 1192 136" +"light" "100" +} +{ +"light" "100" +"origin" "1384 1184 136" +"classname" "light" +} +{ +"light" "100" +"origin" "1608 1048 136" +"classname" "light" +} +{ +"classname" "light" +"origin" "1384 1048 136" +"light" "100" +} +{ +"classname" "light" +"origin" "1200 1148 92" +"light" "150" +} +{ +"light" "150" +"origin" "876 -184 367" +"classname" "light" +} +{ +"classname" "light" +"origin" "768 -128 384" +"light" "200" +} +{ +"classname" "light" +"origin" "1104 388 552" +"light" "250" +} +{ +"light" "200" +"origin" "1392 240 384" +"classname" "light" +} +{ +"classname" "light" +"origin" "1392 80 368" +"light" "200" +} +{ +"classname" "light" +"origin" "1272 400 367" +"light" "150" +} +{ +"light" "150" +"origin" "920 400 367" +"classname" "light" +} +{ +"classname" "light" +"origin" "816 208 368" +"light" "200" +} +{ +"classname" "light" +"origin" "800 24 368" +"light" "200" +} +{ +"classname" "light" +"origin" "800 376 385" +"light" "150" +} +{ +"light" "150" +"origin" "1400 400 385" +"classname" "light" +} +{ +"classname" "path_corner" +"origin" "1104 336 300" +"target" "t126" +"targetname" "t127" +} +{ +"origin" "1104 24 300" +"classname" "path_corner" +"targetname" "t126" +"target" "t127" +} +{ +"classname" "monster_army" +"origin" "1104 424 316" +"angle" "270" +"target" "t127" +} +{ +"targetname" "t128" +"origin" "1392 240 308" +"classname" "info_null" +} +{ +"light" "300" +"target" "t128" +"origin" "1392 240 376" +"classname" "light" +} +{ +"targetname" "t129" +"angle" "0" +"origin" "552 -128 320" +"classname" "monster_army" +} +{ +"target" "t129" +"classname" "trigger_once" +"model" "*45" +} +{ +"sounds" "1" +"classname" "trigger_secret" +"model" "*46" +} +{ +"sounds" "1" +"classname" "trigger_secret" +"model" "*47" +} +{ +"classname" "light" +"origin" "1104 24 536" +"light" "350" +} +{ +"spawnflags" "1" +"classname" "func_door_secret" +"angle" "270" +"model" "*48" +} +{ +"light" "200" +"origin" "1680 1552 320" +"classname" "light" +} +{ +"classname" "light" +"origin" "1312 1552 320" +"light" "200" +} +{ +"classname" "item_spikes" +"origin" "1480 1104 68" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "1760 -568 256" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "1232 -1200 416" +} +{ +"message" "This door is opened elsewhere..." +"classname" "func_door" +"sounds" "3" +"angle" "180" +"wait" "-1" +"targetname" "t122" +"speed" "35" +"spawnflags" "2048" +"model" "*49" +} +{ +"classname" "func_door" +"angle" "0" +"wait" "-1" +"speed" "30" +"spawnflags" "2048" +"model" "*50" +} +{ +"classname" "light" +"origin" "1496 1600 296" +"light" "150 " +} +{ +"light" "150" +"origin" "1568 1664 296" +"classname" "light" +} +{ +"classname" "light" +"origin" "1424 1664 296" +"light" "150" +} +{ +"classname" "light" +"origin" "1328 1424 296" +"light" "200" +} +{ +"light" "250" +"origin" "1696 1416 296" +"classname" "light" +} +{ +"classname" "monster_army" +"origin" "1592 1296 200" +"angle" "270" +} +{ +"spawnflags" "768" +"classname" "monster_demon1" +"origin" "-96 576 320" +"angle" "270" +"targetname" "t73" +"target" "t143" +} +{ +"classname" "path_corner" +"origin" "1392 416 304" +"targetname" "t131" +"target" "t130" +"spawnflags" "768" +} +{ +"origin" "1392 296 304" +"classname" "path_corner" +"targetname" "t130" +"target" "t131" +"spawnflags" "768" +} +{ +"classname" "monster_army" +"origin" "1392 352 320" +"angle" "270" +"target" "t130" +"spawnflags" "768" +} +{ +"target" "t132" +"targetname" "t133" +"origin" "296 -328 304" +"classname" "path_corner" +} +{ +"target" "t133" +"targetname" "t132" +"classname" "path_corner" +"origin" "472 -416 304" +} +{ +"spawnflags" "1" +"target" "t132" +"angle" "90" +"origin" "472 -456 320" +"classname" "monster_army" +} +{ +"spawnflags" "1" +"targetname" "t89" +"angle" "135" +"origin" "1712 -784 376" +"classname" "monster_army" +} +{ +"target" "t135" +"spawnflags" "256" +"targetname" "t134" +"origin" "400 -1128 416" +"classname" "path_corner" +} +{ +"target" "t134" +"spawnflags" "256" +"targetname" "t135" +"classname" "path_corner" +"origin" "400 -1248 416" +} +{ +"target" "t134" +"spawnflags" "257" +"angle" "90" +"origin" "408 -1208 432" +"classname" "monster_army" +} +{ +"targetname" "t101" +"angle" "90" +"origin" "-288 -24 488" +"classname" "monster_army" +"spawnflags" "768" +} +{ +"spawnflags" "768" +"targetname" "t101" +"classname" "monster_army" +"origin" "136 -128 488" +"angle" "90" +} +{ +"spawnflags" "1792" +"origin" "-264 -24 464" +"classname" "item_rockets" +} +{ +"spawnflags" "2048" +"origin" "-240 -8 464" +"classname" "item_spikes" +} +{ +"classname" "monster_ogre" +"origin" "-304 -304 488" +"angle" "225" +"spawnflags" "769" +} +{ +"classname" "func_wall" +"spawnflags" "768" +"model" "*51" +} +{ +"classname" "trap_spikeshooter" +"origin" "2048 -48 332" +"angle" "270" +"spawnflags" "769" +"targetname" "t121" +} +{ +"origin" "2048 -476 332" +"classname" "info_null" +"targetname" "t136" +} +{ +"style" "32" +"origin" "2048 -456 336" +"classname" "light" +"light" "800" +"spawnflags" "1" +"target" "t136" +"targetname" "t137" +} +{ +"style" "32" +"classname" "trigger_once" +"spawnflags" "768" +"target" "t137" +"model" "*52" +} +{ +"classname" "monster_wizard" +"origin" "672 328 384" +"angle" "180" +"spawnflags" "768" +"targetname" "t138" +} +{ +"classname" "trigger_once" +"target" "t138" +"model" "*53" +} +{ +"style" "32" +"classname" "light" +"origin" "2004 -52 332" +"light" "100" +"spawnflags" "1" +"targetname" "t137" +} +{ +"classname" "item_shells" +"origin" "1416 224 300" +"spawnflags" "768" +} +{ +"classname" "path_corner" +"origin" "-344 136 304" +"targetname" "t139" +"target" "t140" +"spawnflags" "768" +} +{ +"origin" "168 128 304" +"classname" "path_corner" +"target" "t139" +"targetname" "t140" +"spawnflags" "768" +} +{ +"classname" "monster_ogre" +"origin" "-400 168 320" +"spawnflags" "768" +"target" "t139" +} +{ +"classname" "trap_spikeshooter" +"origin" "2120 -256 332" +"angle" "180" +"spawnflags" "769" +"targetname" "t121" +} +{ +"classname" "trap_spikeshooter" +"origin" "1944 -456 332" +"targetname" "t121" +"angle" "90" +"spawnflags" "769" +} +{ +"classname" "item_spikes" +"origin" "-336 -80 470" +"spawnflags" "768" +} +{ +"targetname" "t143" +"classname" "trigger_teleport" +"target" "t142" +"spawnflags" "2" +"model" "*54" +} +{ +"targetname" "t143" +"classname" "trigger_teleport" +"target" "t141" +"spawnflags" "2" +"model" "*55" +} +{ +"classname" "monster_demon1" +"origin" "32 840 359" +"angle" "270" +"targetname" "t143" +"spawnflags" "768" +} +{ +"angle" "270" +"origin" "-192 840 359" +"classname" "monster_demon1" +"targetname" "t143" +"spawnflags" "768" +} +{ +"classname" "info_teleport_destination" +"origin" "80 216 303" +"angle" "270" +"targetname" "t141" +} +{ +"angle" "270" +"origin" "-264 224 303" +"classname" "info_teleport_destination" +"targetname" "t142" +} +{ +"wait" "-1" +"target" "t53" +"health" "1" +"classname" "func_button" +"model" "*56" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "1408 1296 200" +"classname" "monster_army" +} +{ +"classname" "item_shells" +"origin" "772 -856 420" +"spawnflags" "768" +} +{ +"spawnflags" "1792" +"origin" "1248 -1128 420" +"classname" "weapon_grenadelauncher" +} +{ +"spawnflags" "1793" +"origin" "864 -312 440" +"classname" "item_rockets" +} +{ +"classname" "trigger_once" +"message" "Pass through the arch to exit..." +"model" "*57" +} +{ +"mangle" "20 300 0" +"classname" "info_intermission" +"origin" "-224 424 512" +} +{ +"mangle" "20 45 0" +"origin" "1048 -744 488" +"classname" "info_intermission" +} +{ +"mangle" "20 270 0" +"origin" "1104 424 528" +"classname" "info_intermission" +} +{ +"mangle" "20 45 0" +"origin" "1240 984 416" +"classname" "info_intermission" +} +{ +"sounds" "1" +"speed" "20" +"classname" "func_button" +"angle" "0" +"wait" "-1" +"target" "t144" +"model" "*58" +} +{ +"classname" "light" +"origin" "400 -1392 480" +"light" "150" +} +{ +"classname" "func_door" +"angle" "-2" +"wait" "-1" +"speed" "20" +"sounds" "1" +"targetname" "t144" +"model" "*59" +} +{ +"classname" "trigger_secret" +"model" "*60" +} +{ +"classname" "item_artifact_super_damage" +"origin" "400 -1360 432" +} +{ +"classname" "item_spikes" +"origin" "808 -632 192" +"spawnflags" "2049" +} +{ +"classname" "item_health" +"origin" "924 -632 192" +"spawnflags" "2048" +} +{ +"classname" "weapon_supernailgun" +"origin" "880 -616 192" +"spawnflags" "1792" +} +{ +"classname" "ambient_drip" +"origin" "842 978 344" +} +{ +"classname" "ambient_drip" +"origin" "546 330 400" +} +{ +"classname" "info_player_coop" +"origin" "1608 1664 264" +"angle" "270" +} +{ +"angle" "270" +"origin" "1392 1664 264" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "1496 1560 264" +"angle" "270" +} +{ +"spawnflags" "256" +"angle" "270" +"origin" "232 -176 320" +"classname" "monster_ogre" +} +{ +"spawnflags" "1280" +"angle" "225" +"origin" "-368 -312 480" +"classname" "monster_knight" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*61" +} +{ +"origin" "1810 274 200" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "1802 -102 200" +} +{ +"origin" "2050 -214 200" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "2002 -390 200" +} +{ +"origin" "1738 -398 200" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "1346 -398 200" +} +{ +"origin" "1138 -542 200" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "882 -494 200" +} +{ +"classname" "ambient_swamp1" +"origin" "1722 1090 176" +} +{ +"origin" "1242 1090 176" +"classname" "ambient_swamp1" +} +{ +"classname" "ambient_swamp2" +"origin" "1106 642 192" +} +{ +"origin" "1346 242 192" +"classname" "ambient_swamp2" +} +{ +"classname" "ambient_swamp1" +"origin" "866 210 192" +} +{ +"classname" "ambient_swamp1" +"origin" "1802 90 192" +} +{ +"origin" "1546 -398 192" +"classname" "ambient_swamp1" +} +{ +"classname" "ambient_swamp2" +"origin" "2042 -310 192" +} +{ +"origin" "1178 -398 192" +"classname" "ambient_swamp2" +} +{ +"classname" "ambient_swamp2" +"origin" "1202 -678 192" +} diff --git a/Misc/qs_pak/maps/e1m4.diff b/Misc/qs_pak/maps/e1m4.diff new file mode 100644 index 0000000..7e420ff --- /dev/null +++ b/Misc/qs_pak/maps/e1m4.diff @@ -0,0 +1,30 @@ +--- e1m4.ent ++++ e1m4@958e.ent +@@ -2143,12 +2143,13 @@ + { + "classname" "func_door_secret" + "angle" "0" + "spawnflags" "1" + "targetname" "t91" + "model" "*53" ++"t_length" "73" // svdijk -- added to prevent z-fighting + } + { + "classname" "func_button" + "angle" "-2" + "wait" "-1" + "target" "t92" +@@ -2202,12 +2203,13 @@ + { + "spawnflags" "3" + "angle" "0" + "classname" "func_door_secret" + "targetname" "t91" + "model" "*60" ++"t_length" "73" // svdijk -- added to prevent z-fighting + } + { + "light" "150" + "origin" "680 -256 1144" + "classname" "light" + } diff --git a/Misc/qs_pak/maps/e1m4@958e.ent b/Misc/qs_pak/maps/e1m4@958e.ent new file mode 100644 index 0000000..77d4761 --- /dev/null +++ b/Misc/qs_pak/maps/e1m4@958e.ent @@ -0,0 +1,3171 @@ +{ +"message" "the Grisly Grotto" +"worldtype" "0" +"classname" "worldspawn" +"wad" "gfx/wizard.wad" +"sounds" "5" +} +{ +"classname" "light" +"origin" "464 480 1656" +"light" "300" +} +{ +"light" "400" +"origin" "712 296 1512" +"classname" "light" +} +{ +"sounds" "3" +"angle" "180" +"classname" "func_door" +"model" "*1" +} +{ +"angle" "0" +"classname" "func_door" +"model" "*2" +} +{ +"classname" "light_flame_small_yellow" +"origin" "560 -112 1374" +} +{ +"origin" "848 -112 1374" +"classname" "light_flame_small_yellow" +} +{ +"origin" "760 656 1536" +"classname" "light" +} +{ +"light" "400" +"origin" "834 498 1040" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "944 728 1456" +} +{ +"classname" "light_flame_small_yellow" +"origin" "1016 80 998" +} +{ +"origin" "392 80 998" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light" +"origin" "680 1224 516" +"light" "200" +} +{ +"light" "200" +"origin" "704 992 516" +"classname" "light" +} +{ +"light" "200" +"origin" "696 1608 628" +"classname" "light" +} +{ +"origin" "704 1368 588" +"classname" "light" +} +{ +"origin" "816 1616 444" +"classname" "light" +} +{ +"classname" "light" +"origin" "712 1728 444" +} +{ +"origin" "592 1608 444" +"classname" "light" +} +{ +"classname" "light" +"origin" "624 1096 444" +} +{ +"light" "300" +"origin" "432 1328 816" +"classname" "light" +} +{ +"classname" "light" +"origin" "696 1112 816" +"light" "300" +} +{ +"classname" "light" +"origin" "704 -80 960" +"light" "200" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "818 18 948" +"light" "200" +} +{ +"origin" "586 18 948" +"classname" "light_torch_small_walltorch" +"light" "200" +} +{ +"light" "200" +"origin" "688 496 880" +"classname" "light" +} +{ +"origin" "489 483 1356" +"classname" "light_flame_large_yellow" +} +{ +"light" "200" +"origin" "704 -120 1360" +"classname" "light" +} +{ +"classname" "light" +"origin" "1216 936 1560" +"light" "200" +} +{ +"origin" "1294 826 1576" +"classname" "light_flame_large_yellow" +} +{ +"sounds" "1" +"targetname" "t1" +"wait" "-1" +"angle" "180" +"classname" "func_door" +"model" "*3" +} +{ +"angle" "0" +"wait" "-1" +"classname" "func_door" +"model" "*4" +} +{ +"target" "t1" +"classname" "trigger_once" +"model" "*5" +} +{ +"map" "e1m5" +"classname" "trigger_changelevel" +"model" "*6" +} +{ +"wait" "-1" +"angle" "0" +"classname" "func_door" +"speed" "50" +"model" "*7" +} +{ +"classname" "info_player_start" +"origin" "-256 2272 1240" +"angle" "270" +} +{ +"targetname" "t23" +"classname" "func_door" +"angle" "180" +"wait" "-1" +"speed" "50" +"sounds" "3" +"model" "*8" +} +{ +"classname" "light" +"origin" "696 704 820" +} +{ +"classname" "light" +"origin" "704 776 672" +"light" "200" +} +{ +"classname" "light" +"origin" "360 904 520" +"light" "200" +} +{ +"origin" "704 856 400" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "944 880 416" +"light" "150" +} +{ +"origin" "1056 1176 424" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "1096 1408 360" +} +{ +"classname" "light" +"origin" "416 1696 360" +} +{ +"origin" "328 1368 360" +"classname" "light" +"light" "200" +} +{ +"light" "200 " +"classname" "light" +"origin" "696 752 896" +} +{ +"light" "250" +"origin" "798 1850 1024" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "642 1850 1024" +"light" "250" +} +{ +"light" "200 " +"origin" "700 1364 952" +"classname" "light" +} +{ +"classname" "light_flame_large_yellow" +"origin" "1094 1494 1064" +} +{ +"origin" "324 1104 1064" +"classname" "light_flame_large_yellow" +} +{ +"light" "200 " +"origin" "704 1660 952" +"classname" "light" +} +{ +"sounds" "3" +"classname" "func_door" +"angle" "180" +"wait" "-1" +"targetname" "t2" +"model" "*9" +} +{ +"sounds" "3" +"classname" "func_door" +"wait" "-1" +"angle" "0" +"targetname" "t4" +"model" "*10" +} +{ +"classname" "trigger_once" +"targetname" "t4" +"target" "t7" +"model" "*11" +} +{ +"classname" "trigger_once" +"targetname" "t2" +"target" "t7" +"model" "*12" +} +{ +"dmg" "90" +"speed" "200" +"classname" "func_train" +"target" "t5" +"targetname" "t8" +"model" "*13" +} +{ +"classname" "path_corner" +"origin" "-359 1528 1316" +"targetname" "t5" +"target" "t6" +} +{ +"classname" "path_corner" +"origin" "-359 1528 880" +"targetname" "t6" +"target" "t5" +"wait" "-1" +} +{ +"classname" "trigger_counter" +"targetname" "t7" +"target" "t8" +"count" "2" +"model" "*14" +} +{ +"targetname" "t11" +"origin" "-96 1640 1256" +"classname" "info_null" +} +{ +"targetname" "t9" +"origin" "-416 1640 1256" +"classname" "info_null" +} +{ +"light" "400" +"target" "t9" +"origin" "-396 1640 1256" +"classname" "light" +} +{ +"light" "400" +"target" "t11" +"origin" "-116 1640 1256" +"classname" "light" +} +{ +"classname" "light" +"origin" "-328 1564 1532" +} +{ +"classname" "light_flame_small_yellow" +"origin" "-88 1640 1514" +} +{ +"origin" "-424 1640 1514" +"classname" "light_flame_small_yellow" +} +{ +"origin" "-248 1464 1154" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light_flame_small_yellow" +"origin" "-256 1808 1046" +} +{ +"light" "200" +"origin" "-164 1732 1268" +"classname" "light" +} +{ +"classname" "light" +"origin" "-348 1732 1268" +"light" "200" +} +{ +"light" "150" +"origin" "-248 1500 1056" +"classname" "light" +} +{ +"light" "150" +"origin" "-256 1772 956" +"classname" "light" +} +{ +"classname" "light" +"origin" "-128 1636 920" +"light" "150" +} +{ +"light" "150" +"origin" "-124 1640 920" +"classname" "light" +} +{ +"classname" "light" +"origin" "-172 1524 920" +"light" "150" +} +{ +"light" "150" +"origin" "-284 1516 920" +"classname" "light" +} +{ +"classname" "light" +"origin" "-360 1580 920" +"light" "150" +} +{ +"light" "75" +"origin" "-360 1700 920" +"classname" "light" +} +{ +"classname" "light" +"origin" "72 1632 928" +"light" "125" +} +{ +"light" "150" +"origin" "80 1488 928" +"classname" "light" +} +{ +"classname" "light_flame_large_yellow" +"origin" "158 1308 1064" +} +{ +"classname" "light" +"origin" "-192 1688 1380" +"light" "100" +} +{ +"light" "100" +"origin" "-192 1592 1380" +"classname" "light" +} +{ +"classname" "light" +"origin" "-320 1592 1380" +"light" "100" +} +{ +"light" "100" +"origin" "-320 1688 1380" +"classname" "light" +} +{ +"classname" "light" +"origin" "-384 1640 1452" +"light" "125" +} +{ +"classname" "light" +"origin" "-112 1640 1452" +"light" "125" +} +{ +"light" "200" +"origin" "-248 1504 1336" +"classname" "light" +} +{ +"classname" "light" +"origin" "-128 1640 1336" +"light" "200" +} +{ +"light" "200" +"origin" "-384 1640 1336" +"classname" "light" +} +{ +"classname" "light" +"origin" "696 1608 816" +"light" "300" +} +{ +"light" "200" +"classname" "light" +"origin" "888 1328 424" +} +{ +"classname" "light" +"origin" "160 1352 960" +"light" "150" +} +{ +"light" "150" +"origin" "368 1104 1000" +"classname" "light" +} +{ +"classname" "light" +"origin" "1048 1504 1000" +"light" "150" +} +{ +"classname" "light" +"origin" "992 992 1048" +"light" "150" +} +{ +"classname" "light" +"origin" "48 1384 1008" +"light" "100" +} +{ +"light" "150" +"origin" "1080 1144 1048" +"classname" "light" +} +{ +"classname" "light" +"origin" "968 824 976" +"light" "150" +} +{ +"classname" "light" +"origin" "896 1328 1000" +"light" "150" +} +{ +"classname" "light" +"origin" "368 1616 1000" +"light" "175" +} +{ +"classname" "light" +"origin" "256 1496 824" +"light" "150" +} +{ +"light" "150" +"origin" "256 1352 824" +"classname" "light" +} +{ +"classname" "light" +"origin" "856 1368 536" +"light" "200" +} +{ +"light" "150" +"origin" "552 1360 536" +"classname" "light" +} +{ +"classname" "light" +"origin" "872 1552 1056" +"light" "150" +} +{ +"classname" "light" +"origin" "1032 1056 904" +"light" "150" +} +{ +"light" "150" +"origin" "1080 1184 904" +"classname" "light" +} +{ +"classname" "light" +"origin" "864 848 904" +"light" "150" +} +{ +"classname" "light" +"origin" "312 1496 1016" +"light" "175" +} +{ +"light" "200" +"origin" "704 1368 808" +"classname" "light" +} +{ +"light" "150" +"origin" "464 816 904" +"classname" "light" +} +{ +"light" "200" +"origin" "944 888 800" +"classname" "light" +} +{ +"light" "150" +"origin" "888 1112 728" +"classname" "light" +} +{ +"light" "175" +"origin" "1008 1504 728" +"classname" "light" +} +{ +"light" "200" +"origin" "720 1848 1200" +"classname" "light" +} +{ +"light" "200" +"origin" "704 888 672" +"classname" "light" +} +{ +"light" "175" +"origin" "512 1456 1040" +"classname" "light" +} +{ +"light" "150" +"origin" "440 840 380" +"classname" "light" +} +{ +"light" "150" +"origin" "720 1848 1028" +"classname" "light" +} +{ +"light" "150" +"origin" "720 1936 1024" +"classname" "light" +} +{ +"origin" "544 2128 984" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"origin" "712 1912 576" +"classname" "light" +} +{ +"light" "300" +"origin" "720 2544 856" +"classname" "light" +} +{ +"light" "200" +"origin" "888 2048 592" +"classname" "light" +} +{ +"origin" "704 2496 1128" +"classname" "light" +} +{ +"origin" "512 2048 976" +"classname" "light" +"light" "150" +} +{ +"origin" "952 2328 528" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "700 2760 808" +"light" "200" +} +{ +"classname" "light" +"origin" "700 2800 616" +"light" "200" +} +{ +"classname" "light" +"origin" "584 2780 584" +"light" "175" +} +{ +"light" "175" +"origin" "808 2780 584" +"classname" "light" +} +{ +"sounds" "3" +"wait" "-1" +"targetname" "t29" +"classname" "func_door" +"angle" "270" +"model" "*15" +} +{ +"message" "This door is opened elsewhere..." +"wait" "-1" +"classname" "func_door" +"angle" "90" +"model" "*16" +} +{ +"classname" "light" +"origin" "424 2304 1000" +"light" "200" +} +{ +"light" "300" +"origin" "696 2880 1062" +"classname" "light_flame_small_yellow" +} +{ +"light" "200" +"classname" "light" +"origin" "864 2128 984" +} +{ +"classname" "light_flame_large_yellow" +"origin" "702 2154 1228" +"light" "0" +} +{ +"classname" "light" +"origin" "832 2008 1136" +"light" "200" +} +{ +"classname" "light" +"origin" "584 2008 1136" +"light" "200" +} +{ +"light" "200" +"origin" "272 2016 1136" +"classname" "light" +} +{ +"classname" "light" +"origin" "272 2320 1136" +"light" "150" +} +{ +"light" "150" +"origin" "1104 2408 984" +"classname" "light" +} +{ +"sounds" "2" +"classname" "func_plat" +"wait" "4" +"model" "*17" +} +{ +"classname" "light" +"origin" "700 2844 996" +"light" "200" +} +{ +"classname" "light" +"origin" "704 2216 1252" +} +{ +"origin" "936 2304 1252" +"classname" "light" +} +{ +"classname" "light" +"origin" "936 2536 1252" +} +{ +"light" "300" +"classname" "light" +"origin" "488 2536 1252" +} +{ +"origin" "488 2304 1252" +"classname" "light" +"light" "300" +} +{ +"light" "0" +"origin" "998 2306 1228" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light_flame_large_yellow" +"origin" "998 2534 1228" +"light" "0" +} +{ +"light" "0" +"origin" "426 2534 1228" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light_flame_large_yellow" +"origin" "426 2306 1228" +"light" "0" +} +{ +"classname" "light" +"origin" "704 2152 984" +"light" "200" +} +{ +"classname" "light_flame_small_yellow" +"origin" "1160 2400 1038" +"light" "250" +} +{ +"origin" "840 2536 630" +"classname" "light_flame_small_yellow" +"light" "250" +} +{ +"classname" "light_flame_small_yellow" +"origin" "584 2544 630" +"light" "250" +} +{ +"light" "250" +"origin" "408 2304 694" +"classname" "light_flame_small_yellow" +} +{ +"light" "200" +"classname" "light" +"origin" "960 2632 528" +} +{ +"classname" "light" +"origin" "960 2480 528" +"light" "150" +} +{ +"classname" "light" +"origin" "456 2304 624" +"light" "175" +} +{ +"classname" "light" +"origin" "704 2416 576" +"light" "250" +} +{ +"light" "150" +"origin" "728 2184 528" +"classname" "light" +} +{ +"classname" "light" +"origin" "512 2176 528" +"light" "150" +} +{ +"classname" "light" +"origin" "832 2336 656" +"light" "175" +} +{ +"light" "175" +"origin" "592 2336 656" +"classname" "light" +} +{ +"classname" "light" +"origin" "808 2584 576" +"light" "150" +} +{ +"light" "150" +"origin" "616 2576 576" +"classname" "light" +} +{ +"classname" "light_flame_small_yellow" +"origin" "488 2712 694" +"light" "250" +} +{ +"classname" "light" +"origin" "488 2624 608" +"light" "175" +} +{ +"classname" "light" +"origin" "480 2464 608" +"light" "175" +} +{ +"light" "250" +"origin" "184 2184 1038" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light_flame_small_yellow" +"origin" "512 2096 1038" +"light" "250" +} +{ +"classname" "light" +"origin" "224 2184 976" +"light" "150" +} +{ +"classname" "light" +"origin" "848 2024 992" +"light" "200" +} +{ +"classname" "light" +"origin" "256 1992 1000" +"light" "150" +} +{ +"classname" "light" +"origin" "272 2376 1000" +"light" "200" +} +{ +"classname" "light" +"origin" "1112 2208 1032" +"light" "150" +} +{ +"light" "0" +"origin" "698 2860 1228" +"classname" "light_flame_large_yellow" +} +{ +"origin" "700 2808 1252" +"classname" "light" +} +{ +"light" "250" +"origin" "472 2632 1062" +"classname" "light" +} +{ +"classname" "light" +"origin" "952 2632 1062" +"light" "250" +} +{ +"light" "150" +"origin" "952 2424 894" +"classname" "light" +} +{ +"classname" "light" +"origin" "480 2424 894" +"light" "150" +} +{ +"light" "150" +"origin" "896 2296 966" +"classname" "light" +} +{ +"classname" "light" +"origin" "704 2304 966" +"light" "150" +} +{ +"light" "150" +"origin" "552 2304 966" +"classname" "light" +} +{ +"light" "250" +"origin" "704 2184 406" +"classname" "light" +} +{ +"light" "150" +"origin" "712 2000 406" +"classname" "light" +} +{ +"light" "200" +"origin" "504 2224 400" +"classname" "light" +} +{ +"light" "200" +"origin" "960 2576 400" +"classname" "light" +} +{ +"light" "150" +"origin" "960 2400 400" +"classname" "light" +} +{ +"light" "150" +"origin" "808 1112 592" +"classname" "light" +} +{ +"classname" "light" +"origin" "600 1112 592" +"light" "150" +} +{ +"light" "175" +"origin" "1016 128 936" +"classname" "light" +} +{ +"classname" "light" +"origin" "392 128 936" +"light" "175" +} +{ +"light" "150" +"origin" "848 -64 1304" +"classname" "light" +} +{ +"classname" "light" +"origin" "560 -64 1304" +"light" "150" +} +{ +"light" "175" +"origin" "1248 832 1496" +"classname" "light" +} +{ +"light" "150" +"origin" "1096 872 1496" +"classname" "light" +} +{ +"light" "150" +"origin" "896 2208 976" +"classname" "light" +} +{ +"classname" "light" +"origin" "1096 200 1512" +"light" "350" +} +{ +"light" "350" +"origin" "264 192 1512" +"classname" "light" +} +{ +"light" "175" +"origin" "488 448 1264" +"classname" "light" +} +{ +"origin" "1048 728 1456" +"classname" "light" +"light" "200" +} +{ +"light" "125" +"origin" "1328 928 1448" +"classname" "light" +} +{ +"light" "225" +"origin" "696 672 1320" +"classname" "light" +} +{ +"origin" "816 -56 1640" +"classname" "light" +} +{ +"classname" "light" +"origin" "584 -56 1640" +} +{ +"light" "175" +"origin" "880 96 1376" +"classname" "light" +} +{ +"classname" "light" +"origin" "528 96 1376" +"light" "175" +} +{ +"light" "200" +"origin" "960 344 1072" +"classname" "light" +} +{ +"classname" "light" +"origin" "1120 264 1072" +"light" "200" +} +{ +"light" "175" +"origin" "1208 96 1016" +"classname" "light" +} +{ +"light" "175" +"origin" "1024 360 968" +"classname" "light" +} +{ +"classname" "light" +"origin" "328 336 968" +"light" "150" +} +{ +"classname" "light" +"origin" "416 424 1072" +"light" "200" +} +{ +"light" "200" +"origin" "296 256 1072" +"classname" "light" +} +{ +"light" "150" +"origin" "704 48 1040" +"classname" "light" +} +{ +"light" "175" +"origin" "384 464 976" +"classname" "light" +} +{ +"classname" "light" +"origin" "224 264 976" +"light" "150" +} +{ +"light" "150" +"origin" "952 2192 416" +"classname" "light" +} +{ +"classname" "light" +"origin" "1040 -464 1016" +"light" "150" +} +{ +"sounds" "2" +"spawnflags" "1" +"classname" "func_plat" +"model" "*18" +} +{ +"light" "250" +"origin" "1072 -272 1262" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light" +"origin" "1024 -272 1200" +"light" "150" +} +{ +"light" "200" +"origin" "624 -240 1328" +"classname" "light" +} +{ +"light" "175" +"origin" "1080 -624 1168" +"classname" "light" +} +{ +"origin" "456 -576 1230" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light" +"origin" "504 -576 1168" +"light" "175" +} +{ +"origin" "624 -448 924" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light_flame_large_yellow" +"origin" "624 -704 924" +} +{ +"light" "125" +"origin" "664 -448 880" +"classname" "light" +} +{ +"classname" "light" +"origin" "624 -488 880" +"light" "125" +} +{ +"light" "125" +"origin" "584 -448 880" +"classname" "light" +} +{ +"classname" "light" +"origin" "624 -408 880" +"light" "125" +} +{ +"light" "125" +"origin" "624 -664 880" +"classname" "light" +} +{ +"classname" "light" +"origin" "664 -704 880" +"light" "125" +} +{ +"light" "125" +"origin" "624 -744 880" +"classname" "light" +} +{ +"classname" "light" +"origin" "584 -704 880" +"light" "125" +} +{ +"light" "250" +"origin" "296 -96 968" +"classname" "light" +} +{ +"light" "250" +"origin" "1112 -96 968" +"classname" "light" +} +{ +"light" "175" +"origin" "1056 -224 968" +"classname" "light" +} +{ +"light" "500" +"origin" "-264 2120 1504" +"classname" "light" +} +{ +"spawnflags" "2064" +"angle" "0" +"classname" "func_door" +"wait" "-1" +"model" "*19" +} +{ +"sounds" "3" +"classname" "func_door" +"angle" "180" +"spawnflags" "2064" +"wait" "-1" +"model" "*20" +} +{ +"light" "200" +"origin" "704 32 952" +"classname" "light" +} +{ +"target" "t101" +"spawnflags" "256" +"targetname" "t23" +"angle" "90" +"origin" "-248 1560 1224" +"classname" "monster_wizard" +} +{ +"target" "t23" +"classname" "trigger_once" +"model" "*21" +} +{ +"origin" "-280 1560 1348" +"classname" "item_armor2" +} +{ +"origin" "-488 2112 1220" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "-488 2064 1220" +} +{ +"spawnflags" "1536" +"origin" "-272 1784 1156" +"classname" "item_shells" +} +{ +"spawnflags" "256" +"target" "t25" +"targetname" "t24" +"origin" "888 1640 1028" +"classname" "path_corner" +} +{ +"spawnflags" "256" +"target" "t24" +"targetname" "t25" +"classname" "path_corner" +"origin" "624 1264 1028" +} +{ +"spawnflags" "256" +"target" "t24" +"origin" "928 1672 1028" +"classname" "monster_wizard" +} +{ +"spawnflags" "2304" +"target" "t26" +"classname" "trigger_once" +"model" "*22" +} +{ +"target" "t27" +"targetname" "t28" +"origin" "568 2040 928" +"classname" "path_corner" +} +{ +"target" "t28" +"targetname" "t27" +"classname" "path_corner" +"origin" "368 2044 928" +} +{ +"target" "t27" +"origin" "472 2040 944" +"classname" "monster_ogre" +"spawnflags" "1" +} +{ +"sounds" "2" +"target" "t29" +"wait" "-1" +"angle" "90" +"classname" "func_button" +"model" "*23" +} +{ +"sounds" "3" +"angle" "180" +"classname" "func_door" +"model" "*24" +} +{ +"angle" "0" +"classname" "func_door" +"model" "*25" +} +{ +"light" "175" +"origin" "1112 2520 964" +"classname" "light" +} +{ +"origin" "104 1308 892" +"classname" "item_health" +} +{ +"spawnflags" "2048" +"origin" "704 1344 936" +"classname" "item_key1" +"sounds" "1" +} +{ +"target" "t34" +"angle" "180" +"origin" "920 2040 544" +"classname" "monster_ogre" +"spawnflags" "1" +} +{ +"target" "t35" +"targetname" "t34" +"origin" "864 2044 528" +"classname" "path_corner" +} +{ +"target" "t37" +"targetname" "t35" +"classname" "path_corner" +"origin" "704 2048 528" +} +{ +"target" "t34" +"targetname" "t36" +"origin" "704 2048 528" +"classname" "path_corner" +} +{ +"target" "t36" +"targetname" "t37" +"classname" "path_corner" +"origin" "704 1808 528" +} +{ +"targetname" "t38" +"angle" "270" +"origin" "456 2476 544" +"classname" "monster_ogre" +} +{ +"target" "t38" +"classname" "trigger_once" +"model" "*26" +} +{ +"targetname" "t29" +"angle" "0" +"origin" "336 2272 952" +"classname" "monster_knight" +"spawnflags" "768" +} +{ +"targetname" "t39" +"spawnflags" "1" +"wait" "-1" +"angle" "-2" +"classname" "func_door" +"sounds" "1" +"model" "*27" +} +{ +"targetname" "t39" +"angle" "270" +"origin" "712 2540 448" +"classname" "monster_ogre" +} +{ +"target" "t39" +"classname" "trigger_once" +"model" "*28" +} +{ +"classname" "light" +"origin" "712 2544 440" +"light" "200" +} +{ +"classname" "item_health" +"origin" "1064 2184 920" +"spawnflags" "1024" +} +{ +"spawnflags" "1" +"origin" "1128 2184 920" +"classname" "item_health" +} +{ +"classname" "item_spikes" +"origin" "816 2840 920" +} +{ +"origin" "816 2800 920" +"classname" "item_spikes" +} +{ +"spawnflags" "256" +"classname" "monster_wizard" +"origin" "1656 1496 968" +"angle" "180" +"target" "t41" +} +{ +"spawnflags" "2" +"classname" "trigger_teleport" +"target" "t40" +"targetname" "t39" +"model" "*29" +} +{ +"classname" "info_teleport_destination" +"origin" "984 1496 1000" +"angle" "180" +"targetname" "t40" +} +{ +"spawnflags" "256" +"classname" "path_corner" +"origin" "912 1496 1000" +"targetname" "t41" +"target" "t42" +} +{ +"spawnflags" "256" +"origin" "528 1368 1000" +"classname" "path_corner" +"targetname" "t42" +"target" "t41" +} +{ +"classname" "item_health" +"origin" "408 2640 520" +} +{ +"classname" "item_shells" +"origin" "456 2672 520" +"spawnflags" "1" +} +{ +"angle" "0" +"origin" "80 864 968" +"classname" "monster_wizard" +"target" "t44" +} +{ +"targetname" "t119" +"spawnflags" "2" +"classname" "trigger_teleport" +"target" "t45" +"model" "*30" +} +{ +"classname" "info_teleport_destination" +"origin" "432 856 952" +"angle" "45" +"targetname" "t45" +} +{ +"classname" "path_corner" +"origin" "496 872 952" +"target" "t43" +"targetname" "t44" +} +{ +"origin" "872 1056 952" +"classname" "path_corner" +"targetname" "t43" +"target" "t44" +} +{ +"classname" "trigger_once" +"spawnflags" "1792" +"target" "t39" +"model" "*31" +} +{ +"spawnflags" "1024" +"classname" "monster_knight" +"origin" "1168 56 904" +"angle" "135" +"target" "t49" +"targetname" "t67" +} +{ +"classname" "monster_ogre" +"origin" "1800 224 920" +"angle" "180" +"target" "t116" +"spawnflags" "256" +} +{ +"classname" "func_door" +"angle" "-1" +"wait" "-1" +"targetname" "t49" +"lip" "-24" +"model" "*32" +} +{ +"wait" "-1" +"angle" "-1" +"classname" "func_door" +"spawnflags" "1" +"targetname" "t39" +"lip" "-24" +"model" "*33" +} +{ +"classname" "func_door" +"angle" "-1" +"wait" "-1" +"targetname" "t29" +"lip" "-24" +"model" "*34" +} +{ +"spawnflags" "2" +"classname" "trigger_teleport" +"target" "t46" +"model" "*35" +} +{ +"classname" "info_teleport_destination" +"origin" "1104 232 880" +"angle" "180" +"targetname" "t46" +} +{ +"classname" "path_corner" +"origin" "1064 256 880" +"target" "t47" +"targetname" "t48" +"spawnflags" "256" +} +{ +"origin" "312 232 880" +"classname" "path_corner" +"targetname" "t47" +"target" "t48" +"spawnflags" "256" +} +{ +"classname" "info_teleport_destination" +"origin" "704 -40 1256" +"angle" "90" +"targetname" "t50" +} +{ +"classname" "trigger_once" +"target" "t52" +"model" "*36" +} +{ +"spawnflags" "2" +"classname" "trigger_teleport" +"target" "t50" +"targetname" "t52" +"model" "*37" +} +{ +"angle" "90" +"origin" "570 -898 1300" +"classname" "monster_wizard" +"targetname" "t52" +} +{ +"classname" "item_shells" +"origin" "216 120 880" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "192 232 880" +} +{ +"origin" "192 192 880" +"classname" "item_health" +"spawnflags" "1024" +} +{ +"classname" "item_shells" +"origin" "-216 1464 888" +} +{ +"classname" "item_health" +"origin" "816 1160 512" +"spawnflags" "1024" +} +{ +"spawnflags" "1" +"origin" "816 1120 512" +"classname" "item_health" +} +{ +"classname" "monster_wizard" +"origin" "944 840 956" +"angle" "135" +"target" "t53" +"targetname" "t64" +} +{ +"classname" "trigger_once" +"target" "t64" +"model" "*38" +} +{ +"classname" "monster_knight" +"origin" "704 392 1280" +"angle" "270" +"target" "t65" +"spawnflags" "1" +} +{ +"classname" "path_corner" +"origin" "704 208 1264" +"targetname" "t65" +"target" "t66" +} +{ +"origin" "704 496 1264" +"classname" "path_corner" +"targetname" "t66" +"target" "t65" +} +{ +"classname" "trigger_once" +"target" "t67" +"model" "*39" +} +{ +"sounds" "1" +"classname" "func_door" +"angle" "-2" +"wait" "-1" +"targetname" "t72" +"model" "*40" +} +{ +"sounds" "1" +"classname" "func_door" +"wait" "-1" +"angle" "-2" +"targetname" "t72" +"model" "*41" +} +{ +"classname" "trigger_once" +"target" "t72" +"model" "*42" +} +{ +"classname" "info_null" +"origin" "852 -580 820" +"targetname" "t73" +} +{ +"classname" "light" +"origin" "856 -584 936" +"light" "400" +"target" "t73" +} +{ +"classname" "light" +"origin" "920 -448 744" +"light" "150" +} +{ +"light" "150" +"origin" "760 -448 744" +"classname" "light" +} +{ +"classname" "light" +"origin" "552 -424 744" +"light" "150" +} +{ +"light" "150" +"origin" "560 -728 744" +"classname" "light" +} +{ +"classname" "light" +"origin" "776 -712 744" +"light" "150" +} +{ +"light" "150" +"origin" "936 -712 744" +"classname" "light" +} +{ +"classname" "path_corner" +"origin" "652 -576 952" +"targetname" "t75" +"target" "t74" +} +{ +"origin" "908 -576 952" +"classname" "path_corner" +"targetname" "t74" +"target" "t75" +} +{ +"classname" "monster_ogre" +"origin" "816 -260 952" +"angle" "270" +"targetname" "t72" +} +{ +"classname" "monster_ogre" +"origin" "724 -260 952" +"angle" "270" +"targetname" "t72" +"spawnflags" "256" +} +{ +"classname" "item_health" +"origin" "632 -548 820" +"spawnflags" "3072" +} +{ +"origin" "672 -548 820" +"classname" "item_health" +} +{ +"classname" "func_button" +"angle" "-2" +"wait" "-1" +"target" "t76" +"model" "*43" +} +{ +"sounds" "1" +"classname" "func_door" +"angle" "-1" +"wait" "-1" +"targetname" "t76" +"model" "*44" +} +{ +"light" "150" +"origin" "1040 -712 1016" +"classname" "light" +} +{ +"origin" "1112 -576 942" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light" +"origin" "1064 -576 896" +"light" "150" +} +{ +"classname" "light" +"origin" "888 -80 968" +"light" "175" +} +{ +"light" "175" +"origin" "512 -80 968" +"classname" "light" +} +{ +"classname" "item_armor2" +"origin" "1184 -96 920" +} +{ +"classname" "monster_ogre" +"origin" "392 8 912" +"angle" "315" +"targetname" "t77" +"spawnflags" "256" +} +{ +"classname" "trigger_once" +"target" "t77" +"model" "*45" +} +{ +"classname" "item_health" +"origin" "336 -224 888" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "968 16 888" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "560 2808 516" +"spawnflags" "1" +} +{ +"classname" "path_corner" +"origin" "1056 -384 824" +"targetname" "t78" +"target" "t79" +"spawnflags" "256" +} +{ +"origin" "1056 -736 824" +"classname" "path_corner" +"targetname" "t79" +"target" "t78" +"spawnflags" "256" +} +{ +"classname" "monster_ogre" +"origin" "1064 -656 840" +"angle" "90" +"target" "t78" +"spawnflags" "257" +} +{ +"angle" "90" +"origin" "848 -880 952" +"classname" "monster_ogre" +"targetname" "t72" +} +{ +"classname" "item_shells" +"origin" "1160 16 1248" +} +{ +"classname" "item_health" +"origin" "280 64 1248" +} +{ +"classname" "item_rockets" +"origin" "648 -256 928" +"spawnflags" "1025" +} +{ +"classname" "item_spikes" +"origin" "648 -304 1248" +} +{ +"origin" "696 -304 1248" +"classname" "item_spikes" +} +{ +"classname" "light_flame_small_yellow" +"origin" "768 -352 1230" +} +{ +"target" "t83" +"wait" ".8" +"classname" "trigger_multiple" +"model" "*46" +} +{ +"target" "t83" +"classname" "trigger_multiple" +"wait" ".8" +"model" "*47" +} +{ +"target" "t83" +"wait" ".8" +"classname" "trigger_multiple" +"model" "*48" +} +{ +"target" "t83" +"classname" "trigger_multiple" +"wait" ".8" +"model" "*49" +} +{ +"target" "t83" +"wait" ".8" +"classname" "trigger_multiple" +"model" "*50" +} +{ +"targetname" "t83" +"classname" "trap_spikeshooter" +"origin" "1108 -576 1140" +"spawnflags" "1" +"angle" "180" +} +{ +"targetname" "t83" +"angle" "90" +"spawnflags" "1" +"origin" "768 -796 1140" +"classname" "trap_spikeshooter" +} +{ +"origin" "1112 -576 1230" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light_flame_small_yellow" +"origin" "768 -800 1230" +} +{ +"classname" "light" +"origin" "712 -756 1168" +"light" "175" +} +{ +"light" "175" +"origin" "768 -424 1168" +"classname" "light" +} +{ +"light" "175" +"origin" "888 -744 956" +"classname" "light" +} +{ +"classname" "light" +"origin" "888 -408 956" +"light" "175" +} +{ +"origin" "384 -224 888" +"classname" "item_shells" +} +{ +"origin" "584 1784 920" +"classname" "item_health" +} +{ +"origin" "832 2064 920" +"classname" "item_shells" +} +{ +"target" "t72" +"classname" "trigger_once" +"model" "*51" +} +{ +"target" "t85" +"targetname" "t84" +"origin" "1560 216 896" +"classname" "path_corner" +} +{ +"target" "t48" +"targetname" "t85" +"classname" "path_corner" +"origin" "1456 216 896" +} +{ +"origin" "704 1368 516" +"classname" "weapon_supernailgun" +} +{ +"spawnflags" "1" +"origin" "184 1928 920" +"classname" "item_spikes" +} +{ +"classname" "item_spikes" +"origin" "656 1816 528" +"spawnflags" "768" +} +{ +"classname" "item_shells" +"origin" "1072 -800 820" +"spawnflags" "1024" +} +{ +"classname" "monster_ogre" +"origin" "840 -40 1276" +"angle" "180" +"targetname" "t86" +"spawnflags" "768" +} +{ +"classname" "trigger_once" +"target" "t86" +"model" "*52" +} +{ +"classname" "light" +"origin" "472 -576 876" +"light" "150" +} +{ +"classname" "item_shells" +"origin" "656 680 1256" +"spawnflags" "1536" +} +{ +"angle" "270" +"origin" "880 2224 536" +"classname" "monster_knight" +"spawnflags" "256" +} +{ +"angle" "180" +"origin" "1112 2424 944" +"classname" "monster_ogre" +"spawnflags" "1281" +} +{ +"targetname" "t88" +"target" "t87" +"origin" "360 384 880" +"classname" "path_corner" +"spawnflags" "1280" +} +{ +"target" "t88" +"targetname" "t87" +"classname" "path_corner" +"origin" "504 160 880" +"spawnflags" "1280" +} +{ +"target" "t87" +"angle" "315" +"origin" "384 320 896" +"classname" "monster_knight" +"spawnflags" "1280" +} +{ +"spawnflags" "257" +"targetname" "t86" +"angle" "0" +"origin" "376 120 1272" +"classname" "monster_ogre" +} +{ +"origin" "776 1368 916" +"classname" "item_shells" +"spawnflags" "1024" +} +{ +"classname" "item_spikes" +"origin" "184 1968 920" +"spawnflags" "1" +} +{ +"classname" "monster_wizard" +"origin" "312 936 944" +"angle" "45" +"spawnflags" "769" +} +{ +"classname" "monster_knight" +"origin" "704 -80 908" +"angle" "90" +} +{ +"angle" "0" +"origin" "568 -56 1276" +"classname" "monster_ogre" +"targetname" "t86" +"spawnflags" "768" +} +{ +"spawnflags" "1536" +"targetname" "t90" +"target" "t89" +"origin" "720 1696 924" +"classname" "path_corner" +} +{ +"spawnflags" "1536" +"target" "t90" +"targetname" "t89" +"classname" "path_corner" +"origin" "720 1416 924" +} +{ +"spawnflags" "1537" +"target" "t90" +"origin" "704 1784 948" +"classname" "monster_ogre" +} +{ +"classname" "func_door_secret" +"angle" "0" +"spawnflags" "1" +"targetname" "t91" +"model" "*53" +"t_length" "73" // svdijk -- added to prevent z-fighting +} +{ +"classname" "func_button" +"angle" "-2" +"wait" "-1" +"target" "t92" +"model" "*54" +} +{ +"classname" "func_button" +"angle" "-2" +"wait" "-1" +"target" "t92" +"model" "*55" +} +{ +"classname" "func_button" +"wait" "-1" +"angle" "-2" +"target" "t92" +"model" "*56" +} +{ +"classname" "func_button" +"angle" "-2" +"wait" "-1" +"target" "t92" +"model" "*57" +} +{ +"classname" "func_button" +"wait" "-1" +"angle" "-2" +"target" "t92" +"model" "*58" +} +{ +"classname" "trigger_counter" +"count" "5" +"target" "t91" +"targetname" "t92" +"model" "*59" +} +{ +"classname" "light" +"origin" "680 -920 1144" +"light" "150" +} +{ +"classname" "item_spikes" +"origin" "752 -876 928" +"spawnflags" "1" +} +{ +"spawnflags" "3" +"angle" "0" +"classname" "func_door_secret" +"targetname" "t91" +"model" "*60" +"t_length" "73" // svdijk -- added to prevent z-fighting +} +{ +"light" "150" +"origin" "680 -256 1144" +"classname" "light" +} +{ +"classname" "trigger_once" +"spawnflags" "1792" +"target" "t72" +"model" "*61" +} +{ +"classname" "trigger_secret" +"sounds" "1" +"targetname" "t8" +"model" "*62" +} +{ +"angle" "270" +"origin" "704 624 1280" +"classname" "monster_knight" +"spawnflags" "1" +} +{ +"angle" "225" +"origin" "1016 -440 1128" +"classname" "monster_knight" +} +{ +"angle" "180" +"origin" "1024 -728 1128" +"classname" "monster_knight" +} +{ +"spawnflags" "256" +"angle" "180" +"origin" "1008 -568 1128" +"classname" "monster_knight" +} +{ +"spawnflags" "256" +"classname" "monster_knight" +"origin" "304 2312 952" +"angle" "0" +"targetname" "t29" +} +{ +"spawnflags" "1025" +"classname" "monster_knight" +"origin" "272 136 896" +"angle" "45" +} +{ +"classname" "monster_wizard" +"origin" "784 -576 960" +"angle" "0" +"target" "t74" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "732 -936 928" +} +{ +"origin" "772 -936 928" +"classname" "item_health" +} +{ +"spawnflags" "256" +"classname" "monster_knight" +"origin" "704 -248 1272" +"angle" "0" +} +{ +"classname" "path_corner" +"origin" "1328 928 1396" +"targetname" "t93" +"target" "t94" +"spawnflags" "512" +} +{ +"origin" "1176 928 1396" +"classname" "path_corner" +"target" "t93" +"targetname" "t94" +"spawnflags" "512" +} +{ +"classname" "monster_knight" +"origin" "1192 884 1412" +"angle" "0" +"target" "t93" +"spawnflags" "513" +} +{ +"classname" "monster_knight" +"origin" "704 2376 944" +"angle" "90" +} +{ +"classname" "monster_knight" +"origin" "888 2312 944" +"angle" "180" +"targetname" "t95" +} +{ +"angle" "0" +"origin" "512 2304 944" +"classname" "monster_knight" +"targetname" "t95" +"spawnflags" "768" +} +{ +"classname" "trigger_once" +"target" "t95" +"model" "*63" +} +{ +"spawnflags" "256" +"angle" "315" +"origin" "728 2312 536" +"classname" "monster_knight" +} +{ +"light" "200" +"origin" "1296 1528 936" +"classname" "light" +} +{ +"light" "250" +"origin" "1432 1360 982" +"classname" "light_flame_small_yellow" +} +{ +"light" "150" +"origin" "1400 1360 920" +"classname" "light" +} +{ +"light" "200" +"origin" "1248 1344 680" +"classname" "light" +} +{ +"lip" "-384" +"wait" "-1" +"angle" "90" +"classname" "func_door" +"targetname" "t98" +"model" "*64" +} +{ +"light" "150" +"origin" "1152 1328 584" +"classname" "light" +} +{ +"origin" "1376 1480 864" +"classname" "item_health" +} +{ +"sounds" "1" +"classname" "trigger_secret" +"model" "*65" +} +{ +"classname" "func_button" +"sounds" "1" +"angle" "0" +"wait" "-1" +"target" "t97" +"model" "*66" +} +{ +"classname" "func_button" +"wait" "-1" +"angle" "0" +"sounds" "1" +"target" "t97" +"model" "*67" +} +{ +"classname" "trigger_counter" +"targetname" "t97" +"target" "t98" +"model" "*68" +} +{ +"classname" "light" +"origin" "880 -888 968" +"light" "150" +} +{ +"light" "150" +"origin" "880 -264 968" +"classname" "light" +} +{ +"angle" "180" +"origin" "1112 2344 944" +"classname" "monster_ogre" +"spawnflags" "769" +} +{ +"angle" "270" +"origin" "1120 880 1412" +"classname" "monster_ogre" +"spawnflags" "257" +} +{ +"map" "e1m8" +"classname" "trigger_changelevel" +"model" "*69" +} +{ +"light" "175" +"origin" "824 -756 1168" +"classname" "light" +} +{ +"classname" "light" +"origin" "1080 -528 1168" +"light" "175" +} +{ +"classname" "monster_wizard" +"origin" "672 -392 1024" +"angle" "315" +"spawnflags" "257" +} +{ +"classname" "monster_knight" +"origin" "1008 -656 1128" +"angle" "180" +"spawnflags" "768" +} +{ +"origin" "520 1064 440" +"classname" "air_bubbles" +} +{ +"classname" "item_spikes" +"origin" "16 1432 892" +} +{ +"classname" "trigger_once" +"message" "A secret cave has opened..." +"targetname" "t98" +"model" "*70" +} +{ +"target" "t4" +"health" "1" +"wait" "-1" +"angle" "0" +"classname" "func_button" +"model" "*71" +} +{ +"target" "t2" +"health" "1" +"wait" "-1" +"angle" "180" +"classname" "func_button" +"model" "*72" +} +{ +"target" "t49" +"spawnflags" "769" +"angle" "135" +"origin" "1208 128 904" +"classname" "monster_demon1" +} +{ +"spawnflags" "769" +"angle" "45" +"origin" "288 160 896" +"classname" "monster_demon1" +} +{ +"spawnflags" "768" +"classname" "monster_ogre" +"origin" "692 -884 952" +"angle" "90" +} +{ +"classname" "monster_ogre" +"origin" "-312 1648 1372" +"angle" "90" +"targetname" "t23" +"spawnflags" "768" +} +{ +"angle" "90" +"origin" "-192 1648 1372" +"classname" "monster_ogre" +"targetname" "t23" +"spawnflags" "768" +} +{ +"classname" "monster_ogre" +"origin" "704 1288 540" +"angle" "270" +"spawnflags" "768" +} +{ +"targetname" "t101" +"target" "t106" +"spawnflags" "770" +"classname" "trigger_teleport" +"model" "*73" +} +{ +"spawnflags" "768" +"targetname" "t101" +"angle" "270" +"origin" "-256 2424 1288" +"classname" "monster_wizard" +} +{ +"targetname" "t101" +"origin" "-248 2440 1280" +"classname" "trigger_relay" +} +{ +"targetname" "t29" +"spawnflags" "256" +"angle" "0" +"origin" "144 2648 1024" +"classname" "monster_wizard" +} +{ +"targetname" "t29" +"spawnflags" "768" +"classname" "monster_wizard" +"origin" "144 2592 1024" +"angle" "0" +} +{ +"targetname" "t29" +"spawnflags" "768" +"angle" "0" +"origin" "144 2536 1024" +"classname" "monster_wizard" +} +{ +"targetname" "t29" +"target" "t102" +"spawnflags" "258" +"classname" "trigger_teleport" +"model" "*74" +} +{ +"targetname" "t29" +"target" "t103" +"spawnflags" "770" +"classname" "trigger_teleport" +"model" "*75" +} +{ +"targetname" "t29" +"target" "t104" +"spawnflags" "770" +"classname" "trigger_teleport" +"model" "*76" +} +{ +"angle" "270" +"targetname" "t102" +"spawnflags" "256" +"origin" "704 2656 1008" +"classname" "info_teleport_destination" +} +{ +"angle" "270" +"targetname" "t103" +"spawnflags" "768" +"classname" "info_teleport_destination" +"origin" "920 2520 1008" +} +{ +"angle" "0" +"targetname" "t104" +"spawnflags" "768" +"origin" "592 2192 1008" +"classname" "info_teleport_destination" +} +{ +"sounds" "1" +"classname" "func_door" +"angle" "0" +"wait" "-1" +"speed" "150" +"targetname" "t105" +"model" "*77" +} +{ +"classname" "monster_demon1" +"origin" "1056 -880 1128" +"angle" "90" +"spawnflags" "768" +"targetname" "t105" +} +{ +"classname" "trigger_once" +"spawnflags" "768" +"target" "t105" +"model" "*78" +} +{ +"classname" "light" +"origin" "1056 -920 1184" +"light" "125" +} +{ +"classname" "trigger_relay" +"origin" "1104 -864 1120" +"target" "t105" +} +{ +"classname" "monster_ogre" +"origin" "1120 768 1416" +"angle" "180" +"spawnflags" "769" +} +{ +"classname" "air_bubbles" +"origin" "884 1616 440" +} +{ +"targetname" "t106" +"spawnflags" "768" +"angle" "270" +"origin" "-264 2232 1296" +"classname" "info_teleport_destination" +} +{ +"classname" "path_corner" +"origin" "568 1984 928" +"targetname" "t107" +"target" "t108" +"spawnflags" "256" +} +{ +"origin" "424 1960 928" +"classname" "path_corner" +"target" "t107" +"spawnflags" "256" +"targetname" "t111" +} +{ +"classname" "path_corner" +"origin" "704 2024 928" +"targetname" "t108" +"target" "t109" +"spawnflags" "256" +} +{ +"origin" "712 1712 928" +"classname" "path_corner" +"targetname" "t109" +"target" "t110" +"spawnflags" "256" +} +{ +"classname" "path_corner" +"origin" "712 1416 928" +"targetname" "t110" +"target" "t109" +"spawnflags" "256" +} +{ +"classname" "func_door" +"angle" "-2" +"wait" "-1" +"lip" "-24" +"targetname" "t26" +"spawnflags" "2304" +"model" "*79" +} +{ +"classname" "monster_ogre" +"origin" "240 2048 944" +"angle" "0" +"spawnflags" "257" +"target" "t111" +} +{ +"target" "t23" +"spawnflags" "1792" +"classname" "trigger_once" +"model" "*80" +} +{ +"classname" "monster_knight" +"origin" "576 2768 536" +"angle" "0" +"spawnflags" "256" +} +{ +"spawnflags" "256" +"angle" "180" +"origin" "824 2776 536" +"classname" "monster_knight" +} +{ +"classname" "monster_wizard" +"origin" "704 -1032 1024" +"angle" "90" +"spawnflags" "256" +"targetname" "t52" +} +{ +"angle" "90" +"origin" "760 -1032 1024" +"classname" "monster_wizard" +"spawnflags" "768" +"targetname" "t114" +} +{ +"classname" "monster_wizard" +"origin" "816 -1032 1024" +"angle" "90" +"spawnflags" "768" +"targetname" "t114" +} +{ +"targetname" "t52" +"classname" "trigger_teleport" +"spawnflags" "258" +"target" "t112" +"model" "*81" +} +{ +"classname" "trigger_teleport" +"spawnflags" "770" +"target" "t113" +"targetname" "t114" +"model" "*82" +} +{ +"targetname" "t114" +"classname" "trigger_teleport" +"spawnflags" "770" +"target" "t115" +"model" "*83" +} +{ +"classname" "info_teleport_destination" +"origin" "896 224 1352" +"angle" "135" +"spawnflags" "256" +"targetname" "t112" +} +{ +"classname" "info_teleport_destination" +"origin" "488 1648 1016" +"angle" "315" +"spawnflags" "768" +"targetname" "t113" +} +{ +"classname" "trigger_once" +"spawnflags" "768" +"target" "t114" +"model" "*84" +} +{ +"classname" "info_teleport_destination" +"origin" "800 904 928" +"angle" "90" +"spawnflags" "768" +"targetname" "t115" +} +{ +"angle" "270" +"origin" "-256 2232 1242" +"classname" "info_player_deathmatch" +} +{ +"spawnflags" "1792" +"origin" "-256 2096 1218" +"classname" "weapon_supershotgun" +} +{ +"angle" "270" +"origin" "704 424 1266" +"classname" "info_player_deathmatch" +} +{ +"angle" "270" +"origin" "704 2488 946" +"classname" "info_player_deathmatch" +} +{ +"angle" "270" +"origin" "704 1968 546" +"classname" "info_player_deathmatch" +} +{ +"angle" "90" +"origin" "704 104 898" +"classname" "info_player_deathmatch" +} +{ +"angle" "270" +"origin" "704 1568 938" +"classname" "info_player_deathmatch" +} +{ +"spawnflags" "1792" +"origin" "704 1344 912" +"classname" "weapon_rocketlauncher" +} +{ +"angle" "0" +"origin" "712 -576 840" +"classname" "info_player_deathmatch" +} +{ +"spawnflags" "1792" +"origin" "944 -576 816" +"classname" "weapon_nailgun" +} +{ +"angle" "180" +"origin" "1064 -576 1128" +"classname" "info_player_deathmatch" +} +{ +"spawnflags" "1792" +"origin" "696 584 1256" +"classname" "weapon_grenadelauncher" +} +{ +"classname" "light" +"origin" "316 804 780" +"light" "150" +} +{ +"classname" "light" +"origin" "316 804 644" +"light" "75" +} +{ +"classname" "item_rockets" +"origin" "298 710 706" +"spawnflags" "1" +} +{ +"classname" "item_shells" +"origin" "988 -928 1104" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "-56 2112 1220" +"spawnflags" "3584" +} +{ +"classname" "item_health" +"origin" "-56 2072 1220" +"spawnflags" "2305" +} +{ +"spawnflags" "1" +"origin" "584 2416 512" +"classname" "item_spikes" +} +{ +"origin" "688 1392 516" +"classname" "item_spikes" +} +{ +"classname" "item_artifact_invulnerability" +"origin" "712 2312 948" +"spawnflags" "1792" +} +{ +"origin" "32 1392 916" +"classname" "item_artifact_envirosuit" +} +{ +"mangle" "26 310 0" +"origin" "384 488 1552" +"classname" "info_intermission" +} +{ +"light" "100" +"origin" "800 1160 464" +"classname" "light" +} +{ +"classname" "light" +"origin" "608 1160 464" +"light" "100" +} +{ +"light" "100" +"origin" "604 1472 464" +"classname" "light" +} +{ +"target" "t40" +"classname" "trigger_teleport" +"model" "*85" +} +{ +"mangle" "-20 75 0" +"origin" "456 2144 568" +"classname" "info_intermission" +} +{ +"mangle" "10 80 0" +"origin" "464 1032 1000" +"classname" "info_intermission" +} +{ +"mangle" "20 135 0" +"origin" "1080 -752 1008" +"classname" "info_intermission" +} +{ +"classname" "trigger_secret" +"model" "*86" +} +{ +"classname" "path_corner" +"origin" "1632 216 896" +"targetname" "t116" +"target" "t84" +} +{ +"classname" "item_spikes" +"origin" "1200 48 872" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "928 2664 320" +"spawnflags" "1" +} +{ +"classname" "item_shells" +"origin" "1240 768 1384" +"spawnflags" "1" +} +{ +"classname" "item_shells" +"origin" "-88 2160 1224" +"spawnflags" "2049" +} +{ +"classname" "info_player_coop" +"origin" "-208 2272 1240" +"angle" "270" +} +{ +"angle" "270" +"origin" "-304 2272 1240" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "-352 2272 1240" +"angle" "270" +} +{ +"light" "200" +"origin" "1288 1648 956" +"classname" "light" +} +{ +"classname" "item_spikes" +"origin" "-264 1464 888" +} +{ +"spawnflags" "1792" +"origin" "1296 1488 888" +"classname" "item_artifact_invisibility" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*87" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*88" +} +{ +"target" "t118" +"targetname" "t117" +"origin" "-176 1640 888" +"classname" "path_corner" +} +{ +"targetname" "t118" +"target" "t117" +"classname" "path_corner" +"origin" "-320 1640 888" +} +{ +"target" "t117" +"origin" "-256 1632 904" +"classname" "monster_knight" +"spawnflags" "1" +} +{ +"origin" "1376 1424 864" +"classname" "weapon_grenadelauncher" +} +{ +"spawnflags" "1" +"targetname" "t120" +"target" "t119" +"classname" "trigger_counter" +"model" "*89" +} +{ +"target" "t120" +"targetname" "t53" +"classname" "trigger_once" +"model" "*90" +} +{ +"target" "t120" +"targetname" "t39" +"classname" "trigger_once" +"model" "*91" +} +{ +"classname" "light" +"origin" "480 2568 568" +"light" "125" +} +{ +"origin" "162 1482 976" +"classname" "ambient_drip" +} +{ +"origin" "786 1010 584" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "778 1210 584" +} +{ +"origin" "594 1202 584" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "602 1010 584" +} +{ +"origin" "786 1514 584" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "794 1698 584" +} +{ +"origin" "618 1690 584" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "618 1522 584" +} +{ +"origin" "698 1362 584" +"classname" "ambient_drip" +} +{ +"origin" "714 1970 592" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "898 2170 592" +} +{ +"origin" "938 2346 592" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "682 2298 592" +} +{ +"origin" "458 2306 592" +"classname" "ambient_drip" +} +{ +"origin" "458 1690 880" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "322 1506 880" +} +{ +"origin" "338 1226 880" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "466 1090 880" +} +{ +"origin" "394 882 880" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "674 810 880" +} +{ +"origin" "914 818 880" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "922 1034 880" +} +{ +"origin" "1082 1266 880" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "994 1442 880" +} +{ +"origin" "898 1714 880" +"classname" "ambient_drip" +} +{ +"origin" "706 1362 1080" +"classname" "ambient_drip" +} +{ +"origin" "1194 1522 1032" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "1314 1354 1032" +} +{ +"origin" "442 354 920" +"classname" "ambient_swamp1" +} +{ +"origin" "978 314 920" +"classname" "ambient_swamp2" +} diff --git a/Misc/qs_pak/maps/e2m2.diff b/Misc/qs_pak/maps/e2m2.diff new file mode 100644 index 0000000..4dbf2dc --- /dev/null +++ b/Misc/qs_pak/maps/e2m2.diff @@ -0,0 +1,54 @@ +--- e2m2.ent ++++ e2m2@fbfe.ent +@@ -908,20 +908,21 @@ + { + "classname" "func_door" + "angle" "-2" + "spawnflags" "33" + "speed" "10" + "sounds" "3" + "wait" "-1" + "targetname" "t16" + "dmg" "100" + "model" "*13" ++"lip" "7" // svdijk -- added to prevent z-fighting + } + { + "sounds" "3" + "classname" "func_door" + "angle" "90" + "spawnflags" "2056" + "wait" "-1" + "model" "*14" + } + { +@@ -1423,27 +1424,27 @@ + { + "target" "t39" + "targetname" "t40" + "origin" "-216 280 104" + "classname" "path_corner" + } + { + "target" "t40" + "targetname" "t38" + "classname" "path_corner" +-"origin" "-16 280 104" ++"origin" "-15 280 104" // svdijk -- changed to prevent z-fighting (was "-16 280 104") + } + { + "target" "t38" + "wait" "-1" + "targetname" "t39" +-"origin" "-16 280 104" ++"origin" "-15 280 104" // svdijk -- changed to prevent z-fighting (was "-16 280 104") + "classname" "path_corner" + } + { + "angle" "180" + "origin" "680 1472 24" + "classname" "monster_ogre" + "spawnflags" "256" + } + { + "spawnflags" "256" diff --git a/Misc/qs_pak/maps/e2m2@fbfe.ent b/Misc/qs_pak/maps/e2m2@fbfe.ent new file mode 100644 index 0000000..82dc0da --- /dev/null +++ b/Misc/qs_pak/maps/e2m2@fbfe.ent @@ -0,0 +1,2005 @@ +{ +"message" "the Ogre Citadel" +"sounds" "8" +"wad" "gfx/wizard.wad" +"classname" "worldspawn" +"worldtype" "0" +} +{ +"origin" "160 -160 120" +"classname" "light" +} +{ +"angle" "90" +"origin" "-256 -1952 280" +"classname" "info_player_start" +} +{ +"classname" "light" +"origin" "160 -392 248" +"light" "200" +} +{ +"classname" "light" +"origin" "160 -648 184" +} +{ +"classname" "light" +"origin" "-56 -392 248" +"light" "200" +} +{ +"classname" "light" +"origin" "376 -392 248" +"light" "200" +} +{ +"classname" "light" +"origin" "288 -416 -72" +"light" "200" +} +{ +"classname" "light" +"origin" "32 -416 -72" +"light" "200" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "10 -270 148" +"light" "250" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "314 -270 148" +"light" "250" +} +{ +"classname" "light" +"origin" "-264 -440 248" +"light" "200" +} +{ +"classname" "light" +"origin" "584 -440 248" +"light" "200" +} +{ +"classname" "light" +"origin" "544 -648 248" +} +{ +"light" "150" +"origin" "648 -456 -184" +"classname" "light" +} +{ +"origin" "376 -800 184" +"classname" "light" +} +{ +"classname" "light" +"origin" "-152 -752 184" +"light" "250" +} +{ +"classname" "light" +"origin" "-232 -592 184" +"light" "250" +} +{ +"classname" "light" +"origin" "160 112 184" +} +{ +"classname" "light" +"origin" "160 352 120" +} +{ +"classname" "light" +"origin" "160 216 -48" +"light" "120" +} +{ +"classname" "light" +"origin" "160 16 -48" +"light" "120" +} +{ +"classname" "light" +"origin" "160 544 144" +"light" "225" +} +{ +"classname" "light" +"origin" "480 576 88" +} +{ +"classname" "light" +"origin" "480 448 88" +} +{ +"classname" "light" +"origin" "480 576 168" +"light" "250" +} +{ +"classname" "light" +"origin" "480 448 168" +"light" "250" +} +{ +"classname" "light" +"origin" "160 896 312" +"light" "350" +} +{ +"classname" "light" +"origin" "288 896 312" +"light" "100" +} +{ +"classname" "light" +"origin" "32 896 312" +"light" "100" +} +{ +"classname" "light" +"origin" "160 1008 312" +"light" "100" +} +{ +"classname" "light" +"origin" "160 784 312" +"light" "100" +} +{ +"classname" "light" +"origin" "392 120 184" +"light" "350" +} +{ +"classname" "light" +"origin" "568 208 184" +"light" "350" +} +{ +"classname" "light" +"origin" "720 480 184" +} +{ +"classname" "light" +"origin" "640 632 184" +} +{ +"classname" "light" +"origin" "472 1152 56" +} +{ +"classname" "light" +"origin" "512 896 152" +} +{ +"origin" "800 800 184" +"classname" "light" +} +{ +"light" "200" +"origin" "632 1264 -40" +"classname" "light" +} +{ +"origin" "800 1032 184" +"classname" "light" +} +{ +"origin" "760 1472 64" +"classname" "light" +} +{ +"light" "200" +"origin" "544 1416 56" +"classname" "light" +} +{ +"origin" "672 1256 184" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"origin" "1024 1272 184" +"classname" "light" +} +{ +"light" "200" +"origin" "992 1440 184" +"classname" "light" +} +{ +"origin" "1240 488 184" +"classname" "light" +} +{ +"origin" "1280 136 176" +"classname" "light" +} +{ +"origin" "160 1304 136" +"classname" "light" +} +{ +"origin" "160 1648 256" +"classname" "light" +"light" "200" +} +{ +"origin" "240 1600 256" +"classname" "light" +"light" "200" +} +{ +"origin" "16 1616 168" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"origin" "-120 1304 40" +"classname" "light" +} +{ +"origin" "-352 1144 16" +"classname" "light" +"light" "250" +} +{ +"origin" "-56 1096 64" +"classname" "light" +} +{ +"light" "200" +"origin" "-56 1152 280" +"classname" "light" +} +{ +"light" "350" +"origin" "-440 1144 200" +"classname" "light" +} +{ +"light" "200" +"origin" "-352 1336 -72" +"classname" "light" +} +{ +"origin" "-488 368 56" +"classname" "light" +"light" "250" +} +{ +"light" "350" +"origin" "-488 896 136" +"classname" "light" +} +{ +"origin" "-216 896 184" +"classname" "light" +"light" "250" +} +{ +"origin" "-128 536 168" +"classname" "light" +"light" "200" +} +{ +"light" "150" +"origin" "-104 480 32" +"classname" "light" +} +{ +"light" "150" +"origin" "-208 936 56" +"classname" "light" +} +{ +"light" "150" +"origin" "-208 736 32" +"classname" "light" +} +{ +"origin" "-344 64 184" +"classname" "light" +} +{ +"light" "350" +"origin" "-648 384 184" +"classname" "light" +} +{ +"light" "350" +"origin" "-488 688 184" +"classname" "light" +} +{ +"light" "150" +"origin" "-680 496 -36" +"classname" "light" +} +{ +"light" "350" +"origin" "-600 1104 96" +"classname" "light" +} +{ +"origin" "-824 896 168" +"classname" "light" +} +{ +"origin" "-896 600 160" +"classname" "light" +} +{ +"target" "t1" +"classname" "trigger_teleport" +"model" "*1" +} +{ +"spawnflags" "1792" +"targetname" "t1" +"origin" "-448 264 -56" +"classname" "info_teleport_destination" +"angle" "45" +} +{ +"light" "250" +"origin" "-168 1320 160" +"classname" "light" +} +{ +"origin" "-24 896 184" +"classname" "light" +} +{ +"origin" "-104 896 184" +"classname" "light" +"light" "250" +} +{ +"spawnflags" "2" +"origin" "-680 880 48" +"classname" "item_health" +} +{ +"angle" "90" +"origin" "-896 512 24" +"classname" "info_player_deathmatch" +} +{ +"angle" "90" +"origin" "-184 560 128" +"classname" "info_player_deathmatch" +} +{ +"angle" "270" +"origin" "160 1640 160" +"classname" "info_player_deathmatch" +} +{ +"angle" "90" +"origin" "1272 112 80" +"classname" "info_player_deathmatch" +} +{ +"angle" "90" +"origin" "176 -784 24" +"classname" "info_player_deathmatch" +} +{ +"spawnflags" "1" +"origin" "208 -160 0" +"classname" "item_rockets" +} +{ +"origin" "64 464 0" +"classname" "item_health" +} +{ +"origin" "120 464 0" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "-8 840 64" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "-8 952 64" +"classname" "item_health" +} +{ +"spawnflags" "9" +"origin" "568 880 0" +"classname" "item_weapon" +} +{ +"origin" "456 1104 -88" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "664 1272 -88" +"classname" "item_shells" +} +{ +"angle" "225" +"origin" "888 1312 120" +"classname" "info_player_deathmatch" +} +{ +"origin" "1328 168 56" +"classname" "item_health" +} +{ +"origin" "1328 128 56" +"classname" "item_health" +} +{ +"origin" "1328 208 56" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "816 1472 0" +"classname" "item_shells" +} +{ +"light" "200" +"origin" "-64 -120 -56" +"classname" "light" +} +{ +"light" "200" +"origin" "-296 -160 -56" +"classname" "light" +} +{ +"light" "200" +"origin" "-296 -208 -272" +"classname" "light" +} +{ +"classname" "func_plat" +"model" "*2" +} +{ +"spawnflags" "2" +"origin" "-192 -176 -80" +"classname" "item_health" +} +{ +"light" "350" +"origin" "-816 128 184" +"classname" "light" +} +{ +"light" "350" +"origin" "-664 -80 184" +"classname" "light" +} +{ +"light" "250" +"origin" "-656 112 32" +"classname" "light" +} +{ +"origin" "-352 208 56" +"classname" "light" +"light" "250" +} +{ +"origin" "-184 504 24" +"classname" "light" +"light" "250" +} +{ +"classname" "item_armor1" +"origin" "400 -888 0" +} +{ +"spawnflags" "1792" +"classname" "item_armorInv" +"origin" "-104 448 104" +} +{ +"classname" "item_armor2" +"origin" "-680 496 32" +} +{ +"classname" "weapon_grenadelauncher" +"origin" "168 1608 136" +"spawnflags" "1792" +} +{ +"classname" "weapon_rocketlauncher" +"origin" "1232 176 56" +"spawnflags" "1792" +} +{ +"classname" "weapon_supernailgun" +"origin" "-960 944 40" +"spawnflags" "1792" +} +{ +"classname" "weapon_supershotgun" +"origin" "752 1464 0" +"spawnflags" "1792" +} +{ +"classname" "weapon_nailgun" +"origin" "160 120 24" +"spawnflags" "1792" +} +{ +"classname" "item_rockets" +"origin" "-224 792 104" +"spawnflags" "1792" +} +{ +"classname" "item_rockets" +"origin" "-640 120 -56" +"spawnflags" "1792" +} +{ +"light" "200" +"origin" "-70 -1126 212" +"classname" "light_torch_small_walltorch" +} +{ +"light" "200" +"classname" "light_torch_small_walltorch" +"origin" "186 -1134 148" +} +{ +"light" "200" +"origin" "138 -966 100" +"classname" "light_torch_small_walltorch" +} +{ +"light" "200" +"classname" "light_torch_small_walltorch" +"origin" "-150 -1318 260" +} +{ +"light" "150" +"origin" "184 -880 72" +"classname" "light" +} +{ +"style" "6" +"light" "200" +"origin" "-46 -1742 340" +"classname" "light_torch_small_walltorch" +} +{ +"style" "1" +"light" "200" +"classname" "light_torch_small_walltorch" +"origin" "-486 -1726 340" +} +{ +"origin" "-272 -1544 384" +"classname" "light" +"light" "200" +} +{ +"style" "6" +"light" "200" +"classname" "light_torch_small_walltorch" +"origin" "-414 -2006 340" +} +{ +"style" "1" +"light" "200" +"origin" "-134 -1958 340" +"classname" "light_torch_small_walltorch" +} +{ +"light" "150" +"origin" "-472 -1840 328" +"classname" "light" +} +{ +"classname" "light" +"origin" "-72 -1592 328" +"light" "150" +} +{ +"light" "150" +"origin" "-320 -1424 264" +"classname" "light" +} +{ +"light" "150" +"origin" "-256 -1952 280" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "-272 -1720 312" +} +{ +"origin" "-232 -1280 168" +"classname" "path_corner" +"targetname" "t5" +"target" "t6" +} +{ +"classname" "path_corner" +"origin" "-64 -1176 120" +"targetname" "t6" +"target" "t7" +} +{ +"origin" "152 -1104 56" +"classname" "path_corner" +"targetname" "t7" +"target" "t8" +} +{ +"classname" "path_corner" +"origin" "192 -952 8" +"targetname" "t8" +"target" "t9" +} +{ +"origin" "184 -808 8" +"classname" "path_corner" +"target" "t3" +"targetname" "t9" +} +{ +"classname" "path_corner" +"origin" "512 -776 8" +"targetname" "t3" +"target" "t10" +} +{ +"origin" "-200 -648 8" +"classname" "path_corner" +"targetname" "t4" +"target" "t11" +} +{ +"classname" "monster_knight" +"origin" "-360 -1616 232" +"target" "t5" +"angle" "90" +} +{ +"origin" "512 -648 8" +"classname" "path_corner" +"targetname" "t10" +"target" "t4" +} +{ +"classname" "path_corner" +"origin" "-200 -776 8" +"targetname" "t11" +"target" "t3" +} +{ +"classname" "monster_knight" +"origin" "24 -632 24" +"spawnflags" "256" +"target" "t4" +} +{ +"classname" "monster_knight" +"origin" "336 -752 24" +"spawnflags" "256" +"target" "t3" +} +{ +"classname" "monster_knight" +"origin" "56 -712 24" +"angle" "270" +"spawnflags" "768" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "160 -712 24" +"classname" "monster_knight" +} +{ +"classname" "monster_knight" +"origin" "264 -712 24" +"angle" "270" +"spawnflags" "768" +} +{ +"classname" "item_health" +"origin" "-432 -1640 208" +"spawnflags" "1" +} +{ +"classname" "item_shells" +"origin" "-352 -592 0" +} +{ +"classname" "func_door" +"angle" "90" +"spawnflags" "1" +"targetname" "t13" +"wait" "-1" +"sounds" "3" +"dmg" "100" +"model" "*3" +} +{ +"health" "1" +"angle" "90" +"classname" "func_button" +"target" "t12" +"wait" "-1" +"sounds" "1" +"model" "*4" +} +{ +"classname" "func_button" +"angle" "90" +"health" "1" +"target" "t12" +"wait" "-1" +"sounds" "1" +"model" "*5" +} +{ +"classname" "trigger_counter" +"targetname" "t12" +"count" "2" +"target" "t13" +"model" "*6" +} +{ +"classname" "monster_demon1" +"origin" "160 -128 24" +"angle" "270" +"targetname" "t12" +} +{ +"classname" "light" +"origin" "-8 -288 64" +"light" "200" +} +{ +"light" "200" +"origin" "328 -288 64" +"classname" "light" +} +{ +"light" "200" +"origin" "-296 -448 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "160 -368 -248" +"light" "200" +} +{ +"light" "200" +"origin" "616 -448 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "408 -456 -248" +"light" "200" +} +{ +"light" "200" +"origin" "-40 -424 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "-280 -448 32" +"light" "200" +} +{ +"light" "200" +"origin" "632 -424 32" +"classname" "light" +} +{ +"classname" "light" +"origin" "160 -480 8" +"light" "150" +} +{ +"classname" "func_door" +"angle" "180" +"targetname" "t12" +"sounds" "3" +"speed" "200" +"wait" "-1" +"lip" "-2" +"model" "*7" +} +{ +"classname" "func_door" +"angle" "0" +"speed" "200" +"wait" "-1" +"lip" "-2" +"model" "*8" +} +{ +"classname" "light" +"origin" "160 -304 112" +"light" "170" +} +{ +"classname" "light" +"origin" "160 640 104" +"light" "200" +} +{ +"classname" "func_door" +"angle" "-1" +"targetname" "t14" +"sounds" "1" +"model" "*9" +} +{ +"classname" "trigger_multiple" +"target" "t14" +"wait" "10" +"model" "*10" +} +{ +"targetname" "t28" +"classname" "func_door" +"angle" "-1" +"wait" "-1" +"sounds" "1" +"speed" "200" +"spawnflags" "2048" +"model" "*11" +} +{ +"angle" "270" +"classname" "func_button" +"target" "t15" +"wait" "-1" +"lip" "2" +"sounds" "1" +"spawnflags" "2048" +"model" "*12" +} +{ +"classname" "light" +"origin" "-296 432 0" +"light" "200" +} +{ +"light" "200" +"origin" "-312 416 152" +"classname" "light" +} +{ +"classname" "light" +"origin" "-184 320 146" +"light" "200" +} +{ +"classname" "item_key2" +"origin" "-552 192 -40" +"sounds" "1" +"spawnflags" "2048" +} +{ +"classname" "item_spikes" +"origin" "-680 88 -48" +} +{ +"classname" "func_door" +"angle" "-2" +"spawnflags" "33" +"speed" "10" +"sounds" "3" +"wait" "-1" +"targetname" "t16" +"dmg" "100" +"model" "*13" +"lip" "7" // svdijk -- added to prevent z-fighting +} +{ +"sounds" "3" +"classname" "func_door" +"angle" "90" +"spawnflags" "2056" +"wait" "-1" +"model" "*14" +} +{ +"spawnflags" "2056" +"angle" "270" +"classname" "func_door" +"wait" "-1" +"model" "*15" +} +{ +"classname" "func_button" +"angle" "-2" +"wait" "-1" +"target" "t16" +"lip" "12" +"model" "*16" +} +{ +"classname" "light" +"origin" "888 1080 -104" +"light" "160" +} +{ +"light" "160" +"origin" "888 888 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "880 696 -104" +"light" "160" +} +{ +"light" "160" +"origin" "696 888 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "696 1080 -104" +"light" "160" +} +{ +"light" "200" +"origin" "696 672 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "568 512 -104" +"light" "200" +} +{ +"light" "160" +"origin" "840 504 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "832 328 -104" +"light" "160" +} +{ +"classname" "light" +"origin" "936 512 96" +"light" "200" +} +{ +"classname" "light" +"origin" "-248 1080 56" +"light" "150" +} +{ +"classname" "light" +"origin" "888 1264 176" +"light" "170" +} +{ +"classname" "func_door" +"angle" "-2" +"targetname" "t17" +"sounds" "1" +"model" "*17" +} +{ +"classname" "trigger_multiple" +"target" "t17" +"wait" "5" +"model" "*18" +} +{ +"classname" "light" +"origin" "160 120 -24" +"light" "160" +} +{ +"spawnflags" "256" +"classname" "trigger_multiple" +"target" "t18" +"targetname" "t23" +"model" "*19" +} +{ +"wait" "0.5" +"classname" "trap_spikeshooter" +"origin" "88 368 40" +"angle" "0" +"targetname" "t18" +} +{ +"classname" "func_wall" +"spawnflags" "2048" +"model" "*20" +} +{ +"classname" "monster_demon1" +"origin" "-160 608 128" +"targetname" "t19" +} +{ +"classname" "trigger_once" +"target" "t19" +"model" "*21" +} +{ +"classname" "light" +"origin" "-528 512 -104" +"light" "200" +} +{ +"light" "200" +"origin" "-344 592 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "-336 760 -104" +"light" "200" +} +{ +"light" "200" +"origin" "-432 856 -104" +"classname" "light" +} +{ +"classname" "monster_ogre" +"origin" "-416 440 -40" +"spawnflags" "1536" +"target" "t20" +} +{ +"classname" "monster_shambler" +"origin" "-272 296 -40" +"spawnflags" "256" +"target" "t20" +} +{ +"classname" "path_corner" +"origin" "-328 272 -56" +"targetname" "t20" +"target" "t21" +} +{ +"origin" "-400 480 -56" +"classname" "path_corner" +"target" "t20" +"targetname" "t21" +} +{ +"classname" "item_health" +"origin" "-600 144 -64" +} +{ +"classname" "weapon_supershotgun" +"origin" "440 512 0" +"spawnflags" "2048" +} +{ +"classname" "light" +"origin" "-120 176 184" +"light" "250" +} +{ +"origin" "-96 0 184" +"classname" "light" +"light" "200" +} +{ +"classname" "light" +"origin" "312 116 -48" +"light" "200" +} +{ +"classname" "path_corner" +"origin" "8 112 32" +"target" "t25" +"targetname" "t24" +} +{ +"origin" "312 112 32" +"classname" "path_corner" +"targetname" "t25" +"target" "t24" +} +{ +"classname" "monster_ogre" +"origin" "112 112 48" +"target" "t24" +"spawnflags" "256" +} +{ +"classname" "item_shells" +"origin" "88 -160 0" +"spawnflags" "1" +} +{ +"light" "250" +"classname" "light" +"origin" "-352 144 56" +} +{ +"classname" "monster_demon1" +"origin" "-80 -440 -296" +"spawnflags" "256" +"target" "t26" +} +{ +"classname" "path_corner" +"origin" "-216 -456 -312" +"targetname" "t26" +"target" "t27" +} +{ +"origin" "536 -448 -312" +"classname" "path_corner" +"target" "t26" +"targetname" "t27" +} +{ +"light" "200" +"origin" "320 232 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "312 0 -104" +"light" "200" +} +{ +"light" "160" +"origin" "-8 0 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "-8 232 -104" +"light" "200" +} +{ +"light" "200" +"origin" "-16 112 -104" +"classname" "light" +} +{ +"classname" "light" +"origin" "-248 -8 -104" +"light" "200" +} +{ +"light" "200" +"origin" "-472 120 -104" +"classname" "light" +} +{ +"wait" "-1" +"classname" "func_door" +"angle" "-1" +"targetname" "t15" +"sounds" "1" +"spawnflags" "2048" +"model" "*22" +} +{ +"classname" "func_door" +"angle" "-2" +"spawnflags" "2081" +"targetname" "t28" +"wait" "10" +"speed" "200" +"sounds" "1" +"model" "*23" +} +{ +"classname" "trigger_once" +"target" "t28" +"model" "*24" +} +{ +"classname" "trigger_once" +"target" "t12" +"model" "*25" +} +{ +"classname" "monster_ogre" +"origin" "160 1432 128" +"angle" "270" +} +{ +"classname" "monster_ogre" +"origin" "-216 784 128" +"angle" "90" +} +{ +"classname" "info_teleport_destination" +"origin" "-360 888 24" +"spawnflags" "2048" +"targetname" "t1" +} +{ +"classname" "monster_zombie" +"origin" "-288 -232 -296" +"angle" "270" +} +{ +"classname" "monster_zombie" +"origin" "168 -8 -104" +"angle" "90" +} +{ +"classname" "monster_ogre" +"origin" "648 1232 -64" +"angle" "180" +} +{ +"sounds" "1" +"classname" "func_door" +"angle" "-2" +"targetname" "t29" +"model" "*26" +} +{ +"classname" "monster_ogre" +"origin" "520 752 24" +"angle" "90" +"spawnflags" "256" +"targetname" "t29" +} +{ +"classname" "trigger_once" +"target" "t29" +"model" "*27" +} +{ +"classname" "weapon_nailgun" +"origin" "152 1608 136" +"spawnflags" "2048" +} +{ +"classname" "path_corner" +"origin" "544 896 8" +"targetname" "t30" +"target" "t31" +} +{ +"origin" "56 896 72" +"classname" "path_corner" +"target" "t30" +"targetname" "t31" +} +{ +"classname" "path_corner" +"origin" "168 552 8" +"targetname" "t32" +"target" "t33" +} +{ +"origin" "168 1392 8" +"classname" "path_corner" +"target" "t32" +"targetname" "t33" +} +{ +"classname" "monster_knight" +"origin" "240 584 24" +"target" "t32" +} +{ +"classname" "monster_knight" +"origin" "504 960 24" +"target" "t30" +"spawnflags" "256" +} +{ +"classname" "monster_knight" +"origin" "-16 896 88" +"angle" "0" +} +{ +"classname" "monster_knight" +"origin" "256 1224 24" +"angle" "225" +"spawnflags" "256" +} +{ +"target" "t49" +"origin" "-24 1064 16" +"classname" "monster_ogre" +} +{ +"spawnflags" "256" +"angle" "45" +"origin" "-184 1080 128" +"classname" "monster_ogre" +} +{ +"angle" "45" +"origin" "-256 1216 128" +"classname" "monster_knight" +} +{ +"targetname" "t16" +"angle" "270" +"origin" "784 520 56" +"classname" "monster_demon1" +} +{ +"classname" "path_corner" +"origin" "-352 888 16" +"targetname" "t34" +"target" "t35" +} +{ +"origin" "-120 888 8" +"classname" "path_corner" +"target" "t34" +"targetname" "t35" +} +{ +"classname" "monster_ogre" +"origin" "-184 912 24" +"target" "t34" +"spawnflags" "256" +} +{ +"classname" "monster_ogre" +"origin" "-720 896 64" +} +{ +"classname" "monster_knight" +"origin" "-344 760 24" +"angle" "135" +"spawnflags" "256" +} +{ +"classname" "monster_knight" +"origin" "-392 584 24" +"angle" "90" +"spawnflags" "256" +} +{ +"angle" "90" +"classname" "monster_knight" +"origin" "-528 528 24" +"spawnflags" "768" +} +{ +"targetname" "t37" +"target" "t36" +"origin" "-896 968 48" +"classname" "path_corner" +} +{ +"target" "t37" +"targetname" "t36" +"classname" "path_corner" +"origin" "-896 568 48" +} +{ +"spawnflags" "256" +"target" "t36" +"origin" "-840 600 24" +"classname" "monster_ogre" +} +{ +"style" "32" +"targetname" "t15" +"light" "200" +"origin" "-56 304 152" +"classname" "light" +} +{ +"dmg" "100" +"speed" "200" +"targetname" "t15" +"target" "t38" +"classname" "func_train" +"model" "*28" +} +{ +"target" "t39" +"targetname" "t40" +"origin" "-216 280 104" +"classname" "path_corner" +} +{ +"target" "t40" +"targetname" "t38" +"classname" "path_corner" +"origin" "-15 280 104" // svdijk -- changed to prevent z-fighting (was "-16 280 104") +} +{ +"target" "t38" +"wait" "-1" +"targetname" "t39" +"origin" "-15 280 104" // svdijk -- changed to prevent z-fighting (was "-16 280 104") +"classname" "path_corner" +} +{ +"angle" "180" +"origin" "680 1472 24" +"classname" "monster_ogre" +"spawnflags" "256" +} +{ +"spawnflags" "256" +"angle" "180" +"origin" "864 1448 24" +"classname" "monster_knight" +} +{ +"target" "t42" +"targetname" "t41" +"origin" "1024 1264 104" +"classname" "path_corner" +} +{ +"targetname" "t42" +"target" "t41" +"classname" "path_corner" +"origin" "704 1264 104" +} +{ +"target" "t41" +"origin" "1056 1320 120" +"classname" "monster_knight" +} +{ +"spawnflags" "257" +"origin" "552 1280 128" +"classname" "monster_knight" +} +{ +"spawnflags" "1" +"origin" "432 1280 128" +"classname" "monster_knight" +} +{ +"spawnflags" "2048" +"angle" "0" +"wait" "-1" +"sounds" "0" +"health" "1" +"target" "t28" +"classname" "func_button" +"model" "*29" +} +{ +"origin" "-72 296 104" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "-64 504 104" +} +{ +"origin" "-312 192 -64" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "-80 384 -64" +"classname" "item_spikes" +} +{ +"origin" "-224 976 104" +"classname" "item_shells" +} +{ +"target" "t666" +"classname" "trigger_multiple" +"wait" "10" +"model" "*30" +} +{ +"target" "t45" +"targetname" "t44" +"origin" "984 568 8" +"classname" "path_corner" +} +{ +"target" "t46" +"targetname" "t45" +"classname" "path_corner" +"origin" "976 464 8" +} +{ +"target" "t47" +"targetname" "t46" +"origin" "1224 448 40" +"classname" "path_corner" +} +{ +"target" "t44" +"targetname" "t43" +"classname" "path_corner" +"origin" "1272 520 40" +} +{ +"target" "t48" +"targetname" "t47" +"classname" "path_corner" +"origin" "1224 144 64" +} +{ +"targetname" "t48" +"target" "t43" +"origin" "1344 120 64" +"classname" "path_corner" +} +{ +"target" "t45" +"origin" "968 520 24" +"classname" "monster_ogre" +} +{ +"spawnflags" "256" +"target" "t43" +"origin" "1312 328 80" +"classname" "monster_knight" +} +{ +"spawnflags" "768" +"target" "t47" +"origin" "1240 296 80" +"classname" "monster_ogre" +} +{ +"origin" "-360 1064 -8" +"classname" "weapon_grenadelauncher" +} +{ +"target" "t50" +"targetname" "t49" +"origin" "-16 1168 0" +"classname" "path_corner" +} +{ +"targetname" "t50" +"target" "t49" +"classname" "path_corner" +"origin" "-232 1168 0" +} +{ +"origin" "1448 -128 -56" +"classname" "light" +} +{ +"wait" "-1" +"classname" "func_door" +"angle" "270" +"model" "*31" +} +{ +"wait" "-1" +"targetname" "t52" +"sounds" "3" +"classname" "func_door" +"angle" "90" +"model" "*32" +} +{ +"classname" "light" +"origin" "1984 -184 288" +"light" "350" +} +{ +"classname" "light" +"origin" "1760 -312 -184" +"light" "200" +} +{ +"origin" "1832 -64 -184" +"classname" "light" +"light" "200" +} +{ +"light" "160" +"origin" "1808 -296 -24" +"classname" "light" +} +{ +"classname" "light" +"origin" "1224 -8 -184" +"light" "160" +} +{ +"light" "160" +"origin" "1240 -208 -184" +"classname" "light" +} +{ +"classname" "light" +"origin" "1680 -104 -184" +"light" "160" +} +{ +"light" "160" +"origin" "1584 -304 -184" +"classname" "light" +} +{ +"origin" "1592 -72 288" +"classname" "light" +} +{ +"classname" "light" +"origin" "1328 -232 288" +} +{ +"classname" "light" +"origin" "1280 -16 327" +"light" "250" +} +{ +"classname" "light" +"origin" "1792 -152 88" +"light" "160" +} +{ +"light" "160" +"origin" "1632 -296 88" +"classname" "light" +} +{ +"origin" "1696 -280 288" +"classname" "light" +} +{ +"classname" "light" +"origin" "1240 -224 -8" +"light" "200" +} +{ +"classname" "func_wall" +"spawnflags" "3072" +"model" "*33" +} +{ +"classname" "func_wall" +"spawnflags" "3072" +"model" "*34" +} +{ +"classname" "func_wall" +"spawnflags" "3072" +"model" "*35" +} +{ +"classname" "func_wall" +"spawnflags" "3072" +"model" "*36" +} +{ +"classname" "func_wall" +"spawnflags" "3072" +"model" "*37" +} +{ +"classname" "monster_ogre" +"origin" "1992 -192 200" +"angle" "180" +"spawnflags" "256" +} +{ +"classname" "func_door_secret" +"angle" "90" +"spawnflags" "2" +"targetname" "t51" +"model" "*38" +} +{ +"classname" "trigger_multiple" +"target" "t51" +"model" "*39" +} +{ +"classname" "func_plat" +"model" "*40" +} +{ +"classname" "light" +"origin" "1480 56 -168" +"light" "160" +} +{ +"origin" "1432 280 -64" +"classname" "light" +"light" "160" +} +{ +"light" "160" +"classname" "light" +"origin" "1424 280 96" +} +{ +"light" "160" +"origin" "1472 232 -168" +"classname" "light" +} +{ +"classname" "monster_zombie" +"origin" "1592 -24 160" +"angle" "180" +} +{ +"classname" "monster_zombie" +"origin" "1432 -304 112" +"angle" "135" +"spawnflags" "256" +} +{ +"classname" "monster_zombie" +"origin" "1304 -288 112" +"angle" "90" +"spawnflags" "256" +} +{ +"classname" "monster_zombie" +"origin" "1576 -216 136" +"angle" "180" +"spawnflags" "768" +} +{ +"classname" "monster_zombie" +"origin" "1928 -80 200" +"spawnflags" "768" +"angle" "180" +} +{ +"angle" "180" +"spawnflags" "768" +"origin" "1928 -280 200" +"classname" "monster_zombie" +} +{ +"classname" "trigger_changelevel" +"map" "e2m3" +"model" "*41" +} +{ +"classname" "light" +"origin" "80 1544 40" +"light" "160" +} +{ +"light" "160" +"origin" "-112 1544 40" +"classname" "light" +} +{ +"classname" "item_shells" +"origin" "1056 552 8" +} +{ +"classname" "light" +"origin" "-112 1672 40" +"light" "160" +} +{ +"light" "160" +"origin" "88 1680 40" +"classname" "light" +} +{ +"classname" "item_health" +"origin" "-168 1688 -8" +"spawnflags" "1" +} +{ +"classname" "monster_knight" +"origin" "-112 1616 16" +"angle" "45" +"spawnflags" "768" +} +{ +"classname" "monster_demon1" +"origin" "1760 -208 -216" +"angle" "180" +} +{ +"classname" "trigger_secret" +"model" "*42" +} +{ +"classname" "trigger_secret" +"model" "*43" +} +{ +"classname" "trigger_secret" +"model" "*44" +} +{ +"classname" "trigger_multiple" +"target" "t29" +"model" "*45" +} +{ +"classname" "item_shells" +"origin" "-144 -1728 288" +"spawnflags" "768" +} +{ +"classname" "item_rockets" +"origin" "2000 -304 176" +"spawnflags" "1793" +} +{ +"classname" "item_rockets" +"origin" "2000 -112 176" +"spawnflags" "1793" +} +{ +"origin" "-62 -702 72" +"classname" "ambient_swamp1" +} +{ +"classname" "ambient_swamp2" +"origin" "386 -702 72" +} +{ +"origin" "-246 -470 -264" +"classname" "ambient_swamp2" +} +{ +"classname" "ambient_swamp1" +"origin" "554 -454 -264" +} +{ +"origin" "162 -430 -264" +"classname" "ambient_swamp1" +} +{ +"spawnflags" "1" +"origin" "-72 576 104" +"classname" "item_shells" +} +{ +"spawnflags" "2048" +"wait" "10" +"target" "t16" +"classname" "trigger_multiple" +"model" "*46" +} +{ +"targetname" "t16" +"sounds" "4" +"wait" "-1" +"angle" "-1" +"classname" "func_door" +"model" "*47" +} +{ +"origin" "-184 1480 168" +"classname" "light" +"light" "160" +} +{ +"classname" "light" +"origin" "-224 1592 168" +"light" "100" +} +{ +"target" "t52" +"classname" "trigger_once" +"model" "*48" +} +{ +"mangle" "20 30 0" +"origin" "1224 -288 336" +"classname" "info_intermission" +} +{ +"mangle" "20 180 0" +"origin" "-352 760 240" +"classname" "info_intermission" +} +{ +"mangle" "20 135 0" +"origin" "480 -440 208" +"classname" "info_intermission" +} +{ +"angle" "90" +"origin" "-176 -1904 264" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "-128 -1848 264" +"angle" "90" +} +{ +"angle" "90" +"origin" "-192 -1808 264" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "-320 -1824 264" +"angle" "90" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*49" +} +{ +"spawnflags" "1792" +"origin" "200 -664 0" +"classname" "weapon_lightning" +} +{ +"origin" "-184 1512 144" +"classname" "item_artifact_super_damage" +} +{ +"classname" "item_cells" +"origin" "240 -664 0" +"spawnflags" "1793" +} +{ +"classname" "item_cells" +"origin" "392 640 0" +"spawnflags" "1793" +} +{ +"classname" "item_cells" +"origin" "-168 456 104" +"spawnflags" "1793" +} +{ +"classname" "func_door" +"angle" "-1" +"spawnflags" "1" +"wait" "6" +"speed" "1000" +"sounds" "3" +"targetname" "t15" +"model" "*50" +} +{ +"classname" "weapon_grenadelauncher" +"origin" "1312 280 56" +"spawnflags" "3584" +} +{ +"sounds" "2" +"wait" "5" +"message" "Shoot the buttons..." +"spawnflags" "3584" +"classname" "trigger_multiple" +"targetname" "t53" +"model" "*51" +} +{ +"classname" "trigger_relay" +"origin" "-72 -320 48" +"targetname" "t13" +"killtarget" "t53" +} diff --git a/Misc/qs_pak/maps/e2m3.diff b/Misc/qs_pak/maps/e2m3.diff new file mode 100644 index 0000000..4d51967 --- /dev/null +++ b/Misc/qs_pak/maps/e2m3.diff @@ -0,0 +1,74 @@ +--- e2m3.ent ++++ e2m3@237a.ent +@@ -1226,21 +1226,23 @@ + { + "classname" "func_door" + "angle" "-2" + "spawnflags" "1" + "targetname" "t11" + "wait" "10" + "model" "*25" ++"lip" "7" // svdijk -- added to prevent z-fighting + } + { + "classname" "func_door_secret" + "angle" "90" + "spawnflags" "8" + "targetname" "t11" + "model" "*26" ++"t_length" "65" // svdijk -- added to prevent z-fighting + } + { + "classname" "light" + "origin" "1248 -288 312" + "light" "150" + } + { +@@ -1907,14 +1909,15 @@ + } + { + "classname" "func_door_secret" + "spawnflags" "2051" + "targetname" "t36" + "angle" "90" + "model" "*37" ++"t_length" "65" // svdijk -- added to prevent z-fighting + } + { + "classname" "light" + "origin" "-1288 640 -80" + "light" "160" + } + { +@@ -1939,14 +1942,15 @@ + } + { + "classname" "func_door_secret" + "targetname" "t36" + "angle" "270" + "spawnflags" "2049" + "model" "*38" ++"t_length" "65" // svdijk -- added to prevent z-fighting + } + { + "classname" "item_armor2" + "origin" "1128 600 -176" + "spawnflags" "1024" + } + { +@@ -2643,14 +2647,15 @@ + } + { + "classname" "func_door_secret" + "angle" "180" + "spawnflags" "2" + "targetname" "t41" + "model" "*66" ++"t_length" "65" // svdijk -- added to prevent z-fighting + } + { + "classname" "trigger_multiple" + "target" "t41" + "model" "*67" + } + { diff --git a/Misc/qs_pak/maps/e2m3@237a.ent b/Misc/qs_pak/maps/e2m3@237a.ent new file mode 100644 index 0000000..da83d17 --- /dev/null +++ b/Misc/qs_pak/maps/e2m3@237a.ent @@ -0,0 +1,2865 @@ +{ +"classname" "worldspawn" +"wad" "gfx/jr_med.wad" +"worldtype" "0" +"sounds" "9" +"message" "the Crypt of Decay" +} +{ +"classname" "light" +"origin" "192 -648 128" +} +{ +"classname" "info_player_start" +"origin" "688 -1600 -312" +"angle" "180" +} +{ +"classname" "light_flame_large_yellow" +"origin" "650 -438 4" +} +{ +"origin" "386 -438 4" +"classname" "light_flame_large_yellow" +} +{ +"origin" "66 -886 4" +"classname" "light_flame_large_yellow" +} +{ +"origin" "322 -886 4" +"classname" "light_flame_large_yellow" +} +{ +"light" "250" +"origin" "192 -1408 288" +"classname" "light" +} +{ +"light" "250" +"classname" "light" +"origin" "192 -1088 288" +} +{ +"light" "250" +"origin" "112 -1248 272" +"classname" "light" +} +{ +"light" "250" +"classname" "light" +"origin" "272 -1248 272" +} +{ +"light" "200" +"origin" "192 -1056 32" +"classname" "light" +} +{ +"light" "150" +"origin" "192 -1248 24" +"classname" "light" +} +{ +"origin" "194 -1462 108" +"classname" "light_flame_large_yellow" +} +{ +"origin" "194 -1030 164" +"classname" "light_torch_small_walltorch" +} +{ +"light" "150" +"origin" "192 -1440 32" +"classname" "light" +} +{ +"sounds" "2" +"classname" "func_plat" +"spawnflags" "1" +"model" "*1" +} +{ +"origin" "226 -1670 -212" +"classname" "light_flame_large_yellow" +} +{ +"light" "150" +"origin" "88 -1552 -184" +"classname" "light" +} +{ +"origin" "-22 -1374 -212" +"classname" "light_flame_large_yellow" +} +{ +"light" "150" +"origin" "328 -1256 -184" +"classname" "light" +} +{ +"light" "150" +"classname" "light" +"origin" "56 -1256 -184" +} +{ +"classname" "light" +"origin" "248 -1480 -184" +"light" "150" +} +{ +"light" "250" +"origin" "552 -1608 -72" +"classname" "light" +} +{ +"light" "150" +"origin" "432 -1656 -224" +"classname" "light" +} +{ +"light" "150" +"origin" "432 -1496 -224" +"classname" "light" +} +{ +"light" "100" +"origin" "192 -1248 -40" +"classname" "light" +} +{ +"origin" "10 -438 4" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light_flame_large_yellow" +"origin" "-254 -438 4" +} +{ +"light" "150" +"origin" "192 -704 -136" +"classname" "light" +} +{ +"light" "250" +"origin" "192 -512 -136" +"classname" "light" +} +{ +"classname" "light" +"origin" "416 -512 -136" +"light" "150" +} +{ +"light" "150" +"origin" "-32 -512 -136" +"classname" "light" +} +{ +"classname" "light" +"origin" "-208 -512 -136" +"light" "150" +} +{ +"light" "150" +"origin" "592 -512 -136" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 -840 -136" +"light" "150" +} +{ +"light" "150" +"origin" "-352 -672 -168" +"classname" "light" +} +{ +"classname" "light" +"origin" "-320 -832 -168" +"light" "150" +} +{ +"light" "150" +"origin" "-320 -512 -168" +"classname" "light" +} +{ +"classname" "light" +"origin" "696 -512 -168" +"light" "150" +} +{ +"light" "150" +"origin" "736 -672 -168" +"classname" "light" +} +{ +"classname" "light" +"origin" "704 -832 -168" +"light" "150" +} +{ +"light" "150" +"origin" "512 -864 -168" +"classname" "light" +} +{ +"classname" "light" +"origin" "-128 -864 -168" +"light" "150" +} +{ +"light" "200" +"origin" "-128 -320 8" +"classname" "light" +} +{ +"classname" "light" +"origin" "512 -320 8" +"light" "200" +} +{ +"origin" "384 -24 32" +"classname" "light" +} +{ +"classname" "light" +"origin" "0 -24 32" +} +{ +"light" "200" +"origin" "416 -192 -8" +"classname" "light" +} +{ +"classname" "light" +"origin" "-32 -192 -8" +"light" "200" +} +{ +"light" "200" +"origin" "840 48 72" +"classname" "light" +} +{ +"light" "150" +"origin" "576 -24 -56" +"classname" "light" +} +{ +"light" "200" +"origin" "624 -24 72" +"classname" "light" +} +{ +"origin" "1002 354 -60" +"classname" "light_flame_large_yellow" +} +{ +"light" "100" +"origin" "1000 352 -128" +"classname" "light" +} +{ +"classname" "light" +"origin" "736 8 72" +"light" "200" +} +{ +"light" "200" +"origin" "936 88 72" +"classname" "light" +} +{ +"light" "150" +"origin" "688 -8 -32" +"classname" "light" +} +{ +"classname" "light" +"origin" "784 24 -104" +"light" "150" +} +{ +"light" "150" +"origin" "888 72 -32" +"classname" "light" +} +{ +"light" "200" +"origin" "872 208 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "872 400 -56" +"light" "200" +} +{ +"light" "200" +"origin" "872 592 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "744 568 88" +"light" "150" +} +{ +"light" "150" +"origin" "744 648 88" +"classname" "light" +} +{ +"classname" "light" +"origin" "704 608 -80" +"light" "150" +} +{ +"origin" "866 730 -60" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light" +"origin" "864 728 -128" +"light" "100" +} +{ +"sounds" "3" +"wait" "-1" +"targetname" "t8" +"spawnflags" "2049" +"angle" "0" +"classname" "func_door" +"model" "*2" +} +{ +"spawnflags" "2048" +"angle" "90" +"target" "t8" +"classname" "func_button" +"wait" "-1" +"model" "*3" +} +{ +"origin" "520 608 -64" +"classname" "light" +} +{ +"light" "400" +"origin" "192 608 -24" +"classname" "light" +} +{ +"sounds" "1" +"wait" "-1" +"angle" "270" +"spawnflags" "2058" +"classname" "func_door_secret" +"targetname" "t9" +"model" "*4" +} +{ +"light" "150" +"origin" "1064 640 -112" +"classname" "light" +} +{ +"targetname" "t9" +"angle" "180" +"origin" "1024 640 -152" +"classname" "monster_zombie" +} +{ +"targetname" "t9" +"angle" "180" +"origin" "1120 672 -152" +"classname" "monster_zombie" +} +{ +"targetname" "t9" +"angle" "180" +"origin" "1088 600 -152" +"classname" "monster_zombie" +} +{ +"origin" "976 336 -176" +"classname" "item_health" +} +{ +"light" "150" +"origin" "192 608 -104" +"classname" "light" +} +{ +"origin" "192 288 -64" +"classname" "light" +} +{ +"classname" "light_flame_large_yellow" +"origin" "66 106 4" +"light" "200" +} +{ +"light" "200" +"origin" "-30 106 4" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light" +"origin" "504 120 -248" +"light" "200" +} +{ +"light" "200" +"origin" "704 224 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "704 472 -248" +"light" "200" +} +{ +"light" "200" +"origin" "304 112 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "80 112 -248" +"light" "200" +} +{ +"light" "200" +"origin" "720 608 -248" +"classname" "light" +} +{ +"spawnflags" "2048" +"sounds" "1" +"wait" "-1" +"targetname" "t3" +"classname" "func_door" +"angle" "90" +"model" "*5" +} +{ +"spawnflags" "2048" +"wait" "-1" +"angle" "270" +"classname" "func_door" +"message" "This door opens nearby..." +"model" "*6" +} +{ +"spawnflags" "2048" +"target" "t3" +"wait" "-1" +"classname" "func_button" +"angle" "180" +"model" "*7" +} +{ +"light" "250" +"origin" "-448 184 0" +"classname" "light" +} +{ +"light" "150" +"origin" "-552 280 -224" +"classname" "light" +} +{ +"classname" "light" +"origin" "-392 280 -224" +"light" "150" +} +{ +"light" "150" +"origin" "-416 -32 104" +"classname" "light" +} +{ +"classname" "light" +"origin" "-320 -32 104" +"light" "150" +} +{ +"light" "150" +"origin" "-224 -32 104" +"classname" "light" +} +{ +"light" "250" +"origin" "-352 -32 -32" +"classname" "light" +} +{ +"light" "200" +"origin" "-1160 88 -248" +"classname" "light" +} +{ +"light" "200" +"origin" "-1048 88 -32" +"classname" "light" +} +{ +"light" "200" +"classname" "light" +"origin" "-1160 224 -32" +} +{ +"origin" "-742 658 -44" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light_flame_large_yellow" +"origin" "-926 658 -44" +} +{ +"light" "200" +"origin" "-736 632 -96" +"classname" "light" +} +{ +"classname" "light" +"origin" "-928 632 -96" +"light" "200" +} +{ +"light" "150" +"origin" "-600 104 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "-696 424 -248" +"light" "150" +} +{ +"light" "150" +"origin" "-1152 408 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "-944 432 -248" +"light" "150" +} +{ +"light" "150" +"origin" "-856 64 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "-160 152 -248" +"light" "150" +} +{ +"light" "150" +"origin" "-160 448 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "-328 464 -248" +"light" "150" +} +{ +"light" "150" +"origin" "-256 176 -248" +"classname" "light" +} +{ +"origin" "-574 410 -172" +"classname" "light_flame_large_yellow" +} +{ +"classname" "light_flame_large_yellow" +"origin" "-470 410 -172" +} +{ +"target" "t4" +"classname" "trigger_teleport" +"model" "*8" +} +{ +"light" "200" +"style" "2" +"origin" "-760 576 -216" +"classname" "light" +} +{ +"targetname" "t4" +"angle" "180" +"origin" "120 -32 -112" +"classname" "info_teleport_destination" +} +{ +"light" "200" +"origin" "-264 384 112" +"classname" "light" +} +{ +"classname" "light" +"origin" "-264 288 112" +"light" "200" +} +{ +"light" "200" +"origin" "-264 192 112" +"classname" "light" +} +{ +"classname" "light" +"origin" "-264 480 112" +"light" "200" +} +{ +"light" "250" +"origin" "-264 304 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "-520 424 0" +"light" "250" +} +{ +"light" "200" +"origin" "-1120 608 72" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1024 584 72" +"light" "200" +} +{ +"light" "200" +"origin" "-928 584 72" +"classname" "light" +} +{ +"classname" "light" +"origin" "-832 584 72" +"light" "200" +} +{ +"light" "200" +"origin" "-544 584 72" +"classname" "light" +} +{ +"classname" "light" +"origin" "-640 584 72" +"light" "200" +} +{ +"light" "150" +"origin" "-480 768 56" +"classname" "light" +} +{ +"classname" "light" +"origin" "-384 768 56" +"light" "150" +} +{ +"classname" "light" +"origin" "-712 120 -32" +"light" "200" +} +{ +"sounds" "3" +"wait" "-1" +"targetname" "t5" +"spawnflags" "2049" +"angle" "180" +"classname" "func_door" +"model" "*9" +} +{ +"spawnflags" "2048" +"angle" "270" +"target" "t5" +"wait" "-1" +"classname" "func_button" +"model" "*10" +} +{ +"style" "32" +"targetname" "t5" +"light" "200" +"origin" "-352 552 -56" +"classname" "light" +} +{ +"light" "150" +"origin" "-432 768 -56" +"classname" "light" +} +{ +"light" "150" +"origin" "-520 680 -56" +"classname" "light" +} +{ +"spawnflags" "2048" +"sounds" "3" +"targetname" "t5" +"wait" "-1" +"angle" "-2" +"classname" "func_door" +"model" "*11" +} +{ +"sounds" "3" +"targetname" "t5" +"spawnflags" "2049" +"wait" "-1" +"angle" "90" +"classname" "func_door" +"model" "*12" +} +{ +"origin" "-72 848 -56" +"classname" "light" +} +{ +"origin" "-120 600 -8" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 904 -8" +} +{ +"light" "200" +"origin" "192 888 -248" +"classname" "light" +} +{ +"classname" "light" +"origin" "-104 600 -248" +"light" "200" +} +{ +"light" "200" +"origin" "376 984 -120" +"classname" "light" +} +{ +"classname" "light" +"origin" "504 760 -120" +"light" "200" +} +{ +"light" "200" +"origin" "-32 608 200" +"classname" "light" +} +{ +"spawnflags" "2048" +"sounds" "3" +"wait" "-1" +"angle" "-2" +"classname" "func_door" +"model" "*13" +} +{ +"origin" "-16 1456 16" +"classname" "light" +} +{ +"light" "200" +"origin" "384 1248 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "384 1440 -56" +"light" "200" +} +{ +"light" "150" +"origin" "256 1440 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 1248 -56" +"light" "200" +} +{ +"light" "200" +"origin" "384 1344 -88" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 1152 -88" +"light" "200" +} +{ +"classname" "light" +"origin" "8 1456 -120" +"light" "200" +} +{ +"spawnflags" "2048" +"sounds" "1" +"classname" "item_key2" +"origin" "-16 1456 -152" +} +{ +"classname" "func_door" +"angle" "-1" +"targetname" "t6" +"speed" "400" +"wait" "-1" +"sounds" "4" +"model" "*14" +} +{ +"classname" "func_door" +"angle" "-1" +"targetname" "t6" +"speed" "400" +"wait" "-1" +"sounds" "4" +"model" "*15" +} +{ +"classname" "func_door" +"angle" "-1" +"targetname" "t6" +"speed" "400" +"wait" "-1" +"sounds" "4" +"spawnflags" "2048" +"model" "*16" +} +{ +"classname" "trigger_once" +"target" "t6" +"model" "*17" +} +{ +"classname" "light" +"origin" "-192 1456 -136" +"light" "80" +} +{ +"classname" "light" +"origin" "-16 1280 -136" +"light" "80" +} +{ +"spawnflags" "768" +"classname" "monster_hell_knight" +"origin" "-16 1280 -168" +"angle" "90" +"targetname" "t6" +} +{ +"spawnflags" "256" +"angle" "270" +"origin" "-16 1632 -168" +"classname" "monster_hell_knight" +"targetname" "t6" +} +{ +"classname" "monster_hell_knight" +"origin" "-192 1456 -168" +"angle" "0" +"targetname" "t6" +} +{ +"classname" "light" +"origin" "152 1440 -56" +"light" "150" +} +{ +"classname" "item_shells" +"origin" "-104 1512 -192" +"spawnflags" "1" +} +{ +"wait" "-1" +"classname" "func_door" +"angle" "0" +"spawnflags" "2056" +"model" "*18" +} +{ +"wait" "-1" +"classname" "func_door" +"angle" "180" +"spawnflags" "2056" +"model" "*19" +} +{ +"classname" "light" +"origin" "-1120 832 -48" +"light" "250" +} +{ +"classname" "light" +"origin" "-1120 976 -24" +"light" "250" +} +{ +"classname" "light" +"origin" "-1240 1296 216" +"light" "200" +} +{ +"light" "200" +"origin" "-1240 1416 216" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1240 1176 216" +"light" "200" +} +{ +"classname" "light" +"origin" "-712 1416 216" +"light" "200" +} +{ +"light" "200" +"origin" "-712 1296 216" +"classname" "light" +} +{ +"classname" "light" +"origin" "-712 1176 216" +"light" "200" +} +{ +"light" "200" +"origin" "-856 1296 216" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1096 1296 216" +"light" "200" +} +{ +"light" "200" +"origin" "-976 1296 216" +"classname" "light" +} +{ +"classname" "light_flame_small_white" +"origin" "-1318 1514 -8" +} +{ +"origin" "-1318 1514 64" +"classname" "light_flame_small_white" +} +{ +"classname" "light_flame_small_white" +"origin" "-1318 1514 144" +} +{ +"origin" "-634 1078 -8" +"classname" "light_flame_small_white" +} +{ +"classname" "light_flame_small_white" +"origin" "-634 1078 64" +} +{ +"origin" "-634 1078 144" +"classname" "light_flame_small_white" +} +{ +"classname" "func_plat" +"spawnflags" "1" +"model" "*20" +} +{ +"classname" "light" +"origin" "-320 1536 184" +"light" "250" +} +{ +"classname" "light" +"origin" "-376 1312 120" +"light" "250" +} +{ +"classname" "light" +"origin" "-16 1536 184" +"light" "200" +} +{ +"light" "200" +"origin" "-560 1312 56" +"classname" "light" +} +{ +"classname" "light" +"origin" "24 1120 216" +"light" "150" +} +{ +"classname" "light" +"origin" "192 608 176" +"light" "200" +} +{ +"wait" "-1" +"classname" "func_door" +"angle" "90" +"spawnflags" "2049" +"targetname" "t7" +"sounds" "1" +"model" "*21" +} +{ +"light" "150" +"origin" "400 1104 224" +"classname" "light" +} +{ +"light" "150" +"origin" "-200 1056 224" +"classname" "light" +} +{ +"light" "200" +"origin" "192 960 224" +"classname" "light" +} +{ +"light" "200" +"origin" "192 784 224" +"classname" "light" +} +{ +"classname" "light" +"origin" "672 264 184" +"light" "200" +} +{ +"light" "200" +"origin" "384 184 184" +"classname" "light" +} +{ +"classname" "light" +"origin" "512 256 8" +"light" "200" +} +{ +"classname" "light" +"origin" "8 184 200" +"light" "200" +} +{ +"classname" "light" +"origin" "584 744 200" +"light" "200" +} +{ +"classname" "light" +"origin" "0 432 200" +"light" "200" +} +{ +"classname" "trigger_once" +"targetname" "t8" +"target" "t9" +"delay" "10" +"model" "*22" +} +{ +"classname" "light" +"origin" "192 -72 216" +"light" "250" +} +{ +"classname" "light" +"origin" "360 -168 360" +"light" "200" +} +{ +"classname" "light" +"origin" "296 -168 360" +"light" "200" +} +{ +"origin" "472 -168 368" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"classname" "light" +"origin" "408 -168 360" +} +{ +"classname" "light" +"origin" "384 -168 248" +"light" "200" +} +{ +"classname" "light" +"origin" "936 -304 328" +"light" "200" +} +{ +"light" "200" +"origin" "1000 -232 360" +"classname" "light" +} +{ +"classname" "light" +"origin" "864 -232 360" +"light" "200" +} +{ +"light" "200" +"origin" "864 -368 360" +"classname" "light" +} +{ +"classname" "light" +"origin" "1000 -368 360" +"light" "200" +} +{ +"classname" "light" +"origin" "736 -248 280" +"light" "200" +} +{ +"light" "200" +"origin" "552 -216 280" +"classname" "light" +} +{ +"classname" "light" +"origin" "16 144 -32" +"light" "200" +} +{ +"classname" "light" +"origin" "0 432 -136" +"light" "200" +} +{ +"classname" "light" +"origin" "192 384 184" +"light" "200" +} +{ +"light" "200" +"origin" "192 192 184" +"classname" "light" +} +{ +"spawnflags" "2048" +"classname" "func_button" +"wait" "-1" +"target" "t7" +"model" "*23" +} +{ +"style" "33" +"targetname" "t7" +"classname" "light" +"origin" "176 1152 200" +"target" "t10" +} +{ +"classname" "info_null" +"origin" "292 1152 180" +"targetname" "t10" +} +{ +"classname" "light" +"origin" "192 1224 200" +"light" "150" +} +{ +"light" "150" +"origin" "192 1376 200" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 1536 200" +"light" "200" +} +{ +"light" "150" +"origin" "192 1080 200" +"classname" "light" +} +{ +"classname" "weapon_nailgun" +"origin" "184 -1520 -272" +} +{ +"classname" "func_button" +"target" "t11" +"angle" "-1" +"targetname" "t12" +"lip" "4" +"wait" "0.1" +"speed" "300" +"health" "1" +"model" "*24" +} +{ +"classname" "func_door" +"angle" "-2" +"spawnflags" "1" +"targetname" "t11" +"wait" "10" +"model" "*25" +"lip" "7" // svdijk -- added to prevent z-fighting +} +{ +"classname" "func_door_secret" +"angle" "90" +"spawnflags" "8" +"targetname" "t11" +"model" "*26" +"t_length" "65" // svdijk -- added to prevent z-fighting +} +{ +"classname" "light" +"origin" "1248 -288 312" +"light" "150" +} +{ +"light" "200" +"origin" "1176 -400 352" +"classname" "light" +} +{ +"classname" "item_health" +"origin" "1336 -536 256" +"spawnflags" "2" +} +{ +"classname" "light" +"origin" "1320 -488 352" +"light" "200" +} +{ +"classname" "trigger_multiple" +"target" "t11" +"wait" "10" +"model" "*27" +} +{ +"classname" "item_armor1" +"origin" "192 -592 -64" +} +{ +"classname" "item_shells" +"origin" "176 592 -160" +"spawnflags" "1" +} +{ +"classname" "weapon_nailgun" +"origin" "-80 1456 -192" +"spawnflags" "1792" +} +{ +"classname" "weapon_rocketlauncher" +"origin" "56 1144 128" +"spawnflags" "1792" +} +{ +"classname" "weapon_grenadelauncher" +"origin" "-736 608 -280" +"spawnflags" "1792" +} +{ +"classname" "item_spikes" +"origin" "1120 -384 256" +"spawnflags" "1" +} +{ +"classname" "item_rockets" +"origin" "840 -432 192" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "-456 312 -80" +} +{ +"classname" "monster_zombie" +"origin" "-1152 96 -88" +"spawnflags" "256" +"target" "t36" +} +{ +"origin" "-1120 32 -88" +"classname" "monster_zombie" +"spawnflags" "768" +"target" "t36" +} +{ +"classname" "monster_zombie" +"origin" "-1192 168 -88" +"target" "t36" +} +{ +"classname" "monster_shambler" +"origin" "-1120 1104 -56" +"angle" "270" +} +{ +"classname" "monster_hell_knight" +"origin" "-336 1312 8" +"angle" "180" +} +{ +"classname" "monster_ogre" +"origin" "-698 1446 -56" +"angle" "270" +"spawnflags" "256" +} +{ +"classname" "monster_hell_knight" +"origin" "-888 1128 8" +"angle" "90" +"spawnflags" "256" +} +{ +"classname" "item_health" +"origin" "-336 784 -128" +} +{ +"origin" "-408 608 -128" +"classname" "item_health" +} +{ +"classname" "path_corner" +"origin" "-1096 584 -120" +"targetname" "t13" +"target" "t14" +} +{ +"origin" "-496 584 -120" +"classname" "path_corner" +"targetname" "t14" +"target" "t13" +} +{ +"classname" "monster_demon1" +"origin" "-712 576 -104" +"angle" "180" +"target" "t13" +} +{ +"classname" "path_corner" +"origin" "-528 472 -96" +"targetname" "t15" +"target" "t16" +} +{ +"origin" "-368 -32 -96" +"classname" "path_corner" +"target" "t15" +"targetname" "t16" +} +{ +"classname" "monster_ogre" +"origin" "-466 262 -56" +"target" "t16" +"spawnflags" "256" +} +{ +"target" "t22" +"targetname" "t21" +"origin" "56 -184 -120" +"classname" "path_corner" +} +{ +"target" "t21" +"targetname" "t20" +"classname" "path_corner" +"origin" "-128 -224 -120" +} +{ +"target" "t20" +"targetname" "t19" +"origin" "-128 -504 -56" +"classname" "path_corner" +} +{ +"target" "t19" +"targetname" "t18" +"classname" "path_corner" +"origin" "512 -504 -56" +} +{ +"target" "t18" +"targetname" "t17" +"origin" "512 -224 -120" +"classname" "path_corner" +} +{ +"targetname" "t26" +"target" "t17" +"classname" "path_corner" +"origin" "328 -184 -120" +} +{ +"target" "t23" +"targetname" "t22" +"classname" "path_corner" +"origin" "-128 -200 -120" +} +{ +"target" "t24" +"targetname" "t23" +"classname" "path_corner" +"origin" "-128 -552 -56" +} +{ +"target" "t25" +"targetname" "t24" +"origin" "512 -552 -56" +"classname" "path_corner" +} +{ +"target" "t26" +"targetname" "t25" +"classname" "path_corner" +"origin" "512 -200 -120" +} +{ +"spawnflags" "256" +"target" "t21" +"origin" "0 -184 -104" +"classname" "monster_hell_knight" +} +{ +"spawnflags" "1" +"origin" "376 -160 -104" +"classname" "monster_hell_knight" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "190 -706 -40" +"classname" "monster_ogre" +} +{ +"spawnflags" "768" +"angle" "90" +"origin" "192 -1408 24" +"classname" "monster_hell_knight" +} +{ +"origin" "40 -1424 0" +"classname" "item_shells" +"spawnflags" "1" +} +{ +"spawnflags" "1" +"origin" "304 -1096 0" +"classname" "item_health" +} +{ +"origin" "328 -1280 -272" +"classname" "item_health" +} +{ +"origin" "40 -1256 -272" +"classname" "item_spikes" +} +{ +"target" "t28" +"targetname" "t27" +"origin" "864 176 -168" +"classname" "path_corner" +} +{ +"target" "t27" +"targetname" "t28" +"classname" "path_corner" +"origin" "864 616 -168" +} +{ +"target" "t27" +"origin" "862 446 -152" +"classname" "monster_ogre" +} +{ +"spawnflags" "768" +"angle" "180" +"origin" "526 -26 -104" +"classname" "monster_ogre" +} +{ +"spawnflags" "256" +"angle" "0" +"origin" "-72 -24 -104" +"classname" "monster_hell_knight" +} +{ +"spawnflags" "256" +"origin" "-274 -34 -104" +"classname" "monster_ogre" +} +{ +"spawnflags" "768" +"angle" "270" +"origin" "-512 760 -104" +"classname" "monster_hell_knight" +} +{ +"spawnflags" "1793" +"origin" "336 1104 128" +"classname" "item_rockets" +} +{ +"angle" "45" +"spawnflags" "256" +"origin" "104 256 -136" +"classname" "monster_zombie" +} +{ +"spawnflags" "769" +"angle" "90" +"origin" "192 488 -136" +"classname" "monster_hell_knight" +} +{ +"wait" "1" +"speed" "250" +"lip" "16" +"spawnflags" "5" +"targetname" "t29" +"dmg" "20" +"angle" "180" +"classname" "func_door" +"model" "*28" +} +{ +"wait" "1" +"targetname" "t29" +"speed" "250" +"dmg" "20" +"lip" "16" +"spawnflags" "5" +"classname" "func_door" +"sounds" "1" +"model" "*29" +} +{ +"wait" "2" +"target" "t29" +"classname" "trigger_multiple" +"model" "*30" +} +{ +"origin" "506 1762 -124" +"classname" "light_torch_small_walltorch" +"style" "1" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "274 2010 -124" +} +{ +"light" "200" +"origin" "152 1824 -40" +"classname" "light" +} +{ +"classname" "light" +"origin" "288 1824 -40" +"light" "200" +} +{ +"light" "200" +"origin" "288 1696 -40" +"classname" "light" +} +{ +"classname" "light" +"origin" "152 1704 -40" +"light" "200" +} +{ +"light" "220" +"origin" "0 1704 -40" +"classname" "light" +} +{ +"angle" "180" +"classname" "func_door_secret" +"targetname" "t35" +"spawnflags" "16" +"sounds" "1" +"model" "*31" +} +{ +"spawnflags" "2" +"origin" "-16 1816 -192" +"classname" "item_health" +} +{ +"origin" "432 1672 -320" +"classname" "light" +"light" "220" +} +{ +"spawnflags" "1792" +"origin" "-16 1752 -192" +"classname" "item_rockets" +} +{ +"angle" "270" +"origin" "-192 1580 168" +"classname" "trap_spikeshooter" +"targetname" "t32" +} +{ +"spawnflags" "256" +"classname" "trap_spikeshooter" +"origin" "236 1536 168" +"angle" "180" +"targetname" "t32" +} +{ +"classname" "trap_spikeshooter" +"origin" "0 1580 168" +"angle" "270" +"targetname" "t32" +} +{ +"angle" "90" +"origin" "-96 1492 168" +"classname" "trap_spikeshooter" +"targetname" "t32" +} +{ +"classname" "trap_spikeshooter" +"origin" "148 1376 168" +"angle" "0" +"targetname" "t33" +} +{ +"angle" "180" +"origin" "236 1256 168" +"classname" "trap_spikeshooter" +"targetname" "t33" +} +{ +"spawnflags" "256" +"classname" "trap_spikeshooter" +"origin" "192 1580 168" +"angle" "270" +"targetname" "t33" +} +{ +"spawnflags" "257" +"angle" "90" +"origin" "192 -16 153" +"classname" "monster_hell_knight" +} +{ +"spawnflags" "257" +"angle" "180" +"origin" "864 -248 217" +"classname" "monster_shambler" +} +{ +"angle" "180" +"origin" "464 -184 185" +"classname" "monster_hell_knight" +} +{ +"classname" "monster_hell_knight" +"origin" "192 -176 153" +"angle" "90" +"spawnflags" "1" +"target" "t31" +} +{ +"spawnflags" "769" +"angle" "90" +"origin" "190 1166 153" +"classname" "monster_ogre" +} +{ +"spawnflags" "2048" +"origin" "48 1456 -192" +"classname" "weapon_grenadelauncher" +} +{ +"spawnflags" "1" +"origin" "-96 1376 -192" +"classname" "item_rockets" +} +{ +"angle" "270" +"spawnflags" "768" +"classname" "monster_ogre" +"origin" "862 662 -152" +} +{ +"light" "120" +"origin" "192 -352 -264" +"classname" "light" +} +{ +"spawnflags" "768" +"origin" "326 -1490 -248" +"classname" "monster_ogre" +"angle" "180" +"target" "t42" +} +{ +"origin" "192 552 128" +"classname" "item_health" +} +{ +"spawnflags" "1024" +"classname" "item_health" +"origin" "176 672 128" +} +{ +"spawnflags" "1025" +"origin" "184 1312 128" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "-16 1480 128" +"spawnflags" "1025" +} +{ +"origin" "672 -328 176" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "776 -192 176" +} +{ +"origin" "784 312 -176" +"classname" "item_shells" +} +{ +"spawnflags" "256" +"angle" "315" +"origin" "-26 1094 152" +"classname" "monster_ogre" +} +{ +"classname" "monster_ogre" +"origin" "406 1094 152" +"angle" "225" +"spawnflags" "768" +} +{ +"spawnflags" "1" +"origin" "-200 1128 128" +"classname" "item_rockets" +} +{ +"origin" "-550 -478 212" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "-550 -166 212" +} +{ +"origin" "-214 -326 252" +"classname" "light_torch_small_walltorch" +} +{ +"light" "150" +"origin" "-120 -176 192" +"classname" "light" +} +{ +"classname" "light" +"origin" "56 -176 192" +"light" "150" +} +{ +"origin" "-816 1488 -80" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "-752 1488 -80" +} +{ +"spawnflags" "1536" +"origin" "-688 1488 -80" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "176 1264 -160" +"classname" "item_shells" +} +{ +"classname" "func_door" +"angle" "270" +"targetname" "t31" +"wait" "-1" +"spawnflags" "2048" +"model" "*32" +} +{ +"wait" "-1" +"sounds" "1" +"speed" "300" +"classname" "func_door" +"angle" "90" +"model" "*33" +} +{ +"speed" "300" +"classname" "func_door" +"angle" "270" +"wait" "-1" +"model" "*34" +} +{ +"classname" "item_health" +"origin" "400 1464 -160" +"spawnflags" "1024" +} +{ +"classname" "item_health" +"origin" "-1136 528 -128" +} +{ +"classname" "monster_ogre" +"origin" "-370 -218 88" +"targetname" "t31" +"spawnflags" "1" +} +{ +"classname" "monster_hell_knight" +"origin" "-64 -176 152" +"angle" "0" +"spawnflags" "768" +"targetname" "t31" +} +{ +"classname" "item_health" +"origin" "-488 -480 64" +} +{ +"classname" "light" +"origin" "680 -1600 -160" +} +{ +"classname" "item_spikes" +"origin" "984 -192 192" +"spawnflags" "1" +} +{ +"classname" "monster_ogre" +"origin" "-490 -410 88" +"angle" "45" +} +{ +"classname" "trigger_multiple" +"target" "t32" +"wait" "1" +"spawnflags" "1024" +"targetname" "t44" +"model" "*35" +} +{ +"classname" "trigger_multiple" +"target" "t33" +"wait" "1" +"spawnflags" "1024" +"model" "*36" +} +{ +"classname" "item_rockets" +"origin" "-96 272 -384" +} +{ +"classname" "weapon_supernailgun" +"origin" "-1200 208 -112" +"spawnflags" "1792" +} +{ +"classname" "func_door_secret" +"spawnflags" "2051" +"targetname" "t36" +"angle" "90" +"model" "*37" +"t_length" "65" // svdijk -- added to prevent z-fighting +} +{ +"classname" "light" +"origin" "-1288 640 -80" +"light" "160" +} +{ +"light" "160" +"origin" "-1288 128 -80" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1288 264 -80" +"light" "160" +} +{ +"light" "160" +"origin" "-1288 392 -80" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1288 520 -80" +"light" "160" +} +{ +"classname" "func_door_secret" +"targetname" "t36" +"angle" "270" +"spawnflags" "2049" +"model" "*38" +"t_length" "65" // svdijk -- added to prevent z-fighting +} +{ +"classname" "item_armor2" +"origin" "1128 600 -176" +"spawnflags" "1024" +} +{ +"classname" "func_door_secret" +"angle" "90" +"spawnflags" "11" +"targetname" "t34" +"model" "*39" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "-246 -1310 -204" +"light" "250" +} +{ +"classname" "trigger_once" +"target" "t34" +"model" "*40" +} +{ +"classname" "item_spikes" +"origin" "-240 -1288 -312" +"spawnflags" "1" +} +{ +"spawnflags" "1" +"origin" "-240 -1368 -312" +"classname" "item_spikes" +} +{ +"sounds" "3" +"classname" "func_door" +"angle" "-2" +"spawnflags" "3585" +"wait" "90" +"targetname" "t6" +"model" "*41" +} +{ +"sounds" "3" +"classname" "func_door" +"targetname" "t6" +"spawnflags" "3585" +"angle" "-2" +"wait" "90" +"model" "*42" +} +{ +"sounds" "3" +"classname" "func_door" +"angle" "0" +"spawnflags" "1537" +"targetname" "t6" +"wait" "90" +"model" "*43" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "-42 1642 -108" +"light" "200" +} +{ +"classname" "item_health" +"origin" "-72 560 -384" +} +{ +"origin" "-152 560 -384" +"classname" "item_health" +} +{ +"targetname" "t31" +"spawnflags" "513" +"angle" "90" +"origin" "848 -376 216" +"classname" "monster_hell_knight" +} +{ +"targetname" "t31" +"spawnflags" "768" +"origin" "-512 -248 88" +"classname" "monster_shambler" +} +{ +"spawnflags" "768" +"angle" "180" +"origin" "382 1246 -136" +"classname" "monster_ogre" +} +{ +"spawnflags" "768" +"classname" "monster_ogre" +"origin" "190 1438 -136" +"angle" "0" +} +{ +"classname" "info_player_deathmatch" +"origin" "640 -1664 -312" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "-400 -240 88" +"angle" "0" +} +{ +"classname" "info_player_deathmatch" +"origin" "-216 1088 152" +"angle" "0" +} +{ +"classname" "info_player_deathmatch" +"origin" "-512 792 -104" +"angle" "270" +} +{ +"classname" "info_player_deathmatch" +"origin" "888 624 -152" +"angle" "270" +} +{ +"classname" "info_player_deathmatch" +"origin" "-96 1456 -168" +"angle" "0" +} +{ +"spawnflags" "2048" +"classname" "func_wall" +"model" "*44" +} +{ +"spawnflags" "2048" +"classname" "func_wall" +"model" "*45" +} +{ +"classname" "func_plat" +"height" "192" +"sounds" "2" +"model" "*46" +} +{ +"classname" "item_health" +"origin" "-1184 72 -352" +} +{ +"classname" "light" +"origin" "-952 1408 80" +"light" "200" +} +{ +"classname" "light" +"origin" "-1120 1176 48" +"light" "250" +} +{ +"classname" "light" +"origin" "-104 288 -344" +"light" "200" +} +{ +"classname" "light" +"origin" "-512 376 -304" +"light" "200" +} +{ +"classname" "trigger_multiple" +"target" "t35" +"model" "*47" +} +{ +"classname" "light" +"origin" "192 -376 -16" +"light" "150" +} +{ +"classname" "light" +"origin" "192 -328 176" +"light" "150" +} +{ +"classname" "trigger_multiple" +"target" "t32" +"spawnflags" "768" +"wait" "0.5" +"model" "*48" +} +{ +"classname" "trigger_multiple" +"spawnflags" "768" +"wait" "0.5" +"target" "t33" +"targetname" "t44" +"model" "*49" +} +{ +"origin" "-1176 112 -112" +"classname" "item_rockets" +} +{ +"origin" "-736 544 -280" +"classname" "item_armorInv" +} +{ +"classname" "func_button" +"angle" "180" +"target" "t36" +"model" "*50" +} +{ +"classname" "info_null" +"origin" "-1332 1116 -36" +"targetname" "t37" +} +{ +"classname" "light" +"origin" "-1296 1120 -32" +"target" "t37" +"angle" "60" +} +{ +"spawnflags" "2048" +"classname" "func_wall" +"model" "*51" +} +{ +"spawnflags" "2048" +"classname" "func_wall" +"model" "*52" +} +{ +"classname" "light" +"origin" "192 -152 -344" +"light" "160" +} +{ +"classname" "light" +"origin" "192 32 -344" +"light" "160" +} +{ +"classname" "light" +"origin" "32 168 -344" +"light" "140" +} +{ +"light" "160" +"origin" "-16 408 -344" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 368 -344" +"light" "140" +} +{ +"light" "140" +"origin" "448 368 -344" +"classname" "light" +} +{ +"classname" "light" +"origin" "528 592 -344" +"light" "200" +} +{ +"light" "200" +"origin" "408 808 -344" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 832 -344" +"light" "200" +} +{ +"light" "200" +"origin" "-40 728 -344" +"classname" "light" +} +{ +"classname" "light" +"origin" "-168 632 -344" +"light" "200" +} +{ +"light" "200" +"origin" "-160 976 -344" +"classname" "light" +} +{ +"classname" "light" +"origin" "592 456 -344" +"light" "200" +} +{ +"classname" "light" +"origin" "192 352 -232" +"light" "200" +} +{ +"light" "200" +"origin" "32 264 -232" +"classname" "light" +} +{ +"classname" "light" +"origin" "-184 432 -336" +"light" "160" +} +{ +"light" "160" +"origin" "-192 144 -336" +"classname" "light" +} +{ +"classname" "light" +"origin" "-776 280 -312" +"light" "200" +} +{ +"light" "200" +"origin" "-864 432 -312" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1096 432 -312" +"light" "200" +} +{ +"light" "200" +"origin" "-1168 272 -312" +"classname" "light" +} +{ +"classname" "light" +"origin" "-944 64 -312" +"light" "200" +} +{ +"light" "200" +"origin" "-664 136 -312" +"classname" "light" +} +{ +"light" "200" +"origin" "-1112 592 -96" +"classname" "light" +} +{ +"classname" "light" +"origin" "-1040 1256 -32" +"light" "150" +} +{ +"light" "200" +"origin" "-880 1128 80" +"classname" "light" +} +{ +"classname" "light" +"origin" "-712 1400 -16" +"light" "200" +} +{ +"classname" "light" +"origin" "104 -600 -224" +"light" "200" +} +{ +"light" "200" +"origin" "280 -600 -224" +"classname" "light" +} +{ +"classname" "trigger_changelevel" +"map" "e2m4" +"model" "*53" +} +{ +"light" "160" +"origin" "-312 808 -72" +"classname" "light" +} +{ +"light" "200" +"origin" "192 1776 -312" +"classname" "light" +} +{ +"classname" "light" +"origin" "-392 568 -56" +"light" "160" +} +{ +"classname" "light" +"origin" "-1224 1504 8" +"light" "170" +} +{ +"light" "170" +"origin" "-1304 1392 8" +"classname" "light" +} +{ +"classname" "light" +"origin" "-640 1168 -8" +"light" "170" +} +{ +"light" "160" +"origin" "352 -1248 56" +"classname" "light" +} +{ +"classname" "light" +"origin" "40 -1248 56" +"light" "160" +} +{ +"light" "160" +"origin" "192 -1216 -176" +"classname" "light" +} +{ +"classname" "light" +"origin" "24 -1376 -232" +"light" "160" +} +{ +"light" "160" +"origin" "224 -1624 -232" +"classname" "light" +} +{ +"classname" "light" +"origin" "368 -1392 -232" +"light" "160" +} +{ +"classname" "light" +"origin" "8 -464 -40" +"light" "140" +} +{ +"light" "140" +"origin" "384 -464 -40" +"classname" "light" +} +{ +"classname" "light" +"origin" "-544 800 -56" +"light" "140" +} +{ +"classname" "trigger_secret" +"model" "*54" +} +{ +"classname" "trigger_secret" +"model" "*55" +} +{ +"light" "200" +"origin" "760 1856 -40" +"classname" "light" +} +{ +"classname" "light" +"origin" "760 1664 -40" +"light" "200" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "538 1762 -124" +"style" "1" +"light" "200" +} +{ +"style" "1" +"classname" "light_torch_small_walltorch" +"origin" "850 1930 -124" +"light" "200" +} +{ +"origin" "850 1618 -124" +"classname" "light_torch_small_walltorch" +"style" "1" +"light" "200" +} +{ +"classname" "light" +"origin" "912 1856 -40" +"light" "200" +} +{ +"light" "200" +"origin" "912 1664 -40" +"classname" "light" +} +{ +"light" "200" +"origin" "1064 1776 -172" +"classname" "light" +} +{ +"light" "200" +"origin" "1080 1856 -40" +"classname" "light" +} +{ +"classname" "light" +"origin" "1080 1664 -40" +"light" "200" +} +{ +"classname" "light" +"origin" "1176 1776 -172" +"light" "200" +} +{ +"light" "170" +"origin" "672 1768 -296" +"classname" "light" +} +{ +"target" "t38" +"classname" "trigger_teleport" +"model" "*56" +} +{ +"targetname" "t38" +"origin" "1144 1776 -88" +"classname" "info_teleport_destination" +} +{ +"map" "e2m7" +"classname" "trigger_changelevel" +"model" "*57" +} +{ +"light" "160" +"origin" "840 1768 -200" +"classname" "light" +} +{ +"light" "140" +"origin" "408 608 -344" +"classname" "light" +} +{ +"classname" "item_spikes" +"origin" "-16 240 -160" +"spawnflags" "2048" +} +{ +"classname" "weapon_supernailgun" +"origin" "-1256 1448 -80" +} +{ +"origin" "432 1160 152" +"classname" "item_artifact_super_damage" +} +{ +"message" "The portal lies beyond..." +"targetname" "t40" +"wait" "-1" +"speed" "20" +"sounds" "4" +"angle" "-2" +"classname" "func_door" +"model" "*58" +} +{ +"origin" "432 1672 -368" +"classname" "item_armor2" +} +{ +"target" "t39" +"sounds" "1" +"wait" "-1" +"classname" "func_button" +"model" "*59" +} +{ +"message" "The underwater barrier is lowered..." +"target" "t40" +"targetname" "t39" +"spawnflags" "1" +"classname" "trigger_once" +"model" "*60" +} +{ +"classname" "trigger_secret" +"model" "*61" +} +{ +"light" "200" +"origin" "-128 -704 -224" +"classname" "light" +} +{ +"classname" "light" +"origin" "512 -704 -224" +"light" "200" +} +{ +"light" "200" +"origin" "192 -832 -224" +"classname" "light" +} +{ +"mangle" "20 240 0" +"origin" "400 1048 240" +"classname" "info_intermission" +} +{ +"mangle" "20 145 0" +"origin" "-160 144 64" +"classname" "info_intermission" +} +{ +"mangle" "-20 45 0" +"origin" "-320 -824 -144" +"classname" "info_intermission" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*62" +} +{ +"classname" "item_artifact_super_damage" +"origin" "928 1768 -240" +"spawnflags" "1792" +} +{ +"classname" "light" +"origin" "8 1800 -120" +"light" "220" +} +{ +"classname" "weapon_lightning" +"origin" "1216 1784 -264" +"spawnflags" "1792" +} +{ +"classname" "item_cells" +"origin" "880 1648 -264" +"spawnflags" "1793" +} +{ +"spawnflags" "1793" +"origin" "880 1864 -264" +"classname" "item_cells" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*63" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*64" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*65" +} +{ +"classname" "info_player_coop" +"origin" "664 -1520 -312" +"angle" "180" +} +{ +"angle" "180" +"origin" "592 -1600 -312" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "680 -1712 -312" +"angle" "180" +} +{ +"classname" "air_bubbles" +"origin" "720 1384 -320" +} +{ +"classname" "light" +"origin" "680 1376 -312" +} +{ +"classname" "func_door_secret" +"angle" "180" +"spawnflags" "2" +"targetname" "t41" +"model" "*66" +"t_length" "65" // svdijk -- added to prevent z-fighting +} +{ +"classname" "trigger_multiple" +"target" "t41" +"model" "*67" +} +{ +"origin" "688 1176 -312" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"classname" "light" +"origin" "480 1408 -312" +} +{ +"origin" "448 1552 -312" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"classname" "light" +"origin" "840 1080 -312" +} +{ +"origin" "840 1080 -160" +"classname" "light" +"light" "200" +} +{ +"light" "200" +"classname" "light" +"origin" "840 1080 0" +} +{ +"classname" "light" +"origin" "840 1080 232" +"light" "200" +} +{ +"classname" "item_artifact_envirosuit" +"origin" "576 1440 -344" +} +{ +"classname" "item_artifact_invulnerability" +"origin" "544 1248 -344" +} +{ +"light" "200" +"origin" "840 936 232" +"classname" "light" +} +{ +"classname" "light" +"origin" "840 760 232" +"light" "150" +} +{ +"light" "120" +"origin" "808 600 232" +"classname" "light" +} +{ +"classname" "item_health" +"origin" "824 960 152" +} +{ +"origin" "848 880 152" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "808 768 152" +} +{ +"classname" "trigger_multiple" +"message" "Welcome to the Well of Wishes!" +"wait" "5" +"sounds" "1" +"model" "*68" +} +{ +"classname" "trigger_multiple" +"sounds" "1" +"wait" "3" +"message" "The Dopefish Lives!" +"model" "*69" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*70" +} +{ +"classname" "trigger_secret" +"model" "*71" +} +{ +"spawnflags" "1" +"origin" "-1312 1392 -80" +"classname" "item_spikes" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*72" +} +{ +"classname" "light" +"origin" "-544 600 -248" +"light" "200" +} +{ +"light" "200" +"classname" "light_torch_small_walltorch" +"origin" "194 -214 196" +"spawnflags" "2048" +} +{ +"light" "200" +"origin" "352 984 -328" +"classname" "light" +} +{ +"classname" "light" +"origin" "96 976 -328" +"light" "200" +} +{ +"classname" "light" +"origin" "640 776 -336" +"light" "200" +} +{ +"classname" "func_plat" +"spawnflags" "1" +"model" "*73" +} +{ +"classname" "monster_fish" +"origin" "656 352 -336" +"spawnflags" "256" +} +{ +"spawnflags" "256" +"origin" "432 424 -336" +"classname" "monster_fish" +} +{ +"classname" "monster_fish" +"origin" "296 968 -336" +"spawnflags" "256" +} +{ +"origin" "-48 800 -336" +"classname" "monster_fish" +} +{ +"classname" "monster_fish" +"origin" "-896 248 -312" +} +{ +"origin" "-744 328 -312" +"classname" "monster_fish" +} +{ +"classname" "path_corner" +"origin" "272 -1504 -264" +"targetname" "t42" +"target" "t43" +} +{ +"origin" "56 -1352 -264" +"classname" "path_corner" +"target" "t42" +"targetname" "t43" +} +{ +"classname" "item_health" +"origin" "312 -1336 -272" +} +{ +"origin" "544 -1488 -336" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "312 1464 -160" +} +{ +"origin" "56 1488 -192" +"classname" "item_health" +} +{ +"classname" "trigger_once" +"killtarget" "t44" +"spawnflags" "3072" +"model" "*74" +} +{ +"classname" "item_rockets" +"origin" "216 648 120" +"spawnflags" "1" +} +{ +"classname" "item_shells" +"origin" "136 648 120" +"spawnflags" "1" +} diff --git a/Misc/qs_pak/maps/e2m7.diff b/Misc/qs_pak/maps/e2m7.diff new file mode 100644 index 0000000..badaf2e --- /dev/null +++ b/Misc/qs_pak/maps/e2m7.diff @@ -0,0 +1,22 @@ +--- e2m7.ent ++++ e2m7@10a8.ent +@@ -1449,18 +1449,19 @@ + { + "targetname" "t119" + "classname" "func_door" + "wait" "-1" + "angle" "-1" + "speed" "30" + "message" "Go for a swim first..." + "sounds" "3" + "model" "*40" ++"origin" "-1 0 0" // svdijk -- added to prevent z-fighting + } + { + "classname" "func_button" + "angle" "0" + "wait" "-1" + "target" "t45" + "model" "*41" + } + { diff --git a/Misc/qs_pak/maps/e2m7@10a8.ent b/Misc/qs_pak/maps/e2m7@10a8.ent new file mode 100644 index 0000000..cd2c6fd --- /dev/null +++ b/Misc/qs_pak/maps/e2m7@10a8.ent @@ -0,0 +1,3633 @@ +{ +"wad" "gfx/tim.wad" +"classname" "worldspawn" +"sounds" "7" +"worldtype" "0" +"message" "the Underearth" +} +{ +"angle" "90" +"origin" "1136 -1100 -72" +"classname" "info_player_start" +} +{ +"origin" "1184 -776 -152" +"classname" "light" +"light" "150" +} +{ +"classname" "light" +"origin" "1704 -584 -184" +"light" "150" +} +{ +"classname" "light" +"origin" "1640 -688 -184" +"light" "150" +} +{ +"classname" "light" +"origin" "1696 -888 -192" +"light" "150" +} +{ +"classname" "light" +"origin" "1088 -960 -152" +"light" "150" +} +{ +"classname" "light" +"origin" "1248 -960 -152" +"light" "150" +} +{ +"classname" "light" +"origin" "1016 -768 -152" +"light" "100" +} +{ +"classname" "light" +"origin" "896 -920 -152" +"light" "150" +} +{ +"light" "100" +"origin" "1584 -208 -112" +"classname" "light" +} +{ +"light" "100" +"origin" "1776 -208 -112" +"classname" "light" +} +{ +"light" "150" +"origin" "1584 -88 -112" +"classname" "light" +} +{ +"origin" "1774 58 -76" +"classname" "light_torch_small_walltorch" +} +{ +"light" "100" +"origin" "1584 -488 -232" +"classname" "light" +} +{ +"light" "100" +"origin" "1768 -480 -232" +"classname" "light" +} +{ +"light" "150" +"origin" "1752 -112 -176" +"classname" "light" +} +{ +"light" "150" +"origin" "1592 -120 -176" +"classname" "light" +} +{ +"light" "150" +"origin" "1592 -248 -192" +"classname" "light" +} +{ +"light" "200" +"origin" "1768 -240 -192" +"classname" "light" +} +{ +"light" "150" +"origin" "1676 -220 -188" +"classname" "light" +} +{ +"light" "150" +"origin" "1672 -40 -136" +"classname" "light" +} +{ +"light" "150" +"origin" "1676 -376 -252" +"classname" "light" +} +{ +"light" "250" +"origin" "1112 952 -92" +"classname" "light" +} +{ +"light" "200" +"origin" "1280 928 -152" +"classname" "light" +} +{ +"classname" "light" +"origin" "704 952 -92" +"light" "250" +} +{ +"classname" "light" +"origin" "824 1112 -92" +"light" "200" +} +{ +"classname" "light" +"origin" "952 760 -92" +"light" "200" +} +{ +"classname" "light" +"origin" "824 760 -92" +"light" "200" +} +{ +"light" "250" +"origin" "952 1112 -92" +"classname" "light" +} +{ +"classname" "light" +"origin" "1128 -848 288" +"light" "500" +} +{ +"classname" "light" +"origin" "1144 -432 288" +} +{ +"classname" "light" +"origin" "864 -552 272" +"light" "200" +} +{ +"classname" "light" +"origin" "1392 -568 168" +"light" "200" +} +{ +"classname" "light" +"origin" "1416 -592 -24" +"light" "150" +} +{ +"classname" "light" +"origin" "888 -584 -24" +"light" "150" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1058 -466 -24" +"light" "225" +} +{ +"origin" "1214 -466 -24" +"classname" "light_torch_small_walltorch" +"light" "225" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1198 -66 40" +"light" "300" +} +{ +"classname" "light" +"origin" "1144 -204 172" +"light" "150" +} +{ +"classname" "light" +"origin" "1144 -292 -32" +"light" "150" +} +{ +"classname" "item_spikes" +"origin" "880 -592 -96" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "1068 -944 -96" +} +{ +"classname" "light" +"origin" "1128 -1084 96" +"light" "300" +} +{ +"classname" "light" +"origin" "888 -848 248" +"light" "150" +} +{ +"light" "150" +"origin" "1504 -896 248" +"classname" "light" +} +{ +"classname" "light" +"origin" "1304 -1048 24" +"light" "225" +} +{ +"classname" "light" +"origin" "1520 -872 -192" +"light" "150" +} +{ +"light" "100" +"origin" "1384 -776 -184" +"classname" "light" +} +{ +"classname" "light" +"origin" "1368 -912 -184" +"light" "100" +} +{ +"classname" "light" +"origin" "1584 496 148" +"light" "200" +} +{ +"light" "200" +"origin" "1488 496 148" +"classname" "light" +} +{ +"classname" "light" +"origin" "1688 164 148" +"light" "200" +} +{ +"light" "200" +"origin" "1352 496 148" +"classname" "light" +} +{ +"classname" "light" +"origin" "1608 496 -36" +"light" "200" +} +{ +"light" "200" +"origin" "1456 496 -36" +"classname" "light" +} +{ +"classname" "light" +"origin" "1692 600 -12" +"light" "200" +} +{ +"light" "200" +"origin" "1274 618 -64" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1274 378 -64" +"light" "200" +} +{ +"classname" "light" +"origin" "1256 496 -40" +"light" "200" +} +{ +"spawnflags" "2056" +"wait" "-1" +"classname" "func_door" +"angle" "270" +"model" "*1" +} +{ +"wait" "-1" +"spawnflags" "2056" +"sounds" "3" +"angle" "90" +"classname" "func_door" +"model" "*2" +} +{ +"light" "200" +"origin" "1968 1792 -257" +"classname" "light" +} +{ +"light" "250" +"origin" "1880 1792 -105" +"classname" "light" +} +{ +"classname" "light" +"origin" "1976 1944 56" +"light" "150" +} +{ +"light" "150" +"origin" "1992 1624 64" +"classname" "light" +} +{ +"classname" "light" +"origin" "1944 1736 64" +"light" "150" +} +{ +"light" "150" +"origin" "1944 1832 64" +"classname" "light" +} +{ +"classname" "light" +"origin" "1128 496 -24" +"light" "250" +} +{ +"light" "150" +"origin" "1120 632 -24" +"classname" "light" +} +{ +"light" "200" +"origin" "928 544 -24" +"classname" "light" +} +{ +"classname" "light" +"origin" "640 664 -8" +"light" "200" +} +{ +"light" "200" +"origin" "848 672 -8" +"classname" "light" +} +{ +"classname" "light" +"origin" "1024 544 -188" +"light" "175" +} +{ +"light" "250" +"origin" "64 192 136" +"classname" "light" +} +{ +"classname" "light" +"origin" "528 184 136" +"light" "250" +} +{ +"light" "200" +"origin" "72 408 8" +"classname" "light" +} +{ +"classname" "light" +"origin" "80 -48 8" +"light" "200" +} +{ +"light" "250" +"origin" "400 384 80" +"classname" "light" +} +{ +"classname" "light" +"origin" "392 -16 80" +"light" "250" +} +{ +"classname" "light" +"origin" "312 184 -80" +"light" "200" +} +{ +"light" "200" +"origin" "440 184 -80" +"classname" "light" +} +{ +"classname" "light" +"origin" "504 368 -120" +"light" "250" +} +{ +"light" "150" +"origin" "632 192 -120" +"classname" "light" +} +{ +"classname" "light" +"origin" "504 -16 -120" +"light" "250" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "774 446 -172" +"light" "250" +} +{ +"origin" "774 -70 -172" +"classname" "light_torch_small_walltorch" +"light" "250" +} +{ +"light" "250" +"origin" "896 -128 152" +"classname" "light" +} +{ +"classname" "light" +"origin" "896 184 152" +"light" "250" +} +{ +"light" "150" +"origin" "656 184 216" +"classname" "light" +} +{ +"classname" "light" +"origin" "304 368 -152" +"light" "200" +} +{ +"light" "200" +"origin" "0 480 -168" +"classname" "light" +} +{ +"classname" "light" +"origin" "96 376 -168" +"light" "200" +} +{ +"classname" "light" +"origin" "16 1480 -96" +"light" "200" +} +{ +"light" "200" +"origin" "1280 1824 -120" +"classname" "light" +} +{ +"light" "200" +"origin" "504 1816 -120" +"classname" "light" +} +{ +"classname" "light" +"origin" "712 1808 -120" +"light" "200" +} +{ +"light" "200" +"origin" "1064 1808 -120" +"classname" "light" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "858 1950 -172" +"light" "250" +} +{ +"origin" "658 1950 -172" +"classname" "light_torch_small_walltorch" +"light" "250" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "666 1682 -172" +"light" "250" +} +{ +"origin" "858 1682 -172" +"classname" "light_torch_small_walltorch" +"light" "250" +} +{ +"classname" "light" +"origin" "1248 1384 -32" +"light" "200" +} +{ +"classname" "light" +"origin" "1688 936 -136" +"light" "200" +} +{ +"light" "250" +"origin" "1856 1444 -52" +"classname" "light" +} +{ +"light" "150" +"origin" "1864 1316 -192" +"classname" "light" +} +{ +"classname" "light" +"origin" "1776 1212 -192" +"light" "150" +} +{ +"light" "150" +"origin" "1696 1076 -192" +"classname" "light" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1770 730 -64" +"light" "250" +} +{ +"classname" "light" +"origin" "1760 1720 -201" +"light" "250" +} +{ +"classname" "light" +"origin" "1632 1520 -201" +"light" "200" +} +{ +"classname" "light" +"origin" "1984 1504 -201" +"light" "200" +} +{ +"light" "250" +"classname" "light_torch_small_walltorch" +"origin" "1874 2104 -300" +} +{ +"light" "250" +"origin" "1712 2104 -300" +"classname" "light_torch_small_walltorch" +} +{ +"light" "200" +"classname" "light" +"origin" "1792 2048 48" +} +{ +"classname" "light_flame_large_yellow" +"origin" "1362 1778 0" +} +{ +"classname" "light" +"origin" "1408 1776 -124" +"light" "200" +} +{ +"classname" "light" +"origin" "1520 1880 -84" +"light" "175" +} +{ +"light" "175" +"origin" "1416 1512 -84" +"classname" "light" +} +{ +"classname" "light" +"origin" "1376 1568 -164" +"light" "150" +} +{ +"light" "150" +"origin" "1416 1888 -164" +"classname" "light" +} +{ +"classname" "light" +"origin" "1544 2072 -164" +"light" "150" +} +{ +"classname" "light" +"origin" "1552 1968 36" +"light" "250" +} +{ +"classname" "light" +"origin" "1416 1968 -16" +"light" "175" +} +{ +"light" "175" +"origin" "1416 2176 -16" +"classname" "light" +} +{ +"classname" "light" +"origin" "1240 2176 -16" +"light" "175" +} +{ +"light" "175" +"origin" "1240 2000 -16" +"classname" "light" +} +{ +"classname" "light" +"origin" "1264 1576 -72" +"light" "200" +} +{ +"light" "200" +"origin" "992 1480 -40" +"classname" "light" +} +{ +"light" "200" +"classname" "light_torch_small_walltorch" +"origin" "968 1632 -132" +} +{ +"light" "200" +"origin" "968 1328 -132" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1474 2234 -133" +"light" "200" +} +{ +"origin" "1182 2234 -133" +"classname" "light_torch_small_walltorch" +"light" "200" +} +{ +"classname" "light" +"origin" "1936 1480 48" +"light" "150" +} +{ +"light" "150" +"origin" "1544 1528 64" +"classname" "light" +} +{ +"classname" "light" +"origin" "1472 1488 24" +"light" "150" +} +{ +"classname" "light" +"origin" "1400 1664 96" +"light" "150" +} +{ +"light" "200" +"origin" "1792 2176 -221" +"classname" "light" +} +{ +"classname" "light" +"origin" "1880 2288 -221" +"light" "200" +} +{ +"light" "200" +"origin" "2048 2288 -221" +"classname" "light" +} +{ +"classname" "light" +"origin" "2128 2208 -221" +"light" "200" +} +{ +"light" "200" +"origin" "2160 1992 -205" +"classname" "light" +} +{ +"origin" "2288 1952 -29" +"classname" "light" +} +{ +"light" "250" +"origin" "2274 1738 -172" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "2274 1682 -172" +"light" "250" +} +{ +"light" "200" +"origin" "2376 2184 -152" +"classname" "light" +} +{ +"light" "200" +"origin" "2618 1658 -169" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "2618 1368 -169" +"light" "200" +} +{ +"light" "200" +"origin" "2176 1488 -169" +"classname" "light_torch_small_walltorch" +} +{ +"light" "200" +"origin" "2298 626 24" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1930 738 24" +"light" "200" +} +{ +"light" "200" +"origin" "2050 394 24" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "func_plat" +"model" "*3" +} +{ +"light" "150" +"origin" "2152 1784 -312" +"classname" "light" +} +{ +"classname" "light" +"origin" "2232 936 -4" +"light" "200" +} +{ +"classname" "light" +"origin" "2232 1040 48" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "2034 1034 -164" +"light" "200" +} +{ +"classname" "light" +"origin" "2304 1040 280" +"light" "200" +} +{ +"light" "200" +"origin" "2168 1040 280" +"classname" "light" +} +{ +"origin" "2130 2452 -112" +"classname" "light_flame_large_yellow" +"light" "250" +} +{ +"classname" "light_flame_large_yellow" +"origin" "1858 2452 -112" +"light" "250" +} +{ +"classname" "light" +"origin" "2132 2416 -188" +"light" "150" +} +{ +"light" "150" +"origin" "1860 2416 -188" +"classname" "light" +} +{ +"light" "200" +"origin" "2256 1968 -453" +"classname" "light" +} +{ +"classname" "light" +"origin" "2256 2184 -453" +"light" "200" +} +{ +"light" "200" +"origin" "2216 2384 -453" +"classname" "light" +} +{ +"classname" "light" +"origin" "1792 2400 -453" +"light" "200" +} +{ +"light" "175" +"origin" "1984 2400 -453" +"classname" "light" +} +{ +"light" "150" +"origin" "2168 1608 -9" +"classname" "light" +} +{ +"classname" "light" +"origin" "2368 1600 -9" +"light" "150" +} +{ +"light" "150" +"origin" "2240 1424 44" +"classname" "light" +} +{ +"classname" "light" +"origin" "2400 1424 44" +"light" "150" +} +{ +"light" "150" +"origin" "2560 1424 44" +"classname" "light" +} +{ +"classname" "light" +"origin" "2560 1560 44" +"light" "175" +} +{ +"light" "150" +"origin" "2232 1288 44" +"classname" "light" +} +{ +"light" "175" +"origin" "2384 1424 -160" +"classname" "light" +} +{ +"classname" "light" +"origin" "2232 1288 -160" +"light" "175" +} +{ +"light" "150" +"origin" "2164 932 -172" +"classname" "light" +} +{ +"classname" "light" +"origin" "2308 932 -172" +"light" "150" +} +{ +"light" "150" +"origin" "2232 776 24" +"classname" "light" +} +{ +"classname" "light" +"origin" "2192 664 24" +"light" "150" +} +{ +"light" "150" +"origin" "2016 696 24" +"classname" "light" +} +{ +"classname" "light" +"origin" "1912 496 24" +"light" "150" +} +{ +"light" "175" +"origin" "80 1616 -120" +"classname" "light" +} +{ +"classname" "light" +"origin" "72 1888 -120" +"light" "175" +} +{ +"light" "175" +"origin" "296 1616 -120" +"classname" "light" +} +{ +"light" "175" +"origin" "304 1888 -120" +"classname" "light" +} +{ +"targetname" "t20" +"angle" "90" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t21" +"angle" "120" +"classname" "trap_spikeshooter" +"origin" "192 1752 -208" +"spawnflags" "1" +} +{ +"targetname" "t22" +"angle" "150" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t19" +"angle" "60" +"classname" "trap_spikeshooter" +"origin" "192 1752 -208" +"spawnflags" "1" +} +{ +"targetname" "t18" +"angle" "30" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t17" +"angle" "0" +"classname" "trap_spikeshooter" +"origin" "192 1752 -208" +"spawnflags" "1" +} +{ +"targetname" "t24" +"angle" "210" +"classname" "trap_spikeshooter" +"origin" "192 1752 -208" +"spawnflags" "1" +} +{ +"targetname" "t23" +"angle" "180" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t25" +"angle" "240" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t26" +"angle" "270" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t27" +"angle" "300" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t28" +"angle" "330" +"spawnflags" "1" +"origin" "192 1752 -208" +"classname" "trap_spikeshooter" +} +{ +"delay" ".1" +"targetname" "t29" +"target" "t17" +"classname" "trigger_multiple" +"model" "*4" +} +{ +"delay" ".1" +"targetname" "t17" +"target" "t18" +"classname" "trigger_multiple" +"model" "*5" +} +{ +"delay" ".1" +"targetname" "t18" +"target" "t19" +"classname" "trigger_multiple" +"model" "*6" +} +{ +"delay" ".1" +"targetname" "t19" +"target" "t20" +"classname" "trigger_multiple" +"model" "*7" +} +{ +"delay" ".1" +"targetname" "t20" +"target" "t21" +"classname" "trigger_multiple" +"model" "*8" +} +{ +"delay" ".1" +"targetname" "t21" +"target" "t22" +"classname" "trigger_multiple" +"model" "*9" +} +{ +"delay" ".1" +"targetname" "t22" +"target" "t23" +"classname" "trigger_multiple" +"model" "*10" +} +{ +"delay" ".1" +"targetname" "t23" +"target" "t24" +"classname" "trigger_multiple" +"model" "*11" +} +{ +"delay" ".1" +"targetname" "t24" +"target" "t25" +"classname" "trigger_multiple" +"model" "*12" +} +{ +"delay" ".1" +"targetname" "t25" +"target" "t26" +"classname" "trigger_multiple" +"model" "*13" +} +{ +"delay" ".1" +"targetname" "t26" +"target" "t27" +"classname" "trigger_multiple" +"model" "*14" +} +{ +"delay" ".1" +"targetname" "t27" +"target" "t28" +"classname" "trigger_multiple" +"model" "*15" +} +{ +"target" "t29" +"wait" "1.3" +"classname" "trigger_multiple" +"model" "*16" +} +{ +"origin" "192 1750 -188" +"classname" "light_flame_large_yellow" +} +{ +"light" "125" +"origin" "214 1752 -166" +"classname" "light" +} +{ +"classname" "light" +"origin" "192 1774 -166" +"light" "125" +} +{ +"light" "125" +"origin" "170 1750 -166" +"classname" "light" +} +{ +"classname" "light" +"origin" "194 1726 -166" +"light" "125" +} +{ +"target" "t31" +"wait" "-1" +"angle" "0" +"classname" "func_button" +"model" "*17" +} +{ +"target" "t31" +"angle" "180" +"wait" "-1" +"classname" "func_button" +"model" "*18" +} +{ +"target" "t31" +"wait" "-1" +"angle" "180" +"classname" "func_button" +"model" "*19" +} +{ +"target" "t31" +"angle" "90" +"wait" "-1" +"classname" "func_button" +"model" "*20" +} +{ +"wait" "-1" +"targetname" "t30" +"sounds" "4" +"speed" "50" +"angle" "-1" +"classname" "func_door" +"model" "*21" +} +{ +"count" "4" +"targetname" "t31" +"target" "t30" +"classname" "trigger_counter" +"model" "*22" +} +{ +"light" "150" +"origin" "2424 1080 -176" +"classname" "light" +} +{ +"classname" "light" +"origin" "2424 992 -176" +"light" "150" +} +{ +"targetname" "t40" +"angle" "180" +"spawnflags" "1" +"origin" "2434 1036 -192" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t40" +"classname" "trap_spikeshooter" +"origin" "2434 1036 -192" +"spawnflags" "1" +"angle" "160" +} +{ +"targetname" "t40" +"angle" "140" +"spawnflags" "1" +"origin" "2434 1036 -192" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t40" +"classname" "trap_spikeshooter" +"origin" "2434 1036 -192" +"spawnflags" "1" +"angle" "120" +} +{ +"targetname" "t40" +"angle" "200" +"spawnflags" "1" +"origin" "2434 1036 -192" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t40" +"classname" "trap_spikeshooter" +"origin" "2434 1036 -192" +"spawnflags" "1" +"angle" "220" +} +{ +"targetname" "t40" +"angle" "240" +"spawnflags" "1" +"origin" "2434 1036 -192" +"classname" "trap_spikeshooter" +} +{ +"targetname" "t41" +"target" "t40" +"wait" ".5" +"classname" "trigger_multiple" +"model" "*23" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*24" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*25" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*26" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*27" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*28" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*29" +} +{ +"target" "t41" +"classname" "trigger_multiple" +"model" "*30" +} +{ +"light" "125" +"origin" "2196 1200 -204" +"classname" "light" +} +{ +"classname" "light" +"origin" "2284 1200 -204" +"light" "125" +} +{ +"light" "125" +"origin" "2284 1112 -204" +"classname" "light" +} +{ +"classname" "light" +"origin" "2388 1104 -204" +"light" "125" +} +{ +"light" "125" +"origin" "2284 1000 -204" +"classname" "light" +} +{ +"classname" "light" +"origin" "2140 1008 -204" +"light" "125" +} +{ +"light" "125" +"origin" "2132 1096 -204" +"classname" "light" +} +{ +"classname" "light" +"origin" "2132 1160 -204" +"light" "125" +} +{ +"light" "200" +"origin" "528 1816 -392" +"classname" "light" +} +{ +"classname" "light" +"origin" "736 1808 -392" +"light" "200" +} +{ +"light" "200" +"origin" "1040 1808 -392" +"classname" "light" +} +{ +"classname" "light" +"origin" "744 1424 -392" +"light" "200" +} +{ +"light" "200" +"origin" "752 1288 -416" +"classname" "light" +} +{ +"light" "200" +"origin" "760 1064 -376" +"classname" "light" +} +{ +"classname" "func_train" +"spawnflags" "33" +"targetname" "t42" +"dmg" "1000" +"sounds" "1" +"target" "t124" +"speed" "250" +"model" "*31" +} +{ +"classname" "func_door" +"angle" "-2" +"wait" "-1" +"targetname" "t43" +"speed" "50" +"sounds" "3" +"model" "*32" +} +{ +"classname" "func_button" +"angle" "-2" +"wait" "-1" +"target" "t42" +"sounds" "1" +"model" "*33" +} +{ +"classname" "trigger_once" +"target" "t43" +"targetname" "t42" +"delay" "2" +"model" "*34" +} +{ +"classname" "light" +"origin" "1936 1784 -288" +"light" "125" +} +{ +"classname" "monster_ogre" +"origin" "1976 1784 -328" +"angle" "180" +} +{ +"classname" "func_door" +"angle" "90" +"wait" "-1" +"sounds" "1" +"model" "*35" +} +{ +"classname" "func_door" +"angle" "270" +"targetname" "t44" +"wait" "-1" +"model" "*36" +} +{ +"classname" "light" +"origin" "64 264 8" +"light" "125" +} +{ +"light" "125" +"origin" "64 120 8" +"classname" "light" +} +{ +"classname" "light" +"origin" "64 192 8" +"light" "100" +} +{ +"classname" "trigger_once" +"target" "t44" +"model" "*37" +} +{ +"classname" "light" +"origin" "512 184 -8" +"light" "175" +} +{ +"targetname" "t119" +"classname" "func_door" +"angle" "90" +"wait" "-1" +"speed" "40" +"model" "*38" +} +{ +"targetname" "t119" +"classname" "func_door" +"wait" "-1" +"angle" "270" +"speed" "40" +"sounds" "4" +"model" "*39" +} +{ +"targetname" "t119" +"classname" "func_door" +"wait" "-1" +"angle" "-1" +"speed" "30" +"message" "Go for a swim first..." +"sounds" "3" +"model" "*40" +"origin" "-1 0 0" // svdijk -- added to prevent z-fighting +} +{ +"classname" "func_button" +"angle" "0" +"wait" "-1" +"target" "t45" +"model" "*41" +} +{ +"classname" "light" +"origin" "36 184 84" +"light" "75" +} +{ +"classname" "light" +"origin" "752 184 -192" +"light" "150" +} +{ +"classname" "light" +"origin" "544 536 -152" +"light" "125" +} +{ +"classname" "func_door" +"angle" "-2" +"sounds" "1" +"wait" "-1" +"targetname" "t45" +"model" "*42" +} +{ +"wait" "-1" +"sounds" "1" +"angle" "-2" +"classname" "func_door" +"targetname" "t45" +"model" "*43" +} +{ +"light" "125" +"origin" "544 -152 -152" +"classname" "light" +} +{ +"classname" "item_artifact_envirosuit" +"origin" "1024 492 -232" +} +{ +"classname" "item_armor1" +"origin" "2128 1752 -352" +} +{ +"classname" "light_flame_small_yellow" +"origin" "1024 368 -4" +"light" "250" +} +{ +"classname" "light" +"origin" "1024 400 -64" +"light" "150" +} +{ +"wait" "5" +"sounds" "1" +"classname" "func_door" +"angle" "-2" +"spawnflags" "1" +"targetname" "t51" +"model" "*44" +} +{ +"wait" "5" +"sounds" "1" +"classname" "func_door" +"angle" "-2" +"spawnflags" "1" +"targetname" "t51" +"model" "*45" +} +{ +"sounds" "3" +"classname" "func_button" +"angle" "270" +"wait" "3" +"target" "t51" +"model" "*46" +} +{ +"classname" "light" +"origin" "1224 712 -216" +"light" "100" +} +{ +"classname" "light" +"origin" "1232 768 -192" +"light" "100" +} +{ +"light" "75" +"origin" "1168 760 -232" +"classname" "light" +} +{ +"light" "100" +"origin" "1232 800 -208" +"classname" "light" +} +{ +"sounds" "1" +"origin" "1860 472 -8" +"classname" "item_key2" +"spawnflags" "2048" +} +{ +"classname" "light" +"origin" "1112 1568 -40" +"light" "200" +} +{ +"light" "150" +"origin" "-96 1440 -160" +"classname" "light" +} +{ +"classname" "light" +"origin" "384 1440 -160" +"light" "150" +} +{ +"light" "200" +"origin" "248 1408 -96" +"classname" "light" +} +{ +"light" "150" +"origin" "968 1480 -128" +"classname" "light" +} +{ +"light" "150" +"origin" "1008 -592 -32" +"classname" "light" +} +{ +"classname" "light" +"origin" "1264 -592 -32" +"light" "150" +} +{ +"light" "200" +"origin" "880 -840 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "1376 -856 -56" +"light" "200" +} +{ +"light" "175" +"origin" "264 184 -8" +"classname" "light" +} +{ +"light" "175" +"origin" "1464 -864 -208" +"classname" "light" +} +{ +"light" "175" +"origin" "1816 160 -56" +"classname" "light" +} +{ +"classname" "light" +"origin" "1560 160 -56" +"light" "175" +} +{ +"light" "175" +"origin" "1544 1632 104" +"classname" "light" +} +{ +"classname" "light" +"origin" "1792 1624 128" +"light" "175" +} +{ +"classname" "item_health" +"origin" "1068 -980 -104" +} +{ +"spawnflags" "1" +"classname" "item_shells" +"origin" "1344 -1160 -96" +} +{ +"classname" "monster_ogre" +"origin" "1008 -128 40" +"angle" "315" +"targetname" "t59" +"spawnflags" "1" +} +{ +"classname" "trigger_once" +"target" "t59" +"model" "*47" +} +{ +"classname" "monster_ogre" +"origin" "896 96 56" +"angle" "270" +"target" "t60" +"spawnflags" "1" +} +{ +"classname" "path_corner" +"origin" "896 208 40" +"target" "t60" +"targetname" "t61" +} +{ +"origin" "896 -16 40" +"classname" "path_corner" +"targetname" "t60" +"target" "t61" +} +{ +"classname" "path_corner" +"origin" "168 392 -56" +"target" "t62" +"targetname" "t63" +} +{ +"origin" "168 -16 -56" +"classname" "path_corner" +"targetname" "t62" +"target" "t63" +} +{ +"classname" "path_corner" +"origin" "88 344 -56" +"targetname" "t64" +"target" "t65" +"spawnflags" "256" +} +{ +"origin" "88 72 -56" +"classname" "path_corner" +"target" "t64" +"targetname" "t65" +"spawnflags" "256" +} +{ +"classname" "monster_hell_knight" +"origin" "88 224 -40" +"angle" "90" +"target" "t64" +"spawnflags" "257" +} +{ +"classname" "monster_hell_knight" +"origin" "168 232 -40" +"angle" "270" +"target" "t62" +"spawnflags" "1" +} +{ +"classname" "monster_zombie" +"origin" "544 -120 -208" +"angle" "90" +"targetname" "t45" +} +{ +"classname" "monster_zombie" +"origin" "544 496 -208" +"angle" "270" +"targetname" "t45" +} +{ +"classname" "monster_wizard" +"origin" "664 428 216" +"angle" "225" +"spawnflags" "1" +} +{ +"angle" "135" +"origin" "664 -56 216" +"classname" "monster_wizard" +"spawnflags" "257" +} +{ +"classname" "light" +"origin" "1736 88 -40" +"light" "100" +} +{ +"classname" "monster_ogre" +"origin" "904 -120 56" +"angle" "0" +"targetname" "t66" +"spawnflags" "1281" +} +{ +"classname" "trigger_once" +"target" "t66" +"spawnflags" "256" +"model" "*48" +} +{ +"classname" "item_health" +"origin" "1168 -408 -80" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "1168 -104 -16" +} +{ +"classname" "item_spikes" +"origin" "928 216 32" +} +{ +"classname" "item_rockets" +"origin" "632 -48 32" +} +{ +"classname" "item_health" +"origin" "32 392 -64" +} +{ +"light" "200" +"origin" "1688 288 148" +"classname" "light" +} +{ +"classname" "light" +"origin" "1688 464 148" +"light" "200" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "1814 622 -64" +"light" "250" +} +{ +"classname" "light" +"origin" "1768 344 -72" +"light" "200" +} +{ +"classname" "trigger_monsterjump" +"angle" "0" +"model" "*49" +} +{ +"targetname" "t100" +"classname" "monster_ogre" +"origin" "1504 272 24" +"angle" "0" +"spawnflags" "256" +} +{ +"targetname" "t68" +"target" "t67" +"origin" "1352 576 -120" +"classname" "path_corner" +"spawnflags" "256" +} +{ +"target" "t68" +"targetname" "t67" +"classname" "path_corner" +"origin" "1352 416 -120" +"spawnflags" "256" +} +{ +"target" "t68" +"angle" "90" +"origin" "1360 480 -104" +"classname" "monster_demon1" +"spawnflags" "257" +} +{ +"targetname" "t70" +"target" "t69" +"origin" "1472 496 -120" +"classname" "path_corner" +} +{ +"target" "t70" +"targetname" "t69" +"classname" "path_corner" +"origin" "1688 496 -120" +} +{ +"target" "t69" +"angle" "270" +"origin" "1648 544 -104" +"classname" "monster_ogre" +"spawnflags" "1" +} +{ +"target" "t71" +"targetname" "t72" +"origin" "1984 688 -24" +"classname" "path_corner" +"spawnflags" "256" +} +{ +"target" "t72" +"targetname" "t71" +"classname" "path_corner" +"origin" "1984 448 -24" +"spawnflags" "256" +} +{ +"target" "t71" +"angle" "270" +"origin" "1992 536 -8" +"classname" "monster_ogre" +"spawnflags" "257" +} +{ +"target" "t74" +"targetname" "t73" +"origin" "2120 680 -24" +"classname" "path_corner" +} +{ +"targetname" "t74" +"target" "t73" +"classname" "path_corner" +"origin" "2240 680 -24" +} +{ +"target" "t74" +"angle" "225" +"origin" "2256 736 -8" +"classname" "monster_ogre" +"spawnflags" "1" +} +{ +"targetname" "t78" +"angle" "90" +"origin" "2232 1312 -8" +"classname" "monster_ogre" +"spawnflags" "256" +} +{ +"target" "t76" +"angle" "90" +"origin" "2232 1008 -200" +"classname" "monster_hell_knight" +"spawnflags" "1" +} +{ +"targetname" "t76" +"target" "t75" +"origin" "2120 968 -216" +"classname" "path_corner" +} +{ +"target" "t76" +"targetname" "t75" +"classname" "path_corner" +"origin" "2336 968 -216" +} +{ +"classname" "light" +"origin" "2384 2400 -152" +"light" "200" +} +{ +"targetname" "t77" +"wait" "-1" +"sounds" "1" +"speed" "300" +"angle" "-2" +"classname" "func_door" +"model" "*50" +} +{ +"targetname" "t77" +"angle" "180" +"origin" "2512 2312 -200" +"classname" "monster_demon1" +"spawnflags" "256" +} +{ +"targetname" "t77" +"classname" "monster_demon1" +"origin" "2512 2160 -200" +"angle" "180" +} +{ +"classname" "item_health" +"origin" "2504 2200 -224" +} +{ +"light" "150" +"origin" "2536 2312 -128" +"classname" "light" +} +{ +"classname" "light" +"origin" "2536 2160 -128" +"light" "150" +} +{ +"target" "t77" +"classname" "trigger_once" +"model" "*51" +} +{ +"spawnflags" "2" +"origin" "2368 2336 -224" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "2504 2240 -224" +"classname" "item_spikes" +} +{ +"origin" "2408 2072 -224" +"classname" "item_shells" +} +{ +"target" "t78" +"classname" "trigger_once" +"model" "*52" +} +{ +"targetname" "t78" +"angle" "90" +"origin" "2240 1272 -200" +"classname" "monster_demon1" +} +{ +"light" "150" +"origin" "1120 1384 -40" +"classname" "light" +} +{ +"light" "200" +"origin" "1200 1248 -104" +"classname" "light" +} +{ +"light" "250" +"origin" "1288 1032 -4" +"classname" "light_flame_small_yellow" +} +{ +"light" "150" +"origin" "1256 1032 -64" +"classname" "light" +} +{ +"classname" "light_flame_small_yellow" +"origin" "568 1032 -4" +"light" "250" +} +{ +"classname" "light" +"origin" "600 1032 -64" +"light" "150" +} +{ +"light" "250" +"origin" "888 1272 -4" +"classname" "light_flame_small_yellow" +} +{ +"light" "150" +"origin" "888 1240 -64" +"classname" "light" +} +{ +"light" "200" +"origin" "608 1232 -108" +"classname" "light" +} +{ +"target" "t79" +"wait" "-1" +"angle" "180" +"classname" "func_button" +"model" "*53" +} +{ +"targetname" "t79" +"message" "This door is opened near by..." +"sounds" "3" +"speed" "35" +"angle" "-1" +"wait" "-1" +"classname" "func_door" +"model" "*54" +} +{ +"light" "100" +"origin" "580 1208 -148" +"classname" "light" +} +{ +"light" "200" +"origin" "1224 736 -8" +"classname" "light" +} +{ +"target" "t80" +"classname" "trigger_once" +"model" "*55" +} +{ +"targetname" "t80" +"angle" "315" +"origin" "640 1088 128" +"classname" "monster_wizard" +} +{ +"targetname" "t80" +"classname" "monster_wizard" +"origin" "616 720 128" +"angle" "0" +} +{ +"targetname" "t80" +"angle" "180" +"origin" "1280 680 128" +"classname" "monster_wizard" +"spawnflags" "256" +} +{ +"target" "t82" +"origin" "1248 1080 24" +"classname" "monster_wizard" +"spawnflags" "1" +} +{ +"targetname" "t82" +"target" "t81" +"origin" "1168 1064 8" +"classname" "path_corner" +} +{ +"target" "t82" +"targetname" "t81" +"classname" "path_corner" +"origin" "720 1064 8" +} +{ +"targetname" "t80" +"classname" "monster_wizard" +"origin" "584 1112 128" +"angle" "315" +"spawnflags" "256" +} +{ +"origin" "1256 944 -184" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "1116 584 -256" +"classname" "item_spikes" +} +{ +"targetname" "t79" +"angle" "315" +"origin" "1000 1464 -168" +"classname" "monster_ogre" +} +{ +"target" "t85" +"targetname" "t86" +"origin" "1456 1824 -192" +"classname" "path_corner" +"spawnflags" "256" +} +{ +"target" "t86" +"targetname" "t85" +"classname" "path_corner" +"origin" "1456 1560 -192" +"spawnflags" "256" +} +{ +"target" "t85" +"angle" "270" +"origin" "1456 1664 -176" +"classname" "monster_ogre" +"spawnflags" "256" +} +{ +"targetname" "t91" +"angle" "270" +"origin" "1560 1944 -320" +"classname" "monster_zombie" +"spawnflags" "256" +} +{ +"targetname" "t91" +"classname" "monster_zombie" +"origin" "1600 1912 -320" +"angle" "270" +} +{ +"angle" "225" +"origin" "1960 1984 -320" +"classname" "monster_zombie" +} +{ +"targetname" "t91" +"classname" "monster_zombie" +"origin" "1904 1928 -320" +"angle" "225" +} +{ +"targetname" "t91" +"angle" "270" +"origin" "1624 1768 -320" +"classname" "monster_zombie" +} +{ +"target" "t87" +"classname" "monster_zombie" +"origin" "1696 1912 -320" +"angle" "0" +} +{ +"target" "t89" +"angle" "270" +"origin" "1704 1800 -320" +"classname" "monster_zombie" +} +{ +"target" "t87" +"targetname" "t88" +"origin" "1648 1912 -336" +"classname" "path_corner" +} +{ +"target" "t88" +"targetname" "t87" +"classname" "path_corner" +"origin" "1848 1904 -336" +} +{ +"targetname" "t90" +"target" "t89" +"origin" "1648 1824 -336" +"classname" "path_corner" +} +{ +"target" "t90" +"targetname" "t89" +"classname" "path_corner" +"origin" "1768 1752 -336" +} +{ +"target" "t91" +"classname" "trigger_once" +"model" "*56" +} +{ +"spawnflags" "1" +"origin" "1496 1808 -200" +"classname" "item_health" +} +{ +"spawnflags" "1" +"origin" "1184 2176 -192" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "1184 2128 -192" +"spawnflags" "1" +} +{ +"spawnflags" "1" +"origin" "1264 1680 -192" +"classname" "item_health" +} +{ +"target" "t92" +"targetname" "t93" +"origin" "2376 2304 -216" +"classname" "path_corner" +} +{ +"target" "t93" +"targetname" "t92" +"classname" "path_corner" +"origin" "2376 1984 -216" +} +{ +"target" "t95" +"targetname" "t94" +"origin" "2144 1608 -216" +"classname" "path_corner" +} +{ +"target" "t94" +"targetname" "t95" +"classname" "path_corner" +"origin" "2376 1608 -216" +} +{ +"target" "t92" +"angle" "270" +"origin" "2376 2176 -200" +"classname" "monster_hell_knight" +"spawnflags" "1" +} +{ +"angle" "135" +"origin" "2416 1760 -200" +"classname" "monster_hell_knight" +"spawnflags" "257" +} +{ +"target" "t94" +"angle" "180" +"origin" "2320 1608 -200" +"classname" "monster_hell_knight" +"spawnflags" "1" +} +{ +"angle" "90" +"origin" "2152 1840 -200" +"classname" "monster_ogre" +"spawnflags" "257" +} +{ +"target" "t97" +"targetname" "t96" +"origin" "2096 2376 -216" +"classname" "path_corner" +"spawnflags" "256" +} +{ +"target" "t96" +"targetname" "t97" +"classname" "path_corner" +"origin" "2232 2208 -216" +"spawnflags" "256" +} +{ +"target" "t96" +"angle" "135" +"origin" "2200 2264 -200" +"classname" "monster_wizard" +"spawnflags" "257" +} +{ +"origin" "2104 1544 -224" +"classname" "item_shells" +} +{ +"origin" "2176 1240 -32" +"classname" "item_spikes" +} +{ +"classname" "item_spikes" +"origin" "2256 1240 -32" +} +{ +"origin" "1928 584 -32" +"classname" "item_shells" +} +{ +"spawnflags" "1" +"origin" "2040 1072 -32" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "2040 1024 -32" +"spawnflags" "1" +} +{ +"angle" "225" +"origin" "2352 1160 -200" +"classname" "monster_hell_knight" +"spawnflags" "256" +} +{ +"angle" "180" +"origin" "1864 1192 -216" +"classname" "monster_zombie" +} +{ +"classname" "monster_zombie" +"origin" "1776 1192 -216" +"angle" "180" +} +{ +"target" "t99" +"targetname" "t98" +"origin" "1688 1192 -232" +"classname" "path_corner" +} +{ +"target" "t98" +"targetname" "t99" +"classname" "path_corner" +"origin" "1688 1048 -232" +} +{ +"target" "t98" +"angle" "90" +"origin" "1688 1112 -216" +"classname" "monster_zombie" +} +{ +"origin" "536 416 32" +"classname" "item_shells" +} +{ +"target" "t100" +"classname" "trigger_once" +"spawnflags" "256" +"model" "*57" +} +{ +"origin" "1784 408 -128" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "1784 448 -128" +} +{ +"origin" "1736 728 -128" +"classname" "item_rockets" +} +{ +"target" "t101" +"sounds" "1" +"wait" "-1" +"angle" "270" +"classname" "func_button" +"model" "*58" +} +{ +"light" "250" +"origin" "1418 234 52" +"classname" "light_torch_small_walltorch" +} +{ +"targetname" "t101" +"classname" "trigger_secret" +"model" "*59" +} +{ +"targetname" "t102" +"angle" "180" +"classname" "trigger_monsterjump" +"model" "*60" +} +{ +"target" "t102" +"killtarget" "t102" +"classname" "trigger_once" +"model" "*61" +} +{ +"origin" "1568 1968 -352" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "1608 1968 -352" +} +{ +"origin" "2112 1776 -352" +"classname" "item_shells" +"spawnflags" "2048" +} +{ +"origin" "1920 2232 -352" +"classname" "item_spikes" +} +{ +"classname" "item_spikes" +"origin" "2008 2232 -352" +} +{ +"classname" "item_shells" +"origin" "2176 1440 -224" +} +{ +"target" "t66" +"classname" "trigger_once" +"model" "*62" +} +{ +"origin" "1744 0 -128" +"classname" "item_spikes" +"spawnflags" "1" +} +{ +"target" "t103" +"targetname" "t104" +"origin" "-56 1432 -224" +"classname" "path_corner" +"spawnflags" "256" +} +{ +"target" "t104" +"targetname" "t103" +"classname" "path_corner" +"origin" "312 1432 -224" +"spawnflags" "256" +} +{ +"target" "t103" +"origin" "40 1440 -208" +"classname" "monster_ogre" +"spawnflags" "257" +} +{ +"angle" "45" +"origin" "56 1616 -208" +"classname" "monster_hell_knight" +"spawnflags" "1" +} +{ +"target" "t105" +"targetname" "t106" +"origin" "520 1816 -232" +"classname" "path_corner" +} +{ +"target" "t106" +"targetname" "t105" +"classname" "path_corner" +"origin" "920 1816 -232" +} +{ +"target" "t105" +"origin" "624 1800 -216" +"classname" "monster_hell_knight" +"spawnflags" "1" +} +{ +"angle" "0" +"origin" "480 1824 64" +"classname" "monster_wizard" +"spawnflags" "257" +} +{ +"targetname" "t107" +"classname" "monster_wizard" +"origin" "656 1816 64" +"angle" "0" +"spawnflags" "1" +} +{ +"targetname" "t107" +"angle" "0" +"origin" "840 1816 64" +"classname" "monster_wizard" +"spawnflags" "257" +} +{ +"target" "t107" +"classname" "trigger_once" +"model" "*63" +} +{ +"origin" "1440 2200 -192" +"classname" "item_shells" +} +{ +"classname" "item_shells" +"origin" "1440 2160 -192" +} +{ +"spawnflags" "1" +"origin" "1184 1976 -192" +"classname" "item_spikes" +} +{ +"target" "t109" +"targetname" "t108" +"origin" "1240 2000 -184" +"classname" "path_corner" +} +{ +"target" "t108" +"targetname" "t109" +"classname" "path_corner" +"origin" "1240 1760 -184" +} +{ +"target" "t108" +"angle" "90" +"origin" "1240 1904 -168" +"classname" "monster_ogre" +"spawnflags" "1" +} +{ +"target" "t110" +"classname" "trigger_once" +"spawnflags" "256" +"model" "*64" +} +{ +"targetname" "t110" +"angle" "45" +"origin" "1216 2088 -168" +"classname" "monster_ogre" +"spawnflags" "1281" +} +{ +"classname" "item_health" +"origin" "1496 1768 -200" +} +{ +"target" "t111" +"classname" "trigger_once" +"model" "*65" +} +{ +"targetname" "t111" +"angle" "315" +"origin" "764 -60 -208" +"classname" "monster_zombie" +} +{ +"targetname" "t111" +"angle" "45" +"origin" "764 436 -208" +"classname" "monster_zombie" +} +{ +"targetname" "t111" +"angle" "225" +"origin" "284 -56 -208" +"classname" "monster_zombie" +"spawnflags" "256" +} +{ +"targetname" "t119" +"wait" "-1" +"speed" "40" +"angle" "90" +"classname" "func_door" +"model" "*66" +} +{ +"origin" "1280 592 -128" +"classname" "item_shells" +} +{ +"classname" "item_shells" +"origin" "576 416 32" +} +{ +"classname" "item_spikes" +"origin" "904 504 -128" +"spawnflags" "1" +} +{ +"origin" "904 464 -128" +"classname" "item_spikes" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "1024 912 -152" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "720 848 -184" +"spawnflags" "1" +} +{ +"classname" "path_corner" +"origin" "1224 1192 -176" +"targetname" "t112" +"target" "t113" +} +{ +"origin" "1216 896 -176" +"classname" "path_corner" +"targetname" "t113" +"target" "t112" +} +{ +"classname" "monster_ogre" +"origin" "1224 992 -160" +"angle" "90" +"target" "t112" +} +{ +"classname" "item_shells" +"origin" "968 1600 -184" +} +{ +"classname" "item_artifact_super_damage" +"origin" "1444 308 -104" +} +{ +"classname" "light" +"origin" "992 -128 72" +"light" "100" +} +{ +"classname" "item_shells" +"origin" "1672 1008 -240" +} +{ +"classname" "item_health" +"origin" "2264 1320 -224" +} +{ +"classname" "monster_wizard" +"origin" "2120 1664 -72" +"angle" "315" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "2016 392 -32" +} +{ +"classname" "monster_hell_knight" +"origin" "360 1744 -208" +"angle" "90" +"targetname" "t114" +"spawnflags" "257" +} +{ +"classname" "trigger_once" +"target" "t114" +"spawnflags" "256" +"model" "*67" +} +{ +"classname" "item_health" +"origin" "352 1464 -232" +} +{ +"spawnflags" "1" +"origin" "352 1392 -232" +"classname" "item_health" +} +{ +"classname" "item_armorInv" +"origin" "744 1424 -448" +} +{ +"classname" "item_health" +"origin" "-56 320 -232" +} +{ +"origin" "-16 320 -232" +"classname" "item_health" +} +{ +"targetname" "t117" +"classname" "trigger_teleport" +"target" "t115" +"spawnflags" "2" +"model" "*68" +} +{ +"delay" ".5" +"targetname" "t117" +"classname" "trigger_teleport" +"target" "t116" +"spawnflags" "2" +"model" "*69" +} +{ +"classname" "monster_wizard" +"origin" "2928 1816 -152" +"angle" "180" +"targetname" "t117" +} +{ +"angle" "180" +"origin" "2928 1768 -152" +"classname" "monster_wizard" +"targetname" "t117" +} +{ +"classname" "info_teleport_destination" +"origin" "1824 1920 -184" +"angle" "225" +"targetname" "t115" +} +{ +"classname" "info_teleport_destination" +"origin" "1880 1544 -184" +"angle" "180" +"targetname" "t116" +} +{ +"classname" "trigger_once" +"target" "t117" +"model" "*70" +} +{ +"classname" "monster_zombie" +"origin" "764 388 -208" +"angle" "0" +"targetname" "t111" +} +{ +"angle" "0" +"origin" "764 -12 -208" +"classname" "monster_zombie" +"targetname" "t111" +} +{ +"classname" "monster_zombie" +"origin" "408 -56 -208" +"angle" "270" +"targetname" "t111" +} +{ +"classname" "light" +"origin" "1200 672 -240" +"light" "125" +} +{ +"classname" "item_spikes" +"origin" "72 392 -64" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "2368 920 -224" +} +{ +"origin" "2032 976 -224" +"classname" "item_spikes" +} +{ +"classname" "light" +"origin" "1416 2096 -112" +"light" "150" +} +{ +"light" "150" +"origin" "1240 2096 -112" +"classname" "light" +} +{ +"classname" "item_spikes" +"origin" "464 1824 -240" +} +{ +"origin" "504 1824 -240" +"classname" "item_spikes" +} +{ +"classname" "item_shells" +"origin" "-96 1472 -232" +"spawnflags" "1" +} +{ +"classname" "item_health" +"origin" "528 -172 -232" +} +{ +"classname" "item_health" +"origin" "40 -64 -64" +} +{ +"light" "225" +"classname" "light_torch_small_walltorch" +"origin" "122 -86 -8" +} +{ +"origin" "134 462 -8" +"classname" "light_torch_small_walltorch" +"light" "225" +} +{ +"light" "250" +"origin" "678 446 92" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light_torch_small_walltorch" +"origin" "678 -70 92" +"light" "250" +} +{ +"light" "150" +"origin" "120 -56 -16" +"classname" "light" +} +{ +"classname" "light" +"origin" "136 424 -16" +"light" "150" +} +{ +"light" "150" +"origin" "600 184 296" +"classname" "light" +} +{ +"classname" "light" +"origin" "152 184 296" +"light" "150" +} +{ +"light" "150" +"origin" "368 376 296" +"classname" "light" +} +{ +"classname" "light" +"origin" "368 0 296" +"light" "150" +} +{ +"light" "150" +"origin" "352 192 232" +"classname" "light" +} +{ +"light" "200" +"origin" "64 408 168" +"classname" "light" +} +{ +"classname" "light" +"origin" "56 -48 168" +"light" "200" +} +{ +"light" "125" +"origin" "1520 1880 24" +"classname" "light" +} +{ +"origin" "272 272 -232" +"classname" "item_rockets" +} +{ +"targetname" "t45" +"classname" "func_door" +"angle" "-2" +"sounds" "1" +"wait" "-1" +"model" "*71" +} +{ +"classname" "light" +"origin" "416 -152 -152" +"light" "125" +} +{ +"targetname" "t45" +"angle" "90" +"origin" "416 -120 -208" +"classname" "monster_zombie" +"spawnflags" "256" +} +{ +"origin" "400 524 -232" +"classname" "item_health" +} +{ +"light" "125" +"origin" "416 536 -152" +"classname" "light" +} +{ +"targetname" "t45" +"wait" "-1" +"sounds" "1" +"angle" "-2" +"classname" "func_door" +"model" "*72" +} +{ +"targetname" "t45" +"angle" "270" +"origin" "416 496 -208" +"classname" "monster_zombie" +"spawnflags" "256" +} +{ +"target" "t120" +"wait" "-1" +"angle" "270" +"classname" "func_button" +"model" "*73" +} +{ +"target" "t120" +"wait" "-1" +"angle" "90" +"classname" "func_button" +"model" "*74" +} +{ +"targetname" "t120" +"target" "t119" +"classname" "trigger_counter" +"model" "*75" +} +{ +"light" "125" +"origin" "1792 840 -112" +"classname" "light" +} +{ +"classname" "light" +"origin" "1584 840 -112" +"light" "125" +} +{ +"light" "125" +"origin" "1792 2280 -480" +"classname" "light" +} +{ +"classname" "light" +"origin" "1792 2144 -480" +"light" "125" +} +{ +"origin" "1776 2232 -508" +"classname" "item_health" +} +{ +"classname" "item_health" +"origin" "1776 2192 -508" +} +{ +"light" "150" +"origin" "1016 1696 -336" +"classname" "light" +} +{ +"light" "125" +"origin" "1080 1696 -280" +"classname" "light" +} +{ +"light" "125" +"origin" "1152 1696 -200" +"classname" "light" +} +{ +"light" "150" +"origin" "1096 1696 -352" +"classname" "light" +} +{ +"classname" "trigger_secret" +"model" "*76" +} +{ +"target" "t116" +"classname" "trigger_teleport" +"model" "*77" +} +{ +"spawnflags" "768" +"angle" "315" +"origin" "1400 1856 -176" +"classname" "monster_ogre" +} +{ +"target" "t121" +"targetname" "t122" +"spawnflags" "768" +"origin" "1824 2280 -344" +"classname" "path_corner" +} +{ +"target" "t122" +"targetname" "t121" +"spawnflags" "768" +"classname" "path_corner" +"origin" "2080 2280 -344" +} +{ +"target" "t121" +"spawnflags" "769" +"angle" "180" +"origin" "2128 2272 -328" +"classname" "monster_demon1" +} +{ +"spawnflags" "2816" +"origin" "1824 2072 -352" +"classname" "item_shells" +} +{ +"spawnflags" "769" +"angle" "90" +"origin" "1792 2176 -144" +"classname" "monster_wizard" +} +{ +"spawnflags" "769" +"angle" "180" +"origin" "2600 1640 -200" +"classname" "monster_hell_knight" +} +{ +"spawnflags" "2816" +"origin" "2096 1136 -32" +"classname" "item_shells" +} +{ +"classname" "monster_wizard" +"origin" "1872 1432 -72" +"angle" "90" +"spawnflags" "769" +} +{ +"classname" "monster_hell_knight" +"origin" "2400 1032 -8" +"angle" "180" +"spawnflags" "769" +} +{ +"classname" "monster_demon1" +"origin" "1000 496 -104" +"angle" "0" +"spawnflags" "768" +} +{ +"classname" "monster_demon1" +"origin" "1240 2088 -168" +"angle" "45" +"spawnflags" "769" +"targetname" "t110" +} +{ +"classname" "monster_hell_knight" +"origin" "360 1936 -208" +"angle" "270" +"spawnflags" "769" +"targetname" "t114" +} +{ +"classname" "item_shells" +"origin" "16 1768 -232" +"spawnflags" "2560" +} +{ +"spawnflags" "2560" +"origin" "344 1576 -232" +"classname" "item_shells" +} +{ +"classname" "trigger_changelevel" +"map" "e2m4" +"model" "*78" +} +{ +"classname" "light" +"origin" "1136 -1144 264" +"light" "250" +} +{ +"light" "250" +"origin" "1264 -552 44" +"classname" "light_flame_small_yellow" +} +{ +"classname" "light_flame_small_yellow" +"origin" "1008 -552 44" +"light" "250" +} +{ +"classname" "monster_demon1" +"origin" "888 -120 56" +"angle" "0" +"spawnflags" "769" +"targetname" "t66" +} +{ +"classname" "monster_hell_knight" +"origin" "616 184 56" +"angle" "0" +"spawnflags" "768" +} +{ +"classname" "item_spikes" +"origin" "880 216 32" +"spawnflags" "2816" +} +{ +"classname" "monster_hell_knight" +"origin" "1944 728 -8" +"angle" "0" +"spawnflags" "769" +} +{ +"classname" "light" +"origin" "-48 1184 -156" +"light" "200" +"style" "10" +} +{ +"style" "10" +"light" "200" +"origin" "0 1024 -120" +"classname" "light" +} +{ +"classname" "light" +"origin" "48 800 -120" +"light" "200" +"style" "10" +} +{ +"style" "10" +"light" "200" +"origin" "0 600 -120" +"classname" "light" +} +{ +"classname" "monster_hell_knight" +"origin" "128 1088 -208" +"angle" "225" +"spawnflags" "1" +} +{ +"angle" "315" +"origin" "-104 760 -208" +"classname" "monster_hell_knight" +"spawnflags" "1" +} +{ +"classname" "item_spikes" +"origin" "-56 592 -232" +} +{ +"classname" "item_health" +"origin" "-56 920 -232" +} +{ +"classname" "monster_demon1" +"origin" "0 544 -208" +"angle" "90" +"target" "t123" +"spawnflags" "769" +} +{ +"mangle" "20 315 0" +"origin" "1568 2040 -88" +"classname" "info_intermission" +} +{ +"classname" "item_shells" +"origin" "1528 1968 -352" +"spawnflags" "3584" +} +{ +"origin" "-88 1376 -232" +"classname" "item_health" +"spawnflags" "3585" +} +{ +"classname" "item_artifact_envirosuit" +"origin" "1216 1696 -168" +"spawnflags" "3584" +} +{ +"classname" "monster_demon1" +"origin" "144 372 -208" +"angle" "180" +"spawnflags" "768" +"targetname" "t123" +} +{ +"classname" "monster_demon1" +"origin" "0 528 -208" +"angle" "90" +"spawnflags" "1025" +} +{ +"classname" "info_player_deathmatch" +"origin" "1128 -840 -80" +"angle" "90" +} +{ +"classname" "info_player_deathmatch" +"origin" "656 184 -208" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "-24 1440 -208" +"angle" "0" +} +{ +"classname" "info_player_deathmatch" +"origin" "1240 1816 -168" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "1032 1568 -168" +"angle" "0" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*79" +} +{ +"classname" "weapon_rocketlauncher" +"origin" "184 1440 -232" +"spawnflags" "1792" +} +{ +"classname" "info_player_deathmatch" +"origin" "1424 608 -104" +"angle" "270" +} +{ +"classname" "info_player_deathmatch" +"origin" "2272 680 -8" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "2240 1472 -200" +"angle" "270" +} +{ +"classname" "weapon_supernailgun" +"origin" "2236 1184 -32" +"spawnflags" "1792" +} +{ +"classname" "info_player_deathmatch" +"origin" "2424 1824 -200" +"angle" "180" +} +{ +"classname" "info_player_deathmatch" +"origin" "1792 2072 -328" +"angle" "270" +} +{ +"classname" "weapon_supershotgun" +"origin" "1488 1584 -200" +"spawnflags" "1792" +} +{ +"classname" "weapon_grenadelauncher" +"origin" "88 184 -64" +"spawnflags" "1792" +} +{ +"classname" "info_player_deathmatch" +"origin" "1224 840 -168" +"angle" "90" +} +{ +"classname" "weapon_nailgun" +"origin" "1024 872 -152" +"spawnflags" "1792" +} +{ +"classname" "weapon_supershotgun" +"origin" "136 1760 -232" +"spawnflags" "1792" +} +{ +"classname" "weapon_nailgun" +"origin" "1976 2288 -352" +"spawnflags" "1792" +} +{ +"classname" "weapon_lightning" +"origin" "2128 1792 -352" +"spawnflags" "1792" +} +{ +"classname" "item_cells" +"origin" "1608 728 -128" +"spawnflags" "1792" +} +{ +"spawnflags" "1792" +"classname" "item_cells" +"origin" "72 1032 -232" +} +{ +"classname" "item_cells" +"origin" "1008 1328 -192" +"spawnflags" "1792" +} +{ +"classname" "item_cells" +"origin" "1304 -1160 -96" +"spawnflags" "1792" +} +{ +"origin" "2272 1440 -224" +"classname" "item_shells" +"spawnflags" "2816" +} +{ +"origin" "224 1736 -232" +"classname" "item_health" +} +{ +"classname" "info_intermission" +"origin" "1328 -1168 192" +"mangle" "20 120 0" +} +{ +"classname" "info_intermission" +"origin" "1248 680 8" +"mangle" "20 130 0" +} +{ +"classname" "info_intermission" +"origin" "1280 1824 -104" +"mangle" "10 180 0" +} +{ +"classname" "light" +"origin" "-304 888 -80" +"light" "150" +} +{ +"light" "150" +"origin" "-304 712 -80" +"classname" "light" +} +{ +"classname" "light" +"origin" "-224 872 -8" +"light" "125" +} +{ +"classname" "light" +"origin" "-224 728 -8" +"light" "125" +} +{ +"light" "150" +"origin" "-178 706 -156" +"classname" "light_torch_small_walltorch" +} +{ +"classname" "light" +"origin" "-320 838 -138" +"light" "100" +} +{ +"light" "100" +"origin" "-320 774 -138" +"classname" "light" +} +{ +"classname" "info_player_coop" +"origin" "1192 -1088 -72" +"angle" "90" +} +{ +"angle" "90" +"origin" "1080 -1088 -72" +"classname" "info_player_coop" +} +{ +"classname" "info_player_coop" +"origin" "1008 -1112 -72" +"angle" "90" +} +{ +"angle" "90" +"origin" "1264 -1112 -72" +"classname" "info_player_coop" +} +{ +"classname" "item_armor1" +"origin" "784 1816 -232" +} +{ +"classname" "item_spikes" +"origin" "-56 1472 -232" +"spawnflags" "1" +} +{ +"classname" "item_rockets" +"origin" "400 -172 -232" +} +{ +"classname" "func_wall" +"spawnflags" "1792" +"model" "*80" +} +{ +"spawnflags" "1792" +"classname" "func_wall" +"model" "*81" +} +{ +"classname" "path_corner" +"origin" "1954 1770 -96" +"targetname" "t124" +"target" "t125" +} +{ +"classname" "path_corner" +"origin" "1954 1770 -320" +"targetname" "t125" +"target" "t124" +} +{ +"classname" "weapon_grenadelauncher" +"origin" "1688 720 -128" +"spawnflags" "2048" +} +{ +"wait" "-1" +"angle" "-2" +"classname" "func_door" +"targetname" "t126" +"lip" "-8" +"model" "*82" +} +{ +"classname" "func_door_secret" +"angle" "90" +"spawnflags" "2" +"model" "*83" +} +{ +"classname" "light" +"origin" "-224 832 -152" +"light" "125" +} +{ +"classname" "trigger_counter" +"target" "t126" +"targetname" "t127" +"spawnflags" "1" +"count" "7" +"model" "*84" +} +{ +"classname" "trigger_once" +"health" "1" +"target" "t127" +"model" "*85" +} +{ +"health" "1" +"classname" "trigger_once" +"target" "t127" +"model" "*86" +} +{ +"classname" "trigger_once" +"health" "1" +"target" "t127" +"model" "*87" +} +{ +"health" "1" +"classname" "trigger_once" +"target" "t127" +"model" "*88" +} +{ +"classname" "trigger_once" +"health" "1" +"target" "t127" +"model" "*89" +} +{ +"health" "1" +"classname" "trigger_once" +"target" "t127" +"model" "*90" +} +{ +"classname" "trigger_once" +"health" "1" +"target" "t127" +"model" "*91" +} +{ +"classname" "ambient_swamp1" +"origin" "1338 -854 -104" +} +{ +"classname" "ambient_swamp2" +"origin" "938 -854 -104" +} +{ +"classname" "ambient_drip" +"origin" "1138 -854 -176" +} +{ +"classname" "ambient_drip" +"origin" "1650 -862 -192" +} +{ +"classname" "ambient_drip" +"origin" "1674 -438 -192" +} +{ +"classname" "ambient_drip" +"origin" "1682 2 -48" +} +{ +"classname" "ambient_swamp1" +"origin" "1674 1986 -280" +} +{ +"classname" "ambient_swamp2" +"origin" "1826 2378 -280" +} +{ +"classname" "ambient_swamp1" +"origin" "2258 2058 -280" +} +{ +"classname" "ambient_drip" +"origin" "746 1370 -376" +} +{ +"classname" "ambient_drip" +"origin" "762 906 -240" +} +{ +"origin" "1034 722 -240" +"classname" "ambient_drip" +} +{ +"classname" "ambient_drip" +"origin" "554 1818 -352" +} +{ +"origin" "1002 1810 -352" +"classname" "ambient_drip" +} +{ +"speed" "35" +"classname" "func_door" +"wait" "-1" +"angle" "-2" +"sounds" "1" +"targetname" "t101" +"model" "*92" +} +{ +"classname" "light" +"origin" "1440 296 -80" +"light" "125" +} +{ +"origin" "1792 792 -240" +"classname" "item_spikes" +} diff --git a/Misc/qs_pak/mkpak.sh b/Misc/qs_pak/mkpak.sh new file mode 100755 index 0000000..dbfd9eb --- /dev/null +++ b/Misc/qs_pak/mkpak.sh @@ -0,0 +1,131 @@ +#!/bin/sh +# +# Copyright (c) 2014, Sander van Dijk <a.h.vandijk@gmail.com> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +error() { + echo "$(basename "$0"): $*" >&2 + exit 1 +} + +assert_valid_stdout() { + if test -t 1 + then + error "Usage: $(basename "$0") [file ...] > output.pak" + fi +} + +assert_valid_file() { + if test ! -e "$1" + then + error "$1: No such file" + fi + if test ! -f "$1" + then + error "$f: Not a regular file" + fi + if test ! -r "$1" + then + error "$1: Permission denied" + fi + if test $(printf '%s' "$1" | wc -c) -gt 55 + then + error "$1: Name too long" + fi +} + +assert_valid_int32() { + if test $1 -lt -2147483648 -o $1 -gt 2147483647 + then + error "Too much data" + fi +} + +octal() { + printf '%o' $1 +} + +byte() { + printf '%b' "\\0$(octal $1)" +} + +little_endian_uint32() { + byte $(expr $1 % 256) + byte $(expr $1 / 256 % 256) + byte $(expr $1 / 65536 % 256) + byte $(expr $1 / 16777216 % 256) +} + +little_endian_int32() { + if test $1 -lt 0 + then + little_endian_uint32 $(expr $1 + 4294967296) + else + little_endian_uint32 $1 + fi +} + +zero_padding() { + if test $1 -lt 1 + then + return + fi + byte 0 + zero_padding $(expr $1 - 1) +} + +header() { + printf '%s' PACK + little_endian_int32 $1 + little_endian_int32 $2 +} + +directory_entry() { + printf '%s' "$1" + zero_padding $(expr 56 - $(printf '%s' "$1" | wc -c)) + little_endian_int32 $2 + little_endian_int32 $3 +} + +assert_valid_stdout + +directory_offset=12 +directory_size=0 +for file in "$@" +do + assert_valid_file "$file" + file_offset=$directory_offset + assert_valid_int32 $file_offset + file_size=$(wc -c < "$file") + assert_valid_int32 $file_size + directory_offset=$(expr $directory_offset + $file_size) + assert_valid_int32 $directory_offset + directory_size=$(expr $directory_size + 64) + assert_valid_int32 $directory_size +done + +header $directory_offset $directory_size + +for file in "$@" +do + cat "$file" +done + +file_offset=12 +for file in "$@" +do + file_size=$(wc -c < "$file") + directory_entry "$file" $file_offset $file_size + file_offset=$(expr $file_offset + $file_size) +done diff --git a/Misc/systest.c b/Misc/systest.c new file mode 100644 index 0000000..2b512cb --- /dev/null +++ b/Misc/systest.c @@ -0,0 +1,256 @@ +/* + * stupid test tool that reports the type sizes and + * their alignment offsets in structures, and the byte + * order as detected at runtime and compile time. + */ + +/* + * endianness stuff: <sys/types.h> is supposed + * to succeed in locating the correct endian.h + * this BSD style may not work everywhere. + */ + +#undef ENDIAN_GUESSED_SAFE +#undef ENDIAN_ASSUMED_UNSAFE + +#include <sys/types.h> + +#include <stddef.h> +#include <limits.h> +#include <stdio.h> + +/* include more if it didn't work: */ +#if !defined(BYTE_ORDER) + +# if defined(__linux__) || defined(__linux) +# include <endian.h> +# elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) +# include <machine/endian.h> +# elif defined(__sun) || defined(__svr4__) +# include <sys/byteorder.h> +# elif defined(_AIX) +# include <sys/machine.h> +# elif defined(sgi) +# include <sys/endian.h> +# elif defined(__DJGPP__) +# include <machine/endian.h> +# endif + +#endif /* endian includes */ + + +#if defined(__BYTE_ORDER) && !defined(BYTE_ORDER) +#define BYTE_ORDER __BYTE_ORDER +#endif /* __BYTE_ORDER */ + +#if !defined(PDP_ENDIAN) +#if defined(__PDP_ENDIAN) +#define PDP_ENDIAN __PDP_ENDIAN +#else +#define PDP_ENDIAN 3412 +#endif +#endif /* NUXI endian (not supported) */ + +#if defined(__LITTLE_ENDIAN) && !defined(LITTLE_ENDIAN) +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#endif /* __LITTLE_ENDIAN */ + +#if defined(__BIG_ENDIAN) && !defined(BIG_ENDIAN) +#define BIG_ENDIAN __BIG_ENDIAN +#endif /* __LITTLE_ENDIAN */ + + +#if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN) + +# if (BYTE_ORDER != LITTLE_ENDIAN) && (BYTE_ORDER != BIG_ENDIAN) +# error "Unsupported endianness." +# endif + +#else /* one of the definitions is mising. */ + +# undef BYTE_ORDER +# undef LITTLE_ENDIAN +# undef BIG_ENDIAN +# undef PDP_ENDIAN +# define LITTLE_ENDIAN 1234 +# define BIG_ENDIAN 4321 +# define PDP_ENDIAN 3412 + +#endif /* byte order defs */ + + +#if !defined(BYTE_ORDER) +/* supposedly safe assumptions: these may actually + * be OS dependant and listing all possible compiler + * macros here is impossible (the ones here are gcc + * flags, mostly.) so, proceed carefully.. + */ + +# if defined(__DJGPP__) || defined(MSDOS) || defined(__MSDOS__) +# define BYTE_ORDER LITTLE_ENDIAN /* DOS */ + +# elif defined(__sun) || defined(__svr4__) /* solaris */ +# if defined(_LITTLE_ENDIAN) /* x86 */ +# define BYTE_ORDER LITTLE_ENDIAN +# elif defined(_BIG_ENDIAN) /* sparc */ +# define BYTE_ORDER BIG_ENDIAN +# endif + +# elif defined(__i386) || defined(__i386__) || defined(__386__) || defined(_M_IX86) +# define BYTE_ORDER LITTLE_ENDIAN /* any x86 */ + +# elif defined(__amd64) || defined(__x86_64__) || defined(_M_X64) +# define BYTE_ORDER LITTLE_ENDIAN /* any x64 */ + +# elif defined(_M_IA64) +# define BYTE_ORDER LITTLE_ENDIAN /* ia64 / Visual C */ + +# elif defined (__ppc__) || defined(__POWERPC__) || defined(_M_PPC) +# define BYTE_ORDER BIG_ENDIAN /* PPC: big endian */ + +# elif (defined(__alpha__) || defined(__alpha)) || defined(_M_ALPHA) +# define BYTE_ORDER LITTLE_ENDIAN /* should be safe */ + +# elif defined(_WIN32) || defined(_WIN64) /* windows : */ +# define BYTE_ORDER LITTLE_ENDIAN /* should be safe */ + +# elif defined(__hppa) || defined(__hppa__) || defined(__sparc) || defined(__sparc__) /* others: check! */ +# define BYTE_ORDER BIG_ENDIAN + +# endif + +# if defined(BYTE_ORDER) + /* raise a flag, just in case: */ +# define ENDIAN_GUESSED_SAFE BYTE_ORDER +# endif + +#endif /* supposedly safe assumptions */ + + +#if !defined(BYTE_ORDER) + +/* brain-dead fallback: default to little endian. + * change if necessary!!!! + */ +# define BYTE_ORDER LITTLE_ENDIAN +# define ENDIAN_ASSUMED_UNSAFE BYTE_ORDER + +#endif /* fallback. */ + +#if defined(ENDIAN_ASSUMED_UNSAFE) +/* +# if (ENDIAN_ASSUMED_UNSAFE == LITTLE_ENDIAN) +# warning "Cannot determine endianess. Using LIL endian as an UNSAFE default" +# elif (ENDIAN_ASSUMED_UNSAFE == PDP_ENDIAN) +# warning "Cannot determine endianess. Using PDP (NUXI) as an UNSAFE default." +# elif (ENDIAN_ASSUMED_UNSAFE == BIG_ENDIAN) +# warning "Cannot determine endianess. Using BIG endian as an UNSAFE default." +# endif +*/ +#endif /* ENDIAN_ASSUMED_UNSAFE */ + +#define COMPILED_BYTEORDER BYTE_ORDER + +#include <stdio.h> +#include <stdlib.h> + +int DetectByteorder (void) +{ + int i = 0x12345678; + /* U N I X */ + + /* + BE_ORDER: 12 34 56 78 + U N I X + + LE_ORDER: 78 56 34 12 + X I N U + + PDP_ORDER: 34 12 78 56 + N U X I + */ + + if ( *(char *)&i == 0x12 ) + return BIG_ENDIAN; + else if ( *(char *)&i == 0x78 ) + return LITTLE_ENDIAN; + else if ( *(char *)&i == 0x34 ) + return PDP_ENDIAN; + + return -1; +} + +struct align_test_char { char dummy; char test; }; +struct align_test_short { char dummy; short test; }; +struct align_test_int { char dummy; int test; }; +struct align_test_long { char dummy; long test; }; +struct align_test_longlong { char dummy; long long test; }; +struct align_test_float { char dummy; float test; }; +struct align_test_double { char dummy; double test; }; +struct align_test_longdouble { char dummy; long double test;}; +struct align_test_voidptr { char dummy; void *test; }; + +int main (void) +{ + int tmp = ((char) -1); + + printf ("char is signed type : %s - char is %s\n", (tmp < 0) ? "yes" : "no", (tmp < 0) ? "SIGNED" : "UNSIGNED"); + printf ("Type sizes and alignment within structures:\n"); + printf ("char : %d, packing offset: %d\n", (int) sizeof(char), (int) ((size_t) &((struct align_test_char *)0)->test)); + printf ("short : %d, packing offset: %d\n", (int) sizeof(short), (int) ((size_t) &((struct align_test_short *)0)->test)); + printf ("int : %d, packing offset: %d\n", (int) sizeof(int), (int) ((size_t) &((struct align_test_int *)0)->test)); + printf ("long : %d, packing offset: %d\n", (int) sizeof(long), (int) ((size_t) &((struct align_test_long *)0)->test)); + printf ("long long : %d, packing offset: %d\n", (int) sizeof(long long),(int) ((size_t) &((struct align_test_longlong *)0)->test)); + printf ("void *ptr : %d, packing offset: %d\n", (int) sizeof(void *), (int) ((size_t) &((struct align_test_voidptr *)0)->test)); + printf ("float : %d, packing offset: %d\n", (int) sizeof(float), (int) ((size_t) &((struct align_test_float *)0)->test)); + printf ("double : %d, packing offset: %d\n", (int) sizeof(double), (int) ((size_t) &((struct align_test_double *)0)->test)); + printf ("long double: %d, packing offset: %d\n", (int) sizeof(long double),(int)((size_t)&((struct align_test_longdouble *)0)->test)); + + printf ("ENDIANNESS (BYTE ORDER):\n"); + + tmp = DetectByteorder(); + printf ("Runtime detection : "); + switch (tmp) + { + case BIG_ENDIAN: + printf ("Big Endian"); + break; + case LITTLE_ENDIAN: + printf ("Little Endian"); + break; + case PDP_ENDIAN: + printf ("PDP (NUXI) Endian"); + break; + default: + printf ("Unknown Endian"); + break; + } + printf ("\n"); + + tmp = COMPILED_BYTEORDER; + printf ("Compile time detection: "); + switch (tmp) + { + case BIG_ENDIAN: + printf ("Big Endian"); + break; + case LITTLE_ENDIAN: + printf ("Little Endian"); + break; + case PDP_ENDIAN: + printf ("PDP (NUXI) Endian"); + break; + default: + printf ("Unknown Endian"); + break; + } +#if defined(ENDIAN_GUESSED_SAFE) + printf (" (Safe guess)"); +#elif defined(ENDIAN_ASSUMED_UNSAFE) + printf (" (Unsafe assumption)"); +#endif + printf ("\n"); + + return 0; +} + diff --git a/Quake/Makefile b/Quake/Makefile new file mode 100644 index 0000000..c7acf17 --- /dev/null +++ b/Quake/Makefile @@ -0,0 +1,299 @@ +# GNU Makefile for QuakeSpasm unix targets. +# You need the SDL library fully installed. +# "make DEBUG=1" to build a debug client. +# "make SDL_CONFIG=/path/to/sdl-config" for unusual SDL installations. +# "make DO_USERDIRS=1" to enable user directories support + +# Enable/Disable user directories support +DO_USERDIRS=0 + +### Enable/Disable SDL2 +USE_SDL2=0 + +### Enable/Disable codecs for streaming music support +USE_CODEC_WAVE=1 +USE_CODEC_FLAC=0 +USE_CODEC_MP3=1 +USE_CODEC_VORBIS=1 +USE_CODEC_OPUS=0 +# either of xmp (preferred), mikmod or modplug +USE_CODEC_MIKMOD=0 +USE_CODEC_XMP=0 +USE_CODEC_MODPLUG=0 +USE_CODEC_UMX=0 + +# which library to use for mp3 decoding: mad or mpg123 +MP3LIB=mad +# which library to use for ogg/vorbis decoding: vorbis or tremor +VORBISLIB=vorbis + +# --------------------------- +# Helper functions +# --------------------------- + +check_gcc = $(shell if echo | $(CC) $(1) -Werror -S -o /dev/null -xc - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;) + +# --------------------------- + +HOST_OS = $(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]') + +DEBUG ?= 0 + +# --------------------------- +# build variables +# --------------------------- + +CC ?= gcc +LINKER = $(CC) + +STRIP ?= strip +PKG_CONFIG ?= pkg-config + +CPUFLAGS= +LDFLAGS?= +DFLAGS ?= +CFLAGS ?= -Wall -Wno-trigraphs -MMD +#CFLAGS += $(call check_gcc,-std=gnu11,) +CFLAGS += $(CPUFLAGS) +ifneq ($(DEBUG),0) +DFLAGS += -DDEBUG +CFLAGS += -g +do_strip= +else +DFLAGS += -DNDEBUG +CFLAGS += -O2 +#CFLAGS += -fno-asynchronous-unwind-tables +CFLAGS += $(call check_gcc,-fweb,) +CFLAGS += $(call check_gcc,-frename-registers,) +cmd_strip=$(STRIP) $(1) +define do_strip + $(call cmd_strip,$(1)); +endef +endif + +ifeq ($(DO_USERDIRS),1) +CFLAGS += -DDO_USERDIRS=1 +endif + +ifeq ($(USE_SDL2),1) +CFLAGS += -DUSE_SDL2 +endif + +ifeq ($(USE_SDL2),1) +SDL_CONFIG ?= sdl2-config +else +SDL_CONFIG ?= sdl-config +endif +SDL_CFLAGS = $(shell $(SDL_CONFIG) --cflags) +SDL_LIBS = $(shell $(SDL_CONFIG) --libs) + +NET_LIBS = +ifeq ($(HOST_OS),sunos) +NET_LIBS =-lsocket -lnsl -lresolv +endif +ifeq ($(HOST_OS),haiku) +NET_LIBS =-lnetwork +endif + +ifneq ($(VORBISLIB),vorbis) +ifneq ($(VORBISLIB),tremor) +$(error Invalid VORBISLIB setting) +endif +endif +ifneq ($(MP3LIB),mpg123) +ifneq ($(MP3LIB),mad) +$(error Invalid MP3LIB setting) +endif +endif +ifeq ($(MP3LIB),mad) +mp3_obj=snd_mp3 +lib_mp3dec=-lmad +endif +ifeq ($(MP3LIB),mpg123) +mp3_obj=snd_mpg123 +lib_mp3dec=-lmpg123 +endif +ifeq ($(VORBISLIB),vorbis) +cpp_vorbisdec= +lib_vorbisdec=-lvorbisfile -lvorbis -logg +endif +ifeq ($(VORBISLIB),tremor) +cpp_vorbisdec=-DVORBIS_USE_TREMOR +lib_vorbisdec=-lvorbisidec -logg +endif + +CODECLIBS = +ifeq ($(USE_CODEC_WAVE),1) +CFLAGS+= -DUSE_CODEC_WAVE +endif +ifeq ($(USE_CODEC_FLAC),1) +CFLAGS+= -DUSE_CODEC_FLAC +CODECLIBS+= -lFLAC +endif +ifeq ($(USE_CODEC_OPUS),1) +# opus and opusfile put their *.h under <includedir>/opus, +# but they include the headers without the opus directory +# prefix and rely on pkg-config. ewww... +CFLAGS+= -DUSE_CODEC_OPUS +CFLAGS+= $(shell $(PKG_CONFIG) --cflags opusfile) +CODECLIBS+= $(shell $(PKG_CONFIG) --libs opusfile) +endif +ifeq ($(USE_CODEC_VORBIS),1) +CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec) +CODECLIBS+= $(lib_vorbisdec) +endif +ifeq ($(USE_CODEC_MP3),1) +CFLAGS+= -DUSE_CODEC_MP3 +CODECLIBS+= $(lib_mp3dec) +endif +ifeq ($(USE_CODEC_MIKMOD),1) +CFLAGS+= -DUSE_CODEC_MIKMOD +CODECLIBS+= -lmikmod +endif +ifeq ($(USE_CODEC_XMP),1) +CFLAGS+= -DUSE_CODEC_XMP +CODECLIBS+= -lxmp +endif +ifeq ($(USE_CODEC_MODPLUG),1) +CFLAGS+= -DUSE_CODEC_MODPLUG +CODECLIBS+= -lmodplug +endif +ifeq ($(USE_CODEC_UMX),1) +CFLAGS+= -DUSE_CODEC_UMX +endif + +ifeq ($(HOST_OS),haiku) +COMMON_LIBS= -lGL +else +COMMON_LIBS= -lGL -lm +endif + +LIBS = $(COMMON_LIBS) $(NET_LIBS) $(CODECLIBS) + +# --------------------------- +# objects +# --------------------------- + +MUSIC_OBJS= bgmusic.o \ + snd_codec.o \ + snd_flac.o \ + snd_wave.o \ + snd_vorbis.o \ + snd_opus.o \ + $(mp3_obj).o \ + snd_mp3tag.o \ + snd_mikmod.o \ + snd_modplug.o \ + snd_xmp.o \ + snd_umx.o +COMOBJ_SND = snd_dma.o snd_mix.o snd_mem.o $(MUSIC_OBJS) +SYSOBJ_SND = snd_sdl.o +SYSOBJ_CDA = cd_sdl.o +SYSOBJ_INPUT = in_sdl.o +SYSOBJ_GL_VID= gl_vidsdl.o +SYSOBJ_NET = net_bsd.o net_udp.o +SYSOBJ_SYS = pl_linux.o sys_sdl_unix.o +SYSOBJ_MAIN= main_sdl.o + +GLOBJS = \ + gl_refrag.o \ + gl_rlight.o \ + gl_rmain.o \ + gl_fog.o \ + gl_rmisc.o \ + r_part.o \ + r_world.o \ + gl_screen.o \ + gl_sky.o \ + gl_warp.o \ + $(SYSOBJ_GL_VID) \ + gl_draw.o \ + image.o \ + gl_texmgr.o \ + gl_mesh.o \ + r_sprite.o \ + r_alias.o \ + r_brush.o \ + gl_model.o + +OBJS = strlcat.o \ + strlcpy.o \ + $(GLOBJS) \ + $(SYSOBJ_INPUT) \ + $(COMOBJ_SND) \ + $(SYSOBJ_SND) \ + $(SYSOBJ_CDA) \ + $(SYSOBJ_NET) \ + net_dgrm.o \ + net_loop.o \ + net_main.o \ + chase.o \ + cl_demo.o \ + cl_input.o \ + cl_main.o \ + cl_parse.o \ + cl_tent.o \ + console.o \ + keys.o \ + menu.o \ + sbar.o \ + view.o \ + wad.o \ + cmd.o \ + common.o \ + miniz.o \ + crc.o \ + cvar.o \ + cfgfile.o \ + host.o \ + host_cmd.o \ + mathlib.o \ + pr_cmds.o \ + pr_edict.o \ + pr_exec.o \ + sv_main.o \ + sv_move.o \ + sv_phys.o \ + sv_user.o \ + world.o \ + zone.o \ + sh_game.o \ + sh_marine.o \ + sh_input.o \ + $(SYSOBJ_SYS) $(SYSOBJ_MAIN) + +# --------------------------- +# targets / rules +# --------------------------- + +.PHONY: clean debug release + +DEFAULT_TARGET = quakespasm +all: $(DEFAULT_TARGET) + +%.o: %.c + $(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $< + +quakespasm: $(OBJS) + $(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@ + $(call do_strip,$@) + +release: quakespasm +debug: + $(error Use "make DEBUG=1") + +clean: + $(RM) *.o *.d $(DEFAULT_TARGET) + +ifeq ($(HOST_OS),haiku) +QS_APP_DIR=$(shell finddir B_APPS_DIRECTORY)/QuakeSpasm/ +install: quakespasm + mkdir -p $(QS_APP_DIR) + cp quakespasm $(QS_APP_DIR) + cp quakespasm.pak $(QS_APP_DIR) +else +install: quakespasm + cp quakespasm /usr/local/games/quake +endif + +sinclude $(OBJS:.o=.d) diff --git a/Quake/Makefile.darwin b/Quake/Makefile.darwin new file mode 100644 index 0000000..85016cf --- /dev/null +++ b/Quake/Makefile.darwin @@ -0,0 +1,336 @@ +# GNU Makefile for compiling Mac OS X version of QuakeSpasm. +# Usage: "make -f Makefile.darwin" +# To cross-compile on Linux hosts, see the build_cross_osx*.sh scripts. +# "make DEBUG=1" to build a debug client. +# "make SDL_FRAMEWORK_PATH=/path/to/Frameworks" to specify the directory +# containing SDL.framework and override the locally included versions. +# "make DO_USERDIRS=1" to enable user directories support + +# Enable/Disable user directories support +DO_USERDIRS=0 + +### Enable/Disable SDL2 +USE_SDL2=0 + +### Enable/Disable codecs for streaming music support +USE_CODEC_WAVE=1 +USE_CODEC_FLAC=1 +USE_CODEC_MP3=1 +USE_CODEC_VORBIS=1 +USE_CODEC_OPUS=1 +# either of xmp (preferred), mikmod or modplug +USE_CODEC_MIKMOD=0 +USE_CODEC_XMP=1 +USE_CODEC_MODPLUG=0 +USE_CODEC_UMX=1 + +# which library to use for mp3 decoding: mad or mpg123 +MP3LIB=mad +# which library to use for ogg/vorbis decoding: vorbis or tremor +VORBISLIB=vorbis + +# --------------------------- +# Helper functions +# --------------------------- + +check_gcc = $(shell if echo | $(CC) $(1) -Werror -S -o /dev/null -xc - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;) + +# --------------------------- + +MACH_TYPE= $(shell sh detect.sh arch) + +DEBUG ?= 0 + +# --------------------------- +# build variables +# --------------------------- + +CC ?= gcc +LINKER = $(CC) +LIPO ?= lipo + +STRIP ?= strip -S + +CPUFLAGS= +LDFLAGS?= +DFLAGS ?= +CFLAGS ?= -Wall -MMD +# @rpath can be used when targeting 10.5+ +USE_RPATH=0 +# require 10.5 for 64 bit builds +ifeq ($(MACH_TYPE),ppc64) +CFLAGS +=-mmacosx-version-min=10.5 +LDFLAGS +=-mmacosx-version-min=10.5 +USE_RPATH=1 +endif +ifeq ($(USE_SDL2),1) +# sdl2 needs targetting 10.5+ +# as of v2.0.5, sdl2 targets 10.6+ +ifeq ($(MACH_TYPE),x86) +CFLAGS +=-mmacosx-version-min=10.6 +LDFLAGS +=-mmacosx-version-min=10.6 +USE_RPATH=1 +endif +endif +ifeq ($(MACH_TYPE),x86_64) +# require 10.6 for amd64 builds, not 10.5 (SDL's requirement.) +# bundle1.o is needed for dyld_stub_binding_helper +CFLAGS +=-mmacosx-version-min=10.6 +LDFLAGS +=-mmacosx-version-min=10.6 -Wl,-lbundle1.o +USE_RPATH=1 +endif +ifeq ($(MACH_TYPE),arm64) +CFLAGS +=-mmacosx-version-min=11.0 +LDFLAGS +=-mmacosx-version-min=11.0 +USE_RPATH=1 +endif +#CFLAGS += $(call check_gcc,-std=gnu11,) +CFLAGS += $(CPUFLAGS) +ifeq ($(USE_RPATH),1) +LDFLAGS+=-Wl,-rpath,@executable_path/../Frameworks +endif +ifneq ($(DEBUG),0) +DFLAGS += -DDEBUG +CFLAGS += -g +do_strip= +else +DFLAGS += -DNDEBUG +CFLAGS += -O2 +#CFLAGS += -fno-asynchronous-unwind-tables +CFLAGS += $(call check_gcc,-fweb,) +CFLAGS += $(call check_gcc,-frename-registers,) +cmd_strip=$(STRIP) $(1) +define do_strip + $(call cmd_strip,$(1)); +endef +endif + +ifeq ($(DO_USERDIRS),1) +CFLAGS += -DDO_USERDIRS=1 +endif + +ifeq ($(USE_SDL2),1) +CFLAGS += -DUSE_SDL2 +endif +CFLAGS += -DGL_SILENCE_DEPRECATION=1 + +# not relying on sdl-config command and assuming +# /Library/Frameworks/SDL.framework is available +SDL_CFLAGS =-D_GNU_SOURCE=1 -D_THREAD_SAFE +SDL_CFLAGS+=-DSDL_FRAMEWORK -DNO_SDL_CONFIG +ifeq ($(USE_SDL2),1) +SDL_FRAMEWORK_NAME = SDL2 +else +SDL_FRAMEWORK_NAME = SDL +endif +# default to our local SDL[2].framework for build +SDL_FRAMEWORK_PATH ?=../MacOSX +ifneq ($(SDL_FRAMEWORK_PATH),) +SDL_LIBS +=-F$(SDL_FRAMEWORK_PATH) +SDL_CFLAGS+=-F$(SDL_FRAMEWORK_PATH) +endif +SDL_LIBS +=-Wl,-framework,$(SDL_FRAMEWORK_NAME) -Wl,-framework,Cocoa + +NET_LIBS = + +ifneq ($(VORBISLIB),vorbis) +ifneq ($(VORBISLIB),tremor) +$(error Invalid VORBISLIB setting) +endif +endif +ifneq ($(MP3LIB),mpg123) +ifneq ($(MP3LIB),mad) +$(error Invalid MP3LIB setting) +endif +endif +ifeq ($(MP3LIB),mad) +mp3_obj=snd_mp3 +lib_mp3dec=-lmad +endif +ifeq ($(MP3LIB),mpg123) +mp3_obj=snd_mpg123 +lib_mp3dec=-lmpg123 +endif +ifeq ($(VORBISLIB),vorbis) +cpp_vorbisdec= +lib_vorbisdec=-lvorbisfile -lvorbis -logg +endif +ifeq ($(VORBISLIB),tremor) +cpp_vorbisdec=-DVORBIS_USE_TREMOR +lib_vorbisdec=-lvorbisidec -logg +endif + +CODECLIBS = +ifeq ($(USE_CODEC_WAVE),1) +CFLAGS+= -DUSE_CODEC_WAVE +endif +ifeq ($(USE_CODEC_FLAC),1) +CFLAGS+= -DUSE_CODEC_FLAC +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= -lFLAC +endif +ifeq ($(USE_CODEC_OPUS),1) +CFLAGS+= -DUSE_CODEC_OPUS +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= -lopusfile -lopus -logg +endif +ifeq ($(USE_CODEC_VORBIS),1) +CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec) +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= $(lib_vorbisdec) +endif +ifeq ($(USE_CODEC_MP3),1) +CFLAGS+= -DUSE_CODEC_MP3 +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= $(lib_mp3dec) +endif +ifeq ($(USE_CODEC_MIKMOD),1) +CFLAGS+= -DUSE_CODEC_MIKMOD +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= -lmikmod +endif +ifeq ($(USE_CODEC_XMP),1) +CFLAGS+= -DUSE_CODEC_XMP +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= -lxmp +endif +ifeq ($(USE_CODEC_MODPLUG),1) +CFLAGS+= -DUSE_CODEC_MODPLUG +CODEC_INC = -I../MacOSX/codecs/include +CODEC_LINK= -L../MacOSX/codecs/lib +CODECLIBS+= -lmodplug +endif +ifeq ($(USE_CODEC_UMX),1) +CFLAGS+= -DUSE_CODEC_UMX +endif +CFLAGS+= $(CODEC_INC) + +COMMON_LIBS= -Wl,-framework,IOKit -Wl,-framework,OpenGL + +LIBS = $(COMMON_LIBS) $(NET_LIBS) $(CODEC_LINK) $(CODECLIBS) + +# --------------------------- +# objects +# --------------------------- + +MUSIC_OBJS= bgmusic.o \ + snd_codec.o \ + snd_flac.o \ + snd_wave.o \ + snd_vorbis.o \ + snd_opus.o \ + $(mp3_obj).o \ + snd_mp3tag.o \ + snd_mikmod.o \ + snd_modplug.o \ + snd_xmp.o \ + snd_umx.o +COMOBJ_SND = snd_dma.o snd_mix.o snd_mem.o $(MUSIC_OBJS) +SYSOBJ_SND = snd_sdl.o +SYSOBJ_CDA = cd_sdl.o +SYSOBJ_INPUT = in_sdl.o +SYSOBJ_GL_VID= gl_vidsdl.o +SYSOBJ_NET = net_bsd.o net_udp.o +SYSOBJ_LAUNCHER = AppController.o QuakeArgument.o QuakeArguments.o ScreenInfo.o SDLApplication.o +SYSOBJ_SYS = pl_osx.o sys_sdl_unix.o +SYSOBJ_MAIN= main_sdl.o SDLMain.o + +GLOBJS = \ + gl_refrag.o \ + gl_rlight.o \ + gl_rmain.o \ + gl_fog.o \ + gl_rmisc.o \ + r_part.o \ + r_world.o \ + gl_screen.o \ + gl_sky.o \ + gl_warp.o \ + $(SYSOBJ_GL_VID) \ + gl_draw.o \ + image.o \ + gl_texmgr.o \ + gl_mesh.o \ + r_sprite.o \ + r_alias.o \ + r_brush.o \ + gl_model.o + +OBJS = strlcat.o \ + strlcpy.o \ + $(GLOBJS) \ + $(SYSOBJ_INPUT) \ + $(COMOBJ_SND) \ + $(SYSOBJ_SND) \ + $(SYSOBJ_CDA) \ + $(SYSOBJ_NET) \ + net_dgrm.o \ + net_loop.o \ + net_main.o \ + chase.o \ + cl_demo.o \ + cl_input.o \ + cl_main.o \ + cl_parse.o \ + cl_tent.o \ + console.o \ + keys.o \ + menu.o \ + sbar.o \ + view.o \ + wad.o \ + cmd.o \ + common.o \ + miniz.o \ + crc.o \ + cvar.o \ + cfgfile.o \ + host.o \ + host_cmd.o \ + mathlib.o \ + pr_cmds.o \ + pr_edict.o \ + pr_exec.o \ + sv_main.o \ + sv_move.o \ + sv_phys.o \ + sv_user.o \ + world.o \ + zone.o \ + $(SYSOBJ_SYS) \ + $(SYSOBJ_LAUNCHER) $(SYSOBJ_MAIN) + +# --------------------------- +# targets / rules +# --------------------------- + +.PHONY: clean debug release + +DEFAULT_TARGET = quakespasm +all: $(DEFAULT_TARGET) + +%.o: %.c + $(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $< +%.o: %.m + $(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $< +%.o: ../MacOSX/%.m + $(CC) $(DFLAGS) -c -I../MacOSX $(CFLAGS) $(SDL_CFLAGS) -o $@ $< + +quakespasm: $(OBJS) + $(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@ + $(call do_strip,$@) + +release: quakespasm +debug: + $(error Use "make DEBUG=1") + +clean: + $(RM) *.o *.d $(DEFAULT_TARGET) + +sinclude $(OBJS:.o=.d) diff --git a/Quake/Makefile.emscripten b/Quake/Makefile.emscripten new file mode 100644 index 0000000..2fa275f --- /dev/null +++ b/Quake/Makefile.emscripten @@ -0,0 +1,261 @@ +# GNU Makefile for QuakeSpasm WASM (Emscripten) +# Contributed by Roman Turchin +# Edit this makefile, if necessary, to suit your environment. +# +# Build depends on external library gl4es: +# https://github.com/ptitSeb/gl4es + +### Enable/Disable codecs for streaming music support +USE_CODEC_WAVE=1 +USE_CODEC_FLAC=0 +USE_CODEC_MP3=0 +USE_CODEC_VORBIS=1 +USE_CODEC_OPUS=0 +# either of xmp (preferred), mikmod or modplug +USE_CODEC_MIKMOD=0 +USE_CODEC_XMP=0 +USE_CODEC_MODPLUG=0 +USE_CODEC_UMX=0 + +# which library to use for mp3 decoding: mad or mpg123 +MP3LIB=mad +# which library to use for ogg/vorbis decoding: vorbis or tremor +VORBISLIB=vorbis + +# --------------------------- +# Helper functions +# --------------------------- + +check_gcc = $(shell if echo | $(CC) $(1) -Werror -S -o /dev/null -xc - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;) + +# --------------------------- + +HOST_OS = $(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]') + +DEBUG ?= 0 + +# --------------------------- +# build variables +# --------------------------- + +CC ?= gcc +LINKER = $(CC) + +STRIP ?= strip +PKG_CONFIG ?= pkg-config + +CPUFLAGS= +LDFLAGS?= +DFLAGS ?= +CFLAGS ?= -Wall -Wno-trigraphs -MMD +#CFLAGS += $(call check_gcc,-std=gnu11,) +CFLAGS += $(CPUFLAGS) +ifneq ($(DEBUG),0) +DFLAGS += -DDEBUG +CFLAGS += -g +do_strip= +else +DFLAGS += -DNDEBUG +CFLAGS += -O2 +#CFLAGS += -fno-asynchronous-unwind-tables +CFLAGS += $(call check_gcc,-fweb,) +CFLAGS += $(call check_gcc,-frename-registers,) +cmd_strip=$(STRIP) $(1) +define do_strip + $(call cmd_strip,$(1)); +endef +endif +USE_FLAGS=-pthread --use-port=sdl2 --use-port=zlib --use-port=vorbis -O3 +CFLAGS+=$(USE_FLAGS) -I/src/deps/gl4es/include -DUSE_SDL2 -DSDL_FRAMEWORK +LDFLAGS+= $(USE_FLAGS) -sFULL_ES2 /src/deps/gl4es/lib/libGL.a \ + -sASYNCIFY -sASYNCIFY_STACK_SIZE=32768 -sSTACK_SIZE=512kb \ + -sALLOW_MEMORY_GROWTH -sINITIAL_MEMORY=256mb -sMEMORY_GROWTH_LINEAR_STEP=64mb \ + -sENVIRONMENT=web,worker -sPTHREAD_POOL_SIZE=4 -Wno-pthreads-mem-growth -sMODULARIZE \ + -lidbfs.js -sCASE_INSENSITIVE_FS=1 \ + -sEXPORT_ALL -sEXPORTED_RUNTIME_METHODS=callMain,addRunDependency,removeRunDependency \ + -sEXIT_RUNTIME + +ifneq ($(VORBISLIB),vorbis) +ifneq ($(VORBISLIB),tremor) +$(error Invalid VORBISLIB setting) +endif +endif +ifneq ($(MP3LIB),mpg123) +ifneq ($(MP3LIB),mad) +$(error Invalid MP3LIB setting) +endif +endif +ifeq ($(MP3LIB),mad) +mp3_obj=snd_mp3 +lib_mp3dec=-lmad +endif +ifeq ($(MP3LIB),mpg123) +mp3_obj=snd_mpg123 +lib_mp3dec=-lmpg123 +endif +ifeq ($(VORBISLIB),vorbis) +cpp_vorbisdec= +#lib_vorbisdec=-lvorbisfile -lvorbis -logg +endif +ifeq ($(VORBISLIB),tremor) +cpp_vorbisdec=-DVORBIS_USE_TREMOR +lib_vorbisdec=-lvorbisidec -logg +endif + +CODECLIBS = +ifeq ($(USE_CODEC_WAVE),1) +CFLAGS+= -DUSE_CODEC_WAVE +endif +ifeq ($(USE_CODEC_FLAC),1) +CFLAGS+= -DUSE_CODEC_FLAC +CODECLIBS+= -lFLAC +endif +ifeq ($(USE_CODEC_OPUS),1) +# opus and opusfile put their *.h under <includedir>/opus, +# but they include the headers without the opus directory +# prefix and rely on pkg-config. ewww... +CFLAGS+= -DUSE_CODEC_OPUS +CFLAGS+= $(shell $(PKG_CONFIG) --cflags opusfile) +CODECLIBS+= $(shell $(PKG_CONFIG) --libs opusfile) +endif +ifeq ($(USE_CODEC_VORBIS),1) +CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec) +CODECLIBS+= $(lib_vorbisdec) +endif +ifeq ($(USE_CODEC_MP3),1) +CFLAGS+= -DUSE_CODEC_MP3 +CODECLIBS+= $(lib_mp3dec) +endif +ifeq ($(USE_CODEC_MIKMOD),1) +CFLAGS+= -DUSE_CODEC_MIKMOD +CODECLIBS+= -lmikmod +endif +ifeq ($(USE_CODEC_XMP),1) +CFLAGS+= -DUSE_CODEC_XMP +CODECLIBS+= -lxmp +endif +ifeq ($(USE_CODEC_MODPLUG),1) +CFLAGS+= -DUSE_CODEC_MODPLUG +CODECLIBS+= -lmodplug +endif +ifeq ($(USE_CODEC_UMX),1) +CFLAGS+= -DUSE_CODEC_UMX +endif + +COMMON_LIBS= -lGL -lm + +LIBS = $(COMMON_LIBS) $(NET_LIBS) $(CODECLIBS) + +# --------------------------- +# objects +# --------------------------- + +MUSIC_OBJS= bgmusic.o \ + snd_codec.o \ + snd_flac.o \ + snd_wave.o \ + snd_vorbis.o \ + snd_opus.o \ + $(mp3_obj).o \ + snd_mp3tag.o \ + snd_mikmod.o \ + snd_modplug.o \ + snd_xmp.o \ + snd_umx.o +COMOBJ_SND = snd_dma.o snd_mix.o snd_mem.o $(MUSIC_OBJS) +SYSOBJ_SND = snd_sdl.o +SYSOBJ_CDA = cd_sdl.o +SYSOBJ_INPUT = in_sdl.o +SYSOBJ_GL_VID= gl_vidsdl.o +SYSOBJ_NET = net_bsd.o net_udp.o +SYSOBJ_SYS = pl_linux.o sys_sdl_unix.o +SYSOBJ_MAIN= main_sdl.o + +GLOBJS = \ + gl_refrag.o \ + gl_rlight.o \ + gl_rmain.o \ + gl_fog.o \ + gl_rmisc.o \ + r_part.o \ + r_world.o \ + gl_screen.o \ + gl_sky.o \ + gl_warp.o \ + $(SYSOBJ_GL_VID) \ + gl_draw.o \ + image.o \ + gl_texmgr.o \ + gl_mesh.o \ + r_sprite.o \ + r_alias.o \ + r_brush.o \ + gl_model.o + +OBJS = strlcat.o \ + strlcpy.o \ + $(GLOBJS) \ + $(SYSOBJ_INPUT) \ + $(COMOBJ_SND) \ + $(SYSOBJ_SND) \ + $(SYSOBJ_CDA) \ + $(SYSOBJ_NET) \ + net_dgrm.o \ + net_loop.o \ + net_main.o \ + chase.o \ + cl_demo.o \ + cl_input.o \ + cl_main.o \ + cl_parse.o \ + cl_tent.o \ + console.o \ + keys.o \ + menu.o \ + sbar.o \ + view.o \ + wad.o \ + cmd.o \ + common.o \ + miniz.o \ + crc.o \ + cvar.o \ + cfgfile.o \ + host.o \ + host_cmd.o \ + mathlib.o \ + pr_cmds.o \ + pr_edict.o \ + pr_exec.o \ + sv_main.o \ + sv_move.o \ + sv_phys.o \ + sv_user.o \ + world.o \ + zone.o \ + $(SYSOBJ_SYS) $(SYSOBJ_MAIN) + +# --------------------------- +# targets / rules +# --------------------------- + +.PHONY: clean debug release + +DEFAULT_TARGET = quakespasm +all: $(DEFAULT_TARGET) + +%.o: %.c + $(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $< + +quakespasm: $(OBJS) + $(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@.js + +release: quakespasm + +clean: + $(RM) *.o *.d $(DEFAULT_TARGET).js $(DEFAULT_TARGET).wasm + +install: quakespasm + echo "not impletemented" + +sinclude $(OBJS:.o=.d) diff --git a/Quake/Makefile.w32 b/Quake/Makefile.w32 new file mode 100644 index 0000000..8fbf948 --- /dev/null +++ b/Quake/Makefile.w32 @@ -0,0 +1,292 @@ +# GNU Makefile for compiling x86-Windows quakespasm.exe using MinGW / MinGW-w64. +# Usage: "make -f Makefile.w32" +# To cross-compile on Linux hosts, see the build_cross_win32*.sh scripts. +# "make DEBUG=1" to build a debug client. +# "make SDL_CONFIG=/path/to/sdl-config" to override the included SDL versions. +# "make WINSOCK2=1" to use WinSock2 api instead of old WinSock 1.1. + +### Enable/disable SDL2 +USE_SDL2=0 + +### Enable/disable codecs for streaming music support +USE_CODEC_WAVE=1 +USE_CODEC_FLAC=1 +USE_CODEC_MP3=1 +USE_CODEC_VORBIS=1 +USE_CODEC_OPUS=1 +# either of xmp (preferred), mikmod or modplug +USE_CODEC_MIKMOD=0 +USE_CODEC_XMP=1 +USE_CODEC_MODPLUG=0 +USE_CODEC_UMX=1 + +# which library to use for mp3 decoding: mad or mpg123 +MP3LIB=mad +# which library to use for ogg/vorbis decoding: vorbis or tremor +VORBISLIB=vorbis + +# --------------------------- +# Helper functions +# --------------------------- + +check_gcc = $(shell if echo | $(CC) $(1) -Werror -S -o /dev/null -xc - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;) + +# --------------------------- + +DEBUG ?= 0 +WINSOCK2 ?= 0 + +# --------------------------- +# build variables +# --------------------------- + +CC = gcc +LINKER = $(CC) +WINDRES = windres + +STRIP = strip + +CPUFLAGS= +LDFLAGS?= -m32 -mwindows -static-libgcc +DFLAGS ?= +CFLAGS ?= -m32 -Wall -Wno-trigraphs -MMD +#CFLAGS += $(call check_gcc,-std=gnu11,) +CFLAGS += $(CPUFLAGS) +ifneq ($(DEBUG),0) +DFLAGS += -DDEBUG +CFLAGS += -g +do_strip= +else +DFLAGS += -DNDEBUG +CFLAGS += -O2 +#CFLAGS += -fno-asynchronous-unwind-tables +CFLAGS += $(call check_gcc,-fweb,) +CFLAGS += $(call check_gcc,-frename-registers,) +cmd_strip=$(STRIP) $(1) +define do_strip + $(call cmd_strip,$(1)); +endef +endif + +ifeq ($(USE_SDL2),1) +CFLAGS += -DUSE_SDL2 +endif + +# default to our local SDL[2] for build +ifeq ($(USE_SDL2),1) +SDL_CONFIG ?=../Windows/SDL2/bin/sdl2-config --prefix=../Windows/SDL2 +else +SDL_CONFIG ?=../Windows/SDL/bin/sdl-config --prefix=../Windows/SDL +endif +SDL_CFLAGS = $(shell $(SDL_CONFIG) --cflags) +SDL_LIBS = $(shell $(SDL_CONFIG) --libs) + +ifeq ($(WINSOCK2),1) +DEFWINSOCK =-D_USE_WINSOCK2 +LIBWINSOCK = -lws2_32 +else +DEFWINSOCK = +LIBWINSOCK = -lwsock32 +endif + +CFLAGS += $(DEFWINSOCK) +NET_LIBS = $(LIBWINSOCK) + +ifneq ($(VORBISLIB),vorbis) +ifneq ($(VORBISLIB),tremor) +$(error Invalid VORBISLIB setting) +endif +endif +ifneq ($(MP3LIB),mpg123) +ifneq ($(MP3LIB),mad) +$(error Invalid MP3LIB setting) +endif +endif +ifeq ($(MP3LIB),mad) +mp3_obj=snd_mp3 +lib_mp3dec=-lmad +endif +ifeq ($(MP3LIB),mpg123) +mp3_obj=snd_mpg123 +lib_mp3dec=-lmpg123 +endif +ifeq ($(VORBISLIB),vorbis) +cpp_vorbisdec= +lib_vorbisdec=-lvorbisfile -lvorbis -logg +endif +ifeq ($(VORBISLIB),tremor) +cpp_vorbisdec=-DVORBIS_USE_TREMOR +lib_vorbisdec=-lvorbisidec -logg +endif + +CODECLIBS = +ifeq ($(USE_CODEC_WAVE),1) +CFLAGS+= -DUSE_CODEC_WAVE +endif +ifeq ($(USE_CODEC_FLAC),1) +CFLAGS+= -DUSE_CODEC_FLAC +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= -lFLAC +endif +ifeq ($(USE_CODEC_OPUS),1) +CFLAGS+= -DUSE_CODEC_OPUS +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= -lopusfile -lopus -logg +endif +ifeq ($(USE_CODEC_VORBIS),1) +CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec) +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= $(lib_vorbisdec) +endif +ifeq ($(USE_CODEC_MP3),1) +CFLAGS+= -DUSE_CODEC_MP3 +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= $(lib_mp3dec) +endif +ifeq ($(USE_CODEC_MIKMOD),1) +CFLAGS+= -DUSE_CODEC_MIKMOD +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= -lmikmod +endif +ifeq ($(USE_CODEC_XMP),1) +CFLAGS+= -DUSE_CODEC_XMP +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= -lxmp +endif +ifeq ($(USE_CODEC_MODPLUG),1) +CFLAGS+= -DUSE_CODEC_MODPLUG +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x86 +CODECLIBS+= -lmodplug +endif +ifeq ($(USE_CODEC_UMX),1) +CFLAGS+= -DUSE_CODEC_UMX +endif +CFLAGS+= $(CODEC_INC) + +COMMON_LIBS= -lopengl32 -lwinmm + +LIBS = $(COMMON_LIBS) $(NET_LIBS) $(CODEC_LINK) $(CODECLIBS) + +# --------------------------- +# objects +# --------------------------- + +MUSIC_OBJS= bgmusic.o \ + snd_codec.o \ + snd_flac.o \ + snd_wave.o \ + snd_vorbis.o \ + snd_opus.o \ + $(mp3_obj).o \ + snd_mp3tag.o \ + snd_mikmod.o \ + snd_modplug.o \ + snd_xmp.o \ + snd_umx.o +COMOBJ_SND = snd_dma.o snd_mix.o snd_mem.o $(MUSIC_OBJS) +SYSOBJ_SND = snd_sdl.o +SYSOBJ_CDA = cd_sdl.o +SYSOBJ_INPUT = in_sdl.o +SYSOBJ_GL_VID= gl_vidsdl.o +SYSOBJ_NET = net_win.o net_wins.o net_wipx.o +SYSOBJ_SYS = pl_win.o sys_sdl_win.o +SYSOBJ_MAIN= main_sdl.o +SYSOBJ_RES = QuakeSpasm.res + +GLOBJS = \ + gl_refrag.o \ + gl_rlight.o \ + gl_rmain.o \ + gl_fog.o \ + gl_rmisc.o \ + r_part.o \ + r_world.o \ + gl_screen.o \ + gl_sky.o \ + gl_warp.o \ + $(SYSOBJ_GL_VID) \ + gl_draw.o \ + image.o \ + gl_texmgr.o \ + gl_mesh.o \ + r_sprite.o \ + r_alias.o \ + r_brush.o \ + gl_model.o + +OBJS = strlcat.o \ + strlcpy.o \ + $(GLOBJS) \ + $(SYSOBJ_INPUT) \ + $(COMOBJ_SND) \ + $(SYSOBJ_SND) \ + $(SYSOBJ_CDA) \ + $(SYSOBJ_NET) \ + net_dgrm.o \ + net_loop.o \ + net_main.o \ + chase.o \ + cl_demo.o \ + cl_input.o \ + cl_main.o \ + cl_parse.o \ + cl_tent.o \ + console.o \ + keys.o \ + menu.o \ + sbar.o \ + view.o \ + wad.o \ + cmd.o \ + common.o \ + miniz.o \ + crc.o \ + cvar.o \ + cfgfile.o \ + host.o \ + host_cmd.o \ + mathlib.o \ + pr_cmds.o \ + pr_edict.o \ + pr_exec.o \ + sv_main.o \ + sv_move.o \ + sv_phys.o \ + sv_user.o \ + world.o \ + zone.o \ + $(SYSOBJ_SYS) $(SYSOBJ_MAIN) + +# --------------------------- +# targets / rules +# --------------------------- + +.PHONY: clean debug release + +DEFAULT_TARGET = quakespasm.exe +all: $(DEFAULT_TARGET) + +%.o: %.c + $(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $< +%.res: ../Windows/%.rc + $(WINDRES) -I../Windows --output-format=coff --target=pe-i386 -o $@ $< + +quakespasm.exe: $(OBJS) $(SYSOBJ_RES) + $(LINKER) $(OBJS) $(SYSOBJ_RES) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@ + $(call do_strip,$@) + +release: quakespasm.exe +debug: + $(error Use "make DEBUG=1") + +clean: + $(RM) *.o *.d *.res $(DEFAULT_TARGET) + +sinclude $(OBJS:.o=.d) diff --git a/Quake/Makefile.w64 b/Quake/Makefile.w64 new file mode 100644 index 0000000..fdaf121 --- /dev/null +++ b/Quake/Makefile.w64 @@ -0,0 +1,285 @@ +# GNU Makefile for compiling x64-Windows quakespasm.exe using MinGW-w64. +# Usage: "make -f Makefile.w64" +# To cross-compile on Linux hosts, see the build_cross_win32*.sh scripts. +# "make DEBUG=1" to build a debug client. +# "make SDL_CONFIG=/path/to/sdl-config" to override the included SDL versions. + +### Enable/disable SDL2 +USE_SDL2=0 + +### Enable/disable codecs for streaming music support +USE_CODEC_WAVE=1 +USE_CODEC_FLAC=1 +USE_CODEC_MP3=1 +USE_CODEC_VORBIS=1 +USE_CODEC_OPUS=1 +# either of xmp (preferred), mikmod or modplug +USE_CODEC_MIKMOD=0 +USE_CODEC_XMP=1 +USE_CODEC_MODPLUG=0 +USE_CODEC_UMX=1 + +# which library to use for mp3 decoding: mad or mpg123 +MP3LIB=mad +# which library to use for ogg/vorbis decoding: vorbis or tremor +VORBISLIB=vorbis + +# --------------------------- +# Helper functions +# --------------------------- + +check_gcc = $(shell if echo | $(CC) $(1) -Werror -S -o /dev/null -xc - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;) + +# --------------------------- + +DEBUG ?= 0 + +# --------------------------- +# build variables +# --------------------------- + +CC = gcc +LINKER = $(CC) +WINDRES = windres + +STRIP = strip + +CPUFLAGS= +LDFLAGS?= -m64 -mwindows -static-libgcc +DFLAGS ?= +CFLAGS ?= -m64 -Wall -Wno-trigraphs -MMD +#CFLAGS += $(call check_gcc,-std=gnu11,) +CFLAGS += $(CPUFLAGS) +ifneq ($(DEBUG),0) +DFLAGS += -DDEBUG +CFLAGS += -g +do_strip= +else +DFLAGS += -DNDEBUG +CFLAGS += -O2 +#CFLAGS += -fno-asynchronous-unwind-tables +CFLAGS += $(call check_gcc,-fweb,) +CFLAGS += $(call check_gcc,-frename-registers,) +cmd_strip=$(STRIP) $(1) +define do_strip + $(call cmd_strip,$(1)); +endef +endif + +ifeq ($(USE_SDL2),1) +CFLAGS += -DUSE_SDL2 +endif + +# default to our local SDL[2] for build +ifeq ($(USE_SDL2),1) +SDL_CONFIG ?=../Windows/SDL2/bin/sdl2-config --prefix=../Windows/SDL2 --lib-suffix=64 +else +SDL_CONFIG ?=../Windows/SDL/bin/sdl-config --prefix=../Windows/SDL --lib-suffix=64 +endif +SDL_CFLAGS = $(shell $(SDL_CONFIG) --cflags) +SDL_LIBS = $(shell $(SDL_CONFIG) --libs) + +DEFWINSOCK =-D_USE_WINSOCK2 +LIBWINSOCK = -lws2_32 + +CFLAGS += $(DEFWINSOCK) +NET_LIBS = $(LIBWINSOCK) + +ifneq ($(VORBISLIB),vorbis) +ifneq ($(VORBISLIB),tremor) +$(error Invalid VORBISLIB setting) +endif +endif +ifneq ($(MP3LIB),mpg123) +ifneq ($(MP3LIB),mad) +$(error Invalid MP3LIB setting) +endif +endif +ifeq ($(MP3LIB),mad) +mp3_obj=snd_mp3 +lib_mp3dec=-lmad +endif +ifeq ($(MP3LIB),mpg123) +mp3_obj=snd_mpg123 +lib_mp3dec=-lmpg123 +endif +ifeq ($(VORBISLIB),vorbis) +cpp_vorbisdec= +lib_vorbisdec=-lvorbisfile -lvorbis -logg +endif +ifeq ($(VORBISLIB),tremor) +cpp_vorbisdec=-DVORBIS_USE_TREMOR +lib_vorbisdec=-lvorbisidec -logg +endif + +CODECLIBS = +ifeq ($(USE_CODEC_WAVE),1) +CFLAGS+= -DUSE_CODEC_WAVE +endif +ifeq ($(USE_CODEC_FLAC),1) +CFLAGS+= -DUSE_CODEC_FLAC +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= -lFLAC +endif +ifeq ($(USE_CODEC_OPUS),1) +CFLAGS+= -DUSE_CODEC_OPUS +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= -lopusfile -lopus -logg +endif +ifeq ($(USE_CODEC_VORBIS),1) +CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec) +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= $(lib_vorbisdec) +endif +ifeq ($(USE_CODEC_MP3),1) +CFLAGS+= -DUSE_CODEC_MP3 +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= $(lib_mp3dec) +endif +ifeq ($(USE_CODEC_MIKMOD),1) +CFLAGS+= -DUSE_CODEC_MIKMOD +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= -lmikmod +endif +ifeq ($(USE_CODEC_XMP),1) +CFLAGS+= -DUSE_CODEC_XMP +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= -lxmp +endif +ifeq ($(USE_CODEC_MODPLUG),1) +CFLAGS+= -DUSE_CODEC_MODPLUG +CODEC_INC = -I../Windows/codecs/include +CODEC_LINK= -L../Windows/codecs/x64 +CODECLIBS+= -lmodplug +endif +ifeq ($(USE_CODEC_UMX),1) +CFLAGS+= -DUSE_CODEC_UMX +endif +CFLAGS+= $(CODEC_INC) + +COMMON_LIBS= -lopengl32 -lwinmm + +LIBS = $(COMMON_LIBS) $(NET_LIBS) $(CODEC_LINK) $(CODECLIBS) + +# --------------------------- +# objects +# --------------------------- + +MUSIC_OBJS= bgmusic.o \ + snd_codec.o \ + snd_flac.o \ + snd_wave.o \ + snd_vorbis.o \ + snd_opus.o \ + $(mp3_obj).o \ + snd_mp3tag.o \ + snd_mikmod.o \ + snd_modplug.o \ + snd_xmp.o \ + snd_umx.o +COMOBJ_SND = snd_dma.o snd_mix.o snd_mem.o $(MUSIC_OBJS) +SYSOBJ_SND = snd_sdl.o +SYSOBJ_CDA = cd_sdl.o +SYSOBJ_INPUT = in_sdl.o +SYSOBJ_GL_VID= gl_vidsdl.o +SYSOBJ_NET = net_win.o net_wins.o net_wipx.o +SYSOBJ_SYS = pl_win.o sys_sdl_win.o +SYSOBJ_MAIN= main_sdl.o +SYSOBJ_RES = QuakeSpasm.res + +GLOBJS = \ + gl_refrag.o \ + gl_rlight.o \ + gl_rmain.o \ + gl_fog.o \ + gl_rmisc.o \ + r_part.o \ + r_world.o \ + gl_screen.o \ + gl_sky.o \ + gl_warp.o \ + $(SYSOBJ_GL_VID) \ + gl_draw.o \ + image.o \ + gl_texmgr.o \ + gl_mesh.o \ + r_sprite.o \ + r_alias.o \ + r_brush.o \ + gl_model.o + +OBJS = strlcat.o \ + strlcpy.o \ + $(GLOBJS) \ + $(SYSOBJ_INPUT) \ + $(COMOBJ_SND) \ + $(SYSOBJ_SND) \ + $(SYSOBJ_CDA) \ + $(SYSOBJ_NET) \ + net_dgrm.o \ + net_loop.o \ + net_main.o \ + chase.o \ + cl_demo.o \ + cl_input.o \ + cl_main.o \ + cl_parse.o \ + cl_tent.o \ + console.o \ + keys.o \ + menu.o \ + sbar.o \ + view.o \ + wad.o \ + cmd.o \ + common.o \ + miniz.o \ + crc.o \ + cvar.o \ + cfgfile.o \ + host.o \ + host_cmd.o \ + mathlib.o \ + pr_cmds.o \ + pr_edict.o \ + pr_exec.o \ + sv_main.o \ + sv_move.o \ + sv_phys.o \ + sv_user.o \ + world.o \ + zone.o \ + $(SYSOBJ_SYS) $(SYSOBJ_MAIN) + +# --------------------------- +# targets / rules +# --------------------------- + +.PHONY: clean debug release + +DEFAULT_TARGET = quakespasm.exe +all: $(DEFAULT_TARGET) + +%.o: %.c + $(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $< +%.res: ../Windows/%.rc + $(WINDRES) -I../Windows --output-format=coff --target=pe-x86-64 -o $@ $< + +quakespasm.exe: $(OBJS) $(SYSOBJ_RES) + $(LINKER) $(OBJS) $(SYSOBJ_RES) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@ + $(call do_strip,$@) + +release: quakespasm.exe +debug: + $(error Use "make DEBUG=1") + +clean: + $(RM) *.o *.d *.res $(DEFAULT_TARGET) + +sinclude $(OBJS:.o=.d) diff --git a/Quake/Makefile.wat b/Quake/Makefile.wat new file mode 100644 index 0000000..58eadc6 --- /dev/null +++ b/Quake/Makefile.wat @@ -0,0 +1,245 @@ +# makefile to build quakespasm.exe for Windows using Open Watcom: +# wmake -f Makefile.wat + +### Enable/disable SDL2 +USE_SDL2=0 + +### Enable/disable codecs for streaming music support +USE_CODEC_WAVE=1 +USE_CODEC_FLAC=0 +USE_CODEC_MP3=1 +USE_CODEC_VORBIS=1 +USE_CODEC_OPUS=0 +# either of xmp (preferred), mikmod or modplug +USE_CODEC_MIKMOD=0 +USE_CODEC_XMP=0 +USE_CODEC_MODPLUG=0 +USE_CODEC_UMX=0 + +# which library to use for mp3 decoding: mad or mpg123 +MP3LIB=mad +# which library to use for ogg/vorbis decoding: vorbis or tremor +VORBISLIB=vorbis + +WINSOCK2= 0 + +# --------------------------- +# build variables +# --------------------------- + +CFLAGS_BASE = -zq -wx -bm -bt=nt -5s -sg -otexan -fp5 -fpi87 -ei -j -zp8 +# newer OpenWatcom versions enable W303 by default +CFLAGS_BASE+= -wcd=303 +CFLAGS = $(CFLAGS_BASE) + +!ifneq USE_SDL2 1 +SDL_CFLAGS = -I../Windows/SDL/include +SDL_LIBS = ../Windows/SDL/watcom/SDL.lib +!else +SDL_CFLAGS = -I../Windows/SDL2/include +SDL_LIBS = ../Windows/SDL2/watcom/SDL2.lib +CFLAGS += -DUSE_SDL2 +!endif + +!ifeq WINSOCK2 1 +DEFWINSOCK =-D_USE_WINSOCK2 +LIBWINSOCK = ws2_32.lib +!else +DEFWINSOCK = +LIBWINSOCK = wsock32.lib +!endif + +CFLAGS += $(DEFWINSOCK) +NET_LIBS = $(LIBWINSOCK) + +# note: all codec libraries are static. +CODEC_INC = -I../Windows/codecs/include +LIBCODEC = ../Windows/codecs/x86-watcom/ +!ifeq MP3LIB mad +mp3_obj=snd_mp3 +lib_mp3dec=$(LIBCODEC)mad.lib +!endif +!ifeq MP3LIB mpg123 +mp3_obj=snd_mpg123 +lib_mp3dec=$(LIBCODEC)mpg123.lib +!endif +!ifeq VORBISLIB vorbis +cpp_vorbisdec= +lib_vorbisdec=$(LIBCODEC)vorbisfile.lib $(LIBCODEC)vorbis.lib $(LIBCODEC)ogg.lib +!endif +!ifeq VORBISLIB tremor +cpp_vorbisdec=-DVORBIS_USE_TREMOR +lib_vorbisdec=$(LIBCODEC)vorbisidec.lib $(LIBCODEC)ogg.lib +!endif + +CODECLIBS = +!ifeq USE_CODEC_WAVE 1 +CFLAGS+= -DUSE_CODEC_WAVE +!endif +!ifeq USE_CODEC_FLAC 1 +CFLAGS+= -DUSE_CODEC_FLAC +CFLAGS+= -DFLAC__NO_DLL +CODECLIBS+= $(LIBCODEC)FLAC.lib +!endif +!ifeq USE_CODEC_OPUS 1 +CFLAGS+= -DUSE_CODEC_OPUS +CODECLIBS+= $(LIBCODEC)opusfile.lib $(LIBCODEC)opus.lib $(LIBCODEC)ogg.lib +!endif +!ifeq USE_CODEC_VORBIS 1 +CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec) +CODECLIBS+= $(lib_vorbisdec) +!endif +!ifeq USE_CODEC_MP3 1 +CFLAGS+= -DUSE_CODEC_MP3 +CODECLIBS+= $(lib_mp3dec) +!endif +!ifeq USE_CODEC_MIKMOD 1 +CFLAGS+= -DUSE_CODEC_MIKMOD +CFLAGS+= -DMIKMOD_STATIC +CODECLIBS+= $(LIBCODEC)mikmod.lib +!endif +!ifeq USE_CODEC_XMP 1 +CFLAGS+= -DUSE_CODEC_XMP +CFLAGS+= -DLIBXMP_STATIC +CODECLIBS+= $(LIBCODEC)libxmp.lib +!endif +!ifeq USE_CODEC_MODPLUG 1 +CFLAGS+= -DUSE_CODEC_MODPLUG +CFLAGS+= -DMODPLUG_STATIC +CODECLIBS+= $(LIBCODEC)modplug.lib +!endif +!ifeq USE_CODEC_UMX 1 +CFLAGS+= -DUSE_CODEC_UMX +!endif +CFLAGS+= $(CODEC_INC) + +COMMON_LIBS= opengl32.lib winmm.lib + +LIBS = $(CODECLIBS) $(SDL_LIBS) $(COMMON_LIBS) $(NET_LIBS) + +# --------------------------- +# targets +# --------------------------- + +all: quakespasm.exe + +# --------------------------- +# rules +# --------------------------- + +.EXTENSIONS: .res .rc + +.c.obj: + wcc386 $(INCLUDES) $(CFLAGS) $(SDL_CFLAGS) -fo=$^@ $< +SDL_win32_main.obj: ../Windows/SDL/main/SDL_win32_main.c + wcc386 $(CFLAGS_BASE) $(SDL_CFLAGS) -fo=$^@ $< +SDL_windows_main.obj: ../Windows/SDL2/main/SDL_windows_main.c + wcc386 $(CFLAGS_BASE) $(SDL_CFLAGS) -I../Windows/SDL2/main -fo=$^@ $< +quakespasm.res: ../Windows/QuakeSpasm.rc + wrc -q -r -bt=nt -I../Windows -fo=$^@ $< + +# ---------------------------------------------------------------------------- +# objects +# ---------------------------------------------------------------------------- + +MUSIC_OBJS= bgmusic.obj & + snd_codec.obj & + snd_flac.obj & + snd_wave.obj & + snd_vorbis.obj & + snd_opus.obj & + $(mp3_obj).obj & + snd_mp3tag.obj & + snd_mikmod.obj & + snd_modplug.obj & + snd_xmp.obj & + snd_umx.obj +COMOBJ_SND = snd_dma.obj snd_mix.obj snd_mem.obj $(MUSIC_OBJS) +SYSOBJ_SND = snd_sdl.obj +SYSOBJ_CDA = cd_sdl.obj +SYSOBJ_INPUT = in_sdl.obj +SYSOBJ_GL_VID= gl_vidsdl.obj +SYSOBJ_NET = net_win.obj net_wins.obj net_wipx.obj +SYSOBJ_SYS = pl_win.obj sys_sdl_win.obj +SYSOBJ_MAIN= main_sdl.obj +!ifeq USE_SDL2 1 +SYSOBJ_MAIN+= SDL_windows_main.obj +!else +SYSOBJ_MAIN+= SDL_win32_main.obj +!endif +SYSOBJ_RES = quakespasm.res + +GLOBJS = & + gl_refrag.obj & + gl_rlight.obj & + gl_rmain.obj & + gl_fog.obj & + gl_rmisc.obj & + r_part.obj & + r_world.obj & + gl_screen.obj & + gl_sky.obj & + gl_warp.obj & + $(SYSOBJ_GL_VID) & + gl_draw.obj & + image.obj & + gl_texmgr.obj & + gl_mesh.obj & + r_sprite.obj & + r_alias.obj & + r_brush.obj & + gl_model.obj + +OBJS = strlcat.obj & + strlcpy.obj & + $(GLOBJS) & + $(SYSOBJ_INPUT) & + $(COMOBJ_SND) & + $(SYSOBJ_SND) & + $(SYSOBJ_CDA) & + $(SYSOBJ_NET) & + net_dgrm.obj & + net_loop.obj & + net_main.obj & + chase.obj & + cl_demo.obj & + cl_input.obj & + cl_main.obj & + cl_parse.obj & + cl_tent.obj & + console.obj & + keys.obj & + menu.obj & + sbar.obj & + view.obj & + wad.obj & + cmd.obj & + common.obj & + miniz.obj & + crc.obj & + cvar.obj & + cfgfile.obj & + host.obj & + host_cmd.obj & + mathlib.obj & + pr_cmds.obj & + pr_edict.obj & + pr_exec.obj & + sv_main.obj & + sv_move.obj & + sv_phys.obj & + sv_user.obj & + world.obj & + zone.obj & + $(SYSOBJ_SYS) $(SYSOBJ_MAIN) + +# ------------------------ +# Watcom build rules +# ------------------------ + +# 1 MB stack size. +quakespasm.exe: $(OBJS) quakespasm.res + wlink N $@ SYS NT_WIN OPTION q OPTION STACK=0x100000 OPTION RESOURCE=$^*.res LIBR {$(LIBS)} F {$(OBJS)} + +clean: .symbolic + rm -f *.obj *.res *.err quakespasm.exe diff --git a/Quake/anorm_dots.h b/Quake/anorm_dots.h new file mode 100644 index 0000000..21e6853 --- /dev/null +++ b/Quake/anorm_dots.h @@ -0,0 +1,580 @@ +/* + * anorm_dots.h + * + * Copyright (C) 1996-1997 Id Software, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +// 0 + { 1.23, 1.30, 1.47, 1.35, 1.56, 1.71, 1.37, 1.38, + 1.59, 1.60, 1.79, 1.97, 1.88, 1.92, 1.79, 1.02, + 0.93, 1.07, 0.82, 0.87, 0.88, 0.94, 0.96, 1.14, + 1.11, 0.82, 0.83, 0.89, 0.89, 0.86, 0.94, 0.91, + 1.00, 1.21, 0.98, 1.48, 1.30, 1.57, 0.96, 1.07, + 1.14, 1.60, 1.61, 1.40, 1.37, 1.72, 1.78, 1.79, + 1.93, 1.99, 1.90, 1.68, 1.71, 1.86, 1.60, 1.68, + 1.78, 1.86, 1.93, 1.99, 1.97, 1.44, 1.22, 1.49, + 0.93, 0.99, 0.99, 1.23, 1.22, 1.44, 1.49, 0.89, + 0.89, 0.97, 0.91, 0.98, 1.19, 0.82, 0.76, 0.82, + 0.71, 0.72, 0.73, 0.76, 0.79, 0.86, 0.83, 0.72, + 0.76, 0.76, 0.89, 0.82, 0.89, 0.82, 0.89, 0.91, + 0.83, 0.96, 1.14, 0.97, 1.40, 1.19, 0.98, 0.94, + 1.00, 1.07, 1.37, 1.21, 1.48, 1.30, 1.57, 1.61, + 1.37, 0.86, 0.83, 0.91, 0.82, 0.82, 0.88, 0.89, + 0.96, 1.14, 0.98, 0.87, 0.93, 0.94, 1.02, 1.30, + 1.07, 1.35, 1.38, 1.11, 1.56, 1.92, 1.79, 1.79, + 1.59, 1.60, 1.72, 1.90, 1.79, 0.80, 0.85, 0.79, + 0.93, 0.80, 0.85, 0.77, 0.74, 0.72, 0.77, 0.74, + 0.72, 0.70, 0.70, 0.71, 0.76, 0.73, 0.79, 0.79, + 0.73, 0.76, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 1 + { 1.26, 1.26, 1.48, 1.23, 1.50, 1.71, 1.14, 1.19, + 1.38, 1.46, 1.64, 1.94, 1.87, 1.84, 1.71, 1.02, + 0.92, 1.00, 0.79, 0.85, 0.84, 0.91, 0.90, 0.98, + 0.99, 0.77, 0.77, 0.83, 0.82, 0.79, 0.86, 0.84, + 0.92, 0.99, 0.91, 1.24, 1.03, 1.33, 0.88, 0.94, + 0.97, 1.41, 1.39, 1.18, 1.11, 1.51, 1.61, 1.59, + 1.80, 1.91, 1.76, 1.54, 1.65, 1.76, 1.70, 1.70, + 1.85, 1.85, 1.97, 1.99, 1.93, 1.28, 1.09, 1.39, + 0.92, 0.97, 0.99, 1.18, 1.26, 1.52, 1.48, 0.83, + 0.85, 0.90, 0.88, 0.93, 1.00, 0.77, 0.73, 0.78, + 0.72, 0.71, 0.74, 0.75, 0.79, 0.86, 0.81, 0.75, + 0.81, 0.79, 0.96, 0.88, 0.94, 0.86, 0.93, 0.92, + 0.85, 1.08, 1.33, 1.05, 1.55, 1.31, 1.01, 1.05, + 1.27, 1.31, 1.60, 1.47, 1.70, 1.54, 1.76, 1.76, + 1.57, 0.93, 0.90, 0.99, 0.88, 0.88, 0.95, 0.97, + 1.11, 1.39, 1.20, 0.92, 0.97, 1.01, 1.10, 1.39, + 1.22, 1.51, 1.58, 1.32, 1.64, 1.97, 1.85, 1.91, + 1.77, 1.74, 1.88, 1.99, 1.91, 0.79, 0.86, 0.80, + 0.94, 0.84, 0.88, 0.74, 0.74, 0.71, 0.82, 0.77, + 0.76, 0.70, 0.73, 0.72, 0.73, 0.70, 0.74, 0.85, + 0.77, 0.82, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 2 + { 1.34, 1.27, 1.53, 1.17, 1.46, 1.71, 0.98, 1.05, + 1.20, 1.34, 1.48, 1.86, 1.82, 1.71, 1.62, 1.09, + 0.94, 0.99, 0.79, 0.85, 0.82, 0.90, 0.87, 0.93, + 0.96, 0.76, 0.74, 0.79, 0.76, 0.74, 0.79, 0.78, + 0.85, 0.92, 0.85, 1.00, 0.93, 1.06, 0.81, 0.86, + 0.89, 1.16, 1.12, 0.97, 0.95, 1.28, 1.38, 1.35, + 1.60, 1.77, 1.57, 1.33, 1.50, 1.58, 1.69, 1.63, + 1.82, 1.74, 1.91, 1.92, 1.80, 1.04, 0.97, 1.21, + 0.90, 0.93, 0.97, 1.05, 1.21, 1.48, 1.37, 0.77, + 0.80, 0.84, 0.85, 0.88, 0.92, 0.73, 0.71, 0.74, + 0.74, 0.71, 0.75, 0.73, 0.79, 0.84, 0.78, 0.79, + 0.86, 0.81, 1.05, 0.94, 0.99, 0.90, 0.95, 0.92, + 0.86, 1.24, 1.44, 1.14, 1.59, 1.34, 1.02, 1.27, + 1.50, 1.49, 1.80, 1.69, 1.86, 1.72, 1.87, 1.80, + 1.69, 1.00, 0.98, 1.23, 0.95, 0.96, 1.09, 1.16, + 1.37, 1.63, 1.46, 0.99, 1.10, 1.25, 1.24, 1.51, + 1.41, 1.67, 1.77, 1.55, 1.72, 1.95, 1.89, 1.98, + 1.91, 1.86, 1.97, 1.99, 1.94, 0.81, 0.89, 0.85, + 0.98, 0.90, 0.94, 0.75, 0.78, 0.73, 0.89, 0.83, + 0.82, 0.72, 0.77, 0.76, 0.72, 0.70, 0.71, 0.91, + 0.83, 0.89, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 3 + { 1.46, 1.34, 1.60, 1.16, 1.46, 1.71, 0.94, 0.99, + 1.05, 1.26, 1.33, 1.74, 1.76, 1.57, 1.54, 1.23, + 0.98, 1.05, 0.83, 0.89, 0.84, 0.92, 0.87, 0.91, + 0.96, 0.78, 0.74, 0.79, 0.72, 0.72, 0.75, 0.76, + 0.80, 0.88, 0.83, 0.94, 0.87, 0.95, 0.76, 0.80, + 0.82, 0.97, 0.96, 0.89, 0.88, 1.08, 1.11, 1.10, + 1.37, 1.59, 1.37, 1.07, 1.27, 1.34, 1.57, 1.45, + 1.69, 1.55, 1.77, 1.79, 1.60, 0.93, 0.90, 0.99, + 0.86, 0.87, 0.93, 0.96, 1.07, 1.35, 1.18, 0.73, + 0.76, 0.77, 0.81, 0.82, 0.85, 0.70, 0.71, 0.72, + 0.78, 0.73, 0.77, 0.73, 0.79, 0.82, 0.76, 0.83, + 0.90, 0.84, 1.18, 0.98, 1.03, 0.92, 0.95, 0.90, + 0.86, 1.32, 1.45, 1.15, 1.53, 1.27, 0.99, 1.42, + 1.65, 1.58, 1.93, 1.83, 1.94, 1.81, 1.88, 1.74, + 1.70, 1.19, 1.17, 1.44, 1.11, 1.15, 1.36, 1.41, + 1.61, 1.81, 1.67, 1.22, 1.34, 1.50, 1.42, 1.65, + 1.61, 1.82, 1.91, 1.75, 1.80, 1.89, 1.89, 1.98, + 1.99, 1.94, 1.98, 1.92, 1.87, 0.86, 0.95, 0.92, + 1.14, 0.98, 1.03, 0.79, 0.84, 0.77, 0.97, 0.90, + 0.89, 0.76, 0.82, 0.82, 0.74, 0.72, 0.71, 0.98, + 0.89, 0.97, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 4 + { 1.60, 1.44, 1.68, 1.22, 1.49, 1.71, 0.93, 0.99, + 0.99, 1.23, 1.22, 1.60, 1.68, 1.44, 1.49, 1.40, + 1.14, 1.19, 0.89, 0.96, 0.89, 0.97, 0.89, 0.91, + 0.98, 0.82, 0.76, 0.82, 0.71, 0.72, 0.73, 0.76, + 0.79, 0.86, 0.83, 0.91, 0.83, 0.89, 0.72, 0.76, + 0.76, 0.89, 0.89, 0.82, 0.82, 0.98, 0.96, 0.97, + 1.14, 1.40, 1.19, 0.94, 1.00, 1.07, 1.37, 1.21, + 1.48, 1.30, 1.57, 1.61, 1.37, 0.86, 0.83, 0.91, + 0.82, 0.82, 0.88, 0.89, 0.96, 1.14, 0.98, 0.70, + 0.72, 0.73, 0.77, 0.76, 0.79, 0.70, 0.72, 0.71, + 0.82, 0.77, 0.80, 0.74, 0.79, 0.80, 0.74, 0.87, + 0.93, 0.85, 1.23, 1.02, 1.02, 0.93, 0.93, 0.87, + 0.85, 1.30, 1.35, 1.07, 1.38, 1.11, 0.94, 1.47, + 1.71, 1.56, 1.97, 1.88, 1.92, 1.79, 1.79, 1.59, + 1.60, 1.30, 1.35, 1.56, 1.37, 1.38, 1.59, 1.60, + 1.79, 1.92, 1.79, 1.48, 1.57, 1.72, 1.61, 1.78, + 1.79, 1.93, 1.99, 1.90, 1.86, 1.78, 1.86, 1.93, + 1.99, 1.97, 1.90, 1.79, 1.72, 0.94, 1.07, 1.00, + 1.37, 1.21, 1.30, 0.86, 0.91, 0.83, 1.14, 0.98, + 0.96, 0.82, 0.88, 0.89, 0.79, 0.76, 0.73, 1.07, + 0.94, 1.11, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 5 + { 1.74, 1.57, 1.76, 1.33, 1.54, 1.71, 0.94, 1.05, + 0.99, 1.26, 1.16, 1.46, 1.60, 1.34, 1.46, 1.59, + 1.37, 1.37, 0.97, 1.11, 0.96, 1.10, 0.95, 0.94, + 1.08, 0.89, 0.82, 0.88, 0.72, 0.76, 0.75, 0.80, + 0.80, 0.88, 0.87, 0.91, 0.83, 0.87, 0.72, 0.76, + 0.74, 0.83, 0.84, 0.78, 0.79, 0.96, 0.89, 0.92, + 0.98, 1.23, 1.05, 0.86, 0.92, 0.95, 1.11, 0.98, + 1.22, 1.03, 1.34, 1.42, 1.14, 0.79, 0.77, 0.84, + 0.78, 0.76, 0.82, 0.82, 0.89, 0.97, 0.90, 0.70, + 0.71, 0.71, 0.73, 0.72, 0.74, 0.73, 0.76, 0.72, + 0.86, 0.81, 0.82, 0.76, 0.79, 0.77, 0.73, 0.90, + 0.95, 0.86, 1.18, 1.03, 0.98, 0.92, 0.90, 0.83, + 0.84, 1.19, 1.17, 0.98, 1.15, 0.97, 0.89, 1.42, + 1.65, 1.44, 1.93, 1.83, 1.81, 1.67, 1.61, 1.36, + 1.41, 1.32, 1.45, 1.58, 1.57, 1.53, 1.74, 1.70, + 1.88, 1.94, 1.81, 1.69, 1.77, 1.87, 1.79, 1.89, + 1.92, 1.98, 1.99, 1.98, 1.89, 1.65, 1.80, 1.82, + 1.91, 1.94, 1.75, 1.61, 1.50, 1.07, 1.34, 1.27, + 1.60, 1.45, 1.55, 0.93, 0.99, 0.90, 1.35, 1.18, + 1.07, 0.87, 0.93, 0.96, 0.85, 0.82, 0.77, 1.15, + 0.99, 1.27, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 6 + { 1.86, 1.71, 1.82, 1.48, 1.62, 1.71, 0.98, 1.20, + 1.05, 1.34, 1.17, 1.34, 1.53, 1.27, 1.46, 1.77, + 1.60, 1.57, 1.16, 1.38, 1.12, 1.35, 1.06, 1.00, + 1.28, 0.97, 0.89, 0.95, 0.76, 0.81, 0.79, 0.86, + 0.85, 0.92, 0.93, 0.93, 0.85, 0.87, 0.74, 0.78, + 0.74, 0.79, 0.82, 0.76, 0.79, 0.96, 0.85, 0.90, + 0.94, 1.09, 0.99, 0.81, 0.85, 0.89, 0.95, 0.90, + 0.99, 0.94, 1.10, 1.24, 0.98, 0.75, 0.73, 0.78, + 0.74, 0.72, 0.77, 0.76, 0.82, 0.89, 0.83, 0.73, + 0.71, 0.71, 0.71, 0.70, 0.72, 0.77, 0.80, 0.74, + 0.90, 0.85, 0.84, 0.78, 0.79, 0.75, 0.73, 0.92, + 0.95, 0.86, 1.05, 0.99, 0.94, 0.90, 0.86, 0.79, + 0.81, 1.00, 0.98, 0.91, 0.96, 0.89, 0.83, 1.27, + 1.50, 1.23, 1.80, 1.69, 1.63, 1.46, 1.37, 1.09, + 1.16, 1.24, 1.44, 1.49, 1.69, 1.59, 1.80, 1.69, + 1.87, 1.86, 1.72, 1.82, 1.91, 1.94, 1.92, 1.95, + 1.99, 1.98, 1.91, 1.97, 1.89, 1.51, 1.72, 1.67, + 1.77, 1.86, 1.55, 1.41, 1.25, 1.33, 1.58, 1.50, + 1.80, 1.63, 1.74, 1.04, 1.21, 0.97, 1.48, 1.37, + 1.21, 0.93, 0.97, 1.05, 0.92, 0.88, 0.84, 1.14, + 1.02, 1.34, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 7 + { 1.94, 1.84, 1.87, 1.64, 1.71, 1.71, 1.14, 1.38, + 1.19, 1.46, 1.23, 1.26, 1.48, 1.26, 1.50, 1.91, + 1.80, 1.76, 1.41, 1.61, 1.39, 1.59, 1.33, 1.24, + 1.51, 1.18, 0.97, 1.11, 0.82, 0.88, 0.86, 0.94, + 0.92, 0.99, 1.03, 0.98, 0.91, 0.90, 0.79, 0.84, + 0.77, 0.79, 0.84, 0.77, 0.83, 0.99, 0.85, 0.91, + 0.92, 1.02, 1.00, 0.79, 0.80, 0.86, 0.88, 0.84, + 0.92, 0.88, 0.97, 1.10, 0.94, 0.74, 0.71, 0.74, + 0.72, 0.70, 0.73, 0.72, 0.76, 0.82, 0.77, 0.77, + 0.73, 0.74, 0.71, 0.70, 0.73, 0.83, 0.85, 0.78, + 0.92, 0.88, 0.86, 0.81, 0.79, 0.74, 0.75, 0.92, + 0.93, 0.85, 0.96, 0.94, 0.88, 0.86, 0.81, 0.75, + 0.79, 0.93, 0.90, 0.85, 0.88, 0.82, 0.77, 1.05, + 1.27, 0.99, 1.60, 1.47, 1.39, 1.20, 1.11, 0.95, + 0.97, 1.08, 1.33, 1.31, 1.70, 1.55, 1.76, 1.57, + 1.76, 1.70, 1.54, 1.85, 1.97, 1.91, 1.99, 1.97, + 1.99, 1.91, 1.77, 1.88, 1.85, 1.39, 1.64, 1.51, + 1.58, 1.74, 1.32, 1.22, 1.01, 1.54, 1.76, 1.65, + 1.93, 1.70, 1.85, 1.28, 1.39, 1.09, 1.52, 1.48, + 1.26, 0.97, 0.99, 1.18, 1.00, 0.93, 0.90, 1.05, + 1.01, 1.31, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 8 + { 1.97, 1.92, 1.88, 1.79, 1.79, 1.71, 1.37, 1.59, + 1.38, 1.60, 1.35, 1.23, 1.47, 1.30, 1.56, 1.99, + 1.93, 1.90, 1.60, 1.78, 1.61, 1.79, 1.57, 1.48, + 1.72, 1.40, 1.14, 1.37, 0.89, 0.96, 0.94, 1.07, + 1.00, 1.21, 1.30, 1.14, 0.98, 0.96, 0.86, 0.91, + 0.83, 0.82, 0.88, 0.82, 0.89, 1.11, 0.87, 0.94, + 0.93, 1.02, 1.07, 0.80, 0.79, 0.85, 0.82, 0.80, + 0.87, 0.85, 0.93, 1.02, 0.93, 0.77, 0.72, 0.74, + 0.71, 0.70, 0.70, 0.71, 0.72, 0.77, 0.74, 0.82, + 0.76, 0.79, 0.72, 0.73, 0.76, 0.89, 0.89, 0.82, + 0.93, 0.91, 0.86, 0.83, 0.79, 0.73, 0.76, 0.91, + 0.89, 0.83, 0.89, 0.89, 0.82, 0.82, 0.76, 0.72, + 0.76, 0.86, 0.83, 0.79, 0.82, 0.76, 0.73, 0.94, + 1.00, 0.91, 1.37, 1.21, 1.14, 0.98, 0.96, 0.88, + 0.89, 0.96, 1.14, 1.07, 1.60, 1.40, 1.61, 1.37, + 1.57, 1.48, 1.30, 1.78, 1.93, 1.79, 1.99, 1.92, + 1.90, 1.79, 1.59, 1.72, 1.79, 1.30, 1.56, 1.35, + 1.38, 1.60, 1.11, 1.07, 0.94, 1.68, 1.86, 1.71, + 1.97, 1.68, 1.86, 1.44, 1.49, 1.22, 1.44, 1.49, + 1.22, 0.99, 0.99, 1.23, 1.19, 0.98, 0.97, 0.97, + 0.98, 1.19, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 9 + { 1.94, 1.97, 1.87, 1.91, 1.85, 1.71, 1.60, 1.77, + 1.58, 1.74, 1.51, 1.26, 1.48, 1.39, 1.64, 1.99, + 1.97, 1.99, 1.70, 1.85, 1.76, 1.91, 1.76, 1.70, + 1.88, 1.55, 1.33, 1.57, 0.96, 1.08, 1.05, 1.31, + 1.27, 1.47, 1.54, 1.39, 1.20, 1.11, 0.93, 0.99, + 0.90, 0.88, 0.95, 0.88, 0.97, 1.32, 0.92, 1.01, + 0.97, 1.10, 1.22, 0.84, 0.80, 0.88, 0.79, 0.79, + 0.85, 0.86, 0.92, 1.02, 0.94, 0.82, 0.76, 0.77, + 0.72, 0.73, 0.70, 0.72, 0.71, 0.74, 0.74, 0.88, + 0.81, 0.85, 0.75, 0.77, 0.82, 0.94, 0.93, 0.86, + 0.92, 0.92, 0.86, 0.85, 0.79, 0.74, 0.79, 0.88, + 0.85, 0.81, 0.82, 0.83, 0.77, 0.78, 0.73, 0.71, + 0.75, 0.79, 0.77, 0.74, 0.77, 0.73, 0.70, 0.86, + 0.92, 0.84, 1.14, 0.99, 0.98, 0.91, 0.90, 0.84, + 0.83, 0.88, 0.97, 0.94, 1.41, 1.18, 1.39, 1.11, + 1.33, 1.24, 1.03, 1.61, 1.80, 1.59, 1.91, 1.84, + 1.76, 1.64, 1.38, 1.51, 1.71, 1.26, 1.50, 1.23, + 1.19, 1.46, 0.99, 1.00, 0.91, 1.70, 1.85, 1.65, + 1.93, 1.54, 1.76, 1.52, 1.48, 1.26, 1.28, 1.39, + 1.09, 0.99, 0.97, 1.18, 1.31, 1.01, 1.05, 0.90, + 0.93, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 10 + { 1.86, 1.95, 1.82, 1.98, 1.89, 1.71, 1.80, 1.91, + 1.77, 1.86, 1.67, 1.34, 1.53, 1.51, 1.72, 1.92, + 1.91, 1.99, 1.69, 1.82, 1.80, 1.94, 1.87, 1.86, + 1.97, 1.59, 1.44, 1.69, 1.05, 1.24, 1.27, 1.49, + 1.50, 1.69, 1.72, 1.63, 1.46, 1.37, 1.00, 1.23, + 0.98, 0.95, 1.09, 0.96, 1.16, 1.55, 0.99, 1.25, + 1.10, 1.24, 1.41, 0.90, 0.85, 0.94, 0.79, 0.81, + 0.85, 0.89, 0.94, 1.09, 0.98, 0.89, 0.82, 0.83, + 0.74, 0.77, 0.72, 0.76, 0.73, 0.75, 0.78, 0.94, + 0.86, 0.91, 0.79, 0.83, 0.89, 0.99, 0.95, 0.90, + 0.90, 0.92, 0.84, 0.86, 0.79, 0.75, 0.81, 0.85, + 0.80, 0.78, 0.76, 0.77, 0.73, 0.74, 0.71, 0.71, + 0.73, 0.74, 0.74, 0.71, 0.76, 0.72, 0.70, 0.79, + 0.85, 0.78, 0.98, 0.92, 0.93, 0.85, 0.87, 0.82, + 0.79, 0.81, 0.89, 0.86, 1.16, 0.97, 1.12, 0.95, + 1.06, 1.00, 0.93, 1.38, 1.60, 1.35, 1.77, 1.71, + 1.57, 1.48, 1.20, 1.28, 1.62, 1.27, 1.46, 1.17, + 1.05, 1.34, 0.96, 0.99, 0.90, 1.63, 1.74, 1.50, + 1.80, 1.33, 1.58, 1.48, 1.37, 1.21, 1.04, 1.21, + 0.97, 0.97, 0.93, 1.05, 1.34, 1.02, 1.14, 0.84, + 0.88, 0.92, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 11 + { 1.74, 1.89, 1.76, 1.98, 1.89, 1.71, 1.93, 1.99, + 1.91, 1.94, 1.82, 1.46, 1.60, 1.65, 1.80, 1.79, + 1.77, 1.92, 1.57, 1.69, 1.74, 1.87, 1.88, 1.94, + 1.98, 1.53, 1.45, 1.70, 1.18, 1.32, 1.42, 1.58, + 1.65, 1.83, 1.81, 1.81, 1.67, 1.61, 1.19, 1.44, + 1.17, 1.11, 1.36, 1.15, 1.41, 1.75, 1.22, 1.50, + 1.34, 1.42, 1.61, 0.98, 0.92, 1.03, 0.83, 0.86, + 0.89, 0.95, 0.98, 1.23, 1.14, 0.97, 0.89, 0.90, + 0.78, 0.82, 0.76, 0.82, 0.77, 0.79, 0.84, 0.98, + 0.90, 0.98, 0.83, 0.89, 0.97, 1.03, 0.95, 0.92, + 0.86, 0.90, 0.82, 0.86, 0.79, 0.77, 0.84, 0.81, + 0.76, 0.76, 0.72, 0.73, 0.70, 0.72, 0.71, 0.73, + 0.73, 0.72, 0.74, 0.71, 0.78, 0.74, 0.72, 0.75, + 0.80, 0.76, 0.94, 0.88, 0.91, 0.83, 0.87, 0.84, + 0.79, 0.76, 0.82, 0.80, 0.97, 0.89, 0.96, 0.88, + 0.95, 0.94, 0.87, 1.11, 1.37, 1.10, 1.59, 1.57, + 1.37, 1.33, 1.05, 1.08, 1.54, 1.34, 1.46, 1.16, + 0.99, 1.26, 0.96, 1.05, 0.92, 1.45, 1.55, 1.27, + 1.60, 1.07, 1.34, 1.35, 1.18, 1.07, 0.93, 0.99, + 0.90, 0.93, 0.87, 0.96, 1.27, 0.99, 1.15, 0.77, + 0.82, 0.85, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 12 + { 1.60, 1.78, 1.68, 1.93, 1.86, 1.71, 1.97, 1.99, + 1.99, 1.97, 1.93, 1.60, 1.68, 1.78, 1.86, 1.61, + 1.57, 1.79, 1.37, 1.48, 1.59, 1.72, 1.79, 1.92, + 1.90, 1.38, 1.35, 1.60, 1.23, 1.30, 1.47, 1.56, + 1.71, 1.88, 1.79, 1.92, 1.79, 1.79, 1.30, 1.56, + 1.35, 1.37, 1.59, 1.38, 1.60, 1.90, 1.48, 1.72, + 1.57, 1.61, 1.79, 1.21, 1.00, 1.30, 0.89, 0.94, + 0.96, 1.07, 1.14, 1.40, 1.37, 1.14, 0.96, 0.98, + 0.82, 0.88, 0.82, 0.89, 0.83, 0.86, 0.91, 1.02, + 0.93, 1.07, 0.87, 0.94, 1.11, 1.02, 0.93, 0.93, + 0.82, 0.87, 0.80, 0.85, 0.79, 0.80, 0.85, 0.77, + 0.72, 0.74, 0.71, 0.70, 0.70, 0.71, 0.72, 0.77, + 0.74, 0.72, 0.76, 0.73, 0.82, 0.79, 0.76, 0.73, + 0.79, 0.76, 0.93, 0.86, 0.91, 0.83, 0.89, 0.89, + 0.82, 0.72, 0.76, 0.76, 0.89, 0.82, 0.89, 0.82, + 0.89, 0.91, 0.83, 0.96, 1.14, 0.97, 1.40, 1.44, + 1.19, 1.22, 0.99, 0.98, 1.49, 1.44, 1.49, 1.22, + 0.99, 1.23, 0.98, 1.19, 0.97, 1.21, 1.30, 1.00, + 1.37, 0.94, 1.07, 1.14, 0.98, 0.96, 0.86, 0.91, + 0.83, 0.88, 0.82, 0.89, 1.11, 0.94, 1.07, 0.73, + 0.76, 0.79, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 13 + { 1.46, 1.65, 1.60, 1.82, 1.80, 1.71, 1.93, 1.91, + 1.99, 1.94, 1.98, 1.74, 1.76, 1.89, 1.89, 1.42, + 1.34, 1.61, 1.11, 1.22, 1.36, 1.50, 1.61, 1.81, + 1.75, 1.15, 1.17, 1.41, 1.18, 1.19, 1.42, 1.44, + 1.65, 1.83, 1.67, 1.94, 1.81, 1.88, 1.32, 1.58, + 1.45, 1.57, 1.74, 1.53, 1.70, 1.98, 1.69, 1.87, + 1.77, 1.79, 1.92, 1.45, 1.27, 1.55, 0.97, 1.07, + 1.11, 1.34, 1.37, 1.59, 1.60, 1.35, 1.07, 1.18, + 0.86, 0.93, 0.87, 0.96, 0.90, 0.93, 0.99, 1.03, + 0.95, 1.15, 0.90, 0.99, 1.27, 0.98, 0.90, 0.92, + 0.78, 0.83, 0.77, 0.84, 0.79, 0.82, 0.86, 0.73, + 0.71, 0.73, 0.72, 0.70, 0.73, 0.72, 0.76, 0.81, + 0.76, 0.76, 0.82, 0.77, 0.89, 0.85, 0.82, 0.75, + 0.80, 0.80, 0.94, 0.88, 0.94, 0.87, 0.95, 0.96, + 0.88, 0.72, 0.74, 0.76, 0.83, 0.78, 0.84, 0.79, + 0.87, 0.91, 0.83, 0.89, 0.98, 0.92, 1.23, 1.34, + 1.05, 1.16, 0.99, 0.96, 1.46, 1.57, 1.54, 1.33, + 1.05, 1.26, 1.08, 1.37, 1.10, 0.98, 1.03, 0.92, + 1.14, 0.86, 0.95, 0.97, 0.90, 0.89, 0.79, 0.84, + 0.77, 0.82, 0.76, 0.82, 0.97, 0.89, 0.98, 0.71, + 0.72, 0.74, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 14 + { 1.34, 1.51, 1.53, 1.67, 1.72, 1.71, 1.80, 1.77, + 1.91, 1.86, 1.98, 1.86, 1.82, 1.95, 1.89, 1.24, + 1.10, 1.41, 0.95, 0.99, 1.09, 1.25, 1.37, 1.63, + 1.55, 0.96, 0.98, 1.16, 1.05, 1.00, 1.27, 1.23, + 1.50, 1.69, 1.46, 1.86, 1.72, 1.87, 1.24, 1.49, + 1.44, 1.69, 1.80, 1.59, 1.69, 1.97, 1.82, 1.94, + 1.91, 1.92, 1.99, 1.63, 1.50, 1.74, 1.16, 1.33, + 1.38, 1.58, 1.60, 1.77, 1.80, 1.48, 1.21, 1.37, + 0.90, 0.97, 0.93, 1.05, 0.97, 1.04, 1.21, 0.99, + 0.95, 1.14, 0.92, 1.02, 1.34, 0.94, 0.86, 0.90, + 0.74, 0.79, 0.75, 0.81, 0.79, 0.84, 0.86, 0.71, + 0.71, 0.73, 0.76, 0.73, 0.77, 0.74, 0.80, 0.85, + 0.78, 0.81, 0.89, 0.84, 0.97, 0.92, 0.88, 0.79, + 0.85, 0.86, 0.98, 0.92, 1.00, 0.93, 1.06, 1.12, + 0.95, 0.74, 0.74, 0.78, 0.79, 0.76, 0.82, 0.79, + 0.87, 0.93, 0.85, 0.85, 0.94, 0.90, 1.09, 1.27, + 0.99, 1.17, 1.05, 0.96, 1.46, 1.71, 1.62, 1.48, + 1.20, 1.34, 1.28, 1.57, 1.35, 0.90, 0.94, 0.85, + 0.98, 0.81, 0.89, 0.89, 0.83, 0.82, 0.75, 0.78, + 0.73, 0.77, 0.72, 0.76, 0.89, 0.83, 0.91, 0.71, + 0.70, 0.72, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + }, + +// 15 + { 1.26, 1.39, 1.48, 1.51, 1.64, 1.71, 1.60, 1.58, + 1.77, 1.74, 1.91, 1.94, 1.87, 1.97, 1.85, 1.10, + 0.97, 1.22, 0.88, 0.92, 0.95, 1.01, 1.11, 1.39, + 1.32, 0.88, 0.90, 0.97, 0.96, 0.93, 1.05, 0.99, + 1.27, 1.47, 1.20, 1.70, 1.54, 1.76, 1.08, 1.31, + 1.33, 1.70, 1.76, 1.55, 1.57, 1.88, 1.85, 1.91, + 1.97, 1.99, 1.99, 1.70, 1.65, 1.85, 1.41, 1.54, + 1.61, 1.76, 1.80, 1.91, 1.93, 1.52, 1.26, 1.48, + 0.92, 0.99, 0.97, 1.18, 1.09, 1.28, 1.39, 0.94, + 0.93, 1.05, 0.92, 1.01, 1.31, 0.88, 0.81, 0.86, + 0.72, 0.75, 0.74, 0.79, 0.79, 0.86, 0.85, 0.71, + 0.73, 0.75, 0.82, 0.77, 0.83, 0.78, 0.85, 0.88, + 0.81, 0.88, 0.97, 0.90, 1.18, 1.00, 0.93, 0.86, + 0.92, 0.94, 1.14, 0.99, 1.24, 1.03, 1.33, 1.39, + 1.11, 0.79, 0.77, 0.84, 0.79, 0.77, 0.84, 0.83, + 0.90, 0.98, 0.91, 0.85, 0.92, 0.91, 1.02, 1.26, + 1.00, 1.23, 1.19, 0.99, 1.50, 1.84, 1.71, 1.64, + 1.38, 1.46, 1.51, 1.76, 1.59, 0.84, 0.88, 0.80, + 0.94, 0.79, 0.86, 0.82, 0.77, 0.76, 0.74, 0.74, + 0.71, 0.73, 0.70, 0.72, 0.82, 0.77, 0.85, 0.74, + 0.70, 0.73, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 + } + diff --git a/Quake/anorms.h b/Quake/anorms.h new file mode 100644 index 0000000..35a903e --- /dev/null +++ b/Quake/anorms.h @@ -0,0 +1,182 @@ +/* + * anorms.h + * + * Copyright (C) 1996-1997 Id Software, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + { -0.525731, 0.000000, 0.850651 }, + { -0.442863, 0.238856, 0.864188 }, + { -0.295242, 0.000000, 0.955423 }, + { -0.309017, 0.500000, 0.809017 }, + { -0.162460, 0.262866, 0.951056 }, + { 0.000000, 0.000000, 1.000000 }, + { 0.000000, 0.850651, 0.525731 }, + { -0.147621, 0.716567, 0.681718 }, + { 0.147621, 0.716567, 0.681718 }, + { 0.000000, 0.525731, 0.850651 }, + { 0.309017, 0.500000, 0.809017 }, + { 0.525731, 0.000000, 0.850651 }, + { 0.295242, 0.000000, 0.955423 }, + { 0.442863, 0.238856, 0.864188 }, + { 0.162460, 0.262866, 0.951056 }, + { -0.681718, 0.147621, 0.716567 }, + { -0.809017, 0.309017, 0.500000 }, + { -0.587785, 0.425325, 0.688191 }, + { -0.850651, 0.525731, 0.000000 }, + { -0.864188, 0.442863, 0.238856 }, + { -0.716567, 0.681718, 0.147621 }, + { -0.688191, 0.587785, 0.425325 }, + { -0.500000, 0.809017, 0.309017 }, + { -0.238856, 0.864188, 0.442863 }, + { -0.425325, 0.688191, 0.587785 }, + { -0.716567, 0.681718, -0.147621 }, + { -0.500000, 0.809017, -0.309017 }, + { -0.525731, 0.850651, 0.000000 }, + { 0.000000, 0.850651, -0.525731 }, + { -0.238856, 0.864188, -0.442863 }, + { 0.000000, 0.955423, -0.295242 }, + { -0.262866, 0.951056, -0.162460 }, + { 0.000000, 1.000000, 0.000000 }, + { 0.000000, 0.955423, 0.295242 }, + { -0.262866, 0.951056, 0.162460 }, + { 0.238856, 0.864188, 0.442863 }, + { 0.262866, 0.951056, 0.162460 }, + { 0.500000, 0.809017, 0.309017 }, + { 0.238856, 0.864188, -0.442863 }, + { 0.262866, 0.951056, -0.162460 }, + { 0.500000, 0.809017, -0.309017 }, + { 0.850651, 0.525731, 0.000000 }, + { 0.716567, 0.681718, 0.147621 }, + { 0.716567, 0.681718, -0.147621 }, + { 0.525731, 0.850651, 0.000000 }, + { 0.425325, 0.688191, 0.587785 }, + { 0.864188, 0.442863, 0.238856 }, + { 0.688191, 0.587785, 0.425325 }, + { 0.809017, 0.309017, 0.500000 }, + { 0.681718, 0.147621, 0.716567 }, + { 0.587785, 0.425325, 0.688191 }, + { 0.955423, 0.295242, 0.000000 }, + { 1.000000, 0.000000, 0.000000 }, + { 0.951056, 0.162460, 0.262866 }, + { 0.850651, -0.525731, 0.000000 }, + { 0.955423, -0.295242, 0.000000 }, + { 0.864188, -0.442863, 0.238856 }, + { 0.951056, -0.162460, 0.262866 }, + { 0.809017, -0.309017, 0.500000 }, + { 0.681718, -0.147621, 0.716567 }, + { 0.850651, 0.000000, 0.525731 }, + { 0.864188, 0.442863, -0.238856 }, + { 0.809017, 0.309017, -0.500000 }, + { 0.951056, 0.162460, -0.262866 }, + { 0.525731, 0.000000, -0.850651 }, + { 0.681718, 0.147621, -0.716567 }, + { 0.681718, -0.147621, -0.716567 }, + { 0.850651, 0.000000, -0.525731 }, + { 0.809017, -0.309017, -0.500000 }, + { 0.864188, -0.442863, -0.238856 }, + { 0.951056, -0.162460, -0.262866 }, + { 0.147621, 0.716567, -0.681718 }, + { 0.309017, 0.500000, -0.809017 }, + { 0.425325, 0.688191, -0.587785 }, + { 0.442863, 0.238856, -0.864188 }, + { 0.587785, 0.425325, -0.688191 }, + { 0.688191, 0.587785, -0.425325 }, + { -0.147621, 0.716567, -0.681718 }, + { -0.309017, 0.500000, -0.809017 }, + { 0.000000, 0.525731, -0.850651 }, + { -0.525731, 0.000000, -0.850651 }, + { -0.442863, 0.238856, -0.864188 }, + { -0.295242, 0.000000, -0.955423 }, + { -0.162460, 0.262866, -0.951056 }, + { 0.000000, 0.000000, -1.000000 }, + { 0.295242, 0.000000, -0.955423 }, + { 0.162460, 0.262866, -0.951056 }, + { -0.442863, -0.238856, -0.864188 }, + { -0.309017, -0.500000, -0.809017 }, + { -0.162460, -0.262866, -0.951056 }, + { 0.000000, -0.850651, -0.525731 }, + { -0.147621, -0.716567, -0.681718 }, + { 0.147621, -0.716567, -0.681718 }, + { 0.000000, -0.525731, -0.850651 }, + { 0.309017, -0.500000, -0.809017 }, + { 0.442863, -0.238856, -0.864188 }, + { 0.162460, -0.262866, -0.951056 }, + { 0.238856, -0.864188, -0.442863 }, + { 0.500000, -0.809017, -0.309017 }, + { 0.425325, -0.688191, -0.587785 }, + { 0.716567, -0.681718, -0.147621 }, + { 0.688191, -0.587785, -0.425325 }, + { 0.587785, -0.425325, -0.688191 }, + { 0.000000, -0.955423, -0.295242 }, + { 0.000000, -1.000000, 0.000000 }, + { 0.262866, -0.951056, -0.162460 }, + { 0.000000, -0.850651, 0.525731 }, + { 0.000000, -0.955423, 0.295242 }, + { 0.238856, -0.864188, 0.442863 }, + { 0.262866, -0.951056, 0.162460 }, + { 0.500000, -0.809017, 0.309017 }, + { 0.716567, -0.681718, 0.147621 }, + { 0.525731, -0.850651, 0.000000 }, + { -0.238856, -0.864188, -0.442863 }, + { -0.500000, -0.809017, -0.309017 }, + { -0.262866, -0.951056, -0.162460 }, + { -0.850651, -0.525731, 0.000000 }, + { -0.716567, -0.681718, -0.147621 }, + { -0.716567, -0.681718, 0.147621 }, + { -0.525731, -0.850651, 0.000000 }, + { -0.500000, -0.809017, 0.309017 }, + { -0.238856, -0.864188, 0.442863 }, + { -0.262866, -0.951056, 0.162460 }, + { -0.864188, -0.442863, 0.238856 }, + { -0.809017, -0.309017, 0.500000 }, + { -0.688191, -0.587785, 0.425325 }, + { -0.681718, -0.147621, 0.716567 }, + { -0.442863, -0.238856, 0.864188 }, + { -0.587785, -0.425325, 0.688191 }, + { -0.309017, -0.500000, 0.809017 }, + { -0.147621, -0.716567, 0.681718 }, + { -0.425325, -0.688191, 0.587785 }, + { -0.162460, -0.262866, 0.951056 }, + { 0.442863, -0.238856, 0.864188 }, + { 0.162460, -0.262866, 0.951056 }, + { 0.309017, -0.500000, 0.809017 }, + { 0.147621, -0.716567, 0.681718 }, + { 0.000000, -0.525731, 0.850651 }, + { 0.425325, -0.688191, 0.587785 }, + { 0.587785, -0.425325, 0.688191 }, + { 0.688191, -0.587785, 0.425325 }, + { -0.955423, 0.295242, 0.000000 }, + { -0.951056, 0.162460, 0.262866 }, + { -1.000000, 0.000000, 0.000000 }, + { -0.850651, 0.000000, 0.525731 }, + { -0.955423, -0.295242, 0.000000 }, + { -0.951056, -0.162460, 0.262866 }, + { -0.864188, 0.442863, -0.238856 }, + { -0.951056, 0.162460, -0.262866 }, + { -0.809017, 0.309017, -0.500000 }, + { -0.864188, -0.442863, -0.238856 }, + { -0.951056, -0.162460, -0.262866 }, + { -0.809017, -0.309017, -0.500000 }, + { -0.681718, 0.147621, -0.716567 }, + { -0.681718, -0.147621, -0.716567 }, + { -0.850651, 0.000000, -0.525731 }, + { -0.688191, 0.587785, -0.425325 }, + { -0.587785, 0.425325, -0.688191 }, + { -0.425325, 0.688191, -0.587785 }, + { -0.425325, -0.688191, -0.587785 }, + { -0.587785, -0.425325, -0.688191 }, + { -0.688191, -0.587785, -0.425325 }, diff --git a/Quake/arch_def.h b/Quake/arch_def.h new file mode 100644 index 0000000..8dd5b86 --- /dev/null +++ b/Quake/arch_def.h @@ -0,0 +1,178 @@ +/* + * arch_def.h + * platform specific definitions + * - standalone header + * - doesn't and must not include any other headers + * - shouldn't depend on compiler.h, q_stdinc.h, or + * any other headers + * + * Copyright (C) 2007-2016 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ARCHDEFS_H +#define ARCHDEFS_H + + +#if defined(__DJGPP__) || defined(__MSDOS__) || defined(__DOS__) || defined(_MSDOS) + +# if !defined(PLATFORM_DOS) +# define PLATFORM_DOS 1 +# endif + +#elif defined(__OS2__) || defined(__EMX__) + +# if !defined(PLATFORM_OS2) +# define PLATFORM_OS2 1 +# endif + +#elif defined(_WIN32) || defined(__WIN32__) || defined(_WIN64) || defined(__NT__) || defined(_Windows) + +# if !defined(PLATFORM_WINDOWS) +# define PLATFORM_WINDOWS 1 +# endif + +#elif defined(__APPLE__) && defined(__MACH__) /* Mac OS X */ + +# if !defined(PLATFORM_OSX) +# define PLATFORM_OSX 1 +# endif + +#elif defined(macintosh) /* Mac OS classic */ + +# if !defined(PLATFORM_MAC) +# define PLATFORM_MAC 1 +# endif + +#elif defined(__MORPHOS__) || defined(__AROS__) || defined(AMIGAOS) || \ + defined(__amigaos__) || defined(__amigaos4__) ||defined(__amigados__) || \ + defined(AMIGA) || defined(_AMIGA) || defined(__AMIGA__) + +# if !defined(PLATFORM_AMIGA) +# define PLATFORM_AMIGA 1 +# endif + +#elif defined(__riscos__) + +# if !defined(PLATFORM_RISCOS) +# define PLATFORM_RISCOS 1 +# endif + +#elif defined(__HAIKU__) + +# if !defined(PLATFORM_HAIKU) +# define PLATFORM_HAIKU 1 +# endif + +#else /* here goes the unix platforms */ + +#if defined(__unix) || defined(__unix__) || defined(unix) || \ + defined(__linux__) || defined(__linux) || \ + defined(__FreeBSD__) || defined(__DragonFly__) || \ + defined(__FreeBSD_kernel__) /* Debian GNU/kFreeBSD */ || \ + defined(__OpenBSD__) || defined(__NetBSD__) || \ + defined(__hpux) || defined(__hpux__) || defined(_hpux) || \ + defined(__sun) || defined(sun) || \ + defined(__sgi) || defined(sgi) || defined(__sgi__) || \ + defined(__GNU__) /* GNU/Hurd */ || \ + defined(__QNX__) || defined(__QNXNTO__) +# if !defined(PLATFORM_UNIX) +# define PLATFORM_UNIX 1 +# endif +#endif + +#endif /* PLATFORM_xxx */ + + +#if defined (PLATFORM_OSX) /* OS X is unix-based */ +# if !defined(PLATFORM_UNIX) +# define PLATFORM_UNIX 2 +# endif +#endif /* OS X -> PLATFORM_UNIX */ + + +#if defined(__FreeBSD__) || defined(__DragonFly__) || \ + defined(__FreeBSD_kernel__) /* Debian GNU/kFreeBSD */ || \ + defined(__OpenBSD__) || defined(__NetBSD__) +# if !defined(PLATFORM_BSD) +# define PLATFORM_BSD 1 +# endif +#endif /* PLATFORM_BSD (for convenience) */ + + +#if defined(PLATFORM_AMIGA) && !defined(PLATFORM_AMIGAOS3) +# if !defined(__MORPHOS__) && !defined(__AROS__) && !defined(__amigaos4__) +# define PLATFORM_AMIGAOS3 1 +# endif +#endif /* PLATFORM_AMIGAOS3 (for convenience) */ + + +#if defined(_WIN64) +# define PLATFORM_STRING "Win64" +#elif defined(PLATFORM_WINDOWS) +# define PLATFORM_STRING "Windows" +#elif defined(PLATFORM_DOS) +# define PLATFORM_STRING "DOS" +#elif defined(PLATFORM_OS2) +# define PLATFORM_STRING "OS/2" +#elif defined(__linux__) || defined(__linux) +# define PLATFORM_STRING "Linux" +#elif defined(__DragonFly__) +# define PLATFORM_STRING "DragonFly" +#elif defined(__FreeBSD__) +# define PLATFORM_STRING "FreeBSD" +#elif defined(__NetBSD__) +# define PLATFORM_STRING "NetBSD" +#elif defined(__OpenBSD__) +# define PLATFORM_STRING "OpenBSD" +#elif defined(__MORPHOS__) +# define PLATFORM_STRING "MorphOS" +#elif defined(__AROS__) +# define PLATFORM_STRING "AROS" +#elif defined(__amigaos4__) +# define PLATFORM_STRING "AmigaOS4" +#elif defined(PLATFORM_AMIGA) +# define PLATFORM_STRING "AmigaOS" +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_STRING "QNX" +#elif defined(PLATFORM_OSX) +# define PLATFORM_STRING "MacOSX" +#elif defined(PLATFORM_MAC) +# define PLATFORM_STRING "MacOS" +#elif defined(__hpux) || defined(__hpux__) || defined(_hpux) +# define PLATFORM_STRING "HP-UX" +#elif (defined(__sun) || defined(sun)) && (defined(__svr4__) || defined(__SVR4)) +# define PLATFORM_STRING "Solaris" +#elif defined(__sun) || defined(sun) +# define PLATFORM_STRING "SunOS" +#elif defined(__sgi) || defined(sgi) || defined(__sgi__) +# define PLATFORM_STRING "Irix" +#elif defined(PLATFORM_RISCOS) +# define PLATFORM_STRING "RiscOS" +#elif defined(__GNU__) +# define PLATFORM_STRING "GNU/Hurd" +#elif defined(PLATFORM_HAIKU) +# define PLATFORM_STRING "Haiku" +#elif defined(PLATFORM_UNIX) +# define PLATFORM_STRING "Unix" +#else +# define PLATFORM_STRING "Unknown" +# warning "Platform is UNKNOWN." +#endif /* PLATFORM_STRING */ + +#endif /* ARCHDEFS_H */ + diff --git a/Quake/bgmusic.c b/Quake/bgmusic.c new file mode 100644 index 0000000..53d6455 --- /dev/null +++ b/Quake/bgmusic.c @@ -0,0 +1,478 @@ +/* + * Background music handling for Quakespasm (adapted from uHexen2) + * Handles streaming music as raw sound samples and runs the midi driver + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2010-2018 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "quakedef.h" +#include "snd_codec.h" +#include "bgmusic.h" + +#define MUSIC_DIRNAME "music" + +qboolean bgmloop; +cvar_t bgm_extmusic = {"bgm_extmusic", "1", CVAR_ARCHIVE}; + +static qboolean no_extmusic= false; +static float old_volume = -1.0f; + +typedef enum _bgm_player +{ + BGM_NONE = -1, + BGM_MIDIDRV = 1, + BGM_STREAMER +} bgm_player_t; + +typedef struct music_handler_s +{ + unsigned int type; /* 1U << n (see snd_codec.h) */ + bgm_player_t player; /* Enumerated bgm player type */ + int is_available; /* -1 means not present */ + const char *ext; /* Expected file extension */ + const char *dir; /* Where to look for music file */ + struct music_handler_s *next; +} music_handler_t; + +static music_handler_t wanted_handlers[] = +{ + { CODECTYPE_VORBIS,BGM_STREAMER,-1, "ogg", MUSIC_DIRNAME, NULL }, + { CODECTYPE_OPUS, BGM_STREAMER, -1, "opus", MUSIC_DIRNAME, NULL }, + { CODECTYPE_MP3, BGM_STREAMER, -1, "mp3", MUSIC_DIRNAME, NULL }, + { CODECTYPE_FLAC, BGM_STREAMER, -1, "flac", MUSIC_DIRNAME, NULL }, + { CODECTYPE_WAV, BGM_STREAMER, -1, "wav", MUSIC_DIRNAME, NULL }, + { CODECTYPE_MOD, BGM_STREAMER, -1, "it", MUSIC_DIRNAME, NULL }, + { CODECTYPE_MOD, BGM_STREAMER, -1, "s3m", MUSIC_DIRNAME, NULL }, + { CODECTYPE_MOD, BGM_STREAMER, -1, "xm", MUSIC_DIRNAME, NULL }, + { CODECTYPE_MOD, BGM_STREAMER, -1, "mod", MUSIC_DIRNAME, NULL }, + { CODECTYPE_UMX, BGM_STREAMER, -1, "umx", MUSIC_DIRNAME, NULL }, + { CODECTYPE_NONE, BGM_NONE, -1, NULL, NULL, NULL } +}; + +static music_handler_t *music_handlers = NULL; + +#define ANY_CODECTYPE 0xFFFFFFFF +#define CDRIP_TYPES (CODECTYPE_VORBIS | CODECTYPE_MP3 | CODECTYPE_FLAC | CODECTYPE_WAV | CODECTYPE_OPUS) +#define CDRIPTYPE(x) (((x) & CDRIP_TYPES) != 0) + +static snd_stream_t *bgmstream = NULL; + +static void BGM_Play_f (void) +{ + if (Cmd_Argc() == 2) { + BGM_Play (Cmd_Argv(1)); + } + else { + Con_Printf ("music <musicfile>\n"); + } +} + +static void BGM_Pause_f (void) +{ + BGM_Pause (); +} + +static void BGM_Resume_f (void) +{ + BGM_Resume (); +} + +static void BGM_Loop_f (void) +{ + if (Cmd_Argc() == 2) { + if (q_strcasecmp(Cmd_Argv(1), "0") == 0 || + q_strcasecmp(Cmd_Argv(1),"off") == 0) + bgmloop = false; + else if (q_strcasecmp(Cmd_Argv(1), "1") == 0 || + q_strcasecmp(Cmd_Argv(1),"on") == 0) + bgmloop = true; + else if (q_strcasecmp(Cmd_Argv(1),"toggle") == 0) + bgmloop = !bgmloop; + + if (bgmstream) bgmstream->loop = bgmloop; + } + + if (bgmloop) + Con_Printf("Music will be looped\n"); + else + Con_Printf("Music will not be looped\n"); +} + +static void BGM_Stop_f (void) +{ + BGM_Stop(); +} + +static void BGM_Jump_f (void) +{ + if (Cmd_Argc() != 2) { + Con_Printf ("music_jump <ordernum>\n"); + } + else if (bgmstream) { + S_CodecJumpToOrder(bgmstream, atoi(Cmd_Argv(1))); + } +} + +qboolean BGM_Init (void) +{ + music_handler_t *handlers = NULL; + int i; + + Cvar_RegisterVariable(&bgm_extmusic); + Cmd_AddCommand("music", BGM_Play_f); + Cmd_AddCommand("music_pause", BGM_Pause_f); + Cmd_AddCommand("music_resume", BGM_Resume_f); + Cmd_AddCommand("music_loop", BGM_Loop_f); + Cmd_AddCommand("music_stop", BGM_Stop_f); + Cmd_AddCommand("music_jump", BGM_Jump_f); + + if (COM_CheckParm("-noextmusic") != 0) + no_extmusic = true; + + bgmloop = true; + + for (i = 0; wanted_handlers[i].type != CODECTYPE_NONE; i++) + { + switch (wanted_handlers[i].player) + { + case BGM_MIDIDRV: + /* not supported in quake */ + break; + case BGM_STREAMER: + wanted_handlers[i].is_available = + S_CodecIsAvailable(wanted_handlers[i].type); + break; + case BGM_NONE: + default: + break; + } + if (wanted_handlers[i].is_available != -1) + { + if (handlers) + { + handlers->next = &wanted_handlers[i]; + handlers = handlers->next; + } + else + { + music_handlers = &wanted_handlers[i]; + handlers = music_handlers; + } + } + } + + return true; +} + +void BGM_Shutdown (void) +{ + BGM_Stop(); +/* sever our connections to + * midi_drv and snd_codec */ + music_handlers = NULL; +} + +static void BGM_Play_noext (const char *filename, unsigned int allowed_types) +{ + char tmp[MAX_QPATH]; + music_handler_t *handler; + + handler = music_handlers; + while (handler) + { + if (! (handler->type & allowed_types)) + { + handler = handler->next; + continue; + } + if (!handler->is_available) + { + handler = handler->next; + continue; + } + q_snprintf(tmp, sizeof(tmp), "%s/%s.%s", + handler->dir, filename, handler->ext); + switch (handler->player) + { + case BGM_MIDIDRV: + /* not supported in quake */ + break; + case BGM_STREAMER: + bgmstream = S_CodecOpenStreamType(tmp, handler->type, bgmloop); + if (bgmstream) + return; /* success */ + break; + case BGM_NONE: + default: + break; + } + handler = handler->next; + } + + Con_Printf("Couldn't handle music file %s\n", filename); +} + +void BGM_Play (const char *filename) +{ + char tmp[MAX_QPATH]; + const char *ext; + music_handler_t *handler; + + BGM_Stop(); + + if (music_handlers == NULL) + return; + + if (!filename || !*filename) + { + Con_DPrintf("null music file name\n"); + return; + } + + ext = COM_FileGetExtension(filename); + if (! *ext) /* try all things */ + { + BGM_Play_noext(filename, ANY_CODECTYPE); + return; + } + + handler = music_handlers; + while (handler) + { + if (handler->is_available && + !q_strcasecmp(ext, handler->ext)) + break; + handler = handler->next; + } + if (!handler) + { + Con_Printf("Unhandled extension for %s\n", filename); + return; + } + q_snprintf(tmp, sizeof(tmp), "%s/%s", handler->dir, filename); + switch (handler->player) + { + case BGM_MIDIDRV: + /* not supported in quake */ + break; + case BGM_STREAMER: + bgmstream = S_CodecOpenStreamType(tmp, handler->type, bgmloop); + if (bgmstream) + return; /* success */ + break; + case BGM_NONE: + default: + break; + } + + Con_Printf("Couldn't handle music file %s\n", filename); +} + +void BGM_PlayCDtrack (byte track, qboolean looping) +{ +/* instead of searching by the order of music_handlers, do so by + * the order of searchpath priority: the file from the searchpath + * with the highest path_id is most likely from our own gamedir + * itself. This way, if a mod has track02 as a *.mp3 file, which + * is below *.ogg in the music_handler order, the mp3 will still + * have priority over track02.ogg from, say, id1. + */ + char tmp[MAX_QPATH]; + const char *ext; + unsigned int path_id, prev_id, type; + music_handler_t *handler; + + BGM_Stop(); + if (CDAudio_Play(track, looping) == 0) + return; /* success */ + + if (music_handlers == NULL) + return; + + if (no_extmusic || !bgm_extmusic.value) + return; + + prev_id = 0; + type = 0; + ext = NULL; + handler = music_handlers; + while (handler) + { + if (! handler->is_available) + goto _next; + // if (! CDRIPTYPE(handler->type)) + // goto _next; + q_snprintf(tmp, sizeof(tmp), "%s/track%02d.%s", + MUSIC_DIRNAME, (int)track, handler->ext); + if (! COM_FileExists(tmp, &path_id)) + goto _next; + if (path_id > prev_id) + { + prev_id = path_id; + type = handler->type; + ext = handler->ext; + } + _next: + handler = handler->next; + } + if (ext == NULL) + Con_Printf("Couldn't find a cdrip for track %d\n", (int)track); + else + { + q_snprintf(tmp, sizeof(tmp), "%s/track%02d.%s", + MUSIC_DIRNAME, (int)track, ext); + bgmstream = S_CodecOpenStreamType(tmp, type, bgmloop); + if (! bgmstream) + Con_Printf("Couldn't handle music file %s\n", tmp); + } +} + +void BGM_Stop (void) +{ + if (bgmstream) + { + bgmstream->status = STREAM_NONE; + S_CodecCloseStream(bgmstream); + bgmstream = NULL; + s_rawend = 0; + } +} + +void BGM_Pause (void) +{ + if (bgmstream) + { + if (bgmstream->status == STREAM_PLAY) + bgmstream->status = STREAM_PAUSE; + } +} + +void BGM_Resume (void) +{ + if (bgmstream) + { + if (bgmstream->status == STREAM_PAUSE) + bgmstream->status = STREAM_PLAY; + } +} + +static void BGM_UpdateStream (void) +{ + qboolean did_rewind = false; + int res; /* Number of bytes read. */ + int bufferSamples; + int fileSamples; + int fileBytes; + byte raw[16384]; + + if (bgmstream->status != STREAM_PLAY) + return; + + /* don't bother playing anything if musicvolume is 0 */ + if (bgmvolume.value <= 0) + return; + + /* see how many samples should be copied into the raw buffer */ + if (s_rawend < paintedtime) + s_rawend = paintedtime; + + while (s_rawend < paintedtime + MAX_RAW_SAMPLES) + { + bufferSamples = MAX_RAW_SAMPLES - (s_rawend - paintedtime); + + /* decide how much data needs to be read from the file */ + fileSamples = bufferSamples * bgmstream->info.rate / shm->speed; + if (!fileSamples) + return; + + /* our max buffer size */ + fileBytes = fileSamples * (bgmstream->info.width * bgmstream->info.channels); + if (fileBytes > (int) sizeof(raw)) + { + fileBytes = (int) sizeof(raw); + fileSamples = fileBytes / + (bgmstream->info.width * bgmstream->info.channels); + } + + /* Read */ + res = S_CodecReadStream(bgmstream, fileBytes, raw); + if (res < fileBytes) + { + fileBytes = res; + fileSamples = res / (bgmstream->info.width * bgmstream->info.channels); + } + + if (res > 0) /* data: add to raw buffer */ + { + S_RawSamples(fileSamples, bgmstream->info.rate, + bgmstream->info.width, + bgmstream->info.channels, + raw, bgmvolume.value); + did_rewind = false; + } + else if (res == 0) /* EOF */ + { + if (bgmloop) + { + if (did_rewind) + { + Con_Printf("Stream keeps returning EOF.\n"); + BGM_Stop(); + return; + } + + res = S_CodecRewindStream(bgmstream); + if (res != 0) + { + Con_Printf("Stream seek error (%i), stopping.\n", res); + BGM_Stop(); + return; + } + did_rewind = true; + } + else + { + BGM_Stop(); + return; + } + } + else /* res < 0: some read error */ + { + Con_Printf("Stream read error (%i), stopping.\n", res); + BGM_Stop(); + return; + } + } +} + +void BGM_Update (void) +{ + if (old_volume != bgmvolume.value) + { + if (bgmvolume.value < 0) + Cvar_SetQuick (&bgmvolume, "0"); + else if (bgmvolume.value > 1) + Cvar_SetQuick (&bgmvolume, "1"); + old_volume = bgmvolume.value; + } + if (bgmstream) + BGM_UpdateStream (); +} + diff --git a/Quake/bgmusic.h b/Quake/bgmusic.h new file mode 100644 index 0000000..ec30820 --- /dev/null +++ b/Quake/bgmusic.h @@ -0,0 +1,43 @@ +/* + * Background music handling for Quakespasm (adapted from uHexen2) + * Handles streaming music as raw sound samples and runs the midi driver + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2010-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef _BGMUSIC_H_ +#define _BGMUSIC_H_ + +extern qboolean bgmloop; +extern cvar_t bgm_extmusic; + +qboolean BGM_Init (void); +void BGM_Shutdown (void); + +void BGM_Play (const char *filename); +void BGM_Stop (void); +void BGM_Update (void); +void BGM_Pause (void); +void BGM_Resume (void); + +void BGM_PlayCDtrack (byte track, qboolean looping); + +#endif /* _BGMUSIC_H_ */ + diff --git a/Quake/bspfile.h b/Quake/bspfile.h new file mode 100644 index 0000000..f13c62a --- /dev/null +++ b/Quake/bspfile.h @@ -0,0 +1,425 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __BSPFILE_H +#define __BSPFILE_H + +// upper design bounds + +#define MAX_MAP_HULLS 4 + +#define MAX_MAP_MODELS 256 +#define MAX_MAP_BRUSHES 4096 +#define MAX_MAP_ENTITIES 1024 +#define MAX_MAP_ENTSTRING 65536 + +#define MAX_MAP_PLANES 32767 +#define MAX_MAP_NODES 32767 // because negative shorts are contents +#define MAX_MAP_CLIPNODES 32767 +//#define MAX_MAP_LEAFS 80000 //johnfitz -- was 8192 +#define MAX_MAP_VERTS 65535 +#define MAX_MAP_FACES 65535 +#define MAX_MAP_MARKSURFACES 65535 +#define MAX_MAP_TEXINFO 4096 +#define MAX_MAP_EDGES 256000 +#define MAX_MAP_SURFEDGES 512000 +#define MAX_MAP_TEXTURES 512 +#define MAX_MAP_MIPTEX 0x200000 +#define MAX_MAP_LIGHTING 0x100000 +#define MAX_MAP_VISIBILITY 0x100000 + +#define MAX_MAP_PORTALS 65536 + +// key / value pair sizes + +#define MAX_KEY 32 +#define MAX_VALUE 1024 + +//============================================================================= + + +#define BSPVERSION 29 + +#ifdef BSP29_VALVE +#define BSPVERSION_VALVE 30 +#endif + +/* RMQ support (2PSB). 32bits instead of shorts for all but bbox sizes (which + * still use shorts) */ +#define BSP2VERSION_2PSB (('B' << 24) | ('S' << 16) | ('P' << 8) | '2') + +/* BSP2 support. 32bits instead of shorts for everything (bboxes use floats) */ +#define BSP2VERSION_BSP2 (('B' << 0) | ('S' << 8) | ('P' << 16) | ('2'<<24)) + +// Quake64 +#define BSPVERSION_QUAKE64 (('Q' << 24) | ('6' << 16) | ('4' << 8) | ' ') + +#define TOOLVERSION 2 + +typedef struct +{ + int fileofs, filelen; +} lump_t; + +#define LUMP_ENTITIES 0 +#define LUMP_PLANES 1 +#define LUMP_TEXTURES 2 +#define LUMP_VERTEXES 3 +#define LUMP_VISIBILITY 4 +#define LUMP_NODES 5 +#define LUMP_TEXINFO 6 +#define LUMP_FACES 7 +#define LUMP_LIGHTING 8 +#define LUMP_CLIPNODES 9 +#define LUMP_LEAFS 10 +#define LUMP_MARKSURFACES 11 +#define LUMP_EDGES 12 +#define LUMP_SURFEDGES 13 +#define LUMP_MODELS 14 + +#define HEADER_LUMPS 15 + +typedef struct +{ + float mins[3], maxs[3]; + float origin[3]; + int headnode[MAX_MAP_HULLS]; + int visleafs; // not including the solid leaf 0 + int firstface, numfaces; +} dmodel_t; + +typedef struct +{ + int version; + lump_t lumps[HEADER_LUMPS]; +} dheader_t; + +typedef struct +{ + int nummiptex; + int dataofs[4]; // [nummiptex] +} dmiptexlump_t; + +#define MIPLEVELS 4 +typedef struct miptex_s +{ + char name[16]; + unsigned width, height; + unsigned offsets[MIPLEVELS]; // four mip maps stored +} miptex_t; + +// Quake64 +typedef struct miptex64_s +{ + char name[16]; + unsigned width, height; + unsigned shift; + unsigned offsets[MIPLEVELS]; // four mip maps stored +} miptex64_t; + +typedef struct +{ + float point[3]; +} dvertex_t; + + +// 0-2 are axial planes +#define PLANE_X 0 +#define PLANE_Y 1 +#define PLANE_Z 2 + +// 3-5 are non-axial planes snapped to the nearest +#define PLANE_ANYX 3 +#define PLANE_ANYY 4 +#define PLANE_ANYZ 5 + +typedef struct +{ + float normal[3]; + float dist; + int type; // PLANE_X - PLANE_ANYZ ?remove? trivial to regenerate +} dplane_t; + + +#define CONTENTS_EMPTY -1 +#define CONTENTS_SOLID -2 +#define CONTENTS_WATER -3 +#define CONTENTS_SLIME -4 +#define CONTENTS_LAVA -5 +#define CONTENTS_SKY -6 +#define CONTENTS_ORIGIN -7 // removed at csg time +#define CONTENTS_CLIP -8 // changed to contents_solid + +#define CONTENTS_CURRENT_0 -9 +#define CONTENTS_CURRENT_90 -10 +#define CONTENTS_CURRENT_180 -11 +#define CONTENTS_CURRENT_270 -12 +#define CONTENTS_CURRENT_UP -13 +#define CONTENTS_CURRENT_DOWN -14 + + +// !!! if this is changed, it must be changed in asm_i386.h too !!! +typedef struct +{ + int planenum; + short children[2]; // negative numbers are -(leafs+1), not nodes + short mins[3]; // for sphere culling + short maxs[3]; + unsigned short firstface; + unsigned short numfaces; // counting both sides +} dsnode_t; + +typedef struct +{ + int planenum; + int children[2]; // negative numbers are -(leafs+1), not nodes + short mins[3]; // for sphere culling + short maxs[3]; + unsigned int firstface; + unsigned int numfaces; // counting both sides +} dl1node_t; + +typedef struct +{ + int planenum; + int children[2]; // negative numbers are -(leafs+1), not nodes + float mins[3]; // for sphere culling + float maxs[3]; + unsigned int firstface; + unsigned int numfaces; // counting both sides +} dl2node_t; + +typedef struct +{ + int planenum; + short children[2]; // negative numbers are contents +} dsclipnode_t; + +typedef struct +{ + int planenum; + int children[2]; // negative numbers are contents +} dlclipnode_t; + + +typedef struct texinfo_s +{ + float vecs[2][4]; // [s/t][xyz offset] + int miptex; + int flags; +} texinfo_t; +#define TEX_SPECIAL 1 // sky or slime, no lightmap or 256 subdivision +#define TEX_MISSING 2 // johnfitz -- this texinfo does not have a texture + +// note that edge 0 is never used, because negative edge nums are used for +// counterclockwise use of the edge in a face +typedef struct +{ + unsigned short v[2]; // vertex numbers +} dsedge_t; + +typedef struct +{ + unsigned int v[2]; // vertex numbers +} dledge_t; + +#define MAXLIGHTMAPS 4 +typedef struct +{ + short planenum; + short side; + + int firstedge; // we must support > 64k edges + short numedges; + short texinfo; + +// lighting info + byte styles[MAXLIGHTMAPS]; + int lightofs; // start of [numstyles*surfsize] samples +} dsface_t; + +typedef struct +{ + int planenum; + int side; + + int firstedge; // we must support > 64k edges + int numedges; + int texinfo; + +// lighting info + byte styles[MAXLIGHTMAPS]; + int lightofs; // start of [numstyles*surfsize] samples +} dlface_t; + +#define AMBIENT_WATER 0 +#define AMBIENT_SKY 1 +#define AMBIENT_SLIME 2 +#define AMBIENT_LAVA 3 + +#define NUM_AMBIENTS 4 // automatic ambient sounds + +// leaf 0 is the generic CONTENTS_SOLID leaf, used for all solid areas +// all other leafs need visibility info +typedef struct +{ + int contents; + int visofs; // -1 = no visibility info + + short mins[3]; // for frustum culling + short maxs[3]; + + unsigned short firstmarksurface; + unsigned short nummarksurfaces; + + byte ambient_level[NUM_AMBIENTS]; +} dsleaf_t; + +typedef struct +{ + int contents; + int visofs; // -1 = no visibility info + + short mins[3]; // for frustum culling + short maxs[3]; + + unsigned int firstmarksurface; + unsigned int nummarksurfaces; + + byte ambient_level[NUM_AMBIENTS]; +} dl1leaf_t; + +typedef struct +{ + int contents; + int visofs; // -1 = no visibility info + + float mins[3]; // for frustum culling + float maxs[3]; + + unsigned int firstmarksurface; + unsigned int nummarksurfaces; + + byte ambient_level[NUM_AMBIENTS]; +} dl2leaf_t; + + +//============================================================================ + +#ifndef QUAKE_GAME + +#define ANGLE_UP -1 +#define ANGLE_DOWN -2 + + +// the utilities get to be lazy and just use large static arrays + +extern int nummodels; +extern dmodel_t dmodels[MAX_MAP_MODELS]; + +extern int visdatasize; +extern byte dvisdata[MAX_MAP_VISIBILITY]; + +extern int lightdatasize; +extern byte dlightdata[MAX_MAP_LIGHTING]; + +extern int texdatasize; +extern byte dtexdata[MAX_MAP_MIPTEX]; // (dmiptexlump_t) + +extern int entdatasize; +extern char dentdata[MAX_MAP_ENTSTRING]; + +//extern int numleafs; +//extern dleaf_t dleafs[MAX_MAP_LEAFS]; + +extern int numplanes; +extern dplane_t dplanes[MAX_MAP_PLANES]; + +extern int numvertexes; +extern dvertex_t dvertexes[MAX_MAP_VERTS]; + +extern int numnodes; +extern dnode_t dnodes[MAX_MAP_NODES]; + +extern int numtexinfo; +extern texinfo_t texinfo[MAX_MAP_TEXINFO]; + +extern int numfaces; +extern dface_t dfaces[MAX_MAP_FACES]; + +extern int numclipnodes; +extern dclipnode_t dclipnodes[MAX_MAP_CLIPNODES]; + +extern int numedges; +extern dedge_t dedges[MAX_MAP_EDGES]; + +extern int nummarksurfaces; +extern unsigned short dmarksurfaces[MAX_MAP_MARKSURFACES]; + +extern int numsurfedges; +extern int dsurfedges[MAX_MAP_SURFEDGES]; + + +void DecompressVis (byte *in, byte *decompressed); +int CompressVis (byte *vis, byte *dest); + +void LoadBSPFile (char *filename); +void WriteBSPFile (char *filename); +void PrintBSPFileSizes (void); + +//=============== + + +typedef struct epair_s +{ + struct epair_s *next; + char *key; + char *value; +} epair_t; + +typedef struct +{ + vec3_t origin; + int firstbrush; + int numbrushes; + epair_t *epairs; +} entity_t; + +extern int num_entities; +extern entity_t entities[MAX_MAP_ENTITIES]; + +void ParseEntities (void); +void UnparseEntities (void); + +void SetKeyValue (entity_t *ent, char *key, char *value); +char *ValueForKey (entity_t *ent, char *key); +// will return "" if not present + +vec_t FloatForKey (entity_t *ent, char *key); +void GetVectorForKey (entity_t *ent, char *key, vec3_t vec); + +epair_t *ParseEpair (void); + +#endif /* QUAKE_GAME */ + +#endif /* __BSPFILE_H */ + diff --git a/Quake/build_cross_haiku32-sdl2.sh b/Quake/build_cross_haiku32-sdl2.sh new file mode 100755 index 0000000..d6c5e55 --- /dev/null +++ b/Quake/build_cross_haiku32-sdl2.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Change this script to meet your needs and/or environment. + +TARGET=i586-pc-haiku + +MAKE_CMD=make + +CC="$TARGET-gcc" +AS="$TARGET-as" +RANLIB="$TARGET-ranlib" +AR="$TARGET-ar" +STRIP="$TARGET-strip" +LDFLAGS=-L/usr/lib32 # hack +export CC AS AR RANLIB STRIP LDFLAGS + +exec $MAKE_CMD HOST_OS=haiku USE_SDL2=1 LDFLAGS=$LDFLAGS CC=$CC AS=$AS RANLIB=$RANLIB AR=$AR STRIP=$STRIP -f Makefile $* diff --git a/Quake/build_cross_haiku64-sdl2.sh b/Quake/build_cross_haiku64-sdl2.sh new file mode 100755 index 0000000..8090528 --- /dev/null +++ b/Quake/build_cross_haiku64-sdl2.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# Change this script to meet your needs and/or environment. + +TARGET=x86_64-unknown-haiku + +MAKE_CMD=make + +CC="$TARGET-gcc" +AS="$TARGET-as" +RANLIB="$TARGET-ranlib" +AR="$TARGET-ar" +STRIP="$TARGET-strip" +export CC AS AR RANLIB STRIP + +exec $MAKE_CMD HOST_OS=haiku USE_SDL2=1 CC=$CC AS=$AS RANLIB=$RANLIB AR=$AR STRIP=$STRIP -f Makefile $* diff --git a/Quake/build_cross_osx-sdl2.sh b/Quake/build_cross_osx-sdl2.sh new file mode 100755 index 0000000..5d791c7 --- /dev/null +++ b/Quake/build_cross_osx-sdl2.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +rm -f quakespasm.x86 quakespasm.x86_64 QuakeSpasm +make clean + +OLDPATH=$PATH +MAKE_CMD=make + +OSXBUILD=1 +export OSXBUILD +STRIP=/bin/true +export STRIP + +# x86 +PATH=/opt/cross_osx-x86.5/usr/bin:$OLDPATH +CC=i686-apple-darwin9-gcc +AS=i686-apple-darwin9-as +AR=i686-apple-darwin9-ar +RANLIB=i686-apple-darwin9-ranlib +LIPO=i686-apple-darwin9-lipo +export PATH CC AS AR RANLIB LIPO +$MAKE_CMD MACH_TYPE=x86 USE_SDL2=1 -f Makefile.darwin $* || exit 1 +i686-apple-darwin9-strip -S quakespasm || exit 1 +mv quakespasm quakespasm.x86 || exit 1 +$MAKE_CMD clean + +# x86_64 +PATH=/opt/cross_osx-x86_64/usr/bin:$OLDPATH +CC=x86_64-apple-darwin9-gcc +AS=x86_64-apple-darwin9-as +AR=x86_64-apple-darwin9-ar +RANLIB=x86_64-apple-darwin9-ranlib +LIPO=x86_64-apple-darwin9-lipo +export PATH CC AS AR RANLIB LIPO +$MAKE_CMD MACH_TYPE=x86_64 USE_SDL2=1 -f Makefile.darwin $* || exit 1 +x86_64-apple-darwin9-strip -S quakespasm || exit 1 +mv quakespasm quakespasm.x86_64 || exit 1 +$MAKE_CMD clean + +$LIPO -create -o QuakeSpasm quakespasm.x86 quakespasm.x86_64 || exit 1 + diff --git a/Quake/build_cross_osx.sh b/Quake/build_cross_osx.sh new file mode 100755 index 0000000..85e9bd9 --- /dev/null +++ b/Quake/build_cross_osx.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +rm -f quakespasm.ppc \ + quakespasm.x86 \ + quakespasm.x86_64 \ + QuakeSpasm +make clean + +OLDPATH=$PATH +MAKE_CMD=make + +OSXBUILD=1 +export OSXBUILD +STRIP=/bin/true +export STRIP + +# ppc +PATH=/opt/cross_osx-ppc/bin:$OLDPATH +CC=powerpc-apple-darwin9-gcc +AS=powerpc-apple-darwin9-as +AR=powerpc-apple-darwin9-ar +RANLIB=powerpc-apple-darwin9-ranlib +LIPO=powerpc-apple-darwin9-lipo +export PATH CC AS AR RANLIB LIPO +$MAKE_CMD MACH_TYPE=ppc -f Makefile.darwin $* || exit 1 +powerpc-apple-darwin9-strip -S quakespasm || exit 1 +mv quakespasm quakespasm.ppc || exit 1 +$MAKE_CMD clean + +# x86 +PATH=/opt/cross_osx-x86/bin:$OLDPATH +CC=i686-apple-darwin9-gcc +AS=i686-apple-darwin9-as +AR=i686-apple-darwin9-ar +RANLIB=i686-apple-darwin9-ranlib +LIPO=i686-apple-darwin9-lipo +export PATH CC AS AR RANLIB LIPO +$MAKE_CMD MACH_TYPE=x86 -f Makefile.darwin $* || exit 1 +i686-apple-darwin9-strip -S quakespasm || exit 1 +mv quakespasm quakespasm.x86 || exit 1 +$MAKE_CMD clean + +# x86_64 +PATH=/opt/cross_osx-x86_64/usr/bin:$OLDPATH +CC=x86_64-apple-darwin9-gcc +AS=x86_64-apple-darwin9-as +AR=x86_64-apple-darwin9-ar +RANLIB=x86_64-apple-darwin9-ranlib +LIPO=x86_64-apple-darwin9-lipo +export PATH CC AS AR RANLIB LIPO +$MAKE_CMD MACH_TYPE=x86_64 -f Makefile.darwin $* || exit 1 +x86_64-apple-darwin9-strip -S quakespasm || exit 1 +mv quakespasm quakespasm.x86_64 || exit 1 +$MAKE_CMD clean + +$LIPO -create -o QuakeSpasm quakespasm.ppc quakespasm.x86 quakespasm.x86_64 || exit 1 + diff --git a/Quake/build_cross_win32-sdl2.sh b/Quake/build_cross_win32-sdl2.sh new file mode 100755 index 0000000..bc698d8 --- /dev/null +++ b/Quake/build_cross_win32-sdl2.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Change this script to meet your needs and/or environment. + +TARGET=i686-w64-mingw32 +PREFIX=/opt/cross_win32 + +PATH="$PREFIX/bin:$PATH" +export PATH + +MAKE_CMD=make + +CC="$TARGET-gcc" +AS="$TARGET-as" +RANLIB="$TARGET-ranlib" +AR="$TARGET-ar" +WINDRES="$TARGET-windres" +STRIP="$TARGET-strip" +export PATH CC AS AR RANLIB WINDRES STRIP + +exec $MAKE_CMD USE_SDL2=1 WINSOCK2=1 CC=$CC AS=$AS RANLIB=$RANLIB AR=$AR WINDRES=$WINDRES STRIP=$STRIP -f Makefile.w32 $* diff --git a/Quake/build_cross_win32.sh b/Quake/build_cross_win32.sh new file mode 100755 index 0000000..5995796 --- /dev/null +++ b/Quake/build_cross_win32.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Change this script to meet your needs and/or environment. + +#TARGET=i686-w64-mingw32 +TARGET=i686-pc-mingw32 +#PREFIX=/opt/cross_win32 +PREFIX=/usr/local/cross-win32 + +PATH="$PREFIX/bin:$PATH" +export PATH + +MAKE_CMD=make + +CC="$TARGET-gcc" +AS="$TARGET-as" +RANLIB="$TARGET-ranlib" +AR="$TARGET-ar" +WINDRES="$TARGET-windres" +STRIP="$TARGET-strip" +export PATH CC AS AR RANLIB WINDRES STRIP + +exec $MAKE_CMD CC=$CC AS=$AS RANLIB=$RANLIB AR=$AR WINDRES=$WINDRES STRIP=$STRIP -f Makefile.w32 $* diff --git a/Quake/build_cross_win64-sdl2.sh b/Quake/build_cross_win64-sdl2.sh new file mode 100755 index 0000000..312c7ba --- /dev/null +++ b/Quake/build_cross_win64-sdl2.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Change this script to meet your needs and/or environment. + +TARGET=x86_64-w64-mingw32 +PREFIX=/opt/cross_win64 + +PATH="$PREFIX/bin:$PATH" +export PATH + +MAKE_CMD=make + +CC="$TARGET-gcc" +AS="$TARGET-as" +RANLIB="$TARGET-ranlib" +AR="$TARGET-ar" +WINDRES="$TARGET-windres" +STRIP="$TARGET-strip" +export PATH CC AS AR RANLIB WINDRES STRIP + +exec $MAKE_CMD USE_SDL2=1 CC=$CC AS=$AS RANLIB=$RANLIB AR=$AR WINDRES=$WINDRES STRIP=$STRIP -f Makefile.w64 $* diff --git a/Quake/build_cross_win64.sh b/Quake/build_cross_win64.sh new file mode 100755 index 0000000..877077a --- /dev/null +++ b/Quake/build_cross_win64.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Change this script to meet your needs and/or environment. + +TARGET=x86_64-w64-mingw32 +PREFIX=/opt/cross_win64 + +PATH="$PREFIX/bin:$PATH" +export PATH + +MAKE_CMD=make + +CC="$TARGET-gcc" +AS="$TARGET-as" +RANLIB="$TARGET-ranlib" +AR="$TARGET-ar" +WINDRES="$TARGET-windres" +STRIP="$TARGET-strip" +export PATH CC AS AR RANLIB WINDRES STRIP + +exec $MAKE_CMD CC=$CC AS=$AS RANLIB=$RANLIB AR=$AR WINDRES=$WINDRES STRIP=$STRIP -f Makefile.w64 $* diff --git a/Quake/cd_null.c b/Quake/cd_null.c new file mode 100644 index 0000000..87afc7b --- /dev/null +++ b/Quake/cd_null.c @@ -0,0 +1,53 @@ +/* + * cd_null.c + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#include "quakedef.h" + +int CDAudio_Play(byte track, qboolean looping) +{ + return -1; +} + +void CDAudio_Stop(void) +{ +} + +void CDAudio_Pause(void) +{ +} + +void CDAudio_Resume(void) +{ +} + +void CDAudio_Update(void) +{ +} + +int CDAudio_Init(void) +{ + Con_Printf("CDAudio disabled at compile time\n"); + return -1; +} + +void CDAudio_Shutdown(void) +{ +} + diff --git a/Quake/cd_sdl.c b/Quake/cd_sdl.c new file mode 100644 index 0000000..69bd3fa --- /dev/null +++ b/Quake/cd_sdl.c @@ -0,0 +1,593 @@ +/* + * cd_sdl.c + * + * Copyright (C) 1996-1997 Id Software, Inc. + * Taken from the Twilight project with modifications + * to make it work with Hexen II: Hammer of Thyrion. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + +#ifndef SDL_INIT_CDROM + +/* SDL dropped support for + cd audio since v1.3.0 */ +#pragma message("Warning: SDL CDAudio support disabled") +#include "cd_null.c" + +#else /* SDL_INIT_CDROM */ + +#include "quakedef.h" + +static qboolean cdValid = false; +static qboolean playing = false; +static qboolean wasPlaying = false; +static qboolean enabled = true; +static qboolean playLooping = false; +static byte remap[100]; +static byte playTrack; +static double endOfTrack = -1.0, pausetime = -1.0; +static SDL_CD *cd_handle; +static int cd_dev = -1; +static float old_cdvolume; +static qboolean hw_vol_works = true; + + +static void CDAudio_Eject(void) +{ + if (!cd_handle || !enabled) + return; + +#ifdef __linux__ + SDL_CDStop(cd_handle); /* see CDAudio_Stop() */ +#endif + if (SDL_CDEject(cd_handle) < 0) + Con_Printf ("Unable to eject CD-ROM: %s\n", SDL_GetError ()); +} + +static int CDAudio_GetAudioDiskInfo(void) +{ + cdValid = false; + + if (!cd_handle) + return -1; + + if ( ! CD_INDRIVE(SDL_CDStatus(cd_handle)) ) + return -1; + + cdValid = true; + + return 0; +} + +int CDAudio_Play(byte track, qboolean looping) +{ + int len_m, len_s, len_f; + + if (!cd_handle || !enabled) + return -1; + + if (!cdValid) + { + CDAudio_GetAudioDiskInfo(); + if (!cdValid) + return -1; + } + + track = remap[track]; + + if (track < 1 || track > cd_handle->numtracks) + { + Con_Printf ("CDAudio_Play: Bad track number %d.\n", track); + return -1; + } + + if (cd_handle->track[track-1].type == SDL_DATA_TRACK) + { + Con_Printf ("CDAudio_Play: track %d is not audio\n", track); + return -1; + } + + if (playing) + { + if (playTrack == track) + return 0; + CDAudio_Stop(); + } + + if (SDL_CDPlay(cd_handle, cd_handle->track[track-1].offset, cd_handle->track[track-1].length) < 0) + { + Con_Printf ("CDAudio_Play: Unable to play track %d: %s\n", track, SDL_GetError ()); + return -1; + } + + playLooping = looping; + playTrack = track; + playing = true; + + FRAMES_TO_MSF(cd_handle->track[track-1].length, &len_m, &len_s, &len_f); + endOfTrack = realtime + ((double)len_m * 60.0) + (double)len_s + (double)len_f / (double)CD_FPS; + + /* Add the pregap for the next track. This means that disc-at-once CDs + * won't loop smoothly, but they wouldn't anyway so it doesn't really + * matter. SDL doesn't give us pregap information anyway, so you'll + * just have to live with it. */ + endOfTrack += 2.0; + pausetime = -1.0; + + if (bgmvolume.value == 0) /* don't bother advancing */ + CDAudio_Pause (); + + return 0; +} + +void CDAudio_Stop(void) +{ + if (!cd_handle || !enabled) + return; + + if (!playing) + return; + +#ifdef __linux__ + /* Don't really stop, but just pause: On some devices, the CDROMSTOP + * ioctl causes any followup ioctls to fail for a considerable time. + * observed with a TSSTcorp CDW/DVD SH-M522C drive with TS05 and TS08 + * firmware versions running under a 2.6.27.25 kernel, and with a + * Samsung DVD r/w drive running under 2.6.35.6 kernel. + * Therefore, avoid dead stops if playback may be resumed shortly. */ + if (SDL_CDPause(cd_handle) < 0) + Con_Printf ("CDAudio_Stop: Unable to stop CD-ROM (%s)\n", SDL_GetError()); +#else + if (SDL_CDStop(cd_handle) < 0) + Con_Printf ("CDAudio_Stop: Unable to stop CD-ROM (%s)\n", SDL_GetError()); +#endif + + wasPlaying = false; + playing = false; + pausetime = -1.0; + endOfTrack = -1.0; +} + +void CDAudio_Pause(void) +{ + if (!cd_handle || !enabled) + return; + + if (!playing) + return; + + if (SDL_CDPause(cd_handle) < 0) + Con_Printf ("Unable to pause CD-ROM: %s\n", SDL_GetError()); + + wasPlaying = playing; + playing = false; + pausetime = realtime; +} + +void CDAudio_Resume(void) +{ + if (!cd_handle || !enabled) + return; + + if (!cdValid) + return; + + if (!wasPlaying) + return; + + if (SDL_CDResume(cd_handle) < 0) + Con_Printf ("Unable to resume CD-ROM: %s\n", SDL_GetError()); + playing = true; + endOfTrack += realtime - pausetime; + pausetime = -1.0; +} + +static int get_first_audiotrk (void) +{ + int i; + for (i = 0; i < cd_handle->numtracks; ++i) + if (cd_handle->track[i].type != SDL_DATA_TRACK) + return ++i; + return 1; +} + +static void CD_f (void) +{ + const char *command; + int ret, n; + + if (Cmd_Argc() < 2) + { + Con_Printf("commands:"); + Con_Printf("on, off, reset, remap, \n"); + Con_Printf("play, stop, loop, pause, resume\n"); + Con_Printf("eject, info, next, prev\n"); + return; + } + + command = Cmd_Argv (1); + + if (q_strcasecmp(command, "on") == 0) + { + enabled = true; + return; + } + + if (q_strcasecmp(command, "off") == 0) + { + if (playing) + CDAudio_Stop(); + enabled = false; + return; + } + + if (q_strcasecmp(command, "reset") == 0) + { + enabled = true; + if (playing) + CDAudio_Stop(); + for (n = 0; n < 100; n++) + remap[n] = n; + CDAudio_GetAudioDiskInfo(); + return; + } + + if (q_strcasecmp(command, "remap") == 0) + { + ret = Cmd_Argc() - 2; + if (ret <= 0) + { + for (n = 1; n < 100; n++) + if (remap[n] != n) + Con_Printf(" %u -> %u\n", n, remap[n]); + return; + } + for (n = 1; n <= ret; n++) + remap[n] = atoi(Cmd_Argv (n + 1)); + return; + } + + if (!cdValid) + { + CDAudio_GetAudioDiskInfo(); + if (!cdValid) + { + Con_Printf("No CD in player.\n"); + return; + } + } + + if (q_strcasecmp(command, "play") == 0) + { + n = atoi(Cmd_Argv (2)); + if (n == 0) + n = 1; + CDAudio_Play((byte)n, false); + return; + } + + if (q_strcasecmp(command, "loop") == 0) + { + CDAudio_Play((byte)atoi(Cmd_Argv (2)), true); + return; + } + + if (q_strcasecmp(command, "stop") == 0) + { + CDAudio_Stop(); + return; + } + + if (q_strcasecmp(command, "pause") == 0) + { + CDAudio_Pause(); + return; + } + + if (q_strcasecmp(command, "resume") == 0) + { + CDAudio_Resume(); + return; + } + + if (q_strcasecmp(command, "eject") == 0) + { + if (playing) + CDAudio_Stop(); + CDAudio_Eject(); + cdValid = false; + return; + } + + if (q_strcasecmp(command, "info") == 0) + { + int current_min, current_sec, current_frame; + int length_min, length_sec, length_frame; + + Con_Printf ("%u tracks\n", cd_handle->numtracks); + + if (playing) + Con_Printf("Currently %s track %u\n", playLooping ? "looping" : "playing", playTrack); + else if (wasPlaying) + Con_Printf("Paused %s track %u\n", playLooping ? "looping" : "playing", playTrack); + + if (playing || wasPlaying) + { + SDL_CDStatus(cd_handle); + FRAMES_TO_MSF(cd_handle->cur_frame, ¤t_min, ¤t_sec, ¤t_frame); + FRAMES_TO_MSF(cd_handle->track[playTrack-1].length, &length_min, &length_sec, &length_frame); + + Con_Printf ("Current position: %d:%02d.%02d (of %d:%02d.%02d)\n", + current_min, current_sec, current_frame * 60 / CD_FPS, + length_min, length_sec, length_frame * 60 / CD_FPS); + } + Con_Printf("Volume is %f\n", bgmvolume.value); + + return; + } + + if (q_strcasecmp(command, "next") == 0) + { + if (playTrack == cd_handle->numtracks) + playTrack = get_first_audiotrk() - 1; + CDAudio_Play(playTrack + 1, playLooping); + return; + } + + if (q_strcasecmp(command, "prev") == 0) + { + if (playTrack == get_first_audiotrk()) + playTrack = cd_handle->numtracks + 1; + CDAudio_Play(playTrack - 1, playLooping); + return; + } + + Con_Printf ("cd: unknown command \"%s\"\n", command); +} + +static qboolean CD_GetVolume (void *unused) +{ +/* FIXME: write proper code in here when SDL + supports cdrom volume control some day. */ + return false; +} + +static qboolean CD_SetVolume (void *unused) +{ +/* FIXME: write proper code in here when SDL + supports cdrom volume control some day. */ + return false; +} + +static qboolean CDAudio_SetVolume (float value) +{ + if (!cd_handle || !enabled) + return false; + + old_cdvolume = value; + + if (value == 0.0f) + CDAudio_Pause (); + else + CDAudio_Resume(); + + if (!hw_vol_works) + { + return false; + } + else + { +/* FIXME: write proper code in here when SDL + supports cdrom volume control some day. */ + return CD_SetVolume (NULL); + } +} + +void CDAudio_Update(void) +{ + CDstatus curstat; +/* static double lastchk;*/ + + if (!cd_handle || !enabled) + return; + + if (old_cdvolume != bgmvolume.value) + CDAudio_SetVolume (bgmvolume.value); + +/* if (playing && realtime > lastchk)*/ + if (playing && realtime > endOfTrack) + { + /* lastchk = realtime + 2;*/ /* two seconds between chks */ + curstat = SDL_CDStatus(cd_handle); + if (curstat != CD_PLAYING && curstat != CD_PAUSED) + { + playing = false; + endOfTrack = -1.0; + if (playLooping) + CDAudio_Play(playTrack, true); + } + } +} + +static const char *get_cddev_arg (const char *arg) +{ +#if defined(_WIN32) +/* arg should be like "D:\", make sure it is so, + * but tolerate args like "D" or "D:", as well. */ + static char drive[4]; + if (!arg || ! *arg) + return NULL; + if (arg[1] != '\0') + { + if (arg[1] != ':') + return NULL; + if (arg[2] != '\0') + { + if (arg[2] != '\\' && + arg[2] != '/') + return NULL; + if (arg[3] != '\0') + return NULL; + } + } + if (*arg >= 'A' && *arg <= 'Z') + { + drive[0] = *arg; + drive[1] = ':'; + drive[2] = '\\'; + drive[3] = '\0'; + return drive; + } + else if (*arg >= 'a' && *arg <= 'z') + { + /* make it uppercase for SDL */ + drive[0] = *arg - ('a' - 'A'); + drive[1] = ':'; + drive[2] = '\\'; + drive[3] = '\0'; + return drive; + } + return NULL; +#else + if (!arg || ! *arg) + return NULL; + return arg; +#endif +} + +static void export_cddev_arg (void) +{ +/* Bad ugly hack to workaround SDL's cdrom device detection. + * not needed for windows due to the way SDL_cdrom works. */ +#if !defined(_WIN32) + int i = COM_CheckParm("-cddev"); + if (i != 0 && i < com_argc - 1 && com_argv[i+1][0] != '\0') + { + static char arg[64]; + q_snprintf(arg, sizeof(arg), "SDL_CDROM=%s", com_argv[i+1]); + putenv(arg); + } +#endif +} + +int CDAudio_Init(void) +{ + int i, sdl_num_drives; + + if (safemode || COM_CheckParm("-nocdaudio")) + return -1; + + export_cddev_arg(); + + if (SDL_InitSubSystem(SDL_INIT_CDROM) < 0) + { + Con_Printf("Couldn't init SDL cdrom: %s\n", SDL_GetError()); + return -1; + } + + sdl_num_drives = SDL_CDNumDrives (); + Con_Printf ("SDL detected %d CD-ROM drive%c\n", sdl_num_drives, + sdl_num_drives == 1 ? ' ' : 's'); + + if (sdl_num_drives < 1) + return -1; + + if ((i = COM_CheckParm("-cddev")) != 0 && i < com_argc - 1) + { + const char *userdev = get_cddev_arg(com_argv[i+1]); + if (!userdev) + { + Con_Printf("Invalid argument to -cddev\n"); + return -1; + } + for (i = 0; i < sdl_num_drives; i++) + { + if (!q_strcasecmp(SDL_CDName(i), userdev)) + { + cd_dev = i; + break; + } + } + if (cd_dev == -1) + { + Con_Printf("SDL couldn't find cdrom device %s\n", userdev); + return -1; + } + } + + if (cd_dev == -1) + cd_dev = 0; /* default drive */ + + cd_handle = SDL_CDOpen(cd_dev); + if (!cd_handle) + { + Con_Printf ("CDAudio_Init: Unable to open CD-ROM drive %s (%s)\n", + SDL_CDName(cd_dev), SDL_GetError()); + return -1; + } + + for (i = 0; i < 100; i++) + remap[i] = i; + enabled = true; + old_cdvolume = bgmvolume.value; + + Con_Printf("CDAudio initialized (SDL, using %s)\n", SDL_CDName(cd_dev)); + + if (CDAudio_GetAudioDiskInfo()) + { + Con_Printf("CDAudio_Init: No CD in drive\n"); + cdValid = false; + } + + Cmd_AddCommand ("cd", CD_f); + + hw_vol_works = CD_GetVolume (NULL); /* no SDL support at present. */ + if (hw_vol_works) + hw_vol_works = CDAudio_SetVolume (bgmvolume.value); + + return 0; +} + +void CDAudio_Shutdown(void) +{ + if (!cd_handle) + return; + CDAudio_Stop(); + if (hw_vol_works) + CD_SetVolume (NULL); /* no SDL support at present. */ +#ifdef __linux__ + SDL_CDStop(cd_handle); /* see CDAudio_Stop() */ +#endif + SDL_CDClose(cd_handle); + cd_handle = NULL; + cd_dev = -1; + SDL_QuitSubSystem(SDL_INIT_CDROM); +} + +#endif /* SDL_INIT_CDROM */ + diff --git a/Quake/cdaudio.h b/Quake/cdaudio.h new file mode 100644 index 0000000..7c8477f --- /dev/null +++ b/Quake/cdaudio.h @@ -0,0 +1,35 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __CDAUDIO_H +#define __CDAUDIO_H + +int CDAudio_Init (void); +int CDAudio_Play (byte track, qboolean looping); + /* returns 0 for success, -1 for failure. */ +void CDAudio_Stop (void); +void CDAudio_Pause (void); +void CDAudio_Resume (void); +void CDAudio_Shutdown (void); +void CDAudio_Update (void); + +#endif /* __CDAUDIO_H */ + diff --git a/Quake/cfgfile.c b/Quake/cfgfile.c new file mode 100644 index 0000000..3373db4 --- /dev/null +++ b/Quake/cfgfile.c @@ -0,0 +1,175 @@ +/* + * cfgfile.c -- misc reads from the config file + * + * Copyright (C) 2008-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + + +static fshandle_t *cfg_file; + +/* +=================== +CFG_ReadCvars + +used for doing early reads from config.cfg searching the list +of given cvar names for the user-set values. a temporary +solution until we merge a better cvar system. +the num_vars argument must be the exact number of strings in the +array, otherwise I have nothing against going out of bounds. +=================== +*/ +void CFG_ReadCvars (const char **vars, int num_vars) +{ + char buff[1024], *tmp; + int i, j; + + if (!cfg_file || num_vars < 1) + return; + + j = 0; + + do { + i = 0; + memset (buff, 0, sizeof(buff)); + // we expect a line in the format that Cvar_WriteVariables + // writes to the config file. although I'm trying to be as + // much cautious as possible, if the user screws it up by + // editing it, it's his fault. + if (FS_fgets(buff, sizeof(buff), cfg_file)) + { + // remove end-of-line characters + while (buff[i]) + { + if (buff[i] == '\r' || buff[i] == '\n') + buff[i] = '\0'; + // while we're here, replace tabs with spaces + if (buff[i] == '\t') + buff[i] = ' '; + i++; + } + // go to the last character + while (buff[i] == 0 && i > 0) + i--; + // remove trailing spaces + while (i > 0) + { + if (buff[i] == ' ') + { + buff[i] = '\0'; + i--; + } + else + break; + } + + // the line must end with a quotation mark + if (buff[i] != '\"') + continue; + buff[i] = '\0'; + + for (i = 0; i < num_vars && vars[i]; i++) + { + // look for the cvar name + one space + tmp = strstr(buff, va("%s ",vars[i])); + if (tmp != buff) + continue; + // locate the first quotation mark + tmp = strchr(buff, '\"'); + if (tmp) + { + Cvar_Set (vars[i], tmp + 1); + j++; + break; + } + } + } + + if (j == num_vars) + break; + + } while (!FS_feof(cfg_file) && !FS_ferror(cfg_file)); + + FS_rewind (cfg_file); +} + +/* +=================== +CFG_ReadCvarOverrides + +convenience function, reading the "+" command line override +values of cvars in the given list. doesn't do anything with +the config file. +=================== +*/ +void CFG_ReadCvarOverrides (const char **vars, int num_vars) +{ + char buff[64]; + int i, j; + + if (num_vars < 1) + return; + + buff[0] = '+'; + + for (i = 0; i < num_vars; i++) + { + q_strlcpy (&buff[1], vars[i], sizeof(buff) - 1); + j = COM_CheckParm(buff); + if (j != 0 && j < com_argc - 1) + { + if (com_argv[j + 1][0] != '-' && com_argv[j + 1][0] != '+') + Cvar_Set(vars[i], com_argv[j + 1]); + } + } +} + +void CFG_CloseConfig (void) +{ + if (cfg_file) + { + FS_fclose(cfg_file); + Z_Free(cfg_file); + cfg_file = NULL; + } +} + +int CFG_OpenConfig (const char *cfg_name) +{ + FILE *f; + long length; + qboolean pak; + + CFG_CloseConfig (); + + length = (long) COM_FOpenFile (cfg_name, &f, NULL); + pak = file_from_pak; + if (length == -1) + return -1; + + cfg_file = (fshandle_t *) Z_Malloc(sizeof(fshandle_t)); + cfg_file->file = f; + cfg_file->start = ftell(f); + cfg_file->pos = 0; + cfg_file->length = length; + cfg_file->pak = pak; + + return 0; +} + diff --git a/Quake/cfgfile.h b/Quake/cfgfile.h new file mode 100644 index 0000000..dbe8f39 --- /dev/null +++ b/Quake/cfgfile.h @@ -0,0 +1,42 @@ +/* + * cfgfile.h -- misc reads from the config file + * + * Copyright (C) 2008-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __CFGFILE_H +#define __CFGFILE_H + +int CFG_OpenConfig (const char *cfg_name); +// opens the given config file. only one open config file is +// kept: previosly opened one, if any, will be closed. + +void CFG_CloseConfig (void); +// closes the currently open config file. + +void CFG_ReadCvars (const char **vars, int num_vars); +// reads the values of cvars in the given list from the opened +// config file. + +void CFG_ReadCvarOverrides (const char **vars, int num_vars); +// convenience function, reading the "+" command line override +// values of cvars in the given list. doesn't do anything with +// the config file. call this after CFG_ReadCvars() and before +// locking your cvars. + +#endif /* __CFGFILE_H */ diff --git a/Quake/chase.c b/Quake/chase.c new file mode 100644 index 0000000..cb637c6 --- /dev/null +++ b/Quake/chase.c @@ -0,0 +1,118 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// chase.c -- chase camera code + +#include "quakedef.h" + +cvar_t chase_back = {"chase_back", "100", CVAR_NONE}; +cvar_t chase_up = {"chase_up", "16", CVAR_NONE}; +cvar_t chase_right = {"chase_right", "0", CVAR_NONE}; +cvar_t chase_active = {"chase_active", "0", CVAR_NONE}; + +/* +============== +Chase_Init +============== +*/ +void Chase_Init (void) +{ + Cvar_RegisterVariable (&chase_back); + Cvar_RegisterVariable (&chase_up); + Cvar_RegisterVariable (&chase_right); + Cvar_RegisterVariable (&chase_active); +} + +/* +============== +TraceLine + +TODO: impact on bmodels, monsters +============== +*/ +void TraceLine (vec3_t start, vec3_t end, vec3_t impact) +{ + trace_t trace; + + memset (&trace, 0, sizeof(trace)); + SV_RecursiveHullCheck (cl.worldmodel->hulls, 0, 0, 1, start, end, &trace); + + VectorCopy (trace.endpos, impact); +} + +/* +============== +Chase_UpdateForClient -- johnfitz -- orient client based on camera. called after input +============== +*/ +void Chase_UpdateForClient (void) +{ + //place camera + + //assign client angles to camera + + //see where camera points + + //adjust client angles to point at the same place +} + +/* +============== +Chase_UpdateForDrawing -- johnfitz -- orient camera based on client. called before drawing + +TODO: stay at least 8 units away from all walls in this leaf +============== +*/ +void Chase_UpdateForDrawing (void) +{ + int i; + vec3_t forward, up, right; + vec3_t ideal, crosshair, temp; + + AngleVectors (cl.viewangles, forward, right, up); + + // calc ideal camera location before checking for walls + for (i=0 ; i<3 ; i++) + ideal[i] = cl.viewent.origin[i] + - forward[i]*chase_back.value + + right[i]*chase_right.value; + //+ up[i]*chase_up.value; + ideal[2] = cl.viewent.origin[2] + chase_up.value; + + // make sure camera is not in or behind a wall + TraceLine(r_refdef.vieworg, ideal, temp); + if (VectorLength(temp) != 0) + VectorCopy(temp, ideal); + + // place camera + VectorCopy (ideal, r_refdef.vieworg); + + // find the spot the player is looking at + VectorMA (cl.viewent.origin, 1<<20, forward, temp); + TraceLine (cl.viewent.origin, temp, crosshair); + + // calculate camera angles to look at the same spot + VectorSubtract (crosshair, r_refdef.vieworg, temp); + VectorAngles (temp, r_refdef.viewangles); + if (r_refdef.viewangles[PITCH] == 90 || r_refdef.viewangles[PITCH] == -90) + r_refdef.viewangles[YAW] = cl.viewangles[YAW]; +} + diff --git a/Quake/cl_demo.c b/Quake/cl_demo.c new file mode 100644 index 0000000..6bc667f --- /dev/null +++ b/Quake/cl_demo.c @@ -0,0 +1,501 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" + +static void CL_FinishTimeDemo (void); + +/* +============================================================================== + +DEMO CODE + +When a demo is playing back, all NET_SendMessages are skipped, and +NET_GetMessages are read from the demo file. + +Whenever cl.time gets past the last received message, another message is +read from the demo file. +============================================================================== +*/ + +// from ProQuake: space to fill out the demo header for record at any time +static byte *demo_head; +static int *demo_head_sizes; + +/* +============== +CL_ClearSignons +============== +*/ +void CL_ClearSignons (void) +{ + VEC_CLEAR (demo_head); + VEC_CLEAR (demo_head_sizes); + cls.signon = 0; +} + +/* +============== +CL_StopPlayback + +Called when a demo file runs out, or the user starts a game +============== +*/ +void CL_StopPlayback (void) +{ + if (!cls.demoplayback) + return; + + fclose (cls.demofile); + cls.demoplayback = false; + cls.demopaused = false; + cls.demofile = NULL; + cls.state = ca_disconnected; + + if (cls.timedemo) + CL_FinishTimeDemo (); +} + +/* +==================== +CL_WriteDemoMessage + +Dumps the current net message, prefixed by the length and view angles +==================== +*/ +static void CL_WriteDemoMessage (void) +{ + int len; + int i; + float f; + + len = LittleLong (net_message.cursize); + fwrite (&len, 4, 1, cls.demofile); + for (i = 0; i < 3; i++) + { + f = LittleFloat (cl.viewangles[i]); + fwrite (&f, 4, 1, cls.demofile); + } + fwrite (net_message.data, net_message.cursize, 1, cls.demofile); + fflush (cls.demofile); +} + +static int CL_GetDemoMessage (void) +{ + int r, i; + float f; + + if (cls.demopaused) + return 0; + + // decide if it is time to grab the next message + if (cls.signon == SIGNONS) // always grab until fully connected + { + if (cls.timedemo) + { + if (host_framecount == cls.td_lastframe) + return 0; // already read this frame's message + cls.td_lastframe = host_framecount; + // if this is the second frame, grab the real td_starttime + // so the bogus time on the first frame doesn't count + if (host_framecount == cls.td_startframe + 1) + cls.td_starttime = realtime; + } + else if (/* cl.time > 0 && */ cl.time <= cl.mtime[0]) + { + return 0; // don't need another message yet + } + } + +// get the next message + if (! fread(&net_message.cursize, 4, 1, cls.demofile)) + Sys_Error ("Demo read error"); + VectorCopy (cl.mviewangles[0], cl.mviewangles[1]); + for (i = 0 ; i < 3 ; i++) + { + r = fread (&f, 4, 1, cls.demofile); + cl.mviewangles[0][i] = LittleFloat (f); + } + + net_message.cursize = LittleLong (net_message.cursize); + if (net_message.cursize > MAX_MSGLEN) + Sys_Error ("Demo message > MAX_MSGLEN"); + r = fread (net_message.data, net_message.cursize, 1, cls.demofile); + if (r != 1) + { + CL_StopPlayback (); + return 0; + } + + return 1; +} + +/* +==================== +CL_GetMessage + +Handles recording and playback of demos, on top of NET_ code +==================== +*/ +int CL_GetMessage (void) +{ + int r; + + if (cls.demoplayback) + return CL_GetDemoMessage (); + + while (1) + { + r = NET_GetMessage (cls.netcon); + + if (r != 1 && r != 2) + return r; + + // discard nop keepalive message + if (net_message.cursize == 1 && net_message.data[0] == svc_nop) + Con_Printf ("<-- server to client keepalive\n"); + else + break; + } + + if (cls.demorecording) + CL_WriteDemoMessage (); + + if (cls.signon < 2) + { + // record messages before full connection, so that a + // demo record can happen after connection is done + Vec_Append ((void**)&demo_head, 1, net_message.data, net_message.cursize); + VEC_PUSH (demo_head_sizes, net_message.cursize); + } + + return r; +} + + +/* +==================== +CL_Stop_f + +stop recording a demo +==================== +*/ +void CL_Stop_f (void) +{ + if (cmd_source != src_command) + return; + + if (!cls.demorecording) + { + Con_Printf ("Not recording a demo.\n"); + return; + } + +// write a disconnect message to the demo file + SZ_Clear (&net_message); + MSG_WriteByte (&net_message, svc_disconnect); + CL_WriteDemoMessage (); + +// finish up + fclose (cls.demofile); + cls.demofile = NULL; + cls.demorecording = false; + Con_Printf ("Completed demo\n"); + +// ericw -- update demo tab-completion list + DemoList_Rebuild (); +} + +/* +==================== +CL_Record_f + +record <demoname> <map> [cd track] +==================== +*/ +void CL_Record_f (void) +{ + int c; + char name[MAX_OSPATH]; + int track; + + if (cmd_source != src_command) + return; + + if (cls.demoplayback) + { + Con_Printf ("Can't record during demo playback\n"); + return; + } + + if (cls.demorecording) + CL_Stop_f(); + + c = Cmd_Argc(); + if (c != 2 && c != 3 && c != 4) + { + Con_Printf ("record <demoname> [<map> [cd track]]\n"); + return; + } + + if (strstr(Cmd_Argv(1), "..")) + { + Con_Printf ("Relative pathnames are not allowed.\n"); + return; + } + + if (c == 2 && cls.state == ca_connected) + { +#if 0 + Con_Printf("Can not record - already connected to server\nClient demo recording must be started before connecting\n"); + return; +#endif + if (cls.signon < 2) + { + Con_Printf("Can't record - try again when connected\n"); + return; + } + } + +// write the forced cd track number, or -1 + if (c == 4) + { + track = atoi(Cmd_Argv(3)); + Con_Printf ("Forcing CD track to %i\n", cls.forcetrack); + } + else + { + track = -1; + } + + q_snprintf (name, sizeof(name), "%s/%s", com_gamedir, Cmd_Argv(1)); + +// start the map up + if (c > 2) + { + Cmd_ExecuteString ( va("map %s", Cmd_Argv(2)), src_command); + if (cls.state != ca_connected) + return; + } + +// open the demo file + COM_AddExtension (name, ".dem", sizeof(name)); + + Con_Printf ("recording to %s.\n", name); + cls.demofile = fopen (name, "wb"); + if (!cls.demofile) + { + Con_Printf ("ERROR: couldn't create %s\n", name); + return; + } + + cls.forcetrack = track; + fprintf (cls.demofile, "%i\n", cls.forcetrack); + + cls.demorecording = true; + + // from ProQuake: initialize the demo file if we're already connected + if (c == 2 && cls.state == ca_connected) + { + static byte tmpbuf[NET_MAXMESSAGE]; + byte *data = net_message.data; + int cursize = net_message.cursize; + int maxsize = net_message.maxsize; + int i, count; + + net_message.data = demo_head; + for (i = 0, count = VEC_SIZE (demo_head_sizes); i < count; i++) + { + net_message.cursize = demo_head_sizes[i]; + CL_WriteDemoMessage (); + net_message.data += net_message.cursize; + } + + net_message.data = tmpbuf; + net_message.maxsize = sizeof (tmpbuf); + SZ_Clear (&net_message); + + // current names, colors, and frag counts + for (i = 0; i < cl.maxclients; i++) + { + MSG_WriteByte (&net_message, svc_updatename); + MSG_WriteByte (&net_message, i); + MSG_WriteString (&net_message, cl.scores[i].name); + MSG_WriteByte (&net_message, svc_updatefrags); + MSG_WriteByte (&net_message, i); + MSG_WriteShort (&net_message, cl.scores[i].frags); + MSG_WriteByte (&net_message, svc_updatecolors); + MSG_WriteByte (&net_message, i); + MSG_WriteByte (&net_message, cl.scores[i].colors); + } + + // send all current light styles + for (i = 0; i < MAX_LIGHTSTYLES; i++) + { + MSG_WriteByte (&net_message, svc_lightstyle); + MSG_WriteByte (&net_message, i); + MSG_WriteString (&net_message, cl_lightstyle[i].map); + } + + // what about the CD track or SVC fog... future consideration. + MSG_WriteByte (&net_message, svc_updatestat); + MSG_WriteByte (&net_message, STAT_TOTALSECRETS); + MSG_WriteLong (&net_message, cl.stats[STAT_TOTALSECRETS]); + + MSG_WriteByte (&net_message, svc_updatestat); + MSG_WriteByte (&net_message, STAT_TOTALMONSTERS); + MSG_WriteLong (&net_message, cl.stats[STAT_TOTALMONSTERS]); + + MSG_WriteByte (&net_message, svc_updatestat); + MSG_WriteByte (&net_message, STAT_SECRETS); + MSG_WriteLong (&net_message, cl.stats[STAT_SECRETS]); + + MSG_WriteByte (&net_message, svc_updatestat); + MSG_WriteByte (&net_message, STAT_MONSTERS); + MSG_WriteLong (&net_message, cl.stats[STAT_MONSTERS]); + + // view entity + MSG_WriteByte (&net_message, svc_setview); + MSG_WriteShort (&net_message, cl.viewentity); + + // signon + MSG_WriteByte (&net_message, svc_signonnum); + MSG_WriteByte (&net_message, 3); + + CL_WriteDemoMessage(); + + // restore net_message + net_message.data = data; + net_message.cursize = cursize; + net_message.maxsize = maxsize; + } +} + + +/* +==================== +CL_PlayDemo_f + +play [demoname] +==================== +*/ +void CL_PlayDemo_f (void) +{ + char name[MAX_OSPATH]; + + if (cmd_source != src_command) + return; + + if (Cmd_Argc() != 2) + { + Con_Printf ("playdemo <demoname> : plays a demo\n"); + return; + } + +// disconnect from server + CL_Disconnect (); + +// open the demo file + q_strlcpy (name, Cmd_Argv(1), sizeof(name)); + COM_AddExtension (name, ".dem", sizeof(name)); + + Con_Printf ("Playing demo from %s.\n", name); + + COM_FOpenFile (name, &cls.demofile, NULL); + if (!cls.demofile) + { + Con_Printf ("ERROR: couldn't open %s\n", name); + cls.demonum = -1; // stop demo loop + return; + } + +// ZOID, fscanf is evil +// O.S.: if a space character e.g. 0x20 (' ') follows '\n', +// fscanf skips that byte too and screws up further reads. +// fscanf (cls.demofile, "%i\n", &cls.forcetrack); + if (fscanf (cls.demofile, "%i", &cls.forcetrack) != 1 || fgetc (cls.demofile) != '\n') + { + fclose (cls.demofile); + cls.demofile = NULL; + cls.demonum = -1; // stop demo loop + Con_Printf ("ERROR: demo \"%s\" is invalid\n", name); + return; + } + + cls.demoplayback = true; + cls.demopaused = false; + cls.state = ca_connected; + +// get rid of the menu and/or console + key_dest = key_game; +} + +/* +==================== +CL_FinishTimeDemo + +==================== +*/ +static void CL_FinishTimeDemo (void) +{ + int frames; + float time; + + cls.timedemo = false; + +// the first frame didn't count + frames = (host_framecount - cls.td_startframe) - 1; + time = realtime - cls.td_starttime; + if (!time) + time = 1; + Con_Printf ("%i frames %5.1f seconds %5.1f fps\n", frames, time, frames/time); +} + +/* +==================== +CL_TimeDemo_f + +timedemo [demoname] +==================== +*/ +void CL_TimeDemo_f (void) +{ + if (cmd_source != src_command) + return; + + if (Cmd_Argc() != 2) + { + Con_Printf ("timedemo <demoname> : gets demo speeds\n"); + return; + } + + CL_PlayDemo_f (); + if (!cls.demofile) + return; + +// cls.td_starttime will be grabbed at the second frame of the demo, so +// all the loading time doesn't get counted + + cls.timedemo = true; + cls.td_startframe = host_framecount; + cls.td_lastframe = -1; // get a new message this frame +} + diff --git a/Quake/cl_input.c b/Quake/cl_input.c new file mode 100644 index 0000000..6e5fcdb --- /dev/null +++ b/Quake/cl_input.c @@ -0,0 +1,454 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// cl.input.c -- builds an intended movement command to send to the server + +// Quake is a trademark of Id Software, Inc., (c) 1996 Id Software, Inc. All +// rights reserved. + +#include "quakedef.h" + +extern cvar_t cl_maxpitch; //johnfitz -- variable pitch clamping +extern cvar_t cl_minpitch; //johnfitz -- variable pitch clamping + +/* +=============================================================================== + +KEY BUTTONS + +Continuous button event tracking is complicated by the fact that two different +input sources (say, mouse button 1 and the control key) can both press the +same button, but the button should only be released when both of the +pressing key have been released. + +When a key event issues a button command (+forward, +attack, etc), it appends +its key number as a parameter to the command so it can be matched up with +the release. + +state bit 0 is the current state of the key +state bit 1 is edge triggered on the up to down transition +state bit 2 is edge triggered on the down to up transition + +=============================================================================== +*/ + + +kbutton_t in_mlook, in_klook; +kbutton_t in_left, in_right, in_forward, in_back; +kbutton_t in_lookup, in_lookdown, in_moveleft, in_moveright; +kbutton_t in_strafe, in_speed, in_use, in_jump, in_attack; +kbutton_t in_up, in_down; + +int in_impulse; + + +void KeyDown (kbutton_t *b) +{ + int k; + const char *c; + + c = Cmd_Argv(1); + if (c[0]) + k = atoi(c); + else + k = -1; // typed manually at the console for continuous down + + if (k == b->down[0] || k == b->down[1]) + return; // repeating key + + if (!b->down[0]) + b->down[0] = k; + else if (!b->down[1]) + b->down[1] = k; + else + { + Con_Printf ("Three keys down for a button!\n"); + return; + } + + if (b->state & 1) + return; // still down + b->state |= 1 + 2; // down + impulse down +} + +void KeyUp (kbutton_t *b) +{ + int k; + const char *c; + + c = Cmd_Argv(1); + if (c[0]) + k = atoi(c); + else + { // typed manually at the console, assume for unsticking, so clear all + b->down[0] = b->down[1] = 0; + b->state = 4; // impulse up + return; + } + + if (b->down[0] == k) + b->down[0] = 0; + else if (b->down[1] == k) + b->down[1] = 0; + else + return; // key up without coresponding down (menu pass through) + if (b->down[0] || b->down[1]) + return; // some other key is still holding it down + + if (!(b->state & 1)) + return; // still up (this should not happen) + b->state &= ~1; // now up + b->state |= 4; // impulse up +} + +void IN_KLookDown (void) {KeyDown(&in_klook);} +void IN_KLookUp (void) {KeyUp(&in_klook);} +void IN_MLookDown (void) {KeyDown(&in_mlook);} +void IN_MLookUp (void) { + KeyUp(&in_mlook); + if ( !(in_mlook.state&1) && lookspring.value) + V_StartPitchDrift(); +} +void IN_UpDown(void) {KeyDown(&in_up);} +void IN_UpUp(void) {KeyUp(&in_up);} +void IN_DownDown(void) {KeyDown(&in_down);} +void IN_DownUp(void) {KeyUp(&in_down);} +void IN_LeftDown(void) {KeyDown(&in_left);} +void IN_LeftUp(void) {KeyUp(&in_left);} +void IN_RightDown(void) {KeyDown(&in_right);} +void IN_RightUp(void) {KeyUp(&in_right);} +void IN_ForwardDown(void) {KeyDown(&in_forward);} +void IN_ForwardUp(void) {KeyUp(&in_forward);} +void IN_BackDown(void) {KeyDown(&in_back);} +void IN_BackUp(void) {KeyUp(&in_back);} +void IN_LookupDown(void) {KeyDown(&in_lookup);} +void IN_LookupUp(void) {KeyUp(&in_lookup);} +void IN_LookdownDown(void) {KeyDown(&in_lookdown);} +void IN_LookdownUp(void) {KeyUp(&in_lookdown);} +void IN_MoveleftDown(void) {KeyDown(&in_moveleft);} +void IN_MoveleftUp(void) {KeyUp(&in_moveleft);} +void IN_MoverightDown(void) {KeyDown(&in_moveright);} +void IN_MoverightUp(void) {KeyUp(&in_moveright);} + +void IN_SpeedDown(void) {KeyDown(&in_speed);} +void IN_SpeedUp(void) {KeyUp(&in_speed);} +void IN_StrafeDown(void) {KeyDown(&in_strafe);} +void IN_StrafeUp(void) {KeyUp(&in_strafe);} + +void IN_AttackDown(void) {KeyDown(&in_attack);} +void IN_AttackUp(void) {KeyUp(&in_attack);} + +void IN_UseDown (void) {KeyDown(&in_use);} +void IN_UseUp (void) {KeyUp(&in_use);} +void IN_JumpDown (void) {KeyDown(&in_jump);} +void IN_JumpUp (void) {KeyUp(&in_jump);} + +void IN_Impulse (void) {in_impulse=Q_atoi(Cmd_Argv(1));} + +/* +=============== +CL_KeyState + +Returns 0.25 if a key was pressed and released during the frame, +0.5 if it was pressed and held +0 if held then released, and +1.0 if held for the entire time +=============== +*/ +float CL_KeyState (kbutton_t *key) +{ + float val; + qboolean impulsedown, impulseup, down; + + impulsedown = key->state & 2; + impulseup = key->state & 4; + down = key->state & 1; + val = 0; + + if (impulsedown && !impulseup) + { + if (down) + val = 0.5; // pressed and held this frame + else + val = 0; // I_Error (); + } + if (impulseup && !impulsedown) + { + if (down) + val = 0; // I_Error (); + else + val = 0; // released this frame + } + if (!impulsedown && !impulseup) + { + if (down) + val = 1.0; // held the entire frame + else + val = 0; // up the entire frame + } + if (impulsedown && impulseup) + { + if (down) + val = 0.75; // released and re-pressed this frame + else + val = 0.25; // pressed and released this frame + } + + key->state &= 1; // clear impulses + + return val; +} + + +//========================================================================== + +cvar_t cl_upspeed = {"cl_upspeed","200",CVAR_NONE}; +cvar_t cl_forwardspeed = {"cl_forwardspeed","200", CVAR_ARCHIVE}; +cvar_t cl_backspeed = {"cl_backspeed","200", CVAR_ARCHIVE}; +cvar_t cl_sidespeed = {"cl_sidespeed","350",CVAR_NONE}; + +cvar_t cl_movespeedkey = {"cl_movespeedkey","2.0",CVAR_NONE}; + +cvar_t cl_yawspeed = {"cl_yawspeed","140",CVAR_NONE}; +cvar_t cl_pitchspeed = {"cl_pitchspeed","150",CVAR_NONE}; + +cvar_t cl_anglespeedkey = {"cl_anglespeedkey","1.5",CVAR_NONE}; + +cvar_t cl_alwaysrun = {"cl_alwaysrun","0",CVAR_ARCHIVE}; // QuakeSpasm -- new always run + +/* +================ +CL_AdjustAngles + +Moves the local angle positions +================ +*/ +void CL_AdjustAngles (void) +{ + float speed; + float up, down; + + if ((in_speed.state & 1) ^ (cl_alwaysrun.value != 0.0)) + speed = host_frametime * cl_anglespeedkey.value; + else + speed = host_frametime; + + if (!(in_strafe.state & 1)) + { + cl.viewangles[YAW] -= speed*cl_yawspeed.value*CL_KeyState (&in_right); + cl.viewangles[YAW] += speed*cl_yawspeed.value*CL_KeyState (&in_left); + cl.viewangles[YAW] = anglemod(cl.viewangles[YAW]); + } + if (in_klook.state & 1) + { + V_StopPitchDrift (); + cl.viewangles[PITCH] -= speed*cl_pitchspeed.value * CL_KeyState (&in_forward); + cl.viewangles[PITCH] += speed*cl_pitchspeed.value * CL_KeyState (&in_back); + } + + up = CL_KeyState (&in_lookup); + down = CL_KeyState(&in_lookdown); + + cl.viewangles[PITCH] -= speed*cl_pitchspeed.value * up; + cl.viewangles[PITCH] += speed*cl_pitchspeed.value * down; + + if (up || down) + V_StopPitchDrift (); + + //johnfitz -- variable pitch clamping + if (cl.viewangles[PITCH] > cl_maxpitch.value) + cl.viewangles[PITCH] = cl_maxpitch.value; + if (cl.viewangles[PITCH] < cl_minpitch.value) + cl.viewangles[PITCH] = cl_minpitch.value; + //johnfitz + + if (cl.viewangles[ROLL] > 50) + cl.viewangles[ROLL] = 50; + if (cl.viewangles[ROLL] < -50) + cl.viewangles[ROLL] = -50; +} + +/* +================ +CL_BaseMove + +Send the intended movement message to the server +================ +*/ +void CL_BaseMove (usercmd_t *cmd) +{ + if (cls.signon != SIGNONS) + return; + + CL_AdjustAngles (); + + Q_memset (cmd, 0, sizeof(*cmd)); + + if (in_strafe.state & 1) + { + cmd->sidemove += cl_sidespeed.value * CL_KeyState (&in_right); + cmd->sidemove -= cl_sidespeed.value * CL_KeyState (&in_left); + } + + cmd->sidemove += cl_sidespeed.value * CL_KeyState (&in_moveright); + cmd->sidemove -= cl_sidespeed.value * CL_KeyState (&in_moveleft); + + cmd->upmove += cl_upspeed.value * CL_KeyState (&in_up); + cmd->upmove -= cl_upspeed.value * CL_KeyState (&in_down); + + if (! (in_klook.state & 1) ) + { + cmd->forwardmove += cl_forwardspeed.value * CL_KeyState (&in_forward); + cmd->forwardmove -= cl_backspeed.value * CL_KeyState (&in_back); + } + +// +// adjust for speed key +// + if ((in_speed.state & 1) ^ (cl_alwaysrun.value != 0.0)) + { + cmd->forwardmove *= cl_movespeedkey.value; + cmd->sidemove *= cl_movespeedkey.value; + cmd->upmove *= cl_movespeedkey.value; + } +} + + +/* +============== +CL_SendMove +============== +*/ +void CL_SendMove (const usercmd_t *cmd) +{ + int i; + int bits; + sizebuf_t buf; + byte data[128]; + + buf.maxsize = 128; + buf.cursize = 0; + buf.data = data; + + cl.cmd = *cmd; + +// +// send the movement message +// + MSG_WriteByte (&buf, clc_move); + + MSG_WriteFloat (&buf, cl.mtime[0]); // so server can get ping times + + for (i=0 ; i<3 ; i++) + //johnfitz -- 16-bit angles for PROTOCOL_FITZQUAKE + if (cl.protocol == PROTOCOL_NETQUAKE) + MSG_WriteAngle (&buf, cl.viewangles[i], cl.protocolflags); + else + MSG_WriteAngle16 (&buf, cl.viewangles[i], cl.protocolflags); + //johnfitz + + MSG_WriteShort (&buf, cmd->forwardmove); + MSG_WriteShort (&buf, cmd->sidemove); + MSG_WriteShort (&buf, cmd->upmove); + +// +// send button bits +// + bits = 0; + + if ( in_attack.state & 3 ) + bits |= 1; + in_attack.state &= ~2; + + if (in_jump.state & 3) + bits |= 2; + in_jump.state &= ~2; + + MSG_WriteByte (&buf, bits); + + MSG_WriteByte (&buf, in_impulse); + in_impulse = 0; + +// +// deliver the message +// + if (cls.demoplayback) + return; + +// +// allways dump the first two message, because it may contain leftover inputs +// from the last level +// + if (++cl.movemessages <= 2) + return; + + if (NET_SendUnreliableMessage (cls.netcon, &buf) == -1) + { + Con_Printf ("CL_SendMove: lost server connection\n"); + CL_Disconnect (); + } +} + +/* +============ +CL_InitInput +============ +*/ +void CL_InitInput (void) +{ + Cmd_AddCommand ("+moveup",IN_UpDown); + Cmd_AddCommand ("-moveup",IN_UpUp); + Cmd_AddCommand ("+movedown",IN_DownDown); + Cmd_AddCommand ("-movedown",IN_DownUp); + Cmd_AddCommand ("+left",IN_LeftDown); + Cmd_AddCommand ("-left",IN_LeftUp); + Cmd_AddCommand ("+right",IN_RightDown); + Cmd_AddCommand ("-right",IN_RightUp); + Cmd_AddCommand ("+forward",IN_ForwardDown); + Cmd_AddCommand ("-forward",IN_ForwardUp); + Cmd_AddCommand ("+back",IN_BackDown); + Cmd_AddCommand ("-back",IN_BackUp); + Cmd_AddCommand ("+lookup", IN_LookupDown); + Cmd_AddCommand ("-lookup", IN_LookupUp); + Cmd_AddCommand ("+lookdown", IN_LookdownDown); + Cmd_AddCommand ("-lookdown", IN_LookdownUp); + Cmd_AddCommand ("+strafe", IN_StrafeDown); + Cmd_AddCommand ("-strafe", IN_StrafeUp); + Cmd_AddCommand ("+moveleft", IN_MoveleftDown); + Cmd_AddCommand ("-moveleft", IN_MoveleftUp); + Cmd_AddCommand ("+moveright", IN_MoverightDown); + Cmd_AddCommand ("-moveright", IN_MoverightUp); + Cmd_AddCommand ("+speed", IN_SpeedDown); + Cmd_AddCommand ("-speed", IN_SpeedUp); + Cmd_AddCommand ("+attack", IN_AttackDown); + Cmd_AddCommand ("-attack", IN_AttackUp); + Cmd_AddCommand ("+use", IN_UseDown); + Cmd_AddCommand ("-use", IN_UseUp); + Cmd_AddCommand ("+jump", IN_JumpDown); + Cmd_AddCommand ("-jump", IN_JumpUp); + Cmd_AddCommand ("impulse", IN_Impulse); + Cmd_AddCommand ("+klook", IN_KLookDown); + Cmd_AddCommand ("-klook", IN_KLookUp); + Cmd_AddCommand ("+mlook", IN_MLookDown); + Cmd_AddCommand ("-mlook", IN_MLookUp); + +} + diff --git a/Quake/cl_main.c b/Quake/cl_main.c new file mode 100644 index 0000000..82b327b --- /dev/null +++ b/Quake/cl_main.c @@ -0,0 +1,841 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// cl_main.c -- client main loop + +#include "quakedef.h" +#include "bgmusic.h" + +// we need to declare some mouse variables here, because the menu system +// references them even when on a unix system. + +// these two are not intended to be set directly +cvar_t cl_name = {"_cl_name", "player", CVAR_ARCHIVE}; +cvar_t cl_color = {"_cl_color", "0", CVAR_ARCHIVE}; + +cvar_t cl_shownet = {"cl_shownet","0",CVAR_NONE}; // can be 0, 1, or 2 +cvar_t cl_nolerp = {"cl_nolerp","0",CVAR_NONE}; + +cvar_t cfg_unbindall = {"cfg_unbindall", "1", CVAR_ARCHIVE}; + +cvar_t lookspring = {"lookspring","0", CVAR_ARCHIVE}; +cvar_t lookstrafe = {"lookstrafe","0", CVAR_ARCHIVE}; +cvar_t sensitivity = {"sensitivity","3", CVAR_ARCHIVE}; + +cvar_t m_pitch = {"m_pitch","0.022", CVAR_ARCHIVE}; +cvar_t m_yaw = {"m_yaw","0.022", CVAR_ARCHIVE}; +cvar_t m_forward = {"m_forward","1", CVAR_ARCHIVE}; +cvar_t m_side = {"m_side","0.8", CVAR_ARCHIVE}; + +cvar_t cl_maxpitch = {"cl_maxpitch", "90", CVAR_ARCHIVE}; //johnfitz -- variable pitch clamping +cvar_t cl_minpitch = {"cl_minpitch", "-90", CVAR_ARCHIVE}; //johnfitz -- variable pitch clamping + +cvar_t cl_startdemos = {"cl_startdemos", "1", CVAR_ARCHIVE}; + +client_static_t cls; +client_state_t cl; +// FIXME: put these on hunk? +entity_t cl_static_entities[MAX_STATIC_ENTITIES]; +lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES]; +dlight_t cl_dlights[MAX_DLIGHTS]; + +entity_t *cl_entities; //johnfitz -- was a static array, now on hunk +int cl_max_edicts; //johnfitz -- only changes when new map loads + +int cl_numvisedicts; +entity_t *cl_visedicts[MAX_VISEDICTS]; + +extern cvar_t r_lerpmodels, r_lerpmove; //johnfitz + +/* +===================== +CL_ClearState + +===================== +*/ +void CL_ClearState (void) +{ + if (!sv.active) + Host_ClearMemory (); + +// wipe the entire cl structure + memset (&cl, 0, sizeof(cl)); + + SZ_Clear (&cls.message); + +// clear other arrays + memset (cl_dlights, 0, sizeof(cl_dlights)); + memset (cl_lightstyle, 0, sizeof(cl_lightstyle)); + memset (cl_temp_entities, 0, sizeof(cl_temp_entities)); + memset (cl_beams, 0, sizeof(cl_beams)); + + //johnfitz -- cl_entities is now dynamically allocated + cl_max_edicts = CLAMP (MIN_EDICTS,(int)max_edicts.value,MAX_EDICTS); + cl_entities = (entity_t *) Hunk_AllocName (cl_max_edicts*sizeof(entity_t), "cl_entities"); + //johnfitz +} + +/* +===================== +CL_Disconnect + +Sends a disconnect message to the server +This is also called on Host_Error, so it shouldn't cause any errors +===================== +*/ +void CL_Disconnect (void) +{ + if (key_dest == key_message) + Key_EndChat (); // don't get stuck in chat mode + +// stop sounds (especially looping!) + S_StopAllSounds (true); + BGM_Stop(); + CDAudio_Stop(); + +// if running a local server, shut it down + if (cls.demoplayback) + CL_StopPlayback (); + else if (cls.state == ca_connected) + { + if (cls.demorecording) + CL_Stop_f (); + + Con_DPrintf ("Sending clc_disconnect\n"); + SZ_Clear (&cls.message); + MSG_WriteByte (&cls.message, clc_disconnect); + NET_SendUnreliableMessage (cls.netcon, &cls.message); + SZ_Clear (&cls.message); + NET_Close (cls.netcon); + + cls.state = ca_disconnected; + if (sv.active) + Host_ShutdownServer(false); + } + + cls.demoplayback = cls.timedemo = false; + cls.demopaused = false; + cl.intermission = 0; + CL_ClearSignons (); +} + +void CL_Disconnect_f (void) +{ + CL_Disconnect (); + if (sv.active) + Host_ShutdownServer (false); +} + + +/* +===================== +CL_EstablishConnection + +Host should be either "local" or a net address to be passed on +===================== +*/ +void CL_EstablishConnection (const char *host) +{ + if (cls.state == ca_dedicated) + return; + + if (cls.demoplayback) + return; + + CL_Disconnect (); + + cls.netcon = NET_Connect (host); + if (!cls.netcon) + Host_Error ("CL_Connect: connect failed"); + Con_DPrintf ("CL_EstablishConnection: connected to %s\n", host); + + cls.demonum = -1; // not in the demo loop now + cls.state = ca_connected; + CL_ClearSignons (); // need all the signon messages before playing + MSG_WriteByte (&cls.message, clc_nop); // NAT Fix from ProQuake +} + +/* +===================== +CL_SignonReply + +An svc_signonnum has been received, perform a client side setup +===================== +*/ +void CL_SignonReply (void) +{ + char str[8192]; + + Con_DPrintf ("CL_SignonReply: %i\n", cls.signon); + + switch (cls.signon) + { + case 1: + MSG_WriteByte (&cls.message, clc_stringcmd); + MSG_WriteString (&cls.message, "prespawn"); + break; + + case 2: + MSG_WriteByte (&cls.message, clc_stringcmd); + MSG_WriteString (&cls.message, va("name \"%s\"\n", cl_name.string)); + + MSG_WriteByte (&cls.message, clc_stringcmd); + MSG_WriteString (&cls.message, va("color %i %i\n", ((int)cl_color.value)>>4, ((int)cl_color.value)&15)); + + MSG_WriteByte (&cls.message, clc_stringcmd); + sprintf (str, "spawn %s", cls.spawnparms); + MSG_WriteString (&cls.message, str); + break; + + case 3: + MSG_WriteByte (&cls.message, clc_stringcmd); + MSG_WriteString (&cls.message, "begin"); + Cache_Report (); // print remaining memory + break; + + case 4: + SCR_EndLoadingPlaque (); // allow normal screen updates + break; + } +} + +/* +===================== +CL_NextDemo + +Called to play the next demo in the demo loop +===================== +*/ +void CL_NextDemo (void) +{ + char str[1024]; + + if (cls.demonum == -1) + return; // don't play demos + + if (!cls.demos[cls.demonum][0] || cls.demonum == MAX_DEMOS) + { + cls.demonum = 0; + if (!cls.demos[cls.demonum][0]) + { + Con_Printf ("No demos listed with startdemos\n"); + cls.demonum = -1; + CL_Disconnect(); + return; + } + } + + SCR_BeginLoadingPlaque (); + + sprintf (str,"playdemo %s\n", cls.demos[cls.demonum]); + Cbuf_InsertText (str); + cls.demonum++; +} + +/* +============== +CL_PrintEntities_f +============== +*/ +void CL_PrintEntities_f (void) +{ + entity_t *ent; + int i; + + if (cls.state != ca_connected) + return; + + for (i=0,ent=cl_entities ; i<cl.num_entities ; i++,ent++) + { + Con_Printf ("%3i:",i); + if (!ent->model) + { + Con_Printf ("EMPTY\n"); + continue; + } + Con_Printf ("%s:%2i (%5.1f,%5.1f,%5.1f) [%5.1f %5.1f %5.1f]\n" + ,ent->model->name,ent->frame, ent->origin[0], ent->origin[1], ent->origin[2], ent->angles[0], ent->angles[1], ent->angles[2]); + } +} + +/* +=============== +CL_AllocDlight + +=============== +*/ +dlight_t *CL_AllocDlight (int key) +{ + int i; + dlight_t *dl; + +// first look for an exact key match + if (key) + { + dl = cl_dlights; + for (i=0 ; i<MAX_DLIGHTS ; i++, dl++) + { + if (dl->key == key) + { + memset (dl, 0, sizeof(*dl)); + dl->key = key; + dl->color[0] = dl->color[1] = dl->color[2] = 1; //johnfitz -- lit support via lordhavoc + return dl; + } + } + } + +// then look for anything else + dl = cl_dlights; + for (i=0 ; i<MAX_DLIGHTS ; i++, dl++) + { + if (dl->die < cl.time) + { + memset (dl, 0, sizeof(*dl)); + dl->key = key; + dl->color[0] = dl->color[1] = dl->color[2] = 1; //johnfitz -- lit support via lordhavoc + return dl; + } + } + + dl = &cl_dlights[0]; + memset (dl, 0, sizeof(*dl)); + dl->key = key; + dl->color[0] = dl->color[1] = dl->color[2] = 1; //johnfitz -- lit support via lordhavoc + return dl; +} + + +/* +=============== +CL_DecayLights + +=============== +*/ +void CL_DecayLights (void) +{ + int i; + dlight_t *dl; + float time; + + time = cl.time - cl.oldtime; + + dl = cl_dlights; + for (i=0 ; i<MAX_DLIGHTS ; i++, dl++) + { + if (dl->die < cl.time || !dl->radius) + continue; + + dl->radius -= time*dl->decay; + if (dl->radius < 0) + dl->radius = 0; + } +} + + +/* +=============== +CL_LerpPoint + +Determines the fraction between the last two messages that the objects +should be put at. +=============== +*/ +float CL_LerpPoint (void) +{ + float f, frac; + + f = cl.mtime[0] - cl.mtime[1]; + + if (!f || cls.timedemo || sv.active) + { + cl.time = cl.mtime[0]; + return 1; + } + + if (f > 0.1) // dropped packet, or start of demo + { + cl.mtime[1] = cl.mtime[0] - 0.1; + f = 0.1; + } + + frac = (cl.time - cl.mtime[1]) / f; + + if (frac < 0) + { + if (frac < -0.01) + cl.time = cl.mtime[1]; + frac = 0; + } + else if (frac > 1) + { + if (frac > 1.01) + cl.time = cl.mtime[0]; + frac = 1; + } + + //johnfitz -- better nolerp behavior + if (cl_nolerp.value) + return 1; + //johnfitz + + return frac; +} + +/* +=============== +CL_RelinkEntities +=============== +*/ +void CL_RelinkEntities (void) +{ + entity_t *ent; + int i, j; + float frac, f, d; + vec3_t delta; + float bobjrotate; + vec3_t oldorg; + dlight_t *dl; + +// determine partial update time + frac = CL_LerpPoint (); + + cl_numvisedicts = 0; + +// +// interpolate player info +// + for (i=0 ; i<3 ; i++) + cl.velocity[i] = cl.mvelocity[1][i] + + frac * (cl.mvelocity[0][i] - cl.mvelocity[1][i]); + + if (cls.demoplayback) + { + // interpolate the angles + for (j=0 ; j<3 ; j++) + { + d = cl.mviewangles[0][j] - cl.mviewangles[1][j]; + if (d > 180) + d -= 360; + else if (d < -180) + d += 360; + cl.viewangles[j] = cl.mviewangles[1][j] + frac*d; + } + } + + bobjrotate = anglemod(100*cl.time); + +// start on the entity after the world + for (i=1,ent=cl_entities+1 ; i<cl.num_entities ; i++,ent++) + { + if (!ent->model) + { // empty slot + + // ericw -- efrags are only used for static entities in GLQuake + // ent can't be static, so this is a no-op. + //if (ent->forcelink) + // R_RemoveEfrags (ent); // just became empty + continue; + } + +// if the object wasn't included in the last packet, remove it + if (ent->msgtime != cl.mtime[0]) + { + ent->model = NULL; + ent->lerpflags |= LERP_RESETMOVE|LERP_RESETANIM; //johnfitz -- next time this entity slot is reused, the lerp will need to be reset + continue; + } + + VectorCopy (ent->origin, oldorg); + + if (ent->forcelink) + { // the entity was not updated in the last message + // so move to the final spot + VectorCopy (ent->msg_origins[0], ent->origin); + VectorCopy (ent->msg_angles[0], ent->angles); + } + else + { // if the delta is large, assume a teleport and don't lerp + f = frac; + for (j=0 ; j<3 ; j++) + { + delta[j] = ent->msg_origins[0][j] - ent->msg_origins[1][j]; + if (delta[j] > 100 || delta[j] < -100) + { + f = 1; // assume a teleportation, not a motion + ent->lerpflags |= LERP_RESETMOVE; //johnfitz -- don't lerp teleports + } + } + + //johnfitz -- don't cl_lerp entities that will be r_lerped + if (r_lerpmove.value && (ent->lerpflags & LERP_MOVESTEP)) + f = 1; + //johnfitz + + // interpolate the origin and angles + for (j=0 ; j<3 ; j++) + { + ent->origin[j] = ent->msg_origins[1][j] + f*delta[j]; + + d = ent->msg_angles[0][j] - ent->msg_angles[1][j]; + if (d > 180) + d -= 360; + else if (d < -180) + d += 360; + ent->angles[j] = ent->msg_angles[1][j] + f*d; + } + } + +// rotate binary objects locally + if (ent->model->flags & EF_ROTATE) + ent->angles[1] = bobjrotate; + + if (ent->effects & EF_BRIGHTFIELD) + R_EntityParticles (ent); + + if (ent->effects & EF_MUZZLEFLASH) + { + vec3_t fv, rv, uv; + + dl = CL_AllocDlight (i); + VectorCopy (ent->origin, dl->origin); + dl->origin[2] += 16; + AngleVectors (ent->angles, fv, rv, uv); + + VectorMA (dl->origin, 18, fv, dl->origin); + dl->radius = 200 + (rand()&31); + dl->minlight = 32; + dl->die = cl.time + 0.1; + + //johnfitz -- assume muzzle flash accompanied by muzzle flare, which looks bad when lerped + if (r_lerpmodels.value != 2) + { + if (ent == &cl_entities[cl.viewentity]) + cl.viewent.lerpflags |= LERP_RESETANIM|LERP_RESETANIM2; //no lerping for two frames + else + ent->lerpflags |= LERP_RESETANIM|LERP_RESETANIM2; //no lerping for two frames + } + //johnfitz + } + if (ent->effects & EF_BRIGHTLIGHT) + { + dl = CL_AllocDlight (i); + VectorCopy (ent->origin, dl->origin); + dl->origin[2] += 16; + dl->radius = 400 + (rand()&31); + dl->die = cl.time + 0.001; + } + if (ent->effects & EF_DIMLIGHT) + { + dl = CL_AllocDlight (i); + VectorCopy (ent->origin, dl->origin); + dl->radius = 200 + (rand()&31); + dl->die = cl.time + 0.001; + } + if (ent->effects & EF_QEX_QUADLIGHT) + { + dl = CL_AllocDlight (i); + VectorCopy (ent->origin, dl->origin); + dl->radius = 200 + (rand()&31); + dl->die = cl.time + 0.001; + dl->color[0] = 0.25f; + dl->color[1] = 0.25f; + dl->color[2] = 1.0f; + } + if (ent->effects & EF_QEX_PENTALIGHT) + { + dl = CL_AllocDlight (i); + VectorCopy (ent->origin, dl->origin); + dl->radius = 200 + (rand()&31); + dl->die = cl.time + 0.001; + dl->color[0] = 1.0f; + dl->color[1] = 0.25f; + dl->color[2] = 0.25f; + } + + if (ent->model->flags & EF_GIB) + R_RocketTrail (oldorg, ent->origin, 2); + else if (ent->model->flags & EF_ZOMGIB) + R_RocketTrail (oldorg, ent->origin, 4); + else if (ent->model->flags & EF_TRACER) + R_RocketTrail (oldorg, ent->origin, 3); + else if (ent->model->flags & EF_TRACER2) + R_RocketTrail (oldorg, ent->origin, 5); + else if (ent->model->flags & EF_ROCKET) + { + R_RocketTrail (oldorg, ent->origin, 0); + dl = CL_AllocDlight (i); + VectorCopy (ent->origin, dl->origin); + dl->radius = 200; + dl->die = cl.time + 0.01; + } + else if (ent->model->flags & EF_GRENADE) + R_RocketTrail (oldorg, ent->origin, 1); + else if (ent->model->flags & EF_TRACER3) + R_RocketTrail (oldorg, ent->origin, 6); + + ent->forcelink = false; + + if (i == cl.viewentity && !chase_active.value) + continue; + + if (cl_numvisedicts < MAX_VISEDICTS) + { + cl_visedicts[cl_numvisedicts] = ent; + cl_numvisedicts++; + } + } +} + + +/* +=============== +CL_ReadFromServer + +Read all incoming data from the server +=============== +*/ +int CL_ReadFromServer (void) +{ + int ret; + extern int num_temp_entities; //johnfitz + int num_beams = 0; //johnfitz + int num_dlights = 0; //johnfitz + beam_t *b; //johnfitz + dlight_t *l; //johnfitz + int i; //johnfitz + + + cl.oldtime = cl.time; + cl.time += host_frametime; + + do + { + ret = CL_GetMessage (); + if (ret == -1) + Host_Error ("CL_ReadFromServer: lost server connection"); + if (!ret) + break; + + cl.last_received_message = realtime; + CL_ParseServerMessage (); + } while (ret && cls.state == ca_connected); + + if (cl_shownet.value) + Con_Printf ("\n"); + + CL_RelinkEntities (); + CL_UpdateTEnts (); + +//johnfitz -- devstats + + //visedicts + if (cl_numvisedicts > 256 && dev_peakstats.visedicts <= 256) + Con_DWarning ("%i visedicts exceeds standard limit of 256 (max = %d).\n", cl_numvisedicts, MAX_VISEDICTS); + dev_stats.visedicts = cl_numvisedicts; + dev_peakstats.visedicts = q_max(cl_numvisedicts, dev_peakstats.visedicts); + + //temp entities + if (num_temp_entities > 64 && dev_peakstats.tempents <= 64) + Con_DWarning ("%i tempentities exceeds standard limit of 64 (max = %d).\n", num_temp_entities, MAX_TEMP_ENTITIES); + dev_stats.tempents = num_temp_entities; + dev_peakstats.tempents = q_max(num_temp_entities, dev_peakstats.tempents); + + //beams + for (i=0, b=cl_beams ; i< MAX_BEAMS ; i++, b++) + if (b->model && b->endtime >= cl.time) + num_beams++; + if (num_beams > 24 && dev_peakstats.beams <= 24) + Con_DWarning ("%i beams exceeded standard limit of 24 (max = %d).\n", num_beams, MAX_BEAMS); + dev_stats.beams = num_beams; + dev_peakstats.beams = q_max(num_beams, dev_peakstats.beams); + + //dlights + for (i=0, l=cl_dlights ; i<MAX_DLIGHTS ; i++, l++) + if (l->die >= cl.time && l->radius) + num_dlights++; + if (num_dlights > 32 && dev_peakstats.dlights <= 32) + Con_DWarning ("%i dlights exceeded standard limit of 32 (max = %d).\n", num_dlights, MAX_DLIGHTS); + dev_stats.dlights = num_dlights; + dev_peakstats.dlights = q_max(num_dlights, dev_peakstats.dlights); + +//johnfitz + +// +// bring the links up to date +// + return 0; +} + +/* +================= +CL_SendCmd +================= +*/ +void CL_SendCmd (void) +{ + usercmd_t cmd; + + if (cls.state != ca_connected) + return; + + if (cls.signon == SIGNONS) + { + // get basic movement from keyboard + CL_BaseMove (&cmd); + + // allow mice or other external controllers to add to the move + IN_Move (&cmd); + + // send the unreliable message + CL_SendMove (&cmd); + } + + if (cls.demoplayback) + { + SZ_Clear (&cls.message); + return; + } + +// send the reliable message + if (!cls.message.cursize) + return; // no message at all + + if (!NET_CanSendMessage (cls.netcon)) + { + Con_DPrintf ("CL_SendCmd: can't send\n"); + return; + } + + if (NET_SendMessage (cls.netcon, &cls.message) == -1) + Host_Error ("CL_SendCmd: lost server connection"); + + SZ_Clear (&cls.message); +} + +/* +============= +CL_Tracepos_f -- johnfitz + +display impact point of trace along VPN +============= +*/ +void CL_Tracepos_f (void) +{ + vec3_t v, w; + + if (cls.state != ca_connected) + return; + + VectorMA(r_refdef.vieworg, 8192.0, vpn, v); + TraceLine(r_refdef.vieworg, v, w); + + if (VectorLength(w) == 0) + Con_Printf ("Tracepos: trace didn't hit anything\n"); + else + Con_Printf ("Tracepos: (%i %i %i)\n", (int)w[0], (int)w[1], (int)w[2]); +} + +/* +============= +CL_Viewpos_f -- johnfitz + +display client's position and angles +============= +*/ +void CL_Viewpos_f (void) +{ + if (cls.state != ca_connected) + return; +#if 0 + //camera position + Con_Printf ("Viewpos: (%i %i %i) %i %i %i\n", + (int)r_refdef.vieworg[0], + (int)r_refdef.vieworg[1], + (int)r_refdef.vieworg[2], + (int)r_refdef.viewangles[PITCH], + (int)r_refdef.viewangles[YAW], + (int)r_refdef.viewangles[ROLL]); +#else + //player position + Con_Printf ("Viewpos: (%i %i %i) %i %i %i\n", + (int)cl_entities[cl.viewentity].origin[0], + (int)cl_entities[cl.viewentity].origin[1], + (int)cl_entities[cl.viewentity].origin[2], + (int)cl.viewangles[PITCH], + (int)cl.viewangles[YAW], + (int)cl.viewangles[ROLL]); +#endif +} + +/* +================= +CL_Init +================= +*/ +void CL_Init (void) +{ + SZ_Alloc (&cls.message, 1024); + + CL_InitInput (); + CL_InitTEnts (); + + Cvar_RegisterVariable (&cl_name); + Cvar_RegisterVariable (&cl_color); + Cvar_RegisterVariable (&cl_upspeed); + Cvar_RegisterVariable (&cl_forwardspeed); + Cvar_RegisterVariable (&cl_backspeed); + Cvar_RegisterVariable (&cl_sidespeed); + Cvar_RegisterVariable (&cl_movespeedkey); + Cvar_RegisterVariable (&cl_yawspeed); + Cvar_RegisterVariable (&cl_pitchspeed); + Cvar_RegisterVariable (&cl_anglespeedkey); + Cvar_RegisterVariable (&cl_shownet); + Cvar_RegisterVariable (&cl_nolerp); + Cvar_RegisterVariable (&lookspring); + Cvar_RegisterVariable (&lookstrafe); + Cvar_RegisterVariable (&sensitivity); + + Cvar_RegisterVariable (&cl_alwaysrun); + + Cvar_RegisterVariable (&m_pitch); + Cvar_RegisterVariable (&m_yaw); + Cvar_RegisterVariable (&m_forward); + Cvar_RegisterVariable (&m_side); + + Cvar_RegisterVariable (&cfg_unbindall); + + Cvar_RegisterVariable (&cl_maxpitch); //johnfitz -- variable pitch clamping + Cvar_RegisterVariable (&cl_minpitch); //johnfitz -- variable pitch clamping + + Cvar_RegisterVariable (&cl_startdemos); + + Cmd_AddCommand ("entities", CL_PrintEntities_f); + Cmd_AddCommand ("disconnect", CL_Disconnect_f); + Cmd_AddCommand ("record", CL_Record_f); + Cmd_AddCommand ("stop", CL_Stop_f); + Cmd_AddCommand ("playdemo", CL_PlayDemo_f); + Cmd_AddCommand ("timedemo", CL_TimeDemo_f); + + Cmd_AddCommand ("tracepos", CL_Tracepos_f); //johnfitz + Cmd_AddCommand ("viewpos", CL_Viewpos_f); //johnfitz +} + diff --git a/Quake/cl_parse.c b/Quake/cl_parse.c new file mode 100644 index 0000000..261ff79 --- /dev/null +++ b/Quake/cl_parse.c @@ -0,0 +1,1330 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// cl_parse.c -- parse a message received from the server + +#include "quakedef.h" +#include "bgmusic.h" + +const char *svc_strings[] = +{ + "svc_bad", + "svc_nop", + "svc_disconnect", + "svc_updatestat", + "svc_version", // [long] server version + "svc_setview", // [short] entity number + "svc_sound", // <see code> + "svc_time", // [float] server time + "svc_print", // [string] null terminated string + "svc_stufftext", // [string] stuffed into client's console buffer + // the string should be \n terminated + "svc_setangle", // [vec3] set the view angle to this absolute value + + "svc_serverinfo", // [long] version + // [string] signon string + // [string]..[0]model cache [string]...[0]sounds cache + // [string]..[0]item cache + "svc_lightstyle", // [byte] [string] + "svc_updatename", // [byte] [string] + "svc_updatefrags", // [byte] [short] + "svc_clientdata", // <shortbits + data> + "svc_stopsound", // <see code> + "svc_updatecolors", // [byte] [byte] + "svc_particle", // [vec3] <variable> + "svc_damage", // [byte] impact [byte] blood [vec3] from + + "svc_spawnstatic", + "OBSOLETE svc_spawnbinary", + "svc_spawnbaseline", + + "svc_temp_entity", // <variable> + "svc_setpause", + "svc_signonnum", + "svc_centerprint", + "svc_killedmonster", + "svc_foundsecret", + "svc_spawnstaticsound", + "svc_intermission", + "svc_finale", // [string] music [string] text + "svc_cdtrack", // [byte] track [byte] looptrack + "svc_sellscreen", + "svc_cutscene", +//johnfitz -- new server messages + "", // 35 + "", // 36 + "svc_skybox", // 37 // [string] skyname + "svc_botchat", // 38 (2021 RE-RELEASE) + "", // 39 + "svc_bf", // 40 // no data + "svc_fog", // 41 // [byte] density [byte] red [byte] green [byte] blue [float] time + "svc_spawnbaseline2", //42 // support for large modelindex, large framenum, alpha, using flags + "svc_spawnstatic2", // 43 // support for large modelindex, large framenum, alpha, using flags + "svc_spawnstaticsound2", // 44 // [coord3] [short] samp [byte] vol [byte] aten +//johnfitz + +// 2021 RE-RELEASE: + "svc_setviews", // 45 + "svc_updateping", // 46 + "svc_updatesocial", // 47 + "svc_updateplinfo", // 48 + "svc_rawprint", // 49 + "svc_servervars", // 50 + "svc_seq", // 51 + "svc_achievement", // 52 + "svc_chat", // 53 + "svc_levelcompleted", // 54 + "svc_backtolobby", // 55 + "svc_localsound" // 56 +}; +#define NUM_SVC_STRINGS Q_COUNTOF(svc_strings) + +qboolean warn_about_nehahra_protocol; //johnfitz + +extern vec3_t v_punchangles[2]; //johnfitz + +//============================================================================= + +/* +=============== +CL_EntityNum + +This error checks and tracks the total number of entities +=============== +*/ +entity_t *CL_EntityNum (int num) +{ + //johnfitz -- check minimum number too + if (num < 0) + Host_Error ("CL_EntityNum: %i is an invalid number",num); + //john + + if (num >= cl.num_entities) + { + if (num >= cl_max_edicts) //johnfitz -- no more MAX_EDICTS + Host_Error ("CL_EntityNum: %i is an invalid number",num); + while (cl.num_entities<=num) + { + cl_entities[cl.num_entities].colormap = vid.colormap; + cl_entities[cl.num_entities].lerpflags |= LERP_RESETMOVE|LERP_RESETANIM; //johnfitz + cl_entities[cl.num_entities].baseline.scale = ENTSCALE_DEFAULT; + cl.num_entities++; + } + } + + return &cl_entities[num]; +} + + +/* +================== +CL_ParseStartSoundPacket +================== +*/ +void CL_ParseStartSoundPacket(void) +{ + vec3_t pos; + int channel, ent; + int sound_num; + int volume; + int field_mask; + float attenuation; + int i; + + field_mask = MSG_ReadByte(); + + if (field_mask & SND_VOLUME) + volume = MSG_ReadByte (); + else + volume = DEFAULT_SOUND_PACKET_VOLUME; + + if (field_mask & SND_ATTENUATION) + attenuation = MSG_ReadByte () / 64.0; + else + attenuation = DEFAULT_SOUND_PACKET_ATTENUATION; + + //johnfitz -- PROTOCOL_FITZQUAKE + if (field_mask & SND_LARGEENTITY) + { + ent = (unsigned short) MSG_ReadShort (); + channel = MSG_ReadByte (); + } + else + { + channel = (unsigned short) MSG_ReadShort (); + ent = channel >> 3; + channel &= 7; + } + + if (field_mask & SND_LARGESOUND) + sound_num = (unsigned short) MSG_ReadShort (); + else + sound_num = MSG_ReadByte (); + //johnfitz + + //johnfitz -- check soundnum + if (sound_num >= MAX_SOUNDS) + Host_Error ("CL_ParseStartSoundPacket: %i > MAX_SOUNDS", sound_num); + //johnfitz + + if (ent > cl_max_edicts) //johnfitz -- no more MAX_EDICTS + Host_Error ("CL_ParseStartSoundPacket: ent = %i", ent); + + for (i = 0; i < 3; i++) + pos[i] = MSG_ReadCoord (cl.protocolflags); + + S_StartSound (ent, channel, cl.sound_precache[sound_num], pos, volume/255.0, attenuation); +} + +/* +================== +CL_ParseLocalSound - for 2021 rerelease +================== +*/ +void CL_ParseLocalSound(void) +{ + int field_mask, sound_num; + + field_mask = MSG_ReadByte(); + sound_num = (field_mask&SND_LARGESOUND) ? MSG_ReadShort() : MSG_ReadByte(); + if (sound_num >= MAX_SOUNDS) + Host_Error ("CL_ParseLocalSound: %i > MAX_SOUNDS", sound_num); + + S_LocalSound (cl.sound_precache[sound_num]->name); +} + +/* +================== +CL_KeepaliveMessage + +When the client is taking a long time to load stuff, send keepalive messages +so the server doesn't disconnect. +================== +*/ +static byte net_olddata[NET_MAXMESSAGE]; +void CL_KeepaliveMessage (void) +{ + float time; + static float lastmsg; + int ret; + sizebuf_t old; + byte *olddata; + + if (sv.active) + return; // no need if server is local + if (cls.demoplayback) + return; + +// read messages from server, should just be nops + olddata = net_olddata; + old = net_message; + memcpy (olddata, net_message.data, net_message.cursize); + + do + { + ret = CL_GetMessage (); + switch (ret) + { + default: + Host_Error ("CL_KeepaliveMessage: CL_GetMessage failed"); + case 0: + break; // nothing waiting + case 1: + Host_Error ("CL_KeepaliveMessage: received a message"); + break; + case 2: + if (MSG_ReadByte() != svc_nop) + Host_Error ("CL_KeepaliveMessage: datagram wasn't a nop"); + break; + } + } while (ret); + + net_message = old; + memcpy (net_message.data, olddata, net_message.cursize); + +// check time + time = Sys_DoubleTime (); + if (time - lastmsg < 5) + return; + lastmsg = time; + +// write out a nop + Con_Printf ("--> client to server keepalive\n"); + + MSG_WriteByte (&cls.message, clc_nop); + NET_SendMessage (cls.netcon, &cls.message); + SZ_Clear (&cls.message); +} + +/* +================== +CL_ParseServerInfo +================== +*/ +void CL_ParseServerInfo (void) +{ + const char *str; + int i; + int nummodels, numsounds; + char model_precache[MAX_MODELS][MAX_QPATH]; + char sound_precache[MAX_SOUNDS][MAX_QPATH]; + + Con_DPrintf ("Serverinfo packet received.\n"); + +// ericw -- bring up loading plaque for map changes within a demo. +// it will be hidden in CL_SignonReply. + if (cls.demoplayback) + SCR_BeginLoadingPlaque(); + +// +// wipe the client_state_t struct +// + CL_ClearState (); + +// parse protocol version number + i = MSG_ReadLong (); + //johnfitz -- support multiple protocols + if (i != PROTOCOL_NETQUAKE && i != PROTOCOL_FITZQUAKE && i != PROTOCOL_RMQ) { + Con_Printf ("\n"); //because there's no newline after serverinfo print + Host_Error ("Server returned version %i, not %i or %i or %i", i, PROTOCOL_NETQUAKE, PROTOCOL_FITZQUAKE, PROTOCOL_RMQ); + } + cl.protocol = i; + //johnfitz + + if (cl.protocol == PROTOCOL_RMQ) + { + const unsigned int supportedflags = (PRFL_SHORTANGLE | PRFL_FLOATANGLE | PRFL_24BITCOORD | PRFL_FLOATCOORD | PRFL_EDICTSCALE | PRFL_INT32COORD); + + // mh - read protocol flags from server so that we know what protocol features to expect + cl.protocolflags = (unsigned int) MSG_ReadLong (); + + if (0 != (cl.protocolflags & (~supportedflags))) + { + Con_Warning("PROTOCOL_RMQ protocolflags %i contains unsupported flags\n", cl.protocolflags); + } + } + else cl.protocolflags = 0; + +// parse maxclients + cl.maxclients = MSG_ReadByte (); + if (cl.maxclients < 1 || cl.maxclients > MAX_SCOREBOARD) + { + Host_Error ("Bad maxclients (%u) from server", cl.maxclients); + } + cl.scores = (scoreboard_t *) Hunk_AllocName (cl.maxclients*sizeof(*cl.scores), "scores"); + +// parse gametype + cl.gametype = MSG_ReadByte (); + +// parse signon message + str = MSG_ReadString (); + q_strlcpy (cl.levelname, str, sizeof(cl.levelname)); + +// seperate the printfs so the server message can have a color + Con_Printf ("\n%s\n", Con_Quakebar(40)); //johnfitz + Con_Printf ("%c%s\n", 2, str); + +//johnfitz -- tell user which protocol this is + Con_Printf ("Using protocol %i\n", i); + +// first we go through and touch all of the precache data that still +// happens to be in the cache, so precaching something else doesn't +// needlessly purge it + +// precache models + memset (cl.model_precache, 0, sizeof(cl.model_precache)); + for (nummodels = 1 ; ; nummodels++) + { + str = MSG_ReadString (); + if (!str[0]) + break; + if (nummodels == MAX_MODELS) + { + Host_Error ("Server sent too many model precaches"); + } + q_strlcpy (model_precache[nummodels], str, MAX_QPATH); + Mod_TouchModel (str); + } + + //johnfitz -- check for excessive models + if (nummodels >= 2048) + Con_Warning ("%i models exceeds QS limit of 2048 (max = %d).\n", nummodels, MAX_MODELS); + else if (nummodels >= 256) + Con_DWarning ("%i models exceeds standard limit of 256 (max = %d).\n", nummodels, MAX_MODELS); + //johnfitz + +// precache sounds + memset (cl.sound_precache, 0, sizeof(cl.sound_precache)); + for (numsounds = 1 ; ; numsounds++) + { + str = MSG_ReadString (); + if (!str[0]) + break; + if (numsounds == MAX_SOUNDS) + { + Host_Error ("Server sent too many sound precaches"); + } + q_strlcpy (sound_precache[numsounds], str, MAX_QPATH); + S_TouchSound (str); + } + + //johnfitz -- check for excessive sounds + if (numsounds >= 256) + Con_DWarning ("%i sounds exceeds standard limit of 256 (max = %d).\n", numsounds, MAX_SOUNDS); + //johnfitz + +// +// now we try to load everything else until a cache allocation fails +// + + // copy the naked name of the map file to the cl structure -- O.S + COM_StripExtension (COM_SkipPath(model_precache[1]), cl.mapname, sizeof(cl.mapname)); + + for (i = 1; i < nummodels; i++) + { + cl.model_precache[i] = Mod_ForName (model_precache[i], false); + if (cl.model_precache[i] == NULL) + { + Host_Error ("Model %s not found", model_precache[i]); + } + CL_KeepaliveMessage (); + } + + S_BeginPrecaching (); + for (i = 1; i < numsounds; i++) + { + cl.sound_precache[i] = S_PrecacheSound (sound_precache[i]); + CL_KeepaliveMessage (); + } + S_EndPrecaching (); + +// local state + cl_entities[0].model = cl.worldmodel = cl.model_precache[1]; + + R_NewMap (); + + //johnfitz -- clear out string; we don't consider identical + //messages to be duplicates if the map has changed in between + con_lastcenterstring[0] = 0; + //johnfitz + + Hunk_Check (); // make sure nothing is hurt + + noclip_anglehack = false; // noclip is turned off at start + + warn_about_nehahra_protocol = true; //johnfitz -- warn about nehahra protocol hack once per server connection + +//johnfitz -- reset developer stats + memset(&dev_stats, 0, sizeof(dev_stats)); + memset(&dev_peakstats, 0, sizeof(dev_peakstats)); + memset(&dev_overflows, 0, sizeof(dev_overflows)); +} + +/* +================== +CL_ParseUpdate + +Parse an entity update message from the server +If an entities model or origin changes from frame to frame, it must be +relinked. Other attributes can change without relinking. +================== +*/ +void CL_ParseUpdate (int bits) +{ + int i; + qmodel_t *model; + int modnum; + qboolean forcelink; + entity_t *ent; + int num; + int skin; + + if (cls.signon == SIGNONS - 1) + { // first update is the final signon stage + cls.signon = SIGNONS; + CL_SignonReply (); + } + + if (bits & U_MOREBITS) + { + i = MSG_ReadByte (); + bits |= (i<<8); + } + + //johnfitz -- PROTOCOL_FITZQUAKE + if (cl.protocol == PROTOCOL_FITZQUAKE || cl.protocol == PROTOCOL_RMQ) + { + if (bits & U_EXTEND1) + bits |= MSG_ReadByte() << 16; + if (bits & U_EXTEND2) + bits |= MSG_ReadByte() << 24; + } + //johnfitz + + if (bits & U_LONGENTITY) + num = MSG_ReadShort (); + else + num = MSG_ReadByte (); + + ent = CL_EntityNum (num); + + if (ent->msgtime != cl.mtime[1]) + forcelink = true; // no previous frame to lerp from + else + forcelink = false; + + //johnfitz -- lerping + if (ent->msgtime + 0.2 < cl.mtime[0]) //more than 0.2 seconds since the last message (most entities think every 0.1 sec) + ent->lerpflags |= LERP_RESETANIM; //if we missed a think, we'd be lerping from the wrong frame + //johnfitz + + ent->msgtime = cl.mtime[0]; + + if (bits & U_MODEL) + { + modnum = MSG_ReadByte (); + if (modnum >= MAX_MODELS) + Host_Error ("CL_ParseModel: bad modnum"); + } + else + modnum = ent->baseline.modelindex; + + if (bits & U_FRAME) + ent->frame = MSG_ReadByte (); + else + ent->frame = ent->baseline.frame; + + if (bits & U_COLORMAP) + i = MSG_ReadByte(); + else + i = ent->baseline.colormap; + if (!i) + ent->colormap = vid.colormap; + else + { + if (i > cl.maxclients) + Sys_Error ("i >= cl.maxclients"); + ent->colormap = cl.scores[i-1].translations; + } + if (bits & U_SKIN) + skin = MSG_ReadByte(); + else + skin = ent->baseline.skin; + if (skin != ent->skinnum) + { + ent->skinnum = skin; + if (num > 0 && num <= cl.maxclients) + R_TranslateNewPlayerSkin (num - 1); //johnfitz -- was R_TranslatePlayerSkin + } + if (bits & U_EFFECTS) + ent->effects = MSG_ReadByte(); + else + ent->effects = ent->baseline.effects; + +// shift the known values for interpolation + VectorCopy (ent->msg_origins[0], ent->msg_origins[1]); + VectorCopy (ent->msg_angles[0], ent->msg_angles[1]); + + if (bits & U_ORIGIN1) + ent->msg_origins[0][0] = MSG_ReadCoord (cl.protocolflags); + else + ent->msg_origins[0][0] = ent->baseline.origin[0]; + if (bits & U_ANGLE1) + ent->msg_angles[0][0] = MSG_ReadAngle(cl.protocolflags); + else + ent->msg_angles[0][0] = ent->baseline.angles[0]; + + if (bits & U_ORIGIN2) + ent->msg_origins[0][1] = MSG_ReadCoord (cl.protocolflags); + else + ent->msg_origins[0][1] = ent->baseline.origin[1]; + if (bits & U_ANGLE2) + ent->msg_angles[0][1] = MSG_ReadAngle(cl.protocolflags); + else + ent->msg_angles[0][1] = ent->baseline.angles[1]; + + if (bits & U_ORIGIN3) + ent->msg_origins[0][2] = MSG_ReadCoord (cl.protocolflags); + else + ent->msg_origins[0][2] = ent->baseline.origin[2]; + if (bits & U_ANGLE3) + ent->msg_angles[0][2] = MSG_ReadAngle(cl.protocolflags); + else + ent->msg_angles[0][2] = ent->baseline.angles[2]; + + //johnfitz -- lerping for movetype_step entities + if (bits & U_STEP) + { + ent->lerpflags |= LERP_MOVESTEP; + ent->forcelink = true; + } + else + ent->lerpflags &= ~LERP_MOVESTEP; + //johnfitz + + //johnfitz -- PROTOCOL_FITZQUAKE and PROTOCOL_NEHAHRA + if (cl.protocol == PROTOCOL_FITZQUAKE || cl.protocol == PROTOCOL_RMQ) + { + if (bits & U_ALPHA) + ent->alpha = MSG_ReadByte(); + else + ent->alpha = ent->baseline.alpha; + if (bits & U_SCALE) + ent->scale = MSG_ReadByte(); + else + ent->scale = ent->baseline.scale; + if (bits & U_FRAME2) + ent->frame = (ent->frame & 0x00FF) | (MSG_ReadByte() << 8); + if (bits & U_MODEL2) + modnum = (modnum & 0x00FF) | (MSG_ReadByte() << 8); + if (bits & U_LERPFINISH) + { + ent->lerpfinish = ent->msgtime + ((float)(MSG_ReadByte()) / 255); + ent->lerpflags |= LERP_FINISH; + } + else + ent->lerpflags &= ~LERP_FINISH; + } + else if (cl.protocol == PROTOCOL_NETQUAKE) + { + //HACK: if this bit is set, assume this is PROTOCOL_NEHAHRA + if (bits & U_TRANS) + { + float a, b; + + if (warn_about_nehahra_protocol) + { + Con_Warning ("nonstandard update bit, assuming Nehahra protocol\n"); + warn_about_nehahra_protocol = false; + } + + a = MSG_ReadFloat(); + b = MSG_ReadFloat(); //alpha + if (a == 2) + MSG_ReadFloat(); //fullbright (not using this yet) + ent->alpha = ENTALPHA_ENCODE(b); + } + else + ent->alpha = ent->baseline.alpha; + ent->scale = ent->baseline.scale; + } + //johnfitz + + //johnfitz -- moved here from above + model = cl.model_precache[modnum]; + if (model != ent->model) + { + ent->model = model; + // automatic animation (torches, etc) can be either all together + // or randomized + if (model) + { + if (model->synctype == ST_RAND) + ent->syncbase = (float)(rand()&0x7fff) / 0x7fff; + else + ent->syncbase = 0.0; + } + else + forcelink = true; // hack to make null model players work + if (num > 0 && num <= cl.maxclients) + R_TranslateNewPlayerSkin (num - 1); //johnfitz -- was R_TranslatePlayerSkin + + ent->lerpflags |= LERP_RESETANIM; //johnfitz -- don't lerp animation across model changes + } + //johnfitz + + if ( forcelink ) + { // didn't have an update last message + VectorCopy (ent->msg_origins[0], ent->msg_origins[1]); + VectorCopy (ent->msg_origins[0], ent->origin); + VectorCopy (ent->msg_angles[0], ent->msg_angles[1]); + VectorCopy (ent->msg_angles[0], ent->angles); + ent->forcelink = true; + } +} + +/* +================== +CL_ParseBaseline +================== +*/ +void CL_ParseBaseline (entity_t *ent, int version) //johnfitz -- added argument +{ + int i; + int bits; //johnfitz + + //johnfitz -- PROTOCOL_FITZQUAKE + bits = (version == 2) ? MSG_ReadByte() : 0; + ent->baseline.modelindex = (bits & B_LARGEMODEL) ? MSG_ReadShort() : MSG_ReadByte(); + ent->baseline.frame = (bits & B_LARGEFRAME) ? MSG_ReadShort() : MSG_ReadByte(); + //johnfitz + + ent->baseline.colormap = MSG_ReadByte(); + ent->baseline.skin = MSG_ReadByte(); + for (i = 0; i < 3; i++) + { + ent->baseline.origin[i] = MSG_ReadCoord (cl.protocolflags); + ent->baseline.angles[i] = MSG_ReadAngle (cl.protocolflags); + } + + ent->baseline.alpha = (bits & B_ALPHA) ? MSG_ReadByte() : ENTALPHA_DEFAULT; //johnfitz -- PROTOCOL_FITZQUAKE + ent->baseline.scale = (bits & B_SCALE) ? MSG_ReadByte() : ENTSCALE_DEFAULT; +} + + +/* +================== +CL_ParseClientdata + +Server information pertaining to this client only +================== +*/ +void CL_ParseClientdata (void) +{ + int i, j; + int bits; //johnfitz + + bits = (unsigned short)MSG_ReadShort (); //johnfitz -- read bits here isntead of in CL_ParseServerMessage() + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & SU_EXTEND1) + bits |= (MSG_ReadByte() << 16); + if (bits & SU_EXTEND2) + bits |= (MSG_ReadByte() << 24); + //johnfitz + + if (bits & SU_VIEWHEIGHT) + cl.viewheight = MSG_ReadChar (); + else + cl.viewheight = DEFAULT_VIEWHEIGHT; + + if (bits & SU_IDEALPITCH) + cl.idealpitch = MSG_ReadChar (); + else + cl.idealpitch = 0; + + VectorCopy (cl.mvelocity[0], cl.mvelocity[1]); + for (i = 0; i < 3; i++) + { + if (bits & (SU_PUNCH1<<i) ) + cl.punchangle[i] = MSG_ReadChar(); + else + cl.punchangle[i] = 0; + + if (bits & (SU_VELOCITY1<<i) ) + cl.mvelocity[0][i] = MSG_ReadChar()*16; + else + cl.mvelocity[0][i] = 0; + } + + //johnfitz -- update v_punchangles + if (v_punchangles[0][0] != cl.punchangle[0] || v_punchangles[0][1] != cl.punchangle[1] || v_punchangles[0][2] != cl.punchangle[2]) + { + VectorCopy (v_punchangles[0], v_punchangles[1]); + VectorCopy (cl.punchangle, v_punchangles[0]); + } + //johnfitz + +// [always sent] if (bits & SU_ITEMS) + i = MSG_ReadLong (); + + if (cl.items != i) + { // set flash times + Sbar_Changed (); + for (j = 0; j < 32; j++) + if ( (i & (1<<j)) && !(cl.items & (1<<j))) + cl.item_gettime[j] = cl.time; + cl.items = i; + } + + cl.onground = (bits & SU_ONGROUND) != 0; + cl.inwater = (bits & SU_INWATER) != 0; + + if (bits & SU_WEAPONFRAME) + cl.stats[STAT_WEAPONFRAME] = MSG_ReadByte (); + else + cl.stats[STAT_WEAPONFRAME] = 0; + + if (bits & SU_ARMOR) + i = MSG_ReadByte (); + else + i = 0; + if (cl.stats[STAT_ARMOR] != i) + { + cl.stats[STAT_ARMOR] = i; + Sbar_Changed (); + } + + if (bits & SU_WEAPON) + i = MSG_ReadByte (); + else + i = 0; + if (cl.stats[STAT_WEAPON] != i) + { + cl.stats[STAT_WEAPON] = i; + Sbar_Changed (); + } + + i = MSG_ReadShort (); + if (cl.stats[STAT_HEALTH] != i) + { + cl.stats[STAT_HEALTH] = i; + Sbar_Changed (); + } + + i = MSG_ReadByte (); + if (cl.stats[STAT_AMMO] != i) + { + cl.stats[STAT_AMMO] = i; + Sbar_Changed (); + } + + for (i = 0; i < 4; i++) + { + j = MSG_ReadByte (); + if (cl.stats[STAT_SHELLS+i] != j) + { + cl.stats[STAT_SHELLS+i] = j; + Sbar_Changed (); + } + } + + i = MSG_ReadByte (); + + if (standard_quake) + { + if (cl.stats[STAT_ACTIVEWEAPON] != i) + { + cl.stats[STAT_ACTIVEWEAPON] = i; + Sbar_Changed (); + } + } + else + { + if (cl.stats[STAT_ACTIVEWEAPON] != (1<<i)) + { + cl.stats[STAT_ACTIVEWEAPON] = (1<<i); + Sbar_Changed (); + } + } + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & SU_WEAPON2) + cl.stats[STAT_WEAPON] |= (MSG_ReadByte() << 8); + if (bits & SU_ARMOR2) + cl.stats[STAT_ARMOR] |= (MSG_ReadByte() << 8); + if (bits & SU_AMMO2) + cl.stats[STAT_AMMO] |= (MSG_ReadByte() << 8); + if (bits & SU_SHELLS2) + cl.stats[STAT_SHELLS] |= (MSG_ReadByte() << 8); + if (bits & SU_NAILS2) + cl.stats[STAT_NAILS] |= (MSG_ReadByte() << 8); + if (bits & SU_ROCKETS2) + cl.stats[STAT_ROCKETS] |= (MSG_ReadByte() << 8); + if (bits & SU_CELLS2) + cl.stats[STAT_CELLS] |= (MSG_ReadByte() << 8); + if (bits & SU_WEAPONFRAME2) + cl.stats[STAT_WEAPONFRAME] |= (MSG_ReadByte() << 8); + if (bits & SU_WEAPONALPHA) + cl.viewent.alpha = MSG_ReadByte(); + else + cl.viewent.alpha = ENTALPHA_DEFAULT; + //johnfitz + + //johnfitz -- lerping + //ericw -- this was done before the upper 8 bits of cl.stats[STAT_WEAPON] were filled in, breaking on large maps like zendar.bsp + if (cl.viewent.model != cl.model_precache[cl.stats[STAT_WEAPON]]) + { + cl.viewent.lerpflags |= LERP_RESETANIM; //don't lerp animation across model changes + } + //johnfitz +} + +/* +===================== +CL_NewTranslation +===================== +*/ +void CL_NewTranslation (int slot) +{ + int i, j; + int top, bottom; + byte *dest, *source; + + if (slot > cl.maxclients) + Sys_Error ("CL_NewTranslation: slot > cl.maxclients"); + dest = cl.scores[slot].translations; + source = vid.colormap; + memcpy (dest, vid.colormap, sizeof(cl.scores[slot].translations)); + top = cl.scores[slot].colors & 0xf0; + bottom = (cl.scores[slot].colors &15)<<4; + R_TranslatePlayerSkin (slot); + + for (i = 0; i < VID_GRADES; i++, dest += 256, source+=256) + { + if (top < 128) // the artists made some backwards ranges. sigh. + memcpy (dest + TOP_RANGE, source + top, 16); + else + { + for (j = 0; j < 16; j++) + dest[TOP_RANGE+j] = source[top+15-j]; + } + + if (bottom < 128) + memcpy (dest + BOTTOM_RANGE, source + bottom, 16); + else + { + for (j = 0; j < 16; j++) + dest[BOTTOM_RANGE+j] = source[bottom+15-j]; + } + } +} + +/* +===================== +CL_ParseStatic +===================== +*/ +void CL_ParseStatic (int version) //johnfitz -- added a parameter +{ + entity_t *ent; + int i; + + i = cl.num_statics; + if (i >= MAX_STATIC_ENTITIES) + Host_Error ("Too many static entities"); + + ent = &cl_static_entities[i]; + cl.num_statics++; + CL_ParseBaseline (ent, version); //johnfitz -- added second parameter + +// copy it to the current state + + ent->model = cl.model_precache[ent->baseline.modelindex]; + ent->lerpflags |= LERP_RESETANIM; //johnfitz -- lerping + ent->frame = ent->baseline.frame; + + ent->colormap = vid.colormap; + ent->skinnum = ent->baseline.skin; + ent->effects = ent->baseline.effects; + ent->alpha = ent->baseline.alpha; //johnfitz -- alpha + ent->scale = ent->baseline.scale; + VectorCopy (ent->baseline.origin, ent->origin); + VectorCopy (ent->baseline.angles, ent->angles); + R_AddEfrags (ent); +} + +/* +=================== +CL_ParseStaticSound +=================== +*/ +void CL_ParseStaticSound (int version) //johnfitz -- added argument +{ + vec3_t org; + int sound_num, vol, atten; + int i; + + for (i = 0; i < 3; i++) + org[i] = MSG_ReadCoord (cl.protocolflags); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (version == 2) + sound_num = MSG_ReadShort (); + else + sound_num = MSG_ReadByte (); + //johnfitz + + vol = MSG_ReadByte (); + atten = MSG_ReadByte (); + + S_StaticSound (cl.sound_precache[sound_num], org, vol, atten); +} + + +#if 0 /* for debugging. from fteqw. */ +static void CL_DumpPacket (void) +{ + int i, pos; + unsigned char *packet = net_message.data; + + Con_Printf("CL_DumpPacket, BEGIN:\n"); + pos = 0; + while (pos < net_message.cursize) + { + Con_Printf("%5i ", pos); + for (i = 0; i < 16; i++) + { + if (pos >= net_message.cursize) + Con_Printf(" X "); + else Con_Printf("%2x ", packet[pos]); + pos++; + } + pos -= 16; + for (i = 0; i < 16; i++) + { + if (pos >= net_message.cursize) + Con_Printf("X"); + else if (packet[pos] == 0) + Con_Printf("."); + else Con_Printf("%c", packet[pos]); + pos++; + } + Con_Printf("\n"); + } + + Con_Printf("CL_DumpPacket, --- END ---\n"); +} +#endif /* CL_DumpPacket */ + +#define SHOWNET(x) if(cl_shownet.value==2)Con_Printf ("%3i:%s\n", msg_readcount-1, x); + +/* +===================== +CL_ParseServerMessage +===================== +*/ +void CL_ParseServerMessage (void) +{ + int cmd; + int i; + const char *str; //johnfitz + int total, j, lastcmd; //johnfitz + +// +// if recording demos, copy the message out +// + if (cl_shownet.value == 1) + Con_Printf ("%i ",net_message.cursize); + else if (cl_shownet.value == 2) + Con_Printf ("------------------\n"); + +// cl.onground = false; // unless the server says otherwise + +// +// parse the message +// + MSG_BeginReading (); + + lastcmd = 0; + while (1) + { + if (msg_badread) + Host_Error ("CL_ParseServerMessage: Bad server message"); + + cmd = MSG_ReadByte (); + + if (cmd == -1) + { + SHOWNET("END OF MESSAGE"); + return; // end of message + } + + // if the high bit of the command byte is set, it is a fast update + if (cmd & U_SIGNAL) //johnfitz -- was 128, changed for clarity + { + SHOWNET("fast update"); + CL_ParseUpdate (cmd&127); + continue; + } + + if (cmd < (int)NUM_SVC_STRINGS) { + SHOWNET(svc_strings[cmd]); + } + + // other commands + switch (cmd) + { + default: + // CL_DumpPacket (); + Host_Error ("Illegible server message %d (previous was %s)", cmd, svc_strings[lastcmd]); //johnfitz -- added svc_strings[lastcmd] + break; + + case svc_nop: + // Con_Printf ("svc_nop\n"); + break; + + case svc_time: + cl.mtime[1] = cl.mtime[0]; + cl.mtime[0] = MSG_ReadFloat (); + break; + + case svc_clientdata: + CL_ParseClientdata (); //johnfitz -- removed bits parameter, we will read this inside CL_ParseClientdata() + break; + + case svc_version: + i = MSG_ReadLong (); + //johnfitz -- support multiple protocols + if (i != PROTOCOL_NETQUAKE && i != PROTOCOL_FITZQUAKE && i != PROTOCOL_RMQ) + Host_Error ("Server returned version %i, not %i or %i or %i", i, PROTOCOL_NETQUAKE, PROTOCOL_FITZQUAKE, PROTOCOL_RMQ); + cl.protocol = i; + //johnfitz + break; + + case svc_disconnect: + Host_EndGame ("Server disconnected\n"); + + case svc_print: + Con_Printf ("%s", MSG_ReadString ()); + break; + + case svc_centerprint: + //johnfitz -- log centerprints to console + str = MSG_ReadString (); + SCR_CenterPrint (str); + Con_LogCenterPrint (str); + //johnfitz + break; + + case svc_stufftext: + Cbuf_AddText (MSG_ReadString ()); + break; + + case svc_damage: + V_ParseDamage (); + break; + + case svc_serverinfo: + CL_ParseServerInfo (); + vid.recalc_refdef = true; // leave intermission full screen + break; + + case svc_setangle: + for (i=0 ; i<3 ; i++) + cl.viewangles[i] = MSG_ReadAngle (cl.protocolflags); + break; + + case svc_setview: + cl.viewentity = MSG_ReadShort (); + break; + + case svc_lightstyle: + i = MSG_ReadByte (); + if (i >= MAX_LIGHTSTYLES) + Sys_Error ("svc_lightstyle > MAX_LIGHTSTYLES"); + q_strlcpy (cl_lightstyle[i].map, MSG_ReadString(), MAX_STYLESTRING); + cl_lightstyle[i].length = Q_strlen(cl_lightstyle[i].map); + //johnfitz -- save extra info + if (cl_lightstyle[i].length) + { + total = 0; + cl_lightstyle[i].peak = 'a'; + for (j=0; j<cl_lightstyle[i].length; j++) + { + total += cl_lightstyle[i].map[j] - 'a'; + cl_lightstyle[i].peak = q_max(cl_lightstyle[i].peak, cl_lightstyle[i].map[j]); + } + cl_lightstyle[i].average = total / cl_lightstyle[i].length + 'a'; + } + else + cl_lightstyle[i].average = cl_lightstyle[i].peak = 'm'; + //johnfitz + break; + + case svc_sound: + CL_ParseStartSoundPacket(); + break; + + case svc_stopsound: + i = MSG_ReadShort(); + S_StopSound(i>>3, i&7); + break; + + case svc_updatename: + Sbar_Changed (); + i = MSG_ReadByte (); + if (i >= cl.maxclients) + Host_Error ("CL_ParseServerMessage: svc_updatename > MAX_SCOREBOARD"); + q_strlcpy (cl.scores[i].name, MSG_ReadString(), MAX_SCOREBOARDNAME); + break; + + case svc_updatefrags: + Sbar_Changed (); + i = MSG_ReadByte (); + if (i >= cl.maxclients) + Host_Error ("CL_ParseServerMessage: svc_updatefrags > MAX_SCOREBOARD"); + cl.scores[i].frags = MSG_ReadShort (); + break; + + case svc_updatecolors: + Sbar_Changed (); + i = MSG_ReadByte (); + if (i >= cl.maxclients) + Host_Error ("CL_ParseServerMessage: svc_updatecolors > MAX_SCOREBOARD"); + cl.scores[i].colors = MSG_ReadByte (); + CL_NewTranslation (i); + break; + + case svc_particle: + R_ParseParticleEffect (); + break; + + case svc_spawnbaseline: + i = MSG_ReadShort (); + // must use CL_EntityNum() to force cl.num_entities up + CL_ParseBaseline (CL_EntityNum(i), 1); // johnfitz -- added second parameter + break; + + case svc_spawnstatic: + CL_ParseStatic (1); //johnfitz -- added parameter + break; + + case svc_temp_entity: + CL_ParseTEnt (); + break; + + case svc_setpause: + cl.paused = MSG_ReadByte (); + if (cl.paused) + { + CDAudio_Pause (); + BGM_Pause (); + } + else + { + CDAudio_Resume (); + BGM_Resume (); + } + break; + + case svc_signonnum: + i = MSG_ReadByte (); + if (i <= cls.signon) + Host_Error ("Received signon %i when at %i", i, cls.signon); + cls.signon = i; + //johnfitz -- if signonnum==2, signon packet has been fully parsed, so check for excessive static ents and efrags + if (i == 2) + { + if (cl.num_statics > 128) + Con_DWarning ("%i static entities exceeds standard limit of 128 (max = %d).\n", cl.num_statics, MAX_STATIC_ENTITIES); + R_CheckEfrags (); + } + //johnfitz + CL_SignonReply (); + break; + + case svc_killedmonster: + cl.stats[STAT_MONSTERS]++; + break; + + case svc_foundsecret: + cl.stats[STAT_SECRETS]++; + break; + + case svc_updatestat: + i = MSG_ReadByte (); + if (i < 0 || i >= MAX_CL_STATS) + Sys_Error ("svc_updatestat: %i is invalid", i); + cl.stats[i] = MSG_ReadLong ();; + break; + + case svc_spawnstaticsound: + CL_ParseStaticSound (1); //johnfitz -- added parameter + break; + + case svc_cdtrack: + cl.cdtrack = MSG_ReadByte (); + cl.looptrack = MSG_ReadByte (); + if ( (cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1) ) + BGM_PlayCDtrack ((byte)cls.forcetrack, true); + else + BGM_PlayCDtrack ((byte)cl.cdtrack, true); + break; + + case svc_intermission: + cl.intermission = 1; + cl.completed_time = cl.time; + vid.recalc_refdef = true; // go to full screen + V_RestoreAngles (); + break; + + case svc_finale: + cl.intermission = 2; + cl.completed_time = cl.time; + vid.recalc_refdef = true; // go to full screen + //johnfitz -- log centerprints to console + str = MSG_ReadString (); + SCR_CenterPrint (str); + Con_LogCenterPrint (str); + //johnfitz + V_RestoreAngles (); + break; + + case svc_cutscene: + cl.intermission = 3; + cl.completed_time = cl.time; + vid.recalc_refdef = true; // go to full screen + //johnfitz -- log centerprints to console + str = MSG_ReadString (); + SCR_CenterPrint (str); + Con_LogCenterPrint (str); + //johnfitz + V_RestoreAngles (); + break; + + case svc_sellscreen: + Cmd_ExecuteString ("help", src_command); + break; + + //johnfitz -- new svc types + case svc_skybox: + Sky_LoadSkyBox (MSG_ReadString()); + break; + + case svc_bf: + Cmd_ExecuteString ("bf", src_command); + break; + + case svc_fog: + Fog_ParseServerMessage (); + break; + + case svc_spawnbaseline2: //PROTOCOL_FITZQUAKE + i = MSG_ReadShort (); + // must use CL_EntityNum() to force cl.num_entities up + CL_ParseBaseline (CL_EntityNum(i), 2); + break; + + case svc_spawnstatic2: //PROTOCOL_FITZQUAKE + CL_ParseStatic (2); + break; + + case svc_spawnstaticsound2: //PROTOCOL_FITZQUAKE + CL_ParseStaticSound (2); + break; + //johnfitz + + //used by the 2021 rerelease + case svc_achievement: + str = MSG_ReadString(); + Con_DPrintf("Ignoring svc_achievement (%s)\n", str); + break; + case svc_localsound: + CL_ParseLocalSound(); + break; + } + + lastcmd = cmd; //johnfitz + } +} + diff --git a/Quake/cl_tent.c b/Quake/cl_tent.c new file mode 100644 index 0000000..496b89c --- /dev/null +++ b/Quake/cl_tent.c @@ -0,0 +1,361 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// cl_tent.c -- client side temporary entities + +#include "quakedef.h" + +int num_temp_entities; +entity_t cl_temp_entities[MAX_TEMP_ENTITIES]; +beam_t cl_beams[MAX_BEAMS]; + +sfx_t *cl_sfx_wizhit; +sfx_t *cl_sfx_knighthit; +sfx_t *cl_sfx_tink1; +sfx_t *cl_sfx_ric1; +sfx_t *cl_sfx_ric2; +sfx_t *cl_sfx_ric3; +sfx_t *cl_sfx_r_exp3; + +/* +================= +CL_ParseTEnt +================= +*/ +void CL_InitTEnts (void) +{ + cl_sfx_wizhit = S_PrecacheSound ("wizard/hit.wav"); + cl_sfx_knighthit = S_PrecacheSound ("hknight/hit.wav"); + cl_sfx_tink1 = S_PrecacheSound ("weapons/tink1.wav"); + cl_sfx_ric1 = S_PrecacheSound ("weapons/ric1.wav"); + cl_sfx_ric2 = S_PrecacheSound ("weapons/ric2.wav"); + cl_sfx_ric3 = S_PrecacheSound ("weapons/ric3.wav"); + cl_sfx_r_exp3 = S_PrecacheSound ("weapons/r_exp3.wav"); +} + +/* +================= +CL_ParseBeam +================= +*/ +void CL_ParseBeam (qmodel_t *m) +{ + int ent; + vec3_t start, end; + beam_t *b; + int i; + + ent = MSG_ReadShort (); + + start[0] = MSG_ReadCoord (cl.protocolflags); + start[1] = MSG_ReadCoord (cl.protocolflags); + start[2] = MSG_ReadCoord (cl.protocolflags); + + end[0] = MSG_ReadCoord (cl.protocolflags); + end[1] = MSG_ReadCoord (cl.protocolflags); + end[2] = MSG_ReadCoord (cl.protocolflags); + +// override any beam with the same entity + for (i=0, b=cl_beams ; i< MAX_BEAMS ; i++, b++) + if (b->entity == ent) + { + b->entity = ent; + b->model = m; + b->endtime = cl.time + 0.2; + VectorCopy (start, b->start); + VectorCopy (end, b->end); + return; + } + +// find a free beam + for (i=0, b=cl_beams ; i< MAX_BEAMS ; i++, b++) + { + if (!b->model || b->endtime < cl.time) + { + b->entity = ent; + b->model = m; + b->endtime = cl.time + 0.2; + VectorCopy (start, b->start); + VectorCopy (end, b->end); + return; + } + } + + //johnfitz -- less spammy overflow message + if (!dev_overflows.beams || dev_overflows.beams + CONSOLE_RESPAM_TIME < realtime ) + { + Con_Printf ("Beam list overflow!\n"); + dev_overflows.beams = realtime; + } + //johnfitz +} + +/* +================= +CL_ParseTEnt +================= +*/ +void CL_ParseTEnt (void) +{ + int type; + vec3_t pos; + dlight_t *dl; + int rnd; + int colorStart, colorLength; + + type = MSG_ReadByte (); + switch (type) + { + case TE_WIZSPIKE: // spike hitting wall + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_RunParticleEffect (pos, vec3_origin, 20, 30); + S_StartSound (-1, 0, cl_sfx_wizhit, pos, 1, 1); + break; + + case TE_KNIGHTSPIKE: // spike hitting wall + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_RunParticleEffect (pos, vec3_origin, 226, 20); + S_StartSound (-1, 0, cl_sfx_knighthit, pos, 1, 1); + break; + + case TE_SPIKE: // spike hitting wall + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_RunParticleEffect (pos, vec3_origin, 0, 10); + if ( rand() % 5 ) + S_StartSound (-1, 0, cl_sfx_tink1, pos, 1, 1); + else + { + rnd = rand() & 3; + if (rnd == 1) + S_StartSound (-1, 0, cl_sfx_ric1, pos, 1, 1); + else if (rnd == 2) + S_StartSound (-1, 0, cl_sfx_ric2, pos, 1, 1); + else + S_StartSound (-1, 0, cl_sfx_ric3, pos, 1, 1); + } + break; + case TE_SUPERSPIKE: // super spike hitting wall + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_RunParticleEffect (pos, vec3_origin, 0, 20); + + if ( rand() % 5 ) + S_StartSound (-1, 0, cl_sfx_tink1, pos, 1, 1); + else + { + rnd = rand() & 3; + if (rnd == 1) + S_StartSound (-1, 0, cl_sfx_ric1, pos, 1, 1); + else if (rnd == 2) + S_StartSound (-1, 0, cl_sfx_ric2, pos, 1, 1); + else + S_StartSound (-1, 0, cl_sfx_ric3, pos, 1, 1); + } + break; + + case TE_GUNSHOT: // bullet hitting wall + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_RunParticleEffect (pos, vec3_origin, 0, 20); + break; + + case TE_EXPLOSION: // rocket explosion + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_ParticleExplosion (pos); + dl = CL_AllocDlight (0); + VectorCopy (pos, dl->origin); + dl->radius = 350; + dl->die = cl.time + 0.5; + dl->decay = 300; + S_StartSound (-1, 0, cl_sfx_r_exp3, pos, 1, 1); + break; + + case TE_TAREXPLOSION: // tarbaby explosion + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_BlobExplosion (pos); + + S_StartSound (-1, 0, cl_sfx_r_exp3, pos, 1, 1); + break; + + case TE_LIGHTNING1: // lightning bolts + CL_ParseBeam (Mod_ForName("progs/bolt.mdl", true)); + break; + + case TE_LIGHTNING2: // lightning bolts + CL_ParseBeam (Mod_ForName("progs/bolt2.mdl", true)); + break; + + case TE_LIGHTNING3: // lightning bolts + CL_ParseBeam (Mod_ForName("progs/bolt3.mdl", true)); + break; + +// PGM 01/21/97 + case TE_BEAM: // grappling hook beam + CL_ParseBeam (Mod_ForName("progs/beam.mdl", true)); + break; +// PGM 01/21/97 + + case TE_LAVASPLASH: + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_LavaSplash (pos); + break; + + case TE_TELEPORT: + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + R_TeleportSplash (pos); + break; + + case TE_EXPLOSION2: // color mapped explosion + pos[0] = MSG_ReadCoord (cl.protocolflags); + pos[1] = MSG_ReadCoord (cl.protocolflags); + pos[2] = MSG_ReadCoord (cl.protocolflags); + colorStart = MSG_ReadByte (); + colorLength = MSG_ReadByte (); + R_ParticleExplosion2 (pos, colorStart, colorLength); + dl = CL_AllocDlight (0); + VectorCopy (pos, dl->origin); + dl->radius = 350; + dl->die = cl.time + 0.5; + dl->decay = 300; + S_StartSound (-1, 0, cl_sfx_r_exp3, pos, 1, 1); + break; + + default: + Sys_Error ("CL_ParseTEnt: bad type"); + } +} + + +/* +================= +CL_NewTempEntity +================= +*/ +entity_t *CL_NewTempEntity (void) +{ + entity_t *ent; + + if (cl_numvisedicts == MAX_VISEDICTS) + return NULL; + if (num_temp_entities == MAX_TEMP_ENTITIES) + return NULL; + ent = &cl_temp_entities[num_temp_entities]; + memset (ent, 0, sizeof(*ent)); + num_temp_entities++; + cl_visedicts[cl_numvisedicts] = ent; + cl_numvisedicts++; + ent->scale = ENTSCALE_DEFAULT; + ent->colormap = vid.colormap; + return ent; +} + + +/* +================= +CL_UpdateTEnts +================= +*/ +void CL_UpdateTEnts (void) +{ + int i, j; //johnfitz -- use j instead of using i twice, so we don't corrupt memory + beam_t *b; + vec3_t dist, org; + float d; + entity_t *ent; + float yaw, pitch; + float forward; + + num_temp_entities = 0; + + srand ((int) (cl.time * 1000)); //johnfitz -- freeze beams when paused + +// update lightning + for (i=0, b=cl_beams ; i< MAX_BEAMS ; i++, b++) + { + if (!b->model || b->endtime < cl.time) + continue; + + // if coming from the player, update the start position + if (b->entity == cl.viewentity) + { + VectorCopy (cl_entities[cl.viewentity].origin, b->start); + } + + // calculate pitch and yaw + VectorSubtract (b->end, b->start, dist); + + if (dist[1] == 0 && dist[0] == 0) + { + yaw = 0; + if (dist[2] > 0) + pitch = 90; + else + pitch = 270; + } + else + { + yaw = (int) (atan2(dist[1], dist[0]) * 180 / M_PI); + if (yaw < 0) + yaw += 360; + + forward = sqrt (dist[0]*dist[0] + dist[1]*dist[1]); + pitch = (int) (atan2(dist[2], forward) * 180 / M_PI); + if (pitch < 0) + pitch += 360; + } + + // add new entities for the lightning + VectorCopy (b->start, org); + d = VectorNormalize(dist); + while (d > 0) + { + ent = CL_NewTempEntity (); + if (!ent) + return; + VectorCopy (org, ent->origin); + ent->model = b->model; + ent->angles[0] = pitch; + ent->angles[1] = yaw; + ent->angles[2] = rand()%360; + + //johnfitz -- use j instead of using i twice, so we don't corrupt memory + for (j=0 ; j<3 ; j++) + org[j] += dist[j]*30; + d -= 30; + } + } +} diff --git a/Quake/client.h b/Quake/client.h new file mode 100644 index 0000000..e00d0ad --- /dev/null +++ b/Quake/client.h @@ -0,0 +1,379 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _CLIENT_H_ +#define _CLIENT_H_ + +// client.h + +typedef struct +{ + int length; + char map[MAX_STYLESTRING]; + char average; //johnfitz + char peak; //johnfitz +} lightstyle_t; + +typedef struct +{ + char name[MAX_SCOREBOARDNAME]; + float entertime; + int frags; + int colors; // two 4 bit fields + byte translations[VID_GRADES*256]; +} scoreboard_t; + +typedef struct +{ + int destcolor[3]; + int percent; // 0-256 +} cshift_t; + +#define CSHIFT_CONTENTS 0 +#define CSHIFT_DAMAGE 1 +#define CSHIFT_BONUS 2 +#define CSHIFT_POWERUP 3 +#define NUM_CSHIFTS 4 + +#define NAME_LENGTH 64 + + +// +// client_state_t should hold all pieces of the client state +// + +#define SIGNONS 4 // signon messages to receive before connected + +#define MAX_DLIGHTS 64 //johnfitz -- was 32 +typedef struct +{ + vec3_t origin; + float radius; + float die; // stop lighting after this time + float decay; // drop this each second + float minlight; // don't add when contributing less + int key; + vec3_t color; //johnfitz -- lit support via lordhavoc +} dlight_t; + + +#define MAX_BEAMS 32 //johnfitz -- was 24 +typedef struct +{ + int entity; + struct qmodel_s *model; + float endtime; + vec3_t start, end; +} beam_t; + +#define MAX_MAPSTRING 2048 +#define MAX_DEMOS 8 +#define MAX_DEMONAME 16 + +typedef enum { +ca_dedicated, // a dedicated server with no ability to start a client +ca_disconnected, // full screen console with no connection +ca_connected // valid netcon, talking to a server +} cactive_t; + +// +// the client_static_t structure is persistant through an arbitrary number +// of server connections +// +typedef struct +{ + cactive_t state; + +// personalization data sent to server + char spawnparms[MAX_MAPSTRING]; // to restart a level + +// demo loop control + int demonum; // -1 = don't play demos + char demos[MAX_DEMOS][MAX_DEMONAME]; // when not playing + +// demo recording info must be here, because record is started before +// entering a map (and clearing client_state_t) + qboolean demorecording; + qboolean demoplayback; + +// did the user pause demo playback? (separate from cl.paused because we don't +// want a svc_setpause inside the demo to actually pause demo playback). + qboolean demopaused; + + qboolean timedemo; + int forcetrack; // -1 = use normal cd track + FILE *demofile; + int td_lastframe; // to meter out one message a frame + int td_startframe; // host_framecount at start + float td_starttime; // realtime at second frame of timedemo + +// connection information + int signon; // 0 to SIGNONS + struct qsocket_s *netcon; + sizebuf_t message; // writing buffer to send to server + +} client_static_t; + +extern client_static_t cls; + +// +// the client_state_t structure is wiped completely at every +// server signon +// +typedef struct +{ + int movemessages; // since connecting to this server + // throw out the first couple, so the player + // doesn't accidentally do something the + // first frame + usercmd_t cmd; // last command sent to the server + +// information for local display + int stats[MAX_CL_STATS]; // health, etc + int items; // inventory bit flags + float item_gettime[32]; // cl.time of aquiring item, for blinking + float faceanimtime; // use anim frame if cl.time < this + + cshift_t cshifts[NUM_CSHIFTS]; // color shifts for damage, powerups + cshift_t prev_cshifts[NUM_CSHIFTS]; // and content types + +// the client maintains its own idea of view angles, which are +// sent to the server each frame. The server sets punchangle when +// the view is temporarliy offset, and an angle reset commands at the start +// of each level and after teleporting. + vec3_t mviewangles[2]; // during demo playback viewangles is lerped + // between these + vec3_t viewangles; + + vec3_t mvelocity[2]; // update by server, used for lean+bob + // (0 is newest) + vec3_t velocity; // lerped between mvelocity[0] and [1] + + vec3_t punchangle; // temporary offset + +// pitch drifting vars + float idealpitch; + float pitchvel; + qboolean nodrift; + float driftmove; + double laststop; + + float viewheight; + float crouch; // local amount for smoothing stepups + + qboolean paused; // send over by server + qboolean onground; + qboolean inwater; + + int intermission; // don't change view angle, full screen, etc + int completed_time; // latched at intermission start + + double mtime[2]; // the timestamp of last two messages + double time; // clients view of time, should be between + // servertime and oldservertime to generate + // a lerp point for other data + double oldtime; // previous cl.time, time-oldtime is used + // to decay light values and smooth step ups + + + float last_received_message; // (realtime) for net trouble icon + +// +// information that is static for the entire time connected to a server +// + struct qmodel_s *model_precache[MAX_MODELS]; + struct sfx_s *sound_precache[MAX_SOUNDS]; + + char mapname[128]; + char levelname[128]; // for display on solo scoreboard //johnfitz -- was 40. + int viewentity; // cl_entitites[cl.viewentity] = player + int maxclients; + int gametype; + +// refresh related state + struct qmodel_s *worldmodel; // cl_entitites[0].model + struct efrag_s *free_efrags; + int num_efrags; + int num_entities; // held in cl_entities array + int num_statics; // held in cl_staticentities array + entity_t viewent; // the gun model + + int cdtrack, looptrack; // cd audio + +// frag scoreboard + scoreboard_t *scores; // [cl.maxclients] + + unsigned protocol; //johnfitz + unsigned protocolflags; +} client_state_t; + + +// +// cvars +// +extern cvar_t cl_name; +extern cvar_t cl_color; + +extern cvar_t cl_upspeed; +extern cvar_t cl_forwardspeed; +extern cvar_t cl_backspeed; +extern cvar_t cl_sidespeed; + +extern cvar_t cl_movespeedkey; + +extern cvar_t cl_yawspeed; +extern cvar_t cl_pitchspeed; + +extern cvar_t cl_anglespeedkey; + +extern cvar_t cl_alwaysrun; // QuakeSpasm + +extern cvar_t cl_autofire; + +extern cvar_t cl_shownet; +extern cvar_t cl_nolerp; + +extern cvar_t cfg_unbindall; + +extern cvar_t cl_pitchdriftspeed; +extern cvar_t lookspring; +extern cvar_t lookstrafe; +extern cvar_t sensitivity; + +extern cvar_t m_pitch; +extern cvar_t m_yaw; +extern cvar_t m_forward; +extern cvar_t m_side; + +extern cvar_t cl_startdemos; + + +#define MAX_TEMP_ENTITIES 256 //johnfitz -- was 64 +#define MAX_STATIC_ENTITIES 4096 //ericw -- was 512 //johnfitz -- was 128 +#define MAX_VISEDICTS 4096 // larger, now we support BSP2 + +extern client_state_t cl; + +// FIXME, allocate dynamically +extern entity_t cl_static_entities[MAX_STATIC_ENTITIES]; +extern lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES]; +extern dlight_t cl_dlights[MAX_DLIGHTS]; +extern entity_t cl_temp_entities[MAX_TEMP_ENTITIES]; +extern beam_t cl_beams[MAX_BEAMS]; +extern entity_t *cl_visedicts[MAX_VISEDICTS]; +extern int cl_numvisedicts; + +extern entity_t *cl_entities; //johnfitz -- was a static array, now on hunk +extern int cl_max_edicts; //johnfitz -- only changes when new map loads + +//============================================================================= + +// +// cl_main +// +dlight_t *CL_AllocDlight (int key); +void CL_DecayLights (void); + +void CL_Init (void); + +void CL_EstablishConnection (const char *host); +void CL_Signon1 (void); +void CL_Signon2 (void); +void CL_Signon3 (void); +void CL_Signon4 (void); + +void CL_Disconnect (void); +void CL_Disconnect_f (void); +void CL_NextDemo (void); + +// +// cl_input +// +typedef struct +{ + int down[2]; // key nums holding it down + int state; // low bit is down state +} kbutton_t; + +extern kbutton_t in_mlook, in_klook; +extern kbutton_t in_strafe; +extern kbutton_t in_speed; + +void CL_InitInput (void); +void CL_SendCmd (void); +void CL_SendMove (const usercmd_t *cmd); +int CL_ReadFromServer (void); +void CL_BaseMove (usercmd_t *cmd); + +void CL_ParseTEnt (void); +void CL_UpdateTEnts (void); + +void CL_ClearState (void); + +// +// cl_demo.c +// +void CL_StopPlayback (void); +int CL_GetMessage (void); +void CL_ClearSignons (void); + +void CL_Stop_f (void); +void CL_Record_f (void); +void CL_PlayDemo_f (void); +void CL_TimeDemo_f (void); + +// +// cl_parse.c +// +void CL_ParseServerMessage (void); +void CL_NewTranslation (int slot); + +// +// view +// +void V_StartPitchDrift (void); +void V_StopPitchDrift (void); + +void V_RenderView (void); +//void V_UpdatePalette (void); //johnfitz +void V_Register (void); +void V_ParseDamage (void); +void V_SetContentsColor (int contents); + +// +// cl_tent +// +void CL_InitTEnts (void); +void CL_SignonReply (void); + +// +// chase +// +extern cvar_t chase_active; + +void Chase_Init (void); +void TraceLine (vec3_t start, vec3_t end, vec3_t impact); +void Chase_UpdateForClient (void); //johnfitz +void Chase_UpdateForDrawing (void); //johnfitz + +#endif /* _CLIENT_H_ */ + diff --git a/Quake/cmd.c b/Quake/cmd.c new file mode 100644 index 0000000..0e02845 --- /dev/null +++ b/Quake/cmd.c @@ -0,0 +1,869 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// cmd.c -- Quake script command processing module + +#include "quakedef.h" + +void Cmd_ForwardToServer (void); + +#define MAX_ALIAS_NAME 32 + +#define CMDLINE_LENGTH 256 //johnfitz -- mirrored in common.c + +typedef struct cmdalias_s +{ + struct cmdalias_s *next; + char name[MAX_ALIAS_NAME]; + char *value; +} cmdalias_t; + +cmdalias_t *cmd_alias; + +qboolean cmd_wait; + +//============================================================================= + +/* +============ +Cmd_Wait_f + +Causes execution of the remainder of the command buffer to be delayed until +next frame. This allows commands like: +bind g "impulse 5 ; +attack ; wait ; -attack ; impulse 2" +============ +*/ +void Cmd_Wait_f (void) +{ + cmd_wait = true; +} + +/* +============================================================================= + + COMMAND BUFFER + +============================================================================= +*/ + +sizebuf_t cmd_text; + +/* +============ +Cbuf_Init +============ +*/ +void Cbuf_Init (void) +{ + SZ_Alloc (&cmd_text, 1<<18); // space for commands and script files. spike -- was 8192, but modern configs can be _HUGE_, at least if they contain lots of comments/docs for things. +} + + +/* +============ +Cbuf_AddText + +Adds command text at the end of the buffer +============ +*/ +void Cbuf_AddText (const char *text) +{ + int l; + + l = Q_strlen (text); + + if (cmd_text.cursize + l >= cmd_text.maxsize) + { + Con_Printf ("Cbuf_AddText: overflow\n"); + return; + } + + SZ_Write (&cmd_text, text, Q_strlen (text)); +} + + +/* +============ +Cbuf_InsertText + +Adds command text immediately after the current command +Adds a \n to the text +FIXME: actually change the command buffer to do less copying +============ +*/ +void Cbuf_InsertText (const char *text) +{ + char *temp; + int templen; + +// copy off any commands still remaining in the exec buffer + templen = cmd_text.cursize; + if (templen) + { + temp = (char *) Z_Malloc (templen); + Q_memcpy (temp, cmd_text.data, templen); + SZ_Clear (&cmd_text); + } + else + temp = NULL; // shut up compiler + +// add the entire text of the file + Cbuf_AddText (text); + SZ_Write (&cmd_text, "\n", 1); +// add the copied off data + if (templen) + { + SZ_Write (&cmd_text, temp, templen); + Z_Free (temp); + } +} + +/* +============ +Cbuf_Execute +============ +*/ +void Cbuf_Execute (void) +{ + int i; + char *text; + char line[1024]; + int quotes; + + while (cmd_text.cursize) + { +// find a \n or ; line break + text = (char *)cmd_text.data; + + quotes = 0; + for (i=0 ; i< cmd_text.cursize ; i++) + { + if (text[i] == '"') + quotes++; + if ( !(quotes&1) && text[i] == ';') + break; // don't break if inside a quoted string + if (text[i] == '\n') + break; + } + + if (i > (int)sizeof(line) - 1) + { + memcpy (line, text, sizeof(line) - 1); + line[sizeof(line) - 1] = 0; + } + else + { + memcpy (line, text, i); + line[i] = 0; + } + +// delete the text from the command buffer and move remaining commands down +// this is necessary because commands (exec, alias) can insert data at the +// beginning of the text buffer + + if (i == cmd_text.cursize) + cmd_text.cursize = 0; + else + { + i++; + cmd_text.cursize -= i; + memmove (text, text + i, cmd_text.cursize); + } + +// execute the command line + Cmd_ExecuteString (line, src_command); + + if (cmd_wait) + { // skip out while text still remains in buffer, leaving it + // for next frame + cmd_wait = false; + break; + } + } +} + +/* +============================================================================== + + SCRIPT COMMANDS + +============================================================================== +*/ + +/* +=============== +Cmd_StuffCmds_f -- johnfitz -- rewritten to read the "cmdline" cvar, for use with dynamic mod loading + +Adds command line parameters as script statements +Commands lead with a +, and continue until a - or another + +quake +prog jctest.qp +cmd amlev1 +quake -nosound +cmd amlev1 +=============== +*/ +void Cmd_StuffCmds_f (void) +{ + extern cvar_t cmdline; + char cmds[CMDLINE_LENGTH]; + int i, j, plus; + + plus = false; // On Unix, argv[0] is command name + + for (i = 0, j = 0; cmdline.string[i]; i++) + { + if (cmdline.string[i] == '+') + { + plus = true; + if (j > 0) + { + cmds[j-1] = ';'; + cmds[j++] = ' '; + } + } + else if (cmdline.string[i] == '-' && + (i==0 || cmdline.string[i-1] == ' ')) //johnfitz -- allow hypenated map names with +map + plus = false; + else if (plus) + cmds[j++] = cmdline.string[i]; + } + cmds[j] = 0; + + Cbuf_InsertText (cmds); +} + +/* id1/pak0.pak from 2021 re-release doesn't have a default.cfg + * embedding Quakespasm's customized default.cfg for that... */ +#include "default_cfg.h" + +/* +=============== +Cmd_Exec_f +=============== +*/ +void Cmd_Exec_f (void) +{ + const char *f; + int mark; + + if (Cmd_Argc () != 2) + { + Con_Printf ("exec <filename> : execute a script file\n"); + return; + } + + mark = Hunk_LowMark (); + f = (const char *)COM_LoadHunkFile (Cmd_Argv(1), NULL); + if (!f && !strcmp(Cmd_Argv(1), "default.cfg")) { + f = default_cfg; /* see above.. */ + } + if (!f) + { + Con_Printf ("couldn't exec %s\n",Cmd_Argv(1)); + return; + } + Con_Printf ("execing %s\n",Cmd_Argv(1)); + + Cbuf_InsertText (f); + if (f != default_cfg) { + Hunk_FreeToLowMark (mark); + } +} + + +/* +=============== +Cmd_Echo_f + +Just prints the rest of the line to the console +=============== +*/ +void Cmd_Echo_f (void) +{ + int i; + + for (i=1 ; i<Cmd_Argc() ; i++) + Con_Printf ("%s ",Cmd_Argv(i)); + Con_Printf ("\n"); +} + +/* +=============== +Cmd_Alias_f -- johnfitz -- rewritten + +Creates a new command that executes a command string (possibly ; seperated) +=============== +*/ +void Cmd_Alias_f (void) +{ + cmdalias_t *a; + char cmd[1024]; + int i, c; + const char *s; + + + switch (Cmd_Argc()) + { + case 1: //list all aliases + for (a = cmd_alias, i = 0; a; a=a->next, i++) + Con_SafePrintf (" %s: %s", a->name, a->value); + if (i) + Con_SafePrintf ("%i alias command(s)\n", i); + else + Con_SafePrintf ("no alias commands found\n"); + break; + case 2: //output current alias string + for (a = cmd_alias ; a ; a=a->next) + if (!strcmp(Cmd_Argv(1), a->name)) + Con_Printf (" %s: %s", a->name, a->value); + break; + default: //set alias string + s = Cmd_Argv(1); + if (strlen(s) >= MAX_ALIAS_NAME) + { + Con_Printf ("Alias name is too long\n"); + return; + } + + // if the alias already exists, reuse it + for (a = cmd_alias ; a ; a=a->next) + { + if (!strcmp(s, a->name)) + { + Z_Free (a->value); + break; + } + } + + if (!a) + { + a = (cmdalias_t *) Z_Malloc (sizeof(cmdalias_t)); + a->next = cmd_alias; + cmd_alias = a; + } + strcpy (a->name, s); + + // copy the rest of the command line + cmd[0] = 0; // start out with a null string + c = Cmd_Argc(); + for (i = 2; i < c; i++) + { + q_strlcat (cmd, Cmd_Argv(i), sizeof(cmd)); + if (i != c - 1) + q_strlcat (cmd, " ", sizeof(cmd)); + } + if (q_strlcat(cmd, "\n", sizeof(cmd)) >= sizeof(cmd)) + { + Con_Printf("alias value too long!\n"); + cmd[0] = '\n'; // nullify the string + cmd[1] = 0; + } + + a->value = Z_Strdup (cmd); + break; + } +} + +/* +=============== +Cmd_Unalias_f -- johnfitz +=============== +*/ +void Cmd_Unalias_f (void) +{ + cmdalias_t *a, *prev; + + switch (Cmd_Argc()) + { + default: + case 1: + Con_Printf("unalias <name> : delete alias\n"); + break; + case 2: + prev = NULL; + for (a = cmd_alias; a; a = a->next) + { + if (!strcmp(Cmd_Argv(1), a->name)) + { + if (prev) + prev->next = a->next; + else + cmd_alias = a->next; + + Z_Free (a->value); + Z_Free (a); + return; + } + prev = a; + } + Con_Printf ("No alias named %s\n", Cmd_Argv(1)); + break; + } +} + +/* +=============== +Cmd_Unaliasall_f -- johnfitz +=============== +*/ +void Cmd_Unaliasall_f (void) +{ + cmdalias_t *blah; + + while (cmd_alias) + { + blah = cmd_alias->next; + Z_Free(cmd_alias->value); + Z_Free(cmd_alias); + cmd_alias = blah; + } +} + +/* +============================================================================= + + COMMAND EXECUTION + +============================================================================= +*/ + +typedef struct cmd_function_s +{ + struct cmd_function_s *next; + const char *name; + xcommand_t function; +} cmd_function_t; + + +#define MAX_ARGS 80 + +static int cmd_argc; +static char *cmd_argv[MAX_ARGS]; +static char cmd_null_string[] = ""; +static const char *cmd_args = NULL; + +cmd_source_t cmd_source; + +//johnfitz -- better tab completion +//static cmd_function_t *cmd_functions; // possible commands to execute +cmd_function_t *cmd_functions; // possible commands to execute +//johnfitz + +/* +============ +Cmd_List_f -- johnfitz +============ +*/ +void Cmd_List_f (void) +{ + cmd_function_t *cmd; + const char *partial; + int len, count; + + if (Cmd_Argc() > 1) + { + partial = Cmd_Argv (1); + len = Q_strlen(partial); + } + else + { + partial = NULL; + len = 0; + } + + count=0; + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + { + if (partial && Q_strncmp (partial,cmd->name, len)) + { + continue; + } + Con_SafePrintf (" %s\n", cmd->name); + count++; + } + + Con_SafePrintf ("%i commands", count); + if (partial) + { + Con_SafePrintf (" beginning with \"%s\"", partial); + } + Con_SafePrintf ("\n"); +} + +static char *Cmd_TintSubstring(const char *in, const char *substr, char *out, size_t outsize) +{ + int l; + char *m; + q_strlcpy(out, in, outsize); + while ((m = q_strcasestr(out, substr))) + { + l = strlen(substr); + while (l-->0) + if (*m >= ' ' && *m < 127) + *m++ |= 0x80; + } + return out; +} + +/* +============ +Cmd_Apropos_f + +scans through each command and cvar names+descriptions for the given substring +we don't support descriptions, so this isn't really all that useful, but even without the sake of consistency it still combines cvars+commands under a single command. +============ +*/ +void Cmd_Apropos_f(void) +{ + char tmpbuf[256]; + int hits = 0; + cmd_function_t *cmd; + cvar_t *var; + const char *substr = Cmd_Argv (1); + if (!*substr) + { + Con_SafePrintf ("%s <substring> : search through commands and cvars for the given substring\n", Cmd_Argv(0)); + return; + } + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + { + if (q_strcasestr(cmd->name, substr)) + { + hits++; + Con_SafePrintf ("%s\n", Cmd_TintSubstring(cmd->name, substr, tmpbuf, sizeof(tmpbuf))); + } + } + + for (var=Cvar_FindVarAfter("", 0) ; var ; var=var->next) + { + if (q_strcasestr(var->name, substr)) + { + hits++; + Con_SafePrintf ("%s (current value: \"%s\")\n", Cmd_TintSubstring(var->name, substr, tmpbuf, sizeof(tmpbuf)), var->string); + } + } + if (!hits) + Con_SafePrintf ("no cvars nor commands contain that substring\n"); +} + +/* +============ +Cmd_Init +============ +*/ +void Cmd_Init (void) +{ + Cmd_AddCommand ("cmdlist", Cmd_List_f); //johnfitz + Cmd_AddCommand ("unalias", Cmd_Unalias_f); //johnfitz + Cmd_AddCommand ("unaliasall", Cmd_Unaliasall_f); //johnfitz + + Cmd_AddCommand ("stuffcmds",Cmd_StuffCmds_f); + Cmd_AddCommand ("exec",Cmd_Exec_f); + Cmd_AddCommand ("echo",Cmd_Echo_f); + Cmd_AddCommand ("alias",Cmd_Alias_f); + Cmd_AddCommand ("cmd", Cmd_ForwardToServer); + Cmd_AddCommand ("wait", Cmd_Wait_f); + + Cmd_AddCommand ("apropos", Cmd_Apropos_f); + Cmd_AddCommand ("find", Cmd_Apropos_f); +} + +/* +============ +Cmd_Argc +============ +*/ +int Cmd_Argc (void) +{ + return cmd_argc; +} + +/* +============ +Cmd_Argv +============ +*/ +const char *Cmd_Argv (int arg) +{ + if (arg < 0 || arg >= cmd_argc) + return cmd_null_string; + return cmd_argv[arg]; +} + +/* +============ +Cmd_Args +============ +*/ +const char *Cmd_Args (void) +{ + return cmd_args; +} + + +/* +============ +Cmd_TokenizeString + +Parses the given string into command line tokens. +============ +*/ +void Cmd_TokenizeString (const char *text) +{ + int i; + +// clear the args from the last string + for (i=0 ; i<cmd_argc ; i++) + Z_Free (cmd_argv[i]); + + cmd_argc = 0; + cmd_args = NULL; + + while (1) + { +// skip whitespace up to a /n + while (*text && *text <= ' ' && *text != '\n') + { + text++; + } + + if (*text == '\n') + { // a newline seperates commands in the buffer + text++; + break; + } + + if (!*text) + return; + + if (cmd_argc == 1) + cmd_args = text; + + text = COM_Parse (text); + if (!text) + return; + + if (cmd_argc < MAX_ARGS) + { + cmd_argv[cmd_argc] = Z_Strdup (com_token); + cmd_argc++; + } + } + +} + +/* +============ +Cmd_AddCommand +============ +*/ +void Cmd_AddCommand (const char *cmd_name, xcommand_t function) +{ + cmd_function_t *cmd; + cmd_function_t *cursor,*prev; //johnfitz -- sorted list insert + + if (host_initialized) // because hunk allocation would get stomped + Sys_Error ("Cmd_AddCommand after host_initialized"); + +// fail if the command is a variable name + if (Cvar_VariableString(cmd_name)[0]) + { + Con_Printf ("Cmd_AddCommand: %s already defined as a var\n", cmd_name); + return; + } + +// fail if the command already exists + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + { + if (!Q_strcmp (cmd_name, cmd->name)) + { + Con_Printf ("Cmd_AddCommand: %s already defined\n", cmd_name); + return; + } + } + + cmd = (cmd_function_t *) Hunk_Alloc (sizeof(cmd_function_t)); + cmd->name = cmd_name; + cmd->function = function; + + //johnfitz -- insert each entry in alphabetical order + if (cmd_functions == NULL || strcmp(cmd->name, cmd_functions->name) < 0) //insert at front + { + cmd->next = cmd_functions; + cmd_functions = cmd; + } + else //insert later + { + prev = cmd_functions; + cursor = cmd_functions->next; + while ((cursor != NULL) && (strcmp(cmd->name, cursor->name) > 0)) + { + prev = cursor; + cursor = cursor->next; + } + cmd->next = prev->next; + prev->next = cmd; + } + //johnfitz +} + +/* +============ +Cmd_Exists +============ +*/ +qboolean Cmd_Exists (const char *cmd_name) +{ + cmd_function_t *cmd; + + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + { + if (!Q_strcmp (cmd_name,cmd->name)) + return true; + } + + return false; +} + + + +/* +============ +Cmd_CompleteCommand +============ +*/ +const char *Cmd_CompleteCommand (const char *partial) +{ + cmd_function_t *cmd; + int len; + + len = Q_strlen(partial); + + if (!len) + return NULL; + +// check functions + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + if (!Q_strncmp (partial,cmd->name, len)) + return cmd->name; + + return NULL; +} + +/* +============ +Cmd_ExecuteString + +A complete command line has been parsed, so try to execute it +FIXME: lookupnoadd the token to speed search? +============ +*/ +void Cmd_ExecuteString (const char *text, cmd_source_t src) +{ + cmd_function_t *cmd; + cmdalias_t *a; + + cmd_source = src; + Cmd_TokenizeString (text); + +// execute the command line + if (!Cmd_Argc()) + return; // no tokens + +// check functions + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + { + if (!q_strcasecmp (cmd_argv[0],cmd->name)) + { + cmd->function (); + return; + } + } + +// check alias + for (a=cmd_alias ; a ; a=a->next) + { + if (!q_strcasecmp (cmd_argv[0], a->name)) + { + Cbuf_InsertText (a->value); + return; + } + } + +// check cvars + if (!Cvar_Command ()) + Con_Printf ("Unknown command \"%s\"\n", Cmd_Argv(0)); +} + + +/* +=================== +Cmd_ForwardToServer + +Sends the entire command line over to the server +=================== +*/ +void Cmd_ForwardToServer (void) +{ + if (cls.state != ca_connected) + { + Con_Printf ("Can't \"%s\", not connected\n", Cmd_Argv(0)); + return; + } + + if (cls.demoplayback) + return; // not really connected + + MSG_WriteByte (&cls.message, clc_stringcmd); + if (q_strcasecmp(Cmd_Argv(0), "cmd") != 0) + { + SZ_Print (&cls.message, Cmd_Argv(0)); + SZ_Print (&cls.message, " "); + } + if (Cmd_Argc() > 1) + SZ_Print (&cls.message, Cmd_Args()); + else + SZ_Print (&cls.message, "\n"); +} + + +/* +================ +Cmd_CheckParm + +Returns the position (1 to argc-1) in the command's argument list +where the given parameter apears, or 0 if not present +================ +*/ + +int Cmd_CheckParm (const char *parm) +{ + int i; + + if (!parm) + Sys_Error ("Cmd_CheckParm: null input\n"); + + for (i = 1; i < Cmd_Argc (); i++) + if ( !q_strcasecmp (parm, Cmd_Argv (i)) ) + return i; + + return 0; +} + diff --git a/Quake/cmd.h b/Quake/cmd.h new file mode 100644 index 0000000..9f688e2 --- /dev/null +++ b/Quake/cmd.h @@ -0,0 +1,127 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_CMD_H +#define _QUAKE_CMD_H + +// cmd.h -- Command buffer and command execution + +//=========================================================================== + +/* + +Any number of commands can be added in a frame, from several different sources. +Most commands come from either keybindings or console line input, but remote +servers can also send across commands and entire text files can be execed. + +The + command line options are also added to the command buffer. + +The game starts with a Cbuf_AddText ("exec quake.rc\n"); Cbuf_Execute (); + +*/ + +void Cbuf_Init (void); +// allocates an initial text buffer that will grow as needed + +void Cbuf_AddText (const char *text); +// as new commands are generated from the console or keybindings, +// the text is added to the end of the command buffer. + +void Cbuf_InsertText (const char *text); +// when a command wants to issue other commands immediately, the text is +// inserted at the beginning of the buffer, before any remaining unexecuted +// commands. + +void Cbuf_Execute (void); +// Pulls off \n terminated lines of text from the command buffer and sends +// them through Cmd_ExecuteString. Stops when the buffer is empty. +// Normally called once per frame, but may be explicitly invoked. +// Do not call inside a command function! + +//=========================================================================== + +/* + +Command execution takes a null terminated string, breaks it into tokens, +then searches for a command or variable that matches the first token. + +Commands can come from three sources, but the handler functions may choose +to dissallow the action or forward it to a remote server if the source is +not apropriate. + +*/ + +typedef void (*xcommand_t) (void); + +typedef enum +{ + src_client, // came in over a net connection as a clc_stringcmd + // host_client will be valid during this state. + src_command // from the command buffer +} cmd_source_t; + +extern cmd_source_t cmd_source; + +void Cmd_Init (void); + +void Cmd_AddCommand (const char *cmd_name, xcommand_t function); +// called by the init functions of other parts of the program to +// register commands and functions to call for them. +// The cmd_name is referenced later, so it should not be in temp memory + +qboolean Cmd_Exists (const char *cmd_name); +// used by the cvar code to check for cvar / command name overlap + +const char *Cmd_CompleteCommand (const char *partial); +// attempts to match a partial command for automatic command line completion +// returns NULL if nothing fits + +int Cmd_Argc (void); +const char *Cmd_Argv (int arg); +const char *Cmd_Args (void); +// The functions that execute commands get their parameters with these +// functions. Cmd_Argv () will return an empty string, not a NULL +// if arg > argc, so string operations are allways safe. + +int Cmd_CheckParm (const char *parm); +// Returns the position (1 to argc-1) in the command's argument list +// where the given parameter apears, or 0 if not present + +void Cmd_TokenizeString (const char *text); +// Takes a null terminated string. Does not need to be /n terminated. +// breaks the string up into arg tokens. + +void Cmd_ExecuteString (const char *text, cmd_source_t src); +// Parses a single line of text into arguments and tries to execute it. +// The text can come from the command buffer, a remote client, or stdin. + +void Cmd_ForwardToServer (void); +// adds the current command line as a clc_stringcmd to the client message. +// things like godmode, noclip, etc, are commands directed to the server, +// so when they are typed in at the console, they will need to be forwarded. + +void Cmd_Print (const char *text); +// used by command functions to send output to either the graphics console or +// passed as a print message to the client + +#endif /* _QUAKE_CMD_H */ + diff --git a/Quake/common.c b/Quake/common.c new file mode 100644 index 0000000..3776752 --- /dev/null +++ b/Quake/common.c @@ -0,0 +1,3034 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// common.c -- misc functions used in client and server + +#include "quakedef.h" +#include "q_ctype.h" +#include <errno.h> + +#include "miniz.h" + +static char *largv[MAX_NUM_ARGVS + 1]; +static char argvdummy[] = " "; + +int safemode; + +cvar_t registered = {"registered","1",CVAR_ROM}; /* set to correct value in COM_CheckRegistered() */ +cvar_t cmdline = {"cmdline","",CVAR_ROM/*|CVAR_SERVERINFO*/}; /* sending cmdline upon CCREQ_RULE_INFO is evil */ + +static qboolean com_modified; // set true if using non-id files + +qboolean fitzmode; + +static void COM_Path_f (void); + +// if a packfile directory differs from this, it is assumed to be hacked +#define PAK0_COUNT 339 /* id1/pak0.pak - v1.0x */ +#define PAK0_CRC_V100 13900 /* id1/pak0.pak - v1.00 */ +#define PAK0_CRC_V101 62751 /* id1/pak0.pak - v1.01 */ +#define PAK0_CRC_V106 32981 /* id1/pak0.pak - v1.06 */ +#define PAK0_CRC (PAK0_CRC_V106) +#define PAK0_COUNT_V091 308 /* id1/pak0.pak - v0.91/0.92, not supported */ +#define PAK0_CRC_V091 28804 /* id1/pak0.pak - v0.91/0.92, not supported */ + +char com_token[1024]; +int com_argc; +char **com_argv; + +#define CMDLINE_LENGTH 256 /* johnfitz -- mirrored in cmd.c */ +char com_cmdline[CMDLINE_LENGTH]; + +qboolean standard_quake = true, rogue, hipnotic; + +// this graphic needs to be in the pak file to use registered features +static unsigned short pop[] = +{ + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x6600,0x0000,0x0000,0x0000,0x6600,0x0000, + 0x0000,0x0066,0x0000,0x0000,0x0000,0x0000,0x0067,0x0000, + 0x0000,0x6665,0x0000,0x0000,0x0000,0x0000,0x0065,0x6600, + 0x0063,0x6561,0x0000,0x0000,0x0000,0x0000,0x0061,0x6563, + 0x0064,0x6561,0x0000,0x0000,0x0000,0x0000,0x0061,0x6564, + 0x0064,0x6564,0x0000,0x6469,0x6969,0x6400,0x0064,0x6564, + 0x0063,0x6568,0x6200,0x0064,0x6864,0x0000,0x6268,0x6563, + 0x0000,0x6567,0x6963,0x0064,0x6764,0x0063,0x6967,0x6500, + 0x0000,0x6266,0x6769,0x6a68,0x6768,0x6a69,0x6766,0x6200, + 0x0000,0x0062,0x6566,0x6666,0x6666,0x6666,0x6562,0x0000, + 0x0000,0x0000,0x0062,0x6364,0x6664,0x6362,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0062,0x6662,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0061,0x6661,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x6500,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x6400,0x0000,0x0000,0x0000 +}; + +/* + +All of Quake's data access is through a hierchal file system, but the contents +of the file system can be transparently merged from several sources. + +The "base directory" is the path to the directory holding the quake.exe and all +game directories. The sys_* files pass this to host_init in quakeparms_t->basedir. +This can be overridden with the "-basedir" command line parm to allow code +debugging in a different directory. The base directory is only used during +filesystem initialization. + +The "game directory" is the first tree on the search path and directory that all +generated files (savegames, screenshots, demos, config files) will be saved to. +This can be overridden with the "-game" command line parameter. The game +directory can never be changed while quake is executing. This is a precacution +against having a malicious server instruct clients to write files over areas they +shouldn't. + +The "cache directory" is only used during development to save network bandwidth, +especially over ISDN / T1 lines. If there is a cache directory specified, when +a file is found by the normal search path, it will be mirrored into the cache +directory, then opened there. + +FIXME: +The file "parms.txt" will be read out of the game directory and appended to the +current command line arguments to allow different games to initialize startup +parms differently. This could be used to add a "-sspeed 22050" for the high +quality sound edition. Because they are added at the end, they will not +override an explicit setting on the original command line. + +*/ + +//============================================================================ + + +// ClearLink is used for new headnodes +void ClearLink (link_t *l) +{ + l->prev = l->next = l; +} + +void RemoveLink (link_t *l) +{ + l->next->prev = l->prev; + l->prev->next = l->next; +} + +void InsertLinkBefore (link_t *l, link_t *before) +{ + l->next = before; + l->prev = before->prev; + l->prev->next = l; + l->next->prev = l; +} + +void InsertLinkAfter (link_t *l, link_t *after) +{ + l->next = after->next; + l->prev = after; + l->prev->next = l; + l->next->prev = l; +} + +/* +============================================================================ + + DYNAMIC VECTORS + +============================================================================ +*/ + +void Vec_Grow (void **pvec, size_t element_size, size_t count) +{ + vec_header_t header; + if (*pvec) + header = VEC_HEADER(*pvec); + else + header.size = header.capacity = 0; + + if (header.size + count > header.capacity) + { + void *new_buffer; + size_t total_size; + + header.capacity = header.size + count; + header.capacity += header.capacity >> 1; + if (header.capacity < 16) + header.capacity = 16; + total_size = sizeof(vec_header_t) + header.capacity * element_size; + + if (*pvec) + new_buffer = realloc (((vec_header_t*)*pvec) - 1, total_size); + else + new_buffer = malloc (total_size); + if (!new_buffer) + Sys_Error ("Vec_Grow: failed to allocate %lu bytes\n", (unsigned long)total_size); + + *pvec = 1 + (vec_header_t*)new_buffer; + VEC_HEADER(*pvec) = header; + } +} + +void Vec_Append (void **pvec, size_t element_size, const void *data, size_t count) +{ + if (!count) + return; + Vec_Grow (pvec, element_size, count); + memcpy ((byte *)*pvec + VEC_HEADER(*pvec).size * element_size, data, count * element_size); + VEC_HEADER(*pvec).size += count; +} + +void Vec_Clear (void **pvec) +{ + if (*pvec) + VEC_HEADER(*pvec).size = 0; +} + +void Vec_Free (void **pvec) +{ + if (*pvec) + { + free(&VEC_HEADER(*pvec)); + *pvec = NULL; + } +} + +/* +============================================================================ + + LIBRARY REPLACEMENT FUNCTIONS + +============================================================================ +*/ + +int q_strcasecmp(const char * s1, const char * s2) +{ + const char * p1 = s1; + const char * p2 = s2; + char c1, c2; + + if (p1 == p2) + return 0; + + do + { + c1 = q_tolower (*p1++); + c2 = q_tolower (*p2++); + if (c1 == '\0') + break; + } while (c1 == c2); + + return (int)(c1 - c2); +} + +int q_strncasecmp(const char *s1, const char *s2, size_t n) +{ + const char * p1 = s1; + const char * p2 = s2; + char c1, c2; + + if (p1 == p2 || n == 0) + return 0; + + do + { + c1 = q_tolower (*p1++); + c2 = q_tolower (*p2++); + if (c1 == '\0' || c1 != c2) + break; + } while (--n > 0); + + return (int)(c1 - c2); +} + +char *q_strcasestr(const char *haystack, const char *needle) +{ + const size_t len = strlen(needle); + + while (*haystack) + { + if (!q_strncasecmp(haystack, needle, len)) + return (char *)haystack; + + ++haystack; + } + + return NULL; +} + +char *q_strlwr (char *str) +{ + char *c; + c = str; + while (*c) + { + *c = q_tolower(*c); + c++; + } + return str; +} + +char *q_strupr (char *str) +{ + char *c; + c = str; + while (*c) + { + *c = q_toupper(*c); + c++; + } + return str; +} + +char *q_strdup (const char *str) +{ + size_t len = strlen (str) + 1; + char *newstr = (char *)malloc (len); + memcpy (newstr, str, len); + return newstr; +} + +/* platform dependant (v)snprintf function names: */ +#if defined(_WIN32) +#define snprintf_func _snprintf +#define vsnprintf_func _vsnprintf +#else +#define snprintf_func snprintf +#define vsnprintf_func vsnprintf +#endif + +int q_vsnprintf(char *str, size_t size, const char *format, va_list args) +{ + int ret; + + ret = vsnprintf_func (str, size, format, args); + + if (ret < 0) + ret = (int)size; + if (size == 0) /* no buffer */ + return ret; + if ((size_t)ret >= size) + str[size - 1] = '\0'; + + return ret; +} + +int q_snprintf (char *str, size_t size, const char *format, ...) +{ + int ret; + va_list argptr; + + va_start (argptr, format); + ret = q_vsnprintf (str, size, format, argptr); + va_end (argptr); + + return ret; +} + +void Q_memset (void *dest, int fill, size_t count) +{ + size_t i; + + if ( (((uintptr_t)dest | count) & 3) == 0) + { + count >>= 2; + fill = fill | (fill<<8) | (fill<<16) | (fill<<24); + for (i = 0; i < count; i++) + ((int *)dest)[i] = fill; + } + else + for (i = 0; i < count; i++) + ((byte *)dest)[i] = fill; +} + +void Q_memcpy (void *dest, const void *src, size_t count) +{ + size_t i; + + if (( ( (uintptr_t)dest | (uintptr_t)src | count) & 3) == 0) + { + count >>= 2; + for (i = 0; i < count; i++) + ((int *)dest)[i] = ((int *)src)[i]; + } + else + for (i = 0; i < count; i++) + ((byte *)dest)[i] = ((byte *)src)[i]; +} + +int Q_memcmp (const void *m1, const void *m2, size_t count) +{ + while(count) + { + count--; + if (((byte *)m1)[count] != ((byte *)m2)[count]) + return -1; + } + return 0; +} + +void Q_strcpy (char *dest, const char *src) +{ + while (*src) + { + *dest++ = *src++; + } + *dest++ = 0; +} + +void Q_strncpy (char *dest, const char *src, int count) +{ + while (*src && count--) + { + *dest++ = *src++; + } + if (count) + *dest++ = 0; +} + +int Q_strlen (const char *str) +{ + int count; + + count = 0; + while (str[count]) + count++; + + return count; +} + +char *Q_strrchr(const char *s, char c) +{ + int len = Q_strlen(s); + s += len; + while (len--) + { + if (*--s == c) + return (char *)s; + } + return NULL; +} + +void Q_strcat (char *dest, const char *src) +{ + dest += Q_strlen(dest); + Q_strcpy (dest, src); +} + +int Q_strcmp (const char *s1, const char *s2) +{ + while (1) + { + if (*s1 != *s2) + return -1; // strings not equal + if (!*s1) + return 0; // strings are equal + s1++; + s2++; + } + + return -1; +} + +int Q_strncmp (const char *s1, const char *s2, int count) +{ + while (1) + { + if (!count--) + return 0; + if (*s1 != *s2) + return -1; // strings not equal + if (!*s1) + return 0; // strings are equal + s1++; + s2++; + } + + return -1; +} + +int Q_atoi (const char *str) +{ + int val; + int sign; + int c; + + while (q_isspace (*str)) + ++str; + + if (*str == '-') + { + sign = -1; + str++; + } + else + sign = 1; + + val = 0; + +// +// check for hex +// + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X') ) + { + str += 2; + while (1) + { + c = *str++; + if (c >= '0' && c <= '9') + val = (val<<4) + c - '0'; + else if (c >= 'a' && c <= 'f') + val = (val<<4) + c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + val = (val<<4) + c - 'A' + 10; + else + return val*sign; + } + } + +// +// check for character +// + if (str[0] == '\'') + { + return sign * str[1]; + } + +// +// assume decimal +// + while (1) + { + c = *str++; + if (c <'0' || c > '9') + return val*sign; + val = val*10 + c - '0'; + } + + return 0; +} + + +float Q_atof (const char *str) +{ + double val; + int sign; + int c; + int decimal, total; + + while (q_isspace (*str)) + ++str; + + if (*str == '-') + { + sign = -1; + str++; + } + else + sign = 1; + + val = 0; + +// +// check for hex +// + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X') ) + { + str += 2; + while (1) + { + c = *str++; + if (c >= '0' && c <= '9') + val = (val*16) + c - '0'; + else if (c >= 'a' && c <= 'f') + val = (val*16) + c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + val = (val*16) + c - 'A' + 10; + else + return val*sign; + } + } + +// +// check for character +// + if (str[0] == '\'') + { + return sign * str[1]; + } + +// +// assume decimal +// + decimal = -1; + total = 0; + while (1) + { + c = *str++; + if (c == '.') + { + decimal = total; + continue; + } + if (c <'0' || c > '9') + break; + val = val*10 + c - '0'; + total++; + } + + if (decimal == -1) + return val*sign; + while (total > decimal) + { + val /= 10; + total--; + } + + return val*sign; +} + +/* +============================================================================ + + BYTE ORDER FUNCTIONS + +============================================================================ +*/ + +qboolean host_bigendian; + +short (*BigShort) (short l); +short (*LittleShort) (short l); +int (*BigLong) (int l); +int (*LittleLong) (int l); +float (*BigFloat) (float l); +float (*LittleFloat) (float l); + +short ShortSwap (short l) +{ + byte b1, b2; + + b1 = l&255; + b2 = (l>>8)&255; + + return (b1<<8) + b2; +} + +short ShortNoSwap (short l) +{ + return l; +} + +int LongSwap (int l) +{ + byte b1, b2, b3, b4; + + b1 = l&255; + b2 = (l>>8)&255; + b3 = (l>>16)&255; + b4 = (l>>24)&255; + + return ((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4; +} + +int LongNoSwap (int l) +{ + return l; +} + +float FloatSwap (float f) +{ + union + { + float f; + byte b[4]; + } dat1, dat2; + + + dat1.f = f; + dat2.b[0] = dat1.b[3]; + dat2.b[1] = dat1.b[2]; + dat2.b[2] = dat1.b[1]; + dat2.b[3] = dat1.b[0]; + return dat2.f; +} + +float FloatNoSwap (float f) +{ + return f; +} + +/* +============================================================================== + + MESSAGE IO FUNCTIONS + +Handles byte ordering and avoids alignment errors +============================================================================== +*/ + +// +// writing functions +// + +void MSG_WriteChar (sizebuf_t *sb, int c) +{ + byte *buf; + +#ifdef PARANOID + if (c < -128 || c > 127) + Sys_Error ("MSG_WriteChar: range error"); +#endif + + buf = (byte *) SZ_GetSpace (sb, 1); + buf[0] = c; +} + +void MSG_WriteByte (sizebuf_t *sb, int c) +{ + byte *buf; + +#ifdef PARANOID + if (c < 0 || c > 255) + Sys_Error ("MSG_WriteByte: range error"); +#endif + + buf = (byte *) SZ_GetSpace (sb, 1); + buf[0] = c; +} + +void MSG_WriteShort (sizebuf_t *sb, int c) +{ + byte *buf; + +#ifdef PARANOID + if (c < ((short)0x8000) || c > (short)0x7fff) + Sys_Error ("MSG_WriteShort: range error"); +#endif + + buf = (byte *) SZ_GetSpace (sb, 2); + buf[0] = c&0xff; + buf[1] = c>>8; +} + +void MSG_WriteLong (sizebuf_t *sb, int c) +{ + byte *buf; + + buf = (byte *) SZ_GetSpace (sb, 4); + buf[0] = c&0xff; + buf[1] = (c>>8)&0xff; + buf[2] = (c>>16)&0xff; + buf[3] = c>>24; +} + +void MSG_WriteFloat (sizebuf_t *sb, float f) +{ + union + { + float f; + int l; + } dat; + + dat.f = f; + dat.l = LittleLong (dat.l); + + SZ_Write (sb, &dat.l, 4); +} + +void MSG_WriteString (sizebuf_t *sb, const char *s) +{ + if (!s) + SZ_Write (sb, "", 1); + else + SZ_Write (sb, s, Q_strlen(s)+1); +} + +//johnfitz -- original behavior, 13.3 fixed point coords, max range +-4096 +void MSG_WriteCoord16 (sizebuf_t *sb, float f) +{ + MSG_WriteShort (sb, Q_rint(f*8)); +} + +//johnfitz -- 16.8 fixed point coords, max range +-32768 +void MSG_WriteCoord24 (sizebuf_t *sb, float f) +{ + MSG_WriteShort (sb, f); + MSG_WriteByte (sb, (int)(f*255)%255); +} + +//johnfitz -- 32-bit float coords +void MSG_WriteCoord32f (sizebuf_t *sb, float f) +{ + MSG_WriteFloat (sb, f); +} + +void MSG_WriteCoord (sizebuf_t *sb, float f, unsigned int flags) +{ + if (flags & PRFL_FLOATCOORD) + MSG_WriteFloat (sb, f); + else if (flags & PRFL_INT32COORD) + MSG_WriteLong (sb, Q_rint (f * 16)); + else if (flags & PRFL_24BITCOORD) + MSG_WriteCoord24 (sb, f); + else MSG_WriteCoord16 (sb, f); +} + +void MSG_WriteAngle (sizebuf_t *sb, float f, unsigned int flags) +{ + if (flags & PRFL_FLOATANGLE) + MSG_WriteFloat (sb, f); + else if (flags & PRFL_SHORTANGLE) + MSG_WriteShort (sb, Q_rint(f * 65536.0 / 360.0) & 65535); + else MSG_WriteByte (sb, Q_rint(f * 256.0 / 360.0) & 255); //johnfitz -- use Q_rint instead of (int) } +} + +//johnfitz -- for PROTOCOL_FITZQUAKE +void MSG_WriteAngle16 (sizebuf_t *sb, float f, unsigned int flags) +{ + if (flags & PRFL_FLOATANGLE) + MSG_WriteFloat (sb, f); + else MSG_WriteShort (sb, Q_rint(f * 65536.0 / 360.0) & 65535); +} +//johnfitz + +// +// reading functions +// +int msg_readcount; +qboolean msg_badread; + +void MSG_BeginReading (void) +{ + msg_readcount = 0; + msg_badread = false; +} + +// returns -1 and sets msg_badread if no more characters are available +int MSG_ReadChar (void) +{ + int c; + + if (msg_readcount+1 > net_message.cursize) + { + msg_badread = true; + return -1; + } + + c = (signed char)net_message.data[msg_readcount]; + msg_readcount++; + + return c; +} + +int MSG_ReadByte (void) +{ + int c; + + if (msg_readcount+1 > net_message.cursize) + { + msg_badread = true; + return -1; + } + + c = (unsigned char)net_message.data[msg_readcount]; + msg_readcount++; + + return c; +} + +int MSG_ReadShort (void) +{ + int c; + + if (msg_readcount+2 > net_message.cursize) + { + msg_badread = true; + return -1; + } + + c = (short)(net_message.data[msg_readcount] + + (net_message.data[msg_readcount+1]<<8)); + + msg_readcount += 2; + + return c; +} + +int MSG_ReadLong (void) +{ + int c; + + if (msg_readcount+4 > net_message.cursize) + { + msg_badread = true; + return -1; + } + + c = net_message.data[msg_readcount] + + (net_message.data[msg_readcount+1]<<8) + + (net_message.data[msg_readcount+2]<<16) + + (net_message.data[msg_readcount+3]<<24); + + msg_readcount += 4; + + return c; +} + +float MSG_ReadFloat (void) +{ + union + { + byte b[4]; + float f; + int l; + } dat; + + dat.b[0] = net_message.data[msg_readcount]; + dat.b[1] = net_message.data[msg_readcount+1]; + dat.b[2] = net_message.data[msg_readcount+2]; + dat.b[3] = net_message.data[msg_readcount+3]; + msg_readcount += 4; + + dat.l = LittleLong (dat.l); + + return dat.f; +} + +const char *MSG_ReadString (void) +{ + static char string[2048]; + int c; + size_t l; + + l = 0; + do + { + c = MSG_ReadByte (); + if (c == -1 || c == 0) + break; + string[l] = c; + l++; + } while (l < sizeof(string) - 1); + + string[l] = 0; + + return string; +} + +//johnfitz -- original behavior, 13.3 fixed point coords, max range +-4096 +float MSG_ReadCoord16 (void) +{ + return MSG_ReadShort() * (1.0/8); +} + +//johnfitz -- 16.8 fixed point coords, max range +-32768 +float MSG_ReadCoord24 (void) +{ + return MSG_ReadShort() + MSG_ReadByte() * (1.0/255); +} + +//johnfitz -- 32-bit float coords +float MSG_ReadCoord32f (void) +{ + return MSG_ReadFloat(); +} + +float MSG_ReadCoord (unsigned int flags) +{ + if (flags & PRFL_FLOATCOORD) + return MSG_ReadFloat (); + else if (flags & PRFL_INT32COORD) + return MSG_ReadLong () * (1.0 / 16.0); + else if (flags & PRFL_24BITCOORD) + return MSG_ReadCoord24 (); + else return MSG_ReadCoord16 (); +} + +float MSG_ReadAngle (unsigned int flags) +{ + if (flags & PRFL_FLOATANGLE) + return MSG_ReadFloat (); + else if (flags & PRFL_SHORTANGLE) + return MSG_ReadShort () * (360.0 / 65536); + else return MSG_ReadChar () * (360.0 / 256); +} + +//johnfitz -- for PROTOCOL_FITZQUAKE +float MSG_ReadAngle16 (unsigned int flags) +{ + if (flags & PRFL_FLOATANGLE) + return MSG_ReadFloat (); // make sure + else return MSG_ReadShort () * (360.0 / 65536); +} +//johnfitz + +//=========================================================================== + +void SZ_Alloc (sizebuf_t *buf, int startsize) +{ + if (startsize < 256) + startsize = 256; + buf->data = (byte *) Hunk_AllocName (startsize, "sizebuf"); + buf->maxsize = startsize; + buf->cursize = 0; +} + + +void SZ_Free (sizebuf_t *buf) +{ +// Z_Free (buf->data); +// buf->data = NULL; +// buf->maxsize = 0; + buf->cursize = 0; +} + +void SZ_Clear (sizebuf_t *buf) +{ + buf->cursize = 0; +} + +void *SZ_GetSpace (sizebuf_t *buf, int length) +{ + void *data; + + if (buf->cursize + length > buf->maxsize) + { + if (!buf->allowoverflow) + Host_Error ("SZ_GetSpace: overflow without allowoverflow set"); // ericw -- made Host_Error to be less annoying + + if (length > buf->maxsize) + Sys_Error ("SZ_GetSpace: %i is > full buffer size", length); + + buf->overflowed = true; + Con_Printf ("SZ_GetSpace: overflow\n"); + SZ_Clear (buf); + } + + data = buf->data + buf->cursize; + buf->cursize += length; + + return data; +} + +void SZ_Write (sizebuf_t *buf, const void *data, int length) +{ + Q_memcpy (SZ_GetSpace(buf,length),data,length); +} + +void SZ_Print (sizebuf_t *buf, const char *data) +{ + int len = Q_strlen(data) + 1; + + if (buf->data[buf->cursize-1]) + { /* no trailing 0 */ + Q_memcpy ((byte *)SZ_GetSpace(buf, len ) , data, len); + } + else + { /* write over trailing 0 */ + Q_memcpy ((byte *)SZ_GetSpace(buf, len-1)-1, data, len); + } +} + + +//============================================================================ + +/* +============ +COM_SkipPath +============ +*/ +const char *COM_SkipPath (const char *pathname) +{ + const char *last; + + last = pathname; + while (*pathname) + { + if (*pathname == '/') + last = pathname + 1; + pathname++; + } + return last; +} + +/* +============ +COM_StripExtension +============ +*/ +void COM_StripExtension (const char *in, char *out, size_t outsize) +{ + int length; + + if (!*in) + { + *out = '\0'; + return; + } + if (in != out) /* copy when not in-place editing */ + q_strlcpy (out, in, outsize); + length = (int)strlen(out) - 1; + while (length > 0 && out[length] != '.') + { + --length; + if (out[length] == '/' || out[length] == '\\') + return; /* no extension */ + } + if (length > 0) + out[length] = '\0'; +} + +/* +============ +COM_FileGetExtension - doesn't return NULL +============ +*/ +const char *COM_FileGetExtension (const char *in) +{ + const char *src; + size_t len; + + len = strlen(in); + if (len < 2) /* nothing meaningful */ + return ""; + + src = in + len - 1; + while (src != in && src[-1] != '.') + src--; + if (src == in || strchr(src, '/') != NULL || strchr(src, '\\') != NULL) + return ""; /* no extension, or parent directory has a dot */ + + return src; +} + +/* +============ +COM_ExtractExtension +============ +*/ +void COM_ExtractExtension (const char *in, char *out, size_t outsize) +{ + const char *ext = COM_FileGetExtension (in); + if (! *ext) + *out = '\0'; + else + q_strlcpy (out, ext, outsize); +} + +/* +============ +COM_FileBase +take 'somedir/otherdir/filename.ext', +write only 'filename' to the output +============ +*/ +void COM_FileBase (const char *in, char *out, size_t outsize) +{ + const char *dot, *slash, *s; + + s = in; + slash = in; + dot = NULL; + while (*s) + { + if (*s == '/' || *s == '\\') + slash = s + 1; + if (*s == '.') + dot = s; + s++; + } + if (dot == NULL) + dot = s; + + if (dot - slash < 2) + q_strlcpy (out, "?model?", outsize); + else + { + size_t len = dot - slash; + if (len >= outsize) + len = outsize - 1; + memcpy (out, slash, len); + out[len] = '\0'; + } +} + +/* +================== +COM_DefaultExtension +if path doesn't have a .EXT, append extension +(extension should include the leading ".") +================== +*/ +#if 0 /* can be dangerous */ +void COM_DefaultExtension (char *path, const char *extension, size_t len) +{ + char *src; + + if (!*path) return; + src = path + strlen(path) - 1; + + while (*src != '/' && *src != '\\' && src != path) + { + if (*src == '.') + return; // it has an extension + src--; + } + + q_strlcat(path, extension, len); +} +#endif + +/* +================== +COM_AddExtension +if path extension doesn't match .EXT, append it +(extension should include the leading ".") +================== +*/ +void COM_AddExtension (char *path, const char *extension, size_t len) +{ + if (strcmp(COM_FileGetExtension(path), extension + 1) != 0) + q_strlcat(path, extension, len); +} + + +/* +============== +COM_ParseEx + +Parse a token out of a string + +The mode argument controls how overflow is handled: +- CPE_NOTRUNC: return NULL (abort parsing) +- CPE_ALLOWTRUNC: truncate com_token (ignore the extra characters in this token) +============== +*/ +const char *COM_ParseEx (const char *data, cpe_mode mode) +{ + int c; + int len; + + len = 0; + com_token[0] = 0; + + if (!data) + return NULL; + +// skip whitespace +skipwhite: + while ((c = *data) <= ' ') + { + if (c == 0) + return NULL; // end of file + data++; + } + +// skip // comments + if (c == '/' && data[1] == '/') + { + while (*data && *data != '\n') + data++; + goto skipwhite; + } + +// skip /*..*/ comments + if (c == '/' && data[1] == '*') + { + data += 2; + while (*data && !(*data == '*' && data[1] == '/')) + data++; + if (*data) + data += 2; + goto skipwhite; + } + +// handle quoted strings specially + if (c == '\"') + { + data++; + while (1) + { + if ((c = *data) != 0) + ++data; + if (c == '\"' || !c) + { + com_token[len] = 0; + return data; + } + if (len < Q_COUNTOF(com_token) - 1) + com_token[len++] = c; + else if (mode == CPE_NOTRUNC) + return NULL; + } + } + +// parse single characters + if (c == '{' || c == '}'|| c == '('|| c == ')' || c == '\'' || c == ':') + { + if (len < Q_COUNTOF(com_token) - 1) + com_token[len++] = c; + else if (mode == CPE_NOTRUNC) + return NULL; + com_token[len] = 0; + return data+1; + } + +// parse a regular word + do + { + if (len < Q_COUNTOF(com_token) - 1) + com_token[len++] = c; + else if (mode == CPE_NOTRUNC) + return NULL; + data++; + c = *data; + /* commented out the check for ':' so that ip:port works */ + if (c == '{' || c == '}'|| c == '('|| c == ')' || c == '\''/* || c == ':' */) + break; + } while (c > 32); + + com_token[len] = 0; + return data; +} + + +/* +============== +COM_Parse + +Parse a token out of a string + +Return NULL in case of overflow +============== +*/ +const char *COM_Parse (const char *data) +{ + return COM_ParseEx (data, CPE_NOTRUNC); +} + + +/* +================ +COM_CheckParm + +Returns the position (1 to argc-1) in the program's argument list +where the given parameter apears, or 0 if not present +================ +*/ +int COM_CheckParm (const char *parm) +{ + int i; + + for (i = 1; i < com_argc; i++) + { + if (!com_argv[i]) + continue; // NEXTSTEP sometimes clears appkit vars. + if (!Q_strcmp (parm,com_argv[i])) + return i; + } + + return 0; +} + +/* +================ +COM_CheckRegistered + +Looks for the pop.txt file and verifies it. +Sets the "registered" cvar. +Immediately exits out if an alternate game was attempted to be started without +being registered. +================ +*/ +static void COM_CheckRegistered (void) +{ + int h; + unsigned short check[128]; + int i; + + COM_OpenFile("gfx/pop.lmp", &h, NULL); + + if (h == -1) + { + Cvar_SetROM ("registered", "0"); + Con_Printf ("Playing shareware version.\n"); + if (com_modified) + Sys_Error ("You must have the registered version to use modified games.\n\n" + "Basedir is: %s\n\n" + "Check that this has an " GAMENAME " subdirectory containing pak0.pak and pak1.pak, " + "or use the -basedir command-line option to specify another directory.", + com_basedir); + return; + } + + i = Sys_FileRead (h, check, sizeof(check)); + COM_CloseFile (h); + if (i != (int) sizeof(check)) + goto corrupt; + + for (i = 0; i < 128; i++) + { + if (pop[i] != (unsigned short)BigShort (check[i])) + { corrupt: + Sys_Error ("Corrupted data file."); + } + } + + for (i = 0; com_cmdline[i]; i++) + { + if (com_cmdline[i]!= ' ') + break; + } + + Cvar_SetROM ("cmdline", &com_cmdline[i]); + Cvar_SetROM ("registered", "1"); + Con_Printf ("Playing registered version.\n"); +} + + +/* +================ +COM_InitArgv +================ +*/ +void COM_InitArgv (int argc, char **argv) +{ + int i, j, n; + +// reconstitute the command line for the cmdline externally visible cvar + n = 0; + + for (j = 0; (j<MAX_NUM_ARGVS) && (j< argc); j++) + { + i = 0; + + while ((n < (CMDLINE_LENGTH - 1)) && argv[j][i]) + { + com_cmdline[n++] = argv[j][i++]; + } + + if (n < (CMDLINE_LENGTH - 1)) + com_cmdline[n++] = ' '; + else + break; + } + + if (n > 0 && com_cmdline[n-1] == ' ') + com_cmdline[n-1] = 0; //johnfitz -- kill the trailing space + + Con_Printf("Command line: %s\n", com_cmdline); + + for (com_argc = 0; (com_argc < MAX_NUM_ARGVS) && (com_argc < argc); com_argc++) + { + largv[com_argc] = argv[com_argc]; + if (!Q_strcmp ("-safe", argv[com_argc])) + safemode = 1; + } + + largv[com_argc] = argvdummy; + com_argv = largv; + + if (COM_CheckParm ("-rogue")) + { + rogue = true; + standard_quake = false; + } + + if (COM_CheckParm ("-hipnotic") || COM_CheckParm ("-quoth")) //johnfitz -- "-quoth" support + { + hipnotic = true; + standard_quake = false; + } +} + +/* +================ +COM_Init +================ +*/ +void COM_Init (void) +{ + int i = 0x12345678; + /* U N I X */ + + /* + BE_ORDER: 12 34 56 78 + U N I X + + LE_ORDER: 78 56 34 12 + X I N U + + PDP_ORDER: 34 12 78 56 + N U X I + */ + if ( *(char *)&i == 0x12 ) + host_bigendian = true; + else if ( *(char *)&i == 0x78 ) + host_bigendian = false; + else /* if ( *(char *)&i == 0x34 ) */ + Sys_Error ("Unsupported endianism."); + + if (host_bigendian) + { + BigShort = ShortNoSwap; + LittleShort = ShortSwap; + BigLong = LongNoSwap; + LittleLong = LongSwap; + BigFloat = FloatNoSwap; + LittleFloat = FloatSwap; + } + else /* assumed LITTLE_ENDIAN. */ + { + BigShort = ShortSwap; + LittleShort = ShortNoSwap; + BigLong = LongSwap; + LittleLong = LongNoSwap; + BigFloat = FloatSwap; + LittleFloat = FloatNoSwap; + } + + if (COM_CheckParm("-fitz")) + fitzmode = true; +} + + +/* +============ +va + +does a varargs printf into a temp buffer. cycles between +4 different static buffers. the number of buffers cycled +is defined in VA_NUM_BUFFS. +FIXME: make this buffer size safe someday +============ +*/ +#define VA_NUM_BUFFS 4 +#if (MAX_OSPATH >= 1024) +#define VA_BUFFERLEN MAX_OSPATH +#else +#define VA_BUFFERLEN 1024 +#endif + +static char *get_va_buffer(void) +{ + static char va_buffers[VA_NUM_BUFFS][VA_BUFFERLEN]; + static int buffer_idx = 0; + buffer_idx = (buffer_idx + 1) & (VA_NUM_BUFFS - 1); + return va_buffers[buffer_idx]; +} + +char *va (const char *format, ...) +{ + va_list argptr; + char *va_buf; + + va_buf = get_va_buffer (); + va_start (argptr, format); + q_vsnprintf (va_buf, VA_BUFFERLEN, format, argptr); + va_end (argptr); + + return va_buf; +} + +/* +============================================================================= + +QUAKE FILESYSTEM + +============================================================================= +*/ + +int com_filesize; + + +// +// on-disk pakfile +// +typedef struct +{ + char name[56]; + int filepos, filelen; +} dpackfile_t; + +typedef struct +{ + char id[4]; + int dirofs; + int dirlen; +} dpackheader_t; + +#define MAX_FILES_IN_PACK 2048 + +char com_gamedir[MAX_OSPATH]; +char com_basedir[MAX_OSPATH]; +int file_from_pak; // ZOID: global indicating that file came from a pak + +searchpath_t *com_searchpaths; +searchpath_t *com_base_searchpaths; + +/* +============ +COM_Path_f +============ +*/ +static void COM_Path_f (void) +{ + searchpath_t *s; + + Con_Printf ("Current search path:\n"); + for (s = com_searchpaths; s; s = s->next) + { + if (s->pack) + { + Con_Printf ("%s (%i files)\n", s->pack->filename, s->pack->numfiles); + } + else + Con_Printf ("%s\n", s->filename); + } +} + +/* +============ +COM_WriteFile + +The filename will be prefixed by the current game directory +============ +*/ +void COM_WriteFile (const char *filename, const void *data, int len) +{ + int handle; + char name[MAX_OSPATH]; + + Sys_mkdir (com_gamedir); //johnfitz -- if we've switched to a nonexistant gamedir, create it now so we don't crash + + q_snprintf (name, sizeof(name), "%s/%s", com_gamedir, filename); + + handle = Sys_FileOpenWrite (name); + if (handle == -1) + { + Sys_Printf ("COM_WriteFile: failed on %s\n", name); + return; + } + + Sys_Printf ("COM_WriteFile: %s\n", name); + Sys_FileWrite (handle, data, len); + Sys_FileClose (handle); +} + +/* +============ +COM_CreatePath +============ +*/ +void COM_CreatePath (char *path) +{ + char *ofs; + + for (ofs = path + 1; *ofs; ofs++) + { + if (*ofs == '/') + { // create the directory + *ofs = 0; + Sys_mkdir (path); + *ofs = '/'; + } + } +} + +/* +================ +COM_filelength +================ +*/ +long COM_filelength (FILE *f) +{ + long pos, end; + + pos = ftell (f); + fseek (f, 0, SEEK_END); + end = ftell (f); + fseek (f, pos, SEEK_SET); + + return end; +} + +/* +=========== +COM_FindFile + +Finds the file in the search path. +Sets com_filesize and one of handle or file +If neither of file or handle is set, this +can be used for detecting a file's presence. +=========== +*/ +static int COM_FindFile (const char *filename, int *handle, FILE **file, + unsigned int *path_id) +{ + searchpath_t *search; + char netpath[MAX_OSPATH]; + pack_t *pak; + int i; + + if (file && handle) + Sys_Error ("COM_FindFile: both handle and file set"); + + file_from_pak = 0; + +// +// search through the path, one element at a time +// + for (search = com_searchpaths; search; search = search->next) + { + if (search->pack) /* look through all the pak file elements */ + { + pak = search->pack; + for (i = 0; i < pak->numfiles; i++) + { + if (strcmp(pak->files[i].name, filename) != 0) + continue; + // found it! + com_filesize = pak->files[i].filelen; + file_from_pak = 1; + if (path_id) + *path_id = search->path_id; + if (handle) + { + *handle = pak->handle; + Sys_FileSeek (pak->handle, pak->files[i].filepos); + return com_filesize; + } + else if (file) + { /* open a new file on the pakfile */ + *file = fopen (pak->filename, "rb"); + if (*file) + fseek (*file, pak->files[i].filepos, SEEK_SET); + return com_filesize; + } + else /* for COM_FileExists() */ + { + return com_filesize; + } + } + } + else /* check a file in the directory tree */ + { + if (!registered.value) + { /* if not a registered version, don't ever go beyond base */ + if ( strchr (filename, '/') || strchr (filename,'\\')) + continue; + } + + q_snprintf (netpath, sizeof(netpath), "%s/%s",search->filename, filename); + if (! (Sys_FileType(netpath) & FS_ENT_FILE)) + continue; + + if (path_id) + *path_id = search->path_id; + if (handle) + { + com_filesize = Sys_FileOpenRead (netpath, &i); + *handle = i; + return com_filesize; + } + else if (file) + { + *file = fopen (netpath, "rb"); + com_filesize = (*file == NULL) ? -1 : COM_filelength (*file); + return com_filesize; + } + else + { + return 0; /* dummy valid value for COM_FileExists() */ + } + } + } + + if (strcmp(COM_FileGetExtension(filename), "pcx") != 0 + && strcmp(COM_FileGetExtension(filename), "tga") != 0 + && strcmp(COM_FileGetExtension(filename), "lit") != 0 + && strcmp(COM_FileGetExtension(filename), "vis") != 0 + && strcmp(COM_FileGetExtension(filename), "ent") != 0) + Con_DPrintf ("FindFile: can't find %s\n", filename); + else Con_DPrintf2("FindFile: can't find %s\n", filename); + + if (handle) + *handle = -1; + if (file) + *file = NULL; + com_filesize = -1; + return com_filesize; +} + + +/* +=========== +COM_FileExists + +Returns whether the file is found in the quake filesystem. +=========== +*/ +qboolean COM_FileExists (const char *filename, unsigned int *path_id) +{ + int ret = COM_FindFile (filename, NULL, NULL, path_id); + return (ret == -1) ? false : true; +} + +/* +=========== +COM_OpenFile + +filename never has a leading slash, but may contain directory walks +returns a handle and a length +it may actually be inside a pak file +=========== +*/ +int COM_OpenFile (const char *filename, int *handle, unsigned int *path_id) +{ + return COM_FindFile (filename, handle, NULL, path_id); +} + +/* +=========== +COM_FOpenFile + +If the requested file is inside a packfile, a new FILE * will be opened +into the file. +=========== +*/ +int COM_FOpenFile (const char *filename, FILE **file, unsigned int *path_id) +{ + return COM_FindFile (filename, NULL, file, path_id); +} + +/* +============ +COM_CloseFile + +If it is a pak file handle, don't really close it +============ +*/ +void COM_CloseFile (int h) +{ + searchpath_t *s; + + for (s = com_searchpaths; s; s = s->next) + if (s->pack && s->pack->handle == h) + return; + + Sys_FileClose (h); +} + + +/* +============ +COM_LoadFile + +Filename are reletive to the quake directory. +Allways appends a 0 byte. +============ +*/ +#define LOADFILE_ZONE 0 +#define LOADFILE_HUNK 1 +#define LOADFILE_TEMPHUNK 2 +#define LOADFILE_CACHE 3 +#define LOADFILE_STACK 4 +#define LOADFILE_MALLOC 5 + +static byte *loadbuf; +static cache_user_t *loadcache; +static int loadsize; + +byte *COM_LoadFile (const char *path, int usehunk, unsigned int *path_id) +{ + int h; + byte *buf; + char base[32]; + int len, nread; + + buf = NULL; // quiet compiler warning + +// look for it in the filesystem or pack files + len = COM_OpenFile (path, &h, path_id); + if (h == -1) + return NULL; + +// extract the filename base name for hunk tag + COM_FileBase (path, base, sizeof(base)); + + switch (usehunk) + { + case LOADFILE_HUNK: + buf = (byte *) Hunk_AllocName (len+1, base); + break; + case LOADFILE_TEMPHUNK: + buf = (byte *) Hunk_TempAlloc (len+1); + break; + case LOADFILE_ZONE: + buf = (byte *) Z_Malloc (len+1); + break; + case LOADFILE_CACHE: + buf = (byte *) Cache_Alloc (loadcache, len+1, base); + break; + case LOADFILE_STACK: + if (len < loadsize) + buf = loadbuf; + else + buf = (byte *) Hunk_TempAlloc (len+1); + break; + case LOADFILE_MALLOC: + buf = (byte *) malloc (len+1); + break; + default: + Sys_Error ("COM_LoadFile: bad usehunk"); + } + + if (!buf) + Sys_Error ("COM_LoadFile: not enough space for %s", path); + + ((byte *)buf)[len] = 0; + + nread = Sys_FileRead (h, buf, len); + COM_CloseFile (h); + if (nread != len) + Sys_Error ("COM_LoadFile: Error reading %s", path); + + return buf; +} + +byte *COM_LoadHunkFile (const char *path, unsigned int *path_id) +{ + return COM_LoadFile (path, LOADFILE_HUNK, path_id); +} + +byte *COM_LoadZoneFile (const char *path, unsigned int *path_id) +{ + return COM_LoadFile (path, LOADFILE_ZONE, path_id); +} + +byte *COM_LoadTempFile (const char *path, unsigned int *path_id) +{ + return COM_LoadFile (path, LOADFILE_TEMPHUNK, path_id); +} + +void COM_LoadCacheFile (const char *path, struct cache_user_s *cu, unsigned int *path_id) +{ + loadcache = cu; + COM_LoadFile (path, LOADFILE_CACHE, path_id); +} + +// uses temp hunk if larger than bufsize +byte *COM_LoadStackFile (const char *path, void *buffer, int bufsize, unsigned int *path_id) +{ + byte *buf; + + loadbuf = (byte *)buffer; + loadsize = bufsize; + buf = COM_LoadFile (path, LOADFILE_STACK, path_id); + + return buf; +} + +// returns malloc'd memory +byte *COM_LoadMallocFile (const char *path, unsigned int *path_id) +{ + return COM_LoadFile (path, LOADFILE_MALLOC, path_id); +} + +byte *COM_LoadMallocFile_TextMode_OSPath (const char *path, long *len_out) +{ + FILE *f; + byte *data; + long len, actuallen; + + // ericw -- this is used by Host_Loadgame_f. Translate CRLF to LF on load games, + // othewise multiline messages have a garbage character at the end of each line. + // TODO: could handle in a way that allows loading CRLF savegames on mac/linux + // without the junk characters appearing. + f = fopen (path, "rt"); + if (f == NULL) + return NULL; + + len = COM_filelength (f); + if (len < 0) + { + fclose (f); + return NULL; + } + + data = (byte *) malloc (len + 1); + if (data == NULL) + { + fclose (f); + return NULL; + } + + // (actuallen < len) if CRLF to LF translation was performed + actuallen = fread (data, 1, len, f); + if (ferror(f)) + { + fclose (f); + free (data); + return NULL; + } + data[actuallen] = '\0'; + + if (len_out != NULL) + *len_out = actuallen; + fclose (f); + return data; +} + +const char *COM_ParseIntNewline(const char *buffer, int *value) +{ + int consumed = 0; + sscanf (buffer, "%i\n%n", value, &consumed); + return buffer + consumed; +} + +const char *COM_ParseFloatNewline(const char *buffer, float *value) +{ + int consumed = 0; + sscanf (buffer, "%f\n%n", value, &consumed); + return buffer + consumed; +} + +const char *COM_ParseStringNewline(const char *buffer) +{ + int consumed = 0; + com_token[0] = '\0'; + sscanf (buffer, "%1023s\n%n", com_token, &consumed); + return buffer + consumed; +} + +/* +================= +COM_LoadPackFile -- johnfitz -- modified based on topaz's tutorial + +Takes an explicit (not game tree related) path to a pak file. + +Loads the header and directory, adding the files at the beginning +of the list so they override previous pack files. +================= +*/ +static pack_t *COM_LoadPackFile (const char *packfile) +{ + dpackheader_t header; + int i; + packfile_t *newfiles; + int numpackfiles; + pack_t *pack; + int packhandle; + dpackfile_t info[MAX_FILES_IN_PACK]; + unsigned short crc; + + if (Sys_FileOpenRead (packfile, &packhandle) == -1) + return NULL; + + if (Sys_FileRead(packhandle, &header, sizeof(header)) != (int) sizeof(header) || + header.id[0] != 'P' || header.id[1] != 'A' || header.id[2] != 'C' || header.id[3] != 'K') + Sys_Error ("%s is not a packfile", packfile); + + header.dirofs = LittleLong (header.dirofs); + header.dirlen = LittleLong (header.dirlen); + + numpackfiles = header.dirlen / sizeof(dpackfile_t); + + if (header.dirlen < 0 || header.dirofs < 0) + { + Sys_Error ("Invalid packfile %s (dirlen: %i, dirofs: %i)", + packfile, header.dirlen, header.dirofs); + } + if (!numpackfiles) + { + Sys_Printf ("WARNING: %s has no files, ignored\n", packfile); + Sys_FileClose (packhandle); + return NULL; + } + if (numpackfiles > MAX_FILES_IN_PACK) + Sys_Error ("%s has %i files", packfile, numpackfiles); + + if (numpackfiles != PAK0_COUNT) + com_modified = true; // not the original file + + newfiles = (packfile_t *) Z_Malloc(numpackfiles * sizeof(packfile_t)); + + Sys_FileSeek (packhandle, header.dirofs); + if (Sys_FileRead(packhandle, info, header.dirlen) != header.dirlen) + Sys_Error ("Error reading %s", packfile); + + // crc the directory to check for modifications + CRC_Init (&crc); + for (i = 0; i < header.dirlen; i++) + CRC_ProcessByte (&crc, ((byte *)info)[i]); + if (crc != PAK0_CRC_V106 && crc != PAK0_CRC_V101 && crc != PAK0_CRC_V100) + com_modified = true; + + // parse the directory + for (i = 0; i < numpackfiles; i++) + { + q_strlcpy (newfiles[i].name, info[i].name, sizeof(newfiles[i].name)); + newfiles[i].filepos = LittleLong(info[i].filepos); + newfiles[i].filelen = LittleLong(info[i].filelen); + } + + pack = (pack_t *) Z_Malloc (sizeof (pack_t)); + q_strlcpy (pack->filename, packfile, sizeof(pack->filename)); + pack->handle = packhandle; + pack->numfiles = numpackfiles; + pack->files = newfiles; + + //Sys_Printf ("Added packfile %s (%i files)\n", packfile, numpackfiles); + return pack; +} + +/* +================= +COM_AddGameDirectory -- johnfitz -- modified based on topaz's tutorial +================= +*/ +static void COM_AddGameDirectory (const char *base, const char *dir) +{ + int i; + unsigned int path_id; + searchpath_t *search; + pack_t *pak, *qspak; + char pakfile[MAX_OSPATH]; + qboolean been_here = false; + + q_strlcpy (com_gamedir, va("%s/%s", base, dir), sizeof(com_gamedir)); + + // assign a path_id to this game directory + if (com_searchpaths) + path_id = com_searchpaths->path_id << 1; + else path_id = 1U; + +_add_path: + // add the directory to the search path + search = (searchpath_t *) Z_Malloc(sizeof(searchpath_t)); + search->path_id = path_id; + q_strlcpy (search->filename, com_gamedir, sizeof(search->filename)); + search->next = com_searchpaths; + com_searchpaths = search; + + // add any pak files in the format pak0.pak pak1.pak, ... + for (i = 0; ; i++) + { + q_snprintf (pakfile, sizeof(pakfile), "%s/pak%i.pak", com_gamedir, i); + pak = COM_LoadPackFile (pakfile); + if (i != 0 || path_id != 1 || fitzmode) + qspak = NULL; + else { + qboolean old = com_modified; + if (been_here) base = host_parms->userdir; + q_snprintf (pakfile, sizeof(pakfile), "%s/quakespasm.pak", base); + qspak = COM_LoadPackFile (pakfile); + com_modified = old; + } + if (pak) { + search = (searchpath_t *) Z_Malloc(sizeof(searchpath_t)); + search->path_id = path_id; + search->pack = pak; + search->next = com_searchpaths; + com_searchpaths = search; + } + if (qspak) { + search = (searchpath_t *) Z_Malloc(sizeof(searchpath_t)); + search->path_id = path_id; + search->pack = qspak; + search->next = com_searchpaths; + com_searchpaths = search; + } + if (!pak) break; + } + + if (!been_here && host_parms->userdir != host_parms->basedir) + { + been_here = true; + q_strlcpy(com_gamedir, va("%s/%s", host_parms->userdir, dir), sizeof(com_gamedir)); + Sys_mkdir(com_gamedir); + goto _add_path; + } +} + +//============================================================================== +//johnfitz -- dynamic gamedir stuff -- modified by QuakeSpasm team. +//============================================================================== +static void COM_Game_f (void) +{ + if (Cmd_Argc() > 1) + { + const char *p = Cmd_Argv(1); + const char *p2 = Cmd_Argv(2); + searchpath_t *search; + + if (!registered.value) //disable shareware quake + { + Con_Printf("You must have the registered version to use modified games\n"); + return; + } + + if (!*p || !strcmp(p, ".") || strstr(p, "..") || strstr(p, "/") || strstr(p, "\\") || strstr(p, ":")) + { + Con_Printf ("gamedir should be a single directory name, not a path\n"); + return; + } + + if (*p2) + { + if (strcmp(p2,"-hipnotic") && strcmp(p2,"-rogue") && strcmp(p2,"-quoth")) { + Con_Printf ("invalid mission pack argument to \"game\"\n"); + return; + } + if (!q_strcasecmp(p, GAMENAME)) { + Con_Printf ("no mission pack arguments to %s game\n", GAMENAME); + return; + } + } + + if (Sys_FileType(va("%s/%s", com_basedir, p)) != FS_ENT_DIRECTORY) + { + if (host_parms->userdir == host_parms->basedir || (Sys_FileType(va("%s/%s", host_parms->userdir, p)) != FS_ENT_DIRECTORY)) + { + Con_Printf ("No such game directory \"%s\"\n", p); + return; + } + } + + if (!q_strcasecmp(p, COM_SkipPath(com_gamedir))) //no change + { + if (com_searchpaths->path_id > 1) { //current game not id1 + if (*p2 && com_searchpaths->path_id == 2) { + // rely on QuakeSpasm extension treating '-game missionpack' + // as '-missionpack', otherwise would be a mess + if (!q_strcasecmp(p, &p2[1])) + goto _same; + Con_Printf("reloading game \"%s\" with \"%s\" support\n", p, &p2[1]); + } + else if (!*p2 && com_searchpaths->path_id > 2) + Con_Printf("reloading game \"%s\" without mission pack support\n", p); + else goto _same; + } + else { _same: + Con_Printf("\"game\" is already \"%s\"\n", COM_SkipPath(com_gamedir)); + return; + } + } + + com_modified = true; + + //Kill the server + CL_Disconnect (); + Host_ShutdownServer(true); + + //Write config file + Host_WriteConfiguration (); + + //Kill the extra game if it is loaded + while (com_searchpaths != com_base_searchpaths) + { + if (com_searchpaths->pack) + { + Sys_FileClose (com_searchpaths->pack->handle); + Z_Free (com_searchpaths->pack->files); + Z_Free (com_searchpaths->pack); + } + search = com_searchpaths->next; + Z_Free (com_searchpaths); + com_searchpaths = search; + } + hipnotic = false; + rogue = false; + standard_quake = true; + + if (q_strcasecmp(p, GAMENAME)) //game is not id1 + { + if (*p2) { + COM_AddGameDirectory (com_basedir, &p2[1]); + standard_quake = false; + if (!strcmp(p2,"-hipnotic") || !strcmp(p2,"-quoth")) + hipnotic = true; + else if (!strcmp(p2,"-rogue")) + rogue = true; + if (q_strcasecmp(p, &p2[1])) //don't load twice + COM_AddGameDirectory (com_basedir, p); + } + else { + COM_AddGameDirectory (com_basedir, p); + // QuakeSpasm extension: treat '-game missionpack' as '-missionpack' + if (!q_strcasecmp(p,"hipnotic") || !q_strcasecmp(p,"quoth")) { + hipnotic = true; + standard_quake = false; + } + else if (!q_strcasecmp(p,"rogue")) { + rogue = true; + standard_quake = false; + } + } + } + else // just update com_gamedir + { + q_snprintf (com_gamedir, sizeof(com_gamedir), "%s/%s", + (host_parms->userdir != host_parms->basedir)? + host_parms->userdir : com_basedir, + GAMENAME); + } + + //clear out and reload appropriate data + Cache_Flush (); + Mod_ResetAll(); + Sky_ClearAll(); + if (!isDedicated) + { + TexMgr_NewGame (); + Draw_NewGame (); + R_NewGame (); + } + ExtraMaps_NewGame (); + Host_Resetdemos (); + DemoList_Rebuild (); + + Con_Printf("\"game\" changed to \"%s\"\n", COM_SkipPath(com_gamedir)); + + VID_Lock (); + Cbuf_AddText ("exec quake.rc\n"); + Cbuf_AddText ("vid_unlock\n"); + } + else //Diplay the current gamedir + Con_Printf("\"game\" is \"%s\"\n", COM_SkipPath(com_gamedir)); +} + +/* +================= +COM_InitFilesystem +================= +*/ +void COM_InitFilesystem (void) //johnfitz -- modified based on topaz's tutorial +{ + int i, j; + + Cvar_RegisterVariable (®istered); + Cvar_RegisterVariable (&cmdline); + Cmd_AddCommand ("path", COM_Path_f); + Cmd_AddCommand ("game", COM_Game_f); //johnfitz + + i = COM_CheckParm ("-basedir"); + if (i && i < com_argc-1) + q_strlcpy (com_basedir, com_argv[i + 1], sizeof(com_basedir)); + else + q_strlcpy (com_basedir, host_parms->basedir, sizeof(com_basedir)); + + j = strlen (com_basedir); + if (j < 1) Sys_Error("Bad argument to -basedir"); + if ((com_basedir[j-1] == '\\') || (com_basedir[j-1] == '/')) + com_basedir[j-1] = 0; + + // start up with GAMENAME by default (id1) + COM_AddGameDirectory (com_basedir, GAMENAME); + + /* this is the end of our base searchpath: + * any set gamedirs, such as those from -game command line + * arguments or by the 'game' console command will be freed + * up to here upon a new game command. */ + com_base_searchpaths = com_searchpaths; + + // add mission pack requests (only one should be specified) + if (COM_CheckParm ("-rogue")) + COM_AddGameDirectory (com_basedir, "rogue"); + if (COM_CheckParm ("-hipnotic")) + COM_AddGameDirectory (com_basedir, "hipnotic"); + if (COM_CheckParm ("-quoth")) + COM_AddGameDirectory (com_basedir, "quoth"); + + i = COM_CheckParm ("-game"); + if (i && i < com_argc-1) + { + const char *p = com_argv[i + 1]; + if (!*p || !strcmp(p, ".") || strstr(p, "..") || strstr(p, "/") || strstr(p, "\\") || strstr(p, ":")) + Sys_Error ("gamedir should be a single directory name, not a path\n"); + com_modified = true; + // don't load mission packs twice + if (COM_CheckParm ("-rogue") && !q_strcasecmp(p, "rogue")) p = NULL; + if (p && COM_CheckParm ("-hipnotic") && !q_strcasecmp(p, "hipnotic")) p = NULL; + if (p && COM_CheckParm ("-quoth") && !q_strcasecmp(p, "quoth")) p = NULL; + if (p != NULL) { + COM_AddGameDirectory (com_basedir, p); + // QuakeSpasm extension: treat '-game missionpack' as '-missionpack' + if (!q_strcasecmp(p,"rogue")) { + rogue = true; + standard_quake = false; + } + if (!q_strcasecmp(p,"hipnotic") || !q_strcasecmp(p,"quoth")) { + hipnotic = true; + standard_quake = false; + } + } + } + + COM_CheckRegistered (); +} + + +/* The following FS_*() stdio replacements are necessary if one is + * to perform non-sequential reads on files reopened on pak files + * because we need the bookkeeping about file start/end positions. + * Allocating and filling in the fshandle_t structure is the users' + * responsibility when the file is initially opened. */ + +size_t FS_fread(void *ptr, size_t size, size_t nmemb, fshandle_t *fh) +{ + long byte_size; + long bytes_read; + size_t nmemb_read; + + if (!fh) { + errno = EBADF; + return 0; + } + if (!ptr) { + errno = EFAULT; + return 0; + } + if (!size || !nmemb) { /* no error, just zero bytes wanted */ + errno = 0; + return 0; + } + + byte_size = nmemb * size; + if (byte_size > fh->length - fh->pos) /* just read to end */ + byte_size = fh->length - fh->pos; + bytes_read = fread(ptr, 1, byte_size, fh->file); + fh->pos += bytes_read; + + /* fread() must return the number of elements read, + * not the total number of bytes. */ + nmemb_read = bytes_read / size; + /* even if the last member is only read partially + * it is counted as a whole in the return value. */ + if (bytes_read % size) + nmemb_read++; + + return nmemb_read; +} + +int FS_fseek(fshandle_t *fh, long offset, int whence) +{ +/* I don't care about 64 bit off_t or fseeko() here. + * the quake/hexen2 file system is 32 bits, anyway. */ + int ret; + + if (!fh) { + errno = EBADF; + return -1; + } + + /* the relative file position shouldn't be smaller + * than zero or bigger than the filesize. */ + switch (whence) + { + case SEEK_SET: + break; + case SEEK_CUR: + offset += fh->pos; + break; + case SEEK_END: + offset = fh->length + offset; + break; + default: + errno = EINVAL; + return -1; + } + + if (offset < 0) { + errno = EINVAL; + return -1; + } + + if (offset > fh->length) /* just seek to end */ + offset = fh->length; + + ret = fseek(fh->file, fh->start + offset, SEEK_SET); + if (ret < 0) + return ret; + + fh->pos = offset; + return 0; +} + +int FS_fclose(fshandle_t *fh) +{ + if (!fh) { + errno = EBADF; + return -1; + } + return fclose(fh->file); +} + +long FS_ftell(fshandle_t *fh) +{ + if (!fh) { + errno = EBADF; + return -1; + } + return fh->pos; +} + +void FS_rewind(fshandle_t *fh) +{ + if (!fh) return; + clearerr(fh->file); + fseek(fh->file, fh->start, SEEK_SET); + fh->pos = 0; +} + +int FS_feof(fshandle_t *fh) +{ + if (!fh) { + errno = EBADF; + return -1; + } + if (fh->pos >= fh->length) + return -1; + return 0; +} + +int FS_ferror(fshandle_t *fh) +{ + if (!fh) { + errno = EBADF; + return -1; + } + return ferror(fh->file); +} + +int FS_fgetc(fshandle_t *fh) +{ + if (!fh) { + errno = EBADF; + return EOF; + } + if (fh->pos >= fh->length) + return EOF; + fh->pos += 1; + return fgetc(fh->file); +} + +char *FS_fgets(char *s, int size, fshandle_t *fh) +{ + char *ret; + + if (FS_feof(fh)) + return NULL; + + if (size > (fh->length - fh->pos) + 1) + size = (fh->length - fh->pos) + 1; + + ret = fgets(s, size, fh->file); + fh->pos = ftell(fh->file) - fh->start; + + return ret; +} + +long FS_filelength (fshandle_t *fh) +{ + if (!fh) { + errno = EBADF; + return -1; + } + return fh->length; +} + +/* +============================================================================ + LOCALIZATION +============================================================================ +*/ +typedef struct +{ + char *key; + char *value; +} locentry_t; + +typedef struct +{ + int numentries; + int maxnumentries; + int numindices; + unsigned *indices; + locentry_t *entries; + char *text; +} localization_t; + +static localization_t localization; + +/* +================ +COM_HashString +Computes the FNV-1a hash of string str +================ +*/ +unsigned COM_HashString (const char *str) +{ + unsigned hash = 0x811c9dc5u; + while (*str) + { + hash ^= *str++; + hash *= 0x01000193u; + } + return hash; +} + +static size_t mz_zip_file_read_func(void *opaque, mz_uint64 ofs, void *buf, size_t n) +{ + if (SDL_RWseek((SDL_RWops*)opaque, (Sint64)ofs, RW_SEEK_SET) < 0) + return 0; + #ifdef USE_SDL2 + return SDL_RWread((SDL_RWops*)opaque, buf, 1, n); + #else + else { + int r = SDL_RWread((SDL_RWops*)opaque, buf, 1, n); + return (r < 0)? 0 : r; + } + #endif +} + +#ifndef USE_SDL2 /* no SDL_RWsize in SDL-1.2 */ +static Sint32 SDLCALL SDL_RWsize(SDL_RWops *rw) { + Sint32 pos, size; + if ((pos=SDL_RWtell(rw))<0) return -1; + size = SDL_RWseek(rw, 0, RW_SEEK_END); + SDL_RWseek(rw, pos, RW_SEEK_SET); + return size; +} +#endif + +/* +================ +LOC_LoadFile +================ +*/ +void LOC_LoadFile (const char *file) +{ + char path[1024]; + int i,lineno; + char *cursor; + + SDL_RWops *rw = NULL; + Sint64 sz; + mz_zip_archive archive; + size_t size = 0; + + // clear existing data + if (localization.text) + { + free(localization.text); + localization.text = NULL; + } + localization.numentries = 0; + localization.numindices = 0; + + if (!file || !*file) + return; + + Con_Printf("\nLanguage initialization\n"); + + memset(&archive, 0, sizeof(archive)); + q_snprintf(path, sizeof(path), "%s/%s", com_basedir, file); + rw = SDL_RWFromFile(path, "rb"); + #if defined(DO_USERDIRS) + if (!rw) { + q_snprintf(path, sizeof(path), "%s/%s", host_parms->userdir, file); + rw = SDL_RWFromFile(path, "rb"); + } + #endif + if (!rw) + { + q_snprintf(path, sizeof(path), "%s/QuakeEX.kpf", com_basedir); + rw = SDL_RWFromFile(path, "rb"); + #if defined(DO_USERDIRS) + if (!rw) { + q_snprintf(path, sizeof(path), "%s/QuakeEX.kpf", host_parms->userdir); + rw = SDL_RWFromFile(path, "rb"); + } + #endif + if (!rw) goto fail; + sz = SDL_RWsize(rw); + if (sz <= 0) goto fail; + archive.m_pRead = mz_zip_file_read_func; + archive.m_pIO_opaque = rw; + if (!mz_zip_reader_init(&archive, sz, 0)) goto fail; + localization.text = (char *) mz_zip_reader_extract_file_to_heap(&archive, file, &size, 0); + if (!localization.text) goto fail; + mz_zip_reader_end(&archive); + SDL_RWclose(rw); + localization.text = (char *) realloc(localization.text, size+1); + localization.text[size] = 0; + } + else + { + sz = SDL_RWsize(rw); + if (sz <= 0) goto fail; + localization.text = (char *) calloc(1, sz+1); + if (!localization.text) + { +fail: mz_zip_reader_end(&archive); + if (rw) SDL_RWclose(rw); + Con_Printf("Couldn't load '%s'\nfrom '%s'\n", file, com_basedir); + return; + } + SDL_RWread(rw, localization.text, 1, sz); + SDL_RWclose(rw); + } + + cursor = localization.text; + + // skip BOM + if ((unsigned char)(cursor[0]) == 0xEF && (unsigned char)(cursor[1]) == 0xBB && (unsigned char)(cursor[2]) == 0xBF) + cursor += 3; + + lineno = 0; + while (*cursor) + { + char *line, *equals; + + lineno++; + + // skip leading whitespace + while (q_isblank(*cursor)) + ++cursor; + + line = cursor; + equals = NULL; + // find line end and first equals sign, if any + while (*cursor && *cursor != '\n') + { + if (*cursor == '=' && !equals) + equals = cursor; + cursor++; + } + + if (line[0] == '/') + { + if (line[1] != '/') + Con_DPrintf("LOC_LoadFile: malformed comment on line %d\n", lineno); + } + else if (equals) + { + char *key_end = equals; + qboolean leading_quote; + qboolean trailing_quote; + locentry_t *entry; + char *value_src; + char *value_dst; + char *value; + + // trim whitespace before equals sign + while (key_end != line && q_isspace(key_end[-1])) + key_end--; + *key_end = 0; + + value = equals + 1; + // skip whitespace after equals sign + while (value != cursor && q_isspace(*value)) + value++; + + leading_quote = (*value == '\"'); + trailing_quote = false; + value += leading_quote; + + // transform escape sequences in-place + value_src = value; + value_dst = value; + while (value_src != cursor) + { + if (*value_src == '\\' && value_src + 1 != cursor) + { + char c = value_src[1]; + value_src += 2; + switch (c) + { + case 'n': *value_dst++ = '\n'; break; + case 't': *value_dst++ = '\t'; break; + case 'v': *value_dst++ = '\v'; break; + case 'b': *value_dst++ = '\b'; break; + case 'f': *value_dst++ = '\f'; break; + + case '"': + case '\'': + *value_dst++ = c; + break; + + default: + Con_Printf("LOC_LoadFile: unrecognized escape sequence \\%c on line %d\n", c, lineno); + *value_dst++ = c; + break; + } + continue; + } + + if (*value_src == '\"') + { + trailing_quote = true; + *value_dst = 0; + break; + } + + *value_dst++ = *value_src++; + } + + // if not a quoted string, trim trailing whitespace + if (!trailing_quote) + { + while (value_dst != value && q_isblank(value_dst[-1])) + { + *value_dst = 0; + value_dst--; + } + } + + if (localization.numentries == localization.maxnumentries) + { + // grow by 50% + localization.maxnumentries += localization.maxnumentries >> 1; + localization.maxnumentries = q_max(localization.maxnumentries, 32); + localization.entries = (locentry_t*) realloc(localization.entries, sizeof(*localization.entries) * localization.maxnumentries); + } + + entry = &localization.entries[localization.numentries++]; + entry->key = line; + entry->value = value; + } + + if (*cursor) + *cursor++ = 0; // terminate line and advance to next + } + + // hash all entries + + localization.numindices = localization.numentries * 2; // 50% load factor + if (localization.numindices == 0) + { + Con_Printf("No localized strings in file '%s'\n", file); + return; + } + + localization.indices = (unsigned*) realloc(localization.indices, localization.numindices * sizeof(*localization.indices)); + memset(localization.indices, 0, localization.numindices * sizeof(*localization.indices)); + + for (i = 0; i < localization.numentries; i++) + { + locentry_t *entry = &localization.entries[i]; + unsigned pos = COM_HashString(entry->key) % localization.numindices, end = pos; + + for (;;) + { + if (!localization.indices[pos]) + { + localization.indices[pos] = i + 1; + break; + } + + ++pos; + if (pos == localization.numindices) + pos = 0; + + if (pos == end) + Sys_Error("LOC_LoadFile failed"); + } + } + + Con_Printf("Loaded %d strings from '%s'\n", localization.numentries, file); +} + +/* +================ +LOC_Init +================ +*/ +void LOC_Init(void) +{ + LOC_LoadFile("localization/loc_english.txt"); +} + +/* +================ +LOC_Shutdown +================ +*/ +void LOC_Shutdown(void) +{ + free(localization.indices); + free(localization.entries); + free(localization.text); +} + +/* +================ +LOC_GetRawString + +Returns localized string if available, or NULL otherwise +================ +*/ +const char* LOC_GetRawString (const char *key) +{ + unsigned pos, end; + + if (!localization.numindices || !key || !*key || *key != '$') + return NULL; + key++; + + pos = COM_HashString(key) % localization.numindices; + end = pos; + + do + { + unsigned idx = localization.indices[pos]; + locentry_t *entry; + if (!idx) + return NULL; + + entry = &localization.entries[idx - 1]; + if (!Q_strcmp(entry->key, key)) + return entry->value; + + ++pos; + if (pos == localization.numindices) + pos = 0; + } while (pos != end); + + return NULL; +} + +/* +================ +LOC_GetString + +Returns localized string if available, or input string otherwise +================ +*/ +const char* LOC_GetString (const char *key) +{ + const char* value = LOC_GetRawString(key); + return value ? value : key; +} + +/* +================ +LOC_ParseArg + +Returns argument index (>= 0) and advances the string if it starts with a placeholder ({} or {N}), +otherwise returns a negative value and leaves the pointer unchanged +================ +*/ +static int LOC_ParseArg (const char **pstr) +{ + int arg; + const char *str = *pstr; + + // opening brace + if (*str != '{') + return -1; + ++str; + + // optional index, defaulting to 0 + arg = 0; + while (q_isdigit(*str)) + arg = arg * 10 + *str++ - '0'; + + // closing brace + if (*str != '}') + return -1; + *pstr = ++str; + + return arg; +} + +/* +================ +LOC_HasPlaceholders +================ +*/ +qboolean LOC_HasPlaceholders (const char *str) +{ + if (!localization.numindices) + return false; + while (*str) + { + if (LOC_ParseArg(&str) >= 0) + return true; + str++; + } + return false; +} + +/* +================ +LOC_Format + +Replaces placeholders (of the form {} or {N}) with the corresponding arguments + +Returns number of written chars, excluding the NUL terminator +If len > 0, output is always NUL-terminated +================ +*/ +size_t LOC_Format (const char *format, const char* (*getarg_fn) (int idx, void* userdata), void* userdata, char* out, size_t len) +{ + size_t written = 0; + int numargs = 0; + + if (!len) + { + Con_DPrintf("LOC_Format: no output space\n"); + return 0; + } + --len; // reserve space for the terminator + + while (*format && written < len) + { + const char* insert; + size_t space_left; + size_t insert_len; + int argindex = LOC_ParseArg(&format); + + if (argindex < 0) + { + out[written++] = *format++; + continue; + } + + insert = getarg_fn(argindex, userdata); + space_left = len - written; + insert_len = Q_strlen(insert); + + if (insert_len > space_left) + { + Con_DPrintf("LOC_Format: overflow at argument #%d\n", numargs); + insert_len = space_left; + } + + Q_memcpy(out + written, insert, insert_len); + written += insert_len; + } + + if (*format) + Con_DPrintf("LOC_Format: overflow\n"); + + out[written] = 0; + + return written; +} diff --git a/Quake/common.h b/Quake/common.h new file mode 100644 index 0000000..228eacc --- /dev/null +++ b/Quake/common.h @@ -0,0 +1,415 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _Q_COMMON_H +#define _Q_COMMON_H + +// comndef.h -- general definitions + +#if defined(_WIN32) +#ifdef _MSC_VER +# pragma warning(disable:4244) + /* 'argument' : conversion from 'type1' to 'type2', + possible loss of data */ +# pragma warning(disable:4305) + /* 'identifier' : truncation from 'type1' to 'type2' */ + /* in our case, truncation from 'double' to 'float' */ +# pragma warning(disable:4267) + /* 'var' : conversion from 'size_t' to 'type', + possible loss of data (/Wp64 warning) */ +#endif /* _MSC_VER */ +#endif /* _WIN32 */ + +#undef min +#undef max + +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) +#define GENERIC_TYPES(x, separator) \ + x(int, i) separator \ + x(unsigned int, u) separator \ + x(long, l) separator \ + x(unsigned long, ul) separator \ + x(long long, ll) separator \ + x(unsigned long long, ull) separator \ + x(float, f) separator \ + x(double, d) + +#define COMMA , +#define NO_COMMA + +#define IMPL_GENERIC_FUNCS(type, suffix) \ +static inline type q_min_##suffix (type a, type b) { \ + return (a < b) ? a : b; \ +} \ +static inline type q_max_##suffix (type a, type b) { \ + return (a > b) ? a : b; \ +} \ +static inline type clamp_##suffix (type minval, type val, type maxval) { \ + return (val < minval) ? minval : ((val > maxval) ? maxval : val); \ +} + +GENERIC_TYPES (IMPL_GENERIC_FUNCS, NO_COMMA) + +#define SELECT_Q_MIN(type, suffix) type: q_min_##suffix +#define q_min(a, b) _Generic((a) + (b), GENERIC_TYPES (SELECT_Q_MIN, COMMA))(a, b) + +#define SELECT_Q_MAX(type, suffix) type: q_max_##suffix +#define q_max(a, b) _Generic((a) + (b), GENERIC_TYPES (SELECT_Q_MAX, COMMA))(a, b) + +#define SELECT_CLAMP(type, suffix) type: clamp_##suffix +#define CLAMP(minval, val, maxval) _Generic((minval) + (val) + (maxval), \ + GENERIC_TYPES (SELECT_CLAMP, COMMA))(minval, val, maxval) + +#elif defined(__GNUC__) +/* min and max macros with type checking -- based on tyrquake. */ +#define q_max(a,b) ({ \ + const __typeof(a) a_ = (a); \ + const __typeof(b) b_ = (b); \ + (void)(&a_ == &b_); \ + (a_ > b_) ? a_ : b_; \ +}) +#define q_min(a,b) ({ \ + const __typeof(a) a_ = (a); \ + const __typeof(b) b_ = (b); \ + (void)(&a_ == &b_); \ + (a_ < b_) ? a_ : b_; \ +}) +#define CLAMP(_minval, x, _maxval) ({ \ + const __typeof(x) x_ = (x); \ + const __typeof(_minval) valmin_ = (_minval);\ + const __typeof(_maxval) valmax_ = (_maxval);\ + (void)(&x_ == &valmin_); \ + (void)(&x_ == &valmax_); \ + (x_ < valmin_) ? valmin_ : \ + (x_ > valmax_) ? valmax_ : x_; \ +}) + +#else +#define q_min(a, b) (((a) < (b)) ? (a) : (b)) +#define q_max(a, b) (((a) > (b)) ? (a) : (b)) +#define CLAMP(_minval, x, _maxval) \ + ((x) < (_minval) ? (_minval) : \ + (x) > (_maxval) ? (_maxval) : (x)) +#endif + +typedef struct sizebuf_s +{ + qboolean allowoverflow; // if false, do a Sys_Error + qboolean overflowed; // set to true if the buffer size failed + byte *data; + int maxsize; + int cursize; +} sizebuf_t; + +void SZ_Alloc (sizebuf_t *buf, int startsize); +void SZ_Free (sizebuf_t *buf); +void SZ_Clear (sizebuf_t *buf); +void *SZ_GetSpace (sizebuf_t *buf, int length); +void SZ_Write (sizebuf_t *buf, const void *data, int length); +void SZ_Print (sizebuf_t *buf, const char *data); // strcats onto the sizebuf + +//============================================================================ + +typedef struct link_s +{ + struct link_s *prev, *next; +} link_t; + + +void ClearLink (link_t *l); +void RemoveLink (link_t *l); +void InsertLinkBefore (link_t *l, link_t *before); +void InsertLinkAfter (link_t *l, link_t *after); + +// (type *)STRUCT_FROM_LINK(link_t *link, type, member) +// ent = STRUCT_FROM_LINK(link,entity_t,order) +// FIXME: remove this mess! +#define STRUCT_FROM_LINK(l,t,m) ((t *)((byte *)l - offsetof(t,m))) + +//============================================================================ + +typedef struct vec_header_t { + size_t capacity; + size_t size; +} vec_header_t; + +#define VEC_HEADER(v) (((vec_header_t*)(v))[-1]) + +#define VEC_PUSH(v,n) do { Vec_Grow((void**)&(v), sizeof((v)[0]), 1); (v)[VEC_HEADER(v).size++] = (n); } while (0) +#define VEC_SIZE(v) ((v) ? VEC_HEADER(v).size : 0) +#define VEC_FREE(v) Vec_Free((void**)&(v)) +#define VEC_CLEAR(v) Vec_Clear((void**)&(v)) + +void Vec_Grow (void **pvec, size_t element_size, size_t count); +void Vec_Append (void **pvec, size_t element_size, const void *data, size_t count); +void Vec_Clear (void **pvec); +void Vec_Free (void **pvec); + +//============================================================================ + +extern qboolean host_bigendian; + +extern short (*BigShort) (short l); +extern short (*LittleShort) (short l); +extern int (*BigLong) (int l); +extern int (*LittleLong) (int l); +extern float (*BigFloat) (float l); +extern float (*LittleFloat) (float l); + +//============================================================================ + +void MSG_WriteChar (sizebuf_t *sb, int c); +void MSG_WriteByte (sizebuf_t *sb, int c); +void MSG_WriteShort (sizebuf_t *sb, int c); +void MSG_WriteLong (sizebuf_t *sb, int c); +void MSG_WriteFloat (sizebuf_t *sb, float f); +void MSG_WriteString (sizebuf_t *sb, const char *s); +void MSG_WriteCoord (sizebuf_t *sb, float f, unsigned int flags); +void MSG_WriteAngle (sizebuf_t *sb, float f, unsigned int flags); +void MSG_WriteAngle16 (sizebuf_t *sb, float f, unsigned int flags); //johnfitz + +extern int msg_readcount; +extern qboolean msg_badread; // set if a read goes beyond end of message + +void MSG_BeginReading (void); +int MSG_ReadChar (void); +int MSG_ReadByte (void); +int MSG_ReadShort (void); +int MSG_ReadLong (void); +float MSG_ReadFloat (void); +const char *MSG_ReadString (void); + +float MSG_ReadCoord (unsigned int flags); +float MSG_ReadAngle (unsigned int flags); +float MSG_ReadAngle16 (unsigned int flags); //johnfitz + +//============================================================================ + +void Q_memset (void *dest, int fill, size_t count); +void Q_memcpy (void *dest, const void *src, size_t count); +int Q_memcmp (const void *m1, const void *m2, size_t count); +void Q_strcpy (char *dest, const char *src); +void Q_strncpy (char *dest, const char *src, int count); +int Q_strlen (const char *str); +char *Q_strrchr (const char *s, char c); +void Q_strcat (char *dest, const char *src); +int Q_strcmp (const char *s1, const char *s2); +int Q_strncmp (const char *s1, const char *s2, int count); +int Q_atoi (const char *str); +float Q_atof (const char *str); + + +#include "strl_fn.h" + +/* locale-insensitive strcasecmp replacement functions: */ +extern int q_strcasecmp (const char * s1, const char * s2); +extern int q_strncasecmp (const char *s1, const char *s2, size_t n); + +/* locale-insensitive case-insensitive alternative to strstr */ +extern char *q_strcasestr(const char *haystack, const char *needle); + +/* locale-insensitive strlwr/upr replacement functions: */ +extern char *q_strlwr (char *str); +extern char *q_strupr (char *str); + +// strdup that calls malloc +extern char *q_strdup (const char *str); + +/* snprintf, vsnprintf : always use our versions. */ +extern int q_snprintf (char *str, size_t size, const char *format, ...) FUNC_PRINTF(3,4); +extern int q_vsnprintf(char *str, size_t size, const char *format, va_list args) FUNC_PRINTF(3,0); + +//============================================================================ + +extern char com_token[1024]; +extern qboolean com_eof; + +typedef enum +{ + CPE_NOTRUNC, // return parse error in case of overflow + CPE_ALLOWTRUNC // truncate com_token in case of overflow +} cpe_mode; + +const char *COM_Parse (const char *data); +const char *COM_ParseEx (const char *data, cpe_mode mode); + + +extern int com_argc; +extern char **com_argv; + +extern int safemode; +/* safe mode: in true, the engine will behave as if one + of these arguments were actually on the command line: + -nosound, -nocdaudio, -nomidi, -stdvid, -dibonly, + -nomouse, -nojoy, -nolan + */ + +int COM_CheckParm (const char *parm); + +void COM_Init (void); +void COM_InitArgv (int argc, char **argv); +void COM_InitFilesystem (void); + +const char *COM_SkipPath (const char *pathname); +void COM_StripExtension (const char *in, char *out, size_t outsize); +void COM_FileBase (const char *in, char *out, size_t outsize); +void COM_AddExtension (char *path, const char *extension, size_t len); +#if 0 /* COM_DefaultExtension can be dangerous */ +void COM_DefaultExtension (char *path, const char *extension, size_t len); +#endif +const char *COM_FileGetExtension (const char *in); /* doesn't return NULL */ +void COM_ExtractExtension (const char *in, char *out, size_t outsize); +void COM_CreatePath (char *path); + +char *va (const char *format, ...) FUNC_PRINTF(1,2); +// does a varargs printf into a temp buffer + +unsigned COM_HashString (const char *str); + +// localization support for 2021 rerelease version: +void LOC_Init (void); +void LOC_Shutdown (void); +const char* LOC_GetRawString (const char *key); +const char* LOC_GetString (const char *key); +qboolean LOC_HasPlaceholders (const char *str); +size_t LOC_Format (const char *format, const char* (*getarg_fn)(int idx, void* userdata), void* userdata, char* out, size_t len); + +//============================================================================ + +// QUAKEFS +typedef struct +{ + char name[MAX_QPATH]; + int filepos, filelen; +} packfile_t; + +typedef struct pack_s +{ + char filename[MAX_OSPATH]; + int handle; + int numfiles; + packfile_t *files; +} pack_t; + +typedef struct searchpath_s +{ + unsigned int path_id; // identifier assigned to the game directory + // Note that <install_dir>/game1 and + // <userdir>/game1 have the same id. + char filename[MAX_OSPATH]; + pack_t *pack; // only one of filename / pack will be used + struct searchpath_s *next; +} searchpath_t; + +extern searchpath_t *com_searchpaths; +extern searchpath_t *com_base_searchpaths; + +extern int com_filesize; +struct cache_user_s; + +extern char com_basedir[MAX_OSPATH]; +extern char com_gamedir[MAX_OSPATH]; +extern int file_from_pak; // global indicating that file came from a pak + +void COM_WriteFile (const char *filename, const void *data, int len); +int COM_OpenFile (const char *filename, int *handle, unsigned int *path_id); +int COM_FOpenFile (const char *filename, FILE **file, unsigned int *path_id); +qboolean COM_FileExists (const char *filename, unsigned int *path_id); +void COM_CloseFile (int h); + +// these procedures open a file using COM_FindFile and loads it into a proper +// buffer. the buffer is allocated with a total size of com_filesize + 1. the +// procedures differ by their buffer allocation method. +byte *COM_LoadStackFile (const char *path, void *buffer, int bufsize, + unsigned int *path_id); + // uses the specified stack stack buffer with the specified size + // of bufsize. if bufsize is too short, uses temp hunk. the bufsize + // must include the +1 +byte *COM_LoadTempFile (const char *path, unsigned int *path_id); + // allocates the buffer on the temp hunk. +byte *COM_LoadHunkFile (const char *path, unsigned int *path_id); + // allocates the buffer on the hunk. +byte *COM_LoadZoneFile (const char *path, unsigned int *path_id); + // allocates the buffer on the zone. +void COM_LoadCacheFile (const char *path, struct cache_user_s *cu, + unsigned int *path_id); + // uses cache mem for allocating the buffer. +byte *COM_LoadMallocFile (const char *path, unsigned int *path_id); + // allocates the buffer on the system mem (malloc). + +// Opens the given path directly, ignoring search paths. +// Returns NULL on failure, or else a '\0'-terminated malloc'ed buffer. +// Loads in "t" mode so CRLF to LF translation is performed on Windows. +byte *COM_LoadMallocFile_TextMode_OSPath (const char *path, long *len_out); + +// Attempts to parse an int, followed by a newline. +// Returns advanced buffer position. +// Doesn't signal parsing failure, but this is not needed for savegame loading. +const char *COM_ParseIntNewline(const char *buffer, int *value); + +// Attempts to parse a float followed by a newline. +// Returns advanced buffer position. +const char *COM_ParseFloatNewline(const char *buffer, float *value); + +// Parse a string of non-whitespace into com_token, then tries to consume a +// newline. Returns advanced buffer position. +const char *COM_ParseStringNewline(const char *buffer); + + +#define FS_ENT_NONE (0) +#define FS_ENT_FILE (1 << 0) +#define FS_ENT_DIRECTORY (1 << 1) + +/* The following FS_*() stdio replacements are necessary if one is + * to perform non-sequential reads on files reopened on pak files + * because we need the bookkeeping about file start/end positions. + * Allocating and filling in the fshandle_t structure is the users' + * responsibility when the file is initially opened. */ + +typedef struct _fshandle_t +{ + FILE *file; + qboolean pak; /* is the file read from a pak */ + long start; /* file or data start position */ + long length; /* file or data size */ + long pos; /* current position relative to start */ +} fshandle_t; + +size_t FS_fread(void *ptr, size_t size, size_t nmemb, fshandle_t *fh); +int FS_fseek(fshandle_t *fh, long offset, int whence); +long FS_ftell(fshandle_t *fh); +void FS_rewind(fshandle_t *fh); +int FS_feof(fshandle_t *fh); +int FS_ferror(fshandle_t *fh); +int FS_fclose(fshandle_t *fh); +int FS_fgetc(fshandle_t *fh); +char *FS_fgets(char *s, int size, fshandle_t *fh); +long FS_filelength (fshandle_t *fh); + + +extern struct cvar_s registered; +extern qboolean standard_quake, rogue, hipnotic; +extern qboolean fitzmode; + /* if true, run in fitzquake mode disabling custom quakespasm hacks */ + +#endif /* _Q_COMMON_H */ + diff --git a/Quake/console.c b/Quake/console.c new file mode 100644 index 0000000..d1ab0d8 --- /dev/null +++ b/Quake/console.c @@ -0,0 +1,1316 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// console.c + +#include <sys/types.h> +#include <time.h> +#include <sys/stat.h> +#include <fcntl.h> +#ifdef _WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif +#include "quakedef.h" + +int con_linewidth; + +float con_cursorspeed = 4; + +#define CON_TEXTSIZE (1024 * 1024) //ericw -- was 65536. johnfitz -- new default size +#define CON_MINSIZE 16384 //johnfitz -- old default, now the minimum size + +int con_buffersize; //johnfitz -- user can now override default + +qboolean con_forcedup; // because no entities to refresh + +int con_totallines; // total lines in console scrollback +int con_backscroll; // lines up from bottom to display +int con_current; // where next message will be printed +int con_x; // offset in current line for next print +char *con_text = NULL; + +cvar_t con_notifytime = {"con_notifytime","3",CVAR_NONE}; //seconds +cvar_t con_logcenterprint = {"con_logcenterprint", "1", CVAR_NONE}; //johnfitz + +char con_lastcenterstring[1024]; //johnfitz + +#define NUM_CON_TIMES 4 +float con_times[NUM_CON_TIMES]; // realtime time the line was generated + // for transparent notify lines + +int con_vislines; + +qboolean con_debuglog = false; + +qboolean con_initialized; + + +/* +================ +Con_Quakebar -- johnfitz -- returns a bar of the desired length, but never wider than the console + +includes a newline, unless len >= con_linewidth. +================ +*/ +const char *Con_Quakebar (int len) +{ + static char bar[42]; + int i; + + len = q_min(len, (int)sizeof(bar) - 2); + len = q_min(len, con_linewidth); + + bar[0] = '\35'; + for (i = 1; i < len - 1; i++) + bar[i] = '\36'; + bar[len-1] = '\37'; + + if (len < con_linewidth) + { + bar[len] = '\n'; + bar[len+1] = 0; + } + else + bar[len] = 0; + + return bar; +} + +/* +================ +Con_ToggleConsole_f +================ +*/ +extern int history_line; //johnfitz + +void Con_ToggleConsole_f (void) +{ + if (key_dest == key_console/* || (key_dest == key_game && con_forcedup)*/) + { + key_lines[edit_line][1] = 0; // clear any typing + key_linepos = 1; + con_backscroll = 0; //johnfitz -- toggleconsole should return you to the bottom of the scrollback + history_line = edit_line; //johnfitz -- it should also return you to the bottom of the command history + + if (cls.state == ca_connected) + { + IN_Activate(); + key_dest = key_game; + } + else + { + M_Menu_Main_f (); + } + } + else + { + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_console; + } + + SCR_EndLoadingPlaque (); + memset (con_times, 0, sizeof(con_times)); +} + +/* +================ +Con_Clear_f +================ +*/ +static void Con_Clear_f (void) +{ + if (con_text) + Q_memset (con_text, ' ', con_buffersize); //johnfitz -- con_buffersize replaces CON_TEXTSIZE + con_backscroll = 0; //johnfitz -- if console is empty, being scrolled up is confusing +} + +/* +================ +Con_Dump_f -- johnfitz -- adapted from quake2 source +================ +*/ +static void Con_Dump_f (void) +{ + int l, x; + const char *line; + FILE *f; + char buffer[1024]; + char name[MAX_OSPATH]; + + q_snprintf (name, sizeof(name), "%s/condump.txt", com_gamedir); + COM_CreatePath (name); + f = fopen (name, "w"); + if (!f) + { + Con_Printf ("ERROR: couldn't open file %s.\n", name); + return; + } + + // skip initial empty lines + for (l = con_current - con_totallines + 1; l <= con_current; l++) + { + line = con_text + (l % con_totallines)*con_linewidth; + for (x = 0; x < con_linewidth; x++) + if (line[x] != ' ') + break; + if (x != con_linewidth) + break; + } + + // write the remaining lines + buffer[con_linewidth] = 0; + for ( ; l <= con_current; l++) + { + line = con_text + (l%con_totallines)*con_linewidth; + strncpy (buffer, line, con_linewidth); + for (x = con_linewidth - 1; x >= 0; x--) + { + if (buffer[x] == ' ') + buffer[x] = 0; + else + break; + } + for (x = 0; buffer[x]; x++) + buffer[x] &= 0x7f; + + fprintf (f, "%s\n", buffer); + } + + fclose (f); + Con_Printf ("Dumped console text to %s.\n", name); +} + +/* +================ +Con_ClearNotify +================ +*/ +void Con_ClearNotify (void) +{ + int i; + + for (i = 0; i < NUM_CON_TIMES; i++) + con_times[i] = 0; +} + + +/* +================ +Con_MessageMode_f +================ +*/ +static void Con_MessageMode_f (void) +{ + if (cls.state != ca_connected || cls.demoplayback) + return; + chat_team = false; + key_dest = key_message; +} + +/* +================ +Con_MessageMode2_f +================ +*/ +static void Con_MessageMode2_f (void) +{ + if (cls.state != ca_connected || cls.demoplayback) + return; + chat_team = true; + key_dest = key_message; +} + + +/* +================ +Con_CheckResize + +If the line width has changed, reformat the buffer. +================ +*/ +void Con_CheckResize (void) +{ + int i, j, width, oldwidth, oldtotallines, numlines, numchars; + char *tbuf; //johnfitz -- tbuf no longer a static array + int mark; //johnfitz + + width = (vid.conwidth >> 3) - 2; //johnfitz -- use vid.conwidth instead of vid.width + + if (width == con_linewidth) + return; + + oldwidth = con_linewidth; + con_linewidth = width; + oldtotallines = con_totallines; + con_totallines = con_buffersize / con_linewidth; //johnfitz -- con_buffersize replaces CON_TEXTSIZE + numlines = oldtotallines; + + if (con_totallines < numlines) + numlines = con_totallines; + + numchars = oldwidth; + + if (con_linewidth < numchars) + numchars = con_linewidth; + + mark = Hunk_LowMark (); //johnfitz + tbuf = (char *) Hunk_Alloc (con_buffersize); //johnfitz + + Q_memcpy (tbuf, con_text, con_buffersize);//johnfitz -- con_buffersize replaces CON_TEXTSIZE + Q_memset (con_text, ' ', con_buffersize);//johnfitz -- con_buffersize replaces CON_TEXTSIZE + + for (i = 0; i < numlines; i++) + { + for (j = 0; j < numchars; j++) + { + con_text[(con_totallines - 1 - i) * con_linewidth + j] = + tbuf[((con_current - i + oldtotallines) % oldtotallines) * oldwidth + j]; + } + } + + Hunk_FreeToLowMark (mark); //johnfitz + + Con_ClearNotify (); + + con_backscroll = 0; + con_current = con_totallines - 1; +} + + +/* +================ +Con_Init +================ +*/ +void Con_Init (void) +{ + int i; + + //johnfitz -- user settable console buffer size + i = COM_CheckParm("-consize"); + if (i && i < com_argc-1) { + con_buffersize = Q_atoi(com_argv[i+1])*1024; + if (con_buffersize < CON_MINSIZE) + con_buffersize = CON_MINSIZE; + } + else + con_buffersize = CON_TEXTSIZE; + //johnfitz + + con_text = (char *) Hunk_AllocName (con_buffersize, "context");//johnfitz -- con_buffersize replaces CON_TEXTSIZE + Q_memset (con_text, ' ', con_buffersize);//johnfitz -- con_buffersize replaces CON_TEXTSIZE + con_linewidth = -1; + + //johnfitz -- no need to run Con_CheckResize here + con_linewidth = 38; + con_totallines = con_buffersize / con_linewidth;//johnfitz -- con_buffersize replaces CON_TEXTSIZE + con_backscroll = 0; + con_current = con_totallines - 1; + //johnfitz + + Con_Printf ("Console initialized.\n"); + + Cvar_RegisterVariable (&con_notifytime); + Cvar_RegisterVariable (&con_logcenterprint); //johnfitz + + Cmd_AddCommand ("toggleconsole", Con_ToggleConsole_f); + Cmd_AddCommand ("messagemode", Con_MessageMode_f); + Cmd_AddCommand ("messagemode2", Con_MessageMode2_f); + Cmd_AddCommand ("clear", Con_Clear_f); + Cmd_AddCommand ("condump", Con_Dump_f); //johnfitz + con_initialized = true; +} + + +/* +=============== +Con_Linefeed +=============== +*/ +static void Con_Linefeed (void) +{ + //johnfitz -- improved scrolling + if (con_backscroll) + con_backscroll++; + if (con_backscroll > con_totallines - (glheight>>3) - 1) + con_backscroll = con_totallines - (glheight>>3) - 1; + //johnfitz + + con_x = 0; + con_current++; + Q_memset (&con_text[(con_current%con_totallines)*con_linewidth], ' ', con_linewidth); +} + +/* +================ +Con_Print + +Handles cursor positioning, line wrapping, etc +All console printing must go through this in order to be logged to disk +If no console is visible, the notify window will pop up. +================ +*/ +static void Con_Print (const char *txt) +{ + int y; + int c, l; + static int cr; + int mask; + qboolean boundary; + + //con_backscroll = 0; //johnfitz -- better console scrolling + + if (txt[0] == 1) + { + mask = 128; // go to colored text + S_LocalSound ("misc/talk.wav"); // play talk wav + txt++; + } + else if (txt[0] == 2) + { + mask = 128; // go to colored text + txt++; + } + else + mask = 0; + + boundary = true; + + while ( (c = *txt) ) + { + if (c <= ' ') + { + boundary = true; + } + else if (boundary) + { + // count word length + for (l = 0; l < con_linewidth; l++) + if (txt[l] <= ' ') + break; + + // word wrap + if (l != con_linewidth && (con_x + l > con_linewidth)) + con_x = 0; + + boundary = false; + } + + txt++; + + if (cr) + { + con_current--; + cr = false; + } + + if (!con_x) + { + Con_Linefeed (); + // mark time for transparent overlay + if (con_current >= 0) + con_times[con_current % NUM_CON_TIMES] = realtime; + } + + switch (c) + { + case '\n': + con_x = 0; + break; + + case '\r': + con_x = 0; + cr = 1; + break; + + default: // display character and advance + y = con_current % con_totallines; + con_text[y*con_linewidth+con_x] = c | mask; + con_x++; + if (con_x >= con_linewidth) + con_x = 0; + break; + } + } +} + + +// borrowed from uhexen2 by S.A. for new procs, LOG_Init, LOG_Close + +static char logfilename[MAX_OSPATH]; // current logfile name +static int log_fd = -1; // log file descriptor + +/* +================ +Con_DebugLog +================ +*/ +void Con_DebugLog(const char *msg) +{ + if (log_fd == -1) + return; + + if (write(log_fd, msg, strlen(msg)) < 0) + { + close (log_fd); + log_fd = -1; + con_debuglog = false; + fprintf (stderr, "Error writing to log file\n"); + } +} + + +/* +================ +Con_Printf + +Handles cursor positioning, line wrapping, etc +================ +*/ +#define MAXPRINTMSG 4096 +void Con_Printf (const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; + static qboolean inupdate; + + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + +// also echo to debugging console + Sys_Printf ("%s", msg); + +// log all messages to file + if (con_debuglog) + Con_DebugLog(msg); + + if (!con_initialized) + return; + + if (cls.state == ca_dedicated) + return; // no graphics mode + +// write it to the scrollable buffer + Con_Print (msg); + +// update the screen if the console is displayed + if (cls.signon != SIGNONS && !scr_disabled_for_loading ) + { + // protect against infinite loop if something in SCR_UpdateScreen calls + // Con_Printd + if (!inupdate) + { + inupdate = true; + SCR_UpdateScreen (); + inupdate = false; + } + } +} + +/* +================ +Con_DWarning -- ericw + +same as Con_Warning, but only prints if "developer" cvar is set. +use for "exceeds standard limit of" messages, which are only relevant for developers +targetting vanilla engines +================ +*/ +void Con_DWarning (const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; + + if (!developer.value) + return; // don't confuse non-developers with techie stuff... + + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + + Con_SafePrintf ("\x02Warning: "); + Con_Printf ("%s", msg); +} + +/* +================ +Con_Warning -- johnfitz -- prints a warning to the console +================ +*/ +void Con_Warning (const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; + + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + + Con_SafePrintf ("\x02Warning: "); + Con_Printf ("%s", msg); +} + +/* +================ +Con_DPrintf + +A Con_Printf that only shows up if the "developer" cvar is set +================ +*/ +void Con_DPrintf (const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; + + if (!developer.value) + return; // don't confuse non-developers with techie stuff... + + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + + Con_SafePrintf ("%s", msg); //johnfitz -- was Con_Printf +} + +/* +================ +Con_DPrintf2 -- johnfitz -- only prints if "developer" >= 2 + +currently not used +================ +*/ +void Con_DPrintf2 (const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; + + if (developer.value >= 2) + { + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + Con_Printf ("%s", msg); + } +} + + +/* +================== +Con_SafePrintf + +Okay to call even when the screen can't be updated +================== +*/ +void Con_SafePrintf (const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; + int temp; + + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + + temp = scr_disabled_for_loading; + scr_disabled_for_loading = true; + Con_Printf ("%s", msg); + scr_disabled_for_loading = temp; +} + +/* +================ +Con_CenterPrintf -- johnfitz -- pad each line with spaces to make it appear centered +================ +*/ +void Con_CenterPrintf (int linewidth, const char *fmt, ...) FUNC_PRINTF(2,3); +void Con_CenterPrintf (int linewidth, const char *fmt, ...) +{ + va_list argptr; + char msg[MAXPRINTMSG]; //the original message + char line[MAXPRINTMSG]; //one line from the message + char spaces[21]; //buffer for spaces + char *src, *dst; + int len, s; + + va_start (argptr, fmt); + q_vsnprintf (msg, sizeof(msg), fmt, argptr); + va_end (argptr); + + linewidth = q_min(linewidth, con_linewidth); + for (src = msg; *src; ) + { + dst = line; + while (*src && *src != '\n') + *dst++ = *src++; + *dst = 0; + if (*src == '\n') + src++; + + len = strlen(line); + if (len < linewidth) + { + s = (linewidth-len)/2; + memset (spaces, ' ', s); + spaces[s] = 0; + Con_Printf ("%s%s\n", spaces, line); + } + else + Con_Printf ("%s\n", line); + } +} + +/* +================== +Con_LogCenterPrint -- johnfitz -- echo centerprint message to the console +================== +*/ +void Con_LogCenterPrint (const char *str) +{ + if (!strcmp(str, con_lastcenterstring)) + return; //ignore duplicates + + if (cl.gametype == GAME_DEATHMATCH && con_logcenterprint.value != 2) + return; //don't log in deathmatch + + strcpy(con_lastcenterstring, str); + + if (con_logcenterprint.value) + { + Con_Printf ("%s", Con_Quakebar(40)); + Con_CenterPrintf (40, "%s\n", str); + Con_Printf ("%s", Con_Quakebar(40)); + Con_ClearNotify (); + } +} + +/* +============================================================================== + + TAB COMPLETION + +============================================================================== +*/ + +//johnfitz -- tab completion stuff +//unique defs +char key_tabpartial[MAXCMDLINE]; +typedef struct tab_s +{ + const char *name; + const char *type; + struct tab_s *next; + struct tab_s *prev; +} tab_t; +tab_t *tablist; + +//defs from elsewhere +extern qboolean keydown[256]; +typedef struct cmd_function_s +{ + struct cmd_function_s *next; + const char *name; + xcommand_t function; +} cmd_function_t; +extern cmd_function_t *cmd_functions; +#define MAX_ALIAS_NAME 32 +typedef struct cmdalias_s +{ + struct cmdalias_s *next; + char name[MAX_ALIAS_NAME]; + char *value; +} cmdalias_t; +extern cmdalias_t *cmd_alias; + +/* +============ +AddToTabList -- johnfitz + +tablist is a doubly-linked loop, alphabetized by name +============ +*/ + +// bash_partial is the string that can be expanded, +// aka Linux Bash shell. -- S.A. +static char bash_partial[80]; +static qboolean bash_singlematch; + +void AddToTabList (const char *name, const char *type) +{ + tab_t *t,*insert; + char *i_bash; + const char *i_name; + + if (!*bash_partial) + { + strncpy (bash_partial, name, 79); + bash_partial[79] = '\0'; + } + else + { + bash_singlematch = 0; + // find max common between bash_partial and name + i_bash = bash_partial; + i_name = name; + while (*i_bash && (*i_bash == *i_name)) + { + i_bash++; + i_name++; + } + *i_bash = 0; + } + + t = (tab_t *) Hunk_Alloc(sizeof(tab_t)); + t->name = name; + t->type = type; + + if (!tablist) //create list + { + tablist = t; + t->next = t; + t->prev = t; + } + else if (strcmp(name, tablist->name) < 0) //insert at front + { + t->next = tablist; + t->prev = tablist->prev; + t->next->prev = t; + t->prev->next = t; + tablist = t; + } + else //insert later + { + insert = tablist; + do + { + if (strcmp(name, insert->name) < 0) + break; + insert = insert->next; + } while (insert != tablist); + + t->next = insert; + t->prev = insert->prev; + t->next->prev = t; + t->prev->next = t; + } +} + +typedef struct arg_completion_type_s +{ + const char *command; + filelist_item_t **filelist; +} arg_completion_type_t; + +static const arg_completion_type_t arg_completion_types[] = +{ + { "map ", &extralevels }, + { "changelevel ", &extralevels }, + { "game ", &modlist }, + { "record ", &demolist }, + { "playdemo ", &demolist }, + { "timedemo ", &demolist } +}; + +static const int num_arg_completion_types = Q_COUNTOF(arg_completion_types); + +/* +============ +FindCompletion -- stevenaaus +============ +*/ +const char *FindCompletion (const char *partial, filelist_item_t *filelist, int *nummatches_out) +{ + static char matched[40]; + char *i_matched, *i_name; + filelist_item_t *file; + int init, match, plen; + + memset(matched, 0, sizeof(matched)); + plen = strlen(partial); + match = 0; + + for (file = filelist, init = 0; file; file = file->next) + { + if (!strncmp(file->name, partial, plen)) + { + if (init == 0) + { + init = 1; + strncpy (matched, file->name, sizeof(matched)-1); + matched[sizeof(matched)-1] = '\0'; + } + else + { // find max common + i_matched = matched; + i_name = file->name; + while (*i_matched && (*i_matched == *i_name)) + { + i_matched++; + i_name++; + } + *i_matched = 0; + } + match++; + } + } + + *nummatches_out = match; + + if (match > 1) + { + for (file = filelist; file; file = file->next) + { + if (!strncmp(file->name, partial, plen)) + Con_SafePrintf (" %s\n", file->name); + } + Con_SafePrintf ("\n"); + } + + return matched; +} + +/* +============ +BuildTabList -- johnfitz +============ +*/ +void BuildTabList (const char *partial) +{ + cmdalias_t *alias; + cvar_t *cvar; + cmd_function_t *cmd; + int len; + + tablist = NULL; + len = strlen(partial); + + bash_partial[0] = 0; + bash_singlematch = 1; + + cvar = Cvar_FindVarAfter ("", CVAR_NONE); + for ( ; cvar ; cvar=cvar->next) + if (!Q_strncmp (partial, cvar->name, len)) + AddToTabList (cvar->name, "cvar"); + + for (cmd=cmd_functions ; cmd ; cmd=cmd->next) + if (!Q_strncmp (partial,cmd->name, len)) + AddToTabList (cmd->name, "command"); + + for (alias=cmd_alias ; alias ; alias=alias->next) + if (!Q_strncmp (partial, alias->name, len)) + AddToTabList (alias->name, "alias"); +} + +/* +============ +Con_TabComplete -- johnfitz +============ +*/ +void Con_TabComplete (void) +{ + char partial[MAXCMDLINE]; + const char *match; + static char *c; + tab_t *t; + int mark, i, j; + +// if editline is empty, return + if (key_lines[edit_line][1] == 0) + return; + +// get partial string (space -> cursor) + if (!key_tabpartial[0]) //first time through, find new insert point. (Otherwise, use previous.) + { + //work back from cursor until you find a space, quote, semicolon, or prompt + c = key_lines[edit_line] + key_linepos - 1; //start one space left of cursor + while (*c!=' ' && *c!='\"' && *c!=';' && c!=key_lines[edit_line]) + c--; + c++; //start 1 char after the separator we just found + } + for (i = 0; c + i < key_lines[edit_line] + key_linepos; i++) + partial[i] = c[i]; + partial[i] = 0; + +// Map autocomplete function -- S.A +// Since we don't have argument completion, this hack will do for now... + for (j=0; j<num_arg_completion_types; j++) + { + // arg_completion contains a command we can complete the arguments + // for (like "map ") and a list of all the maps. + arg_completion_type_t arg_completion = arg_completion_types[j]; + const char *command_name = arg_completion.command; + + if (!strncmp (key_lines[edit_line] + 1, command_name, strlen(command_name))) + { + int nummatches = 0; + const char *matched_map = FindCompletion(partial, *arg_completion.filelist, &nummatches); + if (!*matched_map) + return; + q_strlcpy (partial, matched_map, MAXCMDLINE); + *c = '\0'; + q_strlcat (key_lines[edit_line], partial, MAXCMDLINE); + key_linepos = c - key_lines[edit_line] + Q_strlen(matched_map); //set new cursor position + if (key_linepos >= MAXCMDLINE) + key_linepos = MAXCMDLINE - 1; + // if only one match, append a space + if (key_linepos < MAXCMDLINE - 1 && + key_lines[edit_line][key_linepos] == 0 && (nummatches == 1)) + { + key_lines[edit_line][key_linepos] = ' '; + key_linepos++; + key_lines[edit_line][key_linepos] = 0; + } + c = key_lines[edit_line] + key_linepos; + return; + } + } + +//if partial is empty, return + if (partial[0] == 0) + return; + +//trim trailing space becuase it screws up string comparisons + if (i > 0 && partial[i-1] == ' ') + partial[i-1] = 0; + +// find a match + mark = Hunk_LowMark(); + if (!key_tabpartial[0]) //first time through + { + q_strlcpy (key_tabpartial, partial, MAXCMDLINE); + BuildTabList (key_tabpartial); + + if (!tablist) + return; + + // print list if length > 1 + if (tablist->next != tablist) + { + t = tablist; + Con_SafePrintf("\n"); + do + { + Con_SafePrintf(" %s (%s)\n", t->name, t->type); + t = t->next; + } while (t != tablist); + Con_SafePrintf("\n"); + } + + // match = tablist->name; + // First time, just show maximum matching chars -- S.A. + match = bash_partial; + } + else + { + BuildTabList (key_tabpartial); + + if (!tablist) + return; + + //find current match -- can't save a pointer because the list will be rebuilt each time + t = tablist; + match = keydown[K_SHIFT] ? t->prev->name : t->name; + do + { + if (!Q_strcmp(t->name, partial)) + { + match = keydown[K_SHIFT] ? t->prev->name : t->next->name; + break; + } + t = t->next; + } while (t != tablist); + } + Hunk_FreeToLowMark(mark); //it's okay to free it here because match is a pointer to persistent data + +// insert new match into edit line + q_strlcpy (partial, match, MAXCMDLINE); //first copy match string + q_strlcat (partial, key_lines[edit_line] + key_linepos, MAXCMDLINE); //then add chars after cursor + *c = '\0'; //now copy all of this into edit line + q_strlcat (key_lines[edit_line], partial, MAXCMDLINE); + key_linepos = c - key_lines[edit_line] + Q_strlen(match); //set new cursor position + if (key_linepos >= MAXCMDLINE) + key_linepos = MAXCMDLINE - 1; + +// if cursor is at end of string, let's append a space to make life easier + if (key_linepos < MAXCMDLINE - 1 && + key_lines[edit_line][key_linepos] == 0 && bash_singlematch) + { + key_lines[edit_line][key_linepos] = ' '; + key_linepos++; + key_lines[edit_line][key_linepos] = 0; + // S.A.: the map argument completion (may be in combination with the bash-style + // display behavior changes, causes weirdness when completing the arguments for + // the changelevel command. the line below "fixes" it, although I'm not sure about + // the reason, yet, neither do I know any possible side effects of it: + c = key_lines[edit_line] + key_linepos; + } +} + +/* +============================================================================== + +DRAWING + +============================================================================== +*/ + +/* +================ +Con_DrawNotify + +Draws the last few lines of output transparently over the game top +================ +*/ +void Con_DrawNotify (void) +{ + int i, x, v; + const char *text; + float time; + + GL_SetCanvas (CANVAS_CONSOLE); //johnfitz + v = vid.conheight; //johnfitz + + for (i = con_current-NUM_CON_TIMES+1; i <= con_current; i++) + { + if (i < 0) + continue; + time = con_times[i % NUM_CON_TIMES]; + if (time == 0) + continue; + time = realtime - time; + if (time > con_notifytime.value) + continue; + text = con_text + (i % con_totallines)*con_linewidth; + + clearnotify = 0; + + for (x = 0; x < con_linewidth; x++) + Draw_Character ((x+1)<<3, v, text[x]); + + v += 8; + + scr_tileclear_updates = 0; //johnfitz + } + + if (key_dest == key_message) + { + clearnotify = 0; + + if (chat_team) + { + Draw_String (8, v, "say_team:"); + x = 11; + } + else + { + Draw_String (8, v, "say:"); + x = 6; + } + + text = Key_GetChatBuffer(); + i = Key_GetChatMsgLen(); + if (i > con_linewidth - x - 1) + text += i - con_linewidth + x + 1; + + while (*text) + { + Draw_Character (x<<3, v, *text); + x++; + text++; + } + + Draw_Character (x<<3, v, 10 + ((int)(realtime*con_cursorspeed)&1)); + v += 8; + + scr_tileclear_updates = 0; //johnfitz + } +} + +/* +================ +Con_DrawInput -- johnfitz -- modified to allow insert editing + +The input line scrolls horizontally if typing goes beyond the right edge +================ +*/ +extern qpic_t *pic_ovr, *pic_ins; //johnfitz -- new cursor handling + +void Con_DrawInput (void) +{ + int i, ofs; + + if (key_dest != key_console && !con_forcedup) + return; // don't draw anything + +// prestep if horizontally scrolling + if (key_linepos >= con_linewidth) + ofs = 1 + key_linepos - con_linewidth; + else + ofs = 0; + +// draw input string + for (i = 0; key_lines[edit_line][i+ofs] && i < con_linewidth; i++) + Draw_Character ((i+1)<<3, vid.conheight - 16, key_lines[edit_line][i+ofs]); + +// johnfitz -- new cursor handling + if (!((int)((realtime-key_blinktime)*con_cursorspeed) & 1)) + { + i = key_linepos - ofs; + Draw_Pic ((i+1)<<3, vid.conheight - 16, key_insert ? pic_ins : pic_ovr); + } +} + +/* +================ +Con_DrawConsole -- johnfitz -- heavy revision + +Draws the console with the solid background +The typing input line at the bottom should only be drawn if typing is allowed +================ +*/ +void Con_DrawConsole (int lines, qboolean drawinput) +{ + int i, x, y, j, sb, rows; + const char *text; + char ver[32]; + + if (lines <= 0) + return; + + con_vislines = lines * vid.conheight / glheight; + GL_SetCanvas (CANVAS_CONSOLE); + +// draw the background + Draw_ConsoleBackground (); + +// draw the buffer text + rows = (con_vislines +7)/8; + y = vid.conheight - rows*8; + rows -= 2; //for input and version lines + sb = (con_backscroll) ? 2 : 0; + + for (i = con_current - rows + 1; i <= con_current - sb; i++, y += 8) + { + j = i - con_backscroll; + if (j < 0) + j = 0; + text = con_text + (j % con_totallines)*con_linewidth; + + for (x = 0; x < con_linewidth; x++) + Draw_Character ( (x + 1)<<3, y, text[x]); + } + +// draw scrollback arrows + if (con_backscroll) + { + y += 8; // blank line + for (x = 0; x < con_linewidth; x += 4) + Draw_Character ((x + 1)<<3, y, '^'); + y += 8; + } + +// draw the input prompt, user text, and cursor + if (drawinput) + Con_DrawInput (); + +//draw version number in bottom right + y += 8; + q_snprintf (ver, sizeof(ver), "QuakeSpasm " QUAKESPASM_VER_STRING); + for (x = 0; x < (int)strlen(ver); x++) + Draw_Character ((con_linewidth - strlen(ver) + x + 2)<<3, y, ver[x] /*+ 128*/); +} + + +/* +================== +Con_NotifyBox +================== +*/ +void Con_NotifyBox (const char *text) +{ + double t1, t2; + int lastkey, lastchar; + +// during startup for sound / cd warnings + Con_Printf ("\n\n%s", Con_Quakebar(40)); //johnfitz + Con_Printf ("%s", text); + Con_Printf ("Press a key.\n"); + Con_Printf ("%s", Con_Quakebar(40)); //johnfitz + + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_console; + + Key_BeginInputGrab (); + do + { + t1 = Sys_DoubleTime (); + SCR_UpdateScreen (); + Sys_SendKeyEvents (); + Key_GetGrabbedInput (&lastkey, &lastchar); + Sys_Sleep (16); + t2 = Sys_DoubleTime (); + realtime += t2-t1; // make the cursor blink + } while (lastkey == -1 && lastchar == -1); + Key_EndInputGrab (); + + Con_Printf ("\n"); + IN_Activate(); + key_dest = key_game; + realtime = 0; // put the cursor back to invisible +} + + +void LOG_Init (quakeparms_t *parms) +{ + time_t inittime; + char session[24]; + + if (!COM_CheckParm("-condebug")) + return; + + inittime = time (NULL); + strftime (session, sizeof(session), "%m/%d/%Y %H:%M:%S", localtime(&inittime)); + q_snprintf (logfilename, sizeof(logfilename), "%s/qconsole.log", parms->basedir); + +// unlink (logfilename); + + log_fd = open (logfilename, O_WRONLY | O_CREAT | O_TRUNC, 0666); + if (log_fd == -1) + { + fprintf (stderr, "Error: Unable to create log file %s\n", logfilename); + return; + } + + con_debuglog = true; + Con_DebugLog (va("LOG started on: %s \n", session)); + +} + +void LOG_Close (void) +{ + if (log_fd == -1) + return; + close (log_fd); + log_fd = -1; +} + diff --git a/Quake/console.h b/Quake/console.h new file mode 100644 index 0000000..0fa4a8c --- /dev/null +++ b/Quake/console.h @@ -0,0 +1,69 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __CONSOLE_H +#define __CONSOLE_H + +// +// console +// +extern int con_totallines; +extern int con_backscroll; +extern qboolean con_forcedup; // because no entities to refresh +extern qboolean con_initialized; +extern byte *con_chars; + +extern char con_lastcenterstring[]; //johnfitz + +void Con_DrawCharacter (int cx, int line, int num); + +void Con_CheckResize (void); +void Con_Init (void); +void Con_DrawConsole (int lines, qboolean drawinput); +void Con_Printf (const char *fmt, ...) FUNC_PRINTF(1,2); +void Con_DWarning (const char *fmt, ...) FUNC_PRINTF(1,2); //ericw +void Con_Warning (const char *fmt, ...) FUNC_PRINTF(1,2); //johnfitz +void Con_DPrintf (const char *fmt, ...) FUNC_PRINTF(1,2); +void Con_DPrintf2 (const char *fmt, ...) FUNC_PRINTF(1,2); //johnfitz +void Con_SafePrintf (const char *fmt, ...) FUNC_PRINTF(1,2); +void Con_DrawNotify (void); +void Con_ClearNotify (void); +void Con_ToggleConsole_f (void); + +void Con_NotifyBox (const char *text); // during startup for sound / cd warnings + +void Con_Show (void); +void Con_Hide (void); + +const char *Con_Quakebar (int len); +void Con_TabComplete (void); +void Con_LogCenterPrint (const char *str); + +// +// debuglog +// +void LOG_Init (quakeparms_t *parms); +void LOG_Close (void); +void Con_DebugLog (const char *msg); + +#endif /* __CONSOLE_H */ + diff --git a/Quake/crc.c b/Quake/crc.c new file mode 100644 index 0000000..7da96b3 --- /dev/null +++ b/Quake/crc.c @@ -0,0 +1,94 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +/* crc.c */ + +#include "quakedef.h" +#include "crc.h" + +// this is a 16 bit, non-reflected CRC using the polynomial 0x1021 +// and the initial and final xor values shown below... in other words, the +// CCITT standard CRC used by XMODEM + +#define CRC_INIT_VALUE 0xffff +#define CRC_XOR_VALUE 0x0000 + +static const unsigned short crctable[256] = +{ + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 +}; + +void CRC_Init(unsigned short *crcvalue) +{ + *crcvalue = CRC_INIT_VALUE; +} + +void CRC_ProcessByte(unsigned short *crcvalue, byte data) +{ + *crcvalue = (*crcvalue << 8) ^ crctable[(*crcvalue >> 8) ^ data]; +} + +unsigned short CRC_Value(unsigned short crcvalue) +{ + return crcvalue ^ CRC_XOR_VALUE; +} + +//johnfitz -- texture crc +unsigned short CRC_Block (const byte *start, int count) +{ + unsigned short crc; + + CRC_Init (&crc); + while (count--) + crc = (crc << 8) ^ crctable[(crc >> 8) ^ *start++]; + + return crc; +} diff --git a/Quake/crc.h b/Quake/crc.h new file mode 100644 index 0000000..421f522 --- /dev/null +++ b/Quake/crc.h @@ -0,0 +1,33 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_CRC_H +#define _QUAKE_CRC_H + +/* crc.h */ + +void CRC_Init(unsigned short *crcvalue); +void CRC_ProcessByte(unsigned short *crcvalue, byte data); +unsigned short CRC_Value(unsigned short crcvalue); +unsigned short CRC_Block (const byte *start, int count); //johnfitz -- texture crc + +#endif /* _QUAKE_CRC_H */ + diff --git a/Quake/cvar.c b/Quake/cvar.c new file mode 100644 index 0000000..aaa8089 --- /dev/null +++ b/Quake/cvar.c @@ -0,0 +1,652 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// cvar.c -- dynamic variable tracking + +#include "quakedef.h" + +static cvar_t *cvar_vars; +static char cvar_null_string[] = ""; + +//============================================================================== +// +// USER COMMANDS +// +//============================================================================== + +void Cvar_Reset (const char *name); //johnfitz + +/* +============ +Cvar_List_f -- johnfitz +============ +*/ +void Cvar_List_f (void) +{ + cvar_t *cvar; + const char *partial; + int len, count; + + if (Cmd_Argc() > 1) + { + partial = Cmd_Argv (1); + len = Q_strlen(partial); + } + else + { + partial = NULL; + len = 0; + } + + count = 0; + for (cvar = cvar_vars ; cvar ; cvar = cvar->next) + { + if (partial && Q_strncmp(partial, cvar->name, len)) + { + continue; + } + Con_SafePrintf ("%s%s %s \"%s\"\n", + (cvar->flags & CVAR_ARCHIVE) ? "*" : " ", + (cvar->flags & CVAR_NOTIFY) ? "s" : " ", + cvar->name, + cvar->string); + count++; + } + + Con_SafePrintf ("%i cvars", count); + if (partial) + { + Con_SafePrintf (" beginning with \"%s\"", partial); + } + Con_SafePrintf ("\n"); +} + +/* +============ +Cvar_Inc_f -- johnfitz +============ +*/ +void Cvar_Inc_f (void) +{ + switch (Cmd_Argc()) + { + default: + case 1: + Con_Printf("inc <cvar> [amount] : increment cvar\n"); + break; + case 2: + Cvar_SetValue (Cmd_Argv(1), Cvar_VariableValue(Cmd_Argv(1)) + 1); + break; + case 3: + Cvar_SetValue (Cmd_Argv(1), Cvar_VariableValue(Cmd_Argv(1)) + Q_atof(Cmd_Argv(2))); + break; + } +} + +/* +============ +Cvar_Toggle_f -- johnfitz +============ +*/ +void Cvar_Toggle_f (void) +{ + switch (Cmd_Argc()) + { + default: + case 1: + Con_Printf("toggle <cvar> : toggle cvar\n"); + break; + case 2: + if (Cvar_VariableValue(Cmd_Argv(1))) + Cvar_Set (Cmd_Argv(1), "0"); + else + Cvar_Set (Cmd_Argv(1), "1"); + break; + } +} + +/* +============ +Cvar_Cycle_f -- johnfitz +============ +*/ +void Cvar_Cycle_f (void) +{ + int i; + + if (Cmd_Argc() < 3) + { + Con_Printf("cycle <cvar> <value list>: cycle cvar through a list of values\n"); + return; + } + + //loop through the args until you find one that matches the current cvar value. + //yes, this will get stuck on a list that contains the same value twice. + //it's not worth dealing with, and i'm not even sure it can be dealt with. + for (i = 2; i < Cmd_Argc(); i++) + { + //zero is assumed to be a string, even though it could actually be zero. The worst case + //is that the first time you call this command, it won't match on zero when it should, but after that, + //it will be comparing strings that all had the same source (the user) so it will work. + if (Q_atof(Cmd_Argv(i)) == 0) + { + if (!strcmp(Cmd_Argv(i), Cvar_VariableString(Cmd_Argv(1)))) + break; + } + else + { + if (Q_atof(Cmd_Argv(i)) == Cvar_VariableValue(Cmd_Argv(1))) + break; + } + } + + if (i == Cmd_Argc()) + Cvar_Set (Cmd_Argv(1), Cmd_Argv(2)); // no match + else if (i + 1 == Cmd_Argc()) + Cvar_Set (Cmd_Argv(1), Cmd_Argv(2)); // matched last value in list + else + Cvar_Set (Cmd_Argv(1), Cmd_Argv(i+1)); // matched earlier in list +} + +/* +============ +Cvar_Reset_f -- johnfitz +============ +*/ +void Cvar_Reset_f (void) +{ + switch (Cmd_Argc()) + { + default: + case 1: + Con_Printf ("reset <cvar> : reset cvar to default\n"); + break; + case 2: + Cvar_Reset (Cmd_Argv(1)); + break; + } +} + +/* +============ +Cvar_ResetAll_f -- johnfitz +============ +*/ +void Cvar_ResetAll_f (void) +{ + cvar_t *var; + + for (var = cvar_vars ; var ; var = var->next) + Cvar_Reset (var->name); +} + +/* +============ +Cvar_ResetCfg_f -- QuakeSpasm +============ +*/ +void Cvar_ResetCfg_f (void) +{ + cvar_t *var; + + for (var = cvar_vars ; var ; var = var->next) + if (var->flags & CVAR_ARCHIVE) Cvar_Reset (var->name); +} + +//============================================================================== +// +// INIT +// +//============================================================================== + +/* +============ +Cvar_Init -- johnfitz +============ +*/ + +void Cvar_Init (void) +{ + Cmd_AddCommand ("cvarlist", Cvar_List_f); + Cmd_AddCommand ("toggle", Cvar_Toggle_f); + Cmd_AddCommand ("cycle", Cvar_Cycle_f); + Cmd_AddCommand ("inc", Cvar_Inc_f); + Cmd_AddCommand ("reset", Cvar_Reset_f); + Cmd_AddCommand ("resetall", Cvar_ResetAll_f); + Cmd_AddCommand ("resetcfg", Cvar_ResetCfg_f); +} + +//============================================================================== +// +// CVAR FUNCTIONS +// +//============================================================================== + +/* +============ +Cvar_FindVar +============ +*/ +cvar_t *Cvar_FindVar (const char *var_name) +{ + cvar_t *var; + + for (var = cvar_vars ; var ; var = var->next) + { + if (!Q_strcmp(var_name, var->name)) + return var; + } + + return NULL; +} + +cvar_t *Cvar_FindVarAfter (const char *prev_name, unsigned int with_flags) +{ + cvar_t *var; + + if (*prev_name) + { + var = Cvar_FindVar (prev_name); + if (!var) + return NULL; + var = var->next; + } + else + var = cvar_vars; + + // search for the next cvar matching the needed flags + while (var) + { + if ((var->flags & with_flags) || !with_flags) + break; + var = var->next; + } + return var; +} + +/* +============ +Cvar_LockVar +============ +*/ +void Cvar_LockVar (const char *var_name) +{ + cvar_t *var = Cvar_FindVar (var_name); + if (var) + var->flags |= CVAR_LOCKED; +} + +void Cvar_UnlockVar (const char *var_name) +{ + cvar_t *var = Cvar_FindVar (var_name); + if (var) + var->flags &= ~CVAR_LOCKED; +} + +void Cvar_UnlockAll (void) +{ + cvar_t *var; + + for (var = cvar_vars ; var ; var = var->next) + { + var->flags &= ~CVAR_LOCKED; + } +} + +/* +============ +Cvar_VariableValue +============ +*/ +float Cvar_VariableValue (const char *var_name) +{ + cvar_t *var; + + var = Cvar_FindVar (var_name); + if (!var) + return 0; + return Q_atof (var->string); +} + + +/* +============ +Cvar_VariableString +============ +*/ +const char *Cvar_VariableString (const char *var_name) +{ + cvar_t *var; + + var = Cvar_FindVar (var_name); + if (!var) + return cvar_null_string; + return var->string; +} + + +/* +============ +Cvar_CompleteVariable +============ +*/ +const char *Cvar_CompleteVariable (const char *partial) +{ + cvar_t *cvar; + int len; + + len = Q_strlen(partial); + if (!len) + return NULL; + +// check functions + for (cvar = cvar_vars ; cvar ; cvar = cvar->next) + { + if (!Q_strncmp(partial, cvar->name, len)) + return cvar->name; + } + + return NULL; +} + +/* +============ +Cvar_Reset -- johnfitz +============ +*/ +void Cvar_Reset (const char *name) +{ + cvar_t *var; + + var = Cvar_FindVar (name); + if (!var) + Con_Printf ("variable \"%s\" not found\n", name); + else + Cvar_SetQuick (var, var->default_string); +} + +void Cvar_SetQuick (cvar_t *var, const char *value) +{ + if (var->flags & (CVAR_ROM|CVAR_LOCKED)) + return; + if (!(var->flags & CVAR_REGISTERED)) + return; + + if (!var->string) + var->string = Z_Strdup (value); + else + { + int len; + + if (!strcmp(var->string, value)) + return; // no change + + var->flags |= CVAR_CHANGED; + len = Q_strlen (value); + if (len != Q_strlen(var->string)) + { + Z_Free ((void *)var->string); + var->string = (char *) Z_Malloc (len + 1); + } + memcpy ((char *)var->string, value, len + 1); + } + + var->value = Q_atof (var->string); + + //johnfitz -- save initial value for "reset" command + if (!var->default_string) + var->default_string = Z_Strdup (var->string); + //johnfitz -- during initialization, update default too + else if (!host_initialized) + { + // Sys_Printf("changing default of %s: %s -> %s\n", + // var->name, var->default_string, var->string); + Z_Free ((void *)var->default_string); + var->default_string = Z_Strdup (var->string); + } + //johnfitz + + if (var->callback) + var->callback (var); +} + +void Cvar_SetValueQuick (cvar_t *var, const float value) +{ + char val[32], *ptr = val; + + if (value == (float)((int)value)) + q_snprintf (val, sizeof(val), "%i", (int)value); + else + { + q_snprintf (val, sizeof(val), "%f", value); + // kill trailing zeroes + while (*ptr) + ptr++; + while (--ptr > val && *ptr == '0' && ptr[-1] != '.') + *ptr = '\0'; + } + + Cvar_SetQuick (var, val); +} + +/* +============ +Cvar_Set +============ +*/ +void Cvar_Set (const char *var_name, const char *value) +{ + cvar_t *var; + + var = Cvar_FindVar (var_name); + if (!var) + { // there is an error in C code if this happens + Con_Printf ("Cvar_Set: variable %s not found\n", var_name); + return; + } + + Cvar_SetQuick (var, value); +} + +/* +============ +Cvar_SetValue +============ +*/ +void Cvar_SetValue (const char *var_name, const float value) +{ + char val[32], *ptr = val; + + if (value == (float)((int)value)) + q_snprintf (val, sizeof(val), "%i", (int)value); + else + { + q_snprintf (val, sizeof(val), "%f", value); + // kill trailing zeroes + while (*ptr) + ptr++; + while (--ptr > val && *ptr == '0' && ptr[-1] != '.') + *ptr = '\0'; + } + + Cvar_Set (var_name, val); +} + +/* +============ +Cvar_SetROM +============ +*/ +void Cvar_SetROM (const char *var_name, const char *value) +{ + cvar_t *var = Cvar_FindVar (var_name); + if (var) + { + var->flags &= ~CVAR_ROM; + Cvar_SetQuick (var, value); + var->flags |= CVAR_ROM; + } +} + +/* +============ +Cvar_SetValueROM +============ +*/ +void Cvar_SetValueROM (const char *var_name, const float value) +{ + cvar_t *var = Cvar_FindVar (var_name); + if (var) + { + var->flags &= ~CVAR_ROM; + Cvar_SetValueQuick (var, value); + var->flags |= CVAR_ROM; + } +} + +/* +============ +Cvar_RegisterVariable + +Adds a freestanding variable to the variable list. +============ +*/ +void Cvar_RegisterVariable (cvar_t *variable) +{ + char value[512]; + qboolean set_rom; + cvar_t *cursor,*prev; //johnfitz -- sorted list insert + +// first check to see if it has already been defined + if (Cvar_FindVar (variable->name)) + { + Con_Printf ("Can't register variable %s, already defined\n", variable->name); + return; + } + +// check for overlap with a command + if (Cmd_Exists (variable->name)) + { + Con_Printf ("Cvar_RegisterVariable: %s is a command\n", variable->name); + return; + } + +// link the variable in + //johnfitz -- insert each entry in alphabetical order + if (cvar_vars == NULL || + strcmp(variable->name, cvar_vars->name) < 0) // insert at front + { + variable->next = cvar_vars; + cvar_vars = variable; + } + else //insert later + { + prev = cvar_vars; + cursor = cvar_vars->next; + while (cursor && (strcmp(variable->name, cursor->name) > 0)) + { + prev = cursor; + cursor = cursor->next; + } + variable->next = prev->next; + prev->next = variable; + } + //johnfitz + variable->flags |= CVAR_REGISTERED; + +// copy the value off, because future sets will Z_Free it + q_strlcpy (value, variable->string, sizeof(value)); + variable->string = NULL; + variable->default_string = NULL; + + if (!(variable->flags & CVAR_CALLBACK)) + variable->callback = NULL; + +// set it through the function to be consistent + set_rom = (variable->flags & CVAR_ROM); + variable->flags &= ~CVAR_ROM; + Cvar_SetQuick (variable, value); + if (set_rom) + variable->flags |= CVAR_ROM; +} + +/* +============ +Cvar_SetCallback + +Set a callback function to the var +============ +*/ +void Cvar_SetCallback (cvar_t *var, cvarcallback_t func) +{ + var->callback = func; + if (func) + var->flags |= CVAR_CALLBACK; + else var->flags &= ~CVAR_CALLBACK; +} + +/* +============ +Cvar_Command + +Handles variable inspection and changing from the console +============ +*/ +qboolean Cvar_Command (void) +{ + cvar_t *v; + +// check variables + v = Cvar_FindVar (Cmd_Argv(0)); + if (!v) + return false; + +// perform a variable print or set + if (Cmd_Argc() == 1) + { + Con_Printf ("\"%s\" is \"%s\"\n", v->name, v->string); + return true; + } + + Cvar_Set (v->name, Cmd_Argv(1)); + return true; +} + + +/* +============ +Cvar_WriteVariables + +Writes lines containing "set variable value" for all variables +with the archive flag set to true. +============ +*/ +void Cvar_WriteVariables (FILE *f) +{ + cvar_t *var; + + for (var = cvar_vars ; var ; var = var->next) + { + if (var->flags & CVAR_ARCHIVE) + fprintf (f, "%s \"%s\"\n", var->name, var->string); + } +} + diff --git a/Quake/cvar.h b/Quake/cvar.h new file mode 100644 index 0000000..495be2e --- /dev/null +++ b/Quake/cvar.h @@ -0,0 +1,143 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __CVAR_H__ +#define __CVAR_H__ + +/* +cvar_t variables are used to hold scalar or string variables that can +be changed or displayed at the console or prog code as well as accessed +directly in C code. + +it is sufficient to initialize a cvar_t with just the first two fields, +or you can add a ,true flag for variables that you want saved to the +configuration file when the game is quit: + +cvar_t r_draworder = {"r_draworder","1"}; +cvar_t scr_screensize = {"screensize","1",true}; + +Cvars must be registered before use, or they will have a 0 value instead +of the float interpretation of the string. +Generally, all cvar_t declarations should be registered in the apropriate +init function before any console commands are executed: + +Cvar_RegisterVariable (&host_framerate); + + +C code usually just references a cvar in place: +if ( r_draworder.value ) + +It could optionally ask for the value to be looked up for a string name: +if (Cvar_VariableValue ("r_draworder")) + +Interpreted prog code can access cvars with the cvar(name) or +cvar_set (name, value) internal functions: +teamplay = cvar("teamplay"); +cvar_set ("registered", "1"); + +The user can access cvars from the console in two ways: +r_draworder prints the current value +r_draworder 0 sets the current value to 0 + +Cvars are restricted from having the same names as commands to keep this +interface from being ambiguous. + +*/ + +#define CVAR_NONE 0 +#define CVAR_ARCHIVE (1U << 0) // if set, causes it to be saved to config +#define CVAR_NOTIFY (1U << 1) // changes will be broadcasted to all players (q1) +#define CVAR_SERVERINFO (1U << 2) // added to serverinfo will be sent to clients (q1/net_dgrm.c and qwsv) +#define CVAR_USERINFO (1U << 3) // added to userinfo, will be sent to server (qwcl) +#define CVAR_CHANGED (1U << 4) +#define CVAR_ROM (1U << 6) +#define CVAR_LOCKED (1U << 8) // locked temporarily +#define CVAR_REGISTERED (1U << 10) // the var is added to the list of variables +#define CVAR_CALLBACK (1U << 16) // var has a callback + + +typedef void (*cvarcallback_t) (struct cvar_s *); + +typedef struct cvar_s +{ + const char *name; + const char *string; + unsigned int flags; + float value; + const char *default_string; //johnfitz -- remember defaults for reset function + cvarcallback_t callback; + struct cvar_s *next; +} cvar_t; + +void Cvar_RegisterVariable (cvar_t *variable); +// registers a cvar that already has the name, string, and optionally +// the archive elements set. + +void Cvar_SetCallback (cvar_t *var, cvarcallback_t func); +// set a callback function to the var + +void Cvar_Set (const char *var_name, const char *value); +// equivelant to "<name> <variable>" typed at the console + +void Cvar_SetValue (const char *var_name, const float value); +// expands value to a string and calls Cvar_Set + +void Cvar_SetROM (const char *var_name, const char *value); +void Cvar_SetValueROM (const char *var_name, const float value); +// sets a CVAR_ROM variable from within the engine + +void Cvar_SetQuick (cvar_t *var, const char *value); +void Cvar_SetValueQuick (cvar_t *var, const float value); +// these two accept a cvar pointer instead of a var name, +// but are otherwise identical to the "non-Quick" versions. +// the cvar MUST be registered. + +float Cvar_VariableValue (const char *var_name); +// returns 0 if not defined or non numeric + +const char *Cvar_VariableString (const char *var_name); +// returns an empty string if not defined + +qboolean Cvar_Command (void); +// called by Cmd_ExecuteString when Cmd_Argv(0) doesn't match a known +// command. Returns true if the command was a variable reference that +// was handled. (print or change) + +void Cvar_WriteVariables (FILE *f); +// Writes lines containing "set variable value" for all variables +// with the CVAR_ARCHIVE flag set + +cvar_t *Cvar_FindVar (const char *var_name); +cvar_t *Cvar_FindVarAfter (const char *prev_name, unsigned int with_flags); + +void Cvar_LockVar (const char *var_name); +void Cvar_UnlockVar (const char *var_name); +void Cvar_UnlockAll (void); + +void Cvar_Init (void); + +const char *Cvar_CompleteVariable (const char *partial); +// attempts to match a partial variable name for command line completion +// returns NULL if nothing fits + +#endif /* __CVAR_H__ */ + diff --git a/Quake/default_cfg.h b/Quake/default_cfg.h new file mode 100644 index 0000000..a83e7ce --- /dev/null +++ b/Quake/default_cfg.h @@ -0,0 +1,92 @@ +// keep in sync with Misc/qs_pak/default.cfg + +static const char default_cfg[] = +"unbindall\n" + +"bind ALT +strafe\n" + +"bind , +moveleft\n" +"bind a +moveleft\n" +"bind . +moveright\n" +"bind d +moveright\n" +"bind DEL +lookdown\n" +"bind PGDN +lookup\n" +"bind END centerview\n" + +"bind e +moveup\n" +"bind c +movedown\n" +"bind SHIFT +speed\n" +"bind CTRL +attack\n" +"bind UPARROW +forward\n" +"bind w +forward\n" +"bind DOWNARROW +back\n" +"bind s +back\n" +"bind LEFTARROW +left\n" +"bind RIGHTARROW +right\n" + +"bind SPACE +jump\n" + +"bind TAB +showscores\n" + +"bind 1 \"impulse 1\"\n" +"bind 2 \"impulse 2\"\n" +"bind 3 \"impulse 3\"\n" +"bind 4 \"impulse 4\"\n" +"bind 5 \"impulse 5\"\n" +"bind 6 \"impulse 6\"\n" +"bind 7 \"impulse 7\"\n" +"bind 8 \"impulse 8\"\n" + +"bind 0 \"impulse 0\"\n" + +"bind / \"impulse 10\"\n" +"bind MWHEELDOWN \"impulse 10\"\n" +"bind MWHEELUP \"impulse 12\"\n" + +"alias zoom_in \"sensitivity 2;fov 90;wait;fov 70;wait;fov 50;wait;fov 30;wait;fov 10;wait;fov 5;bind F11 zoom_out\"\n" +"alias zoom_out \"sensitivity 4;fov 5;wait;fov 10;wait;fov 30;wait;fov 50;wait;fov 70;wait;fov 90;bind F11 zoom_in; sensitivity 3\"\n" +"bind F11 zoom_in\n" + +"bind F1 \"help\"\n" +"bind F2 \"menu_save\"\n" +"bind F3 \"menu_load\"\n" +"bind F4 \"menu_options\"\n" +"bind F5 \"menu_multiplayer\"\n" +"bind F6 \"echo Quicksaving...; wait; save quick\"\n" +"bind F9 \"echo Quickloading...; wait; load quick\"\n" +"bind F10 \"quit\"\n" +"bind F12 \"screenshot\"\n" + +"bind \\ +mlook\n" + +"bind PAUSE \"pause\"\n" +"bind ESCAPE \"togglemenu\"\n" +"bind ~ \"toggleconsole\"\n" +"bind ` \"toggleconsole\"\n" + +"bind t \"messagemode\"\n" + +"bind + \"sizeup\"\n" +"bind = \"sizeup\"\n" +"bind - \"sizedown\"\n" + +"bind INS +klook\n" + +"bind MOUSE1 +attack\n" +"bind MOUSE2 +jump\n" + +"bind LSHOULDER \"impulse 12\"\n" +"bind RSHOULDER \"impulse 10\"\n" +"bind LTRIGGER +jump\n" +"bind RTRIGGER +attack\n" + +"gamma 1.0\n" +"volume 0.7\n" +"sensitivity 3\n" + +"viewsize 110\n" +"scr_conscale 1.6\n" +"scr_menuscale 1.6\n" +"scr_sbarscale 1.6\n" + +"+mlook\n"; diff --git a/Quake/detect.sh b/Quake/detect.sh new file mode 100755 index 0000000..94fc8dc --- /dev/null +++ b/Quake/detect.sh @@ -0,0 +1,62 @@ +#! /bin/sh + +# script from loki_setup tools + +DetectARCH() +{ + status=1 + case `uname -m` in + amd64 | x86_64) + echo "x86_64" + status=0;; + i?86 | i86*) + echo "x86" + status=0;; + 90*/*) + echo "hppa" + status=0;; + *) + case `uname -s` in + IRIX*) + echo "mips" + status=0;; + AIX*) + echo "ppc" + status=0;; + *) + arch=`uname -p 2> /dev/null || uname -m` + if test "$arch" = powerpc; then + echo "ppc" + else + echo $arch + fi + status=0;; + esac + esac + return $status +} + +DetectOS() +{ + os=`uname -s` + if test "$os" = "OpenUNIX"; then + echo SCO_SV + else + echo $os + fi + return 0 +} + +if test "$1" = "os"; then + result=`DetectOS` +elif test "$1" = "arch"; then + result=`DetectARCH` +else + result="OS: `DetectOS`, Arch: `DetectARCH`" +fi + +status="$?" +echo $result + +exit $status + diff --git a/Quake/draw.h b/Quake/draw.h new file mode 100644 index 0000000..396f57e --- /dev/null +++ b/Quake/draw.h @@ -0,0 +1,48 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_DRAW_H +#define _QUAKE_DRAW_H + +// draw.h -- these are the only functions outside the refresh allowed +// to touch the vid buffer + +extern qpic_t *draw_disc; // also used on sbar + +void Draw_Init (void); +void Draw_Character (int x, int y, int num); +void Draw_DebugChar (char num); +void Draw_Pic (int x, int y, qpic_t *pic); +void Draw_TransPicTranslate (int x, int y, qpic_t *pic, int top, int bottom); //johnfitz -- more parameters +void Draw_ConsoleBackground (void); //johnfitz -- removed parameter int lines +void Draw_TileClear (int x, int y, int w, int h); +void Draw_Fill (int x, int y, int w, int h, int c, float alpha); //johnfitz -- added alpha +void Draw_FadeScreen (void); +void Draw_String (int x, int y, const char *str); +qpic_t *Draw_PicFromWad (const char *name); +qpic_t *Draw_CachePic (const char *path); +void Draw_NewGame (void); + +void GL_SetCanvas (canvastype newcanvas); //johnfitz + +#endif /* _QUAKE_DRAW_H */ + diff --git a/Quake/filenames.h b/Quake/filenames.h new file mode 100644 index 0000000..4389e6b --- /dev/null +++ b/Quake/filenames.h @@ -0,0 +1,193 @@ +/* Macros for taking apart, interpreting and processing file names. + * + * These are here because some non-Posix (a.k.a. DOSish) systems have + * drive letter brain-damage at the beginning of an absolute file name, + * use forward- and back-slash in path names interchangeably, and + * some of them have case-insensitive file names. + * + * This was based on filenames.h from BFD, the Binary File Descriptor + * library, Copyright (C) 2000-2016 Free Software Foundation, Inc., + * and changed by O. Sezer <sezero@users.sourceforge.net> for our needs. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef FILENAMES_H +#define FILENAMES_H + +#include <string.h> + +/* ---------------------- Windows, DOS, OS2: ---------------------- */ +#if defined(__MSDOS__) || defined(__DOS__) || defined(__DJGPP__) || \ + defined(_MSDOS) || defined(__OS2__) || defined(__EMX__) || \ + defined(_WIN32) || defined(_Windows) || defined(__WINDOWS__) || \ + defined(__NT__) || defined(__CYGWIN__) + +#define HAVE_DOS_BASED_FILE_SYSTEM 1 +#define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1 + +#define HAS_DRIVE_SPEC(f) ((f)[0] && ((f)[1] == ':')) +#define STRIP_DRIVE_SPEC(f) ((f) + 2) +#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\') +/* both '/' and '\\' work as dir separator. djgpp likes changing + * '\\' into '/', so I define DIR_SEPARATOR_CHAR as '/' for djgpp, + * '\\' otherwise. */ +#ifdef __DJGPP__ +#define DIR_SEPARATOR_CHAR '/' +#define DIR_SEPARATOR_STR "/" +#else +#define DIR_SEPARATOR_CHAR '\\' +#define DIR_SEPARATOR_STR "\\" +#endif +/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is + only semi-absolute. This is because the users of IS_ABSOLUTE_PATH + want to know whether to prepend the current working directory to + a file name, which should not be done with a name like d:foo. */ +#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || HAS_DRIVE_SPEC((f))) + +#ifdef __cplusplus +static inline char *FIND_FIRST_DIRSEP(char *_the_path) { +/* FIXME: What about C:FOO ? */ + char *p1 = strchr(_the_path, '/'); + char *p2 = strchr(_the_path, '\\'); + if (p1 == NULL) return p2; + if (p2 == NULL) return p1; + return (p1 < p2)? p1 : p2; +} +static inline char *FIND_LAST_DIRSEP (char *_the_path) { +/* FIXME: What about C:FOO ? */ + char *p1 = strrchr(_the_path, '/'); + char *p2 = strrchr(_the_path, '\\'); + if (p1 == NULL) return p2; + if (p2 == NULL) return p1; + return (p1 > p2)? p1 : p2; +} +static inline const char *FIND_FIRST_DIRSEP(const char *_the_path) { +/* FIXME: What about C:FOO ? */ + const char *p1 = strchr(_the_path, '/'); + const char *p2 = strchr(_the_path, '\\'); + if (p1 == NULL) return p2; + if (p2 == NULL) return p1; + return (p1 < p2)? p1 : p2; +} +static inline const char *FIND_LAST_DIRSEP (const char *_the_path) { +/* FIXME: What about C:FOO ? */ + const char *p1 = strrchr(_the_path, '/'); + const char *p2 = strrchr(_the_path, '\\'); + if (p1 == NULL) return p2; + if (p2 == NULL) return p1; + return (p1 > p2)? p1 : p2; +} +#else +static inline char *FIND_FIRST_DIRSEP(const char *_the_path) { +/* FIXME: What about C:FOO ? */ + char *p1 = (char *) strchr(_the_path, '/'); + char *p2 = (char *) strchr(_the_path, '\\'); + if (p1 == NULL) return p2; + if (p2 == NULL) return p1; + return (p1 < p2)? p1 : p2; +} +static inline char *FIND_LAST_DIRSEP (const char *_the_path) { +/* FIXME: What about C:FOO ? */ + char *p1 = (char *) strrchr(_the_path, '/'); + char *p2 = (char *) strrchr(_the_path, '\\'); + if (p1 == NULL) return p2; + if (p2 == NULL) return p1; + return (p1 > p2)? p1 : p2; +} +#endif /* C++ */ + +/* ----------------- AmigaOS, MorphOS, AROS, etc: ----------------- */ +#elif defined(__MORPHOS__) || defined(__AROS__) || defined(AMIGAOS) || \ + defined(__amigaos__) || defined(__amigaos4__) ||defined(__amigados__) || \ + defined(AMIGA) || defined(_AMIGA) || defined(__AMIGA__) + +#define HAS_DRIVE_SPEC(f) (0) /* */ +#define STRIP_DRIVE_SPEC(f) (f) /* */ +#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == ':') +#define DIR_SEPARATOR_CHAR '/' +#define DIR_SEPARATOR_STR "/" +#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (strchr((f), ':'))) +#define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1 + +#ifdef __cplusplus +static inline char *FIND_FIRST_DIRSEP(char *_the_path) { + char *p = strchr(_the_path, ':'); + if (p != NULL) return p; + return strchr(_the_path, '/'); +} +static inline char *FIND_LAST_DIRSEP (char *_the_path) { + char *p = strrchr(_the_path, '/'); + if (p != NULL) return p; + return strchr(_the_path, ':'); +} +static inline const char *FIND_FIRST_DIRSEP(const char *_the_path) { + const char *p = strchr(_the_path, ':'); + if (p != NULL) return p; + return strchr(_the_path, '/'); +} +static inline const char *FIND_LAST_DIRSEP (const char *_the_path) { + const char *p = strrchr(_the_path, '/'); + if (p != NULL) return p; + return strchr(_the_path, ':'); +} +#else +static inline char *FIND_FIRST_DIRSEP(const char *_the_path) { + char *p = (char *) strchr(_the_path, ':'); + if (p != NULL) return p; + return (char *) strchr(_the_path, '/'); +} +static inline char *FIND_LAST_DIRSEP (const char *_the_path) { + char *p = (char *) strrchr(_the_path, '/'); + if (p != NULL) return p; + return (char *) strchr(_the_path, ':'); +} +#endif /* C++ */ + +/* ---------------------- assumed UNIX-ish : ---------------------- */ +#else /* */ + +#define IS_DIR_SEPARATOR(c) ((c) == '/') +#define DIR_SEPARATOR_CHAR '/' +#define DIR_SEPARATOR_STR "/" +#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0])) +#define HAS_DRIVE_SPEC(f) (0) +#define STRIP_DRIVE_SPEC(f) (f) + +#ifdef __cplusplus +static inline char *FIND_FIRST_DIRSEP(char *_the_path) { + return strchr(_the_path, '/'); +} +static inline char *FIND_LAST_DIRSEP (char *_the_path) { + return strrchr(_the_path, '/'); +} +static inline const char *FIND_FIRST_DIRSEP(const char *_the_path) { + return strchr(_the_path, '/'); +} +static inline const char *FIND_LAST_DIRSEP (const char *_the_path) { + return strrchr(_the_path, '/'); +} +#else +static inline char *FIND_FIRST_DIRSEP(const char *_the_path) { + return (char *) strchr(_the_path, '/'); +} +static inline char *FIND_LAST_DIRSEP (const char *_the_path) { + return (char *) strrchr(_the_path, '/'); +} +#endif /* C++ */ + +#endif + +#endif /* FILENAMES_H */ diff --git a/Quake/gl_draw.c b/Quake/gl_draw.c new file mode 100644 index 0000000..d60db57 --- /dev/null +++ b/Quake/gl_draw.c @@ -0,0 +1,772 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// draw.c -- 2d drawing + +#include "quakedef.h" + +//extern unsigned char d_15to8table[65536]; //johnfitz -- never used + +cvar_t scr_conalpha = {"scr_conalpha", "0.5", CVAR_ARCHIVE}; //johnfitz + +qpic_t *draw_disc; +qpic_t *draw_backtile; + +gltexture_t *char_texture; //johnfitz +qpic_t *pic_ovr, *pic_ins; //johnfitz -- new cursor handling +qpic_t *pic_nul; //johnfitz -- for missing gfx, don't crash + +//johnfitz -- new pics +byte pic_ovr_data[8][8] = +{ + {255,255,255,255,255,255,255,255}, + {255, 15, 15, 15, 15, 15, 15,255}, + {255, 15, 15, 15, 15, 15, 15, 2}, + {255, 15, 15, 15, 15, 15, 15, 2}, + {255, 15, 15, 15, 15, 15, 15, 2}, + {255, 15, 15, 15, 15, 15, 15, 2}, + {255, 15, 15, 15, 15, 15, 15, 2}, + {255,255, 2, 2, 2, 2, 2, 2}, +}; + +byte pic_ins_data[9][8] = +{ + { 15, 15,255,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + { 15, 15, 2,255,255,255,255,255}, + {255, 2, 2,255,255,255,255,255}, +}; + +byte pic_nul_data[8][8] = +{ + {252,252,252,252, 0, 0, 0, 0}, + {252,252,252,252, 0, 0, 0, 0}, + {252,252,252,252, 0, 0, 0, 0}, + {252,252,252,252, 0, 0, 0, 0}, + { 0, 0, 0, 0,252,252,252,252}, + { 0, 0, 0, 0,252,252,252,252}, + { 0, 0, 0, 0,252,252,252,252}, + { 0, 0, 0, 0,252,252,252,252}, +}; + +byte pic_stipple_data[8][8] = +{ + {255, 0, 0, 0,255, 0, 0, 0}, + { 0, 0,255, 0, 0, 0,255, 0}, + {255, 0, 0, 0,255, 0, 0, 0}, + { 0, 0,255, 0, 0, 0,255, 0}, + {255, 0, 0, 0,255, 0, 0, 0}, + { 0, 0,255, 0, 0, 0,255, 0}, + {255, 0, 0, 0,255, 0, 0, 0}, + { 0, 0,255, 0, 0, 0,255, 0}, +}; + +byte pic_crosshair_data[8][8] = +{ + {255,255,255,255,255,255,255,255}, + {255,255,255, 8, 9,255,255,255}, + {255,255,255, 6, 8, 2,255,255}, + {255, 6, 8, 8, 6, 8, 8,255}, + {255,255, 2, 8, 8, 2, 2, 2}, + {255,255,255, 7, 8, 2,255,255}, + {255,255,255,255, 2, 2,255,255}, + {255,255,255,255,255,255,255,255}, +}; +//johnfitz + +typedef struct +{ + gltexture_t *gltexture; + float sl, tl, sh, th; +} glpic_t; + +canvastype currentcanvas = CANVAS_NONE; //johnfitz -- for GL_SetCanvas + +//============================================================================== +// +// PIC CACHING +// +//============================================================================== + +typedef struct cachepic_s +{ + char name[MAX_QPATH]; + qpic_t pic; + byte padding[32]; // for appended glpic +} cachepic_t; + +#define MAX_CACHED_PICS 128 +cachepic_t menu_cachepics[MAX_CACHED_PICS]; +int menu_numcachepics; + +byte menuplyr_pixels[4096]; + +// scrap allocation +// Allocate all the little status bar obejcts into a single texture +// to crutch up stupid hardware / drivers + +#define MAX_SCRAPS 2 +#define BLOCK_WIDTH 256 +#define BLOCK_HEIGHT 256 + +int scrap_allocated[MAX_SCRAPS][BLOCK_WIDTH]; +byte scrap_texels[MAX_SCRAPS][BLOCK_WIDTH*BLOCK_HEIGHT]; //johnfitz -- removed *4 after BLOCK_HEIGHT +qboolean scrap_dirty; +gltexture_t *scrap_textures[MAX_SCRAPS]; //johnfitz + + +/* +================ +Scrap_AllocBlock + +returns an index into scrap_texnums[] and the position inside it +================ +*/ +int Scrap_AllocBlock (int w, int h, int *x, int *y) +{ + int i, j; + int best, best2; + int texnum; + + for (texnum=0 ; texnum<MAX_SCRAPS ; texnum++) + { + best = BLOCK_HEIGHT; + + for (i=0 ; i<BLOCK_WIDTH-w ; i++) + { + best2 = 0; + + for (j=0 ; j<w ; j++) + { + if (scrap_allocated[texnum][i+j] >= best) + break; + if (scrap_allocated[texnum][i+j] > best2) + best2 = scrap_allocated[texnum][i+j]; + } + if (j == w) + { // this is a valid spot + *x = i; + *y = best = best2; + } + } + + if (best + h > BLOCK_HEIGHT) + continue; + + for (i=0 ; i<w ; i++) + scrap_allocated[texnum][*x + i] = best + h; + + return texnum; + } + + Sys_Error ("Scrap_AllocBlock: full"); //johnfitz -- correct function name + return 0; //johnfitz -- shut up compiler +} + +/* +================ +Scrap_Upload -- johnfitz -- now uses TexMgr +================ +*/ +void Scrap_Upload (void) +{ + char name[8]; + int i; + + for (i=0; i<MAX_SCRAPS; i++) + { + sprintf (name, "scrap%i", i); + scrap_textures[i] = TexMgr_LoadImage (NULL, name, BLOCK_WIDTH, BLOCK_HEIGHT, SRC_INDEXED, scrap_texels[i], + "", (src_offset_t)scrap_texels[i], TEXPREF_ALPHA | TEXPREF_OVERWRITE | TEXPREF_NOPICMIP); + } + + scrap_dirty = false; +} + +/* +================ +Draw_PicFromWad +================ +*/ +qpic_t *Draw_PicFromWad (const char *name) +{ + qpic_t *p; + glpic_t gl; + src_offset_t offset; //johnfitz + + p = (qpic_t *) W_GetLumpName (name); + if (!p) return pic_nul; //johnfitz + + // load little ones into the scrap + if (p->width < 64 && p->height < 64) + { + int x, y; + int i, j, k; + int texnum; + + texnum = Scrap_AllocBlock (p->width, p->height, &x, &y); + scrap_dirty = true; + k = 0; + for (i=0 ; i<p->height ; i++) + { + for (j=0 ; j<p->width ; j++, k++) + scrap_texels[texnum][(y+i)*BLOCK_WIDTH + x + j] = p->data[k]; + } + gl.gltexture = scrap_textures[texnum]; //johnfitz -- changed to an array + //johnfitz -- no longer go from 0.01 to 0.99 + gl.sl = x/(float)BLOCK_WIDTH; + gl.sh = (x+p->width)/(float)BLOCK_WIDTH; + gl.tl = y/(float)BLOCK_WIDTH; + gl.th = (y+p->height)/(float)BLOCK_WIDTH; + } + else + { + char texturename[64]; //johnfitz + q_snprintf (texturename, sizeof(texturename), "%s:%s", WADFILENAME, name); //johnfitz + + offset = (src_offset_t)p - (src_offset_t)wad_base + sizeof(int)*2; //johnfitz + + gl.gltexture = TexMgr_LoadImage (NULL, texturename, p->width, p->height, SRC_INDEXED, p->data, WADFILENAME, + offset, TEXPREF_ALPHA | TEXPREF_PAD | TEXPREF_NOPICMIP); //johnfitz -- TexMgr + gl.sl = 0; + gl.sh = (float)p->width/(float)TexMgr_PadConditional(p->width); //johnfitz + gl.tl = 0; + gl.th = (float)p->height/(float)TexMgr_PadConditional(p->height); //johnfitz + } + + memcpy (p->data, &gl, sizeof(glpic_t)); + + return p; +} + +/* +================ +Draw_CachePic +================ +*/ +qpic_t *Draw_CachePic (const char *path) +{ + cachepic_t *pic; + int i; + qpic_t *dat; + glpic_t gl; + + for (pic=menu_cachepics, i=0 ; i<menu_numcachepics ; pic++, i++) + { + if (!strcmp (path, pic->name)) + return &pic->pic; + } + if (menu_numcachepics == MAX_CACHED_PICS) + Sys_Error ("menu_numcachepics == MAX_CACHED_PICS"); + menu_numcachepics++; + strcpy (pic->name, path); + +// +// load the pic from disk +// + dat = (qpic_t *)COM_LoadTempFile (path, NULL); + if (!dat) + Sys_Error ("Draw_CachePic: failed to load %s", path); + SwapPic (dat); + + // HACK HACK HACK --- we need to keep the bytes for + // the translatable player picture just for the menu + // configuration dialog + if (!strcmp (path, "gfx/menuplyr.lmp")) + memcpy (menuplyr_pixels, dat->data, dat->width*dat->height); + + pic->pic.width = dat->width; + pic->pic.height = dat->height; + + gl.gltexture = TexMgr_LoadImage (NULL, path, dat->width, dat->height, SRC_INDEXED, dat->data, path, + sizeof(int)*2, TEXPREF_ALPHA | TEXPREF_PAD | TEXPREF_NOPICMIP); //johnfitz -- TexMgr + gl.sl = 0; + gl.sh = (float)dat->width/(float)TexMgr_PadConditional(dat->width); //johnfitz + gl.tl = 0; + gl.th = (float)dat->height/(float)TexMgr_PadConditional(dat->height); //johnfitz + memcpy (pic->pic.data, &gl, sizeof(glpic_t)); + + return &pic->pic; +} + +/* +================ +Draw_MakePic -- johnfitz -- generate pics from internal data +================ +*/ +qpic_t *Draw_MakePic (const char *name, int width, int height, byte *data) +{ + int flags = TEXPREF_NEAREST | TEXPREF_ALPHA | TEXPREF_PERSIST | TEXPREF_NOPICMIP | TEXPREF_PAD; + qpic_t *pic; + glpic_t gl; + + pic = (qpic_t *) Hunk_Alloc (sizeof(qpic_t) - 4 + sizeof (glpic_t)); + pic->width = width; + pic->height = height; + + gl.gltexture = TexMgr_LoadImage (NULL, name, width, height, SRC_INDEXED, data, "", (src_offset_t)data, flags); + gl.sl = 0; + gl.sh = (float)width/(float)TexMgr_PadConditional(width); + gl.tl = 0; + gl.th = (float)height/(float)TexMgr_PadConditional(height); + memcpy (pic->data, &gl, sizeof(glpic_t)); + + return pic; +} + +//============================================================================== +// +// INIT +// +//============================================================================== + +/* +=============== +Draw_LoadPics -- johnfitz +=============== +*/ +void Draw_LoadPics (void) +{ + byte *data; + src_offset_t offset; + + data = (byte *) W_GetLumpName ("conchars"); + if (!data) Sys_Error ("Draw_LoadPics: couldn't load conchars"); + offset = (src_offset_t)data - (src_offset_t)wad_base; + char_texture = TexMgr_LoadImage (NULL, WADFILENAME":conchars", 128, 128, SRC_INDEXED, data, + WADFILENAME, offset, TEXPREF_ALPHA | TEXPREF_NEAREST | TEXPREF_NOPICMIP | TEXPREF_CONCHARS); + + draw_disc = Draw_PicFromWad ("disc"); + draw_backtile = Draw_PicFromWad ("backtile"); +} + +/* +=============== +Draw_NewGame -- johnfitz +=============== +*/ +void Draw_NewGame (void) +{ + cachepic_t *pic; + int i; + + // empty scrap and reallocate gltextures + memset(scrap_allocated, 0, sizeof(scrap_allocated)); + memset(scrap_texels, 255, sizeof(scrap_texels)); + + Scrap_Upload (); //creates 2 empty gltextures + + // reload wad pics + W_LoadWadFile (); //johnfitz -- filename is now hard-coded for honesty + Draw_LoadPics (); + SCR_LoadPics (); + Sbar_LoadPics (); + + // empty lmp cache + for (pic = menu_cachepics, i = 0; i < menu_numcachepics; pic++, i++) + pic->name[0] = 0; + menu_numcachepics = 0; +} + +/* +=============== +Draw_Init -- johnfitz -- rewritten +=============== +*/ +void Draw_Init (void) +{ + Cvar_RegisterVariable (&scr_conalpha); + + // clear scrap and allocate gltextures + memset(scrap_allocated, 0, sizeof(scrap_allocated)); + memset(scrap_texels, 255, sizeof(scrap_texels)); + + Scrap_Upload (); //creates 2 empty textures + + // create internal pics + pic_ins = Draw_MakePic ("ins", 8, 9, &pic_ins_data[0][0]); + pic_ovr = Draw_MakePic ("ovr", 8, 8, &pic_ovr_data[0][0]); + pic_nul = Draw_MakePic ("nul", 8, 8, &pic_nul_data[0][0]); + + // load game pics + Draw_LoadPics (); +} + +//============================================================================== +// +// 2D DRAWING +// +//============================================================================== + +/* +================ +Draw_CharacterQuad -- johnfitz -- seperate function to spit out verts +================ +*/ +void Draw_CharacterQuad (int x, int y, char num) +{ + int row, col; + float frow, fcol, size; + + row = num>>4; + col = num&15; + + frow = row*0.0625; + fcol = col*0.0625; + size = 0.0625; + + glTexCoord2f (fcol, frow); + glVertex2f (x, y); + glTexCoord2f (fcol + size, frow); + glVertex2f (x+8, y); + glTexCoord2f (fcol + size, frow + size); + glVertex2f (x+8, y+8); + glTexCoord2f (fcol, frow + size); + glVertex2f (x, y+8); +} + +/* +================ +Draw_Character -- johnfitz -- modified to call Draw_CharacterQuad +================ +*/ +void Draw_Character (int x, int y, int num) +{ + if (y <= -8) + return; // totally off screen + + num &= 255; + + if (num == 32) + return; //don't waste verts on spaces + + GL_Bind (char_texture); + glBegin (GL_QUADS); + + Draw_CharacterQuad (x, y, (char) num); + + glEnd (); +} + +/* +================ +Draw_String -- johnfitz -- modified to call Draw_CharacterQuad +================ +*/ +void Draw_String (int x, int y, const char *str) +{ + if (y <= -8) + return; // totally off screen + + GL_Bind (char_texture); + glBegin (GL_QUADS); + + while (*str) + { + if (*str != 32) //don't waste verts on spaces + Draw_CharacterQuad (x, y, *str); + str++; + x += 8; + } + + glEnd (); +} + +/* +============= +Draw_Pic -- johnfitz -- modified +============= +*/ +void Draw_Pic (int x, int y, qpic_t *pic) +{ + glpic_t *gl; + + if (scrap_dirty) + Scrap_Upload (); + gl = (glpic_t *)pic->data; + GL_Bind (gl->gltexture); + glBegin (GL_QUADS); + glTexCoord2f (gl->sl, gl->tl); + glVertex2f (x, y); + glTexCoord2f (gl->sh, gl->tl); + glVertex2f (x+pic->width, y); + glTexCoord2f (gl->sh, gl->th); + glVertex2f (x+pic->width, y+pic->height); + glTexCoord2f (gl->sl, gl->th); + glVertex2f (x, y+pic->height); + glEnd (); +} + +/* +============= +Draw_TransPicTranslate -- johnfitz -- rewritten to use texmgr to do translation + +Only used for the player color selection menu +============= +*/ +void Draw_TransPicTranslate (int x, int y, qpic_t *pic, int top, int bottom) +{ + static int oldtop = -2; + static int oldbottom = -2; + + if (top != oldtop || bottom != oldbottom) + { + glpic_t *p = (glpic_t *)pic->data; + gltexture_t *glt = p->gltexture; + oldtop = top; + oldbottom = bottom; + TexMgr_ReloadImage (glt, top, bottom); + } + Draw_Pic (x, y, pic); +} + +/* +================ +Draw_ConsoleBackground -- johnfitz -- rewritten +================ +*/ +void Draw_ConsoleBackground (void) +{ + qpic_t *pic; + float alpha; + + pic = Draw_CachePic ("gfx/conback.lmp"); + pic->width = vid.conwidth; + pic->height = vid.conheight; + + alpha = (con_forcedup) ? 1.0f : scr_conalpha.value; + + GL_SetCanvas (CANVAS_CONSOLE); //in case this is called from weird places + + if (alpha > 0.0f) + { + if (alpha < 1.0f) + { + glEnable (GL_BLEND); + glColor4f (1,1,1,alpha); + glDisable (GL_ALPHA_TEST); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + } + + Draw_Pic (0, 0, pic); + + if (alpha < 1.0f) + { + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glEnable (GL_ALPHA_TEST); + glDisable (GL_BLEND); + glColor4f (1,1,1,1); + } + } +} + + +/* +============= +Draw_TileClear + +This repeats a 64*64 tile graphic to fill the screen around a sized down +refresh window. +============= +*/ +void Draw_TileClear (int x, int y, int w, int h) +{ + glpic_t *gl; + + gl = (glpic_t *)draw_backtile->data; + + glColor3f (1,1,1); + GL_Bind (gl->gltexture); + glBegin (GL_QUADS); + glTexCoord2f (x/64.0, y/64.0); + glVertex2f (x, y); + glTexCoord2f ( (x+w)/64.0, y/64.0); + glVertex2f (x+w, y); + glTexCoord2f ( (x+w)/64.0, (y+h)/64.0); + glVertex2f (x+w, y+h); + glTexCoord2f ( x/64.0, (y+h)/64.0 ); + glVertex2f (x, y+h); + glEnd (); +} + +/* +============= +Draw_Fill + +Fills a box of pixels with a single color +============= +*/ +void Draw_Fill (int x, int y, int w, int h, int c, float alpha) //johnfitz -- added alpha +{ + byte *pal = (byte *)d_8to24table; //johnfitz -- use d_8to24table instead of host_basepal + + glDisable (GL_TEXTURE_2D); + glEnable (GL_BLEND); //johnfitz -- for alpha + glDisable (GL_ALPHA_TEST); //johnfitz -- for alpha + glColor4f (pal[c*4]/255.0, pal[c*4+1]/255.0, pal[c*4+2]/255.0, alpha); //johnfitz -- added alpha + + glBegin (GL_QUADS); + glVertex2f (x,y); + glVertex2f (x+w, y); + glVertex2f (x+w, y+h); + glVertex2f (x, y+h); + glEnd (); + + glColor3f (1,1,1); + glDisable (GL_BLEND); //johnfitz -- for alpha + glEnable (GL_ALPHA_TEST); //johnfitz -- for alpha + glEnable (GL_TEXTURE_2D); +} + +/* +================ +Draw_FadeScreen -- johnfitz -- revised +================ +*/ +void Draw_FadeScreen (void) +{ + GL_SetCanvas (CANVAS_DEFAULT); + + glEnable (GL_BLEND); + glDisable (GL_ALPHA_TEST); + glDisable (GL_TEXTURE_2D); + glColor4f (0, 0, 0, 0.5); + glBegin (GL_QUADS); + + glVertex2f (0,0); + glVertex2f (glwidth, 0); + glVertex2f (glwidth, glheight); + glVertex2f (0, glheight); + + glEnd (); + glColor4f (1,1,1,1); + glEnable (GL_TEXTURE_2D); + glEnable (GL_ALPHA_TEST); + glDisable (GL_BLEND); + + Sbar_Changed(); +} + +/* +================ +GL_SetCanvas -- johnfitz -- support various canvas types +================ +*/ +void GL_SetCanvas (canvastype newcanvas) +{ + extern vrect_t scr_vrect; + float s; + int lines; + + if (newcanvas == currentcanvas) + return; + + currentcanvas = newcanvas; + + glMatrixMode(GL_PROJECTION); + glLoadIdentity (); + + switch(newcanvas) + { + case CANVAS_DEFAULT: + glOrtho (0, glwidth, glheight, 0, -99999, 99999); + glViewport (glx, gly, glwidth, glheight); + break; + case CANVAS_CONSOLE: + lines = vid.conheight - (scr_con_current * vid.conheight / glheight); + glOrtho (0, vid.conwidth, vid.conheight + lines, lines, -99999, 99999); + glViewport (glx, gly, glwidth, glheight); + break; + case CANVAS_MENU: + s = q_min((float)glwidth / 320.0f, (float)glheight / 200.0f); + s = CLAMP (1.0f, scr_menuscale.value, s); + // ericw -- doubled width to 640 to accommodate long keybindings + glOrtho (0, 640, 200, 0, -99999, 99999); + glViewport (glx + (glwidth - 320*s) / 2, gly + (glheight - 200*s) / 2, 640*s, 200*s); + break; + case CANVAS_SBAR: + s = CLAMP (1.0f, scr_sbarscale.value, (float)glwidth / 320.0f); + if (cl.gametype == GAME_DEATHMATCH) + { + glOrtho (0, glwidth / s, 48, 0, -99999, 99999); + glViewport (glx, gly, glwidth, 48*s); + } + else + { + glOrtho (0, 320, 48, 0, -99999, 99999); + glViewport (glx + (glwidth - 320*s) / 2, gly, 320*s, 48*s); + } + break; + case CANVAS_WARPIMAGE: + glOrtho (0, 128, 0, 128, -99999, 99999); + glViewport (glx, gly+glheight-gl_warpimagesize, gl_warpimagesize, gl_warpimagesize); + break; + case CANVAS_CROSSHAIR: //0,0 is center of viewport + s = CLAMP (1.0f, scr_crosshairscale.value, 10.0f); + glOrtho (scr_vrect.width/-2/s, scr_vrect.width/2/s, scr_vrect.height/2/s, scr_vrect.height/-2/s, -99999, 99999); + glViewport (scr_vrect.x, glheight - scr_vrect.y - scr_vrect.height, scr_vrect.width & ~1, scr_vrect.height & ~1); + break; + case CANVAS_BOTTOMLEFT: //used by devstats + s = (float)glwidth/vid.conwidth; //use console scale + glOrtho (0, 320, 200, 0, -99999, 99999); + glViewport (glx, gly, 320*s, 200*s); + break; + case CANVAS_BOTTOMRIGHT: //used by fps/clock + s = (float)glwidth/vid.conwidth; //use console scale + glOrtho (0, 320, 200, 0, -99999, 99999); + glViewport (glx+glwidth-320*s, gly, 320*s, 200*s); + break; + case CANVAS_TOPRIGHT: //used by disc + s = 1; + glOrtho (0, 320, 200, 0, -99999, 99999); + glViewport (glx+glwidth-320*s, gly+glheight-200*s, 320*s, 200*s); + break; + default: + Sys_Error ("GL_SetCanvas: bad canvas type"); + } + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity (); +} + +/* +================ +GL_Set2D -- johnfitz -- rewritten +================ +*/ +void GL_Set2D (void) +{ + currentcanvas = CANVAS_INVALID; + GL_SetCanvas (CANVAS_DEFAULT); + + glDisable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + glDisable (GL_BLEND); + glEnable (GL_ALPHA_TEST); + glColor4f (1,1,1,1); +} diff --git a/Quake/gl_fog.c b/Quake/gl_fog.c new file mode 100644 index 0000000..fb50541 --- /dev/null +++ b/Quake/gl_fog.c @@ -0,0 +1,427 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +//gl_fog.c -- global and volumetric fog + +#include "quakedef.h" + +//============================================================================== +// +// GLOBAL FOG +// +//============================================================================== + +#define DEFAULT_DENSITY 0.0 +#define DEFAULT_GRAY 0.3 + +static float fog_density; +static float fog_red; +static float fog_green; +static float fog_blue; + +static float old_density; +static float old_red; +static float old_green; +static float old_blue; + +static float fade_time; //duration of fade +static float fade_done; //time when fade will be done + +/* +============= +Fog_Update + +update internal variables +============= +*/ +void Fog_Update (float density, float red, float green, float blue, float time) +{ + //save previous settings for fade + if (time > 0) + { + //check for a fade in progress + if (fade_done > cl.time) + { + float f; + + f = (fade_done - cl.time) / fade_time; + old_density = f * old_density + (1.0 - f) * fog_density; + old_red = f * old_red + (1.0 - f) * fog_red; + old_green = f * old_green + (1.0 - f) * fog_green; + old_blue = f * old_blue + (1.0 - f) * fog_blue; + } + else + { + old_density = fog_density; + old_red = fog_red; + old_green = fog_green; + old_blue = fog_blue; + } + } + + fog_density = density; + fog_red = red; + fog_green = green; + fog_blue = blue; + fade_time = time; + fade_done = cl.time + time; +} + +/* +============= +Fog_ParseServerMessage + +handle an SVC_FOG message from server +============= +*/ +void Fog_ParseServerMessage (void) +{ + float density, red, green, blue, time; + + density = MSG_ReadByte() / 255.0; + red = MSG_ReadByte() / 255.0; + green = MSG_ReadByte() / 255.0; + blue = MSG_ReadByte() / 255.0; + time = MSG_ReadShort() / 100.0; + if (time < 0.0f) time = 0.0f; + + Fog_Update (density, red, green, blue, time); +} + +/* +============= +Fog_FogCommand_f + +handle the 'fog' console command +============= +*/ +void Fog_FogCommand_f (void) +{ + float d, r, g, b, t; + + switch (Cmd_Argc()) + { + default: + case 1: + Con_Printf("usage:\n"); + Con_Printf(" fog <density>\n"); + Con_Printf(" fog <red> <green> <blue>\n"); + Con_Printf(" fog <density> <red> <green> <blue>\n"); + Con_Printf("current values:\n"); + Con_Printf(" \"density\" is \"%f\"\n", fog_density); + Con_Printf(" \"red\" is \"%f\"\n", fog_red); + Con_Printf(" \"green\" is \"%f\"\n", fog_green); + Con_Printf(" \"blue\" is \"%f\"\n", fog_blue); + return; + case 2: + d = Q_atof(Cmd_Argv(1)); + t = 0.0f; + r = fog_red; + g = fog_green; + b = fog_blue; + break; + case 3: //TEST + d = Q_atof(Cmd_Argv(1)); + t = Q_atof(Cmd_Argv(2)); + r = fog_red; + g = fog_green; + b = fog_blue; + break; + case 4: + d = fog_density; + t = 0.0f; + r = Q_atof(Cmd_Argv(1)); + g = Q_atof(Cmd_Argv(2)); + b = Q_atof(Cmd_Argv(3)); + break; + case 5: + d = Q_atof(Cmd_Argv(1)); + r = Q_atof(Cmd_Argv(2)); + g = Q_atof(Cmd_Argv(3)); + b = Q_atof(Cmd_Argv(4)); + t = 0.0f; + break; + case 6: //TEST + d = Q_atof(Cmd_Argv(1)); + r = Q_atof(Cmd_Argv(2)); + g = Q_atof(Cmd_Argv(3)); + b = Q_atof(Cmd_Argv(4)); + t = Q_atof(Cmd_Argv(5)); + break; + } + + if (d < 0.0f) d = 0.0f; + if (r < 0.0f) r = 0.0f; + else if (r > 1.0f) r = 1.0f; + if (g < 0.0f) g = 0.0f; + else if (g > 1.0f) g = 1.0f; + if (b < 0.0f) b = 0.0f; + else if (b > 1.0f) b = 1.0f; + Fog_Update(d, r, g, b, t); +} + +/* +============= +Fog_ParseWorldspawn + +called at map load +============= +*/ +void Fog_ParseWorldspawn (void) +{ + char key[128], value[4096]; + const char *data; + + //initially no fog + fog_density = DEFAULT_DENSITY; + fog_red = DEFAULT_GRAY; + fog_green = DEFAULT_GRAY; + fog_blue = DEFAULT_GRAY; + + old_density = DEFAULT_DENSITY; + old_red = DEFAULT_GRAY; + old_green = DEFAULT_GRAY; + old_blue = DEFAULT_GRAY; + + fade_time = 0.0; + fade_done = 0.0; + + data = COM_Parse(cl.worldmodel->entities); + if (!data) + return; // error + if (com_token[0] != '{') + return; // error + while (1) + { + data = COM_Parse(data); + if (!data) + return; // error + if (com_token[0] == '}') + break; // end of worldspawn + if (com_token[0] == '_') + q_strlcpy(key, com_token + 1, sizeof(key)); + else + q_strlcpy(key, com_token, sizeof(key)); + while (key[0] && key[strlen(key)-1] == ' ') // remove trailing spaces + key[strlen(key)-1] = 0; + data = COM_ParseEx(data, CPE_ALLOWTRUNC); + if (!data) + return; // error + q_strlcpy(value, com_token, sizeof(value)); + + if (!strcmp("fog", key)) + { + sscanf(value, "%f %f %f %f", &fog_density, &fog_red, &fog_green, &fog_blue); + } + } +} + +/* +============= +Fog_GetColor + +calculates fog color for this frame, taking into account fade times +============= +*/ +float *Fog_GetColor (void) +{ + static float c[4]; + float f; + int i; + + if (fade_done > cl.time) + { + f = (fade_done - cl.time) / fade_time; + c[0] = f * old_red + (1.0 - f) * fog_red; + c[1] = f * old_green + (1.0 - f) * fog_green; + c[2] = f * old_blue + (1.0 - f) * fog_blue; + c[3] = 1.0; + } + else + { + c[0] = fog_red; + c[1] = fog_green; + c[2] = fog_blue; + c[3] = 1.0; + } + + for (i = 0; i < 3; i++) { + c[i] = CLAMP (0.f, c[i], 1.f); + } + + //find closest 24-bit RGB value, so solid-colored sky can match the fog perfectly + for (i = 0; i < 3; i++) { + c[i] = (float)(Q_rint(c[i] * 255)) / 255.0f; + } + + return c; +} + +/* +============= +Fog_GetDensity + +returns current density of fog +============= +*/ +float Fog_GetDensity (void) +{ + float f; + + if (fade_done > cl.time) + { + f = (fade_done - cl.time) / fade_time; + return f * old_density + (1.0 - f) * fog_density; + } + else + return fog_density; +} + +/* +============= +Fog_SetupFrame + +called at the beginning of each frame +============= +*/ +void Fog_SetupFrame (void) +{ + glFogfv(GL_FOG_COLOR, Fog_GetColor()); + glFogf(GL_FOG_DENSITY, Fog_GetDensity() / 64.0); +} + +/* +============= +Fog_EnableGFog + +called before drawing stuff that should be fogged +============= +*/ +void Fog_EnableGFog (void) +{ + if (Fog_GetDensity() > 0) + glEnable(GL_FOG); +} + +/* +============= +Fog_DisableGFog + +called after drawing stuff that should be fogged +============= +*/ +void Fog_DisableGFog (void) +{ + if (Fog_GetDensity() > 0) + glDisable(GL_FOG); +} + +/* +============= +Fog_StartAdditive + +called before drawing stuff that is additive blended -- sets fog color to black +============= +*/ +void Fog_StartAdditive (void) +{ + vec3_t color = {0,0,0}; + + if (Fog_GetDensity() > 0) + glFogfv(GL_FOG_COLOR, color); +} + +/* +============= +Fog_StopAdditive + +called after drawing stuff that is additive blended -- restores fog color +============= +*/ +void Fog_StopAdditive (void) +{ + if (Fog_GetDensity() > 0) + glFogfv(GL_FOG_COLOR, Fog_GetColor()); +} + +//============================================================================== +// +// VOLUMETRIC FOG +// +//============================================================================== + +cvar_t r_vfog = {"r_vfog", "1", CVAR_NONE}; + +void Fog_DrawVFog (void){} +void Fog_MarkModels (void){} + +//============================================================================== +// +// INIT +// +//============================================================================== + +/* +============= +Fog_NewMap + +called whenever a map is loaded +============= +*/ +void Fog_NewMap (void) +{ + Fog_ParseWorldspawn (); //for global fog + Fog_MarkModels (); //for volumetric fog +} + +/* +============= +Fog_Init + +called when quake initializes +============= +*/ +void Fog_Init (void) +{ + Cmd_AddCommand ("fog",Fog_FogCommand_f); + + //Cvar_RegisterVariable (&r_vfog); + + //set up global fog + fog_density = DEFAULT_DENSITY; + fog_red = DEFAULT_GRAY; + fog_green = DEFAULT_GRAY; + fog_blue = DEFAULT_GRAY; + + Fog_SetupState (); +} + +/* +============= +Fog_SetupState + +ericw -- moved from Fog_Init, state that needs to be setup when a new context is created +============= +*/ +void Fog_SetupState (void) +{ + glFogi(GL_FOG_MODE, GL_EXP2); +} diff --git a/Quake/gl_mesh.c b/Quake/gl_mesh.c new file mode 100644 index 0000000..03b79ef --- /dev/null +++ b/Quake/gl_mesh.c @@ -0,0 +1,603 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// gl_mesh.c: triangle model functions + +#include "quakedef.h" + + +/* +================================================================= + +ALIAS MODEL DISPLAY LIST GENERATION + +================================================================= +*/ + +static unsigned char used[MAXALIASTRIS]; + +// the command list holds counts and s/t values that are valid for +// every frame +static int commands[MAXALIASTRIS*7 + 1]; +static int numcommands; + +// all frames will have their vertexes rearranged and expanded +// so they are in the order expected by the command list +static int vertexorder[MAXALIASTRIS * 3]; +static int numorder; + +static int stripverts[MAXALIASTRIS + 2]; +static int striptris[MAXALIASTRIS]; +static int stripcount; + +/* +================ +StripLength +================ +*/ +static int StripLength (int starttri, int startv) +{ + int m1, m2; + int j; + mtriangle_t *last, *check; + int k; + + used[starttri] = 2; + + last = &triangles[starttri]; + + stripverts[0] = last->vertindex[(startv)%3]; + stripverts[1] = last->vertindex[(startv+1)%3]; + stripverts[2] = last->vertindex[(startv+2)%3]; + + striptris[0] = starttri; + stripcount = 1; + + m1 = last->vertindex[(startv+2)%3]; + m2 = last->vertindex[(startv+1)%3]; + + // look for a matching triangle +nexttri: + for (j=starttri+1, check=&triangles[starttri+1] ; j<pheader->numtris ; j++, check++) + { + if (check->facesfront != last->facesfront) + continue; + for (k=0 ; k<3 ; k++) + { + if (check->vertindex[k] != m1) + continue; + if (check->vertindex[ (k+1)%3 ] != m2) + continue; + + // this is the next part of the fan + + // if we can't use this triangle, this tristrip is done + if (used[j]) + goto done; + + // the new edge + if (stripcount & 1) + m2 = check->vertindex[ (k+2)%3 ]; + else + m1 = check->vertindex[ (k+2)%3 ]; + + stripverts[stripcount+2] = check->vertindex[ (k+2)%3 ]; + striptris[stripcount] = j; + stripcount++; + + used[j] = 2; + goto nexttri; + } + } +done: + + // clear the temp used flags + for (j=starttri+1 ; j<pheader->numtris ; j++) + if (used[j] == 2) + used[j] = 0; + + return stripcount; +} + +/* +=========== +FanLength +=========== +*/ +static int FanLength (int starttri, int startv) +{ + int m1, m2; + int j; + mtriangle_t *last, *check; + int k; + + used[starttri] = 2; + + last = &triangles[starttri]; + + stripverts[0] = last->vertindex[(startv)%3]; + stripverts[1] = last->vertindex[(startv+1)%3]; + stripverts[2] = last->vertindex[(startv+2)%3]; + + striptris[0] = starttri; + stripcount = 1; + + m1 = last->vertindex[(startv+0)%3]; + m2 = last->vertindex[(startv+2)%3]; + + + // look for a matching triangle +nexttri: + for (j=starttri+1, check=&triangles[starttri+1] ; j<pheader->numtris ; j++, check++) + { + if (check->facesfront != last->facesfront) + continue; + for (k=0 ; k<3 ; k++) + { + if (check->vertindex[k] != m1) + continue; + if (check->vertindex[ (k+1)%3 ] != m2) + continue; + + // this is the next part of the fan + + // if we can't use this triangle, this tristrip is done + if (used[j]) + goto done; + + // the new edge + m2 = check->vertindex[ (k+2)%3 ]; + + stripverts[stripcount+2] = m2; + striptris[stripcount] = j; + stripcount++; + + used[j] = 2; + goto nexttri; + } + } +done: + + // clear the temp used flags + for (j=starttri+1 ; j<pheader->numtris ; j++) + if (used[j] == 2) + used[j] = 0; + + return stripcount; +} + + +/* +================ +BuildTris + +Generate a list of trifans or strips +for the model, which holds for all frames +================ +*/ +static void BuildTris (void) +{ + int i, j, k; + int startv; + float s, t; + int len, bestlen, besttype; + int bestverts[MAXALIASTRIS + 2]; + int besttris[MAXALIASTRIS]; + int type; + + // + // build tristrips + // + numorder = 0; + numcommands = 0; + memset (used, 0, sizeof(used)); + for (i = 0; i < pheader->numtris; i++) + { + // pick an unused triangle and start the trifan + if (used[i]) + continue; + + bestlen = 0; + besttype = 0; + for (type = 0 ; type < 2 ; type++) +// type = 1; + { + for (startv = 0; startv < 3; startv++) + { + if (type == 1) + len = StripLength (i, startv); + else + len = FanLength (i, startv); + if (len > bestlen) + { + besttype = type; + bestlen = len; + for (j = 0; j < bestlen+2; j++) + bestverts[j] = stripverts[j]; + for (j = 0; j < bestlen; j++) + besttris[j] = striptris[j]; + } + } + } + + // mark the tris on the best strip as used + for (j = 0; j < bestlen; j++) + used[besttris[j]] = 1; + + if (besttype == 1) + commands[numcommands++] = (bestlen+2); + else + commands[numcommands++] = -(bestlen+2); + + for (j = 0; j < bestlen+2; j++) + { + int tmp; + + // emit a vertex into the reorder buffer + k = bestverts[j]; + vertexorder[numorder++] = k; + + // emit s/t coords into the commands stream + s = stverts[k].s; + t = stverts[k].t; + if (!triangles[besttris[0]].facesfront && stverts[k].onseam) + s += pheader->skinwidth / 2; // on back side + s = (s + 0.5) / pheader->skinwidth; + t = (t + 0.5) / pheader->skinheight; + + // *(float *)&commands[numcommands++] = s; + // *(float *)&commands[numcommands++] = t; + // NOTE: 4 == sizeof(int) + // == sizeof(float) + memcpy (&tmp, &s, 4); + commands[numcommands++] = tmp; + memcpy (&tmp, &t, 4); + commands[numcommands++] = tmp; + } + } + + commands[numcommands++] = 0; // end of list marker + + Con_DPrintf2 ("%3i tri %3i vert %3i cmd\n", pheader->numtris, numorder, numcommands); +} + +static void GL_MakeAliasModelDisplayLists_VBO (qmodel_t *, aliashdr_t *); +static void GLMesh_LoadVertexBuffer (qmodel_t *m, const aliashdr_t *hdr); + +/* +================ +GL_MakeAliasModelDisplayLists +================ +*/ +void GL_MakeAliasModelDisplayLists (qmodel_t *m, aliashdr_t *hdr) +{ + int i, j; + int *cmds; + trivertx_t *verts; + float hscale, vscale; //johnfitz -- padded skins + int count; //johnfitz -- precompute texcoords for padded skins + int *loadcmds; //johnfitz + aliashdr_t *paliashdr = hdr; // (aliashdr_t *)Mod_Extradata (m); + + //johnfitz -- padded skins + hscale = (float)hdr->skinwidth/(float)TexMgr_PadConditional(hdr->skinwidth); + vscale = (float)hdr->skinheight/(float)TexMgr_PadConditional(hdr->skinheight); + //johnfitz + +//johnfitz -- generate meshes + Con_DPrintf2 ("meshing %s...\n",m->name); + BuildTris (); + + // save the data out + + paliashdr->poseverts = numorder; + + cmds = (int *) Hunk_Alloc (numcommands * 4); + paliashdr->commands = (byte *)cmds - (byte *)paliashdr; + + //johnfitz -- precompute texcoords for padded skins + loadcmds = commands; + while(1) + { + *cmds++ = count = *loadcmds++; + + if (!count) + break; + + if (count < 0) + count = -count; + + do + { + *(float *)cmds++ = hscale * (*(float *)loadcmds++); + *(float *)cmds++ = vscale * (*(float *)loadcmds++); + } while (--count); + } + //johnfitz + + verts = (trivertx_t *) Hunk_Alloc (paliashdr->numposes * paliashdr->poseverts * sizeof(trivertx_t)); + paliashdr->posedata = (byte *)verts - (byte *)paliashdr; + for (i=0 ; i<paliashdr->numposes ; i++) + for (j=0 ; j<numorder ; j++) + *verts++ = poseverts[i][vertexorder[j]]; + + // ericw + GL_MakeAliasModelDisplayLists_VBO (m, paliashdr); +} + +/* +================ +GL_MakeAliasModelDisplayLists_VBO + +Saves data needed to build the VBO for this model on the hunk. Afterwards this +is copied to Mod_Extradata. + +Original code by MH from RMQEngine +================ +*/ +static void GL_MakeAliasModelDisplayLists_VBO (qmodel_t *aliasmodel, aliashdr_t *paliashdr) +{ + int i, j; + int mark; + trivertx_t *verts; + unsigned short *indexes; + unsigned short *remap; + aliasmesh_t *desc; + + if (!gl_glsl_alias_able) + return; + + // first, copy the verts onto the hunk + verts = (trivertx_t *) Hunk_Alloc (paliashdr->numposes * paliashdr->numverts * sizeof(trivertx_t)); + paliashdr->vertexes = (byte *)verts - (byte *)paliashdr; + for (i=0 ; i<paliashdr->numposes ; i++) + for (j=0 ; j<paliashdr->numverts ; j++) + verts[i*paliashdr->numverts + j] = poseverts[i][j]; + + // there can never be more than this number of verts and we just put them all on the hunk + // (each vertex can be used twice, once with the original UVs and once with the seam adjustment) + desc = (aliasmesh_t *) Hunk_Alloc (sizeof (aliasmesh_t) * pheader->numverts * 2); + + // there will always be this number of indexes + indexes = (unsigned short *) Hunk_Alloc (sizeof (unsigned short) * pheader->numtris * 3); + + pheader->indexes = (intptr_t) indexes - (intptr_t) pheader; + pheader->meshdesc = (intptr_t) desc - (intptr_t) pheader; + pheader->numindexes = 0; + pheader->numverts_vbo = 0; + + mark = Hunk_LowMark (); + + // each pair of elements in the remap array corresponds to one source vertex + // each value is the final index + 1, or 0 if the corresponding vertex hasn't been emitted yet + remap = (unsigned short *) Hunk_Alloc (paliashdr->numverts * 2 * sizeof (remap[0])); + + for (i = 0; i < pheader->numtris; i++) + { + for (j = 0; j < 3; j++) + { + // index into hdr->vertexes + unsigned short vertindex = triangles[i].vertindex[j]; + + // index into remap table + int v = vertindex * 2; + + // check for back side + if (!triangles[i].facesfront && stverts[vertindex].onseam) + v++; + + // emit new vertex if it doesn't already exist + if (!remap[v]) + { + // basic s/t coords + int s = stverts[vertindex].s; + int t = stverts[vertindex].t; + + // check for back side and adjust texcoord s + if (v & 1) + s += paliashdr->skinwidth / 2; + + desc[pheader->numverts_vbo].vertindex = vertindex; + desc[pheader->numverts_vbo].st[0] = s; + desc[pheader->numverts_vbo].st[1] = t; + + remap[v] = ++pheader->numverts_vbo; + } + + // emit index + indexes[pheader->numindexes++] = remap[v] - 1; + } + } + + // free temporary data + Hunk_FreeToLowMark (mark); + + // upload immediately + GLMesh_LoadVertexBuffer (aliasmodel, pheader); +} + +/* +================ +GLMesh_LoadVertexBuffer + +Upload the given alias model's mesh to a VBO + +Original code by MH from RMQEngine +================ +*/ +static void GLMesh_LoadVertexBuffer (qmodel_t *m, const aliashdr_t *hdr) +{ + int totalvbosize = 0; + const aliasmesh_t *desc; + const short *indexes; + const trivertx_t *trivertexes; + byte *vbodata; + int f; + + if (!gl_glsl_alias_able) + return; + +// count the sizes we need + + // ericw -- RMQEngine stored these vbo*ofs values in aliashdr_t, but we must not + // mutate Mod_Extradata since it might be reloaded from disk, so I moved them to qmodel_t + // (test case: roman1.bsp from arwop, 64mb heap) + m->vboindexofs = 0; + + m->vboxyzofs = 0; + totalvbosize += (hdr->numposes * hdr->numverts_vbo * sizeof (meshxyz_t)); // ericw -- what RMQEngine called nummeshframes is called numposes in QuakeSpasm + + m->vbostofs = totalvbosize; + totalvbosize += (hdr->numverts_vbo * sizeof (meshst_t)); + + if (!hdr->numindexes) return; + if (!totalvbosize) return; + +// grab the pointers to data in the extradata + + desc = (aliasmesh_t *) ((byte *) hdr + hdr->meshdesc); + indexes = (short *) ((byte *) hdr + hdr->indexes); + trivertexes = (trivertx_t *) ((byte *)hdr + hdr->vertexes); + +// upload indices buffer + + GL_DeleteBuffersFunc (1, &m->meshindexesvbo); + GL_GenBuffersFunc (1, &m->meshindexesvbo); + GL_BindBufferFunc (GL_ELEMENT_ARRAY_BUFFER, m->meshindexesvbo); + GL_BufferDataFunc (GL_ELEMENT_ARRAY_BUFFER, hdr->numindexes * sizeof (unsigned short), indexes, GL_STATIC_DRAW); + +// create the vertex buffer (empty) + + vbodata = (byte *) malloc(totalvbosize); + memset(vbodata, 0, totalvbosize); + +// fill in the vertices at the start of the buffer + for (f = 0; f < hdr->numposes; f++) // ericw -- what RMQEngine called nummeshframes is called numposes in QuakeSpasm + { + int v; + meshxyz_t *xyz = (meshxyz_t *) (vbodata + (f * hdr->numverts_vbo * sizeof (meshxyz_t))); + const trivertx_t *tv = trivertexes + (hdr->numverts * f); + + for (v = 0; v < hdr->numverts_vbo; v++) + { + trivertx_t trivert = tv[desc[v].vertindex]; + + xyz[v].xyz[0] = trivert.v[0]; + xyz[v].xyz[1] = trivert.v[1]; + xyz[v].xyz[2] = trivert.v[2]; + xyz[v].xyz[3] = 1; // need w 1 for 4 byte vertex compression + + // map the normal coordinates in [-1..1] to [-127..127] and store in an unsigned char. + // this introduces some error (less than 0.004), but the normals were very coarse + // to begin with + xyz[v].normal[0] = 127 * r_avertexnormals[trivert.lightnormalindex][0]; + xyz[v].normal[1] = 127 * r_avertexnormals[trivert.lightnormalindex][1]; + xyz[v].normal[2] = 127 * r_avertexnormals[trivert.lightnormalindex][2]; + xyz[v].normal[3] = 0; // unused; for 4-byte alignment + } + } + +// fill in the ST coords at the end of the buffer + { + meshst_t *st; + float hscale, vscale; + + //johnfitz -- padded skins + hscale = 1.0f / (float)TexMgr_PadConditional(hdr->skinwidth); + vscale = 1.0f / (float)TexMgr_PadConditional(hdr->skinheight); + //johnfitz + + st = (meshst_t *) (vbodata + m->vbostofs); + for (f = 0; f < hdr->numverts_vbo; f++) + { + st[f].st[0] = hscale * ((float) desc[f].st[0] + 0.5f); + st[f].st[1] = vscale * ((float) desc[f].st[1] + 0.5f); + } + } + +// upload vertexes buffer + GL_DeleteBuffersFunc (1, &m->meshvbo); + GL_GenBuffersFunc (1, &m->meshvbo); + GL_BindBufferFunc (GL_ARRAY_BUFFER, m->meshvbo); + GL_BufferDataFunc (GL_ARRAY_BUFFER, totalvbosize, vbodata, GL_STATIC_DRAW); + + free (vbodata); + +// invalidate the cached bindings + GL_ClearBufferBindings (); +} + +/* +================ +GLMesh_LoadVertexBuffers + +Loop over all precached alias models, and upload each one to a VBO. +================ +*/ +void GLMesh_LoadVertexBuffers (void) +{ + int j; + qmodel_t *m; + const aliashdr_t *hdr; + + if (!gl_glsl_alias_able) + return; + + for (j = 1; j < MAX_MODELS; j++) + { + if (!(m = cl.model_precache[j])) break; + if (m->type != mod_alias) continue; + + hdr = (const aliashdr_t *) Mod_Extradata (m); + + GLMesh_LoadVertexBuffer (m, hdr); + } +} + +/* +================ +GLMesh_DeleteVertexBuffers + +Delete VBOs for all loaded alias models +================ +*/ +void GLMesh_DeleteVertexBuffers (void) +{ + int j; + qmodel_t *m; + + if (!gl_glsl_alias_able) + return; + + for (j = 1; j < MAX_MODELS; j++) + { + if (!(m = cl.model_precache[j])) break; + if (m->type != mod_alias) continue; + + GL_DeleteBuffersFunc (1, &m->meshvbo); + m->meshvbo = 0; + + GL_DeleteBuffersFunc (1, &m->meshindexesvbo); + m->meshindexesvbo = 0; + } + + GL_ClearBufferBindings (); +} diff --git a/Quake/gl_model.c b/Quake/gl_model.c new file mode 100644 index 0000000..61a5b58 --- /dev/null +++ b/Quake/gl_model.c @@ -0,0 +1,3413 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// models.c -- model loading and caching + +// models are the only shared resource between a client and server running +// on the same machine. + +#include "quakedef.h" + +static qmodel_t* loadmodel; +static char loadname[32]; // for hunk tags + +static void Mod_LoadSpriteModel (qmodel_t *mod, void *buffer); +static void Mod_LoadBrushModel (qmodel_t *mod, void *buffer); +static void Mod_LoadAliasModel (qmodel_t *mod, void *buffer); +static qmodel_t *Mod_LoadModel (qmodel_t *mod, qboolean crash); + +static void Mod_Print (void); + +static cvar_t external_ents = {"external_ents", "1", CVAR_ARCHIVE}; +static cvar_t external_vis = {"external_vis", "1", CVAR_ARCHIVE}; +static cvar_t external_textures = {"external_textures", "1", CVAR_ARCHIVE}; + +static byte *mod_novis; +static int mod_novis_capacity; + +static byte *mod_decompressed; +static int mod_decompressed_capacity; + +#define MAX_MOD_KNOWN 4096 /*johnfitz -- was 512 */ +static qmodel_t mod_known[MAX_MOD_KNOWN]; +static int mod_numknown; + +texture_t *r_notexture_mip; //johnfitz -- moved here from r_main.c +texture_t *r_notexture_mip2; //johnfitz -- used for non-lightmapped surfs with a missing texture + +/* +=============== +Mod_Init +=============== +*/ +void Mod_Init (void) +{ + Cvar_RegisterVariable (&gl_subdivide_size); + Cvar_RegisterVariable (&external_vis); + Cvar_RegisterVariable (&external_ents); + Cvar_RegisterVariable (&external_textures); + + Cmd_AddCommand ("mcache", Mod_Print); + + //johnfitz -- create notexture miptex + r_notexture_mip = (texture_t *) Hunk_AllocName (sizeof(texture_t), "r_notexture_mip"); + strcpy (r_notexture_mip->name, "notexture"); + r_notexture_mip->height = r_notexture_mip->width = 32; + + r_notexture_mip2 = (texture_t *) Hunk_AllocName (sizeof(texture_t), "r_notexture_mip2"); + strcpy (r_notexture_mip2->name, "notexture2"); + r_notexture_mip2->height = r_notexture_mip2->width = 32; + //johnfitz +} + +/* +=============== +Mod_Extradata + +Caches the data if needed +=============== +*/ +void *Mod_Extradata (qmodel_t *mod) +{ + void *r; + + r = Cache_Check (&mod->cache); + if (r) + return r; + + Mod_LoadModel (mod, true); + + if (!mod->cache.data) + Sys_Error ("Mod_Extradata: caching failed"); + return mod->cache.data; +} + +/* +=============== +Mod_PointInLeaf +=============== +*/ +mleaf_t *Mod_PointInLeaf (vec3_t p, qmodel_t *model) +{ + mnode_t *node; + float d; + mplane_t *plane; + + if (!model || !model->nodes) + Sys_Error ("Mod_PointInLeaf: bad model"); + + node = model->nodes; + while (1) + { + if (node->contents < 0) + return (mleaf_t *)node; + plane = node->plane; + d = DotProduct (p,plane->normal) - plane->dist; + if (d > 0) + node = node->children[0]; + else + node = node->children[1]; + } + + return NULL; // never reached +} + + +/* +=================== +Mod_DecompressVis +=================== +*/ +static byte *Mod_DecompressVis (byte *in, qmodel_t *model) +{ + int c; + byte *out; + byte *outend; + int row; + + row = (model->numleafs+7)>>3; + if (mod_decompressed == NULL || row > mod_decompressed_capacity) + { + mod_decompressed_capacity = row; + mod_decompressed = (byte *) realloc (mod_decompressed, mod_decompressed_capacity); + if (!mod_decompressed) + Sys_Error ("Mod_DecompressVis: realloc() failed on %d bytes", mod_decompressed_capacity); + } + out = mod_decompressed; + outend = mod_decompressed + row; + + if (!in) + { // no vis info, so make all visible + while (row) + { + *out++ = 0xff; + row--; + } + return mod_decompressed; + } + + do + { + if (*in) + { + *out++ = *in++; + continue; + } + + c = in[1]; + in += 2; + while (c) + { + if (out == outend) + { + if(!model->viswarn) { + model->viswarn = true; + Con_Warning("Mod_DecompressVis: output overrun on model \"%s\"\n", model->name); + } + return mod_decompressed; + } + *out++ = 0; + c--; + } + } while (out - mod_decompressed < row); + + return mod_decompressed; +} + +byte *Mod_LeafPVS (mleaf_t *leaf, qmodel_t *model) +{ + if (leaf == model->leafs) + return Mod_NoVisPVS (model); + return Mod_DecompressVis (leaf->compressed_vis, model); +} + +byte *Mod_NoVisPVS (qmodel_t *model) +{ + int pvsbytes; + + pvsbytes = (model->numleafs+7)>>3; + if (mod_novis == NULL || pvsbytes > mod_novis_capacity) + { + mod_novis_capacity = pvsbytes; + mod_novis = (byte *) realloc (mod_novis, mod_novis_capacity); + if (!mod_novis) + Sys_Error ("Mod_NoVisPVS: realloc() failed on %d bytes", mod_novis_capacity); + + memset(mod_novis, 0xff, mod_novis_capacity); + } + return mod_novis; +} + +/* +=================== +Mod_ClearAll +=================== +*/ +void Mod_ClearAll (void) +{ + int i; + qmodel_t *mod; + + for (i=0 , mod=mod_known ; i<mod_numknown ; i++, mod++) + { + if (mod->type != mod_alias) + { + mod->needload = true; + TexMgr_FreeTexturesForOwner (mod); //johnfitz + } + } +} + +void Mod_ResetAll (void) +{ + int i; + qmodel_t *mod; + + //ericw -- free alias model VBOs + GLMesh_DeleteVertexBuffers (); + + for (i=0 , mod=mod_known ; i<mod_numknown ; i++, mod++) + { + if (!mod->needload) //otherwise Mod_ClearAll() did it already + TexMgr_FreeTexturesForOwner (mod); + memset(mod, 0, sizeof(qmodel_t)); + } + mod_numknown = 0; +} + +/* +================== +Mod_FindName + +================== +*/ +static qmodel_t *Mod_FindName (const char *name) +{ + int i; + qmodel_t *mod; + + if (!name[0]) + Sys_Error ("Mod_FindName: NULL name"); //johnfitz -- was "Mod_ForName" + +// +// search the currently loaded models +// + for (i=0 , mod=mod_known ; i<mod_numknown ; i++, mod++) + { + if (!strcmp (mod->name, name) ) + break; + } + + if (i == mod_numknown) + { + if (mod_numknown == MAX_MOD_KNOWN) + Sys_Error ("mod_numknown == MAX_MOD_KNOWN"); + q_strlcpy (mod->name, name, MAX_QPATH); + mod->needload = true; + mod_numknown++; + } + + return mod; +} + +/* +================== +Mod_TouchModel + +================== +*/ +void Mod_TouchModel (const char *name) +{ + qmodel_t *mod; + + mod = Mod_FindName (name); + + if (!mod->needload) + { + if (mod->type == mod_alias) + Cache_Check (&mod->cache); + } +} + +/* +================== +Mod_LoadModel + +Loads a model into the cache +================== +*/ +static qmodel_t *Mod_LoadModel (qmodel_t *mod, qboolean crash) +{ + byte *buf; + byte stackbuf[1024]; // avoid dirtying the cache heap + int mod_type; + + if (!mod->needload) + { + if (mod->type == mod_alias) + { + if (Cache_Check (&mod->cache)) + return mod; + } + else + return mod; // not cached at all + } + +// +// because the world is so huge, load it one piece at a time +// + if (!crash) + { + + } + +// +// load the file +// + buf = COM_LoadStackFile (mod->name, stackbuf, sizeof(stackbuf), & mod->path_id); + if (!buf) + { + if (crash) + Host_Error ("Mod_LoadModel: %s not found", mod->name); //johnfitz -- was "Mod_NumForName" + return NULL; + } + +// +// allocate a new model +// + COM_FileBase (mod->name, loadname, sizeof(loadname)); + + loadmodel = mod; + +// +// fill it in +// + +// call the apropriate loader + mod->needload = false; + + mod_type = (buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24)); + switch (mod_type) + { + case IDPOLYHEADER: + Mod_LoadAliasModel (mod, buf); + break; + + case IDSPRITEHEADER: + Mod_LoadSpriteModel (mod, buf); + break; + + default: + Mod_LoadBrushModel (mod, buf); + break; + } + + return mod; +} + +/* +================== +Mod_ForName + +Loads in a model for the given name +================== +*/ +qmodel_t *Mod_ForName (const char *name, qboolean crash) +{ + qmodel_t *mod; + + mod = Mod_FindName (name); + + return Mod_LoadModel (mod, crash); +} + + +/* +=============================================================================== + + BRUSHMODEL LOADING + +=============================================================================== +*/ + +static byte *mod_base; + +/* +============= +Mod_LoadWadFiles + +load all of the wads listed in the worldspawn "wad" field +============= +*/ +static wad_t *Mod_LoadWadFiles (qmodel_t *mod) +{ + char key[128], value[4096]; + const char *data; + + if (!external_textures.value) + return NULL; + + // disregard if this isn't the world model + if (strcmp (mod->name, sv.modelname)) + return NULL; + + data = COM_Parse (mod->entities); + if (!data) + return NULL; // error + if (com_token[0] != '{') + return NULL; // error + while (1) + { + data = COM_Parse (data); + if (!data) + return NULL; // error + if (com_token[0] == '}') + break; // end of worldspawn + if (com_token[0] == '_') + q_strlcpy (key, com_token + 1, sizeof (key)); + else + q_strlcpy (key, com_token, sizeof (key)); + while (key[0] && key[strlen (key) - 1] == ' ') // remove trailing spaces + key[strlen (key) - 1] = 0; + data = COM_ParseEx (data, CPE_ALLOWTRUNC); + if (!data) + return NULL; // error + q_strlcpy (value, com_token, sizeof (value)); + + if (!strcmp ("wad", key)) + { + return W_LoadWadList (value); + } + } + return NULL; +} + +/* +================= +Mod_LoadWadTexture + +look for an external texture in any of the loaded map wads +================= +*/ +static texture_t *Mod_LoadWadTexture (qmodel_t *mod, wad_t *wads, const char *name, qboolean *out_pal, int *out_pixels) +{ + int i, pixels, palette, tex_bytes, lump_bytes, pixels_pos, palette_pos; + lumpinfo_t *info; + wad_t *wad; + miptex_t mt; + texture_t *tx; + qboolean pal; + unsigned short colors; + + // look for the lump in any of the loaded wads + info = W_GetLumpinfoList (wads, name, &wad); + + // ensure we're dealing with a miptex + if (!info || (info->type != TYP_MIPTEX && (wad->id != WADID_VALVE || info->type != TYP_MIPTEX_PALETTE))) + { + Con_Warning ("Missing texture %s in WAD, using BSP.\n", name); + return NULL; + } + + // override the texture from the bsp file + FS_fseek (&wad->fh, info->filepos, SEEK_SET); + FS_fread (&mt, 1, sizeof (miptex_t), &wad->fh); + + mt.width = LittleLong (mt.width); + mt.height = LittleLong (mt.height); + for (i = 0; i < MIPLEVELS; i++) + mt.offsets[i] = LittleLong (mt.offsets[i]); + + if (mt.width == 0 || mt.height == 0) + { + Con_Warning ("Zero sized texture %s in %s!\n", mt.name, wad->name); + return NULL; + } + + if ((mt.width & 15) || (mt.height & 15)) + { + if (mod->bspversion != BSPVERSION_QUAKE64) + Con_Warning ("Texture %s (%d x %d) is not 16 aligned\n", mt.name, mt.width, mt.height); + return NULL; + } + + pal = wad->id == WADID_VALVE && info->type == TYP_MIPTEX_PALETTE; + + pixels = mt.width * mt.height; // only copy the first mip, the rest are auto-generated + pixels_pos = info->filepos + sizeof (miptex_t); + // valve textures have a color palette immediately following the pixels + if (pal) + { + palette_pos = pixels_pos + pixels / 64 * 85; + + // add space for the color count + palette = 2; + + if ((pixels / 64 * 85 + 2) <= info->size) + { + // the palette is basically garunteed to be 256 colors but, + // we might as well use the value since it *does* exist + FS_fseek (&wad->fh, palette_pos, SEEK_SET); + FS_fread (&colors, 1, 2, &wad->fh); + colors = LittleShort (colors); + // add space for the color palette + palette += colors * 3; + } + + tex_bytes = pixels + palette; + lump_bytes = pixels / 64 * 85 + palette; + } + else + { + palette_pos = 0; + palette = 0; + tex_bytes = pixels; + lump_bytes = pixels; + } + tx = (texture_t *)Hunk_AllocName (sizeof (texture_t) + tex_bytes, loadname); + + memcpy (tx->name, mt.name, sizeof (tx->name)); + tx->width = mt.width; + tx->height = mt.height; + // the pixels immediately follow the structures + + // check for pixels extending past the end of the lump + if (lump_bytes > info->size) + { + Con_DPrintf ("Texture %s extends past end of lump\n", mt.name); + lump_bytes = info->size; + if (pal) + palette = q_min(palette, q_max(0, lump_bytes - pixels / 64 * 85)); + pixels = q_min(pixels, lump_bytes); + } + + tx->update_warp = false; //johnfitz + tx->warpimage = NULL; //johnfitz + tx->fullbright = NULL; //johnfitz + tx->shift = 0; // Q64 only + + FS_fseek (&wad->fh, pixels_pos, SEEK_SET); + FS_fread (tx + 1, 1, pixels, &wad->fh); + if (pal && palette) + { + FS_fseek (&wad->fh, palette_pos, SEEK_SET); + FS_fread ((byte *)(tx + 1) + pixels, 1, palette, &wad->fh); + } + + *out_pal = pal; + *out_pixels = pixels; + return tx; +} + +/* +================= +Mod_CheckFullbrights -- johnfitz +================= +*/ +static qboolean Mod_CheckFullbrights (byte *pixels, int count) +{ + int i; + for (i = 0; i < count; i++) + { + if (*pixels++ > 223) + return true; + } + return false; +} + +/* +================= +Mod_CheckFullbrightsValve +================= +*/ +static qboolean Mod_CheckFullbrightsValve (char *name, byte *pixels, int count) +{ + if (name[0] == '~' || (name[2] == '~' && name[0] == '+')) + return Mod_CheckFullbrights (pixels, count); + return false; +} + +/* +================= +Mod_CheckAnimTextureArrayQ64 + +Quake64 bsp +Check if we have any missing textures in the array +================= +*/ +static qboolean Mod_CheckAnimTextureArrayQ64(texture_t *anims[], int numTex) +{ + int i; + + for (i = 0; i < numTex; i++) + { + if (!anims[i]) + return false; + } + return true; +} + +/* +================= +Mod_LoadTextures +================= +*/ +static void Mod_LoadTextures (lump_t *l) +{ + int i, j, pixels, num, maxanim, altmax, tex_bytes, lump_bytes; + miptex_t *mt; + texture_t *tx, *tx2; + texture_t *anims[10]; + texture_t *altanims[10]; + dmiptexlump_t *m; +//johnfitz -- more variables + char texturename[64]; + int nummiptex; + src_offset_t offset; + int mark, fwidth, fheight; + char filename[MAX_OSPATH], mapname[MAX_OSPATH]; + byte *data; + extern byte *hunk_base; +//johnfitz + unsigned int flags; + wad_t *wads; + qboolean from_wad; + enum srcformat fmt; + qboolean fbright; + const char *source_file; +#ifdef BSP29_VALVE + int palette; + byte *palette_p; + unsigned short colors; +#endif + qboolean pal; + + //johnfitz -- don't return early if no textures; still need to create dummy texture + if (!l->filelen) + { + Con_Printf ("Mod_LoadTextures: no textures in bsp file\n"); + nummiptex = 0; + m = NULL; // avoid bogus compiler warning + } + else + { + m = (dmiptexlump_t *)(mod_base + l->fileofs); + m->nummiptex = LittleLong (m->nummiptex); + nummiptex = m->nummiptex; + } + //johnfitz + + loadmodel->numtextures = nummiptex + 2; //johnfitz -- need 2 dummy texture chains for missing textures + loadmodel->textures = (texture_t **) Hunk_AllocName (loadmodel->numtextures * sizeof(*loadmodel->textures) , loadname); + + // load any wads this map may need to load external textures from + wads = Mod_LoadWadFiles (loadmodel); + + for (i=0 ; i<nummiptex ; i++) + { + m->dataofs[i] = LittleLong(m->dataofs[i]); + if (m->dataofs[i] == -1) + continue; + mt = (miptex_t *)((byte *)m + m->dataofs[i]); + mt->width = LittleLong (mt->width); + mt->height = LittleLong (mt->height); + for (j=0 ; j<MIPLEVELS ; j++) + mt->offsets[j] = LittleLong (mt->offsets[j]); + + if (mt->width == 0 || mt->height == 0) + { + Con_Warning ("Zero sized texture %s in %s!\n", mt->name, loadmodel->name); + continue; + } + + if ( (mt->width & 15) || (mt->height & 15) ) + { + if (loadmodel->bspversion != BSPVERSION_QUAKE64) + Con_Warning ("Texture %s (%d x %d) is not 16 aligned\n", mt->name, mt->width, mt->height); + } + // an offset of zero indicates an external texture + from_wad = mt->offsets[0] == 0; + + if (from_wad) + { + tx = (texture_t *)Mod_LoadWadTexture (loadmodel, wads, mt->name, &pal, &pixels); + if (tx) + { + loadmodel->textures[i] = tx; + goto _load_texture; + } + // Mod_LoadWadTexture trust the .wad name in bsp, but its loading may + // fail anyway, so try with regular internal .bsp texture loading as fallback: + } + +#ifdef BSP29_VALVE + pal = loadmodel->bspversion == BSPVERSION_VALVE; +#else + pal = false; +#endif + + pixels = mt->width*mt->height; // only copy the first mip, the rest are auto-generated +#ifdef BSP29_VALVE + // valve textures have a color palette immediately following the pixels + if (pal) + { + palette_p = (byte *)(mt + 1) + pixels / 64 * 85; + + // add space for the color count + palette = 2; + + if ((palette_p + 2) <= (mod_base + l->fileofs + l->filelen)) + { + // the palette is basically garunteed to be 256 colors but, + // we might as well use the value since it *does* exist + memcpy (&colors, palette_p, 2); + colors = LittleShort (colors); + // add space for the color palette + palette += colors * 3; + } + + tex_bytes = pixels + palette; + lump_bytes = pixels / 64 * 85 + palette; + } + else +#endif + { +#ifdef BSP29_VALVE + palette_p = NULL; + palette = 0; +#endif + tex_bytes = pixels; + lump_bytes = pixels; + } + tx = (texture_t *) Hunk_AllocName (sizeof(texture_t) +tex_bytes, loadname ); + loadmodel->textures[i] = tx; + + memcpy (tx->name, mt->name, sizeof(tx->name)); + tx->width = mt->width; + tx->height = mt->height; + // the pixels immediately follow the structures + + // ericw -- check for pixels extending past the end of the lump. + // appears in the wild; e.g. jam2_tronyn.bsp (func_mapjam2), + // kellbase1.bsp (quoth), and can lead to a segfault if we read past + // the end of the .bsp file buffer + if (((byte*)(mt+1) + lump_bytes) > (mod_base + l->fileofs + l->filelen)) + { + Con_DPrintf("Texture %s extends past end of lump\n", mt->name); + lump_bytes = q_max(0L, (long)((mod_base + l->fileofs + l->filelen) - (byte*)(mt+1))); +#ifdef BSP29_VALVE + if (pal) + palette = q_min(palette, q_max(0, lump_bytes - pixels / 64 * 85)); +#endif + pixels = q_min(pixels, lump_bytes); + } + + tx->update_warp = false; //johnfitz + tx->warpimage = NULL; //johnfitz + tx->fullbright = NULL; //johnfitz + tx->shift = 0; // Q64 only + + if (loadmodel->bspversion != BSPVERSION_QUAKE64) + { + memcpy ( tx+1, mt+1, pixels); +#ifdef BSP29_VALVE + if (pal && palette) + memcpy ((byte *)(tx + 1) + pixels, palette_p, palette); +#endif + } + else + { // Q64 bsp + miptex64_t *mt64 = (miptex64_t *)mt; + tx->shift = LittleLong (mt64->shift); + memcpy ( tx+1, mt64+1, pixels); + } + +_load_texture: + + //johnfitz -- lots of changes + if (!isDedicated) //no texture uploading for dedicated server + { +#ifdef BSP29_VALVE + if (loadmodel->bspversion != BSPVERSION_VALVE && !q_strncasecmp(tx->name,"sky",3)) +#else + if (!q_strncasecmp(tx->name,"sky",3)) //sky texture //also note -- was Q_strncmp, changed to match qbsp +#endif + { + if (loadmodel->bspversion == BSPVERSION_QUAKE64) + Sky_LoadTextureQ64 (loadmodel, tx); + else + Sky_LoadTexture (loadmodel, tx); + } + else if (tx->name[0] == '*' || tx->name[0] == '!') //warping texture + { + //external textures -- first look in "textures/mapname/" then look in "textures/" + mark = Hunk_LowMark(); + COM_StripExtension (loadmodel->name + 5, mapname, sizeof(mapname)); + q_snprintf (filename, sizeof(filename), "textures/%s/#%s", mapname, tx->name+1); //this also replaces the '*' with a '#' + data = Image_LoadImage (filename, &fwidth, &fheight); + if (!data) + { + q_snprintf (filename, sizeof(filename), "textures/#%s", tx->name+1); + data = Image_LoadImage (filename, &fwidth, &fheight); + } + + //now load whatever we found + if (data) //load external image + { + q_strlcpy (texturename, filename, sizeof(texturename)); + tx->gltexture = TexMgr_LoadImage (loadmodel, texturename, fwidth, fheight, + SRC_RGBA, data, filename, 0, TEXPREF_NONE); + } + else //use the texture from the bsp file + { + q_snprintf (texturename, sizeof(texturename), "%s:%s", loadmodel->name, tx->name); + + if (from_wad || pal) + { + source_file = ""; + offset = (src_offset_t)(tx + 1); + } + else + { + source_file = loadmodel->name; + offset = (src_offset_t)(mt+1) - (src_offset_t)mod_base; + } + + fmt = pal ? SRC_INDEXED_PALETTE : SRC_INDEXED; + + tx->gltexture = TexMgr_LoadImage (loadmodel, texturename, tx->width, tx->height, + fmt, (byte *)(tx+1), source_file, offset, TEXPREF_NONE); + } + + //now create the warpimage, using dummy data from the hunk to create the initial image + Hunk_Alloc (gl_warpimagesize*gl_warpimagesize*4); //make sure hunk is big enough so we don't reach an illegal address + Hunk_FreeToLowMark (mark); + q_snprintf (texturename, sizeof(texturename), "%s_warp", texturename); + flags = TEXPREF_NOPICMIP | TEXPREF_WARPIMAGE; + if (GL_GenerateMipmap) + flags |= TEXPREF_MIPMAP; + tx->warpimage = TexMgr_LoadImage (loadmodel, texturename, gl_warpimagesize, + gl_warpimagesize, SRC_RGBA, hunk_base, "", (src_offset_t)hunk_base, flags); + tx->update_warp = true; + } + else //regular texture + { + // ericw -- fence textures + int extraflags; + + extraflags = 0; + if (tx->name[0] == '{') + extraflags |= TEXPREF_ALPHA; + // ericw + + //external textures -- first look in "textures/mapname/" then look in "textures/" + mark = Hunk_LowMark (); + COM_StripExtension (loadmodel->name + 5, mapname, sizeof(mapname)); + q_snprintf (filename, sizeof(filename), "textures/%s/%s", mapname, tx->name); + data = Image_LoadImage (filename, &fwidth, &fheight); + if (!data) + { + q_snprintf (filename, sizeof(filename), "textures/%s", tx->name); + data = Image_LoadImage (filename, &fwidth, &fheight); + } + + //now load whatever we found + if (data) //load external image + { + char filename2[MAX_OSPATH]; + tx->gltexture = TexMgr_LoadImage (loadmodel, filename, fwidth, fheight, + SRC_RGBA, data, filename, 0, TEXPREF_MIPMAP | extraflags ); + + //now try to load glow/luma image from the same place + Hunk_FreeToLowMark (mark); + q_snprintf (filename2, sizeof(filename2), "%s_glow", filename); + data = Image_LoadImage (filename2, &fwidth, &fheight); + if (!data) + { + q_snprintf (filename2, sizeof(filename2), "%s_luma", filename); + data = Image_LoadImage (filename2, &fwidth, &fheight); + } + + if (data) + tx->fullbright = TexMgr_LoadImage (loadmodel, filename2, fwidth, fheight, + SRC_RGBA, data, filename2, 0, TEXPREF_MIPMAP | extraflags ); + } + else //use the texture from the bsp file + { + q_snprintf (texturename, sizeof(texturename), "%s:%s", loadmodel->name, tx->name); + + if (from_wad || pal) + { + source_file = ""; + offset = (src_offset_t)(tx + 1); + } + else + { + source_file = loadmodel->name; + offset = (src_offset_t)(mt+1) - (src_offset_t)mod_base; + } + + if (pal) + { + fmt = SRC_INDEXED_PALETTE; + fbright = Mod_CheckFullbrightsValve (tx->name, (byte *)(tx + 1), pixels); + } + else + { + fmt = SRC_INDEXED; + fbright = Mod_CheckFullbrights ((byte *)(tx + 1), pixels); + } + + if (fbright) + { + tx->gltexture = TexMgr_LoadImage (loadmodel, texturename, tx->width, tx->height, + fmt, (byte *)(tx+1), source_file, offset, TEXPREF_MIPMAP | TEXPREF_NOBRIGHT | extraflags); + q_snprintf (texturename, sizeof(texturename), "%s:%s_glow", loadmodel->name, tx->name); + tx->fullbright = TexMgr_LoadImage (loadmodel, texturename, tx->width, tx->height, + fmt, (byte *)(tx+1), source_file, offset, TEXPREF_MIPMAP | TEXPREF_FULLBRIGHT | extraflags); + } + else + { + tx->gltexture = TexMgr_LoadImage (loadmodel, texturename, tx->width, tx->height, + fmt, (byte *)(tx+1), source_file, offset, TEXPREF_MIPMAP | extraflags); + } + } + Hunk_FreeToLowMark (mark); + } + } + //johnfitz + } + + // we no longer need the wads after this point + W_FreeWadList (wads); + + //johnfitz -- last 2 slots in array should be filled with dummy textures + loadmodel->textures[loadmodel->numtextures-2] = r_notexture_mip; //for lightmapped surfs + loadmodel->textures[loadmodel->numtextures-1] = r_notexture_mip2; //for SURF_DRAWTILED surfs + +// +// sequence the animations +// + for (i=0 ; i<nummiptex ; i++) + { + tx = loadmodel->textures[i]; + if (!tx || tx->name[0] != '+') + continue; + if (tx->anim_next) + continue; // already sequenced + + // find the number of frames in the animation + memset (anims, 0, sizeof(anims)); + memset (altanims, 0, sizeof(altanims)); + + maxanim = tx->name[1]; + altmax = 0; + if (maxanim >= 'a' && maxanim <= 'z') + maxanim -= 'a' - 'A'; + if (maxanim >= '0' && maxanim <= '9') + { + maxanim -= '0'; + altmax = 0; + anims[maxanim] = tx; + maxanim++; + } + else if (maxanim >= 'A' && maxanim <= 'J') + { + altmax = maxanim - 'A'; + maxanim = 0; + altanims[altmax] = tx; + altmax++; + } + else + Sys_Error ("Bad animating texture %s", tx->name); + + for (j=i+1 ; j<nummiptex ; j++) + { + tx2 = loadmodel->textures[j]; + if (!tx2 || tx2->name[0] != '+') + continue; + if (strcmp (tx2->name+2, tx->name+2)) + continue; + + num = tx2->name[1]; + if (num >= 'a' && num <= 'z') + num -= 'a' - 'A'; + if (num >= '0' && num <= '9') + { + num -= '0'; + anims[num] = tx2; + if (num+1 > maxanim) + maxanim = num + 1; + } + else if (num >= 'A' && num <= 'J') + { + num = num - 'A'; + altanims[num] = tx2; + if (num+1 > altmax) + altmax = num+1; + } + else + Sys_Error ("Bad animating texture %s", tx->name); + } + + if (loadmodel->bspversion == BSPVERSION_QUAKE64 && !Mod_CheckAnimTextureArrayQ64(anims, maxanim)) + continue; // Just pretend this is a normal texture + +#define ANIM_CYCLE 2 + // link them all together + for (j=0 ; j<maxanim ; j++) + { + tx2 = anims[j]; + if (!tx2) + Sys_Error ("Missing frame %i of %s",j, tx->name); + tx2->anim_total = maxanim * ANIM_CYCLE; + tx2->anim_min = j * ANIM_CYCLE; + tx2->anim_max = (j+1) * ANIM_CYCLE; + tx2->anim_next = anims[ (j+1)%maxanim ]; + if (altmax) + tx2->alternate_anims = altanims[0]; + } + for (j=0 ; j<altmax ; j++) + { + tx2 = altanims[j]; + if (!tx2) + Sys_Error ("Missing frame %i of %s",j, tx->name); + tx2->anim_total = altmax * ANIM_CYCLE; + tx2->anim_min = j * ANIM_CYCLE; + tx2->anim_max = (j+1) * ANIM_CYCLE; + tx2->anim_next = altanims[ (j+1)%altmax ]; + if (maxanim) + tx2->alternate_anims = anims[0]; + } + } +} + +/* +================= +Mod_LoadLighting -- johnfitz -- replaced with lit support code via lordhavoc +================= +*/ +static void Mod_LoadLighting (lump_t *l) +{ + int i, mark; + byte *in, *out, *data; + byte d, q64_b0, q64_b1; + char litfilename[MAX_OSPATH]; + unsigned int path_id; + + loadmodel->lightdata = NULL; + // LordHavoc: check for a .lit file + q_strlcpy(litfilename, loadmodel->name, sizeof(litfilename)); + COM_StripExtension(litfilename, litfilename, sizeof(litfilename)); + q_strlcat(litfilename, ".lit", sizeof(litfilename)); + mark = Hunk_LowMark(); + data = (byte*) COM_LoadHunkFile (litfilename, &path_id); + if (data) + { + // use lit file only from the same gamedir as the map + // itself or from a searchpath with higher priority. + if (path_id < loadmodel->path_id) + { + Hunk_FreeToLowMark(mark); + Con_DPrintf("ignored %s from a gamedir with lower priority\n", litfilename); + } + else + if (data[0] == 'Q' && data[1] == 'L' && data[2] == 'I' && data[3] == 'T') + { + i = LittleLong(((int *)data)[1]); + if (i == 1) + { + if (8+l->filelen*3 == com_filesize) + { + Con_DPrintf2("%s loaded\n", litfilename); + loadmodel->lightdata = data + 8; + return; + } + Hunk_FreeToLowMark(mark); + Con_Printf("Outdated .lit file (%s should be %u bytes, not %u)\n", litfilename, 8+l->filelen*3, com_filesize); + } + else + { + Hunk_FreeToLowMark(mark); + Con_Printf("Unknown .lit file version (%d)\n", i); + } + } + else + { + Hunk_FreeToLowMark(mark); + Con_Printf("Corrupt .lit file (old version?), ignoring\n"); + } + } + // LordHavoc: no .lit found, expand the white lighting data to color + if (!l->filelen) + return; + + // Quake64 bsp lighmap data + if (loadmodel->bspversion == BSPVERSION_QUAKE64) + { + // RGB lightmap samples are packed in 16bits. + // RRRRR GGGGG BBBBBB + + loadmodel->lightdata = (byte *) Hunk_AllocName ( (l->filelen / 2)*3, litfilename); + in = mod_base + l->fileofs; + out = loadmodel->lightdata; + + for (i = 0;i < (l->filelen / 2) ;i++) + { + q64_b0 = *in++; + q64_b1 = *in++; + + *out++ = q64_b0 & 0xf8;/* 0b11111000 */ + *out++ = ((q64_b0 & 0x07) << 5) + ((q64_b1 & 0xc0) >> 5);/* 0b00000111, 0b11000000 */ + *out++ = (q64_b1 & 0x3f) << 2;/* 0b00111111 */ + } + return; + } + +#ifdef BSP29_VALVE + if (loadmodel->bspversion == BSPVERSION_VALVE) + { + // lightmap samples are already stored as rgb + loadmodel->lightdata = (byte *)Hunk_AllocName (l->filelen, litfilename); + memcpy (loadmodel->lightdata, mod_base + l->fileofs, l->filelen); + return; + } +#endif + + loadmodel->lightdata = (byte *) Hunk_AllocName ( l->filelen*3, litfilename); + in = loadmodel->lightdata + l->filelen*2; // place the file at the end, so it will not be overwritten until the very last write + out = loadmodel->lightdata; + memcpy (in, mod_base + l->fileofs, l->filelen); + for (i = 0;i < l->filelen;i++) + { + d = *in++; + *out++ = d; + *out++ = d; + *out++ = d; + } +} + + +/* +================= +Mod_LoadVisibility +================= +*/ +static void Mod_LoadVisibility (lump_t *l) +{ + loadmodel->viswarn = false; + if (!l->filelen) + { + loadmodel->visdata = NULL; + return; + } + loadmodel->visdata = (byte *) Hunk_AllocName ( l->filelen, loadname); + memcpy (loadmodel->visdata, mod_base + l->fileofs, l->filelen); +} + + +/* +================= +Mod_LoadEntities +================= +*/ +static void Mod_LoadEntities (lump_t *l) +{ + char basemapname[MAX_QPATH]; + char entfilename[MAX_QPATH]; + char *ents; + int mark; + unsigned int path_id; + unsigned int crc = 0; + + if (! external_ents.value) + goto _load_embedded; + + mark = Hunk_LowMark(); + if (l->filelen > 0) { + crc = CRC_Block(mod_base + l->fileofs, l->filelen - 1); + } + + q_strlcpy(basemapname, loadmodel->name, sizeof(basemapname)); + COM_StripExtension(basemapname, basemapname, sizeof(basemapname)); + + q_snprintf(entfilename, sizeof(entfilename), "%s@%04x.ent", basemapname, crc); + Con_DPrintf2("trying to load %s\n", entfilename); + ents = (char *) COM_LoadHunkFile (entfilename, &path_id); + + if (!ents) + { + q_snprintf(entfilename, sizeof(entfilename), "%s.ent", basemapname); + Con_DPrintf2("trying to load %s\n", entfilename); + ents = (char *) COM_LoadHunkFile (entfilename, &path_id); + } + + if (ents) + { + // use ent file only from the same gamedir as the map + // itself or from a searchpath with higher priority. + if (path_id < loadmodel->path_id) + { + Hunk_FreeToLowMark(mark); + Con_DPrintf("ignored %s from a gamedir with lower priority\n", entfilename); + } + else + { + loadmodel->entities = ents; + Con_DPrintf("Loaded external entity file %s\n", entfilename); + return; + } + } + +_load_embedded: + if (!l->filelen) + { + loadmodel->entities = NULL; + return; + } + loadmodel->entities = (char *) Hunk_AllocName ( l->filelen, loadname); + memcpy (loadmodel->entities, mod_base + l->fileofs, l->filelen); +} + + +/* +================= +Mod_LoadVertexes +================= +*/ +static void Mod_LoadVertexes (lump_t *l) +{ + dvertex_t *in; + mvertex_t *out; + int i, count; + + in = (dvertex_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*in); + out = (mvertex_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->vertexes = out; + loadmodel->numvertexes = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + out->position[0] = LittleFloat (in->point[0]); + out->position[1] = LittleFloat (in->point[1]); + out->position[2] = LittleFloat (in->point[2]); + } +} + +/* +================= +Mod_LoadEdges +================= +*/ +static void Mod_LoadEdges (lump_t *l, int bsp2) +{ + medge_t *out; + int i, count; + + if (bsp2) + { + dledge_t *in = (dledge_t *)(mod_base + l->fileofs); + + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*in); + out = (medge_t *) Hunk_AllocName ( (count + 1) * sizeof(*out), loadname); + + loadmodel->edges = out; + loadmodel->numedges = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + out->v[0] = LittleLong(in->v[0]); + out->v[1] = LittleLong(in->v[1]); + } + } + else + { + dsedge_t *in = (dsedge_t *)(mod_base + l->fileofs); + + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*in); + out = (medge_t *) Hunk_AllocName ( (count + 1) * sizeof(*out), loadname); + + loadmodel->edges = out; + loadmodel->numedges = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + out->v[0] = (unsigned short)LittleShort(in->v[0]); + out->v[1] = (unsigned short)LittleShort(in->v[1]); + } + } +} + +/* +================= +Mod_LoadTexinfo +================= +*/ +static void Mod_LoadTexinfo (lump_t *l) +{ + texinfo_t *in; + mtexinfo_t *out; + int i, j, count, miptex; + int missing = 0; //johnfitz + + in = (texinfo_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*in); + out = (mtexinfo_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->texinfo = out; + loadmodel->numtexinfo = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<4 ; j++) + { + out->vecs[0][j] = LittleFloat (in->vecs[0][j]); + out->vecs[1][j] = LittleFloat (in->vecs[1][j]); + } + + miptex = LittleLong (in->miptex); + out->flags = LittleLong (in->flags); + + //johnfitz -- rewrote this section + if (miptex >= loadmodel->numtextures-1 || !loadmodel->textures[miptex]) + { + if (out->flags & TEX_SPECIAL) + out->texture = loadmodel->textures[loadmodel->numtextures-1]; + else + out->texture = loadmodel->textures[loadmodel->numtextures-2]; + out->flags |= TEX_MISSING; + missing++; + } + else + { + out->texture = loadmodel->textures[miptex]; + } + //johnfitz + } + + //johnfitz: report missing textures + if (missing && loadmodel->numtextures > 1) + Con_Printf ("Mod_LoadTexinfo: %d texture(s) missing from BSP file\n", missing); + //johnfitz +} + +/* +================ +CalcSurfaceExtents + +Fills in s->texturemins[] and s->extents[] +================ +*/ +static void CalcSurfaceExtents (msurface_t *s) +{ + float mins[2], maxs[2], val; + int i,j, e; + mvertex_t *v; + mtexinfo_t *tex; + int bmins[2], bmaxs[2]; + + mins[0] = mins[1] = FLT_MAX; + maxs[0] = maxs[1] = -FLT_MAX; + + tex = s->texinfo; + + for (i=0 ; i<s->numedges ; i++) + { + e = loadmodel->surfedges[s->firstedge+i]; + if (e >= 0) + v = &loadmodel->vertexes[loadmodel->edges[e].v[0]]; + else + v = &loadmodel->vertexes[loadmodel->edges[-e].v[1]]; + + for (j=0 ; j<2 ; j++) + { + /* The following calculation is sensitive to floating-point + * precision. It needs to produce the same result that the + * light compiler does, because R_BuildLightMap uses surf-> + * extents to know the width/height of a surface's lightmap, + * and incorrect rounding here manifests itself as patches + * of "corrupted" looking lightmaps. + * Most light compilers are win32 executables, so they use + * x87 floating point. This means the multiplies and adds + * are done at 80-bit precision, and the result is rounded + * down to 32-bits and stored in val. + * Adding the casts to double seems to be good enough to fix + * lighting glitches when Quakespasm is compiled as x86_64 + * and using SSE2 floating-point. A potential trouble spot + * is the hallway at the beginning of mfxsp17. -- ericw + */ + val = ((double)v->position[0] * (double)tex->vecs[j][0]) + + ((double)v->position[1] * (double)tex->vecs[j][1]) + + ((double)v->position[2] * (double)tex->vecs[j][2]) + + (double)tex->vecs[j][3]; + + if (val < mins[j]) + mins[j] = val; + if (val > maxs[j]) + maxs[j] = val; + } + } + + for (i=0 ; i<2 ; i++) + { + bmins[i] = floor(mins[i]/16); + bmaxs[i] = ceil(maxs[i]/16); + + s->texturemins[i] = bmins[i] * 16; + s->extents[i] = (bmaxs[i] - bmins[i]) * 16; + + if ( !(tex->flags & TEX_SPECIAL) && s->extents[i] > 2000) //johnfitz -- was 512 in glquake, 256 in winquake + Sys_Error ("Bad surface extents"); + } +} + +/* +================ +Mod_PolyForUnlitSurface -- johnfitz -- creates polys for unlightmapped surfaces (sky and water) + +TODO: merge this into BuildSurfaceDisplayList? +================ +*/ +static void Mod_PolyForUnlitSurface (msurface_t *fa) +{ + const int numverts = fa->numedges; + int i, lindex; + float *vec; + glpoly_t *poly; + float texscale; + + if (fa->flags & (SURF_DRAWTURB | SURF_DRAWSKY)) + texscale = (1.0f/128.0f); //warp animation repeats every 128 + else + texscale = (1.0f/32.0f); //to match r_notexture_mip + + poly = (glpoly_t *) Hunk_Alloc (sizeof(glpoly_t) + (numverts-4) * VERTEXSIZE*sizeof(float)); + poly->next = NULL; + fa->polys = poly; + poly->numverts = numverts; + for (i=0; i<numverts; i++) + { + lindex = loadmodel->surfedges[fa->firstedge + i]; + vec = (lindex > 0) ? + loadmodel->vertexes[loadmodel->edges[lindex].v[0]].position : + loadmodel->vertexes[loadmodel->edges[-lindex].v[1]].position; + + VectorCopy (vec, poly->verts[i]); + poly->verts[i][3] = DotProduct(vec, fa->texinfo->vecs[0]) * texscale; + poly->verts[i][4] = DotProduct(vec, fa->texinfo->vecs[1]) * texscale; + } +} + +/* +================= +Mod_CalcSurfaceBounds -- johnfitz -- calculate bounding box for per-surface frustum culling +================= +*/ +static void Mod_CalcSurfaceBounds (msurface_t *s) +{ + int i, e; + mvertex_t *v; + + s->mins[0] = s->mins[1] = s->mins[2] = FLT_MAX; + s->maxs[0] = s->maxs[1] = s->maxs[2] = -FLT_MAX; + + for (i=0 ; i<s->numedges ; i++) + { + e = loadmodel->surfedges[s->firstedge+i]; + if (e >= 0) + v = &loadmodel->vertexes[loadmodel->edges[e].v[0]]; + else + v = &loadmodel->vertexes[loadmodel->edges[-e].v[1]]; + + if (s->mins[0] > v->position[0]) + s->mins[0] = v->position[0]; + if (s->mins[1] > v->position[1]) + s->mins[1] = v->position[1]; + if (s->mins[2] > v->position[2]) + s->mins[2] = v->position[2]; + + if (s->maxs[0] < v->position[0]) + s->maxs[0] = v->position[0]; + if (s->maxs[1] < v->position[1]) + s->maxs[1] = v->position[1]; + if (s->maxs[2] < v->position[2]) + s->maxs[2] = v->position[2]; + } +} + +/* +================= +Mod_LoadFaces +================= +*/ +static void Mod_LoadFaces (lump_t *l, qboolean bsp2) +{ + dsface_t *ins; + dlface_t *inl; + msurface_t *out; + int i, count, surfnum, lofs; + int planenum, side, texinfon; + + if (bsp2) + { + ins = NULL; + inl = (dlface_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*inl)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*inl); + } + else + { + ins = (dsface_t *)(mod_base + l->fileofs); + inl = NULL; + if (l->filelen % sizeof(*ins)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*ins); + } + out = (msurface_t *)Hunk_AllocName ( count*sizeof(*out), loadname); + + //johnfitz -- warn mappers about exceeding old limits + if (count > 32767 && !bsp2) + Con_DWarning ("%i faces exceeds standard limit of 32767.\n", count); + //johnfitz + + loadmodel->surfaces = out; + loadmodel->numsurfaces = count; + + for (surfnum=0 ; surfnum<count ; surfnum++, out++) + { + if (bsp2) + { + out->firstedge = LittleLong(inl->firstedge); + out->numedges = LittleLong(inl->numedges); + planenum = LittleLong(inl->planenum); + side = LittleLong(inl->side); + texinfon = LittleLong (inl->texinfo); + for (i=0 ; i<MAXLIGHTMAPS ; i++) + out->styles[i] = inl->styles[i]; + lofs = LittleLong(inl->lightofs); + inl++; + } + else + { + out->firstedge = LittleLong(ins->firstedge); + out->numedges = LittleShort(ins->numedges); + planenum = LittleShort(ins->planenum); + side = LittleShort(ins->side); + texinfon = LittleShort (ins->texinfo); + for (i=0 ; i<MAXLIGHTMAPS ; i++) + out->styles[i] = ins->styles[i]; + lofs = LittleLong(ins->lightofs); + ins++; + } + + out->flags = 0; + if (out->numedges < 3) + Con_Warning("surfnum %d: bad numedges %d\n", surfnum, out->numedges); + + if (side) + out->flags |= SURF_PLANEBACK; + + out->plane = loadmodel->planes + planenum; + + out->texinfo = loadmodel->texinfo + texinfon; + + CalcSurfaceExtents (out); + + Mod_CalcSurfaceBounds (out); //johnfitz -- for per-surface frustum culling + + // lighting info + if (loadmodel->bspversion == BSPVERSION_QUAKE64) + lofs /= 2; // Q64 samples are 16bits instead 8 in normal Quake + + if (lofs == -1) + out->samples = NULL; +#ifdef BSP29_VALVE + else if (loadmodel->bspversion == BSPVERSION_VALVE) + out->samples = loadmodel->lightdata + lofs; // accounts for RGB light data +#endif + else + out->samples = loadmodel->lightdata + (lofs * 3); //johnfitz -- lit support via lordhavoc (was "+ i") + + //johnfitz -- this section rewritten + if (!q_strncasecmp(out->texinfo->texture->name,"sky",3)) // sky surface //also note -- was Q_strncmp, changed to match qbsp + { + out->flags |= (SURF_DRAWSKY | SURF_DRAWTILED); + Mod_PolyForUnlitSurface (out); //no more subdivision + } + else if (out->texinfo->texture->name[0] == '*' || out->texinfo->texture->name[0] == '!') // warp surface + { + out->flags |= SURF_DRAWTURB; + if (out->texinfo->flags & TEX_SPECIAL) + out->flags |= SURF_DRAWTILED; + else if (out->samples && !loadmodel->haslitwater) + { + Con_DPrintf ("Map has lit water\n"); + loadmodel->haslitwater = true; + } + + // detect special liquid types + if (!strncmp (out->texinfo->texture->name, "*lava", 5) || !strncmp (out->texinfo->texture->name, "!lava", 5)) + out->flags |= SURF_DRAWLAVA; + else if (!strncmp (out->texinfo->texture->name, "*slime", 6) || !strncmp (out->texinfo->texture->name, "!slime", 6)) + out->flags |= SURF_DRAWSLIME; + else if (!strncmp (out->texinfo->texture->name, "*tele", 5) || !strncmp (out->texinfo->texture->name, "!tele", 5)) + out->flags |= SURF_DRAWTELE; + else out->flags |= SURF_DRAWWATER; + + // polys are only created for unlit water here. + // lit water is handled in BuildSurfaceDisplayList + if (out->flags & SURF_DRAWTILED) + { + Mod_PolyForUnlitSurface (out); + GL_SubdivideSurface (out); + } + } + else if (out->texinfo->texture->name[0] == '{') // ericw -- fence textures + { + out->flags |= SURF_DRAWFENCE; + } + else if (out->texinfo->flags & TEX_MISSING) // texture is missing from bsp + { + if (out->samples) //lightmapped + { + out->flags |= SURF_NOTEXTURE; + } + else // not lightmapped + { + out->flags |= (SURF_NOTEXTURE | SURF_DRAWTILED); + Mod_PolyForUnlitSurface (out); + } + } + //johnfitz + } +} + + +/* +================= +Mod_SetParent +================= +*/ +static void Mod_SetParent (mnode_t *node, mnode_t *parent) +{ + node->parent = parent; + if (node->contents < 0) + return; + Mod_SetParent (node->children[0], node); + Mod_SetParent (node->children[1], node); +} + +/* +================= +Mod_LoadNodes +================= +*/ +static void Mod_LoadNodes_S (lump_t *l) +{ + int i, j, count, p; + dsnode_t *in; + mnode_t *out; + + in = (dsnode_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*in); + out = (mnode_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + //johnfitz -- warn mappers about exceeding old limits + if (count > 32767) + Con_DWarning ("%i nodes exceeds standard limit of 32767.\n", count); + //johnfitz + + loadmodel->nodes = out; + loadmodel->numnodes = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { + out->minmaxs[j] = LittleShort (in->mins[j]); + out->minmaxs[3+j] = LittleShort (in->maxs[j]); + } + + p = LittleLong(in->planenum); + out->plane = loadmodel->planes + p; + + out->firstsurface = (unsigned short)LittleShort (in->firstface); //johnfitz -- explicit cast as unsigned short + out->numsurfaces = (unsigned short)LittleShort (in->numfaces); //johnfitz -- explicit cast as unsigned short + + for (j=0 ; j<2 ; j++) + { + //johnfitz -- hack to handle nodes > 32k, adapted from darkplaces + p = (unsigned short)LittleShort(in->children[j]); + if (p < count) + out->children[j] = loadmodel->nodes + p; + else + { + p = 65535 - p; //note this uses 65535 intentionally, -1 is leaf 0 + if (p < loadmodel->numleafs) + out->children[j] = (mnode_t *)(loadmodel->leafs + p); + else + { + Con_Printf("Mod_LoadNodes: invalid leaf index %i (file has only %i leafs)\n", p, loadmodel->numleafs); + out->children[j] = (mnode_t *)(loadmodel->leafs); //map it to the solid leaf + } + } + //johnfitz + } + } +} + +static void Mod_LoadNodes_L1 (lump_t *l) +{ + int i, j, count, p; + dl1node_t *in; + mnode_t *out; + + in = (dl1node_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("Mod_LoadNodes: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*in); + out = (mnode_t *)Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->nodes = out; + loadmodel->numnodes = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { + out->minmaxs[j] = LittleShort (in->mins[j]); + out->minmaxs[3+j] = LittleShort (in->maxs[j]); + } + + p = LittleLong(in->planenum); + out->plane = loadmodel->planes + p; + + out->firstsurface = LittleLong (in->firstface); //johnfitz -- explicit cast as unsigned short + out->numsurfaces = LittleLong (in->numfaces); //johnfitz -- explicit cast as unsigned short + + for (j=0 ; j<2 ; j++) + { + //johnfitz -- hack to handle nodes > 32k, adapted from darkplaces + p = LittleLong(in->children[j]); + if (p >= 0 && p < count) + out->children[j] = loadmodel->nodes + p; + else + { + p = 0xffffffff - p; //note this uses 65535 intentionally, -1 is leaf 0 + if (p >= 0 && p < loadmodel->numleafs) + out->children[j] = (mnode_t *)(loadmodel->leafs + p); + else + { + Con_Printf("Mod_LoadNodes: invalid leaf index %i (file has only %i leafs)\n", p, loadmodel->numleafs); + out->children[j] = (mnode_t *)(loadmodel->leafs); //map it to the solid leaf + } + } + //johnfitz + } + } +} + +static void Mod_LoadNodes_L2 (lump_t *l) +{ + int i, j, count, p; + dl2node_t *in; + mnode_t *out; + + in = (dl2node_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("Mod_LoadNodes: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*in); + out = (mnode_t *)Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->nodes = out; + loadmodel->numnodes = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { + out->minmaxs[j] = LittleFloat (in->mins[j]); + out->minmaxs[3+j] = LittleFloat (in->maxs[j]); + } + + p = LittleLong(in->planenum); + out->plane = loadmodel->planes + p; + + out->firstsurface = LittleLong (in->firstface); //johnfitz -- explicit cast as unsigned short + out->numsurfaces = LittleLong (in->numfaces); //johnfitz -- explicit cast as unsigned short + + for (j=0 ; j<2 ; j++) + { + //johnfitz -- hack to handle nodes > 32k, adapted from darkplaces + p = LittleLong(in->children[j]); + if (p > 0 && p < count) + out->children[j] = loadmodel->nodes + p; + else + { + p = 0xffffffff - p; //note this uses 65535 intentionally, -1 is leaf 0 + if (p >= 0 && p < loadmodel->numleafs) + out->children[j] = (mnode_t *)(loadmodel->leafs + p); + else + { + Con_Printf("Mod_LoadNodes: invalid leaf index %i (file has only %i leafs)\n", p, loadmodel->numleafs); + out->children[j] = (mnode_t *)(loadmodel->leafs); //map it to the solid leaf + } + } + //johnfitz + } + } +} + +static void Mod_LoadNodes (lump_t *l, int bsp2) +{ + if (bsp2 == 2) + Mod_LoadNodes_L2(l); + else if (bsp2) + Mod_LoadNodes_L1(l); + else + Mod_LoadNodes_S(l); + + Mod_SetParent (loadmodel->nodes, NULL); // sets nodes and leafs +} + +static void Mod_ProcessLeafs_S (dsleaf_t *in, int filelen) +{ + mleaf_t *out; + int i, j, count, p; + + if (filelen % sizeof(*in)) + Sys_Error ("Mod_ProcessLeafs: funny lump size in %s", loadmodel->name); + count = filelen / sizeof(*in); + out = (mleaf_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + //johnfitz + if (count > 32767) + Host_Error ("Mod_LoadLeafs: %i leafs exceeds limit of 32767.", count); + //johnfitz + + loadmodel->leafs = out; + loadmodel->numleafs = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { + out->minmaxs[j] = LittleShort (in->mins[j]); + out->minmaxs[3+j] = LittleShort (in->maxs[j]); + } + + p = LittleLong(in->contents); + out->contents = p; + + out->firstmarksurface = loadmodel->marksurfaces + (unsigned short)LittleShort(in->firstmarksurface); //johnfitz -- unsigned short + out->nummarksurfaces = (unsigned short)LittleShort(in->nummarksurfaces); //johnfitz -- unsigned short + + p = LittleLong(in->visofs); + if (p == -1) + out->compressed_vis = NULL; + else + out->compressed_vis = loadmodel->visdata + p; + out->efrags = NULL; + + for (j=0 ; j<4 ; j++) + out->ambient_sound_level[j] = in->ambient_level[j]; + + //johnfitz -- removed code to mark surfaces as SURF_UNDERWATER + } +} + +static void Mod_ProcessLeafs_L1 (dl1leaf_t *in, int filelen) +{ + mleaf_t *out; + int i, j, count, p; + + if (filelen % sizeof(*in)) + Sys_Error ("Mod_ProcessLeafs: funny lump size in %s", loadmodel->name); + + count = filelen / sizeof(*in); + + out = (mleaf_t *) Hunk_AllocName (count * sizeof(*out), loadname); + + loadmodel->leafs = out; + loadmodel->numleafs = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { + out->minmaxs[j] = LittleShort (in->mins[j]); + out->minmaxs[3+j] = LittleShort (in->maxs[j]); + } + + p = LittleLong(in->contents); + out->contents = p; + + out->firstmarksurface = loadmodel->marksurfaces + LittleLong(in->firstmarksurface); //johnfitz -- unsigned short + out->nummarksurfaces = LittleLong(in->nummarksurfaces); //johnfitz -- unsigned short + + p = LittleLong(in->visofs); + if (p == -1) + out->compressed_vis = NULL; + else + out->compressed_vis = loadmodel->visdata + p; + out->efrags = NULL; + + for (j=0 ; j<4 ; j++) + out->ambient_sound_level[j] = in->ambient_level[j]; + + //johnfitz -- removed code to mark surfaces as SURF_UNDERWATER + } +} + +static void Mod_ProcessLeafs_L2 (dl2leaf_t *in, int filelen) +{ + mleaf_t *out; + int i, j, count, p; + + if (filelen % sizeof(*in)) + Sys_Error ("Mod_ProcessLeafs: funny lump size in %s", loadmodel->name); + + count = filelen / sizeof(*in); + + out = (mleaf_t *) Hunk_AllocName (count * sizeof(*out), loadname); + + loadmodel->leafs = out; + loadmodel->numleafs = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { + out->minmaxs[j] = LittleFloat (in->mins[j]); + out->minmaxs[3+j] = LittleFloat (in->maxs[j]); + } + + p = LittleLong(in->contents); + out->contents = p; + + out->firstmarksurface = loadmodel->marksurfaces + LittleLong(in->firstmarksurface); //johnfitz -- unsigned short + out->nummarksurfaces = LittleLong(in->nummarksurfaces); //johnfitz -- unsigned short + + p = LittleLong(in->visofs); + if (p == -1) + out->compressed_vis = NULL; + else + out->compressed_vis = loadmodel->visdata + p; + out->efrags = NULL; + + for (j=0 ; j<4 ; j++) + out->ambient_sound_level[j] = in->ambient_level[j]; + + //johnfitz -- removed code to mark surfaces as SURF_UNDERWATER + } +} + +/* +================= +Mod_LoadLeafs +================= +*/ +static void Mod_LoadLeafs (lump_t *l, int bsp2) +{ + void *in = (void *)(mod_base + l->fileofs); + + if (bsp2 == 2) + Mod_ProcessLeafs_L2 ((dl2leaf_t *)in, l->filelen); + else if (bsp2) + Mod_ProcessLeafs_L1 ((dl1leaf_t *)in, l->filelen); + else + Mod_ProcessLeafs_S ((dsleaf_t *) in, l->filelen); +} + +/* +================= +Mod_LoadClipnodes +================= +*/ +static void Mod_LoadClipnodes (lump_t *l, qboolean bsp2) +{ + dsclipnode_t *ins; + dlclipnode_t *inl; + + mclipnode_t *out; //johnfitz -- was dclipnode_t + int i, count; + hull_t *hull; + + if (bsp2) + { + ins = NULL; + inl = (dlclipnode_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*inl)) + Sys_Error ("Mod_LoadClipnodes: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*inl); + } + else + { + ins = (dsclipnode_t *)(mod_base + l->fileofs); + inl = NULL; + if (l->filelen % sizeof(*ins)) + Sys_Error ("Mod_LoadClipnodes: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*ins); + } + out = (mclipnode_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + //johnfitz -- warn about exceeding old limits + if (count > 32767 && !bsp2) + Con_DWarning ("%i clipnodes exceeds standard limit of 32767.\n", count); + //johnfitz + + loadmodel->clipnodes = out; + loadmodel->numclipnodes = count; + + hull = &loadmodel->hulls[1]; + hull->clipnodes = out; + hull->firstclipnode = 0; + hull->lastclipnode = count-1; + hull->planes = loadmodel->planes; + hull->clip_mins[0] = -16; + hull->clip_mins[1] = -16; + hull->clip_mins[2] = -24; + hull->clip_maxs[0] = 16; + hull->clip_maxs[1] = 16; + hull->clip_maxs[2] = 32; + + hull = &loadmodel->hulls[2]; + hull->clipnodes = out; + hull->firstclipnode = 0; + hull->lastclipnode = count-1; + hull->planes = loadmodel->planes; + hull->clip_mins[0] = -32; + hull->clip_mins[1] = -32; + hull->clip_mins[2] = -24; + hull->clip_maxs[0] = 32; + hull->clip_maxs[1] = 32; + hull->clip_maxs[2] = 64; + + if (bsp2) + { + for (i=0 ; i<count ; i++, out++, inl++) + { + out->planenum = LittleLong(inl->planenum); + + //johnfitz -- bounds check + if (out->planenum < 0 || out->planenum >= loadmodel->numplanes) + Host_Error ("Mod_LoadClipnodes: planenum out of bounds"); + //johnfitz + + out->children[0] = LittleLong(inl->children[0]); + out->children[1] = LittleLong(inl->children[1]); + //Spike: FIXME: bounds check + } + } + else + { + for (i=0 ; i<count ; i++, out++, ins++) + { + out->planenum = LittleLong(ins->planenum); + + //johnfitz -- bounds check + if (out->planenum < 0 || out->planenum >= loadmodel->numplanes) + Host_Error ("Mod_LoadClipnodes: planenum out of bounds"); + //johnfitz + + //johnfitz -- support clipnodes > 32k + out->children[0] = (unsigned short)LittleShort(ins->children[0]); + out->children[1] = (unsigned short)LittleShort(ins->children[1]); + + if (out->children[0] >= count) + out->children[0] -= 65536; + if (out->children[1] >= count) + out->children[1] -= 65536; + //johnfitz + } + } +} + +/* +================= +Mod_MakeHull0 + +Duplicate the drawing hull structure as a clipping hull +================= +*/ +static void Mod_MakeHull0 (void) +{ + mnode_t *in, *child; + mclipnode_t *out; //johnfitz -- was dclipnode_t + int i, j, count; + hull_t *hull; + + hull = &loadmodel->hulls[0]; + + in = loadmodel->nodes; + count = loadmodel->numnodes; + out = (mclipnode_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + hull->clipnodes = out; + hull->firstclipnode = 0; + hull->lastclipnode = count-1; + hull->planes = loadmodel->planes; + + for (i=0 ; i<count ; i++, out++, in++) + { + out->planenum = in->plane - loadmodel->planes; + for (j=0 ; j<2 ; j++) + { + child = in->children[j]; + if (child->contents < 0) + out->children[j] = child->contents; + else + out->children[j] = child - loadmodel->nodes; + } + } +} + +/* +================= +Mod_LoadMarksurfaces +================= +*/ +static void Mod_LoadMarksurfaces (lump_t *l, int bsp2) +{ + int i, j, count; + msurface_t **out; + if (bsp2) + { + unsigned int *in = (unsigned int *)(mod_base + l->fileofs); + + if (l->filelen % sizeof(*in)) + Host_Error ("Mod_LoadMarksurfaces: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*in); + out = (msurface_t **)Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->marksurfaces = out; + loadmodel->nummarksurfaces = count; + + for (i=0 ; i<count ; i++) + { + j = LittleLong(in[i]); + if (j >= loadmodel->numsurfaces) + Host_Error ("Mod_LoadMarksurfaces: bad surface number"); + out[i] = loadmodel->surfaces + j; + } + } + else + { + short *in = (short *)(mod_base + l->fileofs); + + if (l->filelen % sizeof(*in)) + Host_Error ("Mod_LoadMarksurfaces: funny lump size in %s",loadmodel->name); + + count = l->filelen / sizeof(*in); + out = (msurface_t **)Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->marksurfaces = out; + loadmodel->nummarksurfaces = count; + + //johnfitz -- warn mappers about exceeding old limits + if (count > 32767) + Con_DWarning ("%i marksurfaces exceeds standard limit of 32767.\n", count); + //johnfitz + + for (i=0 ; i<count ; i++) + { + j = (unsigned short)LittleShort(in[i]); //johnfitz -- explicit cast as unsigned short + if (j >= loadmodel->numsurfaces) + Sys_Error ("Mod_LoadMarksurfaces: bad surface number"); + out[i] = loadmodel->surfaces + j; + } + } +} + +/* +================= +Mod_LoadSurfedges +================= +*/ +static void Mod_LoadSurfedges (lump_t *l) +{ + int i, count; + int *in, *out; + + in = (int *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*in); + out = (int *) Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->surfedges = out; + loadmodel->numsurfedges = count; + + for (i=0 ; i<count ; i++) + out[i] = LittleLong (in[i]); +} + + +/* +================= +Mod_LoadPlanes +================= +*/ +static void Mod_LoadPlanes (lump_t *l) +{ + int i, j; + mplane_t *out; + dplane_t *in; + int count; + int bits; + + in = (dplane_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*in); + out = (mplane_t *) Hunk_AllocName ( count*2*sizeof(*out), loadname); + + loadmodel->planes = out; + loadmodel->numplanes = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + bits = 0; + for (j=0 ; j<3 ; j++) + { + out->normal[j] = LittleFloat (in->normal[j]); + if (out->normal[j] < 0) + bits |= 1<<j; + } + + out->dist = LittleFloat (in->dist); + out->type = LittleLong (in->type); + out->signbits = bits; + } +} + +/* +================= +RadiusFromBounds +================= +*/ +static float RadiusFromBounds (vec3_t mins, vec3_t maxs) +{ + int i; + vec3_t corner; + + for (i=0 ; i<3 ; i++) + { + corner[i] = fabs(mins[i]) > fabs(maxs[i]) ? fabs(mins[i]) : fabs(maxs[i]); + } + + return VectorLength (corner); +} + +/* +================= +Mod_LoadSubmodels +================= +*/ +static void Mod_LoadSubmodels (lump_t *l) +{ + dmodel_t *in; + dmodel_t *out; + int i, j, count; + + in = (dmodel_t *)(mod_base + l->fileofs); + if (l->filelen % sizeof(*in)) + Sys_Error ("MOD_LoadBmodel: funny lump size in %s",loadmodel->name); + count = l->filelen / sizeof(*in); + out = (dmodel_t *) Hunk_AllocName ( count*sizeof(*out), loadname); + + loadmodel->submodels = out; + loadmodel->numsubmodels = count; + + for (i=0 ; i<count ; i++, in++, out++) + { + for (j=0 ; j<3 ; j++) + { // spread the mins / maxs by a pixel + out->mins[j] = LittleFloat (in->mins[j]) - 1; + out->maxs[j] = LittleFloat (in->maxs[j]) + 1; + out->origin[j] = LittleFloat (in->origin[j]); + } + for (j=0 ; j<MAX_MAP_HULLS ; j++) + out->headnode[j] = LittleLong (in->headnode[j]); + out->visleafs = LittleLong (in->visleafs); + out->firstface = LittleLong (in->firstface); + out->numfaces = LittleLong (in->numfaces); + } + + // johnfitz -- check world visleafs -- adapted from bjp + out = loadmodel->submodels; + + if (out->visleafs > 8192) + Con_DWarning ("%i visleafs exceeds standard limit of 8192.\n", out->visleafs); + //johnfitz +} + +/* +================= +Mod_BoundsFromClipNode -- johnfitz + +update the model's clipmins and clipmaxs based on each node's plane. + +This works because of the way brushes are expanded in hull generation. +Each brush will include all six axial planes, which bound that brush. +Therefore, the bounding box of the hull can be constructed entirely +from axial planes found in the clipnodes for that hull. +================= +*/ +#if 0 /* disabled for now -- see in Mod_SetupSubmodels() */ +static void Mod_BoundsFromClipNode (qmodel_t *mod, int hull, int nodenum) +{ + mplane_t *plane; + mclipnode_t *node; + + if (nodenum < 0) + return; //hit a leafnode + + node = &mod->clipnodes[nodenum]; + plane = mod->hulls[hull].planes + node->planenum; + switch (plane->type) + { + + case PLANE_X: + if (plane->signbits == 1) + mod->clipmins[0] = q_min(mod->clipmins[0], -plane->dist - mod->hulls[hull].clip_mins[0]); + else + mod->clipmaxs[0] = q_max(mod->clipmaxs[0], plane->dist - mod->hulls[hull].clip_maxs[0]); + break; + case PLANE_Y: + if (plane->signbits == 2) + mod->clipmins[1] = q_min(mod->clipmins[1], -plane->dist - mod->hulls[hull].clip_mins[1]); + else + mod->clipmaxs[1] = q_max(mod->clipmaxs[1], plane->dist - mod->hulls[hull].clip_maxs[1]); + break; + case PLANE_Z: + if (plane->signbits == 4) + mod->clipmins[2] = q_min(mod->clipmins[2], -plane->dist - mod->hulls[hull].clip_mins[2]); + else + mod->clipmaxs[2] = q_max(mod->clipmaxs[2], plane->dist - mod->hulls[hull].clip_maxs[2]); + break; + default: + //skip nonaxial planes; don't need them + break; + } + + Mod_BoundsFromClipNode (mod, hull, node->children[0]); + Mod_BoundsFromClipNode (mod, hull, node->children[1]); +} +#endif /* #if 0 */ + +/* EXTERNAL VIS FILE SUPPORT: + */ +typedef struct vispatch_s +{ + char mapname[32]; + int filelen; // length of data after header (VIS+Leafs) +} vispatch_t; +#define VISPATCH_HEADER_LEN 36 + +static FILE *Mod_FindVisibilityExternal(void) +{ + vispatch_t header; + char visfilename[MAX_QPATH]; + const char* shortname; + unsigned int path_id; + FILE *f; + long pos; + size_t r; + + q_snprintf(visfilename, sizeof(visfilename), "maps/%s.vis", loadname); + if (COM_FOpenFile(visfilename, &f, &path_id) < 0) + { + Con_DPrintf("%s not found, trying ", visfilename); + q_snprintf(visfilename, sizeof(visfilename), "%s.vis", COM_SkipPath(com_gamedir)); + Con_DPrintf("%s\n", visfilename); + if (COM_FOpenFile(visfilename, &f, &path_id) < 0) + { + Con_DPrintf("external vis not found\n"); + return NULL; + } + } + if (path_id < loadmodel->path_id) + { + fclose(f); + Con_DPrintf("ignored %s from a gamedir with lower priority\n", visfilename); + return NULL; + } + + Con_DPrintf("Found external VIS %s\n", visfilename); + + shortname = COM_SkipPath(loadmodel->name); + pos = 0; + while ((r = fread(&header, 1, VISPATCH_HEADER_LEN, f)) == VISPATCH_HEADER_LEN) + { + header.filelen = LittleLong(header.filelen); + if (header.filelen <= 0) { /* bad entry -- don't trust the rest. */ + fclose(f); + return NULL; + } + if (!q_strcasecmp(header.mapname, shortname)) + break; + pos += header.filelen + VISPATCH_HEADER_LEN; + fseek(f, pos, SEEK_SET); + } + if (r != VISPATCH_HEADER_LEN) { + fclose(f); + Con_DPrintf("%s not found in %s\n", shortname, visfilename); + return NULL; + } + + return f; +} + +static byte *Mod_LoadVisibilityExternal(FILE* f) +{ + int filelen; + byte* visdata; + + filelen = 0; + if (!fread(&filelen, 4, 1, f)) return NULL; + filelen = LittleLong(filelen); + if (filelen <= 0) return NULL; + Con_DPrintf("...%d bytes visibility data\n", filelen); + visdata = (byte *) Hunk_AllocName(filelen, "EXT_VIS"); + if (!fread(visdata, filelen, 1, f)) + return NULL; + return visdata; +} + +static void Mod_LoadLeafsExternal(FILE* f) +{ + int filelen; + void* in; + + filelen = 0; + if (!fread(&filelen, 4, 1, f)) return; + filelen = LittleLong(filelen); + if (filelen <= 0) return; + Con_DPrintf("...%d bytes leaf data\n", filelen); + in = Hunk_AllocName(filelen, "EXT_LEAF"); + if (!fread(in, filelen, 1, f)) + return; + Mod_ProcessLeafs_S((dsleaf_t *)in, filelen); +} + +/* +================= +Mod_LoadBrushModel +================= +*/ +static void Mod_LoadBrushModel (qmodel_t *mod, void *buffer) +{ + int i, j; + int bsp2; + dheader_t *header; + dmodel_t *bm; + float radius; //johnfitz + + loadmodel->type = mod_brush; + + header = (dheader_t *)buffer; + + mod->bspversion = LittleLong (header->version); + + switch(mod->bspversion) + { + case BSPVERSION: + bsp2 = false; + break; +#ifdef BSP29_VALVE + case BSPVERSION_VALVE: + bsp2 = false; + break; +#endif + case BSP2VERSION_2PSB: + bsp2 = 1; //first iteration + break; + case BSP2VERSION_BSP2: + bsp2 = 2; //sanitised revision + break; + case BSPVERSION_QUAKE64: + bsp2 = false; + break; + default: + Sys_Error ("Mod_LoadBrushModel: %s has unsupported version number (%i)", mod->name, mod->bspversion); + break; + } + +// swap all the lumps + mod_base = (byte *)header; + + for (i = 0; i < (int) sizeof(dheader_t) / 4; i++) + ((int *)header)[i] = LittleLong ( ((int *)header)[i]); + +// load into heap + + Mod_LoadVertexes (&header->lumps[LUMP_VERTEXES]); + Mod_LoadEdges (&header->lumps[LUMP_EDGES], bsp2); + Mod_LoadSurfedges (&header->lumps[LUMP_SURFEDGES]); + Mod_LoadEntities (&header->lumps[LUMP_ENTITIES]); + Mod_LoadTextures (&header->lumps[LUMP_TEXTURES]); + Mod_LoadLighting (&header->lumps[LUMP_LIGHTING]); + Mod_LoadPlanes (&header->lumps[LUMP_PLANES]); + Mod_LoadTexinfo (&header->lumps[LUMP_TEXINFO]); + Mod_LoadFaces (&header->lumps[LUMP_FACES], bsp2); + Mod_LoadMarksurfaces (&header->lumps[LUMP_MARKSURFACES], bsp2); + + if (mod->bspversion == BSPVERSION && external_vis.value && sv.modelname[0] && !q_strcasecmp(loadname, sv.name)) + { + FILE* fvis; + Con_DPrintf("trying to open external vis file\n"); + fvis = Mod_FindVisibilityExternal(); + if (fvis) { + int mark = Hunk_LowMark(); + loadmodel->leafs = NULL; + loadmodel->numleafs = 0; + Con_DPrintf("found valid external .vis file for map\n"); + loadmodel->visdata = Mod_LoadVisibilityExternal(fvis); + if (loadmodel->visdata) { + Mod_LoadLeafsExternal(fvis); + } + fclose(fvis); + if (loadmodel->visdata && loadmodel->leafs && loadmodel->numleafs) { + goto visdone; + } + Hunk_FreeToLowMark(mark); + Con_DPrintf("External VIS data failed, using standard vis.\n"); + } + } + + Mod_LoadVisibility (&header->lumps[LUMP_VISIBILITY]); + Mod_LoadLeafs (&header->lumps[LUMP_LEAFS], bsp2); +visdone: + Mod_LoadNodes (&header->lumps[LUMP_NODES], bsp2); + Mod_LoadClipnodes (&header->lumps[LUMP_CLIPNODES], bsp2); + Mod_LoadSubmodels (&header->lumps[LUMP_MODELS]); + + Mod_MakeHull0 (); + + mod->numframes = 2; // regular and alternate animation + +// +// set up the submodels (FIXME: this is confusing) +// + + // johnfitz -- okay, so that i stop getting confused every time i look at this loop, here's how it works: + // we're looping through the submodels starting at 0. Submodel 0 is the main model, so we don't have to + // worry about clobbering data the first time through, since it's the same data. At the end of the loop, + // we create a new copy of the data to use the next time through. + for (i=0 ; i<mod->numsubmodels ; i++) + { + bm = &mod->submodels[i]; + + mod->hulls[0].firstclipnode = bm->headnode[0]; + for (j=1 ; j<MAX_MAP_HULLS ; j++) + { + mod->hulls[j].firstclipnode = bm->headnode[j]; + mod->hulls[j].lastclipnode = mod->numclipnodes-1; + } + + mod->firstmodelsurface = bm->firstface; + mod->nummodelsurfaces = bm->numfaces; + + VectorCopy (bm->maxs, mod->maxs); + VectorCopy (bm->mins, mod->mins); + + //johnfitz -- calculate rotate bounds and yaw bounds + radius = RadiusFromBounds (mod->mins, mod->maxs); + mod->rmaxs[0] = mod->rmaxs[1] = mod->rmaxs[2] = mod->ymaxs[0] = mod->ymaxs[1] = mod->ymaxs[2] = radius; + mod->rmins[0] = mod->rmins[1] = mod->rmins[2] = mod->ymins[0] = mod->ymins[1] = mod->ymins[2] = -radius; + //johnfitz + + //johnfitz -- correct physics cullboxes so that outlying clip brushes on doors and stuff are handled right + if (i > 0 || strcmp(mod->name, sv.modelname) != 0) //skip submodel 0 of sv.worldmodel, which is the actual world + { + // start with the hull0 bounds + VectorCopy (mod->maxs, mod->clipmaxs); + VectorCopy (mod->mins, mod->clipmins); + + // process hull1 (we don't need to process hull2 becuase there's + // no such thing as a brush that appears in hull2 but not hull1) + //Mod_BoundsFromClipNode (mod, 1, mod->hulls[1].firstclipnode); // (disabled for now becuase it fucks up on rotating models) + } + //johnfitz + + mod->numleafs = bm->visleafs; + + if (i < mod->numsubmodels-1) + { // duplicate the basic information + char name[12]; + + sprintf (name, "*%i", i+1); + loadmodel = Mod_FindName (name); + *loadmodel = *mod; + strcpy (loadmodel->name, name); + mod = loadmodel; + } + } +} + +/* +============================================================================== + +ALIAS MODELS + +============================================================================== +*/ + +aliashdr_t *pheader; + +stvert_t stverts[MAXALIASVERTS]; +mtriangle_t triangles[MAXALIASTRIS]; + +// a pose is a single set of vertexes. a frame may be +// an animating sequence of poses +trivertx_t *poseverts[MAXALIASFRAMES]; +static int posenum; + +/* +================= +Mod_LoadAliasFrame +================= +*/ +static void *Mod_LoadAliasFrame (void * pin, maliasframedesc_t *frame) +{ + trivertx_t *pinframe; + int i; + daliasframe_t *pdaliasframe; + + if (posenum >= MAXALIASFRAMES) + Sys_Error ("posenum >= MAXALIASFRAMES"); + + pdaliasframe = (daliasframe_t *)pin; + + q_strlcpy (frame->name, pdaliasframe->name, sizeof (frame->name)); + frame->firstpose = posenum; + frame->numposes = 1; + + for (i=0 ; i<3 ; i++) + { + // these are byte values, so we don't have to worry about + // endianness + frame->bboxmin.v[i] = pdaliasframe->bboxmin.v[i]; + frame->bboxmax.v[i] = pdaliasframe->bboxmax.v[i]; + } + + pinframe = (trivertx_t *)(pdaliasframe + 1); + + poseverts[posenum] = pinframe; + posenum++; + + pinframe += pheader->numverts; + + return (void *)pinframe; +} + + +/* +================= +Mod_LoadAliasGroup +================= +*/ +static void *Mod_LoadAliasGroup (void * pin, maliasframedesc_t *frame) +{ + daliasgroup_t *pingroup; + int i, numframes; + daliasinterval_t *pin_intervals; + void *ptemp; + + pingroup = (daliasgroup_t *)pin; + + numframes = LittleLong (pingroup->numframes); + + frame->firstpose = posenum; + frame->numposes = numframes; + + for (i=0 ; i<3 ; i++) + { + // these are byte values, so we don't have to worry about endianness + frame->bboxmin.v[i] = pingroup->bboxmin.v[i]; + frame->bboxmax.v[i] = pingroup->bboxmax.v[i]; + } + + pin_intervals = (daliasinterval_t *)(pingroup + 1); + + frame->interval = LittleFloat (pin_intervals->interval); + + pin_intervals += numframes; + + ptemp = (void *)pin_intervals; + + for (i=0 ; i<numframes ; i++) + { + if (posenum >= MAXALIASFRAMES) Sys_Error ("posenum >= MAXALIASFRAMES"); + + poseverts[posenum] = (trivertx_t *)((daliasframe_t *)ptemp + 1); + posenum++; + + ptemp = (trivertx_t *)((daliasframe_t *)ptemp + 1) + pheader->numverts; + } + + return ptemp; +} + +//========================================================= + + +/* +================= +Mod_FloodFillSkin + +Fill background pixels so mipmapping doesn't have haloes - Ed +================= +*/ + +typedef struct +{ + short x, y; +} floodfill_t; + +// must be a power of 2 +#define FLOODFILL_FIFO_SIZE 0x1000 +#define FLOODFILL_FIFO_MASK (FLOODFILL_FIFO_SIZE - 1) + +#define FLOODFILL_STEP( off, dx, dy ) \ +do { \ + if (pos[off] == fillcolor) \ + { \ + pos[off] = 255; \ + fifo[inpt].x = x + (dx), fifo[inpt].y = y + (dy); \ + inpt = (inpt + 1) & FLOODFILL_FIFO_MASK; \ + } \ + else if (pos[off] != 255) fdc = pos[off]; \ +} while (0) + +static void Mod_FloodFillSkin( byte *skin, int skinwidth, int skinheight ) +{ + byte fillcolor = *skin; // assume this is the pixel to fill + floodfill_t fifo[FLOODFILL_FIFO_SIZE]; + int inpt = 0, outpt = 0; + int filledcolor = -1; + int i; + + if (filledcolor == -1) + { + filledcolor = 0; + // attempt to find opaque black + for (i = 0; i < 256; ++i) + { + if (d_8to24table[i] == (255 << 0)) // alpha 1.0 + { + filledcolor = i; + break; + } + } + } + + // can't fill to filled color or to transparent color (used as visited marker) + if ((fillcolor == filledcolor) || (fillcolor == 255)) + { + //printf( "not filling skin from %d to %d\n", fillcolor, filledcolor ); + return; + } + + fifo[inpt].x = 0, fifo[inpt].y = 0; + inpt = (inpt + 1) & FLOODFILL_FIFO_MASK; + + while (outpt != inpt) + { + int x = fifo[outpt].x, y = fifo[outpt].y; + int fdc = filledcolor; + byte *pos = &skin[x + skinwidth * y]; + + outpt = (outpt + 1) & FLOODFILL_FIFO_MASK; + + if (x > 0) FLOODFILL_STEP( -1, -1, 0 ); + if (x < skinwidth - 1) FLOODFILL_STEP( 1, 1, 0 ); + if (y > 0) FLOODFILL_STEP( -skinwidth, 0, -1 ); + if (y < skinheight - 1) FLOODFILL_STEP( skinwidth, 0, 1 ); + skin[x + skinwidth * y] = fdc; + } +} + +/* +=============== +Mod_LoadAllSkins +=============== +*/ +static void *Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype) +{ + int i, j, k, size, groupskins; + char name[MAX_QPATH]; + byte *skin, *texels; + daliasskingroup_t *pinskingroup; + daliasskininterval_t *pinskinintervals; + char fbr_mask_name[MAX_QPATH]; //johnfitz -- added for fullbright support + src_offset_t offset; //johnfitz + unsigned int texflags = TEXPREF_PAD; + + skin = (byte *)(pskintype + 1); + + if (numskins < 1 || numskins > MAX_SKINS) + Sys_Error ("Mod_LoadAliasModel: Invalid # of skins: %d", numskins); + + size = pheader->skinwidth * pheader->skinheight; + + if (loadmodel->flags & MF_HOLEY) + texflags |= TEXPREF_ALPHA; + + for (i=0 ; i<numskins ; i++) + { + if (pskintype->type == ALIAS_SKIN_SINGLE) + { + Mod_FloodFillSkin( skin, pheader->skinwidth, pheader->skinheight ); + + // save 8 bit texels for the player model to remap + texels = (byte *) Hunk_AllocName(size, loadname); + pheader->texels[i] = texels - (byte *)pheader; + memcpy (texels, (byte *)(pskintype + 1), size); + + //johnfitz -- rewritten + q_snprintf (name, sizeof(name), "%s:frame%i", loadmodel->name, i); + offset = (src_offset_t)(pskintype+1) - (src_offset_t)mod_base; + if (Mod_CheckFullbrights ((byte *)(pskintype+1), size)) + { + pheader->gltextures[i][0] = TexMgr_LoadImage (loadmodel, name, pheader->skinwidth, pheader->skinheight, + SRC_INDEXED, (byte *)(pskintype+1), loadmodel->name, offset, texflags | TEXPREF_NOBRIGHT); + q_snprintf (fbr_mask_name, sizeof(fbr_mask_name), "%s:frame%i_glow", loadmodel->name, i); + pheader->fbtextures[i][0] = TexMgr_LoadImage (loadmodel, fbr_mask_name, pheader->skinwidth, pheader->skinheight, + SRC_INDEXED, (byte *)(pskintype+1), loadmodel->name, offset, texflags | TEXPREF_FULLBRIGHT); + } + else + { + pheader->gltextures[i][0] = TexMgr_LoadImage (loadmodel, name, pheader->skinwidth, pheader->skinheight, + SRC_INDEXED, (byte *)(pskintype+1), loadmodel->name, offset, texflags); + pheader->fbtextures[i][0] = NULL; + } + + pheader->gltextures[i][3] = pheader->gltextures[i][2] = pheader->gltextures[i][1] = pheader->gltextures[i][0]; + pheader->fbtextures[i][3] = pheader->fbtextures[i][2] = pheader->fbtextures[i][1] = pheader->fbtextures[i][0]; + //johnfitz + + pskintype = (daliasskintype_t *)((byte *)(pskintype+1) + size); + } + else + { + // animating skin group. yuck. + pskintype++; + pinskingroup = (daliasskingroup_t *)pskintype; + groupskins = LittleLong (pinskingroup->numskins); + pinskinintervals = (daliasskininterval_t *)(pinskingroup + 1); + + pskintype = (daliasskintype_t *)(pinskinintervals + groupskins); + + for (j=0 ; j<groupskins ; j++) + { + Mod_FloodFillSkin( skin, pheader->skinwidth, pheader->skinheight ); + if (j == 0) { + texels = (byte *) Hunk_AllocName(size, loadname); + pheader->texels[i] = texels - (byte *)pheader; + memcpy (texels, (byte *)(pskintype), size); + } + + //johnfitz -- rewritten + q_snprintf (name, sizeof(name), "%s:frame%i_%i", loadmodel->name, i,j); + offset = (src_offset_t)(pskintype) - (src_offset_t)mod_base; //johnfitz + if (Mod_CheckFullbrights ((byte *)(pskintype), size)) + { + pheader->gltextures[i][j&3] = TexMgr_LoadImage (loadmodel, name, pheader->skinwidth, pheader->skinheight, + SRC_INDEXED, (byte *)(pskintype), loadmodel->name, offset, texflags | TEXPREF_NOBRIGHT); + q_snprintf (fbr_mask_name, sizeof(fbr_mask_name), "%s:frame%i_%i_glow", loadmodel->name, i,j); + pheader->fbtextures[i][j&3] = TexMgr_LoadImage (loadmodel, fbr_mask_name, pheader->skinwidth, pheader->skinheight, + SRC_INDEXED, (byte *)(pskintype), loadmodel->name, offset, texflags | TEXPREF_FULLBRIGHT); + } + else + { + pheader->gltextures[i][j&3] = TexMgr_LoadImage (loadmodel, name, pheader->skinwidth, pheader->skinheight, + SRC_INDEXED, (byte *)(pskintype), loadmodel->name, offset, texflags); + pheader->fbtextures[i][j&3] = NULL; + } + //johnfitz + + pskintype = (daliasskintype_t *)((byte *)(pskintype) + size); + } + k = j; + for (/**/; j < 4; j++) + pheader->gltextures[i][j&3] = pheader->gltextures[i][j - k]; + } + } + + return (void *)pskintype; +} + +//========================================================================= + +/* +================= +Mod_CalcAliasBounds -- johnfitz -- calculate bounds of alias model for nonrotated, yawrotated, and fullrotated cases +================= +*/ +static void Mod_CalcAliasBounds (aliashdr_t *a) +{ + int i,j,k; + float dist, yawradius, radius; + vec3_t v; + + //clear out all data + for (i=0; i<3;i++) + { + loadmodel->mins[i] = loadmodel->ymins[i] = loadmodel->rmins[i] = FLT_MAX; + loadmodel->maxs[i] = loadmodel->ymaxs[i] = loadmodel->rmaxs[i] = -FLT_MAX; + radius = yawradius = 0; + } + + //process verts + for (i=0 ; i<a->numposes; i++) + for (j=0; j<a->numverts; j++) + { + for (k=0; k<3;k++) + v[k] = poseverts[i][j].v[k] * pheader->scale[k] + pheader->scale_origin[k]; + + for (k=0; k<3;k++) + { + loadmodel->mins[k] = q_min(loadmodel->mins[k], v[k]); + loadmodel->maxs[k] = q_max(loadmodel->maxs[k], v[k]); + } + dist = v[0] * v[0] + v[1] * v[1]; + if (yawradius < dist) + yawradius = dist; + dist += v[2] * v[2]; + if (radius < dist) + radius = dist; + } + + //rbounds will be used when entity has nonzero pitch or roll + radius = sqrt(radius); + loadmodel->rmins[0] = loadmodel->rmins[1] = loadmodel->rmins[2] = -radius; + loadmodel->rmaxs[0] = loadmodel->rmaxs[1] = loadmodel->rmaxs[2] = radius; + + //ybounds will be used when entity has nonzero yaw + yawradius = sqrt(yawradius); + loadmodel->ymins[0] = loadmodel->ymins[1] = -yawradius; + loadmodel->ymaxs[0] = loadmodel->ymaxs[1] = yawradius; + loadmodel->ymins[2] = loadmodel->mins[2]; + loadmodel->ymaxs[2] = loadmodel->maxs[2]; +} + +static qboolean +nameInList(const char *list, const char *name) +{ + const char *s; + char tmp[MAX_QPATH]; + int i; + + s = list; + + while (*s) + { + // make a copy until the next comma or end of string + i = 0; + while (*s && *s != ',') + { + if (i < MAX_QPATH - 1) + tmp[i++] = *s; + s++; + } + tmp[i] = '\0'; + //compare it to the model name + if (!strcmp(name, tmp)) + { + return true; + } + //search forwards to the next comma or end of string + while (*s && *s == ',') + s++; + } + return false; +} + +/* +================= +Mod_SetExtraFlags -- johnfitz -- set up extra flags that aren't in the mdl +================= +*/ +void Mod_SetExtraFlags (qmodel_t *mod) +{ + extern cvar_t r_nolerp_list, r_noshadow_list; + + if (!mod || mod->type != mod_alias) + return; + + mod->flags &= (0xFF | MF_HOLEY); //only preserve first byte, plus MF_HOLEY + + // nolerp flag + if (nameInList(r_nolerp_list.string, mod->name)) + mod->flags |= MOD_NOLERP; + + // noshadow flag + if (nameInList(r_noshadow_list.string, mod->name)) + mod->flags |= MOD_NOSHADOW; + + // fullbright hack (TODO: make this a cvar list) + if (!strcmp (mod->name, "progs/flame2.mdl") || + !strcmp (mod->name, "progs/flame.mdl") || + !strcmp (mod->name, "progs/boss.mdl")) + { + mod->flags |= MOD_FBRIGHTHACK; + } +} + +/* +================= +Mod_LoadAliasModel +================= +*/ +static void Mod_LoadAliasModel (qmodel_t *mod, void *buffer) +{ + int i, j; + mdl_t *pinmodel; + stvert_t *pinstverts; + dtriangle_t *pintriangles; + int version, numframes; + int size; + daliasframetype_t *pframetype; + daliasskintype_t *pskintype; + int start, end, total; + + start = Hunk_LowMark (); + + pinmodel = (mdl_t *)buffer; + mod_base = (byte *)buffer; //johnfitz + + version = LittleLong (pinmodel->version); + if (version != ALIAS_VERSION) + Sys_Error ("%s has wrong version number (%i should be %i)", + mod->name, version, ALIAS_VERSION); + +// +// allocate space for a working header, plus all the data except the frames, +// skin and group info +// + size = sizeof(aliashdr_t) + + (LittleLong (pinmodel->numframes) - 1) * sizeof (pheader->frames[0]); + pheader = (aliashdr_t *) Hunk_AllocName (size, loadname); + + mod->flags = LittleLong (pinmodel->flags); + +// +// endian-adjust and copy the data, starting with the alias model header +// + pheader->boundingradius = LittleFloat (pinmodel->boundingradius); + pheader->numskins = LittleLong (pinmodel->numskins); + pheader->skinwidth = LittleLong (pinmodel->skinwidth); + pheader->skinheight = LittleLong (pinmodel->skinheight); + + if (pheader->skinheight > MAX_LBM_HEIGHT) + Con_DWarning ("model %s has a skin taller than %d", mod->name, + MAX_LBM_HEIGHT); + + pheader->numverts = LittleLong (pinmodel->numverts); + + if (pheader->numverts <= 0) + Sys_Error ("model %s has no vertices", mod->name); + + if (pheader->numverts > MAXALIASVERTS) + Sys_Error ("model %s has too many vertices (%d; max = %d)", mod->name, pheader->numverts, MAXALIASVERTS); + + pheader->numtris = LittleLong (pinmodel->numtris); + + if (pheader->numtris <= 0) + Sys_Error ("model %s has no triangles", mod->name); + + if (pheader->numtris > MAXALIASTRIS) + Sys_Error ("model %s has too many triangles (%d; max = %d)", mod->name, pheader->numtris, MAXALIASTRIS); + + pheader->numframes = LittleLong (pinmodel->numframes); + numframes = pheader->numframes; + if (numframes < 1) + Sys_Error ("Mod_LoadAliasModel: Invalid # of frames: %d", numframes); + + pheader->size = LittleFloat (pinmodel->size) * ALIAS_BASE_SIZE_RATIO; + mod->synctype = (synctype_t) LittleLong (pinmodel->synctype); + mod->numframes = pheader->numframes; + + for (i=0 ; i<3 ; i++) + { + pheader->scale[i] = LittleFloat (pinmodel->scale[i]); + pheader->scale_origin[i] = LittleFloat (pinmodel->scale_origin[i]); + pheader->eyeposition[i] = LittleFloat (pinmodel->eyeposition[i]); + } + +// +// load the skins +// + pskintype = (daliasskintype_t *)&pinmodel[1]; + pskintype = (daliasskintype_t *) Mod_LoadAllSkins (pheader->numskins, pskintype); + +// +// load base s and t vertices +// + pinstverts = (stvert_t *)pskintype; + + for (i=0 ; i<pheader->numverts ; i++) + { + stverts[i].onseam = LittleLong (pinstverts[i].onseam); + stverts[i].s = LittleLong (pinstverts[i].s); + stverts[i].t = LittleLong (pinstverts[i].t); + } + +// +// load triangle lists +// + pintriangles = (dtriangle_t *)&pinstverts[pheader->numverts]; + + for (i=0 ; i<pheader->numtris ; i++) + { + triangles[i].facesfront = LittleLong (pintriangles[i].facesfront); + + for (j=0 ; j<3 ; j++) + { + triangles[i].vertindex[j] = + LittleLong (pintriangles[i].vertindex[j]); + } + } + +// +// load the frames +// + posenum = 0; + pframetype = (daliasframetype_t *)&pintriangles[pheader->numtris]; + + for (i=0 ; i<numframes ; i++) + { + aliasframetype_t frametype; + frametype = (aliasframetype_t) LittleLong (pframetype->type); + if (frametype == ALIAS_SINGLE) + pframetype = (daliasframetype_t *) Mod_LoadAliasFrame (pframetype + 1, &pheader->frames[i]); + else + pframetype = (daliasframetype_t *) Mod_LoadAliasGroup (pframetype + 1, &pheader->frames[i]); + } + + pheader->numposes = posenum; + + mod->type = mod_alias; + + Mod_SetExtraFlags (mod); //johnfitz + + Mod_CalcAliasBounds (pheader); //johnfitz + + // + // build the draw lists + // + GL_MakeAliasModelDisplayLists (mod, pheader); + +// +// move the complete, relocatable alias model to the cache +// + end = Hunk_LowMark (); + total = end - start; + + Cache_Alloc (&mod->cache, total, loadname); + if (!mod->cache.data) + return; + memcpy (mod->cache.data, pheader, total); + + Hunk_FreeToLowMark (start); +} + +//============================================================================= + +/* +================= +Mod_LoadSpriteFrame +================= +*/ +static void *Mod_LoadSpriteFrame (void * pin, mspriteframe_t **ppframe, int framenum) +{ + dspriteframe_t *pinframe; + mspriteframe_t *pspriteframe; + int width, height, size, origin[2]; + char name[64]; + src_offset_t offset; //johnfitz + + pinframe = (dspriteframe_t *)pin; + + width = LittleLong (pinframe->width); + height = LittleLong (pinframe->height); + size = width * height; + + pspriteframe = (mspriteframe_t *) Hunk_AllocName (sizeof (mspriteframe_t),loadname); + *ppframe = pspriteframe; + + pspriteframe->width = width; + pspriteframe->height = height; + origin[0] = LittleLong (pinframe->origin[0]); + origin[1] = LittleLong (pinframe->origin[1]); + + pspriteframe->up = origin[1]; + pspriteframe->down = origin[1] - height; + pspriteframe->left = origin[0]; + pspriteframe->right = width + origin[0]; + + //johnfitz -- image might be padded + pspriteframe->smax = (float)width/(float)TexMgr_PadConditional(width); + pspriteframe->tmax = (float)height/(float)TexMgr_PadConditional(height); + //johnfitz + + q_snprintf (name, sizeof(name), "%s:frame%i", loadmodel->name, framenum); + offset = (src_offset_t)(pinframe+1) - (src_offset_t)mod_base; //johnfitz + pspriteframe->gltexture = + TexMgr_LoadImage (loadmodel, name, width, height, SRC_INDEXED, + (byte *)(pinframe + 1), loadmodel->name, offset, + TEXPREF_PAD | TEXPREF_ALPHA | TEXPREF_NOPICMIP); //johnfitz -- TexMgr + + return (void *)((byte *)pinframe + sizeof (dspriteframe_t) + size); +} + + +/* +================= +Mod_LoadSpriteGroup +================= +*/ +static void *Mod_LoadSpriteGroup (void * pin, mspriteframe_t **ppframe, int framenum, spriteframetype_t type) +{ + dspritegroup_t *pingroup; + mspritegroup_t *pspritegroup; + int i, numframes; + dspriteinterval_t *pin_intervals; + float *poutintervals; + void *ptemp; + + pingroup = (dspritegroup_t *)pin; + + numframes = LittleLong (pingroup->numframes); + if (type == SPR_ANGLED && numframes != 8) + Sys_Error ("Mod_LoadSpriteGroup: Bad # of frames: %d", numframes); + + pspritegroup = (mspritegroup_t *) Hunk_AllocName (sizeof (mspritegroup_t) + + (numframes - 1) * sizeof (pspritegroup->frames[0]), loadname); + + pspritegroup->numframes = numframes; + + *ppframe = (mspriteframe_t *)pspritegroup; + + pin_intervals = (dspriteinterval_t *)(pingroup + 1); + + poutintervals = (float *) Hunk_AllocName (numframes * sizeof (float), loadname); + + pspritegroup->intervals = poutintervals; + + for (i=0 ; i<numframes ; i++) + { + *poutintervals = LittleFloat (pin_intervals->interval); + if (*poutintervals <= 0.0) + Sys_Error ("Mod_LoadSpriteGroup: interval<=0"); + + poutintervals++; + pin_intervals++; + } + + ptemp = (void *)pin_intervals; + + for (i=0 ; i<numframes ; i++) + { + ptemp = Mod_LoadSpriteFrame (ptemp, &pspritegroup->frames[i], framenum * 100 + i); + } + + return ptemp; +} + + +/* +================= +Mod_LoadSpriteModel +================= +*/ +static void Mod_LoadSpriteModel (qmodel_t *mod, void *buffer) +{ + int i; + int version; + dsprite_t *pin; + msprite_t *psprite; + int numframes; + int size; + dspriteframetype_t *pframetype; + + pin = (dsprite_t *)buffer; + mod_base = (byte *)buffer; //johnfitz + + version = LittleLong (pin->version); + if (version != SPRITE_VERSION) + Sys_Error ("%s has wrong version number " + "(%i should be %i)", mod->name, version, SPRITE_VERSION); + + numframes = LittleLong (pin->numframes); + + size = sizeof (msprite_t) + (numframes - 1) * sizeof (psprite->frames); + + psprite = (msprite_t *) Hunk_AllocName (size, loadname); + + mod->cache.data = psprite; + + psprite->type = LittleLong (pin->type); + psprite->maxwidth = LittleLong (pin->width); + psprite->maxheight = LittleLong (pin->height); + psprite->beamlength = LittleFloat (pin->beamlength); + mod->synctype = (synctype_t) LittleLong (pin->synctype); + psprite->numframes = numframes; + + mod->mins[0] = mod->mins[1] = -psprite->maxwidth/2; + mod->maxs[0] = mod->maxs[1] = psprite->maxwidth/2; + mod->mins[2] = -psprite->maxheight/2; + mod->maxs[2] = psprite->maxheight/2; + +// +// load the frames +// + if (numframes < 1) + Sys_Error ("Mod_LoadSpriteModel: Invalid # of frames: %d", numframes); + + mod->numframes = numframes; + + pframetype = (dspriteframetype_t *)(pin + 1); + + for (i=0 ; i<numframes ; i++) + { + spriteframetype_t frametype; + + frametype = (spriteframetype_t) LittleLong (pframetype->type); + psprite->frames[i].type = frametype; + + if (frametype == SPR_SINGLE) + { + pframetype = (dspriteframetype_t *) + Mod_LoadSpriteFrame (pframetype + 1, &psprite->frames[i].frameptr, i); + } + else + { + pframetype = (dspriteframetype_t *) + Mod_LoadSpriteGroup (pframetype + 1, &psprite->frames[i].frameptr, i, frametype); + } + } + + mod->type = mod_sprite; +} + +//============================================================================= + +/* +================ +Mod_Print +================ +*/ +static void Mod_Print (void) +{ + int i; + qmodel_t *mod; + + Con_SafePrintf ("Cached models:\n"); //johnfitz -- safeprint instead of print + for (i=0, mod=mod_known ; i < mod_numknown ; i++, mod++) + { + Con_SafePrintf ("%8p : %s\n", mod->cache.data, mod->name); //johnfitz -- safeprint instead of print + } + Con_Printf ("%i models\n",mod_numknown); //johnfitz -- print the total too +} + diff --git a/Quake/gl_model.h b/Quake/gl_model.h new file mode 100644 index 0000000..1c001ec --- /dev/null +++ b/Quake/gl_model.h @@ -0,0 +1,520 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef GL_MODEL_H +#define GL_MODEL_H + +#include "modelgen.h" +#include "spritegn.h" + +/* + +d*_t structures are on-disk representations +m*_t structures are in-memory + +*/ + +// entity effects + +#define EF_BRIGHTFIELD 1 +#define EF_MUZZLEFLASH 2 +#define EF_BRIGHTLIGHT 4 +#define EF_DIMLIGHT 8 +#define EF_QEX_QUADLIGHT 16 // 2021 rerelease +#define EF_QEX_PENTALIGHT 32 // 2021 rerelease +#define EF_QEX_CANDLELIGHT 64 // 2021 rerelease + + +/* +============================================================================== + +BRUSH MODELS + +============================================================================== +*/ + + +// +// in memory representation +// +// !!! if this is changed, it must be changed in asm_draw.h too !!! +typedef struct +{ + vec3_t position; +} mvertex_t; + +#define SIDE_FRONT 0 +#define SIDE_BACK 1 +#define SIDE_ON 2 + + +// plane_t structure +// !!! if this is changed, it must be changed in asm_i386.h too !!! +typedef struct mplane_s +{ + vec3_t normal; + float dist; + byte type; // for texture axis selection and fast side tests + byte signbits; // signx + signy<<1 + signz<<1 + byte pad[2]; +} mplane_t; + +// ericw -- each texture has two chains, so we can clear the model chains +// without affecting the world +typedef enum { + chain_world = 0, + chain_model = 1 +} texchain_t; + +typedef struct texture_s +{ + char name[16]; + unsigned width, height; + unsigned shift; // Q64 + struct gltexture_s *gltexture; //johnfitz -- pointer to gltexture + struct gltexture_s *fullbright; //johnfitz -- fullbright mask texture + struct gltexture_s *warpimage; //johnfitz -- for water animation + qboolean update_warp; //johnfitz -- update warp this frame + struct msurface_s *texturechains[2]; // for texture chains + int anim_total; // total tenths in sequence ( 0 = no) + int anim_min, anim_max; // time for this frame min <=time< max + struct texture_s *anim_next; // in the animation sequence + struct texture_s *alternate_anims; // bmodels in frmae 1 use these +} texture_t; + + +#define SURF_PLANEBACK 2 +#define SURF_DRAWSKY 4 +#define SURF_DRAWSPRITE 8 +#define SURF_DRAWTURB 0x10 +#define SURF_DRAWTILED 0x20 +#define SURF_DRAWBACKGROUND 0x40 +#define SURF_UNDERWATER 0x80 +#define SURF_NOTEXTURE 0x100 //johnfitz +#define SURF_DRAWFENCE 0x200 +#define SURF_DRAWLAVA 0x400 +#define SURF_DRAWSLIME 0x800 +#define SURF_DRAWTELE 0x1000 +#define SURF_DRAWWATER 0x2000 + +// !!! if this is changed, it must be changed in asm_draw.h too !!! +typedef struct +{ + unsigned int v[2]; + unsigned int cachededgeoffset; +} medge_t; + +typedef struct +{ + float vecs[2][4]; + texture_t *texture; + int flags; +} mtexinfo_t; + +#define VERTEXSIZE 7 + +typedef struct glpoly_s +{ + struct glpoly_s *next; + struct glpoly_s *chain; + int numverts; + float verts[4][VERTEXSIZE]; // variable sized (xyz s1t1 s2t2) +} glpoly_t; + +typedef struct msurface_s +{ + int visframe; // should be drawn when node is crossed + float mins[3]; // johnfitz -- for frustum culling + float maxs[3]; // johnfitz -- for frustum culling + + mplane_t *plane; + int flags; + + int firstedge; // look up in model->surfedges[], negative numbers + int numedges; // are backwards edges + + short texturemins[2]; + short extents[2]; + + int light_s, light_t; // gl lightmap coordinates + + glpoly_t *polys; // multiple if warped + struct msurface_s *texturechain; + + mtexinfo_t *texinfo; + + int vbo_firstvert; // index of this surface's first vert in the VBO + +// lighting info + int dlightframe; + unsigned int dlightbits[(MAX_DLIGHTS + 31) >> 5]; + // int is 32 bits, need an array for MAX_DLIGHTS > 32 + + int lightmaptexturenum; + byte styles[MAXLIGHTMAPS]; + int cached_light[MAXLIGHTMAPS]; // values currently used in lightmap + qboolean cached_dlight; // true if dynamic light in cache + byte *samples; // [numstyles*surfsize] +} msurface_t; + +typedef struct mnode_s +{ +// common with leaf + int contents; // 0, to differentiate from leafs + int visframe; // node needs to be traversed if current + + float minmaxs[6]; // for bounding box culling + + struct mnode_s *parent; + +// node specific + mplane_t *plane; + struct mnode_s *children[2]; + + unsigned int firstsurface; + unsigned int numsurfaces; +} mnode_t; + + + +typedef struct mleaf_s +{ +// common with node + int contents; // wil be a negative contents number + int visframe; // node needs to be traversed if current + + float minmaxs[6]; // for bounding box culling + + struct mnode_s *parent; + +// leaf specific + byte *compressed_vis; + efrag_t *efrags; + + msurface_t **firstmarksurface; + int nummarksurfaces; + int key; // BSP sequence number for leaf's contents + byte ambient_sound_level[NUM_AMBIENTS]; +} mleaf_t; + +//johnfitz -- for clipnodes>32k +typedef struct mclipnode_s +{ + int planenum; + int children[2]; // negative numbers are contents +} mclipnode_t; +//johnfitz + +// !!! if this is changed, it must be changed in asm_i386.h too !!! +typedef struct +{ + mclipnode_t *clipnodes; //johnfitz -- was dclipnode_t + mplane_t *planes; + int firstclipnode; + int lastclipnode; + vec3_t clip_mins; + vec3_t clip_maxs; +} hull_t; + +/* +============================================================================== + +SPRITE MODELS + +============================================================================== +*/ + + +// FIXME: shorten these? +typedef struct mspriteframe_s +{ + int width, height; + float up, down, left, right; + float smax, tmax; //johnfitz -- image might be padded + struct gltexture_s *gltexture; +} mspriteframe_t; + +typedef struct +{ + int numframes; + float *intervals; + mspriteframe_t *frames[1]; +} mspritegroup_t; + +typedef struct +{ + spriteframetype_t type; + mspriteframe_t *frameptr; +} mspriteframedesc_t; + +typedef struct +{ + int type; + int maxwidth; + int maxheight; + int numframes; + float beamlength; // remove? + void *cachespot; // remove? + mspriteframedesc_t frames[1]; +} msprite_t; + + +/* +============================================================================== + +ALIAS MODELS + +Alias models are position independent, so the cache manager can move them. +============================================================================== +*/ + +//-- from RMQEngine +// split out to keep vertex sizes down +typedef struct aliasmesh_s +{ + float st[2]; + unsigned short vertindex; +} aliasmesh_t; + +typedef struct meshxyz_s +{ + byte xyz[4]; + signed char normal[4]; +} meshxyz_t; + +typedef struct meshst_s +{ + float st[2]; +} meshst_t; +//-- + +typedef struct +{ + int firstpose; + int numposes; + float interval; + trivertx_t bboxmin; + trivertx_t bboxmax; + int frame; + char name[16]; +} maliasframedesc_t; + +typedef struct +{ + trivertx_t bboxmin; + trivertx_t bboxmax; + int frame; +} maliasgroupframedesc_t; + +typedef struct +{ + int numframes; + int intervals; + maliasgroupframedesc_t frames[1]; +} maliasgroup_t; + +// !!! if this is changed, it must be changed in asm_draw.h too !!! +typedef struct mtriangle_s { + int facesfront; + int vertindex[3]; +} mtriangle_t; + + +#define MAX_SKINS 32 +typedef struct { + int ident; + int version; + vec3_t scale; + vec3_t scale_origin; + float boundingradius; + vec3_t eyeposition; + int numskins; + int skinwidth; + int skinheight; + int numverts; + int numtris; + int numframes; + synctype_t synctype; + int flags; + float size; + + //ericw -- used to populate vbo + int numverts_vbo; // number of verts with unique x,y,z,s,t + intptr_t meshdesc; // offset into extradata: numverts_vbo aliasmesh_t + int numindexes; + intptr_t indexes; // offset into extradata: numindexes unsigned shorts + intptr_t vertexes; // offset into extradata: numposes*vertsperframe trivertx_t + //ericw -- + + int numposes; + int poseverts; + int posedata; // numposes*poseverts trivert_t + int commands; // gl command list with embedded s/t + struct gltexture_s *gltextures[MAX_SKINS][4]; //johnfitz + struct gltexture_s *fbtextures[MAX_SKINS][4]; //johnfitz + int texels[MAX_SKINS]; // only for player skins + maliasframedesc_t frames[1]; // variable sized +} aliashdr_t; + +#define MAXALIASVERTS 2000 //johnfitz -- was 1024 +#define MAXALIASFRAMES 1024 //spike -- was 256 +#define MAXALIASTRIS 4096 //ericw -- was 2048 +extern aliashdr_t *pheader; +extern stvert_t stverts[MAXALIASVERTS]; +extern mtriangle_t triangles[MAXALIASTRIS]; +extern trivertx_t *poseverts[MAXALIASFRAMES]; + +//=================================================================== + +// +// Whole model +// + +typedef enum {mod_brush, mod_sprite, mod_alias} modtype_t; + +#define EF_ROCKET 1 // leave a trail +#define EF_GRENADE 2 // leave a trail +#define EF_GIB 4 // leave a trail +#define EF_ROTATE 8 // rotate (bonus items) +#define EF_TRACER 16 // green split trail +#define EF_ZOMGIB 32 // small blood trail +#define EF_TRACER2 64 // orange split trail + rotate +#define EF_TRACER3 128 // purple trail +#define MF_HOLEY (1u<<14) // MarkV/QSS -- make index 255 transparent on mdl's + +//johnfitz -- extra flags for rendering +#define MOD_NOLERP 256 //don't lerp when animating +#define MOD_NOSHADOW 512 //don't cast a shadow +#define MOD_FBRIGHTHACK 1024 //when fullbrights are disabled, use a hack to render this model brighter +//johnfitz + +typedef struct qmodel_s +{ + char name[MAX_QPATH]; + unsigned int path_id; // path id of the game directory + // that this model came from + qboolean needload; // bmodels and sprites don't cache normally + + modtype_t type; + int numframes; + synctype_t synctype; + + int flags; + +// +// volume occupied by the model graphics +// + vec3_t mins, maxs; + vec3_t ymins, ymaxs; //johnfitz -- bounds for entities with nonzero yaw + vec3_t rmins, rmaxs; //johnfitz -- bounds for entities with nonzero pitch or roll + //johnfitz -- removed float radius; + +// +// solid volume for clipping +// + qboolean clipbox; + vec3_t clipmins, clipmaxs; + +// +// brush model +// + int firstmodelsurface, nummodelsurfaces; + + int numsubmodels; + dmodel_t *submodels; + + int numplanes; + mplane_t *planes; + + int numleafs; // number of visible leafs, not counting 0 + mleaf_t *leafs; + + int numvertexes; + mvertex_t *vertexes; + + int numedges; + medge_t *edges; + + int numnodes; + mnode_t *nodes; + + int numtexinfo; + mtexinfo_t *texinfo; + + int numsurfaces; + msurface_t *surfaces; + + int numsurfedges; + int *surfedges; + + int numclipnodes; + mclipnode_t *clipnodes; //johnfitz -- was dclipnode_t + + int nummarksurfaces; + msurface_t **marksurfaces; + + hull_t hulls[MAX_MAP_HULLS]; + + int numtextures; + texture_t **textures; + + byte *visdata; + byte *lightdata; + char *entities; + + qboolean viswarn; // for Mod_DecompressVis() + + int bspversion; + qboolean haslitwater; +// +// alias model +// + + GLuint meshvbo; + GLuint meshindexesvbo; + int vboindexofs; // offset in vbo of the hdr->numindexes unsigned shorts + int vboxyzofs; // offset in vbo of hdr->numposes*hdr->numverts_vbo meshxyz_t + int vbostofs; // offset in vbo of hdr->numverts_vbo meshst_t + +// +// additional model data +// + cache_user_t cache; // only access through Mod_Extradata + +} qmodel_t; + +//============================================================================ + +void Mod_Init (void); +void Mod_ClearAll (void); +void Mod_ResetAll (void); // for gamedir changes (Host_Game_f) +qmodel_t *Mod_ForName (const char *name, qboolean crash); +void *Mod_Extradata (qmodel_t *mod); // handles caching +void Mod_TouchModel (const char *name); + +mleaf_t *Mod_PointInLeaf (vec3_t p, qmodel_t *model); +byte *Mod_LeafPVS (mleaf_t *leaf, qmodel_t *model); +byte *Mod_NoVisPVS (qmodel_t *model); + +void Mod_SetExtraFlags (qmodel_t *mod); + +#endif /* GL_MODEL_H */ diff --git a/Quake/gl_refrag.c b/Quake/gl_refrag.c new file mode 100644 index 0000000..ed54489 --- /dev/null +++ b/Quake/gl_refrag.c @@ -0,0 +1,221 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// r_efrag.c + +#include "quakedef.h" + +static mnode_t *r_pefragtopnode; + + +/* +=============================================================================== + + ENTITY FRAGMENT FUNCTIONS + +ericw -- GLQuake only uses efrags for static entities, and they're never +removed, so I trimmed out unused functionality and fields in efrag_t. + +Now, efrags are just a linked list for each leaf of the static +entities that touch that leaf. The efrags are hunk-allocated so there is no +fixed limit. + +This is inspired by MH's tutorial, and code from RMQEngine. +http://forums.insideqc.com/viewtopic.php?t=1930 + +=============================================================================== +*/ + +static vec3_t r_emins, r_emaxs; + +static entity_t *r_addent; + + +#define EXTRA_EFRAGS 128 + +// based on RMQEngine +static efrag_t *R_GetEfrag (void) +{ + // we could just Hunk_Alloc a single efrag_t and return it, but since + // the struct is so small (2 pointers) allocate groups of them + // to avoid wasting too much space on the hunk allocation headers. + if (cl.free_efrags) + { + efrag_t *ef = cl.free_efrags; + cl.free_efrags = ef->leafnext; + ef->leafnext = NULL; + + cl.num_efrags++; + + return ef; + } + else + { + int i; + + cl.free_efrags = (efrag_t *) Hunk_AllocName (EXTRA_EFRAGS * sizeof (efrag_t), "efrags"); + + for (i = 0; i < EXTRA_EFRAGS - 1; i++) + cl.free_efrags[i].leafnext = &cl.free_efrags[i + 1]; + + cl.free_efrags[i].leafnext = NULL; + + // call recursively to get a newly allocated free efrag + return R_GetEfrag (); + } +} + +/* +=================== +R_SplitEntityOnNode +=================== +*/ +void R_SplitEntityOnNode (mnode_t *node) +{ + efrag_t *ef; + mplane_t *splitplane; + mleaf_t *leaf; + int sides; + + if (node->contents == CONTENTS_SOLID) + { + return; + } + +// add an efrag if the node is a leaf + + if ( node->contents < 0) + { + if (!r_pefragtopnode) + r_pefragtopnode = node; + + leaf = (mleaf_t *)node; + + // grab an efrag off the free list + ef = R_GetEfrag(); + ef->entity = r_addent; + + // set the leaf links + ef->leafnext = leaf->efrags; + leaf->efrags = ef; + + return; + } + +// NODE_MIXED + + splitplane = node->plane; + sides = BOX_ON_PLANE_SIDE(r_emins, r_emaxs, splitplane); + + if (sides == 3) + { + // split on this plane + // if this is the first splitter of this bmodel, remember it + if (!r_pefragtopnode) + r_pefragtopnode = node; + } + +// recurse down the contacted sides + if (sides & 1) + R_SplitEntityOnNode (node->children[0]); + + if (sides & 2) + R_SplitEntityOnNode (node->children[1]); +} + +/* +=========== +R_CheckEfrags -- johnfitz -- check for excessive efrag count +=========== +*/ +void R_CheckEfrags (void) +{ + if (cls.signon < 2) + return; //don't spam when still parsing signon packet full of static ents + + if (cl.num_efrags > 640 && dev_peakstats.efrags <= 640) + Con_DWarning ("%i efrags exceeds standard limit of 640.\n", cl.num_efrags); + + dev_stats.efrags = cl.num_efrags; + dev_peakstats.efrags = q_max(cl.num_efrags, dev_peakstats.efrags); +} + +/* +=========== +R_AddEfrags +=========== +*/ +void R_AddEfrags (entity_t *ent) +{ + qmodel_t *entmodel; + vec_t scalefactor; + + if (!ent->model) + return; + + r_addent = ent; + + r_pefragtopnode = NULL; + + entmodel = ent->model; + scalefactor = ENTSCALE_DECODE(ent->scale); + if (scalefactor != 1.0f) + { + VectorMA (ent->origin, scalefactor, entmodel->mins, r_emins); + VectorMA (ent->origin, scalefactor, entmodel->maxs, r_emaxs); + } + else + { + VectorAdd (ent->origin, entmodel->mins, r_emins); + VectorAdd (ent->origin, entmodel->maxs, r_emaxs); + } + + R_SplitEntityOnNode (cl.worldmodel->nodes); + + ent->topnode = r_pefragtopnode; + + R_CheckEfrags (); //johnfitz +} + + +/* +================ +R_StoreEfrags -- johnfitz -- pointless switch statement removed. +================ +*/ +void R_StoreEfrags (efrag_t **ppefrag) +{ + entity_t *pent; + efrag_t *pefrag; + + while ((pefrag = *ppefrag) != NULL) + { + pent = pefrag->entity; + + if ((pent->visframe != r_framecount) && (cl_numvisedicts < MAX_VISEDICTS)) + { + cl_visedicts[cl_numvisedicts++] = pent; + pent->visframe = r_framecount; + } + + ppefrag = &pefrag->leafnext; + } +} diff --git a/Quake/gl_rlight.c b/Quake/gl_rlight.c new file mode 100644 index 0000000..1f9f84f --- /dev/null +++ b/Quake/gl_rlight.c @@ -0,0 +1,421 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// r_light.c + +#include "quakedef.h" + +static int r_dlightframecount; + +extern cvar_t r_flatlightstyles; //johnfitz + +/* +================== +R_AnimateLight +================== +*/ +void R_AnimateLight (void) +{ + int i,j,k; + +// +// light animations +// 'm' is normal light, 'a' is no light, 'z' is double bright + i = (int)(cl.time*10); + for (j=0 ; j<MAX_LIGHTSTYLES ; j++) + { + if (!cl_lightstyle[j].length) + { + d_lightstylevalue[j] = 256; + continue; + } + //johnfitz -- r_flatlightstyles + if (r_flatlightstyles.value == 2) + k = cl_lightstyle[j].peak - 'a'; + else if (r_flatlightstyles.value == 1) + k = cl_lightstyle[j].average - 'a'; + else + { + k = i % cl_lightstyle[j].length; + k = cl_lightstyle[j].map[k] - 'a'; + } + d_lightstylevalue[j] = k*22; + //johnfitz + } +} + +/* +============================================================================= + +DYNAMIC LIGHTS BLEND RENDERING (gl_flashblend 1) + +============================================================================= +*/ + +void AddLightBlend (float r, float g, float b, float a2) +{ + float a; + + v_blend[3] = a = v_blend[3] + a2*(1-v_blend[3]); + + a2 = a2/a; + + v_blend[0] = v_blend[1]*(1-a2) + r*a2; + v_blend[1] = v_blend[1]*(1-a2) + g*a2; + v_blend[2] = v_blend[2]*(1-a2) + b*a2; +} + +void R_RenderDlight (dlight_t *light) +{ + int i, j; + float a; + vec3_t v; + float rad; + + rad = light->radius * 0.35; + + VectorSubtract (light->origin, r_origin, v); + if (VectorLength (v) < rad) + { // view is inside the dlight + AddLightBlend (1, 0.5, 0, light->radius * 0.0003); + return; + } + + glBegin (GL_TRIANGLE_FAN); + glColor3f (0.2,0.1,0.0); + for (i=0 ; i<3 ; i++) + v[i] = light->origin[i] - vpn[i]*rad; + glVertex3fv (v); + glColor3f (0,0,0); + for (i=16 ; i>=0 ; i--) + { + a = i/16.0 * M_PI*2; + for (j=0 ; j<3 ; j++) + v[j] = light->origin[j] + vright[j]*cos(a)*rad + + vup[j]*sin(a)*rad; + glVertex3fv (v); + } + glEnd (); +} + +/* +============= +R_RenderDlights +============= +*/ +void R_RenderDlights (void) +{ + int i; + dlight_t *l; + + if (!gl_flashblend.value) + return; + + r_dlightframecount = r_framecount + 1; // because the count hasn't advanced yet for this frame + glDepthMask (0); + glDisable (GL_TEXTURE_2D); + glShadeModel (GL_SMOOTH); + glEnable (GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + + l = cl_dlights; + for (i=0 ; i<MAX_DLIGHTS ; i++, l++) + { + if (l->die < cl.time || !l->radius) + continue; + R_RenderDlight (l); + } + + glColor3f (1,1,1); + glDisable (GL_BLEND); + glEnable (GL_TEXTURE_2D); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDepthMask (1); +} + + +/* +============================================================================= + +DYNAMIC LIGHTS + +============================================================================= +*/ + +/* +============= +R_MarkLights -- johnfitz -- rewritten to use LordHavoc's lighting speedup +============= +*/ +void R_MarkLights (dlight_t *light, int num, mnode_t *node) +{ + mplane_t *splitplane; + msurface_t *surf; + vec3_t impact; + float dist, l, maxdist; + int i, j, s, t; + +start: + if (node->contents < 0) + return; + + splitplane = node->plane; + if (splitplane->type < 3) + dist = light->origin[splitplane->type] - splitplane->dist; + else + dist = DotProduct (light->origin, splitplane->normal) - splitplane->dist; + + if (dist > light->radius) + { + node = node->children[0]; + goto start; + } + if (dist < -light->radius) + { + node = node->children[1]; + goto start; + } + + maxdist = light->radius*light->radius; +// mark the polygons + surf = cl.worldmodel->surfaces + node->firstsurface; + for (i=0 ; i<node->numsurfaces ; i++, surf++) + { + for (j=0 ; j<3 ; j++) + impact[j] = light->origin[j] - surf->plane->normal[j]*dist; + // clamp center of light to corner and check brightness + l = DotProduct (impact, surf->texinfo->vecs[0]) + surf->texinfo->vecs[0][3] - surf->texturemins[0]; + s = l+0.5;if (s < 0) s = 0;else if (s > surf->extents[0]) s = surf->extents[0]; + s = l - s; + l = DotProduct (impact, surf->texinfo->vecs[1]) + surf->texinfo->vecs[1][3] - surf->texturemins[1]; + t = l+0.5;if (t < 0) t = 0;else if (t > surf->extents[1]) t = surf->extents[1]; + t = l - t; + // compare to minimum light + if ((s*s+t*t+dist*dist) < maxdist) + { + if (surf->dlightframe != r_dlightframecount) // not dynamic until now + { + surf->dlightbits[num >> 5] = 1U << (num & 31); + surf->dlightframe = r_dlightframecount; + } + else // already dynamic + surf->dlightbits[num >> 5] |= 1U << (num & 31); + } + } + + if (node->children[0]->contents >= 0) + R_MarkLights (light, num, node->children[0]); + if (node->children[1]->contents >= 0) + R_MarkLights (light, num, node->children[1]); +} + +/* +============= +R_PushDlights +============= +*/ +void R_PushDlights (void) +{ + int i; + dlight_t *l; + + if (gl_flashblend.value) + return; + + r_dlightframecount = r_framecount + 1; // because the count hasn't advanced yet for this frame + l = cl_dlights; + + for (i=0 ; i<MAX_DLIGHTS ; i++, l++) + { + if (l->die < cl.time || !l->radius) + continue; + R_MarkLights (l, i, cl.worldmodel->nodes); + } +} + + +/* +============================================================================= + +LIGHT SAMPLING + +============================================================================= +*/ + +//mplane_t *lightplane; +vec3_t lightspot; +vec3_t lightcolor; //johnfitz -- lit support via lordhavoc + +/* +============= +RecursiveLightPoint -- johnfitz -- replaced entire function for lit support via lordhavoc +============= +*/ +int RecursiveLightPoint (vec3_t color, mnode_t *node, vec3_t rayorg, vec3_t start, vec3_t end, float *maxdist) +{ + float front, back, frac; + vec3_t mid; + +loc0: + if (node->contents < 0) + return false; // didn't hit anything + +// calculate mid point + if (node->plane->type < 3) + { + front = start[node->plane->type] - node->plane->dist; + back = end[node->plane->type] - node->plane->dist; + } + else + { + front = DotProduct(start, node->plane->normal) - node->plane->dist; + back = DotProduct(end, node->plane->normal) - node->plane->dist; + } + + // LordHavoc: optimized recursion + if ((back < 0) == (front < 0)) +// return RecursiveLightPoint (color, node->children[front < 0], rayorg, start, end, maxdist); + { + node = node->children[front < 0]; + goto loc0; + } + + frac = front / (front-back); + mid[0] = start[0] + (end[0] - start[0])*frac; + mid[1] = start[1] + (end[1] - start[1])*frac; + mid[2] = start[2] + (end[2] - start[2])*frac; + +// go down front side + if (RecursiveLightPoint (color, node->children[front < 0], rayorg, start, mid, maxdist)) + return true; // hit something + else + { + int i, ds, dt; + msurface_t *surf; + // check for impact on this node + VectorCopy (mid, lightspot); + //lightplane = node->plane; + + surf = cl.worldmodel->surfaces + node->firstsurface; + for (i = 0;i < node->numsurfaces;i++, surf++) + { + float sfront, sback, dist; + vec3_t raydelta; + + if (surf->flags & SURF_DRAWTILED) + continue; // no lightmaps + + // ericw -- added double casts to force 64-bit precision. + // Without them the zombie at the start of jam3_ericw.bsp was + // incorrectly being lit up in SSE builds. + ds = (int) ((double) DoublePrecisionDotProduct (mid, surf->texinfo->vecs[0]) + surf->texinfo->vecs[0][3]); + dt = (int) ((double) DoublePrecisionDotProduct (mid, surf->texinfo->vecs[1]) + surf->texinfo->vecs[1][3]); + + if (ds < surf->texturemins[0] || dt < surf->texturemins[1]) + continue; + + ds -= surf->texturemins[0]; + dt -= surf->texturemins[1]; + + if (ds > surf->extents[0] || dt > surf->extents[1]) + continue; + + if (surf->plane->type < 3) + { + sfront = rayorg[surf->plane->type] - surf->plane->dist; + sback = end[surf->plane->type] - surf->plane->dist; + } + else + { + sfront = DotProduct(rayorg, surf->plane->normal) - surf->plane->dist; + sback = DotProduct(end, surf->plane->normal) - surf->plane->dist; + } + VectorSubtract(end, rayorg, raydelta); + dist = sfront / (sfront - sback) * VectorLength(raydelta); + + if (!surf->samples) + { + // We hit a surface that is flagged as lightmapped, but doesn't have actual lightmap info. + // Instead of just returning black, we'll keep looking for nearby surfaces that do have valid samples. + // This fixes occasional pitch-black models in otherwise well-lit areas in DOTM (e.g. mge1m1, mge4m1) + // caused by overlapping surfaces with mixed lighting data. + const float nearby = 8.f; + dist += nearby; + *maxdist = q_min(*maxdist, dist); + continue; + } + + if (dist < *maxdist) + { + // LordHavoc: enhanced to interpolate lighting + byte *lightmap; + int maps, line3, dsfrac = ds & 15, dtfrac = dt & 15, r00 = 0, g00 = 0, b00 = 0, r01 = 0, g01 = 0, b01 = 0, r10 = 0, g10 = 0, b10 = 0, r11 = 0, g11 = 0, b11 = 0; + float scale; + line3 = ((surf->extents[0]>>4)+1)*3; + + lightmap = surf->samples + ((dt>>4) * ((surf->extents[0]>>4)+1) + (ds>>4))*3; // LordHavoc: *3 for color + + for (maps = 0;maps < MAXLIGHTMAPS && surf->styles[maps] != 255;maps++) + { + scale = (float) d_lightstylevalue[surf->styles[maps]] * 1.0 / 256.0; + r00 += (float) lightmap[ 0] * scale;g00 += (float) lightmap[ 1] * scale;b00 += (float) lightmap[2] * scale; + r01 += (float) lightmap[ 3] * scale;g01 += (float) lightmap[ 4] * scale;b01 += (float) lightmap[5] * scale; + r10 += (float) lightmap[line3+0] * scale;g10 += (float) lightmap[line3+1] * scale;b10 += (float) lightmap[line3+2] * scale; + r11 += (float) lightmap[line3+3] * scale;g11 += (float) lightmap[line3+4] * scale;b11 += (float) lightmap[line3+5] * scale; + lightmap += ((surf->extents[0]>>4)+1) * ((surf->extents[1]>>4)+1)*3; // LordHavoc: *3 for colored lighting + } + + color[0] += (float) ((int) ((((((((r11-r10) * dsfrac) >> 4) + r10)-((((r01-r00) * dsfrac) >> 4) + r00)) * dtfrac) >> 4) + ((((r01-r00) * dsfrac) >> 4) + r00))); + color[1] += (float) ((int) ((((((((g11-g10) * dsfrac) >> 4) + g10)-((((g01-g00) * dsfrac) >> 4) + g00)) * dtfrac) >> 4) + ((((g01-g00) * dsfrac) >> 4) + g00))); + color[2] += (float) ((int) ((((((((b11-b10) * dsfrac) >> 4) + b10)-((((b01-b00) * dsfrac) >> 4) + b00)) * dtfrac) >> 4) + ((((b01-b00) * dsfrac) >> 4) + b00))); + } + return true; // success + } + + // go down back side + return RecursiveLightPoint (color, node->children[front >= 0], rayorg, mid, end, maxdist); + } +} + +/* +============= +R_LightPoint -- johnfitz -- replaced entire function for lit support via lordhavoc +============= +*/ +int R_LightPoint (vec3_t p) +{ + vec3_t end; + float maxdist = 8192.f; //johnfitz -- was 2048 + + if (!cl.worldmodel->lightdata) + { + lightcolor[0] = lightcolor[1] = lightcolor[2] = 255; + return 255; + } + + end[0] = p[0]; + end[1] = p[1]; + end[2] = p[2] - maxdist; + + lightcolor[0] = lightcolor[1] = lightcolor[2] = 0; + RecursiveLightPoint (lightcolor, cl.worldmodel->nodes, p, p, end, &maxdist); + return ((lightcolor[0] + lightcolor[1] + lightcolor[2]) * (1.0f / 3.0f)); +} diff --git a/Quake/gl_rmain.c b/Quake/gl_rmain.c new file mode 100644 index 0000000..1406759 --- /dev/null +++ b/Quake/gl_rmain.c @@ -0,0 +1,1160 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// r_main.c + +#include "quakedef.h" + +vec3_t modelorg, r_entorigin; +entity_t *currententity; + +int r_visframecount; // bumped when going to a new PVS +int r_framecount; // used for dlight push checking + +mplane_t frustum[4]; + +//johnfitz -- rendering statistics +int rs_brushpolys, rs_aliaspolys, rs_skypolys; +int rs_dynamiclightmaps, rs_brushpasses, rs_aliaspasses, rs_skypasses; + +// +// view origin +// +vec3_t vup; +vec3_t vpn; +vec3_t vright; +vec3_t r_origin; + +float r_fovx, r_fovy; //johnfitz -- rendering fov may be different becuase of r_waterwarp and r_stereo + +// +// screen size info +// +refdef_t r_refdef; + +mleaf_t *r_viewleaf, *r_oldviewleaf; + +int d_lightstylevalue[256]; // 8.8 fraction of base light value + + +cvar_t r_norefresh = {"r_norefresh","0",CVAR_NONE}; +cvar_t r_drawentities = {"r_drawentities","1",CVAR_NONE}; +cvar_t r_drawviewmodel = {"r_drawviewmodel","1",CVAR_NONE}; +cvar_t r_speeds = {"r_speeds","0",CVAR_NONE}; +cvar_t r_pos = {"r_pos","0",CVAR_NONE}; +cvar_t r_fullbright = {"r_fullbright","0",CVAR_NONE}; +cvar_t r_lightmap = {"r_lightmap","0",CVAR_NONE}; +cvar_t r_shadows = {"r_shadows","0",CVAR_ARCHIVE}; +cvar_t r_wateralpha = {"r_wateralpha","1",CVAR_ARCHIVE}; +cvar_t r_litwater = {"r_litwater","1",CVAR_NONE}; +cvar_t r_dynamic = {"r_dynamic","1",CVAR_ARCHIVE}; +cvar_t r_novis = {"r_novis","0",CVAR_ARCHIVE}; + +cvar_t gl_finish = {"gl_finish","0",CVAR_NONE}; +cvar_t gl_clear = {"gl_clear","1",CVAR_NONE}; +cvar_t gl_cull = {"gl_cull","1",CVAR_NONE}; +cvar_t gl_smoothmodels = {"gl_smoothmodels","1",CVAR_NONE}; +cvar_t gl_affinemodels = {"gl_affinemodels","0",CVAR_NONE}; +cvar_t gl_polyblend = {"gl_polyblend","1",CVAR_NONE}; +cvar_t gl_flashblend = {"gl_flashblend","0",CVAR_ARCHIVE}; +cvar_t gl_playermip = {"gl_playermip","0",CVAR_NONE}; +cvar_t gl_nocolors = {"gl_nocolors","0",CVAR_NONE}; + +//johnfitz -- new cvars +cvar_t r_stereo = {"r_stereo","0",CVAR_NONE}; +cvar_t r_stereodepth = {"r_stereodepth","128",CVAR_NONE}; +cvar_t r_clearcolor = {"r_clearcolor","2",CVAR_ARCHIVE}; +cvar_t r_drawflat = {"r_drawflat","0",CVAR_NONE}; +cvar_t r_flatlightstyles = {"r_flatlightstyles", "0", CVAR_NONE}; +cvar_t gl_fullbrights = {"gl_fullbrights", "1", CVAR_ARCHIVE}; +cvar_t gl_farclip = {"gl_farclip", "65536", CVAR_ARCHIVE}; +cvar_t gl_overbright = {"gl_overbright", "1", CVAR_ARCHIVE}; +cvar_t gl_overbright_models = {"gl_overbright_models", "1", CVAR_ARCHIVE}; +cvar_t r_oldskyleaf = {"r_oldskyleaf", "0", CVAR_NONE}; +cvar_t r_drawworld = {"r_drawworld", "1", CVAR_NONE}; +cvar_t r_showtris = {"r_showtris", "0", CVAR_NONE}; +cvar_t r_showbboxes = {"r_showbboxes", "0", CVAR_NONE}; +cvar_t r_lerpmodels = {"r_lerpmodels", "1", CVAR_NONE}; +cvar_t r_lerpmove = {"r_lerpmove", "1", CVAR_NONE}; +cvar_t r_nolerp_list = {"r_nolerp_list", "progs/flame.mdl,progs/flame2.mdl,progs/braztall.mdl,progs/brazshrt.mdl,progs/longtrch.mdl,progs/flame_pyre.mdl,progs/v_saw.mdl,progs/v_xfist.mdl,progs/h2stuff/newfire.mdl", CVAR_NONE}; +cvar_t r_noshadow_list = {"r_noshadow_list", "progs/flame2.mdl,progs/flame.mdl,progs/bolt1.mdl,progs/bolt2.mdl,progs/bolt3.mdl,progs/laser.mdl", CVAR_NONE}; + +extern cvar_t r_vfog; +//johnfitz + +cvar_t gl_zfix = {"gl_zfix", "0", CVAR_NONE}; // QuakeSpasm z-fighting fix + +cvar_t r_lavaalpha = {"r_lavaalpha","0",CVAR_NONE}; +cvar_t r_telealpha = {"r_telealpha","0",CVAR_NONE}; +cvar_t r_slimealpha = {"r_slimealpha","0",CVAR_NONE}; + +float map_wateralpha, map_lavaalpha, map_telealpha, map_slimealpha; + +qboolean r_drawflat_cheatsafe, r_fullbright_cheatsafe, r_lightmap_cheatsafe, r_drawworld_cheatsafe; //johnfitz + +cvar_t r_scale = {"r_scale", "1", CVAR_ARCHIVE}; + +//============================================================================== +// +// GLSL GAMMA CORRECTION +// +//============================================================================== + +static GLuint r_gamma_texture; +static GLuint r_gamma_program; +static int r_gamma_texture_width, r_gamma_texture_height; + +// uniforms used in gamma shader +static GLint gammaLoc; +static GLint contrastLoc; +static GLint textureLoc; + +/* +============= +GLSLGamma_DeleteTexture +============= +*/ +void GLSLGamma_DeleteTexture (void) +{ + glDeleteTextures (1, &r_gamma_texture); + r_gamma_texture = 0; + r_gamma_program = 0; // deleted in R_DeleteShaders +} + +/* +============= +GLSLGamma_CreateShaders +============= +*/ +static void GLSLGamma_CreateShaders (void) +{ +#ifdef __EMSCRIPTEN__ + const GLchar *vertSource = \ + "precision highp float;\n" + "attribute vec4 aVertexPosition;\n" + "attribute vec2 aTextureCoord;\n" + "varying highp vec2 vTextureCoord;\n" + "\n" + "void main(void) {\n" + " gl_Position = aVertexPosition;\n" + " vTextureCoord = aTextureCoord;\n" + "}\n"; + + const GLchar *fragSource = \ + "precision highp float;\n" + "varying highp vec2 vTextureCoord;\n" + "\n" + "uniform sampler2D GammaTexture;\n" + "uniform float GammaValue;\n" + "uniform float ContrastValue;\n" + "\n" + "void main(void) {\n" + " vec4 frag = texture2D(GammaTexture, vTextureCoord);\n" + " frag.rgb = frag.rgb * ContrastValue;\n" + " gl_FragColor = vec4(pow(frag.rgb, vec3(GammaValue)), 1.0);\n" + "}\n"; +#else + const GLchar *vertSource = \ + "#version 110\n" + "\n" + "void main(void) {\n" + " gl_Position = vec4(gl_Vertex.xy, 0.0, 1.0);\n" + " gl_TexCoord[0] = gl_MultiTexCoord0;\n" + "}\n"; + + const GLchar *fragSource = \ + "#version 110\n" + "\n" + "uniform sampler2D GammaTexture;\n" + "uniform float GammaValue;\n" + "uniform float ContrastValue;\n" + "\n" + "void main(void) {\n" + " vec4 frag = texture2D(GammaTexture, gl_TexCoord[0].xy);\n" + " frag.rgb = frag.rgb * ContrastValue;\n" + " gl_FragColor = vec4(pow(frag.rgb, vec3(GammaValue)), 1.0);\n" + "}\n"; +#endif + + if (!gl_glsl_gamma_able) + return; + + r_gamma_program = GL_CreateProgram (vertSource, fragSource, 0, NULL); + +// get uniform locations + gammaLoc = GL_GetUniformLocation (&r_gamma_program, "GammaValue"); + contrastLoc = GL_GetUniformLocation (&r_gamma_program, "ContrastValue"); + textureLoc = GL_GetUniformLocation (&r_gamma_program, "GammaTexture"); +} + +/* +============= +GLSLGamma_GammaCorrect +============= +*/ +void GLSLGamma_GammaCorrect (void) +{ + float smax, tmax; + + if (!gl_glsl_gamma_able) + return; + + if (vid_gamma.value == 1 && vid_contrast.value == 1) + return; + +// create render-to-texture texture if needed + if (!r_gamma_texture) + { + glGenTextures (1, &r_gamma_texture); + glBindTexture (GL_TEXTURE_2D, r_gamma_texture); + + r_gamma_texture_width = glwidth; + r_gamma_texture_height = glheight; + + if (!gl_texture_NPOT) + { + r_gamma_texture_width = TexMgr_Pad(r_gamma_texture_width); + r_gamma_texture_height = TexMgr_Pad(r_gamma_texture_height); + } + + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, r_gamma_texture_width, r_gamma_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + +// create shader if needed + if (!r_gamma_program) + { + GLSLGamma_CreateShaders (); + if (!r_gamma_program) + { + Sys_Error("GLSLGamma_CreateShaders failed"); + } + } + +// copy the framebuffer to the texture + GL_DisableMultitexture(); + glBindTexture (GL_TEXTURE_2D, r_gamma_texture); + glCopyTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, glx, gly, glwidth, glheight); + +// draw the texture back to the framebuffer with a fragment shader + GL_UseProgramFunc (r_gamma_program); + GL_Uniform1fFunc (gammaLoc, vid_gamma.value); + GL_Uniform1fFunc (contrastLoc, q_min(2.0f, q_max(1.0f, vid_contrast.value))); + GL_Uniform1iFunc (textureLoc, 0); // use texture unit 0 + + glDisable (GL_ALPHA_TEST); + glDisable (GL_DEPTH_TEST); + + glViewport (glx, gly, glwidth, glheight); + + smax = glwidth/(float)r_gamma_texture_width; + tmax = glheight/(float)r_gamma_texture_height; + + glBegin (GL_QUADS); + glTexCoord2f (0, 0); + glVertex2f (-1, -1); + glTexCoord2f (smax, 0); + glVertex2f (1, -1); + glTexCoord2f (smax, tmax); + glVertex2f (1, 1); + glTexCoord2f (0, tmax); + glVertex2f (-1, 1); + glEnd (); + + GL_UseProgramFunc (0); + +// clear cached binding + GL_ClearBindings (); +} + +/* +================= +R_CullBox -- johnfitz -- replaced with new function from lordhavoc + +Returns true if the box is completely outside the frustum +================= +*/ +qboolean R_CullBox (vec3_t emins, vec3_t emaxs) +{ + int i; + mplane_t *p; + byte signbits; + float vec[3]; + + for (i = 0;i < 4;i++) + { + p = frustum + i; + signbits = p->signbits; + vec[0] = ((signbits & 1) ? emins : emaxs)[0]; + vec[1] = ((signbits & 2) ? emins : emaxs)[1]; + vec[2] = ((signbits & 4) ? emins : emaxs)[2]; + if (p->normal[0]*vec[0] + p->normal[1]*vec[1] + p->normal[2]*vec[2] < p->dist) + return true; + } + return false; +} + +/* +=============== +R_CullModelForEntity -- johnfitz -- uses correct bounds based on rotation +=============== +*/ +qboolean R_CullModelForEntity (entity_t *e) +{ + vec3_t mins, maxs; + vec_t scalefactor, *minbounds, *maxbounds; + + if (e->angles[0] || e->angles[2]) //pitch or roll + { + minbounds = e->model->rmins; + maxbounds = e->model->rmaxs; + } + else if (e->angles[1]) //yaw + { + minbounds = e->model->ymins; + maxbounds = e->model->ymaxs; + } + else //no rotation + { + minbounds = e->model->mins; + maxbounds = e->model->maxs; + } + + scalefactor = ENTSCALE_DECODE(e->scale); + if (scalefactor != 1.0f) + { + VectorMA (e->origin, scalefactor, minbounds, mins); + VectorMA (e->origin, scalefactor, maxbounds, maxs); + } + else + { + VectorAdd (e->origin, minbounds, mins); + VectorAdd (e->origin, maxbounds, maxs); + } + + return R_CullBox (mins, maxs); +} + +/* +=============== +R_RotateForEntity -- johnfitz -- modified to take origin and angles instead of pointer to entity +=============== +*/ +void R_RotateForEntity (vec3_t origin, vec3_t angles, unsigned char scale) +{ + float scalefactor = ENTSCALE_DECODE(scale); + glTranslatef (origin[0], origin[1], origin[2]); + glRotatef (angles[1], 0, 0, 1); + glRotatef (-angles[0], 0, 1, 0); + glRotatef (angles[2], 1, 0, 0); + if (scalefactor != 1.0f) + glScalef(scalefactor, scalefactor, scalefactor); +} + +/* +============= +GL_PolygonOffset -- johnfitz + +negative offset moves polygon closer to camera +============= +*/ +void GL_PolygonOffset (int offset) +{ + if (offset > 0) + { + glEnable (GL_POLYGON_OFFSET_FILL); + glEnable (GL_POLYGON_OFFSET_LINE); + glPolygonOffset(1, offset); + } + else if (offset < 0) + { + glEnable (GL_POLYGON_OFFSET_FILL); + glEnable (GL_POLYGON_OFFSET_LINE); + glPolygonOffset(-1, offset); + } + else + { + glDisable (GL_POLYGON_OFFSET_FILL); + glDisable (GL_POLYGON_OFFSET_LINE); + } +} + +//============================================================================== +// +// SETUP FRAME +// +//============================================================================== + +int SignbitsForPlane (mplane_t *out) +{ + int bits, j; + + // for fast box on planeside test + + bits = 0; + for (j=0 ; j<3 ; j++) + { + if (out->normal[j] < 0) + bits |= 1<<j; + } + return bits; +} + +/* +=============== +TurnVector -- johnfitz + +turn forward towards side on the plane defined by forward and side +if angle = 90, the result will be equal to side +assumes side and forward are perpendicular, and normalized +to turn away from side, use a negative angle +=============== +*/ +void TurnVector (vec3_t out, const vec3_t forward, const vec3_t side, float angle) +{ + float scale_forward, scale_side; + + scale_forward = cos( DEG2RAD( angle ) ); + scale_side = sin( DEG2RAD( angle ) ); + + out[0] = scale_forward*forward[0] + scale_side*side[0]; + out[1] = scale_forward*forward[1] + scale_side*side[1]; + out[2] = scale_forward*forward[2] + scale_side*side[2]; +} + +/* +=============== +R_SetFrustum -- johnfitz -- rewritten +=============== +*/ +void R_SetFrustum (float fovx, float fovy) +{ + int i; + + if (r_stereo.value) + fovx += 10; //silly hack so that polygons don't drop out becuase of stereo skew + + TurnVector(frustum[0].normal, vpn, vright, fovx/2 - 90); //left plane + TurnVector(frustum[1].normal, vpn, vright, 90 - fovx/2); //right plane + TurnVector(frustum[2].normal, vpn, vup, 90 - fovy/2); //bottom plane + TurnVector(frustum[3].normal, vpn, vup, fovy/2 - 90); //top plane + + for (i=0 ; i<4 ; i++) + { + frustum[i].type = PLANE_ANYZ; + frustum[i].dist = DotProduct (r_origin, frustum[i].normal); //FIXME: shouldn't this always be zero? + frustum[i].signbits = SignbitsForPlane (&frustum[i]); + } +} + +/* +============= +GL_SetFrustum -- johnfitz -- written to replace MYgluPerspective +============= +*/ +#define NEARCLIP 4 +float frustum_skew = 0.0; //used by r_stereo +void GL_SetFrustum(float fovx, float fovy) +{ + float xmax, ymax; + xmax = NEARCLIP * tan( fovx * M_PI / 360.0 ); + ymax = NEARCLIP * tan( fovy * M_PI / 360.0 ); + glFrustum(-xmax + frustum_skew, xmax + frustum_skew, -ymax, ymax, NEARCLIP, gl_farclip.value); +} + +/* +============= +R_SetupGL +============= +*/ +void R_SetupGL (void) +{ + int scale; + + //johnfitz -- rewrote this section + glMatrixMode(GL_PROJECTION); + glLoadIdentity (); + scale = CLAMP(1, (int)r_scale.value, 4); // ericw -- see R_ScaleView + glViewport (glx + r_refdef.vrect.x, + gly + glheight - r_refdef.vrect.y - r_refdef.vrect.height, + r_refdef.vrect.width / scale, + r_refdef.vrect.height / scale); + //johnfitz + + GL_SetFrustum (r_fovx, r_fovy); //johnfitz -- use r_fov* vars + +// glCullFace(GL_BACK); //johnfitz -- glquake used CCW with backwards culling -- let's do it right + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity (); + + glRotatef (-90, 1, 0, 0); // put Z going up + glRotatef (90, 0, 0, 1); // put Z going up + glRotatef (-r_refdef.viewangles[2], 1, 0, 0); + glRotatef (-r_refdef.viewangles[0], 0, 1, 0); + glRotatef (-r_refdef.viewangles[1], 0, 0, 1); + glTranslatef (-r_refdef.vieworg[0], -r_refdef.vieworg[1], -r_refdef.vieworg[2]); + + // + // set drawing parms + // + if (gl_cull.value) + glEnable(GL_CULL_FACE); + else + glDisable(GL_CULL_FACE); + + glDisable(GL_BLEND); + glDisable(GL_ALPHA_TEST); + glEnable(GL_DEPTH_TEST); +} + +/* +============= +R_Clear -- johnfitz -- rewritten and gutted +============= +*/ +void R_Clear (void) +{ + unsigned int clearbits; + + clearbits = GL_DEPTH_BUFFER_BIT; + // from mh -- if we get a stencil buffer, we should clear it, even though we don't use it + if (gl_stencilbits) + clearbits |= GL_STENCIL_BUFFER_BIT; + if (gl_clear.value) + clearbits |= GL_COLOR_BUFFER_BIT; + glClear (clearbits); +} + +/* +=============== +R_SetupScene -- johnfitz -- this is the stuff that needs to be done once per eye in stereo mode +=============== +*/ +void R_SetupScene (void) +{ + R_SetupGL (); +} + +/* +=============== +R_SetupView -- johnfitz -- this is the stuff that needs to be done once per frame, even in stereo mode +=============== +*/ +void R_SetupView (void) +{ + // Need to do those early because we now update dynamic light maps during R_MarkSurfaces + R_PushDlights (); + R_AnimateLight (); + r_framecount++; + + Fog_SetupFrame (); //johnfitz + +// build the transformation matrix for the given view angles + VectorCopy (r_refdef.vieworg, r_origin); + AngleVectors (r_refdef.viewangles, vpn, vright, vup); + +// current viewleaf + r_oldviewleaf = r_viewleaf; + r_viewleaf = Mod_PointInLeaf (r_origin, cl.worldmodel); + + V_SetContentsColor (r_viewleaf->contents); + V_CalcBlend (); + + //johnfitz -- calculate r_fovx and r_fovy here + r_fovx = r_refdef.fov_x; + r_fovy = r_refdef.fov_y; + if (r_waterwarp.value) + { + int contents = Mod_PointInLeaf (r_origin, cl.worldmodel)->contents; + if (contents == CONTENTS_WATER || contents == CONTENTS_SLIME || contents == CONTENTS_LAVA) + { + //variance is a percentage of width, where width = 2 * tan(fov / 2) otherwise the effect is too dramatic at high FOV and too subtle at low FOV. what a mess! + r_fovx = atan(tan(DEG2RAD(r_refdef.fov_x) / 2) * (0.97 + sin(cl.time * 1.5) * 0.03)) * 2 / M_PI_DIV_180; + r_fovy = atan(tan(DEG2RAD(r_refdef.fov_y) / 2) * (1.03 - sin(cl.time * 1.5) * 0.03)) * 2 / M_PI_DIV_180; + } + } + //johnfitz + + R_SetFrustum (r_fovx, r_fovy); //johnfitz -- use r_fov* vars + + R_MarkSurfaces (); //johnfitz -- create texture chains from PVS + + R_UpdateWarpTextures (); //johnfitz -- do this before R_Clear + + R_Clear (); + + //johnfitz -- cheat-protect some draw modes + r_drawflat_cheatsafe = r_fullbright_cheatsafe = r_lightmap_cheatsafe = false; + r_drawworld_cheatsafe = true; + if (cl.maxclients == 1) + { + if (!r_drawworld.value) r_drawworld_cheatsafe = false; + + if (r_drawflat.value) r_drawflat_cheatsafe = true; + else if (r_fullbright.value || !cl.worldmodel->lightdata) r_fullbright_cheatsafe = true; + else if (r_lightmap.value) r_lightmap_cheatsafe = true; + } + //johnfitz +} + +//============================================================================== +// +// RENDER VIEW +// +//============================================================================== + +/* +============= +R_DrawEntitiesOnList +============= +*/ +void R_DrawEntitiesOnList (qboolean alphapass) //johnfitz -- added parameter +{ + int i; + + if (!r_drawentities.value) + return; + + //johnfitz -- sprites are not a special case + for (i=0 ; i<cl_numvisedicts ; i++) + { + currententity = cl_visedicts[i]; + + //johnfitz -- if alphapass is true, draw only alpha entites this time + //if alphapass is false, draw only nonalpha entities this time + if ((ENTALPHA_DECODE(currententity->alpha) < 1 && !alphapass) || + (ENTALPHA_DECODE(currententity->alpha) == 1 && alphapass)) + continue; + + //johnfitz -- chasecam + if (currententity == &cl_entities[cl.viewentity]) + currententity->angles[0] *= 0.3; + //johnfitz + + switch (currententity->model->type) + { + case mod_alias: + R_DrawAliasModel (currententity); + break; + case mod_brush: + R_DrawBrushModel (currententity); + break; + case mod_sprite: + R_DrawSpriteModel (currententity); + break; + } + } +} + +/* +============= +R_DrawViewModel -- johnfitz -- gutted +============= +*/ +void R_DrawViewModel (void) +{ + if (!r_drawviewmodel.value || !r_drawentities.value || chase_active.value) + return; + + if (cl.items & IT_INVISIBILITY || cl.stats[STAT_HEALTH] <= 0) + return; + + currententity = &cl.viewent; + if (!currententity->model) + return; + + //johnfitz -- this fixes a crash + if (currententity->model->type != mod_alias) + return; + //johnfitz + + // hack the depth range to prevent view model from poking into walls + glDepthRange (0, 0.3); + R_DrawAliasModel (currententity); + glDepthRange (0, 1); +} + +/* +================ +R_EmitWirePoint -- johnfitz -- draws a wireframe cross shape for point entities +================ +*/ +void R_EmitWirePoint (vec3_t origin) +{ + const int size = 8; + + glBegin (GL_LINES); + glVertex3f (origin[0]-size, origin[1], origin[2]); + glVertex3f (origin[0]+size, origin[1], origin[2]); + glVertex3f (origin[0], origin[1]-size, origin[2]); + glVertex3f (origin[0], origin[1]+size, origin[2]); + glVertex3f (origin[0], origin[1], origin[2]-size); + glVertex3f (origin[0], origin[1], origin[2]+size); + glEnd (); +} + +/* +================ +R_EmitWireBox -- johnfitz -- draws one axis aligned bounding box +================ +*/ +void R_EmitWireBox (vec3_t mins, vec3_t maxs) +{ + glBegin (GL_QUAD_STRIP); + glVertex3f (mins[0], mins[1], mins[2]); + glVertex3f (mins[0], mins[1], maxs[2]); + glVertex3f (maxs[0], mins[1], mins[2]); + glVertex3f (maxs[0], mins[1], maxs[2]); + glVertex3f (maxs[0], maxs[1], mins[2]); + glVertex3f (maxs[0], maxs[1], maxs[2]); + glVertex3f (mins[0], maxs[1], mins[2]); + glVertex3f (mins[0], maxs[1], maxs[2]); + glVertex3f (mins[0], mins[1], mins[2]); + glVertex3f (mins[0], mins[1], maxs[2]); + glEnd (); +} + +/* +================ +R_ShowBoundingBoxes -- johnfitz + +draw bounding boxes -- the server-side boxes, not the renderer cullboxes +================ +*/ +void R_ShowBoundingBoxes (void) +{ + extern edict_t *sv_player; + vec3_t mins,maxs; + edict_t *ed; + int i; + + if (!r_showbboxes.value || cl.maxclients > 1 || !r_drawentities.value || !sv.active) + return; + + glDisable (GL_DEPTH_TEST); + glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); + GL_PolygonOffset (OFFSET_SHOWTRIS); + glDisable (GL_TEXTURE_2D); + glDisable (GL_CULL_FACE); + glColor3f (1,1,1); + + for (i=1, ed=NEXT_EDICT(sv.edicts) ; i<sv.num_edicts ; i++, ed=NEXT_EDICT(ed)) + { + if (ed == sv_player || ed->free) + continue; //don't draw player's own bbox or freed edicts + +// if (r_showbboxes.value != 2) +// if (!SV_VisibleToClient (sv_player, ed, sv.worldmodel)) +// continue; //don't draw if not in pvs + + if (ed->v.mins[0] == ed->v.maxs[0] && ed->v.mins[1] == ed->v.maxs[1] && ed->v.mins[2] == ed->v.maxs[2]) + { + //point entity + R_EmitWirePoint (ed->v.origin); + } + else + { + //box entity + VectorAdd (ed->v.mins, ed->v.origin, mins); + VectorAdd (ed->v.maxs, ed->v.origin, maxs); + R_EmitWireBox (mins, maxs); + } + } + + glColor3f (1,1,1); + glEnable (GL_TEXTURE_2D); + glEnable (GL_CULL_FACE); + glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); + GL_PolygonOffset (OFFSET_NONE); + glEnable (GL_DEPTH_TEST); + + Sbar_Changed (); //so we don't get dots collecting on the statusbar +} + +/* +================ +R_ShowTris -- johnfitz +================ +*/ +void R_ShowTris (void) +{ + extern cvar_t r_particles; + int i; + + if (r_showtris.value < 1 || r_showtris.value > 2 || cl.maxclients > 1) + return; + + if (r_showtris.value == 1) + glDisable (GL_DEPTH_TEST); + glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); + GL_PolygonOffset (OFFSET_SHOWTRIS); + glDisable (GL_TEXTURE_2D); + glColor3f (1,1,1); +// glEnable (GL_BLEND); +// glBlendFunc (GL_ONE, GL_ONE); + + if (r_drawworld.value) + { + R_DrawWorld_ShowTris (); + } + + if (r_drawentities.value) + { + for (i=0 ; i<cl_numvisedicts ; i++) + { + currententity = cl_visedicts[i]; + + if (currententity == &cl_entities[cl.viewentity]) // chasecam + currententity->angles[0] *= 0.3; + + switch (currententity->model->type) + { + case mod_brush: + R_DrawBrushModel_ShowTris (currententity); + break; + case mod_alias: + R_DrawAliasModel_ShowTris (currententity); + break; + case mod_sprite: + R_DrawSpriteModel (currententity); + break; + default: + break; + } + } + + // viewmodel + currententity = &cl.viewent; + if (r_drawviewmodel.value + && !chase_active.value + && cl.stats[STAT_HEALTH] > 0 + && !(cl.items & IT_INVISIBILITY) + && currententity->model + && currententity->model->type == mod_alias) + { + glDepthRange (0, 0.3); + R_DrawAliasModel_ShowTris (currententity); + glDepthRange (0, 1); + } + } + + if (r_particles.value) + { + R_DrawParticles_ShowTris (); + } + +// glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +// glDisable (GL_BLEND); + glColor3f (1,1,1); + glEnable (GL_TEXTURE_2D); + glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); + GL_PolygonOffset (OFFSET_NONE); + if (r_showtris.value == 1) + glEnable (GL_DEPTH_TEST); + + Sbar_Changed (); //so we don't get dots collecting on the statusbar +} + +/* +================ +R_DrawShadows +================ +*/ +void R_DrawShadows (void) +{ + int i; + + if (!r_shadows.value || !r_drawentities.value || r_drawflat_cheatsafe || r_lightmap_cheatsafe) + return; + + // Use stencil buffer to prevent self-intersecting shadows, from Baker (MarkV) + if (gl_stencilbits) + { + glClear(GL_STENCIL_BUFFER_BIT); + glStencilFunc(GL_EQUAL, 0, ~0); + glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); + glEnable(GL_STENCIL_TEST); + } + + for (i=0 ; i<cl_numvisedicts ; i++) + { + currententity = cl_visedicts[i]; + + if (currententity->model->type != mod_alias) + continue; + + if (currententity == &cl.viewent) + return; + + GL_DrawAliasShadow (currententity); + } + + if (gl_stencilbits) + { + glDisable(GL_STENCIL_TEST); + } +} + +/* +================ +R_RenderScene +================ +*/ +void R_RenderScene (void) +{ + R_SetupScene (); //johnfitz -- this does everything that should be done once per call to RenderScene + + Fog_EnableGFog (); //johnfitz + + Sky_DrawSky (); //johnfitz + + R_DrawWorld (); + + S_ExtraUpdate (); // don't let sound get messed up if going slow + + R_DrawShadows (); //johnfitz -- render entity shadows + + R_DrawEntitiesOnList (false); //johnfitz -- false means this is the pass for nonalpha entities + + R_DrawWorld_Water (); //johnfitz -- drawn here since they might have transparency + + R_DrawEntitiesOnList (true); //johnfitz -- true means this is the pass for alpha entities + + R_RenderDlights (); //triangle fan dlights -- johnfitz -- moved after water + + R_DrawParticles (); + + Fog_DisableGFog (); //johnfitz + + R_DrawViewModel (); //johnfitz -- moved here from R_RenderView + + R_ShowTris (); //johnfitz + + R_ShowBoundingBoxes (); //johnfitz +} + +static GLuint r_scaleview_texture; +static int r_scaleview_texture_width, r_scaleview_texture_height; + +/* +============= +R_ScaleView_DeleteTexture +============= +*/ +void R_ScaleView_DeleteTexture (void) +{ + glDeleteTextures (1, &r_scaleview_texture); + r_scaleview_texture = 0; +} + +/* +================ +R_ScaleView + +The r_scale cvar allows rendering the 3D view at 1/2, 1/3, or 1/4 resolution. +This function scales the reduced resolution 3D view back up to fill +r_refdef.vrect. This is for emulating a low-resolution pixellated look, +or possibly as a perforance boost on slow graphics cards. +================ +*/ +void R_ScaleView (void) +{ + float smax, tmax; + int scale; + int srcx, srcy, srcw, srch; + + // copied from R_SetupGL() + scale = CLAMP(1, (int)r_scale.value, 4); + srcx = glx + r_refdef.vrect.x; + srcy = gly + glheight - r_refdef.vrect.y - r_refdef.vrect.height; + srcw = r_refdef.vrect.width / scale; + srch = r_refdef.vrect.height / scale; + + if (scale == 1) + return; + + // make sure texture unit 0 is selected + GL_DisableMultitexture (); + + // create (if needed) and bind the render-to-texture texture + if (!r_scaleview_texture) + { + glGenTextures (1, &r_scaleview_texture); + + r_scaleview_texture_width = 0; + r_scaleview_texture_height = 0; + } + glBindTexture (GL_TEXTURE_2D, r_scaleview_texture); + + // resize render-to-texture texture if needed + if (r_scaleview_texture_width < srcw + || r_scaleview_texture_height < srch) + { + r_scaleview_texture_width = srcw; + r_scaleview_texture_height = srch; + + if (!gl_texture_NPOT) + { + r_scaleview_texture_width = TexMgr_Pad(r_scaleview_texture_width); + r_scaleview_texture_height = TexMgr_Pad(r_scaleview_texture_height); + } + + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, r_scaleview_texture_width, r_scaleview_texture_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + + // copy the framebuffer to the texture + glBindTexture (GL_TEXTURE_2D, r_scaleview_texture); + glCopyTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, srcx, srcy, srcw, srch); + + // draw the texture back to the framebuffer + glDisable (GL_ALPHA_TEST); + glDisable (GL_DEPTH_TEST); + glDisable (GL_CULL_FACE); + glDisable (GL_BLEND); + + glViewport (srcx, srcy, r_refdef.vrect.width, r_refdef.vrect.height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity (); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity (); + + // correction factor if we lack NPOT textures, normally these are 1.0f + smax = srcw/(float)r_scaleview_texture_width; + tmax = srch/(float)r_scaleview_texture_height; + + glBegin (GL_QUADS); + glTexCoord2f (0, 0); + glVertex2f (-1, -1); + glTexCoord2f (smax, 0); + glVertex2f (1, -1); + glTexCoord2f (smax, tmax); + glVertex2f (1, 1); + glTexCoord2f (0, tmax); + glVertex2f (-1, 1); + glEnd (); + + // clear cached binding + GL_ClearBindings (); +} + +/* +================ +R_RenderView +================ +*/ +void R_RenderView (void) +{ + double time1, time2; + + if (r_norefresh.value) + return; + + if (!cl.worldmodel) + Sys_Error ("R_RenderView: NULL worldmodel"); + + time1 = 0; /* avoid compiler warning */ + if (r_speeds.value) + { + glFinish (); + time1 = Sys_DoubleTime (); + + //johnfitz -- rendering statistics + rs_brushpolys = rs_aliaspolys = rs_skypolys = + rs_dynamiclightmaps = rs_aliaspasses = rs_skypasses = rs_brushpasses = 0; + } + else if (gl_finish.value) + glFinish (); + + R_SetupView (); //johnfitz -- this does everything that should be done once per frame + + //johnfitz -- stereo rendering -- full of hacky goodness + if (r_stereo.value) + { + float eyesep = CLAMP(-8.0f, r_stereo.value, 8.0f); + float fdepth = CLAMP(32.0f, r_stereodepth.value, 1024.0f); + + AngleVectors (r_refdef.viewangles, vpn, vright, vup); + + //render left eye (red) + glColorMask(1, 0, 0, 1); + VectorMA (r_refdef.vieworg, -0.5f * eyesep, vright, r_refdef.vieworg); + frustum_skew = 0.5 * eyesep * NEARCLIP / fdepth; + srand((int) (cl.time * 1000)); //sync random stuff between eyes + + R_RenderScene (); + + //render right eye (cyan) + glClear (GL_DEPTH_BUFFER_BIT); + glColorMask(0, 1, 1, 1); + VectorMA (r_refdef.vieworg, 1.0f * eyesep, vright, r_refdef.vieworg); + frustum_skew = -frustum_skew; + srand((int) (cl.time * 1000)); //sync random stuff between eyes + + R_RenderScene (); + + //restore + glColorMask(1, 1, 1, 1); + VectorMA (r_refdef.vieworg, -0.5f * eyesep, vright, r_refdef.vieworg); + frustum_skew = 0.0f; + } + else + { + R_RenderScene (); + } + //johnfitz + + R_ScaleView (); + + //johnfitz -- modified r_speeds output + time2 = Sys_DoubleTime (); + if (r_pos.value) + Con_Printf ("x %i y %i z %i (pitch %i yaw %i roll %i)\n", + (int)cl_entities[cl.viewentity].origin[0], + (int)cl_entities[cl.viewentity].origin[1], + (int)cl_entities[cl.viewentity].origin[2], + (int)cl.viewangles[PITCH], + (int)cl.viewangles[YAW], + (int)cl.viewangles[ROLL]); + else if (r_speeds.value == 2) + Con_Printf ("%3i ms %4i/%4i wpoly %4i/%4i epoly %3i lmap %4i/%4i sky %1.1f mtex\n", + (int)((time2-time1)*1000), + rs_brushpolys, + rs_brushpasses, + rs_aliaspolys, + rs_aliaspasses, + rs_dynamiclightmaps, + rs_skypolys, + rs_skypasses, + TexMgr_FrameUsage ()); + else if (r_speeds.value) + Con_Printf ("%3i ms %4i wpoly %4i epoly %3i lmap\n", + (int)((time2-time1)*1000), + rs_brushpolys, + rs_aliaspolys, + rs_dynamiclightmaps); + //johnfitz +} + diff --git a/Quake/gl_rmisc.c b/Quake/gl_rmisc.c new file mode 100644 index 0000000..963d55e --- /dev/null +++ b/Quake/gl_rmisc.c @@ -0,0 +1,645 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// r_misc.c + +#include "quakedef.h" + +//johnfitz -- new cvars +extern cvar_t r_stereo; +extern cvar_t r_stereodepth; +extern cvar_t r_clearcolor; +extern cvar_t r_drawflat; +extern cvar_t r_flatlightstyles; +extern cvar_t gl_fullbrights; +extern cvar_t gl_farclip; +extern cvar_t gl_overbright; +extern cvar_t gl_overbright_models; +extern cvar_t r_waterquality; +extern cvar_t r_oldwater; +extern cvar_t r_waterwarp; +extern cvar_t r_oldskyleaf; +extern cvar_t r_drawworld; +extern cvar_t r_showtris; +extern cvar_t r_showbboxes; +extern cvar_t r_lerpmodels; +extern cvar_t r_lerpmove; +extern cvar_t r_nolerp_list; +extern cvar_t r_noshadow_list; +//johnfitz +extern cvar_t gl_zfix; // QuakeSpasm z-fighting fix + +extern gltexture_t *playertextures[MAX_SCOREBOARD]; //johnfitz + +cvar_t r_lightmapwide = {"r_lightmapwide","0",CVAR_ROM}; + + +/* +==================== +GL_Overbright_f -- johnfitz +==================== +*/ +static void GL_Overbright_f (cvar_t *var) +{ + R_RebuildAllLightmaps (); +} + +/* +==================== +GL_Fullbrights_f -- johnfitz +==================== +*/ +static void GL_Fullbrights_f (cvar_t *var) +{ + TexMgr_ReloadNobrightImages (); +} + +/* +==================== +R_SetClearColor_f -- johnfitz +==================== +*/ +static void R_SetClearColor_f (cvar_t *var) +{ + byte *rgb; + int s; + + s = (int)r_clearcolor.value & 0xFF; + rgb = (byte*)(d_8to24table + s); + glClearColor (rgb[0]/255.0,rgb[1]/255.0,rgb[2]/255.0,0); +} + +/* +=============== +R_Model_ExtraFlags_List_f -- johnfitz -- called when r_nolerp_list or r_noshadow_list cvar changes +=============== +*/ +static void R_Model_ExtraFlags_List_f (cvar_t *var) +{ + int i; + for (i=0; i < MAX_MODELS; i++) + Mod_SetExtraFlags (cl.model_precache[i]); +} + +/* +==================== +R_SetWateralpha_f -- ericw +==================== +*/ +static void R_SetWateralpha_f (cvar_t *var) +{ + map_wateralpha = var->value; +} + +/* +==================== +R_SetLavaalpha_f -- ericw +==================== +*/ +static void R_SetLavaalpha_f (cvar_t *var) +{ + map_lavaalpha = var->value; +} + +/* +==================== +R_SetTelealpha_f -- ericw +==================== +*/ +static void R_SetTelealpha_f (cvar_t *var) +{ + map_telealpha = var->value; +} + +/* +==================== +R_SetSlimealpha_f -- ericw +==================== +*/ +static void R_SetSlimealpha_f (cvar_t *var) +{ + map_slimealpha = var->value; +} + +/* +==================== +GL_WaterAlphaForSurfface -- ericw +==================== +*/ +float GL_WaterAlphaForSurface (msurface_t *fa) +{ + if (fa->flags & SURF_DRAWLAVA) + return map_lavaalpha > 0 ? map_lavaalpha : map_wateralpha; + else if (fa->flags & SURF_DRAWTELE) + return map_telealpha > 0 ? map_telealpha : map_wateralpha; + else if (fa->flags & SURF_DRAWSLIME) + return map_slimealpha > 0 ? map_slimealpha : map_wateralpha; + else + return map_wateralpha; +} + + +/* +=============== +R_Init +=============== +*/ +void R_Init (void) +{ + Cmd_AddCommand ("timerefresh", R_TimeRefresh_f); + Cmd_AddCommand ("pointfile", R_ReadPointFile_f); + + Cvar_RegisterVariable (&r_norefresh); + Cvar_RegisterVariable (&r_lightmap); + Cvar_RegisterVariable (&r_fullbright); + Cvar_RegisterVariable (&r_drawentities); + Cvar_RegisterVariable (&r_drawviewmodel); + Cvar_RegisterVariable (&r_shadows); + Cvar_RegisterVariable (&r_wateralpha); + Cvar_SetCallback (&r_wateralpha, R_SetWateralpha_f); + Cvar_RegisterVariable (&r_litwater); + Cvar_RegisterVariable (&r_dynamic); + Cvar_RegisterVariable (&r_novis); + Cvar_RegisterVariable (&r_speeds); + Cvar_RegisterVariable (&r_pos); + + Cvar_RegisterVariable (&gl_finish); + Cvar_RegisterVariable (&gl_clear); + Cvar_RegisterVariable (&gl_cull); + Cvar_RegisterVariable (&gl_smoothmodels); + Cvar_RegisterVariable (&gl_affinemodels); + Cvar_RegisterVariable (&gl_polyblend); + Cvar_RegisterVariable (&gl_flashblend); + Cvar_RegisterVariable (&gl_playermip); + Cvar_RegisterVariable (&gl_nocolors); + + //johnfitz -- new cvars + Cvar_RegisterVariable (&r_stereo); + Cvar_RegisterVariable (&r_stereodepth); + Cvar_RegisterVariable (&r_clearcolor); + Cvar_SetCallback (&r_clearcolor, R_SetClearColor_f); + Cvar_RegisterVariable (&r_waterquality); + Cvar_RegisterVariable (&r_oldwater); + Cvar_RegisterVariable (&r_waterwarp); + Cvar_RegisterVariable (&r_drawflat); + Cvar_RegisterVariable (&r_flatlightstyles); + Cvar_RegisterVariable (&r_oldskyleaf); + Cvar_RegisterVariable (&r_drawworld); + Cvar_RegisterVariable (&r_showtris); + Cvar_RegisterVariable (&r_showbboxes); + Cvar_RegisterVariable (&gl_farclip); + Cvar_RegisterVariable (&gl_fullbrights); + Cvar_RegisterVariable (&gl_overbright); + Cvar_SetCallback (&gl_fullbrights, GL_Fullbrights_f); + Cvar_SetCallback (&gl_overbright, GL_Overbright_f); + Cvar_RegisterVariable (&gl_overbright_models); + Cvar_RegisterVariable (&r_lerpmodels); + Cvar_RegisterVariable (&r_lerpmove); + Cvar_RegisterVariable (&r_nolerp_list); + Cvar_SetCallback (&r_nolerp_list, R_Model_ExtraFlags_List_f); + Cvar_RegisterVariable (&r_noshadow_list); + Cvar_SetCallback (&r_noshadow_list, R_Model_ExtraFlags_List_f); + //johnfitz + Cvar_RegisterVariable (&r_lightmapwide); + Cvar_SetROM ("r_lightmapwide", gl_packed_pixels ? "1" : "0"); + + Cvar_RegisterVariable (&gl_zfix); // QuakeSpasm z-fighting fix + Cvar_RegisterVariable (&r_lavaalpha); + Cvar_RegisterVariable (&r_telealpha); + Cvar_RegisterVariable (&r_slimealpha); + Cvar_RegisterVariable (&r_scale); + Cvar_SetCallback (&r_lavaalpha, R_SetLavaalpha_f); + Cvar_SetCallback (&r_telealpha, R_SetTelealpha_f); + Cvar_SetCallback (&r_slimealpha, R_SetSlimealpha_f); + + R_InitParticles (); + R_SetClearColor_f (&r_clearcolor); //johnfitz + + Sky_Init (); //johnfitz + Fog_Init (); //johnfitz +} + +/* +=============== +R_TranslatePlayerSkin -- johnfitz -- rewritten. also, only handles new colors, not new skins +=============== +*/ +void R_TranslatePlayerSkin (int playernum) +{ + int top, bottom; + + top = (cl.scores[playernum].colors & 0xf0)>>4; + bottom = cl.scores[playernum].colors &15; + + //FIXME: if gl_nocolors is on, then turned off, the textures may be out of sync with the scoreboard colors. + if (!gl_nocolors.value) + { + if (playertextures[playernum]) + TexMgr_ReloadImage (playertextures[playernum], top, bottom); + } +} + +/* +=============== +R_TranslateNewPlayerSkin -- johnfitz -- split off of TranslatePlayerSkin -- this is called when +the skin or model actually changes, instead of just new colors +added bug fix from bengt jardup +=============== +*/ +void R_TranslateNewPlayerSkin (int playernum) +{ + char name[64]; + byte *pixels; + aliashdr_t *paliashdr; + int skinnum; + +//get correct texture pixels + currententity = &cl_entities[1+playernum]; + + if (!currententity->model || currententity->model->type != mod_alias) + return; + + paliashdr = (aliashdr_t *)Mod_Extradata (currententity->model); + + skinnum = currententity->skinnum; + + //TODO: move these tests to the place where skinnum gets received from the server + if (skinnum < 0 || skinnum >= paliashdr->numskins) + { + Con_DPrintf("(%d): Invalid player skin #%d\n", playernum, skinnum); + skinnum = 0; + } + + pixels = (byte *)paliashdr + paliashdr->texels[skinnum]; // This is not a persistent place! + +//upload new image + q_snprintf(name, sizeof(name), "player_%i", playernum); + playertextures[playernum] = TexMgr_LoadImage (currententity->model, name, paliashdr->skinwidth, paliashdr->skinheight, + SRC_INDEXED, pixels, paliashdr->gltextures[skinnum][0]->source_file, paliashdr->gltextures[skinnum][0]->source_offset, TEXPREF_PAD | TEXPREF_OVERWRITE); + +//now recolor it + R_TranslatePlayerSkin (playernum); +} + +/* +=============== +R_NewGame -- johnfitz -- handle a game switch +=============== +*/ +void R_NewGame (void) +{ + int i; + + //clear playertexture pointers (the textures themselves were freed by texmgr_newgame) + for (i=0; i<MAX_SCOREBOARD; i++) + playertextures[i] = NULL; +} + +/* +============= +R_ParseWorldspawn + +called at map load +============= +*/ +static void R_ParseWorldspawn (void) +{ + char key[128], value[4096]; + const char *data; + + map_wateralpha = r_wateralpha.value; + map_lavaalpha = r_lavaalpha.value; + map_telealpha = r_telealpha.value; + map_slimealpha = r_slimealpha.value; + + data = COM_Parse(cl.worldmodel->entities); + if (!data) + return; // error + if (com_token[0] != '{') + return; // error + + while (1) + { + data = COM_Parse(data); + if (!data) + return; // error + if (com_token[0] == '}') + break; // end of worldspawn + if (com_token[0] == '_') + q_strlcpy(key, com_token + 1, sizeof(key)); + else + q_strlcpy(key, com_token, sizeof(key)); + while (key[0] && key[strlen(key)-1] == ' ') // remove trailing spaces + key[strlen(key)-1] = 0; + data = COM_ParseEx(data, CPE_ALLOWTRUNC); + if (!data) + return; // error + q_strlcpy(value, com_token, sizeof(value)); + + if (!strcmp("wateralpha", key)) + map_wateralpha = atof(value); + + if (!strcmp("lavaalpha", key)) + map_lavaalpha = atof(value); + + if (!strcmp("telealpha", key)) + map_telealpha = atof(value); + + if (!strcmp("slimealpha", key)) + map_slimealpha = atof(value); + } +} + + +/* +=============== +R_NewMap +=============== +*/ +void R_NewMap (void) +{ + int i; + + for (i=0 ; i<256 ; i++) + d_lightstylevalue[i] = 264; // normal light value + +// clear out efrags in case the level hasn't been reloaded +// FIXME: is this one short? + for (i=0 ; i<cl.worldmodel->numleafs ; i++) + cl.worldmodel->leafs[i].efrags = NULL; + + r_viewleaf = NULL; + R_ClearParticles (); + + GL_BuildLightmaps (); + GL_BuildBModelVertexBuffer (); + //ericw -- no longer load alias models into a VBO here, it's done in Mod_LoadAliasModel + + r_framecount = 0; //johnfitz -- paranoid? + r_visframecount = 0; //johnfitz -- paranoid? + + Sky_NewMap (); //johnfitz -- skybox in worldspawn + Fog_NewMap (); //johnfitz -- global fog in worldspawn + R_ParseWorldspawn (); //ericw -- wateralpha, lavaalpha, telealpha, slimealpha in worldspawn + + load_subdivide_size = gl_subdivide_size.value; //johnfitz -- is this the right place to set this? +} + +/* +==================== +R_TimeRefresh_f + +For program optimization +==================== +*/ +void R_TimeRefresh_f (void) +{ + int i; + float start, stop, time; + + if (cls.state != ca_connected) + { + Con_Printf("Not connected to a server\n"); + return; + } + + start = Sys_DoubleTime (); + for (i = 0; i < 128; i++) + { + GL_BeginRendering(&glx, &gly, &glwidth, &glheight); + r_refdef.viewangles[1] = i/128.0*360.0; + R_RenderView (); + GL_EndRendering (); + } + + glFinish (); + stop = Sys_DoubleTime (); + time = stop-start; + Con_Printf ("%f seconds (%f fps)\n", time, 128/time); +} + +void D_FlushCaches (void) +{ +} + +static GLuint gl_programs[16]; +static int gl_num_programs; + +static qboolean GL_CheckShader (GLuint shader) +{ + GLint status; + GL_GetShaderivFunc (shader, GL_COMPILE_STATUS, &status); + + if (status != GL_TRUE) + { + char infolog[1024]; + + memset(infolog, 0, sizeof(infolog)); + GL_GetShaderInfoLogFunc (shader, sizeof(infolog), NULL, infolog); + + Con_Warning ("GLSL program failed to compile: %s", infolog); + + return false; + } + return true; +} + +static qboolean GL_CheckProgram (GLuint program) +{ + GLint status; + GL_GetProgramivFunc (program, GL_LINK_STATUS, &status); + + if (status != GL_TRUE) + { + char infolog[1024]; + + memset(infolog, 0, sizeof(infolog)); + GL_GetProgramInfoLogFunc (program, sizeof(infolog), NULL, infolog); + + Con_Warning ("GLSL program failed to link: %s", infolog); + + return false; + } + return true; +} + +/* +============= +GL_GetUniformLocation +============= +*/ +GLint GL_GetUniformLocation (GLuint *programPtr, const char *name) +{ + GLint location; + + if (!programPtr) + return -1; + + location = GL_GetUniformLocationFunc(*programPtr, name); + if (location == -1) + { + Con_Warning("GL_GetUniformLocationFunc %s failed\n", name); + *programPtr = 0; + } + return location; +} + +/* +==================== +GL_CreateProgram + +Compiles and returns GLSL program. +==================== +*/ +GLuint GL_CreateProgram (const GLchar *vertSource, const GLchar *fragSource, int numbindings, const glsl_attrib_binding_t *bindings) +{ + int i; + GLuint program, vertShader, fragShader; + + if (!gl_glsl_able) + return 0; + + vertShader = GL_CreateShaderFunc (GL_VERTEX_SHADER); + GL_ShaderSourceFunc (vertShader, 1, &vertSource, NULL); + GL_CompileShaderFunc (vertShader); + if (!GL_CheckShader (vertShader)) + { + GL_DeleteShaderFunc (vertShader); + return 0; + } + + fragShader = GL_CreateShaderFunc (GL_FRAGMENT_SHADER); + GL_ShaderSourceFunc (fragShader, 1, &fragSource, NULL); + GL_CompileShaderFunc (fragShader); + if (!GL_CheckShader (fragShader)) + { + GL_DeleteShaderFunc (vertShader); + GL_DeleteShaderFunc (fragShader); + return 0; + } + + program = GL_CreateProgramFunc (); + GL_AttachShaderFunc (program, vertShader); + GL_DeleteShaderFunc (vertShader); + GL_AttachShaderFunc (program, fragShader); + GL_DeleteShaderFunc (fragShader); + + for (i = 0; i < numbindings; i++) + { + GL_BindAttribLocationFunc (program, bindings[i].attrib, bindings[i].name); + } + + GL_LinkProgramFunc (program); + + if (!GL_CheckProgram (program)) + { + GL_DeleteProgramFunc (program); + return 0; + } + else + { + if (gl_num_programs == Q_COUNTOF(gl_programs)) + Host_Error ("gl_programs overflow"); + + gl_programs[gl_num_programs] = program; + gl_num_programs++; + + return program; + } +} + +/* +==================== +R_DeleteShaders + +Deletes any GLSL programs that have been created. +==================== +*/ +void R_DeleteShaders (void) +{ + int i; + + if (!gl_glsl_able) + return; + + for (i = 0; i < gl_num_programs; i++) + { + GL_DeleteProgramFunc (gl_programs[i]); + gl_programs[i] = 0; + } + gl_num_programs = 0; +} + +static GLuint current_array_buffer, current_element_array_buffer; + +/* +==================== +GL_BindBuffer + +glBindBuffer wrapper +==================== +*/ +void GL_BindBuffer (GLenum target, GLuint buffer) +{ + GLuint *cache; + + if (!gl_vbo_able) + return; + + switch (target) + { + case GL_ARRAY_BUFFER: + cache = ¤t_array_buffer; + break; + case GL_ELEMENT_ARRAY_BUFFER: + cache = ¤t_element_array_buffer; + break; + default: + Host_Error("GL_BindBuffer: unsupported target %d", (int)target); + return; + } + + if (*cache != buffer) + { + *cache = buffer; + GL_BindBufferFunc (target, *cache); + } +} + +/* +==================== +GL_ClearBufferBindings + +This must be called if you do anything that could make the cached bindings +invalid (e.g. manually binding, destroying the context). +==================== +*/ +void GL_ClearBufferBindings (void) +{ + if (!gl_vbo_able) + return; + + current_array_buffer = 0; + current_element_array_buffer = 0; + GL_BindBufferFunc (GL_ARRAY_BUFFER, 0); + GL_BindBufferFunc (GL_ELEMENT_ARRAY_BUFFER, 0); +} diff --git a/Quake/gl_screen.c b/Quake/gl_screen.c new file mode 100644 index 0000000..cf7c7ce --- /dev/null +++ b/Quake/gl_screen.c @@ -0,0 +1,1116 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// screen.c -- master for refresh, status bar, console, chat, notify, etc + +#include "quakedef.h" + +/* + +background clear +rendering +turtle/net/ram icons +sbar +centerprint / slow centerprint +notify lines +intermission / finale overlay +loading plaque +console +menu + +required background clears +required update regions + + +syncronous draw mode or async +One off screen buffer, with updates either copied or xblited +Need to double buffer? + + +async draw will require the refresh area to be cleared, because it will be +xblited, but sync draw can just ignore it. + +sync +draw + +CenterPrint () +SlowPrint () +Screen_Update (); +Con_Printf (); + +net +turn off messages option + +the refresh is allways rendered, unless the console is full screen + + +console is: + notify lines + half + full + +*/ + + +int glx, gly, glwidth, glheight; + +float scr_con_current; +float scr_conlines; // lines of console to display + +//johnfitz -- new cvars +cvar_t scr_menuscale = {"scr_menuscale", "1", CVAR_ARCHIVE}; +cvar_t scr_sbarscale = {"scr_sbarscale", "1", CVAR_ARCHIVE}; +cvar_t scr_sbaralpha = {"scr_sbaralpha", "0.75", CVAR_ARCHIVE}; +cvar_t scr_conwidth = {"scr_conwidth", "0", CVAR_ARCHIVE}; +cvar_t scr_conscale = {"scr_conscale", "1", CVAR_ARCHIVE}; +cvar_t scr_crosshairscale = {"scr_crosshairscale", "1", CVAR_ARCHIVE}; +cvar_t scr_showfps = {"scr_showfps", "0", CVAR_NONE}; +cvar_t scr_clock = {"scr_clock", "0", CVAR_NONE}; +//johnfitz +cvar_t scr_usekfont = {"scr_usekfont", "0", CVAR_NONE}; // 2021 re-release + +cvar_t scr_viewsize = {"viewsize","100", CVAR_ARCHIVE}; +cvar_t scr_fov = {"fov","90",CVAR_NONE}; // 10 - 170 +cvar_t scr_fov_adapt = {"fov_adapt","1",CVAR_ARCHIVE}; +cvar_t scr_conspeed = {"scr_conspeed","500",CVAR_ARCHIVE}; +cvar_t scr_centertime = {"scr_centertime","2",CVAR_NONE}; +cvar_t scr_showturtle = {"showturtle","0",CVAR_NONE}; +cvar_t scr_showpause = {"showpause","1",CVAR_NONE}; +cvar_t scr_printspeed = {"scr_printspeed","8",CVAR_NONE}; +cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", CVAR_ARCHIVE}; + +cvar_t cl_gun_fovscale = {"cl_gun_fovscale","1",CVAR_ARCHIVE}; // Qrack + +extern cvar_t crosshair; + +qboolean scr_initialized; // ready to draw + +qpic_t *scr_net; +qpic_t *scr_turtle; + +int clearconsole; +int clearnotify; + +vrect_t scr_vrect; + +qboolean scr_disabled_for_loading; +qboolean scr_drawloading; +float scr_disabled_time; + +int scr_tileclear_updates = 0; //johnfitz + +void SCR_ScreenShot_f (void); + +/* +=============================================================================== + +CENTER PRINTING + +=============================================================================== +*/ + +char scr_centerstring[1024]; +float scr_centertime_start; // for slow victory printing +float scr_centertime_off; +int scr_center_lines; +int scr_erase_lines; +int scr_erase_center; + +/* +============== +SCR_CenterPrint + +Called for important messages that should stay in the center of the screen +for a few moments +============== +*/ +void SCR_CenterPrint (const char *str) //update centerprint data +{ + strncpy (scr_centerstring, str, sizeof(scr_centerstring)-1); + scr_centertime_off = scr_centertime.value; + scr_centertime_start = cl.time; + +// count the number of lines for centering + scr_center_lines = 1; + str = scr_centerstring; + while (*str) + { + if (*str == '\n') + scr_center_lines++; + str++; + } +} + +void SCR_DrawCenterString (void) //actually do the drawing +{ + char *start; + int l; + int j; + int x, y; + int remaining; + + GL_SetCanvas (CANVAS_MENU); //johnfitz + +// the finale prints the characters one at a time + if (cl.intermission) + remaining = scr_printspeed.value * (cl.time - scr_centertime_start); + else + remaining = 9999; + + scr_erase_center = 0; + start = scr_centerstring; + + if (scr_center_lines <= 4) + y = 200*0.35; //johnfitz -- 320x200 coordinate system + else + y = 48; + if (crosshair.value) + y -= 8; + + do + { + // scan the width of the line + for (l=0 ; l<40 ; l++) + if (start[l] == '\n' || !start[l]) + break; + x = (320 - l*8)/2; //johnfitz -- 320x200 coordinate system + for (j=0 ; j<l ; j++, x+=8) + { + Draw_Character (x, y, start[j]); //johnfitz -- stretch overlays + if (!remaining--) + return; + } + + y += 8; + + while (*start && *start != '\n') + start++; + + if (!*start) + break; + start++; // skip the \n + } while (1); +} + +void SCR_CheckDrawCenterString (void) +{ + if (scr_center_lines > scr_erase_lines) + scr_erase_lines = scr_center_lines; + + scr_centertime_off -= host_frametime; + + if (scr_centertime_off <= 0 && !cl.intermission) + return; + if (key_dest != key_game) + return; + if (cl.paused) //johnfitz -- don't show centerprint during a pause + return; + + SCR_DrawCenterString (); +} + +//============================================================================= + +/* +==================== +AdaptFovx +Adapt a 4:3 horizontal FOV to the current screen size using the "Hor+" scaling: +2.0 * atan(width / height * 3.0 / 4.0 * tan(fov_x / 2.0)) +==================== +*/ +float AdaptFovx (float fov_x, float width, float height) +{ + float a, x; + + if (fov_x < 1 || fov_x > 179) + Sys_Error ("Bad fov: %f", fov_x); + + if (!scr_fov_adapt.value) + return fov_x; + if ((x = height / width) == 0.75) + return fov_x; + a = atan(0.75 / x * tan(fov_x / 360 * M_PI)); + a = a * 360 / M_PI; + return a; +} + +/* +==================== +CalcFovy +==================== +*/ +float CalcFovy (float fov_x, float width, float height) +{ + float a, x; + + if (fov_x < 1 || fov_x > 179) + Sys_Error ("Bad fov: %f", fov_x); + + x = width / tan(fov_x / 360 * M_PI); + a = atan(height / x); + a = a * 360 / M_PI; + return a; +} + +/* +================= +SCR_CalcRefdef + +Must be called whenever vid changes +Internal use only +================= +*/ +static void SCR_CalcRefdef (void) +{ + float size, scale; //johnfitz -- scale + +// force the status bar to redraw + Sbar_Changed (); + + scr_tileclear_updates = 0; //johnfitz + +// bound viewsize + if (scr_viewsize.value < 30) + Cvar_SetQuick (&scr_viewsize, "30"); + if (scr_viewsize.value > 120) + Cvar_SetQuick (&scr_viewsize, "120"); + +// bound fov + if (scr_fov.value < 10) + Cvar_SetQuick (&scr_fov, "10"); + if (scr_fov.value > 170) + Cvar_SetQuick (&scr_fov, "170"); + + vid.recalc_refdef = 0; + + //johnfitz -- rewrote this section + size = scr_viewsize.value; + scale = CLAMP (1.0f, scr_sbarscale.value, (float)glwidth / 320.0f); + + if (size >= 120 || cl.intermission || scr_sbaralpha.value < 1) //johnfitz -- scr_sbaralpha.value + sb_lines = 0; + else if (size >= 110) + sb_lines = 24 * scale; + else + sb_lines = 48 * scale; + + size = q_min(scr_viewsize.value, 100.f) / 100; + //johnfitz + + //johnfitz -- rewrote this section + r_refdef.vrect.width = q_max(glwidth * size, 96.0f); //no smaller than 96, for icons + r_refdef.vrect.height = q_min((int)(glheight * size), glheight - sb_lines); //make room for sbar + r_refdef.vrect.x = (glwidth - r_refdef.vrect.width)/2; + r_refdef.vrect.y = (glheight - sb_lines - r_refdef.vrect.height)/2; + //johnfitz + + r_refdef.fov_x = AdaptFovx(scr_fov.value, vid.width, vid.height); + r_refdef.fov_y = CalcFovy (r_refdef.fov_x, r_refdef.vrect.width, r_refdef.vrect.height); + + scr_vrect = r_refdef.vrect; +} + + +/* +================= +SCR_SizeUp_f + +Keybinding command +================= +*/ +void SCR_SizeUp_f (void) +{ + Cvar_SetValueQuick (&scr_viewsize, scr_viewsize.value+10); +} + + +/* +================= +SCR_SizeDown_f + +Keybinding command +================= +*/ +void SCR_SizeDown_f (void) +{ + Cvar_SetValueQuick (&scr_viewsize, scr_viewsize.value-10); +} + +static void SCR_Callback_refdef (cvar_t *var) +{ + vid.recalc_refdef = 1; +} + +/* +================== +SCR_Conwidth_f -- johnfitz -- called when scr_conwidth or scr_conscale changes +================== +*/ +void SCR_Conwidth_f (cvar_t *var) +{ + vid.recalc_refdef = 1; + vid.conwidth = (scr_conwidth.value > 0) ? (int)scr_conwidth.value : (scr_conscale.value > 0) ? (int)(vid.width/scr_conscale.value) : vid.width; + vid.conwidth = CLAMP (320, vid.conwidth, vid.width); + vid.conwidth &= 0xFFFFFFF8; + vid.conheight = vid.conwidth * vid.height / vid.width; +} + +//============================================================================ + +/* +================== +SCR_LoadPics -- johnfitz +================== +*/ +void SCR_LoadPics (void) +{ + scr_net = Draw_PicFromWad ("net"); + scr_turtle = Draw_PicFromWad ("turtle"); +} + +/* +================== +SCR_Init +================== +*/ +void SCR_Init (void) +{ + //johnfitz -- new cvars + Cvar_RegisterVariable (&scr_menuscale); + Cvar_RegisterVariable (&scr_sbarscale); + Cvar_SetCallback (&scr_sbaralpha, SCR_Callback_refdef); + Cvar_RegisterVariable (&scr_sbaralpha); + Cvar_SetCallback (&scr_conwidth, &SCR_Conwidth_f); + Cvar_SetCallback (&scr_conscale, &SCR_Conwidth_f); + Cvar_RegisterVariable (&scr_conwidth); + Cvar_RegisterVariable (&scr_conscale); + Cvar_RegisterVariable (&scr_crosshairscale); + Cvar_RegisterVariable (&scr_showfps); + Cvar_RegisterVariable (&scr_clock); + //johnfitz + Cvar_RegisterVariable (&scr_usekfont); // 2021 re-release + Cvar_SetCallback (&scr_fov, SCR_Callback_refdef); + Cvar_SetCallback (&scr_fov_adapt, SCR_Callback_refdef); + Cvar_SetCallback (&scr_viewsize, SCR_Callback_refdef); + Cvar_RegisterVariable (&scr_fov); + Cvar_RegisterVariable (&scr_fov_adapt); + Cvar_RegisterVariable (&scr_viewsize); + Cvar_RegisterVariable (&scr_conspeed); + Cvar_RegisterVariable (&scr_showturtle); + Cvar_RegisterVariable (&scr_showpause); + Cvar_RegisterVariable (&scr_centertime); + Cvar_RegisterVariable (&scr_printspeed); + Cvar_RegisterVariable (&gl_triplebuffer); + Cvar_RegisterVariable (&cl_gun_fovscale); + + Cmd_AddCommand ("screenshot",SCR_ScreenShot_f); + Cmd_AddCommand ("sizeup",SCR_SizeUp_f); + Cmd_AddCommand ("sizedown",SCR_SizeDown_f); + + SCR_LoadPics (); //johnfitz + + scr_initialized = true; +} + +//============================================================================ + +/* +============== +SCR_DrawFPS -- johnfitz +============== +*/ +void SCR_DrawFPS (void) +{ + static double oldtime = 0; + static double lastfps = 0; + static int oldframecount = 0; + double elapsed_time; + int frames; + + elapsed_time = realtime - oldtime; + frames = r_framecount - oldframecount; + + if (elapsed_time < 0 || frames < 0) + { + oldtime = realtime; + oldframecount = r_framecount; + return; + } + // update value every 3/4 second + if (elapsed_time > 0.75) + { + lastfps = frames / elapsed_time; + oldtime = realtime; + oldframecount = r_framecount; + } + + if (scr_showfps.value) + { + char st[16]; + int x, y; + sprintf (st, "%4.0f fps", lastfps); + x = 320 - (strlen(st)<<3); + y = 200 - 8; + if (scr_clock.value) y -= 8; //make room for clock + GL_SetCanvas (CANVAS_BOTTOMRIGHT); + Draw_String (x, y, st); + scr_tileclear_updates = 0; + } +} + +/* +============== +SCR_DrawClock -- johnfitz +============== +*/ +void SCR_DrawClock (void) +{ + char str[12]; + + if (scr_clock.value == 1) + { + int minutes, seconds; + + minutes = cl.time / 60; + seconds = ((int)cl.time)%60; + + sprintf (str,"%i:%i%i", minutes, seconds/10, seconds%10); + } + else + return; + + //draw it + GL_SetCanvas (CANVAS_BOTTOMRIGHT); + Draw_String (320 - (strlen(str)<<3), 200 - 8, str); + + scr_tileclear_updates = 0; +} + +/* +============== +SCR_DrawDevStats +============== +*/ +void SCR_DrawDevStats (void) +{ + char str[40]; + int y = 25-9; //9=number of lines to print + int x = 0; //margin + + if (!devstats.value) + return; + + GL_SetCanvas (CANVAS_BOTTOMLEFT); + + Draw_Fill (x, y*8, 19*8, 9*8, 0, 0.5); //dark rectangle + + sprintf (str, "devstats |Curr Peak"); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "---------+---------"); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Edicts |%4i %4i", dev_stats.edicts, dev_peakstats.edicts); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Packet |%4i %4i", dev_stats.packetsize, dev_peakstats.packetsize); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Visedicts|%4i %4i", dev_stats.visedicts, dev_peakstats.visedicts); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Efrags |%4i %4i", dev_stats.efrags, dev_peakstats.efrags); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Dlights |%4i %4i", dev_stats.dlights, dev_peakstats.dlights); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Beams |%4i %4i", dev_stats.beams, dev_peakstats.beams); + Draw_String (x, (y++)*8-x, str); + + sprintf (str, "Tempents |%4i %4i", dev_stats.tempents, dev_peakstats.tempents); + Draw_String (x, (y++)*8-x, str); +} + +/* +============== +SCR_DrawTurtle +============== +*/ +void SCR_DrawTurtle (void) +{ + static int count; + + if (!scr_showturtle.value) + return; + + if (host_frametime < 0.1) + { + count = 0; + return; + } + + count++; + if (count < 3) + return; + + GL_SetCanvas (CANVAS_DEFAULT); //johnfitz + + Draw_Pic (scr_vrect.x, scr_vrect.y, scr_turtle); +} + +/* +============== +SCR_DrawNet +============== +*/ +void SCR_DrawNet (void) +{ + if (realtime - cl.last_received_message < 0.3) + return; + if (cls.demoplayback) + return; + + GL_SetCanvas (CANVAS_DEFAULT); //johnfitz + + Draw_Pic (scr_vrect.x+64, scr_vrect.y, scr_net); +} + +/* +============== +DrawPause +============== +*/ +void SCR_DrawPause (void) +{ + qpic_t *pic; + + if (!cl.paused) + return; + + if (!scr_showpause.value) // turn off for screenshots + return; + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + pic = Draw_CachePic ("gfx/pause.lmp"); + Draw_Pic ( (320 - pic->width)/2, (240 - 48 - pic->height)/2, pic); //johnfitz -- stretched menus + + scr_tileclear_updates = 0; //johnfitz +} + +/* +============== +SCR_DrawLoading +============== +*/ +void SCR_DrawLoading (void) +{ + qpic_t *pic; + + if (!scr_drawloading) + return; + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + pic = Draw_CachePic ("gfx/loading.lmp"); + Draw_Pic ( (320 - pic->width)/2, (240 - 48 - pic->height)/2, pic); //johnfitz -- stretched menus + + scr_tileclear_updates = 0; //johnfitz +} + +/* +============== +SCR_DrawCrosshair -- johnfitz +============== +*/ +void SCR_DrawCrosshair (void) +{ + if (!crosshair.value) + return; + + GL_SetCanvas (CANVAS_CROSSHAIR); + Draw_Character (-4, -4, '+'); //0,0 is center of viewport +} + + + +//============================================================================= + + +/* +================== +SCR_SetUpToDrawConsole +================== +*/ +void SCR_SetUpToDrawConsole (void) +{ + //johnfitz -- let's hack away the problem of slow console when host_timescale is <0 + extern cvar_t host_timescale; + float timescale, conspeed; + //johnfitz + + Con_CheckResize (); + + if (scr_drawloading) + return; // never a console with loading plaque + +// decide on the height of the console + con_forcedup = !cl.worldmodel || cls.signon != SIGNONS; + + if (con_forcedup) + { + scr_conlines = glheight; //full screen //johnfitz -- glheight instead of vid.height + scr_con_current = scr_conlines; + } + else if (key_dest == key_console) + scr_conlines = glheight/2; //half screen //johnfitz -- glheight instead of vid.height + else + scr_conlines = 0; //none visible + + timescale = (host_timescale.value > 0) ? host_timescale.value : 1; //johnfitz -- timescale + conspeed = (scr_conspeed.value > 0) ? scr_conspeed.value : 1e6f; + + if (scr_conlines < scr_con_current) + { + // ericw -- (glheight/600.0) factor makes conspeed resolution independent, using 800x600 as a baseline + scr_con_current -= conspeed*(glheight/600.0)*host_frametime/timescale; //johnfitz -- timescale + if (scr_conlines > scr_con_current) + scr_con_current = scr_conlines; + } + else if (scr_conlines > scr_con_current) + { + // ericw -- (glheight/600.0) + scr_con_current += conspeed*(glheight/600.0)*host_frametime/timescale; //johnfitz -- timescale + if (scr_conlines < scr_con_current) + scr_con_current = scr_conlines; + } + + if (clearconsole++ < vid.numpages) + Sbar_Changed (); + + if (!con_forcedup && scr_con_current) + scr_tileclear_updates = 0; //johnfitz +} + +/* +================== +SCR_DrawConsole +================== +*/ +void SCR_DrawConsole (void) +{ + if (scr_con_current) + { + Con_DrawConsole (scr_con_current, true); + clearconsole = 0; + } + else + { + if (key_dest == key_game || key_dest == key_message) + Con_DrawNotify (); // only draw notify in game + } +} + + +/* +============================================================================== + +SCREEN SHOTS + +============================================================================== +*/ + +static void SCR_ScreenShot_Usage (void) +{ + Con_Printf ("usage: screenshot <format> <quality>\n"); + Con_Printf (" format must be \"png\" or \"tga\" or \"jpg\"\n"); + Con_Printf (" quality must be 1-100\n"); + return; +} + +/* +================== +SCR_ScreenShot_f -- johnfitz -- rewritten to use Image_WriteTGA +================== +*/ +void SCR_ScreenShot_f (void) +{ + byte *buffer; + char ext[4]; + char imagename[16]; //johnfitz -- was [80] + char checkname[MAX_OSPATH]; + int i, quality; + qboolean ok; + + Q_strncpy (ext, "png", sizeof(ext)); + + if (Cmd_Argc () >= 2) + { + const char *requested_ext = Cmd_Argv (1); + + if (!q_strcasecmp ("png", requested_ext) + || !q_strcasecmp ("tga", requested_ext) + || !q_strcasecmp ("jpg", requested_ext)) + Q_strncpy (ext, requested_ext, sizeof(ext)); + else + { + SCR_ScreenShot_Usage (); + return; + } + } + +// read quality as the 3rd param (only used for JPG) + quality = 90; + if (Cmd_Argc () >= 3) + quality = Q_atoi (Cmd_Argv(2)); + if (quality < 1 || quality > 100) + { + SCR_ScreenShot_Usage (); + return; + } + +// find a file name to save it to + for (i=0; i<10000; i++) + { + q_snprintf (imagename, sizeof(imagename), "spasm%04i.%s", i, ext); // "fitz%04i.tga" + q_snprintf (checkname, sizeof(checkname), "%s/%s", com_gamedir, imagename); + if (Sys_FileType(checkname) == FS_ENT_NONE) + break; // file doesn't exist + } + if (i == 10000) + { + Con_Printf ("SCR_ScreenShot_f: Couldn't find an unused filename\n"); + return; + } + +//get data + if (!(buffer = (byte *) malloc(glwidth*glheight*3))) + { + Con_Printf ("SCR_ScreenShot_f: Couldn't allocate memory\n"); + return; + } + + glPixelStorei (GL_PACK_ALIGNMENT, 1);/* for widths that aren't a multiple of 4 */ + glReadPixels (glx, gly, glwidth, glheight, GL_RGB, GL_UNSIGNED_BYTE, buffer); + +// now write the file + if (!q_strncasecmp (ext, "png", sizeof(ext))) + ok = Image_WritePNG (imagename, buffer, glwidth, glheight, 24, false); + else if (!q_strncasecmp (ext, "tga", sizeof(ext))) + ok = Image_WriteTGA (imagename, buffer, glwidth, glheight, 24, false); + else if (!q_strncasecmp (ext, "jpg", sizeof(ext))) + ok = Image_WriteJPG (imagename, buffer, glwidth, glheight, 24, quality, false); + else + ok = false; + + if (ok) + Con_Printf ("Wrote %s\n", imagename); + else + Con_Printf ("SCR_ScreenShot_f: Couldn't create %s\n", imagename); + + free (buffer); +} + + +//============================================================================= + + +/* +=============== +SCR_BeginLoadingPlaque + +================ +*/ +void SCR_BeginLoadingPlaque (void) +{ + S_StopAllSounds (true); + + if (cls.state != ca_connected) + return; + if (cls.signon != SIGNONS) + return; + +// redraw with no console and the loading plaque + Con_ClearNotify (); + scr_centertime_off = 0; + scr_con_current = 0; + + scr_drawloading = true; + Sbar_Changed (); + SCR_UpdateScreen (); + scr_drawloading = false; + + scr_disabled_for_loading = true; + scr_disabled_time = realtime; +} + +/* +=============== +SCR_EndLoadingPlaque + +================ +*/ +void SCR_EndLoadingPlaque (void) +{ + scr_disabled_for_loading = false; + Con_ClearNotify (); +} + +//============================================================================= + +const char *scr_notifystring; +qboolean scr_drawdialog; + +void SCR_DrawNotifyString (void) +{ + const char *start; + int l; + int j; + int x, y; + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + start = scr_notifystring; + + y = 200 * 0.35; //johnfitz -- stretched overlays + + do + { + // scan the width of the line + for (l=0 ; l<40 ; l++) + if (start[l] == '\n' || !start[l]) + break; + x = (320 - l*8)/2; //johnfitz -- stretched overlays + for (j=0 ; j<l ; j++, x+=8) + Draw_Character (x, y, start[j]); + + y += 8; + + while (*start && *start != '\n') + start++; + + if (!*start) + break; + start++; // skip the \n + } while (1); +} + +/* +================== +SCR_ModalMessage + +Displays a text string in the center of the screen and waits for a Y or N +keypress. +================== +*/ +int SCR_ModalMessage (const char *text, float timeout) //johnfitz -- timeout +{ + double time1, time2; //johnfitz -- timeout + int lastkey, lastchar; + + if (cls.state == ca_dedicated) + return true; + + scr_notifystring = text; + +// draw a fresh screen + scr_drawdialog = true; + SCR_UpdateScreen (); + scr_drawdialog = false; + + S_ClearBuffer (); // so dma doesn't loop current sound + + time1 = Sys_DoubleTime () + timeout; //johnfitz -- timeout + time2 = 0.0f; //johnfitz -- timeout + + Key_BeginInputGrab (); + do + { + Sys_SendKeyEvents (); + Key_GetGrabbedInput (&lastkey, &lastchar); + Sys_Sleep (16); + if (timeout) time2 = Sys_DoubleTime (); //johnfitz -- zero timeout means wait forever. + } while (lastchar != 'y' && lastchar != 'Y' && + lastchar != 'n' && lastchar != 'N' && + lastkey != K_ESCAPE && + lastkey != K_ABUTTON && + lastkey != K_BBUTTON && + time2 <= time1); + Key_EndInputGrab (); + +// SCR_UpdateScreen (); //johnfitz -- commented out + + //johnfitz -- timeout + if (time2 > time1) + return false; + //johnfitz + + return (lastchar == 'y' || lastchar == 'Y' || lastkey == K_ABUTTON); +} + + +//============================================================================= + +//johnfitz -- deleted SCR_BringDownConsole + + +/* +================== +SCR_TileClear +johnfitz -- modified to use glwidth/glheight instead of vid.width/vid.height + also fixed the dimentions of right and top panels + also added scr_tileclear_updates +================== +*/ +void SCR_TileClear (void) +{ + //ericw -- added check for glsl gamma. TODO: remove this ugly optimization? + if (scr_tileclear_updates >= vid.numpages && !gl_clear.value && !(gl_glsl_gamma_able && vid_gamma.value != 1)) + return; + scr_tileclear_updates++; + + if (r_refdef.vrect.x > 0) + { + // left + Draw_TileClear (0, + 0, + r_refdef.vrect.x, + glheight - sb_lines); + // right + Draw_TileClear (r_refdef.vrect.x + r_refdef.vrect.width, + 0, + glwidth - r_refdef.vrect.x - r_refdef.vrect.width, + glheight - sb_lines); + } + + if (r_refdef.vrect.y > 0) + { + // top + Draw_TileClear (r_refdef.vrect.x, + 0, + r_refdef.vrect.width, + r_refdef.vrect.y); + // bottom + Draw_TileClear (r_refdef.vrect.x, + r_refdef.vrect.y + r_refdef.vrect.height, + r_refdef.vrect.width, + glheight - r_refdef.vrect.y - r_refdef.vrect.height - sb_lines); + } +} + +/* +================== +SCR_UpdateScreen + +This is called every frame, and can also be called explicitly to flush +text to the screen. + +WARNING: be very careful calling this from elsewhere, because the refresh +needs almost the entire 256k of stack space! +================== +*/ +void SCR_UpdateScreen (void) +{ + vid.numpages = (gl_triplebuffer.value) ? 3 : 2; + + if (scr_disabled_for_loading) + { + if (realtime - scr_disabled_time > 60) + { + scr_disabled_for_loading = false; + Con_Printf ("load failed.\n"); + } + else + return; + } + + if (!scr_initialized || !con_initialized) + return; // not initialized yet + + + GL_BeginRendering (&glx, &gly, &glwidth, &glheight); + + // + // determine size of refresh window + // + if (vid.recalc_refdef) + SCR_CalcRefdef (); + +// +// do 3D refresh drawing, and then update the screen +// + SCR_SetUpToDrawConsole (); + + V_RenderView (); + + GL_Set2D (); + + //FIXME: only call this when needed + SCR_TileClear (); + + if (scr_drawdialog) //new game confirm + { + if (con_forcedup) + Draw_ConsoleBackground (); + else + Sbar_Draw (); + Draw_FadeScreen (); + SCR_DrawNotifyString (); + } + else if (scr_drawloading) //loading + { + SCR_DrawLoading (); + Sbar_Draw (); + } + else if (cl.intermission == 1 && key_dest == key_game) //end of level + { + Sbar_IntermissionOverlay (); + } + else if (cl.intermission == 2 && key_dest == key_game) //end of episode + { + Sbar_FinaleOverlay (); + SCR_CheckDrawCenterString (); + } + else + { + SCR_DrawCrosshair (); //johnfitz + SCR_DrawNet (); + SCR_DrawTurtle (); + SCR_DrawPause (); + SCR_CheckDrawCenterString (); + Sbar_Draw (); + SCR_DrawDevStats (); //johnfitz + SCR_DrawFPS (); //johnfitz + SCR_DrawClock (); //johnfitz + SCR_DrawConsole (); + M_Draw (); + } + + V_UpdateBlend (); //johnfitz -- V_UpdatePalette cleaned up and renamed + + GLSLGamma_GammaCorrect (); + + GL_EndRendering (); +} + diff --git a/Quake/gl_sky.c b/Quake/gl_sky.c new file mode 100644 index 0000000..710c6a8 --- /dev/null +++ b/Quake/gl_sky.c @@ -0,0 +1,1138 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +//gl_sky.c + +#ifdef __WATCOMC__ +#include <malloc.h> /* for alloca(). */ +#endif +#include "quakedef.h" + +#define MAX_CLIP_VERTS 64 + +float Fog_GetDensity(void); +float *Fog_GetColor(void); + +extern int rs_skypolys; // for r_speeds readout +extern int rs_skypasses; // for r_speeds readout + +static float skyflatcolor[3]; +static float skymins[2][6], skymaxs[2][6]; + +static char skybox_name[1024]; //name of current skybox, or "" if no skybox + +static gltexture_t *skybox_textures[6]; +static gltexture_t *solidskytexture, *alphaskytexture; + +extern cvar_t gl_farclip; +static cvar_t r_fastsky = {"r_fastsky", "0", CVAR_NONE}; +static cvar_t r_sky_quality = {"r_sky_quality", "12", CVAR_NONE}; +static cvar_t r_skyalpha = {"r_skyalpha", "1", CVAR_NONE}; +static cvar_t r_skyfog = {"r_skyfog","0.5",CVAR_NONE}; + +static const int skytexorder[6] = {0,2,1,3,4,5}; //for skybox + +static const vec3_t skyclip[6] = { + {1,1,0}, + {1,-1,0}, + {0,-1,1}, + {0,1,1}, + {1,0,1}, + {-1,0,1} +}; + +static const int st_to_vec[6][3] = +{ + {3,-1,2}, + {-3,1,2}, + {1,3,2}, + {-1,-3,2}, + {-2,-1,3}, // straight up + {2,-1,-3} // straight down +}; + +static const int vec_to_st[6][3] = +{ + {-2,3,1}, + {2,3,-1}, + {1,3,2}, + {-1,3,-2}, + {-2,-1,3}, + {-2,1,-3} +}; + +static float skyfog; // ericw + +//============================================================================== +// +// INIT +// +//============================================================================== + +/* +============= +Sky_LoadTexture + +A sky texture is 256*128, with the left side being a masked overlay +============== +*/ +void Sky_LoadTexture (qmodel_t *mod, texture_t *mt) +{ + char texturename[64]; + unsigned x, y, p, r, g, b, count, halfwidth, *rgba; + byte *src, *front_data, *back_data; + + if (mt->width != 256 || mt->height != 128) + { + Con_Warning ("Sky texture %s is %d x %d, expected 256 x 128\n", mt->name, mt->width, mt->height); + if (mt->width < 2 || mt->height < 1) + return; + } + + halfwidth = mt->width / 2; + back_data = (byte *) Hunk_AllocName (halfwidth*mt->height*2, "skytex"); + front_data = back_data + halfwidth*mt->height; + src = (byte *)(mt + 1); + +// extract back layer and upload + for (y=0 ; y<mt->height ; y++) + memcpy (back_data + y*halfwidth, src + halfwidth + y*mt->width, halfwidth); + + q_snprintf(texturename, sizeof(texturename), "%s:%s_back", mod->name, mt->name); + solidskytexture = TexMgr_LoadImage (mod, texturename, halfwidth, mt->height, SRC_INDEXED, back_data, "", (src_offset_t)back_data, TEXPREF_NONE); + +// extract front layer and upload + r = g = b = count = 0; + for (y=0 ; y<mt->height ; src+=mt->width, front_data+=halfwidth, y++) + { + for (x=0 ; x<halfwidth ; x++) + { + p = src[x]; + if (p == 0) + p = 255; + else + { + rgba = &d_8to24table[p]; + r += ((byte *)rgba)[0]; + g += ((byte *)rgba)[1]; + b += ((byte *)rgba)[2]; + count++; + } + front_data[x] = p; + } + } + + front_data = back_data + halfwidth*mt->height; + q_snprintf(texturename, sizeof(texturename), "%s:%s_front", mod->name, mt->name); + alphaskytexture = TexMgr_LoadImage (mod, texturename, halfwidth, mt->height, SRC_INDEXED, front_data, "", (src_offset_t)front_data, TEXPREF_ALPHA); + +// calculate r_fastsky color based on average of all opaque foreground colors + skyflatcolor[0] = (float)r/(count*255); + skyflatcolor[1] = (float)g/(count*255); + skyflatcolor[2] = (float)b/(count*255); +} + +/* +============= +Sky_LoadTextureQ64 + +Quake64 sky textures are 32*64 +============== +*/ +void Sky_LoadTextureQ64 (qmodel_t *mod, texture_t *mt) +{ + char texturename[64]; + unsigned i, p, r, g, b, count, halfheight, *rgba; + byte *front, *back, *front_rgba; + + if (mt->width != 32 || mt->height != 64) + { + Con_DWarning ("Q64 sky texture %s is %d x %d, expected 32 x 64\n", mt->name, mt->width, mt->height); + if (mt->width < 1 || mt->height < 2) + return; + } + + // pointers to both layer textures + halfheight = mt->height / 2; + front = (byte *)(mt+1); + back = (byte *)(mt+1) + mt->width*halfheight; + front_rgba = (byte *) Hunk_AllocName (4*mt->width*halfheight, "q64_skytex"); + + // Normal indexed texture for the back layer + q_snprintf(texturename, sizeof(texturename), "%s:%s_back", mod->name, mt->name); + solidskytexture = TexMgr_LoadImage (mod, texturename, mt->width, halfheight, SRC_INDEXED, back, "", (src_offset_t)back, TEXPREF_NONE); + + // front layer, convert to RGBA and upload + p = r = g = b = count = 0; + + for (i=mt->width*halfheight ; i!=0 ; i--) + { + rgba = &d_8to24table[*front++]; + + // RGB + front_rgba[p++] = ((byte*)rgba)[0]; + front_rgba[p++] = ((byte*)rgba)[1]; + front_rgba[p++] = ((byte*)rgba)[2]; + // Alpha + front_rgba[p++] = 128; // this look ok to me! + + // Fast sky + r += ((byte *)rgba)[0]; + g += ((byte *)rgba)[1]; + b += ((byte *)rgba)[2]; + count++; + } + + q_snprintf(texturename, sizeof(texturename), "%s:%s_front", mod->name, mt->name); + alphaskytexture = TexMgr_LoadImage (mod, texturename, mt->width, halfheight, SRC_RGBA, front_rgba, "", (src_offset_t)front_rgba, TEXPREF_ALPHA); + + // calculate r_fastsky color based on average of all opaque foreground colors + skyflatcolor[0] = (float)r/(count*255); + skyflatcolor[1] = (float)g/(count*255); + skyflatcolor[2] = (float)b/(count*255); +} + +/* +================== +Sky_LoadSkyBox +================== +*/ +static const char *suf[6] = {"rt", "bk", "lf", "ft", "up", "dn"}; +void Sky_LoadSkyBox (const char *name) +{ + int i, mark, width, height; + char filename[MAX_OSPATH]; + byte *data; + qboolean nonefound = true; + + if (strcmp(skybox_name, name) == 0) + return; //no change + + //purge old textures + for (i=0; i<6; i++) + { + if (skybox_textures[i] && skybox_textures[i] != notexture) + TexMgr_FreeTexture (skybox_textures[i]); + skybox_textures[i] = NULL; + } + + //turn off skybox if sky is set to "" + if (name[0] == 0) + { + skybox_name[0] = 0; + return; + } + + //load textures + for (i=0; i<6; i++) + { + mark = Hunk_LowMark (); + q_snprintf (filename, sizeof(filename), "gfx/env/%s%s", name, suf[i]); + data = Image_LoadImage (filename, &width, &height); + if (data) + { + skybox_textures[i] = TexMgr_LoadImage (cl.worldmodel, filename, width, height, SRC_RGBA, data, filename, 0, TEXPREF_NONE); + nonefound = false; + } + else + { + Con_Printf ("Couldn't load %s\n", filename); + skybox_textures[i] = notexture; + } + Hunk_FreeToLowMark (mark); + } + + if (nonefound) // go back to scrolling sky if skybox is totally missing + { + for (i=0; i<6; i++) + { + if (skybox_textures[i] && skybox_textures[i] != notexture) + TexMgr_FreeTexture (skybox_textures[i]); + skybox_textures[i] = NULL; + } + skybox_name[0] = 0; + return; + } + + q_strlcpy(skybox_name, name, sizeof(skybox_name)); +} + +/* +================= +Sky_ClearAll + +Called on map unload/game change to avoid keeping pointers to freed data +================= +*/ +void Sky_ClearAll (void) +{ + int i; + + skybox_name[0] = 0; + for (i=0; i<6; i++) + skybox_textures[i] = NULL; + solidskytexture = NULL; + alphaskytexture = NULL; + Cvar_SetQuick (&r_skyfog, r_skyfog.default_string); +} + +/* +================= +Sky_NewMap +================= +*/ +void Sky_NewMap (void) +{ + char key[128], value[4096]; + const char *data; + + skyfog = r_skyfog.value; + + // + // read worldspawn (this is so ugly, and shouldn't it be done on the server?) + // + data = cl.worldmodel->entities; + if (!data) + return; //FIXME: how could this possibly ever happen? -- if there's no + // worldspawn then the sever wouldn't send the loadmap message to the client + + data = COM_Parse(data); + if (!data) //should never happen + return; // error + if (com_token[0] != '{') //should never happen + return; // error + while (1) + { + data = COM_Parse(data); + if (!data) + return; // error + if (com_token[0] == '}') + break; // end of worldspawn + if (com_token[0] == '_') + q_strlcpy(key, com_token + 1, sizeof(key)); + else + q_strlcpy(key, com_token, sizeof(key)); + while (key[0] && key[strlen(key)-1] == ' ') // remove trailing spaces + key[strlen(key)-1] = 0; + data = COM_ParseEx(data, CPE_ALLOWTRUNC); + if (!data) + return; // error + q_strlcpy(value, com_token, sizeof(value)); + + if (!strcmp("sky", key)) + Sky_LoadSkyBox(value); + + if (!strcmp("skyfog", key)) + skyfog = atof(value); +#if 1 /* also accept non-standard keys */ + else if (!strcmp("skyname", key)) //half-life + Sky_LoadSkyBox(value); + else if (!strcmp("qlsky", key)) //quake lives + Sky_LoadSkyBox(value); +#endif + } +} + +/* +================= +Sky_SkyCommand_f +================= +*/ +void Sky_SkyCommand_f (void) +{ + switch (Cmd_Argc()) + { + case 1: + Con_Printf("\"sky\" is \"%s\"\n", skybox_name); + break; + case 2: + Sky_LoadSkyBox(Cmd_Argv(1)); + break; + default: + Con_Printf("usage: sky <skyname>\n"); + } +} + +/* +==================== +R_SetSkyfog_f -- ericw +==================== +*/ +static void R_SetSkyfog_f (cvar_t *var) +{ +// clear any skyfog setting from worldspawn + skyfog = var->value; +} + +/* +============= +Sky_Init +============= +*/ +void Sky_Init (void) +{ + int i; + + Cvar_RegisterVariable (&r_fastsky); + Cvar_RegisterVariable (&r_sky_quality); + Cvar_RegisterVariable (&r_skyalpha); + Cvar_RegisterVariable (&r_skyfog); + Cvar_SetCallback (&r_skyfog, R_SetSkyfog_f); + + Cmd_AddCommand ("sky",Sky_SkyCommand_f); + + skybox_name[0] = 0; + for (i=0; i<6; i++) + skybox_textures[i] = NULL; +} + +//============================================================================== +// +// PROCESS SKY SURFS +// +//============================================================================== + +/* +================= +Sky_ProjectPoly + +update sky bounds +================= +*/ +void Sky_ProjectPoly (int nump, vec3_t vecs) +{ + int i,j; + vec3_t v, av; + float s, t, dv; + int axis; + float *vp; + + // decide which face it maps to + VectorCopy (vec3_origin, v); + for (i=0, vp=vecs ; i<nump ; i++, vp+=3) + { + VectorAdd (vp, v, v); + } + av[0] = fabs(v[0]); + av[1] = fabs(v[1]); + av[2] = fabs(v[2]); + if (av[0] > av[1] && av[0] > av[2]) + { + if (v[0] < 0) + axis = 1; + else + axis = 0; + } + else if (av[1] > av[2] && av[1] > av[0]) + { + if (v[1] < 0) + axis = 3; + else + axis = 2; + } + else + { + if (v[2] < 0) + axis = 5; + else + axis = 4; + } + + // project new texture coords + for (i=0 ; i<nump ; i++, vecs+=3) + { + j = vec_to_st[axis][2]; + if (j > 0) + dv = vecs[j - 1]; + else + dv = -vecs[-j - 1]; + + j = vec_to_st[axis][0]; + if (j < 0) + s = -vecs[-j -1] / dv; + else + s = vecs[j-1] / dv; + j = vec_to_st[axis][1]; + if (j < 0) + t = -vecs[-j -1] / dv; + else + t = vecs[j-1] / dv; + + if (s < skymins[0][axis]) + skymins[0][axis] = s; + if (t < skymins[1][axis]) + skymins[1][axis] = t; + if (s > skymaxs[0][axis]) + skymaxs[0][axis] = s; + if (t > skymaxs[1][axis]) + skymaxs[1][axis] = t; + } +} + +/* +================= +Sky_ClipPoly +================= +*/ +static void Sky_ClipPoly (int nump, vec3_t vecs, int stage) +{ + const float *norm; + float *v; + qboolean front, back; + float d, e; + int newc[2]; + int i, j; + + const int max_clip_verts = nump + 2; + const int on_heap = max_clip_verts > MAX_CLIP_VERTS; + int *sides; + float *dists; + vec3_t *newv_0; + vec3_t *newv_1; + + if (stage == 6) // fully clipped + { + Sky_ProjectPoly (nump, vecs); + return; + } + + front = back = false; + norm = skyclip[stage]; + + sides = (int *) (on_heap ? malloc(max_clip_verts * sizeof(int)) : alloca(max_clip_verts * sizeof(int))); + dists = (float *) (on_heap ? malloc(max_clip_verts * sizeof(float)) : alloca(max_clip_verts * sizeof(float))); + + for (i=0, v = vecs ; i<nump ; i++, v+=3) + { + d = DotProduct (v, norm); + if (d > ON_EPSILON) + { + front = true; + sides[i] = SIDE_FRONT; + } + else if (d < ON_EPSILON) + { + back = true; + sides[i] = SIDE_BACK; + } + else + sides[i] = SIDE_ON; + dists[i] = d; + } + + if (!front || !back) + { // not clipped + Sky_ClipPoly (nump, vecs, stage+1); + if (on_heap) { + free(dists); + free(sides); + } + return; + } + + // clip it + sides[i] = sides[0]; + dists[i] = dists[0]; + VectorCopy (vecs, (vecs+(i*3)) ); + newc[0] = newc[1] = 0; + + // 2-dim vec3_t newv[2][MAX_CLIP_VERTS]; as 2 arrays + newv_0 = (vec3_t *) (on_heap ? malloc(max_clip_verts * sizeof(vec3_t)) : alloca(max_clip_verts * sizeof(vec3_t))); + newv_1 = (vec3_t *) (on_heap ? malloc(max_clip_verts * sizeof(vec3_t)) : alloca(max_clip_verts * sizeof(vec3_t))); + + for (i=0, v = vecs ; i<nump ; i++, v+=3) + { + switch (sides[i]) + { + case SIDE_FRONT: + VectorCopy (v, newv_0[newc[0]]); + newc[0]++; + break; + case SIDE_BACK: + VectorCopy (v, newv_1[newc[1]]); + newc[1]++; + break; + case SIDE_ON: + VectorCopy (v, newv_0[newc[0]]); + newc[0]++; + VectorCopy (v, newv_1[newc[1]]); + newc[1]++; + break; + } + + if (sides[i] == SIDE_ON || sides[i+1] == SIDE_ON || sides[i+1] == sides[i]) + continue; + + d = dists[i] / (dists[i] - dists[i+1]); + for (j=0 ; j<3 ; j++) + { + e = v[j] + d*(v[j+3] - v[j]); + newv_0[newc[0]][j] = e; + newv_1[newc[1]][j] = e; + } + newc[0]++; + newc[1]++; + } + + // continue + Sky_ClipPoly (newc[0], newv_0[0], stage+1); + Sky_ClipPoly (newc[1], newv_1[0], stage+1); + + if (on_heap) + { + free(dists); + free(sides); + free(newv_0); + free(newv_1); + } +} + +/* +================ +Sky_ProcessPoly +================ +*/ +void Sky_ProcessPoly (glpoly_t *p) +{ + //draw it + DrawGLPoly(p); + rs_brushpasses++; + + //update sky bounds + if (!r_fastsky.value) + { + const int max_clip_verts = p->numverts + 2; + const int num_verts = p->numverts; + const int on_heap = max_clip_verts > MAX_CLIP_VERTS; + vec3_t *verts = (vec3_t *) (on_heap ? + malloc(max_clip_verts * sizeof(vec3_t)) : + alloca(max_clip_verts * sizeof(vec3_t))); + int i = 0; + + for ( ; i < num_verts; i++) { + VectorSubtract (p->verts[i], r_origin, verts[i]); + } + Sky_ClipPoly (num_verts, verts[0], 0); + + if (on_heap) free(verts); + } +} + +/* +================ +Sky_ProcessTextureChains -- handles sky polys in world model +================ +*/ +void Sky_ProcessTextureChains (void) +{ + int i; + msurface_t *s; + texture_t *t; + + if (!r_drawworld_cheatsafe) + return; + + for (i=0 ; i<cl.worldmodel->numtextures ; i++) + { + t = cl.worldmodel->textures[i]; + + if (!t || !t->texturechains[chain_world] || !(t->texturechains[chain_world]->flags & SURF_DRAWSKY)) + continue; + + for (s = t->texturechains[chain_world]; s; s = s->texturechain) + Sky_ProcessPoly (s->polys); + } +} + +/* +================ +Sky_ProcessEntities -- handles sky polys on brush models +================ +*/ +void Sky_ProcessEntities (void) +{ + entity_t *e; + msurface_t *s; + glpoly_t *p; + int i,j,k,mark; + float dot; + qboolean rotated; + vec3_t temp, forward, right, up; + + if (!r_drawentities.value) + return; + + for (i=0 ; i<cl_numvisedicts ; i++) + { + e = cl_visedicts[i]; + + if (e->model->type != mod_brush) + continue; + + if (R_CullModelForEntity(e)) + continue; + + if (e->alpha == ENTALPHA_ZERO) + continue; + + VectorSubtract (r_refdef.vieworg, e->origin, modelorg); + if (e->angles[0] || e->angles[1] || e->angles[2]) + { + rotated = true; + AngleVectors (e->angles, forward, right, up); + VectorCopy (modelorg, temp); + modelorg[0] = DotProduct (temp, forward); + modelorg[1] = -DotProduct (temp, right); + modelorg[2] = DotProduct (temp, up); + } + else + rotated = false; + + s = &e->model->surfaces[e->model->firstmodelsurface]; + + for (j=0 ; j<e->model->nummodelsurfaces ; j++, s++) + { + if (s->flags & SURF_DRAWSKY) + { + dot = DotProduct (modelorg, s->plane->normal) - s->plane->dist; + if (((s->flags & SURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) || + (!(s->flags & SURF_PLANEBACK) && (dot > BACKFACE_EPSILON))) + { + //copy the polygon and translate manually, since Sky_ProcessPoly needs it to be in world space + mark = Hunk_LowMark(); + p = (glpoly_t *) Hunk_Alloc (sizeof(*s->polys)); //FIXME: don't allocate for each poly + p->numverts = s->polys->numverts; + for (k=0; k<p->numverts; k++) + { + if (rotated) + { + p->verts[k][0] = e->origin[0] + s->polys->verts[k][0] * forward[0] + - s->polys->verts[k][1] * right[0] + + s->polys->verts[k][2] * up[0]; + p->verts[k][1] = e->origin[1] + s->polys->verts[k][0] * forward[1] + - s->polys->verts[k][1] * right[1] + + s->polys->verts[k][2] * up[1]; + p->verts[k][2] = e->origin[2] + s->polys->verts[k][0] * forward[2] + - s->polys->verts[k][1] * right[2] + + s->polys->verts[k][2] * up[2]; + } + else + VectorAdd(s->polys->verts[k], e->origin, p->verts[k]); + } + Sky_ProcessPoly (p); + Hunk_FreeToLowMark (mark); + } + } + } + } +} + +//============================================================================== +// +// RENDER SKYBOX +// +//============================================================================== + +/* +============== +Sky_EmitSkyBoxVertex +============== +*/ +void Sky_EmitSkyBoxVertex (float s, float t, int axis) +{ + vec3_t v, b; + int j, k; + float w, h; + + b[0] = s * gl_farclip.value / sqrt(3.0); + b[1] = t * gl_farclip.value / sqrt(3.0); + b[2] = gl_farclip.value / sqrt(3.0); + + for (j=0 ; j<3 ; j++) + { + k = st_to_vec[axis][j]; + if (k < 0) + v[j] = -b[-k - 1]; + else + v[j] = b[k - 1]; + v[j] += r_origin[j]; + } + + // convert from range [-1,1] to [0,1] + s = (s+1)*0.5; + t = (t+1)*0.5; + + // avoid bilerp seam + w = skybox_textures[skytexorder[axis]]->width; + h = skybox_textures[skytexorder[axis]]->height; + s = s * (w-1)/w + 0.5/w; + t = t * (h-1)/h + 0.5/h; + + t = 1.0 - t; + glTexCoord2f (s, t); + glVertex3fv (v); +} + +/* +============== +Sky_DrawSkyBox + +FIXME: eliminate cracks by adding an extra vert on tjuncs +============== +*/ +void Sky_DrawSkyBox (void) +{ + int i; + + for (i=0 ; i<6 ; i++) + { + if (skymins[0][i] >= skymaxs[0][i] || skymins[1][i] >= skymaxs[1][i]) + continue; + + GL_Bind (skybox_textures[skytexorder[i]]); + +#if 1 /* FIXME: this is to avoid tjunctions until i can do it the right way */ + skymins[0][i] = -1; + skymins[1][i] = -1; + skymaxs[0][i] = 1; + skymaxs[1][i] = 1; +#endif + glBegin (GL_QUADS); + Sky_EmitSkyBoxVertex (skymins[0][i], skymins[1][i], i); + Sky_EmitSkyBoxVertex (skymins[0][i], skymaxs[1][i], i); + Sky_EmitSkyBoxVertex (skymaxs[0][i], skymaxs[1][i], i); + Sky_EmitSkyBoxVertex (skymaxs[0][i], skymins[1][i], i); + glEnd (); + + rs_skypolys++; + rs_skypasses++; + + if (Fog_GetDensity() > 0 && skyfog > 0) + { + float *c; + + c = Fog_GetColor(); + glEnable (GL_BLEND); + glDisable (GL_TEXTURE_2D); + glColor4f (c[0],c[1],c[2], CLAMP(0.0f,skyfog,1.0f)); + + glBegin (GL_QUADS); + Sky_EmitSkyBoxVertex (skymins[0][i], skymins[1][i], i); + Sky_EmitSkyBoxVertex (skymins[0][i], skymaxs[1][i], i); + Sky_EmitSkyBoxVertex (skymaxs[0][i], skymaxs[1][i], i); + Sky_EmitSkyBoxVertex (skymaxs[0][i], skymins[1][i], i); + glEnd (); + + glColor3f (1, 1, 1); + glEnable (GL_TEXTURE_2D); + glDisable (GL_BLEND); + + rs_skypasses++; + } + } +} + +//============================================================================== +// +// RENDER CLOUDS +// +//============================================================================== + +/* +============== +Sky_SetBoxVert +============== +*/ +void Sky_SetBoxVert (float s, float t, int axis, vec3_t v) +{ + vec3_t b; + int j, k; + + b[0] = s * gl_farclip.value / sqrt(3.0); + b[1] = t * gl_farclip.value / sqrt(3.0); + b[2] = gl_farclip.value / sqrt(3.0); + + for (j=0 ; j<3 ; j++) + { + k = st_to_vec[axis][j]; + if (k < 0) + v[j] = -b[-k - 1]; + else + v[j] = b[k - 1]; + v[j] += r_origin[j]; + } +} + +/* +============= +Sky_GetTexCoord +============= +*/ +void Sky_GetTexCoord (vec3_t v, float speed, float *s, float *t) +{ + vec3_t dir; + float length, scroll; + + VectorSubtract (v, r_origin, dir); + dir[2] *= 3; // flatten the sphere + + length = dir[0]*dir[0] + dir[1]*dir[1] + dir[2]*dir[2]; + length = sqrt (length); + length = 6*63/length; + + scroll = cl.time*speed; + scroll -= (int)scroll & ~127; + + *s = (scroll + dir[0] * length) * (1.0/128); + *t = (scroll + dir[1] * length) * (1.0/128); +} + +/* +=============== +Sky_DrawFaceQuad +=============== +*/ +void Sky_DrawFaceQuad (glpoly_t *p) +{ + float s, t; + float *v; + int i; + + if (gl_mtexable && r_skyalpha.value >= 1.0) + { + GL_Bind (solidskytexture); + GL_EnableMultitexture(); + GL_Bind (alphaskytexture); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + + glBegin (GL_QUADS); + for (i=0, v=p->verts[0] ; i<4 ; i++, v+=VERTEXSIZE) + { + Sky_GetTexCoord (v, 8, &s, &t); + GL_MTexCoord2fFunc (GL_TEXTURE0_ARB, s, t); + Sky_GetTexCoord (v, 16, &s, &t); + GL_MTexCoord2fFunc (GL_TEXTURE1_ARB, s, t); + glVertex3fv (v); + } + glEnd (); + + GL_DisableMultitexture(); + + rs_skypolys++; + rs_skypasses++; + } + else + { + GL_Bind (solidskytexture); + + if (r_skyalpha.value < 1.0) + glColor3f (1, 1, 1); + + glBegin (GL_QUADS); + for (i=0, v=p->verts[0] ; i<4 ; i++, v+=VERTEXSIZE) + { + Sky_GetTexCoord (v, 8, &s, &t); + glTexCoord2f (s, t); + glVertex3fv (v); + } + glEnd (); + + GL_Bind (alphaskytexture); + glEnable (GL_BLEND); + + if (r_skyalpha.value < 1.0) + glColor4f (1, 1, 1, r_skyalpha.value); + + glBegin (GL_QUADS); + for (i=0, v=p->verts[0] ; i<4 ; i++, v+=VERTEXSIZE) + { + Sky_GetTexCoord (v, 16, &s, &t); + glTexCoord2f (s, t); + glVertex3fv (v); + } + glEnd (); + + glDisable (GL_BLEND); + + rs_skypolys++; + rs_skypasses += 2; + } + + if (Fog_GetDensity() > 0 && skyfog > 0) + { + float *c; + + c = Fog_GetColor(); + glEnable (GL_BLEND); + glDisable (GL_TEXTURE_2D); + glColor4f (c[0],c[1],c[2], CLAMP(0.0f,skyfog,1.0f)); + + glBegin (GL_QUADS); + for (i=0, v=p->verts[0] ; i<4 ; i++, v+=VERTEXSIZE) + glVertex3fv (v); + glEnd (); + + glColor3f (1, 1, 1); + glEnable (GL_TEXTURE_2D); + glDisable (GL_BLEND); + + rs_skypasses++; + } +} + +/* +============== +Sky_DrawFace +============== +*/ + +void Sky_DrawFace (int axis) +{ + glpoly_t *p; + vec3_t verts[4]; + int i, j, start; + float di,qi,dj,qj; + vec3_t up, right, temp, temp2; + + Sky_SetBoxVert(-1.0, -1.0, axis, verts[0]); + Sky_SetBoxVert(-1.0, 1.0, axis, verts[1]); + Sky_SetBoxVert(1.0, 1.0, axis, verts[2]); + Sky_SetBoxVert(1.0, -1.0, axis, verts[3]); + + start = Hunk_LowMark (); + p = (glpoly_t *) Hunk_Alloc(sizeof(glpoly_t)); + + VectorSubtract(verts[2],verts[3],up); + VectorSubtract(verts[2],verts[1],right); + + di = q_max((int)r_sky_quality.value, 1); + qi = 1.0 / di; + dj = (axis < 4) ? di*2 : di; //subdivide vertically more than horizontally on skybox sides + qj = 1.0 / dj; + + for (i=0; i<di; i++) + { + for (j=0; j<dj; j++) + { + if (i*qi < skymins[0][axis]/2+0.5 - qi || i*qi > skymaxs[0][axis]/2+0.5 || + j*qj < skymins[1][axis]/2+0.5 - qj || j*qj > skymaxs[1][axis]/2+0.5) + continue; + + //if (i&1 ^ j&1) continue; //checkerboard test + VectorScale (right, qi*i, temp); + VectorScale (up, qj*j, temp2); + VectorAdd(temp,temp2,temp); + VectorAdd(verts[0],temp,p->verts[0]); + + VectorScale (up, qj, temp); + VectorAdd (p->verts[0],temp,p->verts[1]); + + VectorScale (right, qi, temp); + VectorAdd (p->verts[1],temp,p->verts[2]); + + VectorAdd (p->verts[0],temp,p->verts[3]); + + Sky_DrawFaceQuad (p); + } + } + Hunk_FreeToLowMark (start); +} + +/* +============== +Sky_DrawSkyLayers + +draws the old-style scrolling cloud layers +============== +*/ +void Sky_DrawSkyLayers (void) +{ + int i; + + if (r_skyalpha.value < 1.0) + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + for (i=0 ; i<6 ; i++) + if (skymins[0][i] < skymaxs[0][i] && skymins[1][i] < skymaxs[1][i]) + Sky_DrawFace (i); + + if (r_skyalpha.value < 1.0) + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); +} + +/* +============== +Sky_DrawSky + +called once per frame before drawing anything else +============== +*/ +void Sky_DrawSky (void) +{ + int i; + + //in these special render modes, the sky faces are handled in the normal world/brush renderer + if (r_drawflat_cheatsafe || r_lightmap_cheatsafe) + return; + + // + // reset sky bounds + // + for (i=0 ; i<6 ; i++) + { + skymins[0][i] = skymins[1][i] = FLT_MAX; + skymaxs[0][i] = skymaxs[1][i] = -FLT_MAX; + } + + // + // process world and bmodels: draw flat-shaded sky surfs, and update skybounds + // + Fog_DisableGFog (); + glDisable (GL_TEXTURE_2D); + if (Fog_GetDensity() > 0) + glColor3fv (Fog_GetColor()); + else + glColor3fv (skyflatcolor); + Sky_ProcessTextureChains (); + Sky_ProcessEntities (); + glColor3f (1, 1, 1); + glEnable (GL_TEXTURE_2D); + + // + // render slow sky: cloud layers or skybox + // + if (!r_fastsky.value && !(Fog_GetDensity() > 0 && skyfog >= 1)) + { + glDepthFunc(GL_GEQUAL); + glDepthMask(0); + + if (skybox_name[0]) + Sky_DrawSkyBox (); + else + Sky_DrawSkyLayers (); + + glDepthMask(1); + glDepthFunc(GL_LEQUAL); + } + + Fog_EnableGFog (); +} diff --git a/Quake/gl_texmgr.c b/Quake/gl_texmgr.c new file mode 100644 index 0000000..17f2823 --- /dev/null +++ b/Quake/gl_texmgr.c @@ -0,0 +1,1656 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +//gl_texmgr.c -- fitzquake's texture manager. manages opengl texture images + +#include "quakedef.h" + +static const int gl_solid_format = 3; +static const int gl_alpha_format = 4; + +static cvar_t gl_texturemode = {"gl_texturemode", "", CVAR_ARCHIVE}; +static cvar_t gl_texture_anisotropy = {"gl_texture_anisotropy", "1", CVAR_ARCHIVE}; +static cvar_t gl_max_size = {"gl_max_size", "0", CVAR_NONE}; +static cvar_t gl_picmip = {"gl_picmip", "0", CVAR_NONE}; +static GLint gl_hardware_maxsize; + +#define MAX_GLTEXTURES 4096 +static int numgltextures; +static gltexture_t *active_gltextures, *free_gltextures; +gltexture_t *notexture, *nulltexture; + +unsigned int d_8to24table[256]; +unsigned int d_8to24table_fbright[256]; +unsigned int d_8to24table_fbright_fence[256]; +unsigned int d_8to24table_nobright[256]; +unsigned int d_8to24table_nobright_fence[256]; +unsigned int d_8to24table_conchars[256]; + +/* +================================================================================ + + COMMANDS + +================================================================================ +*/ + +typedef struct +{ + int magfilter; + int minfilter; + const char *name; +} glmode_t; +static glmode_t glmodes[] = { + {GL_NEAREST, GL_NEAREST, "GL_NEAREST"}, + {GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST, "GL_NEAREST_MIPMAP_NEAREST"}, + {GL_NEAREST, GL_NEAREST_MIPMAP_LINEAR, "GL_NEAREST_MIPMAP_LINEAR"}, + {GL_LINEAR, GL_LINEAR, "GL_LINEAR"}, + {GL_LINEAR, GL_LINEAR_MIPMAP_NEAREST, "GL_LINEAR_MIPMAP_NEAREST"}, + {GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR, "GL_LINEAR_MIPMAP_LINEAR"}, +}; +#define NUM_GLMODES (int)Q_COUNTOF(glmodes) +static int glmode_idx = NUM_GLMODES - 1; /* trilinear */ + +/* +=============== +TexMgr_DescribeTextureModes_f -- report available texturemodes +=============== +*/ +static void TexMgr_DescribeTextureModes_f (void) +{ + int i; + for (i = 0; i < NUM_GLMODES; i++) + Con_SafePrintf (" %2i: %s\n", i + 1, glmodes[i].name); + Con_Printf ("%i modes\n", i); +} + +/* +=============== +TexMgr_SetFilterModes +=============== +*/ +static void TexMgr_SetFilterModes (gltexture_t *glt) +{ + GL_Bind (glt); + + if (glt->flags & TEXPREF_NEAREST) + { + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } + else if (glt->flags & TEXPREF_LINEAR) + { + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + } + else if (glt->flags & TEXPREF_MIPMAP) + { + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, glmodes[glmode_idx].magfilter); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, glmodes[glmode_idx].minfilter); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_anisotropy.value); + } + else + { + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, glmodes[glmode_idx].magfilter); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, glmodes[glmode_idx].magfilter); + } +} + +/* +=============== +TexMgr_TextureMode_f -- called when gl_texturemode changes +=============== +*/ +static void TexMgr_TextureMode_f (cvar_t *var) +{ + gltexture_t *glt; + int i; + + for (i = 0; i < NUM_GLMODES; i++) + { + if (!Q_strcmp (glmodes[i].name, gl_texturemode.string)) + { + if (glmode_idx != i) + { + glmode_idx = i; + for (glt = active_gltextures; glt; glt = glt->next) + TexMgr_SetFilterModes (glt); + Sbar_Changed (); //sbar graphics need to be redrawn with new filter mode + //FIXME: warpimages need to be redrawn, too. + } + return; + } + } + + for (i = 0; i < NUM_GLMODES; i++) + { + if (!q_strcasecmp (glmodes[i].name, gl_texturemode.string)) + { + Cvar_SetQuick (&gl_texturemode, glmodes[i].name); + return; + } + } + + i = atoi(gl_texturemode.string); + if (i >= 1 && i <= NUM_GLMODES) + { + Cvar_SetQuick (&gl_texturemode, glmodes[i-1].name); + return; + } + + Con_Printf ("\"%s\" is not a valid texturemode\n", gl_texturemode.string); + Cvar_SetQuick (&gl_texturemode, glmodes[glmode_idx].name); +} + +/* +=============== +TexMgr_Anisotropy_f -- called when gl_texture_anisotropy changes +=============== +*/ +static void TexMgr_Anisotropy_f (cvar_t *var) +{ + if (gl_texture_anisotropy.value < 1) + { + Cvar_SetQuick (&gl_texture_anisotropy, "1"); + } + else if (gl_texture_anisotropy.value > gl_max_anisotropy) + { + Cvar_SetValueQuick (&gl_texture_anisotropy, gl_max_anisotropy); + } + else + { + gltexture_t *glt; + for (glt = active_gltextures; glt; glt = glt->next) + { + /* TexMgr_SetFilterModes (glt);*/ + if (glt->flags & TEXPREF_MIPMAP) { + GL_Bind (glt); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, glmodes[glmode_idx].magfilter); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, glmodes[glmode_idx].minfilter); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, gl_texture_anisotropy.value); + } + } + } +} + +/* +=============== +TexMgr_Imagelist_f -- report loaded textures +=============== +*/ +static void TexMgr_Imagelist_f (void) +{ + float mb; + float texels = 0; + gltexture_t *glt; + + for (glt = active_gltextures; glt; glt = glt->next) + { + Con_SafePrintf (" %4i x%4i %s\n", glt->width, glt->height, glt->name); + if (glt->flags & TEXPREF_MIPMAP) + texels += glt->width * glt->height * 4.0f / 3.0f; + else + texels += (glt->width * glt->height); + } + + mb = texels * (Cvar_VariableValue("vid_bpp") / 8.0f) / 0x100000; + Con_Printf ("%i textures %i pixels %1.1f megabytes\n", numgltextures, (int)texels, mb); +} + +/* +=============== +TexMgr_Imagedump_f -- dump all current textures to TGA files +=============== +*/ +#ifndef __EMSCRIPTEN__ +static void TexMgr_Imagedump_f (void) +{ + char tganame[MAX_OSPATH], tempname[MAX_OSPATH], dirname[MAX_OSPATH]; + gltexture_t *glt; + byte *buffer; + char *c; + + //create directory + q_snprintf(dirname, sizeof(dirname), "%s/imagedump", com_gamedir); + Sys_mkdir (dirname); + + //loop through textures + for (glt = active_gltextures; glt; glt = glt->next) + { + q_strlcpy (tempname, glt->name, sizeof(tempname)); + while ((c = strchr(tempname, ':')) != NULL) *c = '_'; + while ((c = strchr(tempname, '/')) != NULL) *c = '_'; + while ((c = strchr(tempname, '*')) != NULL) *c = '_'; + q_snprintf(tganame, sizeof(tganame), "imagedump/%s.tga", tempname); + + GL_Bind (glt); + glPixelStorei (GL_PACK_ALIGNMENT, 1);/* for widths that aren't a multiple of 4 */ + + if (glt->flags & TEXPREF_ALPHA) + { + buffer = (byte *) malloc(glt->width*glt->height*4); + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer); + Image_WriteTGA (tganame, buffer, glt->width, glt->height, 32, true); + } + else + { + buffer = (byte *) malloc(glt->width*glt->height*3); + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer); + Image_WriteTGA (tganame, buffer, glt->width, glt->height, 24, true); + } + free (buffer); + } + + Con_Printf ("dumped %i textures to %s\n", numgltextures, dirname); +} +#endif +/* +=============== +TexMgr_FrameUsage -- report texture memory usage for this frame +=============== +*/ +float TexMgr_FrameUsage (void) +{ + float mb; + float texels = 0; + gltexture_t *glt; + + for (glt = active_gltextures; glt; glt = glt->next) + { + if (glt->visframe == r_framecount) + { + if (glt->flags & TEXPREF_MIPMAP) + texels += glt->width * glt->height * 4.0f / 3.0f; + else + texels += (glt->width * glt->height); + } + } + + mb = texels * (Cvar_VariableValue("vid_bpp") / 8.0f) / 0x100000; + return mb; +} + +/* +================================================================================ + + TEXTURE MANAGER + +================================================================================ +*/ + +/* +================ +TexMgr_FindTexture +================ +*/ +gltexture_t *TexMgr_FindTexture (qmodel_t *owner, const char *name) +{ + gltexture_t *glt; + + if (name) + { + for (glt = active_gltextures; glt; glt = glt->next) + { + if (glt->owner == owner && !strcmp (glt->name, name)) + return glt; + } + } + + return NULL; +} + +/* +================ +TexMgr_NewTexture +================ +*/ +gltexture_t *TexMgr_NewTexture (void) +{ + gltexture_t *glt; + + if (numgltextures == MAX_GLTEXTURES) + Sys_Error("numgltextures == MAX_GLTEXTURES\n"); + + glt = free_gltextures; + free_gltextures = glt->next; + glt->next = active_gltextures; + active_gltextures = glt; + + glGenTextures(1, &glt->texnum); + numgltextures++; + return glt; +} + +static void GL_DeleteTexture (gltexture_t *texture); + +//ericw -- workaround for preventing TexMgr_FreeTexture during TexMgr_ReloadImages +static qboolean in_reload_images; + +/* +================ +TexMgr_FreeTexture +================ +*/ +void TexMgr_FreeTexture (gltexture_t *kill) +{ + gltexture_t *glt; + + if (in_reload_images) + return; + + if (kill == NULL) + { + Con_Printf ("TexMgr_FreeTexture: NULL texture\n"); + return; + } + + if (active_gltextures == kill) + { + active_gltextures = kill->next; + kill->next = free_gltextures; + free_gltextures = kill; + + GL_DeleteTexture(kill); + numgltextures--; + return; + } + + for (glt = active_gltextures; glt; glt = glt->next) + { + if (glt->next == kill) + { + glt->next = kill->next; + kill->next = free_gltextures; + free_gltextures = kill; + + GL_DeleteTexture(kill); + numgltextures--; + return; + } + } + + Con_Printf ("TexMgr_FreeTexture: not found\n"); +} + +/* +================ +TexMgr_FreeTextures + +compares each bit in "flags" to the one in glt->flags only if that bit is active in "mask" +================ +*/ +void TexMgr_FreeTextures (unsigned int flags, unsigned int mask) +{ + gltexture_t *glt, *next; + + for (glt = active_gltextures; glt; glt = next) + { + next = glt->next; + if ((glt->flags & mask) == (flags & mask)) + TexMgr_FreeTexture (glt); + } +} + +/* +================ +TexMgr_FreeTexturesForOwner +================ +*/ +void TexMgr_FreeTexturesForOwner (qmodel_t *owner) +{ + gltexture_t *glt, *next; + + for (glt = active_gltextures; glt; glt = next) + { + next = glt->next; + if (glt && glt->owner == owner) + TexMgr_FreeTexture (glt); + } +} + +/* +================ +TexMgr_DeleteTextureObjects +================ +*/ +void TexMgr_DeleteTextureObjects (void) +{ + gltexture_t *glt; + + for (glt = active_gltextures; glt; glt = glt->next) + { + GL_DeleteTexture (glt); + } +} + +/* +================================================================================ + + INIT + +================================================================================ +*/ + +/* +================= +TexMgr_LoadPalette -- johnfitz -- was VID_SetPalette, moved here, renamed, rewritten +================= +*/ +void TexMgr_LoadPalette (void) +{ + byte *pal, *src, *dst; + int i, mark; + FILE *f; + + COM_FOpenFile ("gfx/palette.lmp", &f, NULL); + if (!f) + Sys_Error ("Couldn't load gfx/palette.lmp"); + + mark = Hunk_LowMark (); + pal = (byte *) Hunk_Alloc (768); + if (!fread(pal, 768, 1, f)) + Sys_Error ("Failed reading gfx/palette.lmp"); + fclose(f); + + //standard palette, 255 is transparent + dst = (byte *)d_8to24table; + src = pal; + for (i = 0; i < 256; i++) + { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = 255; + } + ((byte *) &d_8to24table[255]) [3] = 0; + + //fullbright palette, 0-223 are black (for additive blending) + src = pal + 224*3; + dst = (byte *) &d_8to24table_fbright[224]; + for (i = 224; i < 256; i++) + { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = 255; + } + for (i = 0; i < 224; i++) + { + dst = (byte *) &d_8to24table_fbright[i]; + dst[3] = 255; + dst[2] = dst[1] = dst[0] = 0; + } + + //nobright palette, 224-255 are black (for additive blending) + dst = (byte *)d_8to24table_nobright; + src = pal; + for (i = 0; i < 256; i++) + { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = 255; + } + for (i = 224; i < 256; i++) + { + dst = (byte *) &d_8to24table_nobright[i]; + dst[3] = 255; + dst[2] = dst[1] = dst[0] = 0; + } + + //fullbright palette, for fence textures + memcpy(d_8to24table_fbright_fence, d_8to24table_fbright, 256*4); + d_8to24table_fbright_fence[255] = 0; // Alpha of zero. + + //nobright palette, for fence textures + memcpy(d_8to24table_nobright_fence, d_8to24table_nobright, 256*4); + d_8to24table_nobright_fence[255] = 0; // Alpha of zero. + + //conchars palette, 0 and 255 are transparent + memcpy(d_8to24table_conchars, d_8to24table, 256*4); + ((byte *) &d_8to24table_conchars[0]) [3] = 0; + + Hunk_FreeToLowMark (mark); +} + +/* +================= +TexMgr_LoadMiptexPalette -- convert a 24bit color palette to 32bit +================= +*/ +static void TexMgr_LoadMiptexPalette (byte *in, byte *out, int numcolors, unsigned flags) +{ + extern cvar_t gl_fullbrights; + int i, numnobright; + + if (numcolors == 0) + return; + + if (!(flags & (TEXPREF_FULLBRIGHT | TEXPREF_NOBRIGHT))) + { + for (i = 0; i < numcolors; i++) + { + *out++ = *in++; + *out++ = *in++; + *out++ = *in++; + *out++ = 255; + } + } + else + { + numnobright = q_min (224, numcolors); + if (flags & TEXPREF_NOBRIGHT) + { + // nobright palette + if (!gl_fullbrights.value) + numnobright = numcolors; + for (i = 0; i < numnobright; i++) + { + *out++ = *in++; + *out++ = *in++; + *out++ = *in++; + *out++ = 255; + } + // 224-255 are black (for additive blending) + for (i = numnobright; i < numcolors; i++) + { + *out++ = 0; + *out++ = 0; + *out++ = 0; + *out++ = 255; + } + } + else + { + // fullbright palette + // 0-223 are black (for additive blending) + for (i = 0; i < numnobright; i++) + { + *out++ = 0; + *out++ = 0; + *out++ = 0; + *out++ = 255; + } + in += numnobright * 3; + for (i = numnobright; i < numcolors; i++) + { + *out++ = *in++; + *out++ = *in++; + *out++ = *in++; + *out++ = 255; + } + } + } + + // 255 is transparent + if (flags & TEXPREF_ALPHA) + out[-1] = 0; +} + +/* +================ +TexMgr_NewGame +================ +*/ +void TexMgr_NewGame (void) +{ + TexMgr_FreeTextures (0, TEXPREF_PERSIST); //deletes all textures where TEXPREF_PERSIST is unset + TexMgr_LoadPalette (); +} + +/* +============= +TexMgr_RecalcWarpImageSize -- called during init, and after a vid_restart + +choose safe warpimage size and resize existing warpimage textures +============= +*/ +void TexMgr_RecalcWarpImageSize (void) +{ +// int oldsize = gl_warpimagesize; + int mark; + gltexture_t *glt; + byte *dummy; + + // + // find the new correct size + // + gl_warpimagesize = TexMgr_SafeTextureSize (512); + + while (gl_warpimagesize > vid.width) + gl_warpimagesize >>= 1; + while (gl_warpimagesize > vid.height) + gl_warpimagesize >>= 1; + + // ericw -- removed early exit if (gl_warpimagesize == oldsize). + // after vid_restart TexMgr_ReloadImage reloads textures + // to tx->source_width/source_height, which might not match oldsize. + // fixes: https://sourceforge.net/p/quakespasm/bugs/13/ + + // + // resize the textures in opengl + // + mark = Hunk_LowMark(); + dummy = (byte *) Hunk_Alloc (gl_warpimagesize*gl_warpimagesize*4); + + for (glt = active_gltextures; glt; glt = glt->next) + { + if (glt->flags & TEXPREF_WARPIMAGE) + { + GL_Bind (glt); + glTexImage2D (GL_TEXTURE_2D, 0, gl_solid_format, gl_warpimagesize, gl_warpimagesize, 0, GL_RGBA, GL_UNSIGNED_BYTE, dummy); + glt->width = glt->height = gl_warpimagesize; + } + } + + Hunk_FreeToLowMark (mark); +} + +/* +================ +TexMgr_Init + +must be called before any texture loading +================ +*/ +void TexMgr_Init (void) +{ + int i; + static byte notexture_data[16] = {159,91,83,255,0,0,0,255,0,0,0,255,159,91,83,255}; //black and pink checker + static byte nulltexture_data[16] = {127,191,255,255,0,0,0,255,0,0,0,255,127,191,255,255}; //black and blue checker + + // init texture list + free_gltextures = (gltexture_t *) Hunk_AllocName (MAX_GLTEXTURES * sizeof(gltexture_t), "gltextures"); + active_gltextures = NULL; + for (i = 0; i < MAX_GLTEXTURES - 1; i++) + free_gltextures[i].next = &free_gltextures[i+1]; + free_gltextures[i].next = NULL; + numgltextures = 0; + + // palette + TexMgr_LoadPalette (); + + Cvar_RegisterVariable (&gl_max_size); + Cvar_RegisterVariable (&gl_picmip); + Cvar_RegisterVariable (&gl_texture_anisotropy); + Cvar_SetCallback (&gl_texture_anisotropy, &TexMgr_Anisotropy_f); + gl_texturemode.string = glmodes[glmode_idx].name; + Cvar_RegisterVariable (&gl_texturemode); + Cvar_SetCallback (&gl_texturemode, &TexMgr_TextureMode_f); + Cmd_AddCommand ("gl_describetexturemodes", &TexMgr_DescribeTextureModes_f); + Cmd_AddCommand ("imagelist", &TexMgr_Imagelist_f); +#ifndef __EMSCRIPTEN__ + Cmd_AddCommand ("imagedump", &TexMgr_Imagedump_f); +#endif + // poll max size from hardware + glGetIntegerv (GL_MAX_TEXTURE_SIZE, &gl_hardware_maxsize); + + // load notexture images + notexture = TexMgr_LoadImage (NULL, "notexture", 2, 2, SRC_RGBA, notexture_data, "", (src_offset_t)notexture_data, TEXPREF_NEAREST | TEXPREF_PERSIST | TEXPREF_NOPICMIP); + nulltexture = TexMgr_LoadImage (NULL, "nulltexture", 2, 2, SRC_RGBA, nulltexture_data, "", (src_offset_t)nulltexture_data, TEXPREF_NEAREST | TEXPREF_PERSIST | TEXPREF_NOPICMIP); + + //have to assign these here becuase Mod_Init is called before TexMgr_Init + r_notexture_mip->gltexture = r_notexture_mip2->gltexture = notexture; + + //set safe size for warpimages + gl_warpimagesize = 0; + TexMgr_RecalcWarpImageSize (); +} + +/* +================================================================================ + + IMAGE LOADING + +================================================================================ +*/ + +/* +================ +TexMgr_Pad -- return smallest power of two greater than or equal to s +================ +*/ +int TexMgr_Pad (int s) +{ + int i; + for (i = 1; i < s; i<<=1) + ; + return i; +} + +/* +=============== +TexMgr_SafeTextureSize -- return a size with hardware and user prefs in mind +=============== +*/ +int TexMgr_SafeTextureSize (int s) +{ + int p = (int)gl_max_size.value; + if (!gl_texture_NPOT) + s = TexMgr_Pad(s); + if (p > 0) { + p = TexMgr_Pad(p); + if (p < s) s = p; + } + if (s > gl_hardware_maxsize) + s = gl_hardware_maxsize; + return s; +} + +/* +================ +TexMgr_PadConditional -- only pad if a texture of that size would be padded. (used for tex coords) +================ +*/ +int TexMgr_PadConditional (int s) +{ + if (s < TexMgr_SafeTextureSize(s)) + return TexMgr_Pad(s); + return s; +} + +/* +================ +TexMgr_MipMapW +================ +*/ +static unsigned *TexMgr_MipMapW (unsigned *data, int width, int height) +{ + int i, size; + byte *out, *in; + + out = in = (byte *)data; + size = (width*height)>>1; + + for (i = 0; i < size; i++, out += 4, in += 8) + { + out[0] = (in[0] + in[4])>>1; + out[1] = (in[1] + in[5])>>1; + out[2] = (in[2] + in[6])>>1; + out[3] = (in[3] + in[7])>>1; + } + + return data; +} + +/* +================ +TexMgr_MipMapH +================ +*/ +static unsigned *TexMgr_MipMapH (unsigned *data, int width, int height) +{ + int i, j; + byte *out, *in; + + out = in = (byte *)data; + height>>=1; + width<<=2; + + for (i = 0; i < height; i++, in += width) + { + for (j = 0; j < width; j += 4, out += 4, in += 4) + { + out[0] = (in[0] + in[width+0])>>1; + out[1] = (in[1] + in[width+1])>>1; + out[2] = (in[2] + in[width+2])>>1; + out[3] = (in[3] + in[width+3])>>1; + } + } + + return data; +} + +/* +================ +TexMgr_ResampleTexture -- bilinear resample +================ +*/ +static unsigned *TexMgr_ResampleTexture (unsigned *in, int inwidth, int inheight, qboolean alpha) +{ + byte *nwpx, *nepx, *swpx, *sepx, *dest; + unsigned xfrac, yfrac, x, y, modx, mody, imodx, imody, injump, outjump; + unsigned *out; + int i, j, outwidth, outheight; + + if (inwidth == TexMgr_Pad(inwidth) && inheight == TexMgr_Pad(inheight)) + return in; + + outwidth = TexMgr_Pad(inwidth); + outheight = TexMgr_Pad(inheight); + out = (unsigned *) Hunk_Alloc(outwidth*outheight*4); + + xfrac = ((inwidth-1) << 16) / (outwidth-1); + yfrac = ((inheight-1) << 16) / (outheight-1); + y = outjump = 0; + + for (i = 0; i < outheight; i++) + { + mody = (y>>8) & 0xFF; + imody = 256 - mody; + injump = (y>>16) * inwidth; + x = 0; + + for (j = 0; j < outwidth; j++) + { + modx = (x>>8) & 0xFF; + imodx = 256 - modx; + + nwpx = (byte *)(in + (x>>16) + injump); + nepx = nwpx + 4; + swpx = nwpx + inwidth*4; + sepx = swpx + 4; + + dest = (byte *)(out + outjump + j); + + dest[0] = (nwpx[0]*imodx*imody + nepx[0]*modx*imody + swpx[0]*imodx*mody + sepx[0]*modx*mody)>>16; + dest[1] = (nwpx[1]*imodx*imody + nepx[1]*modx*imody + swpx[1]*imodx*mody + sepx[1]*modx*mody)>>16; + dest[2] = (nwpx[2]*imodx*imody + nepx[2]*modx*imody + swpx[2]*imodx*mody + sepx[2]*modx*mody)>>16; + if (alpha) + dest[3] = (nwpx[3]*imodx*imody + nepx[3]*modx*imody + swpx[3]*imodx*mody + sepx[3]*modx*mody)>>16; + else + dest[3] = 255; + + x += xfrac; + } + outjump += outwidth; + y += yfrac; + } + + return out; +} + +/* +=============== +TexMgr_AlphaEdgeFix + +eliminate pink edges on sprites, etc. +operates in place on 32bit data +=============== +*/ +static void TexMgr_AlphaEdgeFix (byte *data, int width, int height) +{ + int i, j, n = 0, b, c[3] = {0,0,0}, + lastrow, thisrow, nextrow, + lastpix, thispix, nextpix; + byte *dest = data; + + for (i = 0; i < height; i++) + { + lastrow = width * 4 * ((i == 0) ? height-1 : i-1); + thisrow = width * 4 * i; + nextrow = width * 4 * ((i == height-1) ? 0 : i+1); + + for (j = 0; j < width; j++, dest += 4) + { + if (dest[3]) //not transparent + continue; + + lastpix = 4 * ((j == 0) ? width-1 : j-1); + thispix = 4 * j; + nextpix = 4 * ((j == width-1) ? 0 : j+1); + + b = lastrow + lastpix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = thisrow + lastpix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = nextrow + lastpix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = lastrow + thispix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = nextrow + thispix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = lastrow + nextpix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = thisrow + nextpix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + b = nextrow + nextpix; if (data[b+3]) {c[0] += data[b]; c[1] += data[b+1]; c[2] += data[b+2]; n++;} + + //average all non-transparent neighbors + if (n) + { + dest[0] = (byte)(c[0]/n); + dest[1] = (byte)(c[1]/n); + dest[2] = (byte)(c[2]/n); + + n = c[0] = c[1] = c[2] = 0; + } + } + } +} + +/* +=============== +TexMgr_PadEdgeFixW -- special case of AlphaEdgeFix for textures that only need it because they were padded + +operates in place on 32bit data, and expects unpadded height and width values +=============== +*/ +static void TexMgr_PadEdgeFixW (byte *data, int width, int height) +{ + byte *src, *dst; + int i, padw, padh; + + padw = TexMgr_PadConditional(width); + padh = TexMgr_PadConditional(height); + + //copy last full column to first empty column, leaving alpha byte at zero + src = data + (width - 1) * 4; + for (i = 0; i < padh; i++) + { + src[4] = src[0]; + src[5] = src[1]; + src[6] = src[2]; + src += padw * 4; + } + + //copy first full column to last empty column, leaving alpha byte at zero + src = data; + dst = data + (padw - 1) * 4; + for (i = 0; i < padh; i++) + { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + src += padw * 4; + dst += padw * 4; + } +} + +/* +=============== +TexMgr_PadEdgeFixH -- special case of AlphaEdgeFix for textures that only need it because they were padded + +operates in place on 32bit data, and expects unpadded height and width values +=============== +*/ +static void TexMgr_PadEdgeFixH (byte *data, int width, int height) +{ + byte *src, *dst; + int i, padw, padh; + + padw = TexMgr_PadConditional(width); + padh = TexMgr_PadConditional(height); + + //copy last full row to first empty row, leaving alpha byte at zero + dst = data + height * padw * 4; + src = dst - padw * 4; + for (i = 0; i < padw; i++) + { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + src += 4; + dst += 4; + } + + //copy first full row to last empty row, leaving alpha byte at zero + dst = data + (padh - 1) * padw * 4; + src = data; + for (i = 0; i < padw; i++) + { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + src += 4; + dst += 4; + } +} + +/* +================ +TexMgr_8to32 +================ +*/ +static unsigned *TexMgr_8to32 (byte *in, int pixels, unsigned int *usepal) +{ + int i; + unsigned *out, *data; + + out = data = (unsigned *) Hunk_Alloc(pixels*4); + + for (i = 0; i < pixels; i++) + *out++ = usepal[*in++]; + + return data; +} + +/* +================ +TexMgr_PadImageW -- return image with width padded up to power-of-two dimentions +================ +*/ +static byte *TexMgr_PadImageW (byte *in, int width, int height, byte padbyte) +{ + int i, j, outwidth; + byte *out, *data; + + if (width == TexMgr_Pad(width)) + return in; + + outwidth = TexMgr_Pad(width); + + out = data = (byte *) Hunk_Alloc(outwidth*height); + + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + *out++ = *in++; + for ( ; j < outwidth; j++) + *out++ = padbyte; + } + + return data; +} + +/* +================ +TexMgr_PadImageH -- return image with height padded up to power-of-two dimentions +================ +*/ +static byte *TexMgr_PadImageH (byte *in, int width, int height, byte padbyte) +{ + int i, srcpix, dstpix; + byte *data, *out; + + if (height == TexMgr_Pad(height)) + return in; + + srcpix = width * height; + dstpix = width * TexMgr_Pad(height); + + out = data = (byte *) Hunk_Alloc(dstpix); + + for (i = 0; i < srcpix; i++) + *out++ = *in++; + for ( ; i < dstpix; i++) + *out++ = padbyte; + + return data; +} + +/* +================ +TexMgr_LoadImage32 -- handles 32bit source data +================ +*/ +static void TexMgr_LoadImage32 (gltexture_t *glt, unsigned *data) +{ + int internalformat, miplevel, mipwidth, mipheight, picmip; + + if (!gl_texture_NPOT) + { + // resample up + data = TexMgr_ResampleTexture (data, glt->width, glt->height, glt->flags & TEXPREF_ALPHA); + glt->width = TexMgr_Pad(glt->width); + glt->height = TexMgr_Pad(glt->height); + } + + // mipmap down + picmip = (glt->flags & TEXPREF_NOPICMIP) ? 0 : q_max((int)gl_picmip.value, 0); + mipwidth = TexMgr_SafeTextureSize (glt->width >> picmip); + mipheight = TexMgr_SafeTextureSize (glt->height >> picmip); + while ((int) glt->width > mipwidth) + { + TexMgr_MipMapW (data, glt->width, glt->height); + glt->width >>= 1; + if (glt->flags & TEXPREF_ALPHA) + TexMgr_AlphaEdgeFix ((byte *)data, glt->width, glt->height); + } + while ((int) glt->height > mipheight) + { + TexMgr_MipMapH (data, glt->width, glt->height); + glt->height >>= 1; + if (glt->flags & TEXPREF_ALPHA) + TexMgr_AlphaEdgeFix ((byte *)data, glt->width, glt->height); + } + + // upload + GL_Bind (glt); + internalformat = (glt->flags & TEXPREF_ALPHA) ? gl_alpha_format : gl_solid_format; + glTexImage2D (GL_TEXTURE_2D, 0, internalformat, glt->width, glt->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); + + // upload mipmaps + if (glt->flags & TEXPREF_MIPMAP && !(glt->flags & TEXPREF_WARPIMAGE)) // warp image mipmaps are generated later + { + mipwidth = glt->width; + mipheight = glt->height; + + for (miplevel = 1; mipwidth > 1 || mipheight > 1; miplevel++) + { + if (mipwidth > 1) + { + TexMgr_MipMapW (data, mipwidth, mipheight); + mipwidth >>= 1; + } + if (mipheight > 1) + { + TexMgr_MipMapH (data, mipwidth, mipheight); + mipheight >>= 1; + } + glTexImage2D (GL_TEXTURE_2D, miplevel, internalformat, mipwidth, mipheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); + } + } + + // set filter modes + TexMgr_SetFilterModes (glt); +} + +/* +================ +TexMgr_LoadImage8 -- handles 8bit source data, then passes it to LoadImage32 +================ +*/ +static void TexMgr_LoadImage8 (gltexture_t *glt, byte *data, unsigned int *usepal) +{ + extern cvar_t gl_fullbrights; + qboolean padw = false, padh = false; + byte padbyte = 0; + int i; + + // HACK HACK HACK -- taken from tomazquake + if (strstr(glt->name, "shot1sid") && + glt->width == 32 && glt->height == 32 && + CRC_Block(data, 1024) == 65393) + { + // This texture in b_shell1.bsp has some of the first 32 pixels painted white. + // They are invisible in software, but look really ugly in GL. So we just copy + // 32 pixels from the bottom to make it look nice. + memcpy (data, data + 32*31, 32); + } + + // detect false alpha cases + if (glt->flags & TEXPREF_ALPHA && !(glt->flags & TEXPREF_CONCHARS)) + { + for (i = 0; i < (int) (glt->width * glt->height); i++) + if (data[i] == 255) //transparent index + break; + if (i == (int) (glt->width * glt->height)) + glt->flags -= TEXPREF_ALPHA; + } + + // choose palette and padbyte + if (!usepal) + { + if (glt->flags & TEXPREF_FULLBRIGHT) + { + if (glt->flags & TEXPREF_ALPHA) + usepal = d_8to24table_fbright_fence; + else + usepal = d_8to24table_fbright; + padbyte = 0; + } + else if (glt->flags & TEXPREF_NOBRIGHT && gl_fullbrights.value) + { + if (glt->flags & TEXPREF_ALPHA) + usepal = d_8to24table_nobright_fence; + else + usepal = d_8to24table_nobright; + padbyte = 0; + } + else if (glt->flags & TEXPREF_CONCHARS) + { + usepal = d_8to24table_conchars; + padbyte = 0; + } + else + { + usepal = d_8to24table; + padbyte = 255; + } + } + + // pad each dimention, but only if it's not going to be downsampled later + if (glt->flags & TEXPREF_PAD) + { + if ((int) glt->width < TexMgr_SafeTextureSize(glt->width)) + { + data = TexMgr_PadImageW (data, glt->width, glt->height, padbyte); + glt->width = TexMgr_Pad(glt->width); + padw = true; + } + if ((int) glt->height < TexMgr_SafeTextureSize(glt->height)) + { + data = TexMgr_PadImageH (data, glt->width, glt->height, padbyte); + glt->height = TexMgr_Pad(glt->height); + padh = true; + } + } + + // convert to 32bit + data = (byte *)TexMgr_8to32(data, glt->width * glt->height, usepal); + + // fix edges + if (glt->flags & TEXPREF_ALPHA) + TexMgr_AlphaEdgeFix (data, glt->width, glt->height); + else + { + if (padw) + TexMgr_PadEdgeFixW (data, glt->source_width, glt->source_height); + if (padh) + TexMgr_PadEdgeFixH (data, glt->source_width, glt->source_height); + } + + // upload it + TexMgr_LoadImage32 (glt, (unsigned *)data); +} + +/* +================ +TexMgr_LoadLightmap -- handles lightmap data +================ +*/ +static void TexMgr_LoadLightmap (gltexture_t *glt, byte *data) +{ + const qboolean wide10bits = !!r_lightmapwide.value; + const GLenum type = wide10bits ? GL_UNSIGNED_INT_10_10_10_2 : GL_UNSIGNED_BYTE; + const GLint internalfmt = wide10bits ? GL_RGB10_A2 : lightmap_bytes; + + // upload it + GL_Bind (glt); + glTexImage2D (GL_TEXTURE_2D, 0, internalfmt, glt->width, glt->height, 0, gl_lightmap_format, type, data); + + // set filter modes + TexMgr_SetFilterModes (glt); +} + +/* +================ +TexMgr_LoadImage8Valve +================ +*/ +static void TexMgr_LoadImage8Valve (gltexture_t *glt, byte *data) +{ + byte *in, *usepal; + unsigned short colors; + + in = data + glt->source_width * glt->source_height; + + memcpy (&colors, in, 2); + colors = LittleShort (colors); + + usepal = (byte *)Hunk_Alloc (colors * 4); + TexMgr_LoadMiptexPalette (in + 2, usepal, colors, glt->flags); + TexMgr_LoadImage8 (glt, data, (unsigned *)usepal); +} + +/* +================ +TexMgr_LoadImage -- the one entry point for loading all textures +================ +*/ +gltexture_t *TexMgr_LoadImage (qmodel_t *owner, const char *name, int width, int height, enum srcformat format, + byte *data, const char *source_file, src_offset_t source_offset, unsigned flags) +{ + unsigned short crc; + gltexture_t *glt; + int mark; + + if (isDedicated) + return NULL; + + // cache check + switch (format) + { + case SRC_INDEXED: + case SRC_INDEXED_PALETTE: + crc = CRC_Block(data, width * height); + break; + case SRC_LIGHTMAP: + crc = CRC_Block(data, width * height * lightmap_bytes); + break; + case SRC_RGBA: + crc = CRC_Block(data, width * height * 4); + break; + default: /* not reachable but avoids compiler warnings */ + crc = 0; + } + if ((flags & TEXPREF_OVERWRITE) && (glt = TexMgr_FindTexture (owner, name))) + { + if (glt->source_crc == crc) + return glt; + } + else + glt = TexMgr_NewTexture (); + + // copy data + glt->owner = owner; + q_strlcpy (glt->name, name, sizeof(glt->name)); + glt->width = width; + glt->height = height; + glt->flags = flags; + glt->shirt = -1; + glt->pants = -1; + q_strlcpy (glt->source_file, source_file, sizeof(glt->source_file)); + glt->source_offset = source_offset; + glt->source_format = format; + glt->source_width = width; + glt->source_height = height; + glt->source_crc = crc; + + //upload it + mark = Hunk_LowMark(); + + switch (glt->source_format) + { + case SRC_INDEXED: + TexMgr_LoadImage8 (glt, data, NULL); + break; + case SRC_LIGHTMAP: + TexMgr_LoadLightmap (glt, data); + break; + case SRC_RGBA: + TexMgr_LoadImage32 (glt, (unsigned *)data); + break; + case SRC_INDEXED_PALETTE: + TexMgr_LoadImage8Valve (glt, data); + break; + } + + Hunk_FreeToLowMark(mark); + + return glt; +} + +/* +================================================================================ + + COLORMAPPING AND TEXTURE RELOADING + +================================================================================ +*/ + +/* +================ +TexMgr_ReloadImage -- reloads a texture, and colormaps it if needed +================ +*/ +void TexMgr_ReloadImage (gltexture_t *glt, int shirt, int pants) +{ + byte translation[256]; + byte *src, *dst, *data = NULL, *translated; + int mark, size, i; + +// +// get source data +// + mark = Hunk_LowMark (); + + if (glt->source_file[0] && glt->source_offset) { + //lump inside file + FILE *f; + int sz; + COM_FOpenFile(glt->source_file, &f, NULL); + if (!f) goto invalid; + fseek (f, glt->source_offset, SEEK_CUR); + size = glt->source_width * glt->source_height; + /* should be SRC_INDEXED, but no harm being paranoid: */ + if (glt->source_format == SRC_RGBA) { + size *= 4; + } + else if (glt->source_format == SRC_LIGHTMAP) { + size *= lightmap_bytes; + } + data = (byte *) Hunk_Alloc (size); + sz = (int) fread (data, 1, size, f); + fclose (f); + if (sz != size) { + Hunk_FreeToLowMark(mark); + Host_Error("Read error for %s", glt->name); + } + } + else if (glt->source_file[0] && !glt->source_offset) { + data = Image_LoadImage (glt->source_file, (int *)&glt->source_width, (int *)&glt->source_height); //simple file + } + else if (!glt->source_file[0] && glt->source_offset) { + data = (byte *) glt->source_offset; //image in memory + } + if (!data) { +invalid: Con_Printf ("TexMgr_ReloadImage: invalid source for %s\n", glt->name); + Hunk_FreeToLowMark(mark); + return; + } + + glt->width = glt->source_width; + glt->height = glt->source_height; +// +// apply shirt and pants colors +// +// if shirt and pants are -1,-1, use existing shirt and pants colors +// if existing shirt and pants colors are -1,-1, don't bother colormapping + if (shirt > -1 && pants > -1) + { + if (glt->source_format == SRC_INDEXED) + { + glt->shirt = shirt; + glt->pants = pants; + } + else + Con_Printf ("TexMgr_ReloadImage: can't colormap a non SRC_INDEXED texture: %s\n", glt->name); + } + if (glt->shirt > -1 && glt->pants > -1) + { + //create new translation table + for (i = 0; i < 256; i++) + translation[i] = i; + + shirt = glt->shirt * 16; + if (shirt < 128) + { + for (i = 0; i < 16; i++) + translation[TOP_RANGE+i] = shirt + i; + } + else + { + for (i = 0; i < 16; i++) + translation[TOP_RANGE+i] = shirt+15-i; + } + + pants = glt->pants * 16; + if (pants < 128) + { + for (i = 0; i < 16; i++) + translation[BOTTOM_RANGE+i] = pants + i; + } + else + { + for (i = 0; i < 16; i++) + translation[BOTTOM_RANGE+i] = pants+15-i; + } + + //translate texture + size = glt->width * glt->height; + dst = translated = (byte *) Hunk_Alloc (size); + src = data; + + for (i = 0; i < size; i++) + *dst++ = translation[*src++]; + + data = translated; + } +// +// upload it +// + switch (glt->source_format) + { + case SRC_INDEXED: + TexMgr_LoadImage8 (glt, data, NULL); + break; + case SRC_LIGHTMAP: + TexMgr_LoadLightmap (glt, data); + break; + case SRC_RGBA: + TexMgr_LoadImage32 (glt, (unsigned *)data); + break; + case SRC_INDEXED_PALETTE: + TexMgr_LoadImage8Valve (glt, data); + break; + } + + Hunk_FreeToLowMark(mark); +} + +/* +================ +TexMgr_ReloadImages -- reloads all texture images. called only by vid_restart +================ +*/ +void TexMgr_ReloadImages (void) +{ + gltexture_t *glt; + +// ericw -- tricky bug: if the hunk is almost full, an allocation in TexMgr_ReloadImage +// triggers cache items to be freed, which calls back into TexMgr to free the +// texture. If this frees 'glt' in the loop below, the active_gltextures +// list gets corrupted. +// A test case is jam3_tronyn.bsp with -heapsize 65536, and do several mode +// switches/fullscreen toggles +// 2015-09-04 -- Cache_Flush workaround was causing issues (http://sourceforge.net/p/quakespasm/bugs/10/) +// switching to a boolean flag. + in_reload_images = true; + + for (glt = active_gltextures; glt; glt = glt->next) + { + glGenTextures(1, &glt->texnum); + TexMgr_ReloadImage (glt, -1, -1); + } + + in_reload_images = false; +} + +/* +================ +TexMgr_ReloadNobrightImages -- reloads all texture that were loaded with the nobright palette. called when gl_fullbrights changes +================ +*/ +void TexMgr_ReloadNobrightImages (void) +{ + gltexture_t *glt; + + for (glt = active_gltextures; glt; glt = glt->next) + if (glt->flags & TEXPREF_NOBRIGHT) + TexMgr_ReloadImage(glt, -1, -1); +} + +/* +================================================================================ + + TEXTURE BINDING / TEXTURE UNIT SWITCHING + +================================================================================ +*/ + +static GLuint currenttexture[3] = {GL_UNUSED_TEXTURE, GL_UNUSED_TEXTURE, GL_UNUSED_TEXTURE}; // to avoid unnecessary texture sets +static GLenum currenttarget = GL_TEXTURE0_ARB; +qboolean mtexenabled = false; + +/* +================ +GL_SelectTexture -- johnfitz -- rewritten +================ +*/ +void GL_SelectTexture (GLenum target) +{ + if (target == currenttarget) + return; + + GL_SelectTextureFunc(target); + currenttarget = target; +} + +/* +================ +GL_DisableMultitexture -- selects texture unit 0 +================ +*/ +void GL_DisableMultitexture(void) +{ + if (mtexenabled) + { + glDisable(GL_TEXTURE_2D); + GL_SelectTexture(GL_TEXTURE0_ARB); + mtexenabled = false; + } +} + +/* +================ +GL_EnableMultitexture -- selects texture unit 1 +================ +*/ +void GL_EnableMultitexture(void) +{ + if (gl_mtexable) + { + GL_SelectTexture(GL_TEXTURE1_ARB); + glEnable(GL_TEXTURE_2D); + mtexenabled = true; + } +} + +/* +================ +GL_Bind -- johnfitz -- heavy revision +================ +*/ +void GL_Bind (gltexture_t *texture) +{ + if (!texture) + texture = nulltexture; + + if (texture->texnum != currenttexture[currenttarget - GL_TEXTURE0_ARB]) + { + currenttexture[currenttarget - GL_TEXTURE0_ARB] = texture->texnum; + glBindTexture (GL_TEXTURE_2D, texture->texnum); + texture->visframe = r_framecount; + } +} + +/* +================ +GL_DeleteTexture -- ericw + +Wrapper around glDeleteTextures that also clears the given texture number +from our per-TMU cached texture binding table. +================ +*/ +static void GL_DeleteTexture (gltexture_t *texture) +{ + glDeleteTextures (1, &texture->texnum); + + if (texture->texnum == currenttexture[0]) currenttexture[0] = GL_UNUSED_TEXTURE; + if (texture->texnum == currenttexture[1]) currenttexture[1] = GL_UNUSED_TEXTURE; + if (texture->texnum == currenttexture[2]) currenttexture[2] = GL_UNUSED_TEXTURE; + + texture->texnum = 0; +} + +/* +================ +GL_ClearBindings -- ericw + +Invalidates cached bindings, so the next GL_Bind calls for each TMU will +make real glBindTexture calls. +Call this after changing the binding outside of GL_Bind. +================ +*/ +void GL_ClearBindings(void) +{ + int i; + for (i = 0; i < 3; i++) + { + currenttexture[i] = GL_UNUSED_TEXTURE; + } +} diff --git a/Quake/gl_texmgr.h b/Quake/gl_texmgr.h new file mode 100644 index 0000000..c3bfc83 --- /dev/null +++ b/Quake/gl_texmgr.h @@ -0,0 +1,108 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef _GL_TEXMAN_H +#define _GL_TEXMAN_H + +//gl_texmgr.h -- fitzquake's texture manager. manages opengl texture images + +#define TEXPREF_NONE 0x0000 +#define TEXPREF_MIPMAP 0x0001 // generate mipmaps +// TEXPREF_NEAREST and TEXPREF_LINEAR aren't supposed to be ORed with TEX_MIPMAP +#define TEXPREF_LINEAR 0x0002 // force linear +#define TEXPREF_NEAREST 0x0004 // force nearest +#define TEXPREF_ALPHA 0x0008 // allow alpha +#define TEXPREF_PAD 0x0010 // allow padding +#define TEXPREF_PERSIST 0x0020 // never free +#define TEXPREF_OVERWRITE 0x0040 // overwrite existing same-name texture +#define TEXPREF_NOPICMIP 0x0080 // always load full-sized +#define TEXPREF_FULLBRIGHT 0x0100 // use fullbright mask palette +#define TEXPREF_NOBRIGHT 0x0200 // use nobright mask palette +#define TEXPREF_CONCHARS 0x0400 // use conchars palette +#define TEXPREF_WARPIMAGE 0x0800 // resize this texture when warpimagesize changes + +enum srcformat {SRC_INDEXED, SRC_LIGHTMAP, SRC_RGBA, SRC_INDEXED_PALETTE}; + +typedef uintptr_t src_offset_t; + +typedef struct gltexture_s { +//managed by texture manager + GLuint texnum; + struct gltexture_s *next; + qmodel_t *owner; +//managed by image loading + char name[64]; + unsigned int width; //size of image as it exists in opengl + unsigned int height; //size of image as it exists in opengl + unsigned int flags; + char source_file[MAX_QPATH]; //relative filepath to data source, or "" if source is in memory + src_offset_t source_offset; //byte offset into file, or memory address + enum srcformat source_format; //format of pixel data (indexed, lightmap, or rgba) + unsigned int source_width; //size of image in source data + unsigned int source_height; //size of image in source data + unsigned short source_crc; //generated by source data before modifications + signed char shirt; //0-13 shirt color, or -1 if never colormapped + signed char pants; //0-13 pants color, or -1 if never colormapped +//used for rendering + int visframe; //matches r_framecount if texture was bound this frame +} gltexture_t; + +extern gltexture_t *notexture; +extern gltexture_t *nulltexture; + +extern unsigned int d_8to24table[256]; +extern unsigned int d_8to24table_fbright[256]; +extern unsigned int d_8to24table_nobright[256]; +extern unsigned int d_8to24table_conchars[256]; + +// TEXTURE MANAGER + +float TexMgr_FrameUsage (void); +gltexture_t *TexMgr_FindTexture (qmodel_t *owner, const char *name); +gltexture_t *TexMgr_NewTexture (void); +void TexMgr_FreeTexture (gltexture_t *kill); +void TexMgr_FreeTextures (unsigned int flags, unsigned int mask); +void TexMgr_FreeTexturesForOwner (qmodel_t *owner); +void TexMgr_NewGame (void); +void TexMgr_Init (void); +void TexMgr_DeleteTextureObjects (void); + +// IMAGE LOADING +gltexture_t *TexMgr_LoadImage (qmodel_t *owner, const char *name, int width, int height, enum srcformat format, + byte *data, const char *source_file, src_offset_t source_offset, unsigned flags); +void TexMgr_ReloadImage (gltexture_t *glt, int shirt, int pants); +void TexMgr_ReloadImages (void); +void TexMgr_ReloadNobrightImages (void); + +int TexMgr_Pad(int s); +int TexMgr_SafeTextureSize (int s); +int TexMgr_PadConditional (int s); + +// TEXTURE BINDING & TEXTURE UNIT SWITCHING + +void GL_SelectTexture (GLenum target); +void GL_DisableMultitexture (void); //selects texture unit 0 +void GL_EnableMultitexture (void); //selects texture unit 1 +void GL_Bind (gltexture_t *texture); +void GL_ClearBindings (void); + +#endif /* _GL_TEXMAN_H */ + diff --git a/Quake/gl_vidsdl.c b/Quake/gl_vidsdl.c new file mode 100644 index 0000000..2966735 --- /dev/null +++ b/Quake/gl_vidsdl.c @@ -0,0 +1,2394 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// gl_vidsdl.c -- SDL GL vid component + +#include "quakedef.h" +#include "cfgfile.h" +#include "bgmusic.h" +#include "resource.h" +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + +//ericw -- for putting the driver into multithreaded mode +#ifdef __APPLE__ +#include <OpenGL/OpenGL.h> +#endif + +#define MAX_MODE_LIST 600 //johnfitz -- was 30 +#define MAX_BPPS_LIST 5 +#define MAX_RATES_LIST 20 +#define WARP_WIDTH 320 +#define WARP_HEIGHT 200 +#define MAXWIDTH 10000 +#define MAXHEIGHT 10000 + +#define DEFAULT_SDL_FLAGS SDL_OPENGL + +#define DEFAULT_REFRESHRATE 60 + +typedef struct { + int width; + int height; + int refreshrate; + int bpp; +} vmode_t; + +static const char *gl_vendor; +static const char *gl_renderer; +static const char *gl_version; +static int gl_version_major; +static int gl_version_minor; +static const char *gl_extensions; +static char * gl_extensions_nice; + +static vmode_t modelist[MAX_MODE_LIST]; +static int nummodes; + +static qboolean vid_initialized = false; + +#if defined(USE_SDL2) +static SDL_Window *draw_context; +static SDL_GLContext gl_context; +#else +static SDL_Surface *draw_context; +#endif + +static qboolean vid_locked = false; //johnfitz +static qboolean vid_changed = false; + +static void VID_Menu_Init (void); //johnfitz +static void VID_Menu_f (void); //johnfitz +static void VID_MenuDraw (void); +static void VID_MenuKey (int key); + +static void ClearAllStates (void); +static void GL_Init (void); +static void GL_SetupState (void); //johnfitz + +viddef_t vid; // global video state +modestate_t modestate = MS_UNINIT; +qboolean scr_skipupdate; + +qboolean gl_mtexable = false; +qboolean gl_packed_pixels = false; +qboolean gl_texture_env_combine = false; //johnfitz +qboolean gl_texture_env_add = false; //johnfitz +qboolean gl_swap_control = false; //johnfitz +qboolean gl_anisotropy_able = false; //johnfitz +float gl_max_anisotropy; //johnfitz +qboolean gl_texture_NPOT = false; //ericw +qboolean gl_vbo_able = false; //ericw +qboolean gl_glsl_able = false; //ericw +GLint gl_max_texture_units = 0; //ericw +qboolean gl_glsl_gamma_able = false; //ericw +qboolean gl_glsl_alias_able = false; //ericw +int gl_stencilbits; + +PFNGLMULTITEXCOORD2FARBPROC GL_MTexCoord2fFunc = NULL; //johnfitz +PFNGLACTIVETEXTUREARBPROC GL_SelectTextureFunc = NULL; //johnfitz +PFNGLCLIENTACTIVETEXTUREARBPROC GL_ClientActiveTextureFunc = NULL; //ericw +PFNGLBINDBUFFERARBPROC GL_BindBufferFunc = NULL; //ericw +PFNGLBUFFERDATAARBPROC GL_BufferDataFunc = NULL; //ericw +PFNGLBUFFERSUBDATAARBPROC GL_BufferSubDataFunc = NULL; //ericw +PFNGLDELETEBUFFERSARBPROC GL_DeleteBuffersFunc = NULL; //ericw +PFNGLGENBUFFERSARBPROC GL_GenBuffersFunc = NULL; //ericw + +QS_PFNGLCREATESHADERPROC GL_CreateShaderFunc = NULL; //ericw +QS_PFNGLDELETESHADERPROC GL_DeleteShaderFunc = NULL; //ericw +QS_PFNGLDELETEPROGRAMPROC GL_DeleteProgramFunc = NULL; //ericw +QS_PFNGLSHADERSOURCEPROC GL_ShaderSourceFunc = NULL; //ericw +QS_PFNGLCOMPILESHADERPROC GL_CompileShaderFunc = NULL; //ericw +QS_PFNGLGETSHADERIVPROC GL_GetShaderivFunc = NULL; //ericw +QS_PFNGLGETSHADERINFOLOGPROC GL_GetShaderInfoLogFunc = NULL; //ericw +QS_PFNGLGETPROGRAMIVPROC GL_GetProgramivFunc = NULL; //ericw +QS_PFNGLGETPROGRAMINFOLOGPROC GL_GetProgramInfoLogFunc = NULL; //ericw +QS_PFNGLCREATEPROGRAMPROC GL_CreateProgramFunc = NULL; //ericw +QS_PFNGLATTACHSHADERPROC GL_AttachShaderFunc = NULL; //ericw +QS_PFNGLLINKPROGRAMPROC GL_LinkProgramFunc = NULL; //ericw +QS_PFNGLBINDATTRIBLOCATIONFUNC GL_BindAttribLocationFunc = NULL; //ericw +QS_PFNGLUSEPROGRAMPROC GL_UseProgramFunc = NULL; //ericw +QS_PFNGLGETATTRIBLOCATIONPROC GL_GetAttribLocationFunc = NULL; //ericw +QS_PFNGLVERTEXATTRIBPOINTERPROC GL_VertexAttribPointerFunc = NULL; //ericw +QS_PFNGLENABLEVERTEXATTRIBARRAYPROC GL_EnableVertexAttribArrayFunc = NULL; //ericw +QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC GL_DisableVertexAttribArrayFunc = NULL; //ericw +QS_PFNGLGETUNIFORMLOCATIONPROC GL_GetUniformLocationFunc = NULL; //ericw +QS_PFNGLUNIFORM1IPROC GL_Uniform1iFunc = NULL; //ericw +QS_PFNGLUNIFORM1FPROC GL_Uniform1fFunc = NULL; //ericw +QS_PFNGLUNIFORM3FPROC GL_Uniform3fFunc = NULL; //ericw +QS_PFNGLUNIFORM4FPROC GL_Uniform4fFunc = NULL; //ericw + +QS_PFNGENERATEMIPMAP GL_GenerateMipmap = NULL; + +//==================================== + +//johnfitz -- new cvars +static cvar_t vid_fullscreen = {"vid_fullscreen", "0", CVAR_ARCHIVE}; // QuakeSpasm, was "1" +static cvar_t vid_width = {"vid_width", "800", CVAR_ARCHIVE}; // QuakeSpasm, was 640 +static cvar_t vid_height = {"vid_height", "600", CVAR_ARCHIVE}; // QuakeSpasm, was 480 +static cvar_t vid_bpp = {"vid_bpp", "16", CVAR_ARCHIVE}; +static cvar_t vid_refreshrate = {"vid_refreshrate", "60", CVAR_ARCHIVE}; +static cvar_t vid_vsync = {"vid_vsync", "0", CVAR_ARCHIVE}; +static cvar_t vid_fsaa = {"vid_fsaa", "0", CVAR_ARCHIVE}; // QuakeSpasm +static cvar_t vid_desktopfullscreen = {"vid_desktopfullscreen", "0", CVAR_ARCHIVE}; // QuakeSpasm +static cvar_t vid_borderless = {"vid_borderless", "0", CVAR_ARCHIVE}; // QuakeSpasm +//johnfitz + +cvar_t vid_gamma = {"gamma", "1", CVAR_ARCHIVE}; //johnfitz -- moved here from view.c +cvar_t vid_contrast = {"contrast", "1", CVAR_ARCHIVE}; //QuakeSpasm, MarkV + +//========================================================================== +// +// HARDWARE GAMMA -- johnfitz +// +//========================================================================== + +#define USE_GAMMA_RAMPS 0 + +#if USE_GAMMA_RAMPS +static unsigned short vid_gamma_red[256]; +static unsigned short vid_gamma_green[256]; +static unsigned short vid_gamma_blue[256]; + +static unsigned short vid_sysgamma_red[256]; +static unsigned short vid_sysgamma_green[256]; +static unsigned short vid_sysgamma_blue[256]; +#endif + +static qboolean gammaworks = false; // whether hw-gamma works +static int fsaa; + +/* +================ +VID_Gamma_SetGamma -- apply gamma correction +================ +*/ +static void VID_Gamma_SetGamma (void) +{ + if (gl_glsl_gamma_able) + return; + + if (draw_context && gammaworks) + { + float value; + + if (vid_gamma.value > (1.0f / GAMMA_MAX)) + value = 1.0f / vid_gamma.value; + else + value = GAMMA_MAX; + +#if defined(USE_SDL2) +# if USE_GAMMA_RAMPS + if (SDL_SetWindowGammaRamp(draw_context, vid_gamma_red, vid_gamma_green, vid_gamma_blue) != 0) + Con_Printf ("VID_Gamma_SetGamma: failed on SDL_SetWindowGammaRamp\n"); +# else + if (SDL_SetWindowBrightness(draw_context, value) != 0) + Con_Printf ("VID_Gamma_SetGamma: failed on SDL_SetWindowBrightness\n"); +# endif +#else /* USE_SDL2 */ +# if USE_GAMMA_RAMPS + if (SDL_SetGammaRamp(vid_gamma_red, vid_gamma_green, vid_gamma_blue) == -1) + Con_Printf ("VID_Gamma_SetGamma: failed on SDL_SetGammaRamp\n"); +# else + if (SDL_SetGamma(value,value,value) == -1) + Con_Printf ("VID_Gamma_SetGamma: failed on SDL_SetGamma\n"); +# endif +#endif /* USE_SDL2 */ + } +} + +/* +================ +VID_Gamma_Restore -- restore system gamma +================ +*/ +static void VID_Gamma_Restore (void) +{ + if (gl_glsl_gamma_able) + return; + + if (draw_context && gammaworks) + { +#if defined(USE_SDL2) +# if USE_GAMMA_RAMPS + if (SDL_SetWindowGammaRamp(draw_context, vid_sysgamma_red, vid_sysgamma_green, vid_sysgamma_blue) != 0) + Con_Printf ("VID_Gamma_Restore: failed on SDL_SetWindowGammaRamp\n"); +# else + if (SDL_SetWindowBrightness(draw_context, 1) != 0) + Con_Printf ("VID_Gamma_Restore: failed on SDL_SetWindowBrightness\n"); +# endif +#else /* USE_SDL2 */ +# if USE_GAMMA_RAMPS + if (SDL_SetGammaRamp(vid_sysgamma_red, vid_sysgamma_green, vid_sysgamma_blue) == -1) + Con_Printf ("VID_Gamma_Restore: failed on SDL_SetGammaRamp\n"); +# else + if (SDL_SetGamma(1, 1, 1) == -1) + Con_Printf ("VID_Gamma_Restore: failed on SDL_SetGamma\n"); +# endif +#endif /* USE_SDL2 */ + } +} + +/* +================ +VID_Gamma_Shutdown -- called on exit +================ +*/ +static void VID_Gamma_Shutdown (void) +{ + VID_Gamma_Restore (); +} + +/* +================ +VID_Gamma_f -- callback when the cvar changes +================ +*/ +static void VID_Gamma_f (cvar_t *var) +{ + if (gl_glsl_gamma_able) + return; + +#if USE_GAMMA_RAMPS + int i; + + for (i = 0; i < 256; i++) + { + vid_gamma_red[i] = + CLAMP(0, (int) ((255 * pow((i + 0.5)/255.5, vid_gamma.value) + 0.5) * vid_contrast.value), 255) << 8; + vid_gamma_green[i] = vid_gamma_red[i]; + vid_gamma_blue[i] = vid_gamma_red[i]; + } +#endif + VID_Gamma_SetGamma (); +} + +/* +================ +VID_Gamma_Init -- call on init +================ +*/ +static void VID_Gamma_Init (void) +{ + Cvar_RegisterVariable (&vid_gamma); + Cvar_RegisterVariable (&vid_contrast); + Cvar_SetCallback (&vid_gamma, VID_Gamma_f); + Cvar_SetCallback (&vid_contrast, VID_Gamma_f); + + if (gl_glsl_gamma_able) + return; + +#if defined(USE_SDL2) +# if USE_GAMMA_RAMPS + gammaworks = (SDL_GetWindowGammaRamp(draw_context, vid_sysgamma_red, vid_sysgamma_green, vid_sysgamma_blue) == 0); + if (gammaworks) + gammaworks = (SDL_SetWindowGammaRamp(draw_context, vid_sysgamma_red, vid_sysgamma_green, vid_sysgamma_blue) == 0); +# else + gammaworks = (SDL_SetWindowBrightness(draw_context, 1) == 0); +# endif +#else /* USE_SDL2 */ +# if USE_GAMMA_RAMPS + gammaworks = (SDL_GetGammaRamp(vid_sysgamma_red, vid_sysgamma_green, vid_sysgamma_blue) == 0); + if (gammaworks) + gammaworks = (SDL_SetGammaRamp(vid_sysgamma_red, vid_sysgamma_green, vid_sysgamma_blue) == 0); +# else + gammaworks = (SDL_SetGamma(1, 1, 1) == 0); +# endif +#endif /* USE_SDL2 */ + + if (!gammaworks) + Con_SafePrintf("gamma adjustment not available\n"); +} + +/* +====================== +VID_GetCurrentWidth +====================== +*/ +static int VID_GetCurrentWidth (void) +{ +#if defined(USE_SDL2) + int w = 0, h = 0; + SDL_GetWindowSize(draw_context, &w, &h); + return w; +#else + return draw_context->w; +#endif +} + +/* +======================= +VID_GetCurrentHeight +======================= +*/ +static int VID_GetCurrentHeight (void) +{ +#if defined(USE_SDL2) + int w = 0, h = 0; + SDL_GetWindowSize(draw_context, &w, &h); + return h; +#else + return draw_context->h; +#endif +} + +/* +==================== +VID_GetCurrentRefreshRate +==================== +*/ +static int VID_GetCurrentRefreshRate (void) +{ +#if defined(USE_SDL2) + SDL_DisplayMode mode; + int current_display; + + current_display = SDL_GetWindowDisplayIndex(draw_context); + + if (0 != SDL_GetCurrentDisplayMode(current_display, &mode)) + return DEFAULT_REFRESHRATE; + + return mode.refresh_rate; +#else + // SDL1.2 doesn't support refresh rates + return DEFAULT_REFRESHRATE; +#endif +} + + +/* +==================== +VID_GetCurrentBPP +==================== +*/ +static int VID_GetCurrentBPP (void) +{ +#if defined(USE_SDL2) + const Uint32 pixelFormat = SDL_GetWindowPixelFormat(draw_context); + return SDL_BITSPERPIXEL(pixelFormat); +#else + return draw_context->format->BitsPerPixel; +#endif +} + +/* +==================== +VID_GetFullscreen + +returns true if we are in regular fullscreen or "desktop fullscren" +==================== +*/ +static qboolean VID_GetFullscreen (void) +{ +#if defined(USE_SDL2) + return (SDL_GetWindowFlags(draw_context) & SDL_WINDOW_FULLSCREEN) != 0; +#else + return (draw_context->flags & SDL_FULLSCREEN) != 0; +#endif +} + +/* +==================== +VID_GetDesktopFullscreen + +returns true if we are specifically in "desktop fullscreen" mode +==================== +*/ +static qboolean VID_GetDesktopFullscreen (void) +{ +#if defined(USE_SDL2) + return (SDL_GetWindowFlags(draw_context) & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP; +#else + return false; +#endif +} + +/* +==================== +VID_GetVSync +==================== +*/ +static qboolean VID_GetVSync (void) +{ +#if defined(USE_SDL2) + return SDL_GL_GetSwapInterval() == 1; +#else + int swap_control; + if (SDL_GL_GetAttribute(SDL_GL_SWAP_CONTROL, &swap_control) == 0) + return swap_control > 0; + return false; +#endif +} + +/* +==================== +VID_GetWindow + +used by pl_win.c +==================== +*/ +void *VID_GetWindow (void) +{ +#if defined(USE_SDL2) + return draw_context; +#else + return NULL; +#endif +} + +/* +==================== +VID_HasMouseOrInputFocus +==================== +*/ +qboolean VID_HasMouseOrInputFocus (void) +{ +#if defined(USE_SDL2) + return (SDL_GetWindowFlags(draw_context) & (SDL_WINDOW_MOUSE_FOCUS | SDL_WINDOW_INPUT_FOCUS)) != 0; +#else + return (SDL_GetAppState() & (SDL_APPMOUSEFOCUS | SDL_APPINPUTFOCUS)) != 0; +#endif +} + +/* +==================== +VID_IsMinimized +==================== +*/ +qboolean VID_IsMinimized (void) +{ +#if defined(USE_SDL2) + return !(SDL_GetWindowFlags(draw_context) & SDL_WINDOW_SHOWN); +#else + /* SDL_APPACTIVE in SDL 1.x means "not minimized" */ + return !(SDL_GetAppState() & SDL_APPACTIVE); +#endif +} + +#if defined(USE_SDL2) +/* +================ +VID_SDL2_GetDisplayMode + +Returns a pointer to a statically allocated SDL_DisplayMode structure +if there is one with the requested params on the default display. +Otherwise returns NULL. + +This is passed to SDL_SetWindowDisplayMode to specify a pixel format +with the requested bpp. If we didn't care about bpp we could just pass NULL. +================ +*/ +static SDL_DisplayMode *VID_SDL2_GetDisplayMode(int width, int height, int refreshrate, int bpp) +{ + static SDL_DisplayMode mode; + const int sdlmodes = SDL_GetNumDisplayModes(0); + int i; + + for (i = 0; i < sdlmodes; i++) + { + if (SDL_GetDisplayMode(0, i, &mode) != 0) + continue; + + if (mode.w == width && mode.h == height + && SDL_BITSPERPIXEL(mode.format) == bpp + && mode.refresh_rate == refreshrate) + { + return &mode; + } + } + return NULL; +} +#endif /* USE_SDL2 */ + +/* +================ +VID_ValidMode +================ +*/ +static qboolean VID_ValidMode (int width, int height, int refreshrate, int bpp, qboolean fullscreen) +{ +// ignore width / height / bpp if vid_desktopfullscreen is enabled + if (fullscreen && vid_desktopfullscreen.value) + return true; + + if (width < 320) + return false; + + if (height < 200) + return false; + +#if defined(USE_SDL2) + if (fullscreen && VID_SDL2_GetDisplayMode(width, height, refreshrate, bpp) == NULL) + bpp = 0; +#else + { + Uint32 flags = DEFAULT_SDL_FLAGS; + if (fullscreen) + flags |= SDL_FULLSCREEN; + + bpp = SDL_VideoModeOK(width, height, bpp, flags); + } +#endif + + switch (bpp) + { + case 16: + case 24: + case 32: + break; + default: + return false; + } + + return true; +} + +/* +================ +VID_SetMode +================ +*/ +static qboolean VID_SetMode (int width, int height, int refreshrate, int bpp, qboolean fullscreen) +{ + int temp; + Uint32 flags; + char caption[50]; + int depthbits, stencilbits; + int fsaa_obtained; +#if defined(USE_SDL2) + int previous_display; +#endif + + // so Con_Printfs don't mess us up by forcing vid and snd updates + temp = scr_disabled_for_loading; + scr_disabled_for_loading = true; + + CDAudio_Pause (); + BGM_Pause (); + + /* z-buffer depth */ + if (bpp == 16) + { + depthbits = 16; + stencilbits = 0; + } + else + { + depthbits = 24; + stencilbits = 8; + } + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, depthbits); + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, stencilbits); + + /* fsaa */ + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, fsaa > 0 ? 1 : 0); + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, fsaa); + + q_snprintf(caption, sizeof(caption), "QuakeSpasm " QUAKESPASM_VER_STRING); + +#if defined(USE_SDL2) + /* Create the window if needed, hidden */ + if (!draw_context) + { + flags = SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN; + + if (vid_borderless.value) + flags |= SDL_WINDOW_BORDERLESS; + + draw_context = SDL_CreateWindow (caption, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, flags); + if (!draw_context) { // scale back fsaa + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0); + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0); + draw_context = SDL_CreateWindow (caption, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, flags); + } + if (!draw_context) { // scale back SDL_GL_DEPTH_SIZE + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); + draw_context = SDL_CreateWindow (caption, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, flags); + } + if (!draw_context) { // scale back SDL_GL_STENCIL_SIZE + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 0); + draw_context = SDL_CreateWindow (caption, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, flags); + } + if (!draw_context) + Sys_Error ("Couldn't create window"); + + previous_display = -1; + } + else + { + previous_display = SDL_GetWindowDisplayIndex(draw_context); + } + + /* Ensure the window is not fullscreen */ + if (VID_GetFullscreen ()) + { + if (SDL_SetWindowFullscreen (draw_context, 0) != 0) + Sys_Error("Couldn't set fullscreen state mode"); + } + + /* Set window size and display mode */ + SDL_SetWindowSize (draw_context, width, height); + if (previous_display >= 0) + SDL_SetWindowPosition (draw_context, SDL_WINDOWPOS_CENTERED_DISPLAY(previous_display), SDL_WINDOWPOS_CENTERED_DISPLAY(previous_display)); + else + SDL_SetWindowPosition(draw_context, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); + SDL_SetWindowDisplayMode (draw_context, VID_SDL2_GetDisplayMode(width, height, refreshrate, bpp)); + SDL_SetWindowBordered (draw_context, vid_borderless.value ? SDL_FALSE : SDL_TRUE); + + /* Make window fullscreen if needed, and show the window */ + + if (fullscreen) { + const Uint32 flag = vid_desktopfullscreen.value ? + SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN; + if (SDL_SetWindowFullscreen (draw_context, flag) != 0) + Sys_Error ("Couldn't set fullscreen state mode"); + } + + SDL_ShowWindow (draw_context); + SDL_RaiseWindow (draw_context); + + /* Create GL context if needed */ + if (!gl_context) { + gl_context = SDL_GL_CreateContext(draw_context); + if (!gl_context) + Sys_Error("Couldn't create GL context"); + } + + gl_swap_control = true; + if (SDL_GL_SetSwapInterval ((vid_vsync.value) ? 1 : 0) == -1) + gl_swap_control = false; + +#else /* !defined(USE_SDL2) */ + + flags = DEFAULT_SDL_FLAGS; + if (fullscreen) + flags |= SDL_FULLSCREEN; + if (vid_borderless.value) + flags |= SDL_NOFRAME; + + gl_swap_control = true; + if (SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, (vid_vsync.value) ? 1 : 0) == -1) + gl_swap_control = false; + + bpp = SDL_VideoModeOK(width, height, bpp, flags); + + draw_context = SDL_SetVideoMode(width, height, bpp, flags); + if (!draw_context) { // scale back fsaa + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0); + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0); + draw_context = SDL_SetVideoMode(width, height, bpp, flags); + } + if (!draw_context) { // scale back SDL_GL_DEPTH_SIZE + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); + draw_context = SDL_SetVideoMode(width, height, bpp, flags); + } + if (!draw_context) { // scale back SDL_GL_STENCIL_SIZE + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 0); + draw_context = SDL_SetVideoMode(width, height, bpp, flags); + if (!draw_context) + Sys_Error ("Couldn't set video mode"); + } + + SDL_WM_SetCaption(caption, caption); +#endif /* !defined(USE_SDL2) */ + + vid.width = VID_GetCurrentWidth(); + vid.height = VID_GetCurrentHeight(); + vid.conwidth = vid.width & 0xFFFFFFF8; + vid.conheight = vid.conwidth * vid.height / vid.width; + vid.numpages = 2; + +// read the obtained z-buffer depth + if (SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &depthbits) == -1) + depthbits = 0; + +// read obtained fsaa samples + if (SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &fsaa_obtained) == -1) + fsaa_obtained = 0; + +// read stencil bits + if (SDL_GL_GetAttribute(SDL_GL_STENCIL_SIZE, &gl_stencilbits) == -1) + gl_stencilbits = 0; + + modestate = VID_GetFullscreen() ? MS_FULLSCREEN : MS_WINDOWED; + + CDAudio_Resume (); + BGM_Resume (); + scr_disabled_for_loading = temp; + +// fix the leftover Alt from any Alt-Tab or the like that switched us away + ClearAllStates (); + + Con_SafePrintf ("Video mode %dx%dx%d %dHz (%d-bit z-buffer, %dx FSAA) initialized\n", + VID_GetCurrentWidth(), + VID_GetCurrentHeight(), + VID_GetCurrentBPP(), + VID_GetCurrentRefreshRate(), + depthbits, + fsaa_obtained); + + vid.recalc_refdef = 1; + +// no pending changes + vid_changed = false; + + return true; +} + +/* +=================== +VID_Changed_f -- kristian -- notify us that a value has changed that requires a vid_restart +=================== +*/ +static void VID_Changed_f (cvar_t *var) +{ + vid_changed = true; +} + +/* +=================== +VID_Restart -- johnfitz -- change video modes on the fly +=================== +*/ +static void VID_Restart (void) +{ + int width, height, refreshrate, bpp; + qboolean fullscreen; + + if (vid_locked || !vid_changed) + return; + + width = (int)vid_width.value; + height = (int)vid_height.value; + refreshrate = (int)vid_refreshrate.value; + bpp = (int)vid_bpp.value; + fullscreen = vid_fullscreen.value ? true : false; + +// +// validate new mode +// + if (!VID_ValidMode (width, height, refreshrate, bpp, fullscreen)) + { + Con_Printf ("%dx%dx%d %dHz %s is not a valid mode\n", + width, height, bpp, refreshrate, fullscreen? "fullscreen" : "windowed"); + return; + } + +// ericw -- OS X, SDL1: textures, VBO's invalid after mode change +// OS X, SDL2: still valid after mode change +// To handle both cases, delete all GL objects (textures, VBO, GLSL) now. +// We must not interleave deleting the old objects with creating new ones, because +// one of the new objects could be given the same ID as an invalid handle +// which is later deleted. + + TexMgr_DeleteTextureObjects (); + GLSLGamma_DeleteTexture (); + R_ScaleView_DeleteTexture (); + R_DeleteShaders (); + GL_DeleteBModelVertexBuffer (); + GLMesh_DeleteVertexBuffers (); + +// +// set new mode +// + VID_SetMode (width, height, refreshrate, bpp, fullscreen); + + GL_Init (); + TexMgr_ReloadImages (); + GL_BuildBModelVertexBuffer (); + GLMesh_LoadVertexBuffers (); + GL_SetupState (); + Fog_SetupState (); + + //warpimages needs to be recalculated + TexMgr_RecalcWarpImageSize (); + + //conwidth and conheight need to be recalculated + vid.conwidth = (scr_conwidth.value > 0) ? (int)scr_conwidth.value : (scr_conscale.value > 0) ? (int)(vid.width/scr_conscale.value) : vid.width; + vid.conwidth = CLAMP (320, vid.conwidth, vid.width); + vid.conwidth &= 0xFFFFFFF8; + vid.conheight = vid.conwidth * vid.height / vid.width; +// +// keep cvars in line with actual mode +// + VID_SyncCvars(); +// +// update mouse grab +// + if (key_dest == key_console || key_dest == key_menu) + { + if (modestate == MS_WINDOWED) + IN_Deactivate(true); + else if (modestate == MS_FULLSCREEN) + IN_Activate(); + } +} + +/* +================ +VID_Test -- johnfitz -- like vid_restart, but asks for confirmation after switching modes +================ +*/ +static void VID_Test (void) +{ + int old_width, old_height, old_refreshrate, old_bpp, old_fullscreen; + + if (vid_locked || !vid_changed) + return; +// +// now try the switch +// + old_width = VID_GetCurrentWidth(); + old_height = VID_GetCurrentHeight(); + old_refreshrate = VID_GetCurrentRefreshRate(); + old_bpp = VID_GetCurrentBPP(); + old_fullscreen = VID_GetFullscreen() ? true : false; + + VID_Restart (); + + //pop up confirmation dialoge + if (!SCR_ModalMessage("Would you like to keep this\nvideo mode? (y/n)\n", 5.0f)) + { + //revert cvars and mode + Cvar_SetValueQuick (&vid_width, old_width); + Cvar_SetValueQuick (&vid_height, old_height); + Cvar_SetValueQuick (&vid_refreshrate, old_refreshrate); + Cvar_SetValueQuick (&vid_bpp, old_bpp); + Cvar_SetQuick (&vid_fullscreen, old_fullscreen ? "1" : "0"); + VID_Restart (); + } +} + +/* +================ +VID_Unlock -- johnfitz +================ +*/ +static void VID_Unlock (void) +{ + vid_locked = false; + VID_SyncCvars(); +} + +/* +================ +VID_Lock -- ericw + +Subsequent changes to vid_* mode settings, and vid_restart commands, will +be ignored until the "vid_unlock" command is run. + +Used when changing gamedirs so the current settings override what was saved +in the config.cfg. +================ +*/ +void VID_Lock (void) +{ + vid_locked = true; +} + +//============================================================================== +// +// OPENGL STUFF +// +//============================================================================== + +/* +=============== +GL_MakeNiceExtensionsList -- johnfitz +=============== +*/ +static char *GL_MakeNiceExtensionsList (const char *in) +{ + char *copy, *token, *out; + int i, count; + + if (!in) return Z_Strdup("(none)"); + + //each space will be replaced by 4 chars, so count the spaces before we malloc + for (i = 0, count = 1; i < (int) strlen(in); i++) + { + if (in[i] == ' ') + count++; + } + + out = (char *) Z_Malloc (strlen(in) + count*3 + 1); //usually about 1-2k + out[0] = 0; + + copy = (char *) Z_Strdup(in); + for (token = strtok(copy, " "); token; token = strtok(NULL, " ")) + { + strcat(out, "\n "); + strcat(out, token); + } + + Z_Free (copy); + return out; +} + +/* +=============== +GL_Info_f -- johnfitz +=============== +*/ +static void GL_Info_f (void) +{ + Con_SafePrintf ("GL_VENDOR: %s\n", gl_vendor); + Con_SafePrintf ("GL_RENDERER: %s\n", gl_renderer); + Con_SafePrintf ("GL_VERSION: %s\n", gl_version); + Con_Printf ("GL_EXTENSIONS: %s\n", gl_extensions_nice); +} + +/* +=============== +GL_CheckExtensions +=============== +*/ +static qboolean GL_ParseExtensionList (const char *list, const char *name) +{ + const char *start; + const char *where, *terminator; + + if (!list || !name || !*name) + return false; + if (strchr(name, ' ') != NULL) + return false; // extension names must not have spaces + + start = list; + while (1) { + where = strstr (start, name); + if (!where) + break; + terminator = where + strlen (name); + if (where == start || where[-1] == ' ') + if (*terminator == ' ' || *terminator == '\0') + return true; + start = terminator; + } + return false; +} + +static void GL_CheckExtensions (void) +{ + int swap_control; + + // ARB_vertex_buffer_object + // + if (COM_CheckParm("-novbo")) + Con_Warning ("Vertex buffer objects disabled at command line\n"); + else if (gl_version_major < 1 || (gl_version_major == 1 && gl_version_minor < 5)) + Con_Warning ("OpenGL version < 1.5, skipping ARB_vertex_buffer_object check\n"); + else + { + GL_BindBufferFunc = (PFNGLBINDBUFFERARBPROC) SDL_GL_GetProcAddress("glBindBufferARB"); + GL_BufferDataFunc = (PFNGLBUFFERDATAARBPROC) SDL_GL_GetProcAddress("glBufferDataARB"); + GL_BufferSubDataFunc = (PFNGLBUFFERSUBDATAARBPROC) SDL_GL_GetProcAddress("glBufferSubDataARB"); + GL_DeleteBuffersFunc = (PFNGLDELETEBUFFERSARBPROC) SDL_GL_GetProcAddress("glDeleteBuffersARB"); + GL_GenBuffersFunc = (PFNGLGENBUFFERSARBPROC) SDL_GL_GetProcAddress("glGenBuffersARB"); + if (GL_BindBufferFunc && GL_BufferDataFunc && GL_BufferSubDataFunc && GL_DeleteBuffersFunc && GL_GenBuffersFunc) + { + Con_Printf("FOUND: ARB_vertex_buffer_object\n"); + gl_vbo_able = true; + } + else + { + Con_Warning ("ARB_vertex_buffer_object not available\n"); + } + } + + // multitexture + // + if (COM_CheckParm("-nomtex")) + Con_Warning ("Mutitexture disabled at command line\n"); + else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_multitexture")) + { + GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMultiTexCoord2fARB"); + GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB"); + GL_ClientActiveTextureFunc = (PFNGLCLIENTACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glClientActiveTextureARB"); + if (GL_MTexCoord2fFunc && GL_SelectTextureFunc && GL_ClientActiveTextureFunc) + { + Con_Printf("FOUND: ARB_multitexture\n"); + gl_mtexable = true; + + glGetIntegerv(GL_MAX_TEXTURE_UNITS, &gl_max_texture_units); + Con_Printf("GL_MAX_TEXTURE_UNITS: %d\n", (int)gl_max_texture_units); + } + else + { + Con_Warning ("Couldn't link to multitexture functions\n"); + } + } + else + { + Con_Warning ("multitexture not supported (extension not found)\n"); + } + + // texture_env_combine + // + if (COM_CheckParm("-nocombine")) + Con_Warning ("texture_env_combine disabled at command line\n"); + else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_env_combine")) + { + Con_Printf("FOUND: ARB_texture_env_combine\n"); + gl_texture_env_combine = true; + } + else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_env_combine")) + { + Con_Printf("FOUND: EXT_texture_env_combine\n"); + gl_texture_env_combine = true; + } + else + { + Con_Warning ("texture_env_combine not supported\n"); + } + + // texture_env_add + // + if (COM_CheckParm("-noadd")) + Con_Warning ("texture_env_add disabled at command line\n"); + else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_env_add")) + { + Con_Printf("FOUND: ARB_texture_env_add\n"); + gl_texture_env_add = true; + } + else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_env_add")) + { + Con_Printf("FOUND: EXT_texture_env_add\n"); + gl_texture_env_add = true; + } + else + { + Con_Warning ("texture_env_add not supported\n"); + } + + // swap control + // + if (!gl_swap_control) + { +#if defined(USE_SDL2) + Con_Warning ("vertical sync not supported (SDL_GL_SetSwapInterval failed)\n"); +#else + Con_Warning ("vertical sync not supported (SDL_GL_SetAttribute failed)\n"); +#endif + } +#if defined(USE_SDL2) + else if ((swap_control = SDL_GL_GetSwapInterval()) == -1) +#else + else if (SDL_GL_GetAttribute(SDL_GL_SWAP_CONTROL, &swap_control) == -1) +#endif + { + gl_swap_control = false; +#if defined(USE_SDL2) + Con_Warning ("vertical sync not supported (SDL_GL_GetSwapInterval failed)\n"); +#else + Con_Warning ("vertical sync not supported (SDL_GL_GetAttribute failed)\n"); +#endif + } + else if ((vid_vsync.value && swap_control != 1) || (!vid_vsync.value && swap_control != 0)) + { + gl_swap_control = false; + Con_Warning ("vertical sync not supported (swap_control doesn't match vid_vsync)\n"); + } + else + { +#if defined(USE_SDL2) + Con_Printf("FOUND: SDL_GL_SetSwapInterval\n"); +#else + Con_Printf("FOUND: SDL_GL_SWAP_CONTROL\n"); +#endif + } + + // anisotropic filtering + // + if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_filter_anisotropic")) + { + float test1,test2; + GLuint tex; + + // test to make sure we really have control over it + // 1.0 and 2.0 should always be legal values + glGenTextures(1, &tex); + glBindTexture (GL_TEXTURE_2D, tex); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f); + glGetTexParameterfv (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &test1); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f); + glGetTexParameterfv (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &test2); + glDeleteTextures(1, &tex); + + if (test1 == 1 && test2 == 2) + { + Con_Printf("FOUND: EXT_texture_filter_anisotropic\n"); + gl_anisotropy_able = true; + } + else + { + Con_Warning ("anisotropic filtering locked by driver. Current driver setting is %f\n", test1); + } + + //get max value either way, so the menu and stuff know it + glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gl_max_anisotropy); + if (gl_max_anisotropy < 2) + { + gl_anisotropy_able = false; + gl_max_anisotropy = 1; + Con_Warning ("anisotropic filtering broken: disabled\n"); + } + } + else + { + gl_max_anisotropy = 1; + Con_Warning ("texture_filter_anisotropic not supported\n"); + } + + // texture_non_power_of_two + // + if (COM_CheckParm("-notexturenpot")) + Con_Warning ("texture_non_power_of_two disabled at command line\n"); + else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_non_power_of_two")) + { + Con_Printf("FOUND: ARB_texture_non_power_of_two\n"); + gl_texture_NPOT = true; + } + else + { + Con_Warning ("texture_non_power_of_two not supported\n"); + } + + // GLSL + // + if (COM_CheckParm("-noglsl")) + Con_Warning ("GLSL disabled at command line\n"); + else if (gl_version_major >= 2) + { + GL_CreateShaderFunc = (QS_PFNGLCREATESHADERPROC) SDL_GL_GetProcAddress("glCreateShader"); + GL_DeleteShaderFunc = (QS_PFNGLDELETESHADERPROC) SDL_GL_GetProcAddress("glDeleteShader"); + GL_DeleteProgramFunc = (QS_PFNGLDELETEPROGRAMPROC) SDL_GL_GetProcAddress("glDeleteProgram"); + GL_ShaderSourceFunc = (QS_PFNGLSHADERSOURCEPROC) SDL_GL_GetProcAddress("glShaderSource"); + GL_CompileShaderFunc = (QS_PFNGLCOMPILESHADERPROC) SDL_GL_GetProcAddress("glCompileShader"); + GL_GetShaderivFunc = (QS_PFNGLGETSHADERIVPROC) SDL_GL_GetProcAddress("glGetShaderiv"); + GL_GetShaderInfoLogFunc = (QS_PFNGLGETSHADERINFOLOGPROC) SDL_GL_GetProcAddress("glGetShaderInfoLog"); + GL_GetProgramivFunc = (QS_PFNGLGETPROGRAMIVPROC) SDL_GL_GetProcAddress("glGetProgramiv"); + GL_GetProgramInfoLogFunc = (QS_PFNGLGETPROGRAMINFOLOGPROC) SDL_GL_GetProcAddress("glGetProgramInfoLog"); + GL_CreateProgramFunc = (QS_PFNGLCREATEPROGRAMPROC) SDL_GL_GetProcAddress("glCreateProgram"); + GL_AttachShaderFunc = (QS_PFNGLATTACHSHADERPROC) SDL_GL_GetProcAddress("glAttachShader"); + GL_LinkProgramFunc = (QS_PFNGLLINKPROGRAMPROC) SDL_GL_GetProcAddress("glLinkProgram"); + GL_BindAttribLocationFunc = (QS_PFNGLBINDATTRIBLOCATIONFUNC) SDL_GL_GetProcAddress("glBindAttribLocation"); + GL_UseProgramFunc = (QS_PFNGLUSEPROGRAMPROC) SDL_GL_GetProcAddress("glUseProgram"); + GL_GetAttribLocationFunc = (QS_PFNGLGETATTRIBLOCATIONPROC) SDL_GL_GetProcAddress("glGetAttribLocation"); + GL_VertexAttribPointerFunc = (QS_PFNGLVERTEXATTRIBPOINTERPROC) SDL_GL_GetProcAddress("glVertexAttribPointer"); + GL_EnableVertexAttribArrayFunc = (QS_PFNGLENABLEVERTEXATTRIBARRAYPROC) SDL_GL_GetProcAddress("glEnableVertexAttribArray"); + GL_DisableVertexAttribArrayFunc = (QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC) SDL_GL_GetProcAddress("glDisableVertexAttribArray"); + GL_GetUniformLocationFunc = (QS_PFNGLGETUNIFORMLOCATIONPROC) SDL_GL_GetProcAddress("glGetUniformLocation"); + GL_Uniform1iFunc = (QS_PFNGLUNIFORM1IPROC) SDL_GL_GetProcAddress("glUniform1i"); + GL_Uniform1fFunc = (QS_PFNGLUNIFORM1FPROC) SDL_GL_GetProcAddress("glUniform1f"); + GL_Uniform3fFunc = (QS_PFNGLUNIFORM3FPROC) SDL_GL_GetProcAddress("glUniform3f"); + GL_Uniform4fFunc = (QS_PFNGLUNIFORM4FPROC) SDL_GL_GetProcAddress("glUniform4f"); + + if (GL_CreateShaderFunc && + GL_DeleteShaderFunc && + GL_DeleteProgramFunc && + GL_ShaderSourceFunc && + GL_CompileShaderFunc && + GL_GetShaderivFunc && + GL_GetShaderInfoLogFunc && + GL_GetProgramivFunc && + GL_GetProgramInfoLogFunc && + GL_CreateProgramFunc && + GL_AttachShaderFunc && + GL_LinkProgramFunc && + GL_BindAttribLocationFunc && + GL_UseProgramFunc && + GL_GetAttribLocationFunc && + GL_VertexAttribPointerFunc && + GL_EnableVertexAttribArrayFunc && + GL_DisableVertexAttribArrayFunc && + GL_GetUniformLocationFunc && + GL_Uniform1iFunc && + GL_Uniform1fFunc && + GL_Uniform3fFunc && + GL_Uniform4fFunc) + { + Con_Printf("FOUND: GLSL\n"); + gl_glsl_able = true; + } + else + { + Con_Warning ("GLSL not available\n"); + } + } + else + { + Con_Warning ("OpenGL version < 2, GLSL not available\n"); + } + // GLSL gamma + // + if (COM_CheckParm("-noglslgamma")) + Con_Warning ("GLSL gamma disabled at command line\n"); + else if (gl_glsl_able) + { + gl_glsl_gamma_able = true; + Con_Printf("Enabled: GLSL gamma\n"); + } + else + { + Con_Warning ("GLSL gamma not available, using hardware gamma\n"); + } + // GLSL alias model rendering + // + if (COM_CheckParm("-noglslalias")) + Con_Warning ("GLSL alias model rendering disabled at command line\n"); + else if (gl_glsl_able && gl_vbo_able && gl_max_texture_units >= 3) + { + gl_glsl_alias_able = true; + Con_Printf("Enabled: GLSL alias model rendering\n"); + } + else + { + Con_Warning ("GLSL alias model rendering not available, using Fitz renderer\n"); + } + + // packed_pixels + // + if (COM_CheckParm("-nopackedpixels")) + Con_Warning ("EXT_packed_pixels disabled at command line\n"); + else if (host_bigendian) /** FIXME: See https://github.com/sezero/quakespasm/issues/114 **/ + Con_Warning ("EXT_packed_pixels disabled on big endian systems"); + else if (gl_glsl_alias_able) + { + gl_packed_pixels = true; + Con_Printf("Enabled: EXT_packed_pixels\n"); + } + #if 0 /* Disabling for non-GLSL path, needs more surgery. */ + else if (GL_ParseExtensionList(gl_extensions, "GL_APPLE_packed_pixels")) + { + Con_Printf("FOUND: APPLE_packed_pixels\n"); + gl_packed_pixels = true; + } + else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_packed_pixels")) + { + Con_Printf("FOUND: EXT_packed_pixels\n"); + gl_packed_pixels = true; + } + else + { + Con_Warning ("packed_pixels not supported\n"); + } + #endif + + // glGenerateMipmap for warp textures + if (COM_CheckParm("-nowarpmipmaps")) + Con_Warning ("glGenerateMipmap disabled at command line\n"); + else + { + if (gl_version_major >= 3 || GL_ParseExtensionList(gl_extensions, "GL_ARB_framebuffer_object")) + { + GL_GenerateMipmap = (QS_PFNGENERATEMIPMAP) SDL_GL_GetProcAddress("glGenerateMipmap"); + if (GL_GenerateMipmap != NULL) + Con_Printf ("FOUND: glGenerateMipmap\n"); + } + else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_framebuffer_object")) + { + GL_GenerateMipmap = (QS_PFNGENERATEMIPMAP) SDL_GL_GetProcAddress("glGenerateMipmapEXT"); + if (GL_GenerateMipmap != NULL) + Con_Printf ("FOUND: glGenerateMipmapEXT\n"); + } + if (GL_GenerateMipmap == NULL) + Con_Warning ("glGenerateMipmap not available, liquids won't have mipmaps\n"); + } +} + +/* +=============== +GL_SetupState -- johnfitz + +does all the stuff from GL_Init that needs to be done every time a new GL render context is created +=============== +*/ +static void GL_SetupState (void) +{ + glClearColor (0.15,0.15,0.15,0); //johnfitz -- originally 1,0,0,0 + glCullFace(GL_BACK); //johnfitz -- glquake used CCW with backwards culling -- let's do it right + glFrontFace(GL_CW); //johnfitz -- glquake used CCW with backwards culling -- let's do it right + glEnable(GL_TEXTURE_2D); + glEnable(GL_ALPHA_TEST); + glAlphaFunc(GL_GREATER, 0.666); + glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); + glShadeModel (GL_FLAT); + glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //johnfitz + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glDepthRange (0, 1); //johnfitz -- moved here becuase gl_ztrick is gone. + glDepthFunc (GL_LEQUAL); //johnfitz -- moved here becuase gl_ztrick is gone. +} + +/* +=============== +GL_Init +=============== +*/ +static void GL_Init (void) +{ + gl_vendor = (const char *) glGetString (GL_VENDOR); + gl_renderer = (const char *) glGetString (GL_RENDERER); + gl_version = (const char *) glGetString (GL_VERSION); + gl_extensions = (const char *) glGetString (GL_EXTENSIONS); + + Con_SafePrintf ("GL_VENDOR: %s\n", gl_vendor); + Con_SafePrintf ("GL_RENDERER: %s\n", gl_renderer); + Con_SafePrintf ("GL_VERSION: %s\n", gl_version); + + if (gl_version == NULL || sscanf(gl_version, "%d.%d", &gl_version_major, &gl_version_minor) < 2) + { + gl_version_major = 0; + gl_version_minor = 0; + } + + if (gl_extensions_nice != NULL) + Z_Free (gl_extensions_nice); + gl_extensions_nice = GL_MakeNiceExtensionsList (gl_extensions); + + GL_CheckExtensions (); //johnfitz + +#ifdef __APPLE__ + // ericw -- enable multi-threaded OpenGL, gives a decent FPS boost. + // https://developer.apple.com/library/mac/technotes/tn2085/ + if (host_parms->numcpus > 1 && + kCGLNoError != CGLEnable(CGLGetCurrentContext(), kCGLCEMPEngine)) + { + Con_Warning ("Couldn't enable multi-threaded OpenGL"); + } +#endif + + //johnfitz -- intel video workarounds from Baker + if (!strcmp(gl_vendor, "Intel")) + { + Con_Printf ("Intel Display Adapter detected, enabling gl_clear\n"); + Cbuf_AddText ("gl_clear 1"); + } + //johnfitz + + GLAlias_CreateShaders (); + GLWorld_CreateShaders (); + GL_ClearBufferBindings (); +} + +/* +================= +GL_BeginRendering -- sets values of glx, gly, glwidth, glheight +================= +*/ +void GL_BeginRendering (int *x, int *y, int *width, int *height) +{ + *x = *y = 0; + *width = vid.width; + *height = vid.height; +} + +/* +================= +GL_EndRendering +================= +*/ +void GL_EndRendering (void) +{ + if (!scr_skipupdate) + { +#if defined(USE_SDL2) + SDL_GL_SwapWindow(draw_context); +#else + SDL_GL_SwapBuffers(); +#endif + } +} + + +void VID_Shutdown (void) +{ + if (vid_initialized) + { + VID_Gamma_Shutdown (); //johnfitz +#if defined(USE_SDL2) + SDL_GL_DeleteContext(gl_context); + gl_context = NULL; + SDL_DestroyWindow(draw_context); +#endif + SDL_QuitSubSystem(SDL_INIT_VIDEO); + draw_context = NULL; + PL_VID_Shutdown(); + } +} + +/* +=================================================================== + +MAIN WINDOW + +=================================================================== +*/ + +/* +================ +ClearAllStates +================ +*/ +static void ClearAllStates (void) +{ + Key_ClearStates (); + IN_ClearStates (); +} + + +//========================================================================== +// +// COMMANDS +// +//========================================================================== + +/* +================= +VID_DescribeCurrentMode_f +================= +*/ +static void VID_DescribeCurrentMode_f (void) +{ + if (draw_context) + Con_Printf("%dx%dx%d %dHz %s\n", + VID_GetCurrentWidth(), + VID_GetCurrentHeight(), + VID_GetCurrentBPP(), + VID_GetCurrentRefreshRate(), + VID_GetFullscreen() ? "fullscreen" : "windowed"); +} + +/* +================= +VID_DescribeModes_f -- johnfitz -- changed formatting, and added refresh rates after each mode. +================= +*/ +static void VID_DescribeModes_f (void) +{ + int i; + int lastwidth, lastheight, lastbpp, count; + + lastwidth = lastheight = lastbpp = count = 0; + + for (i = 0; i < nummodes; i++) + { + if (lastwidth != modelist[i].width || lastheight != modelist[i].height || lastbpp != modelist[i].bpp) + { + if (count > 0) + Con_SafePrintf ("\n"); + Con_SafePrintf (" %4i x %4i x %i : %i", modelist[i].width, modelist[i].height, modelist[i].bpp, modelist[i].refreshrate); + lastwidth = modelist[i].width; + lastheight = modelist[i].height; + lastbpp = modelist[i].bpp; + count++; + } + } + Con_Printf ("\n%i modes\n", count); +} + +/* +=================== +VID_FSAA_f -- ericw -- warn that vid_fsaa requires engine restart +=================== +*/ +static void VID_FSAA_f (cvar_t *var) +{ + // don't print the warning if vid_fsaa is set during startup + if (vid_initialized) + Con_Printf("%s %d requires engine restart to take effect\n", var->name, (int)var->value); +} + +//========================================================================== +// +// INIT +// +//========================================================================== + +/* +================= +VID_InitModelist +================= +*/ +static void VID_InitModelist (void) +{ +#if defined(USE_SDL2) + const int sdlmodes = SDL_GetNumDisplayModes(0); + int i; + + nummodes = 0; + for (i = 0; i < sdlmodes; i++) + { + SDL_DisplayMode mode; + + if (nummodes >= MAX_MODE_LIST) + break; + if (SDL_GetDisplayMode(0, i, &mode) == 0) + { + modelist[nummodes].width = mode.w; + modelist[nummodes].height = mode.h; + modelist[nummodes].bpp = SDL_BITSPERPIXEL(mode.format); + modelist[nummodes].refreshrate = mode.refresh_rate; + nummodes++; + } + } +#else /* !defined(USE_SDL2) */ + SDL_PixelFormat format; + SDL_Rect **modes; + Uint32 flags; + int i, j, k, originalnummodes, existingmode; + int bpps[] = {16, 24, 32}; // enumerate >8 bpp modes + + originalnummodes = nummodes = 0; + memset(&format, 0, sizeof(format)); + + // enumerate fullscreen modes + flags = DEFAULT_SDL_FLAGS | SDL_FULLSCREEN; + for (i = 0; i < (int)Q_COUNTOF(bpps); i++) + { + if (nummodes >= MAX_MODE_LIST) + break; + + format.BitsPerPixel = bpps[i]; + modes = SDL_ListModes(&format, flags); + + if (modes == (SDL_Rect **)0 || modes == (SDL_Rect **)-1) + continue; + + for (j = 0; modes[j]; j++) + { + if (modes[j]->w > MAXWIDTH || modes[j]->h > MAXHEIGHT || nummodes >= MAX_MODE_LIST) + continue; + + modelist[nummodes].width = modes[j]->w; + modelist[nummodes].height = modes[j]->h; + modelist[nummodes].bpp = bpps[i]; + modelist[nummodes].refreshrate = DEFAULT_REFRESHRATE; + + for (k=originalnummodes, existingmode = 0 ; k < nummodes ; k++) + { + if ((modelist[nummodes].width == modelist[k].width) && + (modelist[nummodes].height == modelist[k].height) && + (modelist[nummodes].bpp == modelist[k].bpp)) + { + existingmode = 1; + break; + } + } + + if (!existingmode) + { + nummodes++; + } + } + } + + if (nummodes == originalnummodes) + Con_SafePrintf ("No fullscreen DIB modes found\n"); +#endif /* !defined(USE_SDL2) */ +} + +/* +=================== +VID_Init +=================== +*/ +void VID_Init (void) +{ + static char vid_center[] = "SDL_VIDEO_CENTERED=center"; + int p, width, height, refreshrate, bpp; + int display_width, display_height, display_refreshrate, display_bpp; + qboolean fullscreen; + const char *read_vars[] = { "vid_fullscreen", + "vid_width", + "vid_height", + "vid_refreshrate", + "vid_bpp", + "vid_vsync", + "vid_fsaa", + "vid_desktopfullscreen", + "vid_borderless"}; +#define num_readvars Q_COUNTOF(read_vars) + + Cvar_RegisterVariable (&vid_fullscreen); //johnfitz + Cvar_RegisterVariable (&vid_width); //johnfitz + Cvar_RegisterVariable (&vid_height); //johnfitz + Cvar_RegisterVariable (&vid_refreshrate); //johnfitz + Cvar_RegisterVariable (&vid_bpp); //johnfitz + Cvar_RegisterVariable (&vid_vsync); //johnfitz + Cvar_RegisterVariable (&vid_fsaa); //QuakeSpasm + Cvar_RegisterVariable (&vid_desktopfullscreen); //QuakeSpasm + Cvar_RegisterVariable (&vid_borderless); //QuakeSpasm + Cvar_SetCallback (&vid_fullscreen, VID_Changed_f); + Cvar_SetCallback (&vid_width, VID_Changed_f); + Cvar_SetCallback (&vid_height, VID_Changed_f); + Cvar_SetCallback (&vid_refreshrate, VID_Changed_f); + Cvar_SetCallback (&vid_bpp, VID_Changed_f); + Cvar_SetCallback (&vid_vsync, VID_Changed_f); + Cvar_SetCallback (&vid_fsaa, VID_FSAA_f); + Cvar_SetCallback (&vid_desktopfullscreen, VID_Changed_f); + Cvar_SetCallback (&vid_borderless, VID_Changed_f); + + Cmd_AddCommand ("vid_unlock", VID_Unlock); //johnfitz + Cmd_AddCommand ("vid_restart", VID_Restart); //johnfitz + Cmd_AddCommand ("vid_test", VID_Test); //johnfitz + Cmd_AddCommand ("vid_describecurrentmode", VID_DescribeCurrentMode_f); + Cmd_AddCommand ("vid_describemodes", VID_DescribeModes_f); + + putenv (vid_center); /* SDL_putenv is problematic in versions <= 1.2.9 */ + + if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) + Sys_Error("Couldn't init SDL video: %s", SDL_GetError()); + +#if defined(USE_SDL2) + { + SDL_DisplayMode mode; + if (SDL_GetDesktopDisplayMode(0, &mode) != 0) + Sys_Error("Could not get desktop display mode"); + + display_width = mode.w; + display_height = mode.h; + display_refreshrate = mode.refresh_rate; + display_bpp = SDL_BITSPERPIXEL(mode.format); + } +#else + { + const SDL_VideoInfo *info = SDL_GetVideoInfo(); + display_width = info->current_w; + display_height = info->current_h; + display_refreshrate = DEFAULT_REFRESHRATE; + display_bpp = info->vfmt->BitsPerPixel; + } +#endif + + Cvar_SetValueQuick (&vid_bpp, (float)display_bpp); + + if (CFG_OpenConfig("config.cfg") == 0) + { + CFG_ReadCvars(read_vars, num_readvars); + CFG_CloseConfig(); + } + CFG_ReadCvarOverrides(read_vars, num_readvars); + + VID_InitModelist(); + + width = (int)vid_width.value; + height = (int)vid_height.value; + refreshrate = (int)vid_refreshrate.value; + bpp = (int)vid_bpp.value; + fullscreen = (int)vid_fullscreen.value; + fsaa = (int)vid_fsaa.value; + + if (COM_CheckParm("-current")) + { + width = display_width; + height = display_height; + refreshrate = display_refreshrate; + bpp = display_bpp; + fullscreen = true; + } + else + { + p = COM_CheckParm("-width"); + if (p && p < com_argc-1) + { + width = Q_atoi(com_argv[p+1]); + + if(!COM_CheckParm("-height")) + height = width * 3 / 4; + } + + p = COM_CheckParm("-height"); + if (p && p < com_argc-1) + { + height = Q_atoi(com_argv[p+1]); + + if(!COM_CheckParm("-width")) + width = height * 4 / 3; + } + + p = COM_CheckParm("-refreshrate"); + if (p && p < com_argc-1) + refreshrate = Q_atoi(com_argv[p+1]); + + p = COM_CheckParm("-bpp"); + if (p && p < com_argc-1) + bpp = Q_atoi(com_argv[p+1]); + + if (COM_CheckParm("-window") || COM_CheckParm("-w")) + fullscreen = false; + else if (COM_CheckParm("-fullscreen") || COM_CheckParm("-f")) + fullscreen = true; + } + + p = COM_CheckParm ("-fsaa"); + if (p && p < com_argc-1) + fsaa = atoi(com_argv[p+1]); + + if (!VID_ValidMode(width, height, refreshrate, bpp, fullscreen)) + { + width = (int)vid_width.value; + height = (int)vid_height.value; + refreshrate = (int)vid_refreshrate.value; + bpp = (int)vid_bpp.value; + fullscreen = (int)vid_fullscreen.value; + } + + if (!VID_ValidMode(width, height, refreshrate, bpp, fullscreen)) + { + width = 640; + height = 480; + refreshrate = display_refreshrate; + bpp = display_bpp; + fullscreen = false; + } + + vid_initialized = true; + + vid.maxwarpwidth = WARP_WIDTH; + vid.maxwarpheight = WARP_HEIGHT; + vid.colormap = host_colormap; + vid.fullbright = 256 - LittleLong (*((int *)vid.colormap + 2048)); + +#if !defined(USE_SDL2) + // set window icon + PL_SetWindowIcon(); +#endif + + VID_SetMode (width, height, refreshrate, bpp, fullscreen); + +#if defined(USE_SDL2) + // set window icon + PL_SetWindowIcon(); +#endif + + GL_Init (); + GL_SetupState (); + Cmd_AddCommand ("gl_info", GL_Info_f); //johnfitz + + //johnfitz -- removed code creating "glquake" subdirectory + + vid_menucmdfn = VID_Menu_f; //johnfitz + vid_menudrawfn = VID_MenuDraw; + vid_menukeyfn = VID_MenuKey; + + VID_Gamma_Init(); //johnfitz + VID_Menu_Init(); //johnfitz + + //QuakeSpasm: current vid settings should override config file settings. + //so we have to lock the vid mode from now until after all config files are read. + vid_locked = true; +} + +// new proc by S.A., called by alt-return key binding. +void VID_Toggle (void) +{ + // disabling the fast path completely because SDL_SetWindowFullscreen was changing + // the window size on SDL2/WinXP and we weren't set up to handle it. --ericw + // + // TODO: Clear out the dead code, reinstate the fast path using SDL_SetWindowFullscreen + // inside VID_SetMode, check window size to fix WinXP issue. This will + // keep all the mode changing code in one place. + static qboolean vid_toggle_works = false; + qboolean toggleWorked; +#if defined(USE_SDL2) + Uint32 flags = 0; +#endif + + S_ClearBuffer (); + + if (!vid_toggle_works) + goto vrestart; + else if (gl_vbo_able) + { + // disabling the fast path because with SDL 1.2 it invalidates VBOs (using them + // causes a crash, sugesting that the fullscreen toggle created a new GL context, + // although texture objects remain valid for some reason). + // + // SDL2 does promise window resizes / fullscreen changes preserve the GL context, + // so we could use the fast path with SDL2. --ericw + vid_toggle_works = false; + goto vrestart; + } + +#if defined(USE_SDL2) + if (!VID_GetFullscreen()) { + flags = vid_desktopfullscreen.value ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN; + } + + toggleWorked = SDL_SetWindowFullscreen(draw_context, flags) == 0; +#else + toggleWorked = SDL_WM_ToggleFullScreen(draw_context) == 1; +#endif + + if (toggleWorked) + { + Sbar_Changed (); // Sbar seems to need refreshing + + modestate = VID_GetFullscreen() ? MS_FULLSCREEN : MS_WINDOWED; + + VID_SyncCvars(); + + // update mouse grab + if (key_dest == key_console || key_dest == key_menu) + { + if (modestate == MS_WINDOWED) + IN_Deactivate(true); + else if (modestate == MS_FULLSCREEN) + IN_Activate(); + } + } + else + { + vid_toggle_works = false; + Con_DPrintf ("SDL_WM_ToggleFullScreen failed, attempting VID_Restart\n"); + vrestart: + Cvar_SetQuick (&vid_fullscreen, VID_GetFullscreen() ? "0" : "1"); + Cbuf_AddText ("vid_restart\n"); + } +} + +/* +================ +VID_SyncCvars -- johnfitz -- set vid cvars to match current video mode +================ +*/ +void VID_SyncCvars (void) +{ + if (draw_context) + { + if (!VID_GetDesktopFullscreen()) + { + Cvar_SetValueQuick (&vid_width, VID_GetCurrentWidth()); + Cvar_SetValueQuick (&vid_height, VID_GetCurrentHeight()); + } + Cvar_SetValueQuick (&vid_refreshrate, VID_GetCurrentRefreshRate()); + Cvar_SetValueQuick (&vid_bpp, VID_GetCurrentBPP()); + Cvar_SetQuick (&vid_fullscreen, VID_GetFullscreen() ? "1" : "0"); + // don't sync vid_desktopfullscreen, it's a user preference that + // should persist even if we are in windowed mode. + Cvar_SetQuick (&vid_vsync, VID_GetVSync() ? "1" : "0"); + } + + vid_changed = false; +} + +//========================================================================== +// +// NEW VIDEO MENU -- johnfitz +// +//========================================================================== + +enum { + VID_OPT_MODE, + VID_OPT_BPP, + VID_OPT_REFRESHRATE, + VID_OPT_FULLSCREEN, + VID_OPT_VSYNC, + VID_OPT_TEST, + VID_OPT_APPLY, + VIDEO_OPTIONS_ITEMS +}; + +static int video_options_cursor = 0; + +typedef struct { + int width,height; +} vid_menu_mode; + +//TODO: replace these fixed-length arrays with hunk_allocated buffers +static vid_menu_mode vid_menu_modes[MAX_MODE_LIST]; +static int vid_menu_nummodes = 0; + +static int vid_menu_bpps[MAX_BPPS_LIST]; +static int vid_menu_numbpps = 0; + +static int vid_menu_rates[MAX_RATES_LIST]; +static int vid_menu_numrates=0; + +/* +================ +VID_Menu_Init +================ +*/ +static void VID_Menu_Init (void) +{ + int i, j, h, w; + + for (i = 0; i < nummodes; i++) + { + w = modelist[i].width; + h = modelist[i].height; + + for (j = 0; j < vid_menu_nummodes; j++) + { + if (vid_menu_modes[j].width == w && + vid_menu_modes[j].height == h) + break; + } + + if (j == vid_menu_nummodes) + { + vid_menu_modes[j].width = w; + vid_menu_modes[j].height = h; + vid_menu_nummodes++; + } + } +} + +/* +================ +VID_Menu_RebuildBppList + +regenerates bpp list based on current vid_width and vid_height +================ +*/ +static void VID_Menu_RebuildBppList (void) +{ + int i, j, b; + + vid_menu_numbpps = 0; + + for (i = 0; i < nummodes; i++) + { + if (vid_menu_numbpps >= MAX_BPPS_LIST) + break; + + //bpp list is limited to bpps available with current width/height + if (modelist[i].width != vid_width.value || + modelist[i].height != vid_height.value) + continue; + + b = modelist[i].bpp; + + for (j = 0; j < vid_menu_numbpps; j++) + { + if (vid_menu_bpps[j] == b) + break; + } + + if (j == vid_menu_numbpps) + { + vid_menu_bpps[j] = b; + vid_menu_numbpps++; + } + } + + //if there are no valid fullscreen bpps for this width/height, just pick one + if (vid_menu_numbpps == 0) + { + Cvar_SetValueQuick (&vid_bpp, (float)modelist[0].bpp); + return; + } + + //if vid_bpp is not in the new list, change vid_bpp + for (i = 0; i < vid_menu_numbpps; i++) + if (vid_menu_bpps[i] == (int)(vid_bpp.value)) + break; + + if (i == vid_menu_numbpps) + Cvar_SetValueQuick (&vid_bpp, (float)vid_menu_bpps[0]); +} + +/* +================ +VID_Menu_RebuildRateList + +regenerates rate list based on current vid_width, vid_height and vid_bpp +================ +*/ +static void VID_Menu_RebuildRateList (void) +{ + int i, j, r; + + vid_menu_numrates = 0; + + for (i = 0; i < nummodes; i++) + { + //rate list is limited to rates available with current width/height/bpp + if (modelist[i].width != vid_width.value || + modelist[i].height != vid_height.value || + modelist[i].bpp != vid_bpp.value) + continue; + + r = modelist[i].refreshrate; + + for (j = 0; j < vid_menu_numrates; j++) + { + if (vid_menu_rates[j] == r) + break; + } + + if (j == vid_menu_numrates) + { + vid_menu_rates[j] = r; + vid_menu_numrates++; + } + } + + //if there are no valid fullscreen refreshrates for this width/height, just pick one + if (vid_menu_numrates == 0) + { + Cvar_SetValue ("vid_refreshrate",(float)modelist[0].refreshrate); + return; + } + + //if vid_refreshrate is not in the new list, change vid_refreshrate + for (i = 0; i < vid_menu_numrates; i++) + if (vid_menu_rates[i] == (int)(vid_refreshrate.value)) + break; + + if (i == vid_menu_numrates) + Cvar_SetValue ("vid_refreshrate",(float)vid_menu_rates[0]); +} + +/* +================ +VID_Menu_ChooseNextMode + +chooses next resolution in order, then updates vid_width and +vid_height cvars, then updates bpp and refreshrate lists +================ +*/ +static void VID_Menu_ChooseNextMode (int dir) +{ + int i; + + if (vid_menu_nummodes) + { + for (i = 0; i < vid_menu_nummodes; i++) + { + if (vid_menu_modes[i].width == vid_width.value && + vid_menu_modes[i].height == vid_height.value) + break; + } + + if (i == vid_menu_nummodes) //can't find it in list, so it must be a custom windowed res + { + i = 0; + } + else + { + i += dir; + if (i >= vid_menu_nummodes) + i = 0; + else if (i < 0) + i = vid_menu_nummodes-1; + } + + Cvar_SetValueQuick (&vid_width, (float)vid_menu_modes[i].width); + Cvar_SetValueQuick (&vid_height, (float)vid_menu_modes[i].height); + VID_Menu_RebuildBppList (); + VID_Menu_RebuildRateList (); + } +} + +/* +================ +VID_Menu_ChooseNextBpp + +chooses next bpp in order, then updates vid_bpp cvar +================ +*/ +static void VID_Menu_ChooseNextBpp (int dir) +{ + int i; + + if (vid_menu_numbpps) + { + for (i = 0; i < vid_menu_numbpps; i++) + { + if (vid_menu_bpps[i] == vid_bpp.value) + break; + } + + if (i == vid_menu_numbpps) //can't find it in list + { + i = 0; + } + else + { + i += dir; + if (i >= vid_menu_numbpps) + i = 0; + else if (i < 0) + i = vid_menu_numbpps-1; + } + + Cvar_SetValueQuick (&vid_bpp, (float)vid_menu_bpps[i]); + } +} + +/* +================ +VID_Menu_ChooseNextRate + +chooses next refresh rate in order, then updates vid_refreshrate cvar +================ +*/ +static void VID_Menu_ChooseNextRate (int dir) +{ + int i; + + for (i = 0; i < vid_menu_numrates; i++) + { + if (vid_menu_rates[i] == vid_refreshrate.value) + break; + } + + if (i == vid_menu_numrates) //can't find it in list + { + i = 0; + } + else + { + i += dir; + if (i >= vid_menu_numrates) + i = 0; + else if (i < 0) + i = vid_menu_numrates-1; + } + + Cvar_SetValue ("vid_refreshrate",(float)vid_menu_rates[i]); +} + +/* +================ +VID_MenuKey +================ +*/ +static void VID_MenuKey (int key) +{ + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + VID_SyncCvars (); //sync cvars before leaving menu. FIXME: there are other ways to leave menu + S_LocalSound ("misc/menu1.wav"); + M_Menu_Options_f (); + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + video_options_cursor--; + if (video_options_cursor < 0) + video_options_cursor = VIDEO_OPTIONS_ITEMS-1; + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + video_options_cursor++; + if (video_options_cursor >= VIDEO_OPTIONS_ITEMS) + video_options_cursor = 0; + break; + + case K_LEFTARROW: + S_LocalSound ("misc/menu3.wav"); + switch (video_options_cursor) + { + case VID_OPT_MODE: + VID_Menu_ChooseNextMode (1); + break; + case VID_OPT_BPP: + VID_Menu_ChooseNextBpp (1); + break; + case VID_OPT_REFRESHRATE: + VID_Menu_ChooseNextRate (1); + break; + case VID_OPT_FULLSCREEN: + Cbuf_AddText ("toggle vid_fullscreen\n"); + break; + case VID_OPT_VSYNC: + Cbuf_AddText ("toggle vid_vsync\n"); // kristian + break; + default: + break; + } + break; + + case K_RIGHTARROW: + S_LocalSound ("misc/menu3.wav"); + switch (video_options_cursor) + { + case VID_OPT_MODE: + VID_Menu_ChooseNextMode (-1); + break; + case VID_OPT_BPP: + VID_Menu_ChooseNextBpp (-1); + break; + case VID_OPT_REFRESHRATE: + VID_Menu_ChooseNextRate (-1); + break; + case VID_OPT_FULLSCREEN: + Cbuf_AddText ("toggle vid_fullscreen\n"); + break; + case VID_OPT_VSYNC: + Cbuf_AddText ("toggle vid_vsync\n"); + break; + default: + break; + } + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_entersound = true; + switch (video_options_cursor) + { + case VID_OPT_MODE: + VID_Menu_ChooseNextMode (1); + break; + case VID_OPT_BPP: + VID_Menu_ChooseNextBpp (1); + break; + case VID_OPT_REFRESHRATE: + VID_Menu_ChooseNextRate (1); + break; + case VID_OPT_FULLSCREEN: + Cbuf_AddText ("toggle vid_fullscreen\n"); + break; + case VID_OPT_VSYNC: + Cbuf_AddText ("toggle vid_vsync\n"); + break; + case VID_OPT_TEST: + Cbuf_AddText ("vid_test\n"); + break; + case VID_OPT_APPLY: + Cbuf_AddText ("vid_restart\n"); + key_dest = key_game; + m_state = m_none; + IN_Activate(); + break; + default: + break; + } + break; + + default: + break; + } +} + +/* +================ +VID_MenuDraw +================ +*/ +static void VID_MenuDraw (void) +{ + int i, y; + qpic_t *p; + const char *title; + + y = 4; + + // plaque + p = Draw_CachePic ("gfx/qplaque.lmp"); + M_DrawTransPic (16, y, p); + + //p = Draw_CachePic ("gfx/vidmodes.lmp"); + p = Draw_CachePic ("gfx/p_option.lmp"); + M_DrawPic ( (320-p->width)/2, y, p); + + y += 28; + + // title + title = "Video Options"; + M_PrintWhite ((320-8*strlen(title))/2, y, title); + + y += 16; + + // options + for (i = 0; i < VIDEO_OPTIONS_ITEMS; i++) + { + switch (i) + { + case VID_OPT_MODE: + M_Print (16, y, " Video mode"); + M_Print (184, y, va("%ix%i", (int)vid_width.value, (int)vid_height.value)); + break; + case VID_OPT_BPP: + M_Print (16, y, " Color depth"); + M_Print (184, y, va("%i", (int)vid_bpp.value)); + break; + case VID_OPT_REFRESHRATE: + M_Print (16, y, " Refresh rate"); + M_Print (184, y, va("%i", (int)vid_refreshrate.value)); + break; + case VID_OPT_FULLSCREEN: + M_Print (16, y, " Fullscreen"); + M_DrawCheckbox (184, y, (int)vid_fullscreen.value); + break; + case VID_OPT_VSYNC: + M_Print (16, y, " Vertical sync"); + if (gl_swap_control) + M_DrawCheckbox (184, y, (int)vid_vsync.value); + else + M_Print (184, y, "N/A"); + break; + case VID_OPT_TEST: + y += 8; //separate the test and apply items + M_Print (16, y, " Test changes"); + break; + case VID_OPT_APPLY: + M_Print (16, y, " Apply changes"); + break; + } + + if (video_options_cursor == i) + M_DrawCharacter (168, y, 12+((int)(realtime*4)&1)); + + y += 8; + } +} + +/* +================ +VID_Menu_f +================ +*/ +static void VID_Menu_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_video; + m_entersound = true; + + //set all the cvars to match the current mode when entering the menu + VID_SyncCvars (); + + //set up bpp and rate lists based on current cvars + VID_Menu_RebuildBppList (); + VID_Menu_RebuildRateList (); +} diff --git a/Quake/gl_warp.c b/Quake/gl_warp.c new file mode 100644 index 0000000..3c6ea5e --- /dev/null +++ b/Quake/gl_warp.c @@ -0,0 +1,277 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +//gl_warp.c -- warping animation support + +#include "quakedef.h" + +extern cvar_t r_drawflat; + +cvar_t r_oldwater = {"r_oldwater", "0", CVAR_ARCHIVE}; +cvar_t r_waterquality = {"r_waterquality", "8", CVAR_NONE}; +cvar_t r_waterwarp = {"r_waterwarp", "1", CVAR_NONE}; + +int gl_warpimagesize; +float load_subdivide_size; //johnfitz -- remember what subdivide_size value was when this map was loaded + +static const float turbsin[] = { +#include "gl_warp_sin.h" +}; + +#define WARPCALC(s,t) ((s + turbsin[(int)((t*2)+(cl.time*(128.0/M_PI))) & 255]) * (1.0/64)) //johnfitz -- correct warp +#define WARPCALC2(s,t) ((s + turbsin[(int)((t*0.125+cl.time)*(128.0/M_PI)) & 255]) * (1.0/64)) //johnfitz -- old warp + +//============================================================================== +// +// OLD-STYLE WATER +// +//============================================================================== + +static msurface_t *warpface; + +cvar_t gl_subdivide_size = {"gl_subdivide_size", "128", CVAR_ARCHIVE}; + +static void BoundPoly (int numverts, float *verts, vec3_t mins, vec3_t maxs) +{ + int i, j; + float *v; + + mins[0] = mins[1] = mins[2] = FLT_MAX; + maxs[0] = maxs[1] = maxs[2] = -FLT_MAX; + v = verts; + for (i=0 ; i<numverts ; i++) + for (j=0 ; j<3 ; j++, v++) + { + if (*v < mins[j]) + mins[j] = *v; + if (*v > maxs[j]) + maxs[j] = *v; + } +} + +static void SubdividePolygon (int numverts, float *verts) +{ + int i, j, k; + vec3_t mins, maxs; + float m; + float *v; + vec3_t front[64], back[64]; + int f, b; + float dist[64]; + float frac; + glpoly_t *poly; + float s, t; + + if (numverts > 60) + Sys_Error ("SubdividePolygon: numverts = %i", numverts); + + BoundPoly (numverts, verts, mins, maxs); + + for (i=0 ; i<3 ; i++) + { + m = (mins[i] + maxs[i]) * 0.5; + m = gl_subdivide_size.value * floor (m/gl_subdivide_size.value + 0.5); + if (maxs[i] - m < 8) + continue; + if (m - mins[i] < 8) + continue; + + // cut it + v = verts + i; + for (j=0 ; j<numverts ; j++, v+= 3) + dist[j] = *v - m; + + // wrap cases + dist[j] = dist[0]; + v-=i; + VectorCopy (verts, v); + + f = b = 0; + v = verts; + for (j=0 ; j<numverts ; j++, v+= 3) + { + if (dist[j] >= 0) + { + VectorCopy (v, front[f]); + f++; + } + if (dist[j] <= 0) + { + VectorCopy (v, back[b]); + b++; + } + if (dist[j] == 0 || dist[j+1] == 0) + continue; + if ( (dist[j] > 0) != (dist[j+1] > 0) ) + { + // clip point + frac = dist[j] / (dist[j] - dist[j+1]); + for (k=0 ; k<3 ; k++) + front[f][k] = back[b][k] = v[k] + frac*(v[3+k] - v[k]); + f++; + b++; + } + } + + SubdividePolygon (f, front[0]); + SubdividePolygon (b, back[0]); + return; + } + + poly = (glpoly_t *) Hunk_Alloc (sizeof(glpoly_t) + (numverts-4) * VERTEXSIZE*sizeof(float)); + poly->next = warpface->polys->next; + warpface->polys->next = poly; + poly->numverts = numverts; + for (i=0 ; i<numverts ; i++, verts+= 3) + { + VectorCopy (verts, poly->verts[i]); + s = DotProduct (verts, warpface->texinfo->vecs[0]); + t = DotProduct (verts, warpface->texinfo->vecs[1]); + poly->verts[i][3] = s; + poly->verts[i][4] = t; + } +} + +/* +================ +GL_SubdivideSurface +================ +*/ +void GL_SubdivideSurface (msurface_t *fa) +{ + vec3_t verts[64]; + int i; + + if (fa->polys->numverts > 64) + Sys_Error ("GL_SubdivideSurface: numverts = %i", fa->polys->numverts); + + warpface = fa; + + //the first poly in the chain is the undivided poly for newwater rendering. + //grab the verts from that. + for (i=0; i<fa->polys->numverts; i++) + VectorCopy (fa->polys->verts[i], verts[i]); + + SubdividePolygon (fa->polys->numverts, verts[0]); +} + +/* +================ +DrawWaterPoly -- johnfitz +================ +*/ +void DrawWaterPoly (glpoly_t *p) +{ + float *v; + int i; + + if (load_subdivide_size > 48) + { + glBegin (GL_POLYGON); + v = p->verts[0]; + for (i=0 ; i<p->numverts ; i++, v+= VERTEXSIZE) + { + glTexCoord2f (WARPCALC2(v[3],v[4]), WARPCALC2(v[4],v[3])); + glVertex3fv (v); + } + glEnd (); + } + else + { + glBegin (GL_POLYGON); + v = p->verts[0]; + for (i=0 ; i<p->numverts ; i++, v+= VERTEXSIZE) + { + glTexCoord2f (WARPCALC(v[3],v[4]), WARPCALC(v[4],v[3])); + glVertex3fv (v); + } + glEnd (); + } +} + +//============================================================================== +// +// RENDER-TO-FRAMEBUFFER WATER +// +//============================================================================== + +/* +============= +R_UpdateWarpTextures -- johnfitz -- each frame, update warping textures +============= +*/ +#ifdef __WATCOMC__ /* OW1.9 doesn't have floorf() */ +#define floorf(_val) (float)floor((_val)) +#endif +void R_UpdateWarpTextures (void) +{ + texture_t *tx; + int i; + float x, y, x2, warptess; + + if (r_oldwater.value || cl.paused || r_drawflat_cheatsafe || r_lightmap_cheatsafe) + return; + + warptess = 128.0f/CLAMP (3.0f, floorf(r_waterquality.value), 64.0f); + + for (i=0; i<cl.worldmodel->numtextures; i++) + { + if (!(tx = cl.worldmodel->textures[i])) + continue; + + if (!tx->update_warp) + continue; + + //render warp + GL_SetCanvas (CANVAS_WARPIMAGE); + GL_Bind (tx->gltexture); + for (x=0.0; x<128.0; x=x2) + { + x2 = x + warptess; + glBegin (GL_TRIANGLE_STRIP); + for (y=0.0; y<128.01; y+=warptess) // .01 for rounding errors + { + glTexCoord2f (WARPCALC(x,y), WARPCALC(y,x)); + glVertex2f (x,y); + glTexCoord2f (WARPCALC(x2,y), WARPCALC(y,x2)); + glVertex2f (x2,y); + } + glEnd(); + } + + //copy to texture + GL_Bind (tx->warpimage); + glCopyTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, glx, gly+glheight-gl_warpimagesize, gl_warpimagesize, gl_warpimagesize); + if (GL_GenerateMipmap) + GL_GenerateMipmap (GL_TEXTURE_2D); + + tx->update_warp = false; + } + + // ericw -- workaround for osx 10.6 driver bug when using FSAA. R_Clear only clears the warpimage part of the screen. + GL_SetCanvas(CANVAS_DEFAULT); + + //if warp render went down into sbar territory, we need to be sure to refresh it next frame + if (gl_warpimagesize + sb_lines > glheight) + Sbar_Changed (); + + //if viewsize is less than 100, we need to redraw the frame around the viewport + scr_tileclear_updates = 0; +} diff --git a/Quake/gl_warp_sin.h b/Quake/gl_warp_sin.h new file mode 100644 index 0000000..313ab4e --- /dev/null +++ b/Quake/gl_warp_sin.h @@ -0,0 +1,84 @@ +/* + * gl_warp_sin.h + * Copyright (C) 1996-1997 Id Software, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + 0, 0.19633, 0.392541, 0.588517, + 0.784137, 0.979285, 1.17384, 1.3677, + 1.56072, 1.75281, 1.94384, 2.1337, + 2.32228, 2.50945, 2.69512, 2.87916, + 3.06147, 3.24193, 3.42044, 3.59689, + 3.77117, 3.94319, 4.11282, 4.27998, + 4.44456, 4.60647, 4.76559, 4.92185, + 5.07515, 5.22538, 5.37247, 5.51632, + 5.65685, 5.79398, 5.92761, 6.05767, + 6.18408, 6.30677, 6.42566, 6.54068, + 6.65176, 6.75883, 6.86183, 6.9607, + 7.05537, 7.14579, 7.23191, 7.31368, + 7.39104, 7.46394, 7.53235, 7.59623, + 7.65552, 7.71021, 7.76025, 7.80562, + 7.84628, 7.88222, 7.91341, 7.93984, + 7.96148, 7.97832, 7.99036, 7.99759, + 8, 7.99759, 7.99036, 7.97832, + 7.96148, 7.93984, 7.91341, 7.88222, + 7.84628, 7.80562, 7.76025, 7.71021, + 7.65552, 7.59623, 7.53235, 7.46394, + 7.39104, 7.31368, 7.23191, 7.14579, + 7.05537, 6.9607, 6.86183, 6.75883, + 6.65176, 6.54068, 6.42566, 6.30677, + 6.18408, 6.05767, 5.92761, 5.79398, + 5.65685, 5.51632, 5.37247, 5.22538, + 5.07515, 4.92185, 4.76559, 4.60647, + 4.44456, 4.27998, 4.11282, 3.94319, + 3.77117, 3.59689, 3.42044, 3.24193, + 3.06147, 2.87916, 2.69512, 2.50945, + 2.32228, 2.1337, 1.94384, 1.75281, + 1.56072, 1.3677, 1.17384, 0.979285, + 0.784137, 0.588517, 0.392541, 0.19633, + 9.79717e-16, -0.19633, -0.392541, -0.588517, + -0.784137, -0.979285, -1.17384, -1.3677, + -1.56072, -1.75281, -1.94384, -2.1337, + -2.32228, -2.50945, -2.69512, -2.87916, + -3.06147, -3.24193, -3.42044, -3.59689, + -3.77117, -3.94319, -4.11282, -4.27998, + -4.44456, -4.60647, -4.76559, -4.92185, + -5.07515, -5.22538, -5.37247, -5.51632, + -5.65685, -5.79398, -5.92761, -6.05767, + -6.18408, -6.30677, -6.42566, -6.54068, + -6.65176, -6.75883, -6.86183, -6.9607, + -7.05537, -7.14579, -7.23191, -7.31368, + -7.39104, -7.46394, -7.53235, -7.59623, + -7.65552, -7.71021, -7.76025, -7.80562, + -7.84628, -7.88222, -7.91341, -7.93984, + -7.96148, -7.97832, -7.99036, -7.99759, + -8, -7.99759, -7.99036, -7.97832, + -7.96148, -7.93984, -7.91341, -7.88222, + -7.84628, -7.80562, -7.76025, -7.71021, + -7.65552, -7.59623, -7.53235, -7.46394, + -7.39104, -7.31368, -7.23191, -7.14579, + -7.05537, -6.9607, -6.86183, -6.75883, + -6.65176, -6.54068, -6.42566, -6.30677, + -6.18408, -6.05767, -5.92761, -5.79398, + -5.65685, -5.51632, -5.37247, -5.22538, + -5.07515, -4.92185, -4.76559, -4.60647, + -4.44456, -4.27998, -4.11282, -3.94319, + -3.77117, -3.59689, -3.42044, -3.24193, + -3.06147, -2.87916, -2.69512, -2.50945, + -2.32228, -2.1337, -1.94384, -1.75281, + -1.56072, -1.3677, -1.17384, -0.979285, + -0.784137, -0.588517, -0.392541, -0.19633, + diff --git a/Quake/glquake.h b/Quake/glquake.h new file mode 100644 index 0000000..49f918d --- /dev/null +++ b/Quake/glquake.h @@ -0,0 +1,439 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef GLQUAKE_H +#define GLQUAKE_H + +void GL_BeginRendering (int *x, int *y, int *width, int *height); +void GL_EndRendering (void); +void GL_Set2D (void); + +extern int glx, gly, glwidth, glheight; + +#define GL_UNUSED_TEXTURE (~(GLuint)0) + +// r_local.h -- private refresh defs + +#define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0) + // normalizing factor so player model works out to about + // 1 pixel per triangle +#define MAX_LBM_HEIGHT 480 + +#define TILE_SIZE 128 // size of textures generated by R_GenTiledSurf + +#define SKYSHIFT 7 +#define SKYSIZE (1 << SKYSHIFT) +#define SKYMASK (SKYSIZE - 1) + +#define BACKFACE_EPSILON 0.01 + + +void R_TimeRefresh_f (void); +void R_ReadPointFile_f (void); +texture_t *R_TextureAnimation (texture_t *base, int frame); + +typedef struct surfcache_s +{ + struct surfcache_s *next; + struct surfcache_s **owner; // NULL is an empty chunk of memory + int lightadj[MAXLIGHTMAPS]; // checked for strobe flush + int dlight; + int size; // including header + unsigned width; + unsigned height; // DEBUG only needed for debug + float mipscale; + struct texture_s *texture; // checked for animating textures + byte data[4]; // width*height elements +} surfcache_t; + + +typedef struct +{ + pixel_t *surfdat; // destination for generated surface + int rowbytes; // destination logical width in bytes + msurface_t *surf; // description for surface to generate + fixed8_t lightadj[MAXLIGHTMAPS]; + // adjust for lightmap levels for dynamic lighting + texture_t *texture; // corrected for animating textures + int surfmip; // mipmapped ratio of surface texels / world pixels + int surfwidth; // in mipmapped texels + int surfheight; // in mipmapped texels +} drawsurf_t; + + +typedef enum { + pt_static, pt_grav, pt_slowgrav, pt_fire, pt_explode, pt_explode2, pt_blob, pt_blob2 +} ptype_t; + +// !!! if this is changed, it must be changed in d_ifacea.h too !!! +typedef struct particle_s +{ +// driver-usable fields + vec3_t org; + float color; +// drivers never touch the following fields + struct particle_s *next; + vec3_t vel; + float ramp; + float die; + ptype_t type; +} particle_t; + + +//==================================================== + +extern vec3_t modelorg, r_entorigin; +extern entity_t *currententity; +extern int r_visframecount; // ??? what difs? +extern int r_framecount; +extern mplane_t frustum[4]; + +extern texture_t *r_notexture_mip, *r_notexture_mip2; + +// +// view origin +// +extern vec3_t vup; +extern vec3_t vpn; +extern vec3_t vright; +extern vec3_t r_origin; + +// +// screen size info +// +extern refdef_t r_refdef; +extern mleaf_t *r_viewleaf, *r_oldviewleaf; +extern int d_lightstylevalue[256]; // 8.8 fraction of base light value + +extern cvar_t r_norefresh; +extern cvar_t r_drawentities; +extern cvar_t r_drawworld; +extern cvar_t r_drawviewmodel; +extern cvar_t r_speeds; +extern cvar_t r_pos; +extern cvar_t r_waterwarp; +extern cvar_t r_fullbright; +extern cvar_t r_lightmap; +extern cvar_t r_lightmapwide; +extern cvar_t r_shadows; +extern cvar_t r_wateralpha; +extern cvar_t r_lavaalpha; +extern cvar_t r_telealpha; +extern cvar_t r_slimealpha; +extern cvar_t r_litwater; +extern cvar_t r_dynamic; +extern cvar_t r_novis; +extern cvar_t r_scale; + +extern cvar_t gl_clear; +extern cvar_t gl_cull; +extern cvar_t gl_smoothmodels; +extern cvar_t gl_affinemodels; +extern cvar_t gl_polyblend; +extern cvar_t gl_flashblend; +extern cvar_t gl_nocolors; +extern cvar_t gl_finish; + +extern cvar_t gl_playermip; + +extern cvar_t gl_subdivide_size; +extern float load_subdivide_size; //johnfitz -- remember what subdivide_size value was when this map was loaded + +extern int gl_stencilbits; + +// Multitexture +extern qboolean mtexenabled; +extern qboolean gl_mtexable; +extern PFNGLMULTITEXCOORD2FARBPROC GL_MTexCoord2fFunc; +extern PFNGLACTIVETEXTUREARBPROC GL_SelectTextureFunc; +extern PFNGLCLIENTACTIVETEXTUREARBPROC GL_ClientActiveTextureFunc; +extern GLint gl_max_texture_units; //ericw + +//johnfitz -- anisotropic filtering +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +extern float gl_max_anisotropy; +extern qboolean gl_anisotropy_able; + +//ericw -- VBO +extern PFNGLBINDBUFFERARBPROC GL_BindBufferFunc; +extern PFNGLBUFFERDATAARBPROC GL_BufferDataFunc; +extern PFNGLBUFFERSUBDATAARBPROC GL_BufferSubDataFunc; +extern PFNGLDELETEBUFFERSARBPROC GL_DeleteBuffersFunc; +extern PFNGLGENBUFFERSARBPROC GL_GenBuffersFunc; +extern qboolean gl_vbo_able; +//ericw + +//ericw -- GLSL + +// SDL 1.2 has a bug where it doesn't provide these typedefs on OS X! +typedef GLuint (APIENTRYP QS_PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP QS_PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP QS_PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP QS_PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (APIENTRYP QS_PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (APIENTRYP QS_PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP QS_PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP QS_PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP QS_PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef GLuint (APIENTRYP QS_PFNGLCREATEPROGRAMPROC) (void); +typedef void (APIENTRYP QS_PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP QS_PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP QS_PFNGLBINDATTRIBLOCATIONFUNC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP QS_PFNGLUSEPROGRAMPROC) (GLuint program); +typedef GLint (APIENTRYP QS_PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP QS_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (APIENTRYP QS_PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef GLint (APIENTRYP QS_PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP QS_PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP QS_PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP QS_PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP QS_PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP QS_PFNGENERATEMIPMAP) (GLenum type); + +extern QS_PFNGLCREATESHADERPROC GL_CreateShaderFunc; +extern QS_PFNGLDELETESHADERPROC GL_DeleteShaderFunc; +extern QS_PFNGLDELETEPROGRAMPROC GL_DeleteProgramFunc; +extern QS_PFNGLSHADERSOURCEPROC GL_ShaderSourceFunc; +extern QS_PFNGLCOMPILESHADERPROC GL_CompileShaderFunc; +extern QS_PFNGLGETSHADERIVPROC GL_GetShaderivFunc; +extern QS_PFNGLGETSHADERINFOLOGPROC GL_GetShaderInfoLogFunc; +extern QS_PFNGLGETPROGRAMIVPROC GL_GetProgramivFunc; +extern QS_PFNGLGETPROGRAMINFOLOGPROC GL_GetProgramInfoLogFunc; +extern QS_PFNGLCREATEPROGRAMPROC GL_CreateProgramFunc; +extern QS_PFNGLATTACHSHADERPROC GL_AttachShaderFunc; +extern QS_PFNGLLINKPROGRAMPROC GL_LinkProgramFunc; +extern QS_PFNGLBINDATTRIBLOCATIONFUNC GL_BindAttribLocationFunc; +extern QS_PFNGLUSEPROGRAMPROC GL_UseProgramFunc; +extern QS_PFNGLGETATTRIBLOCATIONPROC GL_GetAttribLocationFunc; +extern QS_PFNGLVERTEXATTRIBPOINTERPROC GL_VertexAttribPointerFunc; +extern QS_PFNGLENABLEVERTEXATTRIBARRAYPROC GL_EnableVertexAttribArrayFunc; +extern QS_PFNGLDISABLEVERTEXATTRIBARRAYPROC GL_DisableVertexAttribArrayFunc; +extern QS_PFNGLGETUNIFORMLOCATIONPROC GL_GetUniformLocationFunc; +extern QS_PFNGLUNIFORM1IPROC GL_Uniform1iFunc; +extern QS_PFNGLUNIFORM1FPROC GL_Uniform1fFunc; +extern QS_PFNGLUNIFORM3FPROC GL_Uniform3fFunc; +extern QS_PFNGLUNIFORM4FPROC GL_Uniform4fFunc; +extern qboolean gl_glsl_able; +extern qboolean gl_glsl_gamma_able; +extern qboolean gl_glsl_alias_able; +// ericw -- + +//mipmapped warp textures +extern QS_PFNGENERATEMIPMAP GL_GenerateMipmap; + +//ericw -- NPOT texture support +extern qboolean gl_texture_NPOT; + +//johnfitz -- polygon offset +#define OFFSET_BMODEL 1 +#define OFFSET_NONE 0 +#define OFFSET_DECAL -1 +#define OFFSET_FOG -2 +#define OFFSET_SHOWTRIS -3 +void GL_PolygonOffset (int); + +//GL_EXT_packed_pixels +#ifndef GL_UNSIGNED_INT_10_10_10_2 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#endif +extern qboolean gl_packed_pixels; + +//johnfitz -- GL_EXT_texture_env_combine +//the values for GL_ARB_ are identical +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +extern qboolean gl_texture_env_combine; +extern qboolean gl_texture_env_add; // for GL_EXT_texture_env_add + +//johnfitz -- rendering statistics +extern int rs_brushpolys, rs_aliaspolys, rs_skypolys; +extern int rs_dynamiclightmaps, rs_brushpasses, rs_aliaspasses, rs_skypasses; + +//johnfitz -- track developer statistics that vary every frame +extern cvar_t devstats; +typedef struct { + int packetsize; + int edicts; + int visedicts; + int efrags; + int tempents; + int beams; + int dlights; +} devstats_t; +extern devstats_t dev_stats, dev_peakstats; + +//ohnfitz -- reduce overflow warning spam +typedef struct { + double packetsize; + double efrags; + double beams; + double varstring; +} overflowtimes_t; +extern overflowtimes_t dev_overflows; //this stores the last time overflow messages were displayed, not the last time overflows occured +#define CONSOLE_RESPAM_TIME 3 // seconds between repeated warning messages + +//johnfitz -- moved here from r_brush.c +extern int gl_lightmap_format, lightmap_bytes; + +#define LMBLOCK_WIDTH 256 //FIXME: make dynamic. if we have a decent card there's no real reason not to use 4k or 16k (assuming there's no lightstyles/dynamics that need uploading...) +#define LMBLOCK_HEIGHT 256 //Alternatively, use texture arrays, which would avoid the need to switch textures as often. + +typedef struct glRect_s { + unsigned short l,t,w,h; +} glRect_t; +struct lightmap_s +{ + gltexture_t *texture; + glpoly_t *polys; + qboolean modified; + glRect_t rectchange; + + // the lightmap texture data needs to be kept in + // main memory so texsubimage can update properly + byte *data;//[4*LMBLOCK_WIDTH*LMBLOCK_HEIGHT]; +}; +extern struct lightmap_s *lightmaps; +extern int lightmap_count; //allocated lightmaps + +extern int gl_warpimagesize; //johnfitz -- for water warp + +extern qboolean r_drawflat_cheatsafe, r_fullbright_cheatsafe, r_lightmap_cheatsafe, r_drawworld_cheatsafe; //johnfitz + +typedef struct glsl_attrib_binding_s { + const char *name; + GLuint attrib; +} glsl_attrib_binding_t; + +extern float map_wateralpha, map_lavaalpha, map_telealpha, map_slimealpha; //ericw + +#define NUMVERTEXNORMALS 162 +extern const float r_avertexnormals[NUMVERTEXNORMALS][3]; + +//johnfitz -- fog functions called from outside gl_fog.c +void Fog_ParseServerMessage (void); +float *Fog_GetColor (void); +float Fog_GetDensity (void); +void Fog_EnableGFog (void); +void Fog_DisableGFog (void); +void Fog_StartAdditive (void); +void Fog_StopAdditive (void); +void Fog_SetupFrame (void); +void Fog_NewMap (void); +void Fog_Init (void); +void Fog_SetupState (void); + +void R_NewGame (void); + +void R_AnimateLight (void); +void R_MarkSurfaces (void); +qboolean R_CullBox (vec3_t emins, vec3_t emaxs); +void R_StoreEfrags (efrag_t **ppefrag); +qboolean R_CullModelForEntity (entity_t *e); +void R_RotateForEntity (vec3_t origin, vec3_t angles, unsigned char scale); +void R_MarkLights (dlight_t *light, int num, mnode_t *node); + +void R_InitParticles (void); +void R_DrawParticles (void); +void CL_RunParticles (void); +void R_ClearParticles (void); + +void R_TranslatePlayerSkin (int playernum); +void R_TranslateNewPlayerSkin (int playernum); //johnfitz -- this handles cases when the actual texture changes +void R_UpdateWarpTextures (void); + +void R_DrawWorld (void); +void R_DrawAliasModel (entity_t *e); +void R_DrawBrushModel (entity_t *e); +void R_DrawSpriteModel (entity_t *e); + +void R_DrawTextureChains_Water (qmodel_t *model, entity_t *ent, texchain_t chain); + +void R_RenderDlights (void); +void GL_BuildLightmaps (void); +void GL_DeleteBModelVertexBuffer (void); +void GL_BuildBModelVertexBuffer (void); +void GLMesh_LoadVertexBuffers (void); +void GLMesh_DeleteVertexBuffers (void); +void R_RebuildAllLightmaps (void); + +int R_LightPoint (vec3_t p); + +void GL_SubdivideSurface (msurface_t *fa); +void R_BuildLightMap (msurface_t *surf, byte *dest, int stride); +void R_RenderDynamicLightmaps (msurface_t *fa); +void R_UploadLightmaps (void); + +void R_DrawWorld_ShowTris (void); +void R_DrawBrushModel_ShowTris (entity_t *e); +void R_DrawAliasModel_ShowTris (entity_t *e); +void R_DrawParticles_ShowTris (void); + +GLint GL_GetUniformLocation (GLuint *programPtr, const char *name); +GLuint GL_CreateProgram (const GLchar *vertSource, const GLchar *fragSource, int numbindings, const glsl_attrib_binding_t *bindings); +void R_DeleteShaders (void); + +void GLWorld_CreateShaders (void); +void GLAlias_CreateShaders (void); +void GL_DrawAliasShadow (entity_t *e); +void DrawGLTriangleFan (glpoly_t *p); +void DrawGLPoly (glpoly_t *p); +void DrawWaterPoly (glpoly_t *p); +void GL_MakeAliasModelDisplayLists (qmodel_t *m, aliashdr_t *hdr); + +void Sky_Init (void); +void Sky_ClearAll (void); +void Sky_DrawSky (void); +void Sky_NewMap (void); +void Sky_LoadTexture (qmodel_t *m, texture_t *mt); +void Sky_LoadTextureQ64 (qmodel_t *m, texture_t *mt); +void Sky_LoadSkyBox (const char *name); + +void TexMgr_RecalcWarpImageSize (void); + +void R_ClearTextureChains (qmodel_t *mod, texchain_t chain); +void R_ChainSurface (msurface_t *surf, texchain_t chain); +void R_DrawTextureChains (qmodel_t *model, entity_t *ent, texchain_t chain); +void R_DrawWorld_Water (void); + +void GL_BindBuffer (GLenum target, GLuint buffer); +void GL_ClearBufferBindings (void); + +void GLSLGamma_DeleteTexture (void); +void GLSLGamma_GammaCorrect (void); + +void R_ScaleView_DeleteTexture (void); + +float GL_WaterAlphaForSurface (msurface_t *fa); + +#endif /* GLQUAKE_H */ diff --git a/Quake/host.c b/Quake/host.c new file mode 100644 index 0000000..9065ff8 --- /dev/null +++ b/Quake/host.c @@ -0,0 +1,955 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// host.c -- coordinates spawning and killing of local servers + +#include "quakedef.h" +#include "bgmusic.h" +#include "sh_game.h" +#include <setjmp.h> + +/* + +A server can allways be started, even if the system started out as a client +to a remote system. + +A client can NOT be started if the system started as a dedicated server. + +Memory is cleared / released when a server or client begins, not when they end. + +*/ + +quakeparms_t *host_parms; + +qboolean host_initialized; // true if into command execution + +double host_frametime; +double realtime; // without any filtering or bounding +double oldrealtime; // last frame run + +int host_framecount; + +int host_hunklevel; + +int minimum_memory; + +client_t *host_client; // current client + +jmp_buf host_abortserver; + +byte *host_colormap; + +cvar_t host_framerate = {"host_framerate","0",CVAR_NONE}; // set for slow motion +cvar_t host_speeds = {"host_speeds","0",CVAR_NONE}; // set for running times +cvar_t host_maxfps = {"host_maxfps", "72", CVAR_ARCHIVE}; //johnfitz +cvar_t host_timescale = {"host_timescale", "0", CVAR_NONE}; //johnfitz +cvar_t max_edicts = {"max_edicts", "8192", CVAR_NONE}; //johnfitz //ericw -- changed from 2048 to 8192, removed CVAR_ARCHIVE + +cvar_t sys_ticrate = {"sys_ticrate","0.05",CVAR_NONE}; // dedicated server +cvar_t serverprofile = {"serverprofile","0",CVAR_NONE}; + +cvar_t fraglimit = {"fraglimit","0",CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t timelimit = {"timelimit","0",CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t teamplay = {"teamplay","0",CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t samelevel = {"samelevel","0",CVAR_NONE}; +cvar_t noexit = {"noexit","0",CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t skill = {"skill","1",CVAR_NONE}; // 0 - 3 +cvar_t deathmatch = {"deathmatch","0",CVAR_NONE}; // 0, 1, or 2 +cvar_t coop = {"coop","0",CVAR_NONE}; // 0 or 1 + +cvar_t pausable = {"pausable","1",CVAR_NONE}; + +cvar_t developer = {"developer","0",CVAR_NONE}; + +cvar_t temp1 = {"temp1","0",CVAR_NONE}; + +cvar_t devstats = {"devstats","0",CVAR_NONE}; //johnfitz -- track developer statistics that vary every frame + +cvar_t campaign = {"campaign","0",CVAR_NONE}; // for the 2021 rerelease +cvar_t horde = {"horde","0",CVAR_NONE}; // for the 2021 rerelease +cvar_t sv_cheats = {"sv_cheats","0",CVAR_NONE}; // for the 2021 rerelease + +devstats_t dev_stats, dev_peakstats; +overflowtimes_t dev_overflows; //this stores the last time overflow messages were displayed, not the last time overflows occured + +/* +================ +Max_Edicts_f -- johnfitz +================ +*/ +static void Max_Edicts_f (cvar_t *var) +{ + //TODO: clamp it here? + if (cls.state == ca_connected || sv.active) + Con_Printf ("Changes to max_edicts will not take effect until the next time a map is loaded.\n"); +} + +/* +================ +Max_Fps_f -- ericw +================ +*/ +static void Max_Fps_f (cvar_t *var) +{ + if (var->value > 72) + Con_Warning ("host_maxfps above 72 breaks physics.\n"); +} + +/* +================ +Host_EndGame +================ +*/ +void Host_EndGame (const char *message, ...) +{ + va_list argptr; + char string[1024]; + + va_start (argptr,message); + q_vsnprintf (string, sizeof(string), message, argptr); + va_end (argptr); + Con_DPrintf ("Host_EndGame: %s\n",string); + + if (sv.active) + Host_ShutdownServer (false); + + if (cls.state == ca_dedicated) + Sys_Error ("Host_EndGame: %s\n",string); // dedicated servers exit + + if (cls.demonum != -1 && !cls.timedemo) + CL_NextDemo (); + else + CL_Disconnect (); + + longjmp (host_abortserver, 1); +} + +/* +================ +Host_Error + +This shuts down both the client and server +================ +*/ +void Host_Error (const char *error, ...) +{ + va_list argptr; + char string[1024]; + static qboolean inerror = false; + + if (inerror) + Sys_Error ("Host_Error: recursively entered"); + inerror = true; + + SCR_EndLoadingPlaque (); // reenable screen updates + + va_start (argptr,error); + q_vsnprintf (string, sizeof(string), error, argptr); + va_end (argptr); + Con_Printf ("Host_Error: %s\n",string); + + if (sv.active) + Host_ShutdownServer (false); + + if (cls.state == ca_dedicated) + Sys_Error ("Host_Error: %s\n",string); // dedicated servers exit + + CL_Disconnect (); + cls.demonum = -1; + cl.intermission = 0; //johnfitz -- for errors during intermissions (changelevel with no map found, etc.) + + inerror = false; + + longjmp (host_abortserver, 1); +} + +/* +================ +Host_FindMaxClients +================ +*/ +void Host_FindMaxClients (void) +{ + int i; + + svs.maxclients = 1; + + i = COM_CheckParm ("-dedicated"); + if (i) + { + cls.state = ca_dedicated; + if (i != (com_argc - 1)) + { + svs.maxclients = Q_atoi (com_argv[i+1]); + } + else + svs.maxclients = 8; + } + else + cls.state = ca_disconnected; + + i = COM_CheckParm ("-listen"); + if (i) + { + if (cls.state == ca_dedicated) + Sys_Error ("Only one of -dedicated or -listen can be specified"); + if (i != (com_argc - 1)) + svs.maxclients = Q_atoi (com_argv[i+1]); + else + svs.maxclients = 8; + } + if (svs.maxclients < 1) + svs.maxclients = 8; + else if (svs.maxclients > MAX_SCOREBOARD) + svs.maxclients = MAX_SCOREBOARD; + + svs.maxclientslimit = svs.maxclients; + if (svs.maxclientslimit < 4) + svs.maxclientslimit = 4; + svs.clients = (struct client_s *) Hunk_AllocName (svs.maxclientslimit*sizeof(client_t), "clients"); + + if (svs.maxclients > 1) + Cvar_SetQuick (&deathmatch, "1"); + else + Cvar_SetQuick (&deathmatch, "0"); +} + +void Host_Version_f (void) +{ + Con_Printf ("Quake Version %1.2f\n", VERSION); + Con_Printf ("QuakeSpasm Version " QUAKESPASM_VER_STRING "\n"); + Con_Printf ("Exe: " __TIME__ " " __DATE__ "\n"); +} + +/* cvar callback functions : */ +void Host_Callback_Notify (cvar_t *var) +{ + if (sv.active) + SV_BroadcastPrintf ("\"%s\" changed to \"%s\"\n", var->name, var->string); +} + +/* +======================= +Host_InitLocal +====================== +*/ +void Host_InitLocal (void) +{ + Cmd_AddCommand ("version", Host_Version_f); + + Host_InitCommands (); + + Cvar_RegisterVariable (&host_framerate); + Cvar_RegisterVariable (&host_speeds); + Cvar_RegisterVariable (&host_maxfps); //johnfitz + Cvar_SetCallback (&host_maxfps, Max_Fps_f); + Cvar_RegisterVariable (&host_timescale); //johnfitz + + Cvar_RegisterVariable (&max_edicts); //johnfitz + Cvar_SetCallback (&max_edicts, Max_Edicts_f); + Cvar_RegisterVariable (&devstats); //johnfitz + + Cvar_RegisterVariable (&sys_ticrate); + Cvar_RegisterVariable (&sys_throttle); + Cvar_RegisterVariable (&serverprofile); + + Cvar_RegisterVariable (&fraglimit); + Cvar_RegisterVariable (&timelimit); + Cvar_RegisterVariable (&teamplay); + Cvar_SetCallback (&fraglimit, Host_Callback_Notify); + Cvar_SetCallback (&timelimit, Host_Callback_Notify); + Cvar_SetCallback (&teamplay, Host_Callback_Notify); + Cvar_RegisterVariable (&samelevel); + Cvar_RegisterVariable (&noexit); + Cvar_SetCallback (&noexit, Host_Callback_Notify); + Cvar_RegisterVariable (&skill); + Cvar_RegisterVariable (&developer); + Cvar_RegisterVariable (&coop); + Cvar_RegisterVariable (&deathmatch); + + Cvar_RegisterVariable (&campaign); + Cvar_RegisterVariable (&horde); + Cvar_RegisterVariable (&sv_cheats); + + Cvar_RegisterVariable (&pausable); + + Cvar_RegisterVariable (&temp1); + + Host_FindMaxClients (); +} + + +/* +=============== +Host_WriteConfiguration + +Writes key bindings and archived cvars to config.cfg +=============== +*/ +void Host_WriteConfiguration (void) +{ + FILE *f; + +// dedicated servers initialize the host but don't parse and set the +// config.cfg cvars + if (host_initialized && !isDedicated && !host_parms->errstate) + { + f = fopen (va("%s/config.cfg", com_gamedir), "w"); + if (!f) + { + Con_Printf ("Couldn't write config.cfg.\n"); + return; + } + + //VID_SyncCvars (); //johnfitz -- write actual current mode to config file, in case cvars were messed with + + Key_WriteBindings (f); + Cvar_WriteVariables (f); + + //johnfitz -- extra commands to preserve state + fprintf (f, "vid_restart\n"); + if (in_mlook.state & 1) fprintf (f, "+mlook\n"); + //johnfitz + + fclose (f); + Host_SyncExternalFS(); + } +} + + +/* +================= +SV_ClientPrintf + +Sends text across to be displayed +FIXME: make this just a stuffed echo? +================= +*/ +void SV_ClientPrintf (const char *fmt, ...) +{ + va_list argptr; + char string[1024]; + + va_start (argptr,fmt); + q_vsnprintf (string, sizeof(string), fmt,argptr); + va_end (argptr); + + MSG_WriteByte (&host_client->message, svc_print); + MSG_WriteString (&host_client->message, string); +} + +/* +================= +SV_BroadcastPrintf + +Sends text to all active clients +================= +*/ +void SV_BroadcastPrintf (const char *fmt, ...) +{ + va_list argptr; + char string[1024]; + int i; + + va_start (argptr,fmt); + q_vsnprintf (string, sizeof(string), fmt, argptr); + va_end (argptr); + + for (i = 0; i < svs.maxclients; i++) + { + if (svs.clients[i].active && svs.clients[i].spawned) + { + MSG_WriteByte (&svs.clients[i].message, svc_print); + MSG_WriteString (&svs.clients[i].message, string); + } + } +} + +/* +================= +Host_ClientCommands + +Send text over to the client to be executed +================= +*/ +void Host_ClientCommands (const char *fmt, ...) +{ + va_list argptr; + char string[1024]; + + va_start (argptr,fmt); + q_vsnprintf (string, sizeof(string), fmt, argptr); + va_end (argptr); + + MSG_WriteByte (&host_client->message, svc_stufftext); + MSG_WriteString (&host_client->message, string); +} + +/* +===================== +SV_DropClient + +Called when the player is getting totally kicked off the host +if (crash = true), don't bother sending signofs +===================== +*/ +void SV_DropClient (qboolean crash) +{ + int saveSelf; + int i; + client_t *client; + + if (!crash) + { + // send any final messages (don't check for errors) + if (NET_CanSendMessage (host_client->netconnection)) + { + MSG_WriteByte (&host_client->message, svc_disconnect); + NET_SendMessage (host_client->netconnection, &host_client->message); + } + + if (host_client->edict && host_client->spawned) + { + // call the prog function for removing a client + // this will set the body to a dead frame, among other things + saveSelf = pr_global_struct->self; + pr_global_struct->self = EDICT_TO_PROG(host_client->edict); + PR_ExecuteProgram (pr_global_struct->ClientDisconnect); + pr_global_struct->self = saveSelf; + } + + Sys_Printf ("Client %s removed\n",host_client->name); + } + +// break the net connection + NET_Close (host_client->netconnection); + host_client->netconnection = NULL; + +// free the client (the body stays around) + host_client->active = false; + host_client->name[0] = 0; + host_client->old_frags = -999999; + net_activeconnections--; + +// send notification to all clients + for (i = 0, client = svs.clients; i < svs.maxclients; i++, client++) + { + if (!client->active) + continue; + MSG_WriteByte (&client->message, svc_updatename); + MSG_WriteByte (&client->message, host_client - svs.clients); + MSG_WriteString (&client->message, ""); + MSG_WriteByte (&client->message, svc_updatefrags); + MSG_WriteByte (&client->message, host_client - svs.clients); + MSG_WriteShort (&client->message, 0); + MSG_WriteByte (&client->message, svc_updatecolors); + MSG_WriteByte (&client->message, host_client - svs.clients); + MSG_WriteByte (&client->message, 0); + } +} + +/* +================== +Host_ShutdownServer + +This only happens at the end of a game, not between levels +================== +*/ +void Host_ShutdownServer(qboolean crash) +{ + int i; + int count; + sizebuf_t buf; + byte message[4]; + double start; + + if (!sv.active) + return; + + sv.active = false; + +// stop all client sounds immediately + if (cls.state == ca_connected) + CL_Disconnect (); + +// flush any pending messages - like the score!!! + start = Sys_DoubleTime(); + do + { + count = 0; + for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) + { + if (host_client->active && host_client->message.cursize) + { + if (NET_CanSendMessage (host_client->netconnection)) + { + NET_SendMessage(host_client->netconnection, &host_client->message); + SZ_Clear (&host_client->message); + } + else + { + NET_GetMessage(host_client->netconnection); + count++; + } + } + } + if ((Sys_DoubleTime() - start) > 3.0) + break; + } + while (count); + +// make sure all the clients know we're disconnecting + buf.data = message; + buf.maxsize = 4; + buf.cursize = 0; + MSG_WriteByte(&buf, svc_disconnect); + count = NET_SendToAll(&buf, 5.0); + if (count) + Con_Printf("Host_ShutdownServer: NET_SendToAll failed for %u clients\n", count); + + for (i = 0, host_client = svs.clients; i < svs.maxclients; i++, host_client++) + if (host_client->active) + SV_DropClient(crash); + +// +// clear structures +// +// memset (&sv, 0, sizeof(sv)); // ServerSpawn already do this by Host_ClearMemory + memset (svs.clients, 0, svs.maxclientslimit*sizeof(client_t)); +} + + +/* +================ +Host_ClearMemory + +This clears all the memory used by both the client and server, but does +not reinitialize anything. +================ +*/ +void Host_ClearMemory (void) +{ + Con_DPrintf ("Clearing memory\n"); + D_FlushCaches (); + Mod_ClearAll (); + Sky_ClearAll(); +/* host_hunklevel MUST be set at this point */ + Hunk_FreeToLowMark (host_hunklevel); + cls.signon = 0; // not CL_ClearSignons() + free(sv.edicts); // ericw -- sv.edicts switched to use malloc() + memset (&sv, 0, sizeof(sv)); + memset (&cl, 0, sizeof(cl)); +} + + +//============================================================================== +// +// Host Frame +// +//============================================================================== + +/* +=================== +Host_FilterTime + +Returns false if the time is too short to run a frame +=================== +*/ +qboolean Host_FilterTime (float time) +{ + float maxfps; //johnfitz + + realtime += time; + + //johnfitz -- max fps cvar + maxfps = CLAMP (10.f, host_maxfps.value, 1000.f); + if (!cls.timedemo && realtime - oldrealtime < 1.0/maxfps) + return false; // framerate is too high + //johnfitz + + host_frametime = realtime - oldrealtime; + oldrealtime = realtime; + + //johnfitz -- host_timescale is more intuitive than host_framerate + if (host_timescale.value > 0) + host_frametime *= host_timescale.value; + //johnfitz + else if (host_framerate.value > 0) + host_frametime = host_framerate.value; + else // don't allow really long or short frames + host_frametime = CLAMP (0.001, host_frametime, 0.1); //johnfitz -- use CLAMP + + return true; +} + +/* +=================== +Host_GetConsoleCommands + +Add them exactly as if they had been typed at the console +=================== +*/ +void Host_GetConsoleCommands (void) +{ + const char *cmd; + + if (!isDedicated) + return; // no stdin necessary in graphical mode + + while (1) + { + cmd = Sys_ConsoleInput (); + if (!cmd) + break; + Cbuf_AddText (cmd); + } +} + +/* +================== +Host_ServerFrame +================== +*/ +void Host_ServerFrame (void) +{ + int i, active; //johnfitz + edict_t *ent; //johnfitz + +// run the world state + pr_global_struct->frametime = host_frametime; + +// set the time and clear the general datagram + SV_ClearDatagram (); + +// check for new clients + SV_CheckForNewClients (); + +// read client messages + SV_RunClients (); + +// move things around and think +// always pause in single player if in console or menus + if (!sv.paused && (svs.maxclients > 1 || key_dest == key_game) ) + SV_Physics (); + +//johnfitz -- devstats + if (cls.signon == SIGNONS) + { + for (i=0, active=0; i<sv.num_edicts; i++) + { + ent = EDICT_NUM(i); + if (!ent->free) + active++; + } + if (active > 600 && dev_peakstats.edicts <= 600) + Con_DWarning ("%i edicts exceeds standard limit of 600 (max = %d).\n", active, sv.max_edicts); + dev_stats.edicts = active; + dev_peakstats.edicts = q_max(active, dev_peakstats.edicts); + } +//johnfitz + +// send all messages to the clients + SV_SendClientMessages (); +} + +/* +================== +Host_Frame + +Runs all active servers +================== +*/ +void _Host_Frame (float time) +{ + static double time1 = 0; + static double time2 = 0; + static double time3 = 0; + int pass1, pass2, pass3; + + if (setjmp (host_abortserver) ) + return; // something bad happened, or the server disconnected + +// keep the random time dependent + rand (); + +// decide the simulation time + if (!Host_FilterTime (time)) + return; // don't run too fast, or packets will flood out + +// get new key events + Key_UpdateForDest (); + IN_UpdateInputMode (); + Sys_SendKeyEvents (); + +// allow mice or other external controllers to add commands + IN_Commands (); + +// process console commands + Cbuf_Execute (); + +// space hulk turn-based game tick + if (SH_Active()) + SH_Frame(); + + NET_Poll(); + +// if running the server locally, make intentions now + if (sv.active) + CL_SendCmd (); + +//------------------- +// +// server operations +// +//------------------- + +// check for commands typed to the host + Host_GetConsoleCommands (); + + if (sv.active) + Host_ServerFrame (); + +//------------------- +// +// client operations +// +//------------------- + +// if running the server remotely, send intentions now after +// the incoming messages have been read + if (!sv.active) + CL_SendCmd (); + +// fetch results from server + if (cls.state == ca_connected) + CL_ReadFromServer (); + +// update video + if (host_speeds.value) + time1 = Sys_DoubleTime (); + + SCR_UpdateScreen (); + + CL_RunParticles (); //johnfitz -- seperated from rendering + + if (host_speeds.value) + time2 = Sys_DoubleTime (); + +// update audio + BGM_Update(); // adds music raw samples and/or advances midi driver + if (cls.signon == SIGNONS) + { + S_Update (r_origin, vpn, vright, vup); + CL_DecayLights (); + } + else + S_Update (vec3_origin, vec3_origin, vec3_origin, vec3_origin); + + CDAudio_Update(); + + if (host_speeds.value) + { + pass1 = (time1 - time3)*1000; + time3 = Sys_DoubleTime (); + pass2 = (time2 - time1)*1000; + pass3 = (time3 - time2)*1000; + Con_Printf ("%3i tot %3i server %3i gfx %3i snd\n", + pass1+pass2+pass3, pass1, pass2, pass3); + } + + host_framecount++; + +} + +void Host_Frame (float time) +{ + double time1, time2; + static double timetotal; + static int timecount; + int i, c, m; + + if (!serverprofile.value) + { + _Host_Frame (time); + return; + } + + time1 = Sys_DoubleTime (); + _Host_Frame (time); + time2 = Sys_DoubleTime (); + + timetotal += time2 - time1; + timecount++; + + if (timecount < 1000) + return; + + m = timetotal*1000/timecount; + timecount = 0; + timetotal = 0; + c = 0; + for (i = 0; i < svs.maxclients; i++) + { + if (svs.clients[i].active) + c++; + } + + Con_Printf ("serverprofile: %2i clients %2i msec\n", c, m); +} + +/* +==================== +Host_Init +==================== +*/ +void Host_Init (void) +{ + if (standard_quake) + minimum_memory = MINIMUM_MEMORY; + else minimum_memory = MINIMUM_MEMORY_LEVELPAK; + + if (COM_CheckParm ("-minmemory")) + host_parms->memsize = minimum_memory; + + if (host_parms->memsize < minimum_memory) + Sys_Error ("Only %4.1f megs of memory available, can't execute game", host_parms->memsize / (float)0x100000); + + com_argc = host_parms->argc; + com_argv = host_parms->argv; + + Memory_Init (host_parms->membase, host_parms->memsize); + Cbuf_Init (); + Cmd_Init (); + LOG_Init (host_parms); + Cvar_Init (); //johnfitz + COM_Init (); + COM_InitFilesystem (); + Host_InitLocal (); + W_LoadWadFile (); //johnfitz -- filename is now hard-coded for honesty + if (cls.state != ca_dedicated) + { + Key_Init (); + Con_Init (); + } + PR_Init (); + Mod_Init (); + NET_Init (); + SV_Init (); + + Con_Printf ("Exe: " __TIME__ " " __DATE__ "\n"); + Con_Printf ("%4.1f megabyte heap\n", host_parms->memsize/ (1024*1024.0)); + + if (cls.state != ca_dedicated) + { + host_colormap = (byte *)COM_LoadHunkFile ("gfx/colormap.lmp", NULL); + if (!host_colormap) + Sys_Error ("Couldn't load gfx/colormap.lmp"); + + V_Init (); + Chase_Init (); + M_Init (); + ExtraMaps_Init (); //johnfitz + Modlist_Init (); //johnfitz + DemoList_Init (); //ericw + VID_Init (); + IN_Init (); + TexMgr_Init (); //johnfitz + Draw_Init (); + SCR_Init (); + R_Init (); + S_Init (); + CDAudio_Init (); + BGM_Init(); + Sbar_Init (); + CL_Init (); + } + + SH_Init (); // space hulk turn-based system + + LOC_Init (); // for 2021 rerelease support. + + Hunk_AllocName (0, "-HOST_HUNKLEVEL-"); + host_hunklevel = Hunk_LowMark (); + + host_initialized = true; + Con_Printf ("\n========= Quake Initialized =========\n\n"); + + if (cls.state != ca_dedicated) + { + Cbuf_InsertText ("exec quake.rc\n"); + // johnfitz -- in case the vid mode was locked during vid_init, we can unlock it now. + // note: two leading newlines because the command buffer swallows one of them. + Cbuf_AddText ("\n\nvid_unlock\n"); + } + + if (cls.state == ca_dedicated) + { + Cbuf_AddText ("exec autoexec.cfg\n"); + Cbuf_AddText ("stuffcmds"); + Cbuf_Execute (); + if (!sv.active) + Cbuf_AddText ("map start\n"); + } +} + + +/* +=============== +Host_Shutdown + +FIXME: this is a callback from Sys_Quit and Sys_Error. It would be better +to run quit through here before the final handoff to the sys code. +=============== +*/ +void Host_Shutdown(void) +{ + static qboolean isdown = false; + + if (isdown) + { + printf ("recursive shutdown\n"); + return; + } + isdown = true; + +// keep Con_Printf from trying to update the screen + scr_disabled_for_loading = true; + + Host_WriteConfiguration (); + + NET_Shutdown (); + + if (cls.state != ca_dedicated) + { + if (con_initialized) + History_Shutdown (); + BGM_Shutdown(); + CDAudio_Shutdown (); + S_Shutdown (); + IN_Shutdown (); + VID_Shutdown(); + } + + LOG_Close (); + + LOC_Shutdown (); +} diff --git a/Quake/host_cmd.c b/Quake/host_cmd.c new file mode 100644 index 0000000..5bb728f --- /dev/null +++ b/Quake/host_cmd.c @@ -0,0 +1,2411 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#include "filenames.h" +#ifndef _WIN32 +#include <dirent.h> +#endif +#ifdef __EMSCRIPTEN__ +#include <emscripten.h> +#endif + +extern cvar_t pausable; +extern cvar_t nomonsters; + +int current_skill; + +/* +================== +Host_Quit_f +================== +*/ +void Host_Quit_f (void) +{ + if (key_dest != key_console && cls.state != ca_dedicated) + { + M_Menu_Quit_f (); + return; + } + CL_Disconnect (); + Host_ShutdownServer(false); + + Sys_Quit (); +} + +//============================================================================== +//johnfitz -- extramaps management +//============================================================================== + +/* +================== +FileList_Add +================== +*/ +static void FileList_Add (const char *name, filelist_item_t **list, unsigned int path_id) +{ + filelist_item_t *item,*cursor,*prev; + + // ignore duplicate + for (item = *list; item; item = item->next) + { + if (!Q_strcmp (name, item->name)) + return; + } + + item = (filelist_item_t *) Z_Malloc(sizeof(filelist_item_t)); + q_strlcpy (item->name, name, sizeof(item->name)); + item->path_id = path_id; + + // insert each entry in alphabetical order + if (*list == NULL || + q_strcasecmp(item->name, (*list)->name) < 0) //insert at front + { + item->next = *list; + *list = item; + } + else //insert later + { + prev = *list; + cursor = (*list)->next; + while (cursor && (q_strcasecmp(item->name, cursor->name) > 0)) + { + prev = cursor; + cursor = cursor->next; + } + item->next = prev->next; + prev->next = item; + } +} + +static void FileList_Clear (filelist_item_t **list) +{ + filelist_item_t *blah; + + while (*list) + { + blah = (*list)->next; + Z_Free(*list); + *list = blah; + } +} + +filelist_item_t *extralevels; + +static void ExtraMaps_Add (const char *name, unsigned int path_id) +{ + FileList_Add(name, &extralevels, path_id); +} + +void ExtraMaps_Init (void) +{ +#ifdef _WIN32 + WIN32_FIND_DATA fdat; + HANDLE fhnd; +#else + DIR *dir_p; + struct dirent *dir_t; +#endif + char filestring[MAX_OSPATH]; + char mapname[32]; + searchpath_t *search; + pack_t *pak; + int i; + + for (search = com_searchpaths; search; search = search->next) + { + if (*search->filename) //directory + { +#ifdef _WIN32 + q_snprintf (filestring, sizeof(filestring), "%s/maps/*.bsp", search->filename); + fhnd = FindFirstFile(filestring, &fdat); + if (fhnd == INVALID_HANDLE_VALUE) + continue; + do + { + COM_StripExtension(fdat.cFileName, mapname, sizeof(mapname)); + ExtraMaps_Add (mapname, search->path_id); + } while (FindNextFile(fhnd, &fdat)); + FindClose(fhnd); +#else + q_snprintf (filestring, sizeof(filestring), "%s/maps/", search->filename); + dir_p = opendir(filestring); + if (dir_p == NULL) + continue; + while ((dir_t = readdir(dir_p)) != NULL) + { + if (q_strcasecmp(COM_FileGetExtension(dir_t->d_name), "bsp") != 0) + continue; + COM_StripExtension(dir_t->d_name, mapname, sizeof(mapname)); + ExtraMaps_Add (mapname, search->path_id); + } + closedir(dir_p); +#endif + } + else //pakfile + { + if (search->path_id != 1U) // don't list standard id maps: they aren't "add-on" levels + { + for (i = 0, pak = search->pack; i < pak->numfiles; i++) + { + if (!strcmp(COM_FileGetExtension(pak->files[i].name), "bsp")) + { + if (pak->files[i].filelen > 32*1024) + { // don't list files under 32k (ammo boxes etc) + COM_StripExtension(pak->files[i].name + 5, mapname, sizeof(mapname)); + ExtraMaps_Add (mapname, search->path_id); + } + } + } + } + } + } +} + +static void ExtraMaps_Clear (void) +{ + FileList_Clear(&extralevels); +} + +void ExtraMaps_NewGame (void) +{ + ExtraMaps_Clear (); + ExtraMaps_Init (); +} + +static void ExtraMaps_List (const char* mod_name) +{ + int i; + unsigned int path_id = 0; + filelist_item_t *level; + + if (mod_name) { + searchpath_t *search; + Con_SafePrintf("maps in search path from directory \"%s\":\n", mod_name); + // find path_id of the matching mod name: + for (search = com_searchpaths; search; search = search->next) { + if (search->pack) continue; + else { + const char *ptr = FIND_LAST_DIRSEP(search->filename); + const char *dir_name = ptr != NULL ? + ++ptr : search->filename; + if (q_strcasecmp(dir_name, mod_name) == 0) { + path_id = search->path_id; + break; + } + } + } + if (!path_id) { + Con_SafePrintf ("game %s not loaded\n", mod_name); + return; + } + } + + for (level = extralevels, i = 0; level; level = level->next) + { + if (path_id && path_id != level->path_id) + continue; + ++i; + Con_SafePrintf (" %s\n", level->name); + } + if (i) + Con_SafePrintf ("%i map(s)\n", i); + else + Con_SafePrintf ("no maps found\n"); +} + +/* +================== +Host_Maps_f +================== +*/ +static void Host_Maps_f(void) +{ + if (Cmd_Argc() > 1) { + // filter to specific directory of search path + ExtraMaps_List(Cmd_Argv(1)); + } else { + ExtraMaps_List(NULL); + } +} + +/* +================== +Host_Maps_Mod_f +================== +*/ +static void Host_Maps_Mod_f(void) +{ + ExtraMaps_List(COM_SkipPath(com_gamedir)); +} + +//============================================================================== +//johnfitz -- modlist management +//============================================================================== + +filelist_item_t *modlist; + +static void Modlist_Add (const char *name) +{ + FileList_Add(name, &modlist, 0); +} + +#ifdef _WIN32 +void Modlist_Init (void) +{ + WIN32_FIND_DATA fdat; + HANDLE fhnd; + DWORD attribs; + char dir_string[MAX_OSPATH], mod_string[MAX_OSPATH]; + + q_snprintf (dir_string, sizeof(dir_string), "%s/*", com_basedir); + fhnd = FindFirstFile(dir_string, &fdat); + if (fhnd == INVALID_HANDLE_VALUE) + return; + + do + { + if (!strcmp(fdat.cFileName, ".") || !strcmp(fdat.cFileName, "..")) + continue; + q_snprintf (mod_string, sizeof(mod_string), "%s/%s", com_basedir, fdat.cFileName); + attribs = GetFileAttributes (mod_string); + if (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY)) { + /* don't bother testing for pak files / progs.dat */ + Modlist_Add(fdat.cFileName); + } + } while (FindNextFile(fhnd, &fdat)); + + FindClose(fhnd); +} +#else +void Modlist_Init (void) +{ + DIR *dir_p, *mod_dir_p; + struct dirent *dir_t; + char dir_string[MAX_OSPATH], mod_string[MAX_OSPATH]; + + q_snprintf (dir_string, sizeof(dir_string), "%s/", com_basedir); + dir_p = opendir(dir_string); + if (dir_p == NULL) + return; + + while ((dir_t = readdir(dir_p)) != NULL) + { + if (!strcmp(dir_t->d_name, ".") || !strcmp(dir_t->d_name, "..")) + continue; + if (!q_strcasecmp (COM_FileGetExtension (dir_t->d_name), "app")) // skip .app bundles on macOS + continue; + q_snprintf(mod_string, sizeof(mod_string), "%s%s/", dir_string, dir_t->d_name); + mod_dir_p = opendir(mod_string); + if (mod_dir_p == NULL) + continue; + /* don't bother testing for pak files / progs.dat */ + Modlist_Add(dir_t->d_name); + closedir(mod_dir_p); + } + + closedir(dir_p); +} +#endif + +//============================================================================== +//ericw -- demo list management +//============================================================================== + +filelist_item_t *demolist; + +static void DemoList_Clear (void) +{ + FileList_Clear (&demolist); +} + +void DemoList_Rebuild (void) +{ + DemoList_Clear (); + DemoList_Init (); +} + +// TODO: Factor out to a general-purpose file searching function +void DemoList_Init (void) +{ +#ifdef _WIN32 + WIN32_FIND_DATA fdat; + HANDLE fhnd; +#else + DIR *dir_p; + struct dirent *dir_t; +#endif + char filestring[MAX_OSPATH]; + char demname[32]; + searchpath_t *search; + pack_t *pak; + int i; + + for (search = com_searchpaths; search; search = search->next) + { + if (*search->filename) //directory + { +#ifdef _WIN32 + q_snprintf (filestring, sizeof(filestring), "%s/*.dem", search->filename); + fhnd = FindFirstFile(filestring, &fdat); + if (fhnd == INVALID_HANDLE_VALUE) + continue; + do + { + COM_StripExtension(fdat.cFileName, demname, sizeof(demname)); + FileList_Add (demname, &demolist, search->path_id); + } while (FindNextFile(fhnd, &fdat)); + FindClose(fhnd); +#else + q_snprintf (filestring, sizeof(filestring), "%s/", search->filename); + dir_p = opendir(filestring); + if (dir_p == NULL) + continue; + while ((dir_t = readdir(dir_p)) != NULL) + { + if (q_strcasecmp(COM_FileGetExtension(dir_t->d_name), "dem") != 0) + continue; + COM_StripExtension(dir_t->d_name, demname, sizeof(demname)); + FileList_Add (demname, &demolist, search->path_id); + } + closedir(dir_p); +#endif + } + else //pakfile + { + if (search->path_id != 1U) // don't list standard id demos: they aren't "add-on" demos + { + for (i = 0, pak = search->pack; i < pak->numfiles; i++) + { + if (!strcmp(COM_FileGetExtension(pak->files[i].name), "dem")) + { + COM_StripExtension(pak->files[i].name, demname, sizeof(demname)); + FileList_Add (demname, &demolist, search->path_id); + } + } + } + } + } +} + +/* +================== +Host_Mods_f -- johnfitz + +list all potential mod directories (contain either a pak file or a progs.dat) +================== +*/ +static void Host_Mods_f (void) +{ + int i; + filelist_item_t *mod; + + for (mod = modlist, i=0; mod; mod = mod->next, i++) + Con_SafePrintf (" %s\n", mod->name); + + if (i) + Con_SafePrintf ("%i mod(s)\n", i); + else + Con_SafePrintf ("no mods found\n"); +} + +//============================================================================== + +/* +============= +Host_Mapname_f -- johnfitz +============= +*/ +static void Host_Mapname_f (void) +{ + if (sv.active) + { + Con_Printf ("\"mapname\" is \"%s\"\n", sv.name); + return; + } + + if (cls.state == ca_connected) + { + Con_Printf ("\"mapname\" is \"%s\"\n", cl.mapname); + return; + } + + Con_Printf ("no map loaded\n"); +} + +/* +================== +Host_Status_f +================== +*/ +static void Host_Status_f (void) +{ + void (*print_fn) (const char *fmt, ...) + FUNCP_PRINTF(1,2); + client_t *client; + int seconds; + int minutes; + int hours = 0; + int j; + + if (cmd_source == src_command) + { + if (!sv.active) + { + Cmd_ForwardToServer (); + return; + } + print_fn = Con_Printf; + } + else + print_fn = SV_ClientPrintf; + + print_fn ("host: %s\n", Cvar_VariableString ("hostname")); + print_fn ("version: %4.2f\n", VERSION); + if (tcpipAvailable) + print_fn ("tcp/ip: %s\n", my_tcpip_address); + if (ipxAvailable) + print_fn ("ipx: %s\n", my_ipx_address); + print_fn ("map: %s\n", sv.name); + print_fn ("players: %i active (%i max)\n\n", net_activeconnections, svs.maxclients); + for (j = 0, client = svs.clients; j < svs.maxclients; j++, client++) + { + if (!client->active) + continue; + seconds = (int)(net_time - NET_QSocketGetTime(client->netconnection)); + minutes = seconds / 60; + if (minutes) + { + seconds -= (minutes * 60); + hours = minutes / 60; + if (hours) + minutes -= (hours * 60); + } + else + hours = 0; + print_fn ("#%-2u %-16.16s %3i %2i:%02i:%02i\n", j+1, client->name, (int)client->edict->v.frags, hours, minutes, seconds); + print_fn (" %s\n", NET_QSocketGetAddressString(client->netconnection)); + } +} + +/* +================== +Host_God_f + +Sets client to godmode +================== +*/ +static void Host_God_f (void) +{ + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (pr_global_struct->deathmatch) + return; + + //johnfitz -- allow user to explicitly set god mode to on or off + switch (Cmd_Argc()) + { + case 1: + sv_player->v.flags = (int)sv_player->v.flags ^ FL_GODMODE; + if (!((int)sv_player->v.flags & FL_GODMODE) ) + SV_ClientPrintf ("godmode OFF\n"); + else + SV_ClientPrintf ("godmode ON\n"); + break; + case 2: + if (Q_atof(Cmd_Argv(1))) + { + sv_player->v.flags = (int)sv_player->v.flags | FL_GODMODE; + SV_ClientPrintf ("godmode ON\n"); + } + else + { + sv_player->v.flags = (int)sv_player->v.flags & ~FL_GODMODE; + SV_ClientPrintf ("godmode OFF\n"); + } + break; + default: + Con_Printf("god [value] : toggle god mode. values: 0 = off, 1 = on\n"); + break; + } + //johnfitz +} + +/* +================== +Host_Notarget_f +================== +*/ +static void Host_Notarget_f (void) +{ + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (pr_global_struct->deathmatch) + return; + + //johnfitz -- allow user to explicitly set notarget to on or off + switch (Cmd_Argc()) + { + case 1: + sv_player->v.flags = (int)sv_player->v.flags ^ FL_NOTARGET; + if (!((int)sv_player->v.flags & FL_NOTARGET) ) + SV_ClientPrintf ("notarget OFF\n"); + else + SV_ClientPrintf ("notarget ON\n"); + break; + case 2: + if (Q_atof(Cmd_Argv(1))) + { + sv_player->v.flags = (int)sv_player->v.flags | FL_NOTARGET; + SV_ClientPrintf ("notarget ON\n"); + } + else + { + sv_player->v.flags = (int)sv_player->v.flags & ~FL_NOTARGET; + SV_ClientPrintf ("notarget OFF\n"); + } + break; + default: + Con_Printf("notarget [value] : toggle notarget mode. values: 0 = off, 1 = on\n"); + break; + } + //johnfitz +} + +qboolean noclip_anglehack; + +/* +================== +Host_Noclip_f +================== +*/ +static void Host_Noclip_f (void) +{ + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (pr_global_struct->deathmatch) + return; + + //johnfitz -- allow user to explicitly set noclip to on or off + switch (Cmd_Argc()) + { + case 1: + if (sv_player->v.movetype != MOVETYPE_NOCLIP) + { + noclip_anglehack = true; + sv_player->v.movetype = MOVETYPE_NOCLIP; + SV_ClientPrintf ("noclip ON\n"); + } + else + { + noclip_anglehack = false; + sv_player->v.movetype = MOVETYPE_WALK; + SV_ClientPrintf ("noclip OFF\n"); + } + break; + case 2: + if (Q_atof(Cmd_Argv(1))) + { + noclip_anglehack = true; + sv_player->v.movetype = MOVETYPE_NOCLIP; + SV_ClientPrintf ("noclip ON\n"); + } + else + { + noclip_anglehack = false; + sv_player->v.movetype = MOVETYPE_WALK; + SV_ClientPrintf ("noclip OFF\n"); + } + break; + default: + Con_Printf("noclip [value] : toggle noclip mode. values: 0 = off, 1 = on\n"); + break; + } + //johnfitz +} + +/* +==================== +Host_SetPos_f + +adapted from fteqw, originally by Alex Shadowalker +==================== +*/ +static void Host_SetPos_f(void) +{ + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (pr_global_struct->deathmatch) + return; + + if (Cmd_Argc() != 7 && Cmd_Argc() != 4) + { + SV_ClientPrintf("usage:\n"); + SV_ClientPrintf(" setpos <x> <y> <z>\n"); + SV_ClientPrintf(" setpos <x> <y> <z> <pitch> <yaw> <roll>\n"); + SV_ClientPrintf("current values:\n"); + SV_ClientPrintf(" %i %i %i %i %i %i\n", + (int)sv_player->v.origin[0], + (int)sv_player->v.origin[1], + (int)sv_player->v.origin[2], + (int)sv_player->v.v_angle[0], + (int)sv_player->v.v_angle[1], + (int)sv_player->v.v_angle[2]); + return; + } + + if (sv_player->v.movetype != MOVETYPE_NOCLIP) + { + noclip_anglehack = true; + sv_player->v.movetype = MOVETYPE_NOCLIP; + SV_ClientPrintf ("noclip ON\n"); + } + + //make sure they're not going to whizz away from it + sv_player->v.velocity[0] = 0; + sv_player->v.velocity[1] = 0; + sv_player->v.velocity[2] = 0; + + sv_player->v.origin[0] = atof(Cmd_Argv(1)); + sv_player->v.origin[1] = atof(Cmd_Argv(2)); + sv_player->v.origin[2] = atof(Cmd_Argv(3)); + + if (Cmd_Argc() == 7) + { + sv_player->v.angles[0] = atof(Cmd_Argv(4)); + sv_player->v.angles[1] = atof(Cmd_Argv(5)); + sv_player->v.angles[2] = atof(Cmd_Argv(6)); + sv_player->v.fixangle = 1; + } + + SV_LinkEdict (sv_player, false); +} + +/* +================== +Host_Fly_f + +Sets client to flymode +================== +*/ +static void Host_Fly_f (void) +{ + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (pr_global_struct->deathmatch) + return; + + //johnfitz -- allow user to explicitly set noclip to on or off + switch (Cmd_Argc()) + { + case 1: + if (sv_player->v.movetype != MOVETYPE_FLY) + { + sv_player->v.movetype = MOVETYPE_FLY; + SV_ClientPrintf ("flymode ON\n"); + } + else + { + sv_player->v.movetype = MOVETYPE_WALK; + SV_ClientPrintf ("flymode OFF\n"); + } + break; + case 2: + if (Q_atof(Cmd_Argv(1))) + { + sv_player->v.movetype = MOVETYPE_FLY; + SV_ClientPrintf ("flymode ON\n"); + } + else + { + sv_player->v.movetype = MOVETYPE_WALK; + SV_ClientPrintf ("flymode OFF\n"); + } + break; + default: + Con_Printf("fly [value] : toggle fly mode. values: 0 = off, 1 = on\n"); + break; + } + //johnfitz +} + +/* +================== +Host_Ping_f + +================== +*/ +static void Host_Ping_f (void) +{ + int i, j; + float total; + client_t *client; + + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + SV_ClientPrintf ("Client ping times:\n"); + for (i = 0, client = svs.clients; i < svs.maxclients; i++, client++) + { + if (!client->active) + continue; + total = 0; + for (j = 0; j < NUM_PING_TIMES; j++) + total+=client->ping_times[j]; + total /= NUM_PING_TIMES; + SV_ClientPrintf ("%4i %s\n", (int)(total*1000), client->name); + } +} + +/* +=============================================================================== + +SERVER TRANSITIONS + +=============================================================================== +*/ + +/* +====================== +Host_Map_f + +handle a +map <servername> +command from the console. Active clients are kicked off. +====================== +*/ +static void Host_Map_f (void) +{ + int i; + char name[MAX_QPATH], *p; + + if (Cmd_Argc() < 2) //no map name given + { + if (cls.state == ca_dedicated) + { + if (sv.active) + Con_Printf ("Current map: %s\n", sv.name); + else + Con_Printf ("Server not active\n"); + } + else if (cls.state == ca_connected) + { + Con_Printf ("Current map: %s ( %s )\n", cl.levelname, cl.mapname); + } + else + { + Con_Printf ("map <levelname>: start a new server\n"); + } + return; + } + + if (cmd_source != src_command) + return; + + cls.demonum = -1; // stop demo loop in case this fails + + CL_Disconnect (); + Host_ShutdownServer(false); + + if (cls.state != ca_dedicated) + IN_Activate(); + key_dest = key_game; // remove console or menu + SCR_BeginLoadingPlaque (); + + svs.serverflags = 0; // haven't completed an episode yet + q_strlcpy (name, Cmd_Argv(1), sizeof(name)); + // remove (any) trailing ".bsp" from mapname -- S.A. + p = strrchr(name, '.'); + if (p != NULL) + if (strcmp(p, ".bsp") == 0) + *p = '\0'; + SV_SpawnServer (name); + if (!sv.active) + return; + + if (cls.state != ca_dedicated) + { + memset (cls.spawnparms, 0, MAX_MAPSTRING); + for (i = 2; i < Cmd_Argc(); i++) + { + q_strlcat (cls.spawnparms, Cmd_Argv(i), MAX_MAPSTRING); + q_strlcat (cls.spawnparms, " ", MAX_MAPSTRING); + } + + Cmd_ExecuteString ("connect local", src_command); + } +} + +/* +====================== +Host_Randmap_f + +Loads a random map from the "maps" list. +====================== +*/ +static void Host_Randmap_f (void) +{ + int i, randlevel, numlevels; + filelist_item_t *level; + + if (cmd_source != src_command) + return; + + for (level = extralevels, numlevels = 0; level; level = level->next) + numlevels++; + + if (numlevels == 0) + { + Con_Printf ("no maps\n"); + return; + } + + randlevel = (rand() % numlevels); + + for (level = extralevels, i = 0; level; level = level->next, i++) + { + if (i == randlevel) + { + Con_Printf ("Starting map %s...\n", level->name); + Cbuf_AddText (va("map %s\n", level->name)); + return; + } + } +} + +/* +================== +Host_Changelevel_f + +Goes to a new map, taking all clients along +================== +*/ +static void Host_Changelevel_f (void) +{ + char level[MAX_QPATH]; + + if (Cmd_Argc() != 2) + { + Con_Printf ("changelevel <levelname> : continue game on a new level\n"); + return; + } + if (!sv.active || cls.demoplayback) + { + Con_Printf ("Only the server may changelevel\n"); + return; + } + + //johnfitz -- check for client having map before anything else + q_snprintf (level, sizeof(level), "maps/%s.bsp", Cmd_Argv(1)); + if (!COM_FileExists(level, NULL)) + Host_Error ("cannot find map %s", level); + //johnfitz + + if (cls.state != ca_dedicated) + IN_Activate(); // -- S.A. + key_dest = key_game; // remove console or menu + SV_SaveSpawnparms (); + q_strlcpy (level, Cmd_Argv(1), sizeof(level)); + SV_SpawnServer (level); + // also issue an error if spawn failed -- O.S. + if (!sv.active) + Host_Error ("cannot run map %s", level); +} + +/* +================== +Host_Restart_f + +Restarts the current server for a dead player +================== +*/ +static void Host_Restart_f (void) +{ + char mapname[MAX_QPATH]; + + if (cls.demoplayback || !sv.active) + return; + + if (cmd_source != src_command) + return; + q_strlcpy (mapname, sv.name, sizeof(mapname)); // mapname gets cleared in spawnserver + SV_SpawnServer (mapname); + if (!sv.active) + Host_Error ("cannot restart map %s", mapname); +} + +/* +================== +Host_Reconnect_f + +This command causes the client to wait for the signon messages again. +This is sent just before a server changes levels +================== +*/ +static void Host_Reconnect_f (void) +{ + if (cls.demoplayback) // cross-map demo playback fix from Baker + return; + + SCR_BeginLoadingPlaque (); + CL_ClearSignons (); // need new connection messages +} + +/* +===================== +Host_Connect_f + +User command to connect to server +===================== +*/ +static void Host_Connect_f (void) +{ + char name[MAX_QPATH]; + + cls.demonum = -1; // stop demo loop in case this fails + if (cls.demoplayback) + { + CL_StopPlayback (); + CL_Disconnect (); + } + q_strlcpy (name, Cmd_Argv(1), sizeof(name)); + CL_EstablishConnection (name); + Host_Reconnect_f (); +} + + +/* +=============================================================================== + +LOAD / SAVE GAME + +=============================================================================== +*/ + +#define SAVEGAME_VERSION 5 + +/* +=============== +Host_SavegameComment + +Writes a SAVEGAME_COMMENT_LENGTH character comment describing the current +=============== +*/ +static void Host_SavegameComment (char text[SAVEGAME_COMMENT_LENGTH + 1]) +{ + int i; + char kills[20]; + char *p; + + for (i = 0; i < SAVEGAME_COMMENT_LENGTH; i++) + text[i] = ' '; + text[SAVEGAME_COMMENT_LENGTH] = '\0'; + + i = (int) strlen(cl.levelname); + if (i > 22) i = 22; + memcpy (text, cl.levelname, (size_t)i); + +// Remove CR/LFs from level name to avoid broken saves, e.g. with autumn_sp map: +// https://celephais.net/board/view_thread.php?id=60452&start=3666 + while ((p = strchr(text, '\n')) != NULL) + *p = ' '; + while ((p = strchr(text, '\r')) != NULL) + *p = ' '; + + sprintf (kills,"kills:%3i/%3i", cl.stats[STAT_MONSTERS], cl.stats[STAT_TOTALMONSTERS]); + memcpy (text+22, kills, strlen(kills)); + +// convert space to _ to make stdio happy + for (i = 0; i < SAVEGAME_COMMENT_LENGTH; i++) + { + if (text[i] == ' ') + text[i] = '_'; + } +} + +/* +=============== +Host_Savegame_f +=============== +*/ +static void Host_Savegame_f (void) +{ + char name[MAX_OSPATH]; + FILE *f; + int i; + char comment[SAVEGAME_COMMENT_LENGTH+1]; + + if (cmd_source != src_command) + return; + + if (!sv.active) + { + Con_Printf ("Not playing a local game.\n"); + return; + } + + if (sv.nomonsters) + { + Con_Printf ("Can't save when using \"nomonsters\".\n"); + return; + } + + if (cl.intermission) + { + Con_Printf ("Can't save in intermission.\n"); + return; + } + + if (svs.maxclients != 1) + { + Con_Printf ("Can't save multiplayer games.\n"); + return; + } + + if (Cmd_Argc() != 2) + { + Con_Printf ("save <savename> : save a game\n"); + return; + } + + if (strstr(Cmd_Argv(1), "..")) + { + Con_Printf ("Relative pathnames are not allowed.\n"); + return; + } + + for (i=0 ; i<svs.maxclients ; i++) + { + if (svs.clients[i].active && (svs.clients[i].edict->v.health <= 0) ) + { + Con_Printf ("Can't savegame with a dead player\n"); + return; + } + } + + q_snprintf (name, sizeof(name), "%s/%s", com_gamedir, Cmd_Argv(1)); + COM_AddExtension (name, ".sav", sizeof(name)); + + Con_Printf ("Saving game to %s...\n", name); + f = fopen (name, "w"); + if (!f) + { + Con_Printf ("ERROR: couldn't open.\n"); + return; + } + + fprintf (f, "%i\n", SAVEGAME_VERSION); + Host_SavegameComment (comment); + fprintf (f, "%s\n", comment); + for (i = 0; i < NUM_SPAWN_PARMS; i++) + fprintf (f, "%f\n", svs.clients->spawn_parms[i]); + fprintf (f, "%d\n", current_skill); + fprintf (f, "%s\n", sv.name); + fprintf (f, "%f\n",sv.time); + +// write the light styles + for (i = 0; i < MAX_LIGHTSTYLES; i++) + { + if (sv.lightstyles[i]) + fprintf (f, "%s\n", sv.lightstyles[i]); + else + fprintf (f,"m\n"); + } + + ED_WriteGlobals (f); + for (i = 0; i < sv.num_edicts; i++) + { + ED_Write (f, EDICT_NUM(i)); + fflush (f); + } + fclose (f); + Host_SyncExternalFS(); + Con_Printf ("done.\n"); +} + +/* +=============== +Host_Loadgame_f +=============== +*/ +static void Host_Loadgame_f (void) +{ + static char *start; + + char name[MAX_OSPATH]; + char mapname[MAX_QPATH]; + float time, tfloat; + const char *data; + int i; + edict_t *ent; + int entnum; + int version; + float spawn_parms[NUM_SPAWN_PARMS]; + + if (cmd_source != src_command) + return; + + if (Cmd_Argc() != 2) + { + Con_Printf ("load <savename> : load a game\n"); + return; + } + + if (strstr(Cmd_Argv(1), "..")) + { + Con_Printf ("Relative pathnames are not allowed.\n"); + return; + } + + if (nomonsters.value) + { + Con_Warning ("\"%s\" disabled automatically.\n", nomonsters.name); + Cvar_SetValueQuick (&nomonsters, 0.f); + } + + cls.demonum = -1; // stop demo loop in case this fails + + q_snprintf (name, sizeof(name), "%s/%s", com_gamedir, Cmd_Argv(1)); + COM_AddExtension (name, ".sav", sizeof(name)); + +// we can't call SCR_BeginLoadingPlaque, because too much stack space has +// been used. The menu calls it before stuffing loadgame command +// SCR_BeginLoadingPlaque (); + + Con_Printf ("Loading game from %s...\n", name); + +// avoid leaking if the previous Host_Loadgame_f failed with a Host_Error + if (start != NULL) + free (start); + + start = (char *) COM_LoadMallocFile_TextMode_OSPath(name, NULL); + if (start == NULL) + { + Con_Printf ("ERROR: couldn't open.\n"); + return; + } + + data = start; + data = COM_ParseIntNewline (data, &version); + if (version != SAVEGAME_VERSION) + { + free (start); + start = NULL; + Host_Error ("Savegame is version %i, not %i", version, SAVEGAME_VERSION); + return; + } + data = COM_ParseStringNewline (data); + for (i = 0; i < NUM_SPAWN_PARMS; i++) + data = COM_ParseFloatNewline (data, &spawn_parms[i]); +// this silliness is so we can load 1.06 save files, which have float skill values + data = COM_ParseFloatNewline(data, &tfloat); + current_skill = (int)(tfloat + 0.1); + Cvar_SetValue ("skill", (float)current_skill); + + data = COM_ParseStringNewline (data); + q_strlcpy (mapname, com_token, sizeof(mapname)); + data = COM_ParseFloatNewline (data, &time); + + CL_Disconnect_f (); + + SV_SpawnServer (mapname); + + if (!sv.active) + { + free (start); + start = NULL; + SCR_EndLoadingPlaque (); + Con_Printf ("Couldn't load map\n"); + return; + } + sv.paused = true; // pause until all clients connect + sv.loadgame = true; + +// load the light styles + for (i = 0; i < MAX_LIGHTSTYLES; i++) + { + data = COM_ParseStringNewline (data); + sv.lightstyles[i] = (const char *)Hunk_Strdup (com_token, "lightstyles"); + } + +// load the edicts out of the savegame file + entnum = -1; // -1 is the globals + while (*data) + { + data = COM_Parse (data); + if (!com_token[0]) + break; // end of file + if (strcmp(com_token,"{")) + { + Host_Error ("First token isn't a brace"); + } + + if (entnum == -1) + { // parse the global vars + data = ED_ParseGlobals (data); + } + else + { // parse an edict + ent = EDICT_NUM(entnum); + if (entnum < sv.num_edicts) { + ent->free = false; + memset (&ent->v, 0, progs->entityfields * 4); + } + else { + memset (ent, 0, pr_edict_size); + ent->baseline.scale = ENTSCALE_DEFAULT; + } + data = ED_ParseEdict (data, ent); + + // link it into the bsp tree + if (!ent->free) + SV_LinkEdict (ent, false); + } + + entnum++; + } + + // Free edicts allocated during map loading but no longer used after restoring saved game state + for (i = entnum; i < sv.num_edicts; i++) + ED_Free(EDICT_NUM(i)); + + sv.num_edicts = entnum; + sv.time = time; + + free (start); + start = NULL; + + for (i = 0; i < NUM_SPAWN_PARMS; i++) + svs.clients->spawn_parms[i] = spawn_parms[i]; + + if (cls.state != ca_dedicated) + { + CL_EstablishConnection ("local"); + Host_Reconnect_f (); + } + + if (cls.state != ca_dedicated) + IN_Activate(); // moved to here from M_Load_Key() +} + +//============================================================================ + +/* +====================== +Host_Name_f +====================== +*/ +static void Host_Name_f (void) +{ + char newName[32]; + + if (Cmd_Argc () == 1) + { + Con_Printf ("\"name\" is \"%s\"\n", cl_name.string); + return; + } + if (Cmd_Argc () == 2) + q_strlcpy(newName, Cmd_Argv(1), sizeof(newName)); + else + q_strlcpy(newName, Cmd_Args(), sizeof(newName)); + newName[15] = 0; // client_t structure actually says name[32]. + + if (cmd_source == src_command) + { + if (Q_strcmp(cl_name.string, newName) == 0) + return; + Cvar_Set ("_cl_name", newName); + if (cls.state == ca_connected) + Cmd_ForwardToServer (); + return; + } + + if (host_client->name[0] && strcmp(host_client->name, "unconnected") ) + { + if (Q_strcmp(host_client->name, newName) != 0) + Con_Printf ("%s renamed to %s\n", host_client->name, newName); + } + Q_strcpy (host_client->name, newName); + host_client->edict->v.netname = PR_SetEngineString(host_client->name); + +// send notification to all clients + MSG_WriteByte (&sv.reliable_datagram, svc_updatename); + MSG_WriteByte (&sv.reliable_datagram, host_client - svs.clients); + MSG_WriteString (&sv.reliable_datagram, host_client->name); +} + +static void Host_Say(qboolean teamonly) +{ + int j; + client_t *client; + client_t *save; + const char *p; + char text[MAXCMDLINE], *p2; + qboolean quoted; + qboolean fromServer = false; + + if (cmd_source == src_command) + { + if (cls.state != ca_dedicated) + { + Cmd_ForwardToServer (); + return; + } + fromServer = true; + teamonly = false; + } + + if (Cmd_Argc () < 2) + return; + + save = host_client; + + p = Cmd_Args(); +// remove quotes if present + quoted = false; + if (*p == '\"') + { + p++; + quoted = true; + } +// turn on color set 1 + if (!fromServer) + q_snprintf (text, sizeof(text), "\001%s: %s", save->name, p); + else + q_snprintf (text, sizeof(text), "\001<%s> %s", hostname.string, p); + +// check length & truncate if necessary + j = (int) strlen(text); + if (j >= (int) sizeof(text) - 1) + { + text[sizeof(text) - 2] = '\n'; + text[sizeof(text) - 1] = '\0'; + } + else + { + p2 = text + j; + while ((const char *)p2 > (const char *)text && + (p2[-1] == '\r' || p2[-1] == '\n' || (p2[-1] == '\"' && quoted)) ) + { + if (p2[-1] == '\"' && quoted) + quoted = false; + p2[-1] = '\0'; + p2--; + } + p2[0] = '\n'; + p2[1] = '\0'; + } + + for (j = 0, client = svs.clients; j < svs.maxclients; j++, client++) + { + if (!client || !client->active || !client->spawned) + continue; + if (teamplay.value && teamonly && client->edict->v.team != save->edict->v.team) + continue; + host_client = client; + SV_ClientPrintf("%s", text); + } + host_client = save; + + if (cls.state == ca_dedicated) + Sys_Printf("%s", &text[1]); +} + +static void Host_Say_f(void) +{ + Host_Say(false); +} + +static void Host_Say_Team_f(void) +{ + Host_Say(true); +} + +static void Host_Tell_f(void) +{ + int j; + client_t *client; + client_t *save; + const char *p; + char text[MAXCMDLINE], *p2; + qboolean quoted; + + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (Cmd_Argc () < 3) + return; + + p = Cmd_Args(); +// remove quotes if present + quoted = false; + if (*p == '\"') + { + p++; + quoted = true; + } + q_snprintf (text, sizeof(text), "%s: %s", host_client->name, p); + +// check length & truncate if necessary + j = (int) strlen(text); + if (j >= (int) sizeof(text) - 1) + { + text[sizeof(text) - 2] = '\n'; + text[sizeof(text) - 1] = '\0'; + } + else + { + p2 = text + j; + while ((const char *)p2 > (const char *)text && + (p2[-1] == '\r' || p2[-1] == '\n' || (p2[-1] == '\"' && quoted)) ) + { + if (p2[-1] == '\"' && quoted) + quoted = false; + p2[-1] = '\0'; + p2--; + } + p2[0] = '\n'; + p2[1] = '\0'; + } + + save = host_client; + for (j = 0, client = svs.clients; j < svs.maxclients; j++, client++) + { + if (!client->active || !client->spawned) + continue; + if (q_strcasecmp(client->name, Cmd_Argv(1))) + continue; + host_client = client; + SV_ClientPrintf("%s", text); + break; + } + host_client = save; +} + +/* +================== +Host_Color_f +================== +*/ +static void Host_Color_f(void) +{ + int top, bottom; + int playercolor; + + if (Cmd_Argc() == 1) + { + Con_Printf ("\"color\" is \"%i %i\"\n", ((int)cl_color.value) >> 4, ((int)cl_color.value) & 0x0f); + Con_Printf ("color <0-13> [0-13]\n"); + return; + } + + if (Cmd_Argc() == 2) + top = bottom = atoi(Cmd_Argv(1)); + else + { + top = atoi(Cmd_Argv(1)); + bottom = atoi(Cmd_Argv(2)); + } + + top &= 15; + if (top > 13) + top = 13; + bottom &= 15; + if (bottom > 13) + bottom = 13; + + playercolor = top*16 + bottom; + + if (cmd_source == src_command) + { + Cvar_SetValue ("_cl_color", playercolor); + if (cls.state == ca_connected) + Cmd_ForwardToServer (); + return; + } + + host_client->colors = playercolor; + host_client->edict->v.team = bottom + 1; + +// send notification to all clients + MSG_WriteByte (&sv.reliable_datagram, svc_updatecolors); + MSG_WriteByte (&sv.reliable_datagram, host_client - svs.clients); + MSG_WriteByte (&sv.reliable_datagram, host_client->colors); +} + +/* +================== +Host_Kill_f +================== +*/ +static void Host_Kill_f (void) +{ + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (sv_player->v.health <= 0) + { + SV_ClientPrintf ("Can't suicide -- already dead!\n"); + return; + } + + pr_global_struct->time = sv.time; + pr_global_struct->self = EDICT_TO_PROG(sv_player); + PR_ExecuteProgram (pr_global_struct->ClientKill); +} + +/* +================== +Host_Pause_f +================== +*/ +static void Host_Pause_f (void) +{ +//ericw -- demo pause support (inspired by MarkV) + if (cls.demoplayback) + { + cls.demopaused = !cls.demopaused; + cl.paused = cls.demopaused; + return; + } + + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + if (!pausable.value) + SV_ClientPrintf ("Pause not allowed.\n"); + else + { + sv.paused ^= 1; + + if (sv.paused) + { + SV_BroadcastPrintf ("%s paused the game\n", PR_GetString(sv_player->v.netname)); + } + else + { + SV_BroadcastPrintf ("%s unpaused the game\n",PR_GetString(sv_player->v.netname)); + } + + // send notification to all clients + MSG_WriteByte (&sv.reliable_datagram, svc_setpause); + MSG_WriteByte (&sv.reliable_datagram, sv.paused); + } +} + +//=========================================================================== + +/* +================== +Host_PreSpawn_f +================== +*/ +static void Host_PreSpawn_f (void) +{ + if (cmd_source == src_command) + { + Con_Printf ("prespawn is not valid from the console\n"); + return; + } + + if (host_client->spawned) + { + Con_Printf ("prespawn not valid -- already spawned\n"); + return; + } + + host_client->sendsignon = PRESPAWN_SIGNONBUFS; + host_client->signonidx = 0; +} + +/* +================== +Host_Spawn_f +================== +*/ +static void Host_Spawn_f (void) +{ + int i; + client_t *client; + edict_t *ent; + + if (cmd_source == src_command) + { + Con_Printf ("spawn is not valid from the console\n"); + return; + } + + if (host_client->spawned) + { + Con_Printf ("Spawn not valid -- already spawned\n"); + return; + } + +// run the entrance script + if (sv.loadgame) + { // loaded games are fully inited already + // if this is the last client to be connected, unpause + sv.paused = false; + } + else + { + // set up the edict + ent = host_client->edict; + + memset (&ent->v, 0, progs->entityfields * 4); + ent->v.colormap = NUM_FOR_EDICT(ent); + ent->v.team = (host_client->colors & 15) + 1; + ent->v.netname = PR_SetEngineString(host_client->name); + + // copy spawn parms out of the client_t + for (i=0 ; i< NUM_SPAWN_PARMS ; i++) + (&pr_global_struct->parm1)[i] = host_client->spawn_parms[i]; + // call the spawn function + pr_global_struct->time = sv.time; + pr_global_struct->self = EDICT_TO_PROG(sv_player); + PR_ExecuteProgram (pr_global_struct->ClientConnect); + + if ((Sys_DoubleTime() - NET_QSocketGetTime(host_client->netconnection)) <= sv.time) + Sys_Printf ("%s entered the game\n", host_client->name); + + PR_ExecuteProgram (pr_global_struct->PutClientInServer); + } + +// send all current names, colors, and frag counts + SZ_Clear (&host_client->message); + +// send time of update + MSG_WriteByte (&host_client->message, svc_time); + MSG_WriteFloat (&host_client->message, sv.time); + + for (i = 0, client = svs.clients; i < svs.maxclients; i++, client++) + { + MSG_WriteByte (&host_client->message, svc_updatename); + MSG_WriteByte (&host_client->message, i); + MSG_WriteString (&host_client->message, client->name); + MSG_WriteByte (&host_client->message, svc_updatefrags); + MSG_WriteByte (&host_client->message, i); + MSG_WriteShort (&host_client->message, client->old_frags); + MSG_WriteByte (&host_client->message, svc_updatecolors); + MSG_WriteByte (&host_client->message, i); + MSG_WriteByte (&host_client->message, client->colors); + } + +// send all current light styles + for (i = 0; i < MAX_LIGHTSTYLES; i++) + { + MSG_WriteByte (&host_client->message, svc_lightstyle); + MSG_WriteByte (&host_client->message, (char)i); + MSG_WriteString (&host_client->message, sv.lightstyles[i]); + } + +// +// send some stats +// + MSG_WriteByte (&host_client->message, svc_updatestat); + MSG_WriteByte (&host_client->message, STAT_TOTALSECRETS); + MSG_WriteLong (&host_client->message, pr_global_struct->total_secrets); + + MSG_WriteByte (&host_client->message, svc_updatestat); + MSG_WriteByte (&host_client->message, STAT_TOTALMONSTERS); + MSG_WriteLong (&host_client->message, pr_global_struct->total_monsters); + + MSG_WriteByte (&host_client->message, svc_updatestat); + MSG_WriteByte (&host_client->message, STAT_SECRETS); + MSG_WriteLong (&host_client->message, pr_global_struct->found_secrets); + + MSG_WriteByte (&host_client->message, svc_updatestat); + MSG_WriteByte (&host_client->message, STAT_MONSTERS); + MSG_WriteLong (&host_client->message, pr_global_struct->killed_monsters); + +// +// send a fixangle +// Never send a roll angle, because savegames can catch the server +// in a state where it is expecting the client to correct the angle +// and it won't happen if the game was just loaded, so you wind up +// with a permanent head tilt + ent = EDICT_NUM( 1 + (host_client - svs.clients) ); + MSG_WriteByte (&host_client->message, svc_setangle); + for (i = 0; i < 2; i++) + MSG_WriteAngle (&host_client->message, ent->v.angles[i], sv.protocolflags ); + MSG_WriteAngle (&host_client->message, 0, sv.protocolflags ); + + SV_WriteClientdataToMessage (sv_player, &host_client->message); + + MSG_WriteByte (&host_client->message, svc_signonnum); + MSG_WriteByte (&host_client->message, 3); + host_client->sendsignon = PRESPAWN_FLUSH; +} + +/* +================== +Host_Begin_f +================== +*/ +static void Host_Begin_f (void) +{ + if (cmd_source == src_command) + { + Con_Printf ("begin is not valid from the console\n"); + return; + } + + host_client->spawned = true; +} + +//=========================================================================== + +/* +================== +Host_Kick_f + +Kicks a user off of the server +================== +*/ +static void Host_Kick_f (void) +{ + const char *who; + const char *message = NULL; + client_t *save; + int i; + qboolean byNumber = false; + + if (cmd_source == src_command) + { + if (!sv.active) + { + Cmd_ForwardToServer (); + return; + } + } + else if (pr_global_struct->deathmatch) + return; + + save = host_client; + + if (Cmd_Argc() > 2 && Q_strcmp(Cmd_Argv(1), "#") == 0) + { + i = Q_atof(Cmd_Argv(2)) - 1; + if (i < 0 || i >= svs.maxclients) + return; + if (!svs.clients[i].active) + return; + host_client = &svs.clients[i]; + byNumber = true; + } + else + { + for (i = 0, host_client = svs.clients; i < svs.maxclients; i++, host_client++) + { + if (!host_client->active) + continue; + if (q_strcasecmp(host_client->name, Cmd_Argv(1)) == 0) + break; + } + } + + if (i < svs.maxclients) + { + if (cmd_source == src_command) + if (cls.state == ca_dedicated) + who = "Console"; + else + who = cl_name.string; + else + who = save->name; + + // can't kick yourself! + if (host_client == save) + return; + + if (Cmd_Argc() > 2) + { + message = COM_Parse(Cmd_Args()); + if (byNumber) + { + message++; // skip the # + while (*message == ' ') // skip white space + message++; + message += strlen(Cmd_Argv(2)); // skip the number + } + while (*message && *message == ' ') + message++; + } + if (message) + SV_ClientPrintf ("Kicked by %s: %s\n", who, message); + else + SV_ClientPrintf ("Kicked by %s\n", who); + SV_DropClient (false); + } + + host_client = save; +} + +/* +=============================================================================== + +DEBUGGING TOOLS + +=============================================================================== +*/ + +/* +================== +Host_Give_f +================== +*/ +static void Host_Give_f (void) +{ + const char *t; + int v; + eval_t *val; + + if (cmd_source == src_command) + { + Cmd_ForwardToServer (); + return; + } + + if (pr_global_struct->deathmatch) + return; + + t = Cmd_Argv(1); + v = atoi (Cmd_Argv(2)); + + switch (t[0]) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + // MED 01/04/97 added hipnotic give stuff + if (hipnotic) + { + if (t[0] == '6') + { + if (t[1] == 'a') + sv_player->v.items = (int)sv_player->v.items | HIT_PROXIMITY_GUN; + else + sv_player->v.items = (int)sv_player->v.items | IT_GRENADE_LAUNCHER; + } + else if (t[0] == '9') + sv_player->v.items = (int)sv_player->v.items | HIT_LASER_CANNON; + else if (t[0] == '0') + sv_player->v.items = (int)sv_player->v.items | HIT_MJOLNIR; + else if (t[0] >= '2') + sv_player->v.items = (int)sv_player->v.items | (IT_SHOTGUN << (t[0] - '2')); + } + else + { + if (t[0] >= '2') + sv_player->v.items = (int)sv_player->v.items | (IT_SHOTGUN << (t[0] - '2')); + } + break; + + case 's': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_shells1"); + if (val) + val->_float = v; + } + sv_player->v.ammo_shells = v; + break; + + case 'n': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_nails1"); + if (val) + { + val->_float = v; + if (sv_player->v.weapon <= IT_LIGHTNING) + sv_player->v.ammo_nails = v; + } + } + else + { + sv_player->v.ammo_nails = v; + } + break; + + case 'l': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_lava_nails"); + if (val) + { + val->_float = v; + if (sv_player->v.weapon > IT_LIGHTNING) + sv_player->v.ammo_nails = v; + } + } + break; + + case 'r': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_rockets1"); + if (val) + { + val->_float = v; + if (sv_player->v.weapon <= IT_LIGHTNING) + sv_player->v.ammo_rockets = v; + } + } + else + { + sv_player->v.ammo_rockets = v; + } + break; + + case 'm': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_multi_rockets"); + if (val) + { + val->_float = v; + if (sv_player->v.weapon > IT_LIGHTNING) + sv_player->v.ammo_rockets = v; + } + } + break; + + case 'h': + sv_player->v.health = v; + break; + + case 'c': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_cells1"); + if (val) + { + val->_float = v; + if (sv_player->v.weapon <= IT_LIGHTNING) + sv_player->v.ammo_cells = v; + } + } + else + { + sv_player->v.ammo_cells = v; + } + break; + + case 'p': + if (rogue) + { + val = GetEdictFieldValue(sv_player, "ammo_plasma"); + if (val) + { + val->_float = v; + if (sv_player->v.weapon > IT_LIGHTNING) + sv_player->v.ammo_cells = v; + } + } + break; + + //johnfitz -- give armour + case 'a': + if (v > 150) + { + sv_player->v.armortype = 0.8; + sv_player->v.armorvalue = v; + sv_player->v.items = sv_player->v.items - + ((int)(sv_player->v.items) & (int)(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3)) + + IT_ARMOR3; + } + else if (v > 100) + { + sv_player->v.armortype = 0.6; + sv_player->v.armorvalue = v; + sv_player->v.items = sv_player->v.items - + ((int)(sv_player->v.items) & (int)(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3)) + + IT_ARMOR2; + } + else if (v >= 0) + { + sv_player->v.armortype = 0.3; + sv_player->v.armorvalue = v; + sv_player->v.items = sv_player->v.items - + ((int)(sv_player->v.items) & (int)(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3)) + + IT_ARMOR1; + } + break; + //johnfitz + } + + //johnfitz -- update currentammo to match new ammo (so statusbar updates correctly) + switch ((int)(sv_player->v.weapon)) + { + case IT_SHOTGUN: + case IT_SUPER_SHOTGUN: + sv_player->v.currentammo = sv_player->v.ammo_shells; + break; + case IT_NAILGUN: + case IT_SUPER_NAILGUN: + case RIT_LAVA_SUPER_NAILGUN: + sv_player->v.currentammo = sv_player->v.ammo_nails; + break; + case IT_GRENADE_LAUNCHER: + case IT_ROCKET_LAUNCHER: + case RIT_MULTI_GRENADE: + case RIT_MULTI_ROCKET: + sv_player->v.currentammo = sv_player->v.ammo_rockets; + break; + case IT_LIGHTNING: + case HIT_LASER_CANNON: + case HIT_MJOLNIR: + sv_player->v.currentammo = sv_player->v.ammo_cells; + break; + case RIT_LAVA_NAILGUN: //same as IT_AXE + if (rogue) + sv_player->v.currentammo = sv_player->v.ammo_nails; + break; + case RIT_PLASMA_GUN: //same as HIT_PROXIMITY_GUN + if (rogue) + sv_player->v.currentammo = sv_player->v.ammo_cells; + if (hipnotic) + sv_player->v.currentammo = sv_player->v.ammo_rockets; + break; + } + //johnfitz +} + +static edict_t *FindViewthing (void) +{ + int i; + edict_t *e; + + for (i=0 ; i<sv.num_edicts ; i++) + { + e = EDICT_NUM(i); + if ( !strcmp (PR_GetString(e->v.classname), "viewthing") ) + return e; + } + Con_Printf ("No viewthing on map\n"); + return NULL; +} + +/* +================== +Host_Viewmodel_f +================== +*/ +static void Host_Viewmodel_f (void) +{ + edict_t *e; + qmodel_t *m; + + e = FindViewthing (); + if (!e) + return; + + m = Mod_ForName (Cmd_Argv(1), false); + if (!m) + { + Con_Printf ("Can't load %s\n", Cmd_Argv(1)); + return; + } + + e->v.frame = 0; + cl.model_precache[(int)e->v.modelindex] = m; +} + +/* +================== +Host_Viewframe_f +================== +*/ +static void Host_Viewframe_f (void) +{ + edict_t *e; + int f; + qmodel_t *m; + + e = FindViewthing (); + if (!e) + return; + m = cl.model_precache[(int)e->v.modelindex]; + + f = atoi(Cmd_Argv(1)); + if (f >= m->numframes) + f = m->numframes - 1; + + e->v.frame = f; +} + +static void PrintFrameName (qmodel_t *m, int frame) +{ + aliashdr_t *hdr; + maliasframedesc_t *pframedesc; + + hdr = (aliashdr_t *)Mod_Extradata (m); + if (!hdr) + return; + pframedesc = &hdr->frames[frame]; + + Con_Printf ("frame %i: %s\n", frame, pframedesc->name); +} + +/* +================== +Host_Viewnext_f +================== +*/ +static void Host_Viewnext_f (void) +{ + edict_t *e; + qmodel_t *m; + + e = FindViewthing (); + if (!e) + return; + m = cl.model_precache[(int)e->v.modelindex]; + + e->v.frame = e->v.frame + 1; + if (e->v.frame >= m->numframes) + e->v.frame = m->numframes - 1; + + PrintFrameName (m, e->v.frame); +} + +/* +================== +Host_Viewprev_f +================== +*/ +static void Host_Viewprev_f (void) +{ + edict_t *e; + qmodel_t *m; + + e = FindViewthing (); + if (!e) + return; + + m = cl.model_precache[(int)e->v.modelindex]; + + e->v.frame = e->v.frame - 1; + if (e->v.frame < 0) + e->v.frame = 0; + + PrintFrameName (m, e->v.frame); +} + +/* +=============================================================================== + +DEMO LOOP CONTROL + +=============================================================================== +*/ + +/* +================== +Host_Startdemos_f +================== +*/ +static void Host_Startdemos_f (void) +{ + int i, c; + + if (cls.state == ca_dedicated) + return; + + c = Cmd_Argc() - 1; + if (c > MAX_DEMOS) + { + Con_Printf ("Max %i demos in demoloop\n", MAX_DEMOS); + c = MAX_DEMOS; + } + Con_Printf ("%i demo(s) in loop\n", c); + + for (i = 1; i < c + 1; i++) + q_strlcpy (cls.demos[i-1], Cmd_Argv(i), sizeof(cls.demos[0])); + + if (!sv.active && cls.demonum != -1 && !cls.demoplayback) + { + cls.demonum = 0; + if (!fitzmode && !cl_startdemos.value) + { /* QuakeSpasm customization: */ + /* go straight to menu, no CL_NextDemo */ + cls.demonum = -1; + Cbuf_InsertText("menu_main\n"); + return; + } + CL_NextDemo (); + } + else + { + cls.demonum = -1; + } +} + +/* +================== +Host_Demos_f + +Return to looping demos +================== +*/ +static void Host_Demos_f (void) +{ + if (cls.state == ca_dedicated) + return; + if (cls.demonum == -1) + cls.demonum = 1; + CL_Disconnect_f (); + CL_NextDemo (); +} + +/* +================== +Host_Stopdemo_f + +Return to looping demos +================== +*/ +static void Host_Stopdemo_f (void) +{ + if (cls.state == ca_dedicated) + return; + if (!cls.demoplayback) + return; + CL_StopPlayback (); + CL_Disconnect (); +} + +/* +================== +Host_Resetdemos + +Clear looping demo list (called on game change) +================== +*/ +void Host_Resetdemos (void) +{ + memset (cls.demos, 0, sizeof (cls.demos)); + cls.demonum = 0; +} + +//============================================================================= + +/* +================== +Host_InitCommands +================== +*/ +void Host_InitCommands (void) +{ + Cmd_AddCommand ("maps", Host_Maps_f); //johnfitz + Cmd_AddCommand ("maps_mod", Host_Maps_Mod_f); + Cmd_AddCommand ("mods", Host_Mods_f); //johnfitz + Cmd_AddCommand ("games", Host_Mods_f); // as an alias to "mods" -- S.A. / QuakeSpasm + Cmd_AddCommand ("mapname", Host_Mapname_f); //johnfitz + Cmd_AddCommand ("randmap", Host_Randmap_f); //ericw + + Cmd_AddCommand ("status", Host_Status_f); + Cmd_AddCommand ("quit", Host_Quit_f); + Cmd_AddCommand ("god", Host_God_f); + Cmd_AddCommand ("notarget", Host_Notarget_f); + Cmd_AddCommand ("fly", Host_Fly_f); + Cmd_AddCommand ("map", Host_Map_f); + Cmd_AddCommand ("restart", Host_Restart_f); + Cmd_AddCommand ("changelevel", Host_Changelevel_f); + Cmd_AddCommand ("connect", Host_Connect_f); + Cmd_AddCommand ("reconnect", Host_Reconnect_f); + Cmd_AddCommand ("name", Host_Name_f); + Cmd_AddCommand ("noclip", Host_Noclip_f); + Cmd_AddCommand ("setpos", Host_SetPos_f); //QuakeSpasm + + Cmd_AddCommand ("say", Host_Say_f); + Cmd_AddCommand ("say_team", Host_Say_Team_f); + Cmd_AddCommand ("tell", Host_Tell_f); + Cmd_AddCommand ("color", Host_Color_f); + Cmd_AddCommand ("kill", Host_Kill_f); + Cmd_AddCommand ("pause", Host_Pause_f); + Cmd_AddCommand ("spawn", Host_Spawn_f); + Cmd_AddCommand ("begin", Host_Begin_f); + Cmd_AddCommand ("prespawn", Host_PreSpawn_f); + Cmd_AddCommand ("kick", Host_Kick_f); + Cmd_AddCommand ("ping", Host_Ping_f); + Cmd_AddCommand ("load", Host_Loadgame_f); + Cmd_AddCommand ("save", Host_Savegame_f); + Cmd_AddCommand ("give", Host_Give_f); + + Cmd_AddCommand ("startdemos", Host_Startdemos_f); + Cmd_AddCommand ("demos", Host_Demos_f); + Cmd_AddCommand ("stopdemo", Host_Stopdemo_f); + + Cmd_AddCommand ("viewmodel", Host_Viewmodel_f); + Cmd_AddCommand ("viewframe", Host_Viewframe_f); + Cmd_AddCommand ("viewnext", Host_Viewnext_f); + Cmd_AddCommand ("viewprev", Host_Viewprev_f); +} + +#ifdef __EMSCRIPTEN__ +EM_ASYNC_JS(void, Host_SyncExternalFS, (void), { + await new Promise((resolve, reject) => FS.syncfs(err => err ? reject(err) : resolve())) +}); +#else +void Host_SyncExternalFS (void) {} +#endif diff --git a/Quake/ideas/turn_manager.c b/Quake/ideas/turn_manager.c new file mode 100644 index 0000000..2e6f74d --- /dev/null +++ b/Quake/ideas/turn_manager.c @@ -0,0 +1,320 @@ +#include "rlc_turn_manager.h" +#include "rlc_components.h" +#include "rlc_items.h" +#include "rlc_log.h" +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +/* Action queue comparison function for qsort */ +static int action_compare(const void *a, const void *b) { + const QueuedAction *qa = (const QueuedAction *)a; + const QueuedAction *qb = (const QueuedAction *)b; + /* Sort by delay ascending, then priority descending */ + if (qa->delay != qb->delay) return qa->delay - qb->delay; + return qb->priority - qa->priority; +} + +/* Event queue comparison function for qsort */ +static int event_compare(const void *a, const void *b) { + const DelayedEvent *ea = (const DelayedEvent *)a; + const DelayedEvent *eb = (const DelayedEvent *)b; + /* Sort by turn_due ascending, then priority descending */ + /* Use comparison operators instead of subtraction to prevent overflow */ + if (ea->turn_due < eb->turn_due) return -1; + if (ea->turn_due > eb->turn_due) return 1; + if (eb->priority < ea->priority) return -1; + if (eb->priority > ea->priority) return 1; + return 0; +} + +/* Action queue management */ +void rlc_action_queue_init(TurnState *ts) { + ts->action_capacity = 32; + ts->action_count = 0; + ts->action_queue = malloc(sizeof(QueuedAction) * ts->action_capacity); +} + +void rlc_action_queue_push(TurnState *ts, QueuedAction action) { + if (ts->action_count >= ts->action_capacity) { + size_t new_capacity = ts->action_capacity * 2; + QueuedAction *new_queue = realloc(ts->action_queue, + sizeof(QueuedAction) * new_capacity); + if (!new_queue) { + RLC_LOG_ERROR("Failed to resize action queue (capacity=%zu)", ts->action_capacity); + return; + } + ts->action_queue = new_queue; + ts->action_capacity = new_capacity; + } + ts->action_queue[ts->action_count++] = action; +} + +void rlc_action_queue_sort(TurnState *ts) { + if (ts->action_count > 1) { + qsort(ts->action_queue, ts->action_count, + sizeof(QueuedAction), action_compare); + } +} + +void rlc_action_queue_clear(TurnState *ts) { + ts->action_count = 0; +} + +void rlc_action_queue_destroy(TurnState *ts) { + if (ts->action_queue) { + free(ts->action_queue); + ts->action_queue = NULL; + ts->action_count = 0; + ts->action_capacity = 0; + } +} + +/* Event queue management */ +void rlc_event_queue_init(TurnState *ts) { + ts->event_capacity = 16; + ts->event_count = 0; + ts->event_queue = malloc(sizeof(DelayedEvent) * ts->event_capacity); +} + +void rlc_event_queue_push(TurnState *ts, DelayedEvent event) { + if (ts->event_count >= ts->event_capacity) { + size_t new_capacity = ts->event_capacity * 2; + DelayedEvent *new_queue = realloc(ts->event_queue, + sizeof(DelayedEvent) * new_capacity); + if (!new_queue) { + RLC_LOG_ERROR("Failed to resize event queue (capacity=%zu)", ts->event_capacity); + return; + } + ts->event_queue = new_queue; + ts->event_capacity = new_capacity; + } + ts->event_queue[ts->event_count++] = event; +} + +void rlc_event_queue_process(ecs_world_t *world, TurnState *ts) { + if (ts->event_count == 0) return; + + /* Sort events by turn_due and priority */ + qsort(ts->event_queue, ts->event_count, + sizeof(DelayedEvent), event_compare); + + size_t remaining = 0; + + for (size_t i = 0; i < ts->event_count; i++) { + DelayedEvent *event = &ts->event_queue[i]; + + if (event->turn_due <= ts->round_number) { + /* Execute event */ + if (event->callback) { + event->callback(world, event->data); + } + /* Free data if allocated */ + if (event->data) { + free(event->data); + event->data = NULL; + } + } else { + /* Keep event - move to front if needed */ + if (remaining != i) { + ts->event_queue[remaining] = *event; + } + remaining++; + } + } + + ts->event_count = remaining; +} + +void rlc_event_queue_clear(TurnState *ts) { + for (size_t i = 0; i < ts->event_count; i++) { + if (ts->event_queue[i].data) { + free(ts->event_queue[i].data); + ts->event_queue[i].data = NULL; + } + } + ts->event_count = 0; +} + +void rlc_event_queue_destroy(TurnState *ts) { + if (ts->event_queue) { + rlc_event_queue_clear(ts); + free(ts->event_queue); + ts->event_queue = NULL; + ts->event_capacity = 0; + } +} + +/* Turn manager initialization */ +void rlc_turn_manager_init(ecs_world_t *world) { + TurnState *ts = ecs_singleton_get_mut(world, TurnState); + if (ts) { + memset(ts, 0, sizeof(TurnState)); + ts->phase = PHASE_WAITING_FOR_PLAYER; + ts->round_number = 1; + ts->processing = false; + ts->phase_transitioned = false; + + rlc_action_queue_init(ts); + rlc_event_queue_init(ts); + } +} + +/* --- Message Log API Implementation --- */ + +const char* rlc_get_entity_display_name(ecs_world_t *world, ecs_entity_t entity) { + if (!world || !entity) { + return "something"; + } + + /* Check for flecs built-in name first */ + const char *name = ecs_get_name(world, entity); + if (name && name[0] != '\0') { + return name; + } + + /* Check if it's the player */ + if (ecs_has(world, entity, Player)) { + return "you"; + } + + return "something"; +} + +void rlc_log_message(ecs_world_t *world, int type, const char *fmt, ...) { + if (!world || !fmt) return; + + MessageLog *log = ecs_singleton_get_mut(world, MessageLog); + if (!log) return; + + const TurnState *ts = ecs_singleton_get(world, TurnState); + int turn = ts ? ts->round_number : 0; + + /* Format the message */ + char formatted[128]; + va_list args; + va_start(args, fmt); + vsnprintf(formatted, sizeof(formatted), fmt, args); + va_end(args); + + /* Check for stacking with the most recent message */ + if (log->message_count > 0) { + int prev_idx = (log->write_index - 1 + MAX_LOG_MESSAGES) % MAX_LOG_MESSAGES; + LogMessage *prev = &log->messages[prev_idx]; + + /* Stack if same message on same turn */ + if ((int)prev->type == type && + prev->turn_number == turn && + strcmp(prev->formatted, formatted) == 0) { + prev->stack_count++; + log->updated_this_frame = true; + return; + } + } + + /* Write new message */ + LogMessage *msg = &log->messages[log->write_index]; + strncpy(msg->formatted, formatted, sizeof(msg->formatted) - 1); + msg->formatted[sizeof(msg->formatted) - 1] = '\0'; + msg->type = (LogMessageType)type; + msg->turn_number = turn; + msg->stack_count = 1; + + /* Advance write index (circular) */ + log->write_index = (log->write_index + 1) % MAX_LOG_MESSAGES; + if (log->message_count < MAX_LOG_MESSAGES) { + log->message_count++; + } + + log->updated_this_frame = true; +} + +void rlc_log_combat(ecs_world_t *world, ecs_entity_t attacker, ecs_entity_t target, int damage, bool critical) { + if (!world) return; + + /* Cache names at call time to avoid entity recycling issues */ + const char *attacker_name = rlc_get_entity_display_name(world, attacker); + const char *target_name = rlc_get_entity_display_name(world, target); + + /* Copy names to local buffers in case entities are deleted */ + char atk_buf[64], tgt_buf[64]; + snprintf(atk_buf, sizeof(atk_buf), "%s", attacker_name); + snprintf(tgt_buf, sizeof(tgt_buf), "%s", target_name); + + /* Capitalize first letter for display */ + if (atk_buf[0] >= 'a' && atk_buf[0] <= 'z') { + atk_buf[0] = atk_buf[0] - 'a' + 'A'; + } + + /* Check if target is dead (for kill message) */ + const Health *target_hp = ecs_get(world, target, Health); + bool is_kill = target_hp && target_hp->current <= 0; + + if (is_kill) { + rlc_log_message(world, LOG_MSG_COMBAT_KILL, + "%s kills %s!", atk_buf, tgt_buf); + } else if (critical) { + rlc_log_message(world, LOG_MSG_COMBAT_CRITICAL, + "%s critically hits %s for %d damage!", atk_buf, tgt_buf, damage); + } else if (damage > 0) { + rlc_log_message(world, LOG_MSG_COMBAT_HIT, + "%s hits %s for %d damage.", atk_buf, tgt_buf, damage); + } else { + rlc_log_message(world, LOG_MSG_COMBAT_MISS, + "%s misses %s.", atk_buf, tgt_buf); + } +} + +void rlc_log_combat_detailed(ecs_world_t *world, ecs_entity_t attacker, ecs_entity_t target, + int raw_damage, int defense, int final_damage, + ecs_entity_t weapon_entity) { + if (!world) return; + + const char *attacker_name = rlc_get_entity_display_name(world, attacker); + const char *target_name = rlc_get_entity_display_name(world, target); + + char atk_buf[64], tgt_buf[64]; + snprintf(atk_buf, sizeof(atk_buf), "%s", attacker_name); + snprintf(tgt_buf, sizeof(tgt_buf), "%s", target_name); + + if (atk_buf[0] >= 'a' && atk_buf[0] <= 'z') { + atk_buf[0] = atk_buf[0] - 'a' + 'A'; + } + + const Health *target_hp = ecs_get(world, target, Health); + bool is_kill = target_hp && target_hp->current <= 0; + + if (is_kill) { + rlc_log_message(world, LOG_MSG_COMBAT_KILL, + "%s kills %s!", atk_buf, tgt_buf); + } else if (final_damage > 0) { + /* Get weapon name for detailed message */ + const char *wpn_name = NULL; + if (weapon_entity) { + const Name *wn = ecs_get(world, weapon_entity, Name); + if (wn) wpn_name = wn->str; + } + + if (wpn_name && defense > 0) { + rlc_log_message(world, LOG_MSG_COMBAT_HIT, + "%s hits %s with %s: %d - %d def = %d", + atk_buf, tgt_buf, wpn_name, raw_damage, defense, final_damage); + } else if (wpn_name) { + rlc_log_message(world, LOG_MSG_COMBAT_HIT, + "%s hits %s with %s for %d damage.", + atk_buf, tgt_buf, wpn_name, final_damage); + } else if (defense > 0) { + rlc_log_message(world, LOG_MSG_COMBAT_HIT, + "%s hits %s: %d - %d def = %d", + atk_buf, tgt_buf, raw_damage, defense, final_damage); + } else { + rlc_log_message(world, LOG_MSG_COMBAT_HIT, + "%s hits %s for %d damage.", + atk_buf, tgt_buf, final_damage); + } + } else { + rlc_log_message(world, LOG_MSG_COMBAT_MISS, + "%s misses %s.", atk_buf, tgt_buf); + } +} diff --git a/Quake/ideas/turn_systems.c b/Quake/ideas/turn_systems.c new file mode 100644 index 0000000..157427d --- /dev/null +++ b/Quake/ideas/turn_systems.c @@ -0,0 +1,1404 @@ +#include "rlc_turn_systems.h" +#include "rlc_components.h" +#include "rlc_equipment_spawner.h" +#include "rlc_items.h" +#include "rlc_log.h" +#include "rlc_fov.h" +#include "rlc_npc_ai.h" +#include "rlc_pathfinding.h" +#include "rlc_turn_manager.h" +#include "rlc_tween.h" +#include "rlc_tween_components.h" +#include "dungeon_builder.h" +#include <stdlib.h> + +/* ============================================================ + * HELPER FUNCTIONS + * ============================================================ */ + +/* Forward declarations */ +static bool is_tile_occupied(ecs_world_t *world, int x, int y, ecs_entity_t ignore); + +/* Constants for Action Costs */ +#define ATTACK_DELAY_BASE 20 + +/* Helper: Calculate attack delay */ +static int calculate_attack_delay(int speed) { + /* Higher speed = lower delay */ + /* Base 20, reduce by speed/5. Min delay 5. */ + int delay = ATTACK_DELAY_BASE - (speed / 5); + if (delay < 5) delay = 5; + return delay; +} + +/* Helper: Find free inventory slot */ +static int find_free_slot(ecs_world_t *world, ecs_entity_t player) { + bool occupied[12] = {false}; + ecs_query_t *q = ecs_query(world, { + .terms = {{.id = ecs_id(InventorySlot)}, + {.first.id = ContainedBy, .second.id = player}} + }); + ecs_iter_t it = ecs_query_iter(world, q); + while (ecs_query_next(&it)) { + InventorySlot *slots = ecs_field(&it, InventorySlot, 0); + for (int i = 0; i < it.count; i++) { + if (slots[i].slot_index >= 0 && slots[i].slot_index < 12) { + occupied[slots[i].slot_index] = true; + } + } + } + ecs_query_fini(q); + for (int i = 0; i < 12; i++) { + if (!occupied[i]) return i; + } + return -1; +} + +/* Helper: Unequip item of specific type */ +static void unequip_slot_type(ecs_world_t *world, ecs_entity_t player, + ecs_entity_t tag) { + ecs_query_t *q = ecs_query(world, { + .terms = {{.id = tag}, + {.first.id = ContainedBy, .second.id = player}} + }); + ecs_iter_t it = ecs_query_iter(world, q); + while (ecs_query_next(&it)) { + for (int i = 0; i < it.count; i++) { + ecs_remove_id(world, it.entities[i], tag); + } + } + ecs_query_fini(q); +} + +/* Helper: Execute Immediate Movement */ +static bool execute_move_immediate(ecs_world_t *world, ecs_entity_t actor, int dx, int dy) { + GridPosition *grid = ecs_get_mut(world, actor, GridPosition); + if (!grid) return false; + + int new_x = grid->x + dx; + int new_y = grid->y + dy; + + DungeonContext *dungeon = (DungeonContext *)ecs_get_ctx(world); + if (!dungeon) return false; + + Tile t = dungeon_context_get_tile(dungeon, new_x, new_y); + if (t != TILE_FLOOR) { + /* Blocked by wall */ + return false; + } + + /* Check for entity collision */ + if (is_tile_occupied(world, new_x, new_y, actor)) { + return false; + } + + /* Move successful */ + grid->x = new_x; + grid->y = new_y; + ecs_modified(world, actor, GridPosition); + + RlcFOV *fov = ecs_get_mut(world, actor, RlcFOV); + if (fov) { + fov->needs_update = true; + ecs_modified(world, actor, RlcFOV); + } + + bool is_player = ecs_has(world, actor, Player); + + /* Update camera if player */ + if (is_player) { + ecs_query_t *q = ecs_query(world, { + .terms = {{ .id = ecs_id(Camera) }} + }); + if (!q) return true; + ecs_iter_t cam_it = ecs_query_iter(world, q); + while (ecs_query_next(&cam_it)) { + Camera *cam = ecs_field(&cam_it, Camera, 0); + if (cam && cam[0].follow_player) { + cam[0].target_x = (float)new_x; + cam[0].target_y = (float)new_y; + } + ecs_iter_fini(&cam_it); /* Required for early exit */ + break; + } + ecs_query_fini(q); + } + + return true; +} + +/* Helper: Find equipped weapon entity for an actor */ +static ecs_entity_t find_equipped_weapon(ecs_world_t *world, ecs_entity_t actor) { + ecs_query_t *q = ecs_query(world, { + .terms = { + { .id = ecs_id(EquippedWeapon) }, + { .first.id = ContainedBy, .second.id = actor } + } + }); + if (!q) return 0; + + ecs_entity_t weapon = 0; + ecs_iter_t it = ecs_query_iter(world, q); + if (ecs_query_next(&it)) { + weapon = it.entities[0]; + ecs_iter_fini(&it); + } + ecs_query_fini(q); + return weapon; +} + +/* Helper: Find equipped armor entity for an actor */ +static ecs_entity_t find_equipped_armor(ecs_world_t *world, ecs_entity_t actor) { + ecs_query_t *q = ecs_query(world, { + .terms = { + { .id = ecs_id(EquippedArmor) }, + { .first.id = ContainedBy, .second.id = actor } + } + }); + if (!q) return 0; + + ecs_entity_t armor = 0; + ecs_iter_t it = ecs_query_iter(world, q); + if (ecs_query_next(&it)) { + armor = it.entities[0]; + ecs_iter_fini(&it); + } + ecs_query_fini(q); + return armor; +} + +/* Helper: Queue Attack — uses weapon delay if equipped, else unarmed default */ +static void queue_attack(ecs_world_t *world, TurnState *ts, + ecs_entity_t actor, ecs_entity_t target, int speed) { + int delay = 15; /* unarmed default */ + + ecs_entity_t weapon = find_equipped_weapon(world, actor); + if (weapon) { + const WeaponStats *wpn = ecs_get(world, weapon, WeaponStats); + if (wpn) delay = wpn->delay; + } else { + /* Fallback: speed-based delay for monsters without equipment */ + delay = calculate_attack_delay(speed); + } + + QueuedAction qa = { + .action_type = ACTION_ATTACK, + .actor = actor, + .target = target, + .dx = 0, + .dy = 0, + .delay = delay, + .priority = 100 + }; + rlc_action_queue_push(ts, qa); +} + + +/* Check if any entities have active tweens (animations in progress) + * Returns true if any tween components exist in the world. + * Tweens auto-remove on completion, so existence = active animation. */ +static bool has_active_tweens(ecs_world_t *world) { + /* Count entities with any tween component type */ + int tween_pos_count = ecs_count(world, TweenPosition); + int tween_alpha_count = ecs_count(world, TweenAlpha); + int tween_scale_count = ecs_count(world, TweenScale); + int tween_offset_count = ecs_count(world, TweenOffset); + + int total_tweens = tween_pos_count + tween_alpha_count + + tween_scale_count + tween_offset_count; + + return total_tweens > 0; +} + +/* System 1: Turn Initialization - Process delayed events */ +static void TurnInitSystem(ecs_iter_t *it) { + TurnState *ts = ecs_field(it, TurnState, 0); + + for (int i = 0; i < it->count; i++) { + /* Process delayed event queue */ + rlc_event_queue_process(it->world, &ts[i]); + } +} + +/* System 2: Timeline System - The Heartbeat of the Grand Integer System + * Advances time until an entity is ready to act. */ +static void TimelineSystem(ecs_iter_t *it) { + /* Stop if visual effects (tweens) are playing */ + if (has_active_tweens(it->world)) { + return; + } + + /* Stop if anyone currently has the MyTurn tag (waiting for them to act) */ + if (ecs_count(it->world, MyTurn) > 0) { + return; + } + + /* Get all entities with Energy */ + ecs_query_t *q_energy = ecs_query(it->world, { + .terms = { + { .id = ecs_id(Energy) }, + { .id = ecs_id(Actor) } /* Only consider actors */ + } + }); + if (!q_energy) return; + + /* Max ticks to simulate per frame to prevent infinite loops if no one can act */ + int max_ticks = 1000; + int ticks = 0; + + while (ticks < max_ticks) { + /* 1. Check if anyone has enough energy to act RIGHT NOW */ + int actors_ready = 0; + + ecs_iter_t energy_it = ecs_query_iter(it->world, q_energy); + while (ecs_query_next(&energy_it)) { + Energy *e = ecs_field(&energy_it, Energy, 0); + for (int i = 0; i < energy_it.count; i++) { + if (e[i].accumulator >= ACTION_COST) { + actors_ready++; + /* Mark them as "MyTurn" */ + ecs_add(it->world, energy_it.entities[i], MyTurn); + } + } + } + + /* 2. If we found someone, STOP. Let ECS systems run their logic. */ + if (actors_ready > 0) { + ecs_query_fini(q_energy); + return; + } + + /* 3. If no one is ready, advance the clock (Tick) */ + /* This is the "Empty Time" where everyone regenerates */ + energy_it = ecs_query_iter(it->world, q_energy); + while (ecs_query_next(&energy_it)) { + Energy *e = ecs_field(&energy_it, Energy, 0); + for (int i = 0; i < energy_it.count; i++) { + /* Apply interactions here! (e.g. status effects) */ + int current_gain = e[i].gain_per_tick; + + /* Example: if (ecs_has(it->world, energy_it.entities[i], StatusFrozen)) current_gain /= 2; */ + + e[i].accumulator += current_gain; + } + } + ticks++; + } + + ecs_query_fini(q_energy); +} + +/* System 3: Player Path Follow - Auto-follow mouse path when no keyboard input */ +static void PlayerPathFollowSystem(ecs_iter_t *it) { + ActionIntent *intent = ecs_field(it, ActionIntent, 0); + AStarPath *path = ecs_field(it, AStarPath, 1); + PathStatus *status = ecs_field(it, PathStatus, 2); + + /* Only run if player has turn */ + if (!ecs_has(it->world, it->entities[0], MyTurn)) return; + + for (int i = 0; i < it->count; i++) { + /* Skip if keyboard input is already pending */ + if (intent[i].pending) continue; + + /* Check if we have a valid path to follow */ + if (status[i].value != PATH_VALID || rlc_path_is_complete(path + i)) { + continue; + } + + /* Get next step from path */ + int dx, dy; + if (rlc_path_get_next_step(path + i, &dx, &dy)) { + /* Set intent to move along path */ + intent[i].action_type = ACTION_MOVE; + intent[i].dx = dx; + intent[i].dy = dy; + intent[i].target = 0; + intent[i].energy_cost = ACTION_COST_MOVE; + intent[i].pending = true; + + /* Advance path for next turn */ + rlc_path_advance(path + i); + + /* Clear path if complete */ + if (rlc_path_is_complete(path + i)) { + status[i].value = PATH_NONE; + } + + // RLC_LOG_DEBUG("Player following path: (%d, %d)", dx, dy); + ecs_modified(it->world, it->entities[i], ActionIntent); + } + } +} + +/* System 4: Player Action System - Handle player input */ +static void PlayerActionSystem(ecs_iter_t *it) { + ActionIntent *intent = ecs_field(it, ActionIntent, 0); + Energy *energy = ecs_field(it, Energy, 1); + Actor *actor = ecs_field(it, Actor, 2); + + TurnState *ts = ecs_singleton_get_mut(it->world, TurnState); + if (!ts) return; + + for (int i = 0; i < it->count; i++) { + /* Ensure player has MyTurn tag */ + if (!ecs_has(it->world, it->entities[i], MyTurn)) continue; + + if (!intent[i].pending) continue; + + /* If moving, check for Bump Attack */ + if (intent[i].action_type == ACTION_MOVE) { + GridPosition *pos = ecs_get_mut(it->world, it->entities[i], GridPosition); + if (pos) { + int target_x = pos->x + intent[i].dx; + int target_y = pos->y + intent[i].dy; + + /* Check if blocked by entity */ + if (is_tile_occupied(it->world, target_x, target_y, it->entities[i])) { + /* Find WHO is blocking to see if we should attack */ + ecs_query_t *q = ecs_query(it->world, { + .terms = { + { .id = ecs_id(GridPosition) }, + { .id = ecs_id(Health) }, /* Only attack things with health */ + { .id = ecs_id(Actor) } + } + }); + if (q) { + ecs_iter_t qit = ecs_query_iter(it->world, q); + while (ecs_query_next(&qit)) { + GridPosition *gp = ecs_field(&qit, GridPosition, 0); + for (int k = 0; k < qit.count; k++) { + if (qit.entities[k] != it->entities[i] && gp[k].x == target_x && gp[k].y == target_y) { + /* Found target! Convert to Attack */ + intent[i].action_type = ACTION_ATTACK; + intent[i].target = qit.entities[k]; + ecs_iter_fini(&qit); /* Required for early exit via goto */ + goto found_blocker; + } + } + } + found_blocker: + ecs_query_fini(q); + } + } + } + } + + /* Execute Action */ + bool action_taken = false; + + if (intent[i].action_type == ACTION_MOVE) { + /* Try to move */ + bool moved = execute_move_immediate(it->world, it->entities[i], intent[i].dx, intent[i].dy); + if (moved) action_taken = true; + } + else if (intent[i].action_type == ACTION_ATTACK) { + /* Schedule Attack */ + queue_attack(it->world, ts, it->entities[i], intent[i].target, actor[i].speed); + action_taken = true; + } + else if (intent[i].action_type == ACTION_WAIT) { + /* Explicit wait counts as taking a turn */ + action_taken = true; + } + else { + /* Other actions (Use Item, etc) */ + QueuedAction qa = { + .action_type = intent[i].action_type, + .actor = it->entities[i], + .target = intent[i].target, + .item = intent[i].item, + .dx = intent[i].dx, + .dy = intent[i].dy, + .delay = 0, + .priority = 50 + }; + rlc_action_queue_push(ts, qa); + action_taken = true; + } + + if (action_taken) { + /* Pay the cost */ + energy[i].accumulator -= ACTION_COST; + + /* Remove MyTurn tag - turn ends */ + ecs_remove(it->world, it->entities[i], MyTurn); + } + + /* Clear intent */ + intent[i].pending = false; + } +} + +/* --- Helper: Find player entity and position --- */ +static bool find_player(ecs_world_t *world, ecs_entity_t *out_player, int *out_x, int *out_y) { + ecs_query_t *player_q = ecs_query(world, { + .terms = { + { .id = ecs_id(GridPosition) }, + { .id = ecs_id(Player) } + } + }); + if (!player_q) return false; + ecs_iter_t player_it = ecs_query_iter(world, player_q); + bool found = false; + if (ecs_query_next(&player_it)) { + *out_player = player_it.entities[0]; + const GridPosition *player_grid = ecs_field(&player_it, GridPosition, 0); + if (player_grid) { + *out_x = player_grid->x; + *out_y = player_grid->y; + found = true; + } + ecs_iter_fini(&player_it); /* Must finalize iterator before query_fini */ + } + ecs_query_fini(player_q); + return found; +} + +/* --- Helper: Check if any actor occupies a grid position --- */ +static bool is_tile_occupied(ecs_world_t *world, int x, int y, ecs_entity_t ignore) { + ecs_query_t *q = ecs_query(world, { + .terms = { + { .id = ecs_id(GridPosition) }, + { .id = ecs_id(Actor) } + } + }); + if (!q) return false; + + bool occupied = false; + ecs_iter_t qit = ecs_query_iter(world, q); + while (ecs_query_next(&qit)) { + GridPosition *gp = ecs_field(&qit, GridPosition, 0); + for (int i = 0; i < qit.count; i++) { + if (qit.entities[i] != ignore && gp[i].x == x && gp[i].y == y) { + occupied = true; + break; + } + } + if (occupied) { + ecs_iter_fini(&qit); /* Required for early exit */ + break; + } + } + ecs_query_fini(q); + return occupied; +} + +/* --- Helper: Check line-of-sight using Bresenham's line algorithm --- */ +static bool has_line_of_sight(DungeonContext *dungeon, int x0, int y0, int x1, int y1) { + if (!dungeon) return false; + + int dx = abs(x1 - x0); + int dy = abs(y1 - y0); + int sx = (x0 < x1) ? 1 : -1; + int sy = (y0 < y1) ? 1 : -1; + int err = dx - dy; + + int x = x0, y = y0; + + while (1) { + /* Don't check the start or end positions - only tiles in between */ + if ((x != x0 || y != y0) && (x != x1 || y != y1)) { + Tile t = dungeon_context_get_tile(dungeon, x, y); + if (t == TILE_WALL || t == TILE_EMPTY) { + return false; /* Blocked by wall or void */ + } + } + + if (x == x1 && y == y1) break; + + int e2 = 2 * err; + if (e2 > -dy) { + err -= dy; + x += sx; + } + if (e2 < dx) { + err += dx; + y += sy; + } + } + + return true; +} + +/* --- Helper: Check if entity can see target (range + line-of-sight) --- */ +static bool can_see_entity(ecs_world_t *world, ecs_entity_t viewer, ecs_entity_t target) { + const GridPosition *viewer_pos = ecs_get(world, viewer, GridPosition); + const GridPosition *target_pos = ecs_get(world, target, GridPosition); + + if (!viewer_pos || !target_pos) return false; + + /* First: range check (early out if too far) */ + const int MONSTER_PERCEPTION_RANGE = 8; + int dx = target_pos->x - viewer_pos->x; + int dy = target_pos->y - viewer_pos->y; + int dist_sq = dx * dx + dy * dy; + + if (dist_sq > (MONSTER_PERCEPTION_RANGE * MONSTER_PERCEPTION_RANGE)) { + return false; + } + + /* Second: line-of-sight check (can't see through walls). + * Use the world context DungeonContext* directly — it's fully populated + * for all dungeon types (physics, BSP, loaded/imported, town, arena). */ + DungeonContext *ctx = (DungeonContext *)ecs_get_ctx(world); + if (!ctx) { + return false; + } + + return has_line_of_sight(ctx, + viewer_pos->x, viewer_pos->y, + target_pos->x, target_pos->y); +} + +/* System 5a: AI Perception System - Update memory based on what AI can see */ +static void AiPerceptionSystem(ecs_iter_t *it) { + Actor *actor = ecs_field(it, Actor, 0); + AiMemory *memory = ecs_field(it, AiMemory, 1); + GridPosition *grid = ecs_field(it, GridPosition, 2); + (void)actor; + + /* AI Systems now run whenever the AI entity has MyTurn */ + /* This system updates memory for *all* AIs though? */ + /* No, we should only update for AIs that are about to act or we update all per frame? */ + /* Better to update only for the active entity to save perf, or all? */ + /* Actually, perception is a passive thing. But in a strict turn system, */ + /* it matters when they act. Let's filter by MyTurn for now to keep it simple. */ + + /* However, to catch "I see you", we usually check perception. */ + /* Let's iterate only MyTurn entities */ + + // Note: The original system iterated all Actors. + // We only want to process the entity whose turn it is. + // So we add MyTurn to the query in registration. + + ecs_entity_t player = 0; + int player_x = 0, player_y = 0; + if (!find_player(it->world, &player, &player_x, &player_y)) return; + + for (int i = 0; i < it->count; i++) { + ecs_entity_t monster = it->entities[i]; + bool sees_player = can_see_entity(it->world, monster, player); + + if (sees_player) { + memory[i].last_seen_player_x = player_x; + memory[i].last_seen_player_y = player_y; + memory[i].turns_since_player_seen = 0; + + /* Update hunting state if present */ + AiStateHunting *hunting = ecs_get_mut(it->world, monster, AiStateHunting); + if (hunting) { + hunting->last_known_x = player_x; + hunting->last_known_y = player_y; + hunting->target_visible = true; + } + } else { + memory[i].turns_since_player_seen++; + + /* Mark target not visible in hunting state */ + AiStateHunting *hunting = ecs_get_mut(it->world, monster, AiStateHunting); + if (hunting) { + hunting->target_visible = false; + } + } + + (void)grid; + } +} + +/* System 5b: AI State Transition System */ +static void AiStateTransitionSystem(ecs_iter_t *it) { + Actor *actor = ecs_field(it, Actor, 0); + AiMemory *memory = ecs_field(it, AiMemory, 1); + (void)actor; + + ecs_entity_t player = 0; + int player_x = 0, player_y = 0; + find_player(it->world, &player, &player_x, &player_y); + + ecs_defer_begin(it->world); + + for (int i = 0; i < it->count; i++) { + ecs_entity_t monster = it->entities[i]; + bool sees_player = (memory[i].turns_since_player_seen == 0); + + /* Check current state and decide transitions */ + bool is_idle = ecs_has(it->world, monster, AiStateIdle); + bool is_wandering = ecs_has(it->world, monster, AiStateWandering); + bool is_hunting = ecs_has(it->world, monster, AiStateHunting); + bool is_investigating = ecs_has(it->world, monster, AiStateInvestigating); + bool is_fleeing = ecs_has(it->world, monster, AiStateFleeing); + + /* Check health for fleeing decision */ + const Health *hp = ecs_get(it->world, monster, Health); + bool low_health = hp && hp->max > 0 && (hp->current * 100 / hp->max) < 30; + + /* Idle -> Hunting: Monster awakens when it sees the player */ + if (is_idle) { + if (sees_player && player) { + ecs_remove(it->world, monster, AiStateIdle); + ecs_set(it->world, monster, AiStateHunting, { + .target = player, + .last_known_x = memory[i].last_seen_player_x, + .last_known_y = memory[i].last_seen_player_y, + .target_visible = true, + .stuck_turns = 0 + }); + RLC_LOG_DEBUG("Monster %lu: Idle -> Hunting (awakened!)", (unsigned long)monster); + continue; + } + continue; + } + + if (is_wandering) { + if (sees_player && player) { + ecs_remove(it->world, monster, AiStateWandering); + ecs_set(it->world, monster, AiStateHunting, { + .target = player, + .last_known_x = memory[i].last_seen_player_x, + .last_known_y = memory[i].last_seen_player_y, + .target_visible = true, + .stuck_turns = 0 + }); + } + } + else if (is_hunting) { + AiStateHunting *hunting = ecs_get_mut(it->world, monster, AiStateHunting); + + if (low_health) { + ecs_remove(it->world, monster, AiStateHunting); + ecs_add(it->world, monster, AiStateFleeing); + } + else if (hunting && !hunting->target_visible && memory[i].turns_since_player_seen >= 2) { + int target_x = hunting->last_known_x; + int target_y = hunting->last_known_y; + ecs_remove(it->world, monster, AiStateHunting); + ecs_set(it->world, monster, AiStateInvestigating, { + .target_x = target_x, + .target_y = target_y, + .turns_remaining = 5 + }); + } + else if (hunting && hunting->stuck_turns >= 3) { + ecs_remove(it->world, monster, AiStateHunting); + ecs_set(it->world, monster, AiStateInvestigating, { + .target_x = hunting->last_known_x, + .target_y = hunting->last_known_y, + .turns_remaining = 3 + }); + } + } + else if (is_investigating) { + AiStateInvestigating *inv = ecs_get_mut(it->world, monster, AiStateInvestigating); + + if (sees_player && player) { + ecs_remove(it->world, monster, AiStateInvestigating); + ecs_set(it->world, monster, AiStateHunting, { + .target = player, + .last_known_x = memory[i].last_seen_player_x, + .last_known_y = memory[i].last_seen_player_y, + .target_visible = true, + .stuck_turns = 0 + }); + } + else if (inv && inv->turns_remaining <= 0) { + ecs_remove(it->world, monster, AiStateInvestigating); + ecs_add(it->world, monster, AiStateWandering); + } + } + else if (is_fleeing) { + if (memory[i].turns_since_player_seen >= 5) { + ecs_remove(it->world, monster, AiStateFleeing); + ecs_add(it->world, monster, AiStateWandering); + } + } + else { + ecs_add(it->world, monster, AiStateWandering); + } + } + + ecs_defer_end(it->world); +} + +/* System 5c: AI Action - Idle behavior */ +static void AiActionIdleSystem(ecs_iter_t *it) { + Energy *energy = ecs_field(it, Energy, 1); + + for (int i = 0; i < it->count; i++) { + /* Idle monsters pass their turn */ + energy[i].accumulator -= ACTION_COST; + ecs_remove(it->world, it->entities[i], MyTurn); + } +} + +/* System 5d: AI Action - Wandering behavior */ +static void AiActionWanderingSystem(ecs_iter_t *it) { + Energy *energy = ecs_field(it, Energy, 1); + GridPosition *grid = ecs_field(it, GridPosition, 2); + + DungeonContext *dungeon = (DungeonContext *)ecs_get_ctx(it->world); + if (!dungeon) return; + + for (int i = 0; i < it->count; i++) { + ecs_entity_t monster = it->entities[i]; + + /* Pick random adjacent walkable tile */ + int dx = 0, dy = 0; + int directions[8][2] = {{-1,-1},{0,-1},{1,-1},{-1,0},{1,0},{-1,1},{0,1},{1,1}}; + + for (int tries = 0; tries < 8; tries++) { + int dir_idx = rand() % 8; + int try_dx = directions[dir_idx][0]; + int try_dy = directions[dir_idx][1]; + + int new_x = grid[i].x + try_dx; + int new_y = grid[i].y + try_dy; + Tile t = dungeon_context_get_tile(dungeon, new_x, new_y); + + if (t == TILE_FLOOR) { + dx = try_dx; + dy = try_dy; + break; + } + } + + if (dx != 0 || dy != 0) { + execute_move_immediate(it->world, monster, dx, dy); + } + + /* Pay cost */ + energy[i].accumulator -= ACTION_COST; + ecs_remove(it->world, monster, MyTurn); + } +} + +/* System 5e: AI Action - Hunting behavior */ +static void AiActionHuntingSystem(ecs_iter_t *it) { + Energy *energy = ecs_field(it, Energy, 1); + GridPosition *grid = ecs_field(it, GridPosition, 2); + AiStateHunting *hunting = ecs_field(it, AiStateHunting, 3); + Actor *actor = ecs_field(it, Actor, 4); + + TurnState *ts = ecs_singleton_get_mut(it->world, TurnState); + if (!ts) return; + + DungeonContext *dungeon = (DungeonContext *)ecs_get_ctx(it->world); + if (!dungeon) return; + + ecs_entity_t player = 0; + int player_x = 0, player_y = 0; + find_player(it->world, &player, &player_x, &player_y); + + for (int i = 0; i < it->count; i++) { + ecs_entity_t monster = it->entities[i]; + + if (!ecs_is_alive(it->world, hunting[i].target)) { + energy[i].accumulator -= ACTION_COST; + ecs_remove(it->world, monster, MyTurn); + continue; + } + + int target_x = hunting[i].last_known_x; + int target_y = hunting[i].last_known_y; + + int gx = grid[i].x; + int gy = grid[i].y; + int dist_x = player_x - gx; + int dist_y = player_y - gy; + bool adjacent = (abs(dist_x) <= 1 && abs(dist_y) <= 1 && (dist_x != 0 || dist_y != 0)); + + bool acted = false; + + /* 1. Attack if adjacent */ + if (adjacent && hunting[i].target_visible) { + queue_attack(it->world, ts, monster, player, actor[i].speed); + acted = true; + } + else { + /* 2. Move */ + AStarPath *path = ecs_get_mut(it->world, monster, AStarPath); + PathStatus *status = ecs_get_mut(it->world, monster, PathStatus); + + int dx = 0, dy = 0; + bool moved = false; + + if (path && status && status->value == PATH_VALID && !rlc_path_is_complete(path)) { + int step_dx, step_dy; + if (rlc_path_get_next_step(path, &step_dx, &step_dy)) { + int new_x = grid[i].x + step_dx; + int new_y = grid[i].y + step_dy; + Tile t = dungeon_context_get_tile(dungeon, new_x, new_y); + + if (t == TILE_FLOOR) { + dx = step_dx; + dy = step_dy; + rlc_path_advance(path); + + moved = execute_move_immediate(it->world, monster, dx, dy); + if (moved) { + hunting[i].stuck_turns = 0; + acted = true; + } + } + } + } + + if (!moved) { + int dist_sq = (target_x - grid[i].x) * (target_x - grid[i].x) + + (target_y - grid[i].y) * (target_y - grid[i].y); + if (dist_sq <= 400) { + rlc_request_path_to_entity(it->world, monster, hunting[i].target); + } + hunting[i].stuck_turns++; + + /* Pass turn even if stuck to prevent freeze */ + acted = true; + } else { + /* 3. Attack after move (bump) logic if we want, but here we just moved */ + } + } + + if (acted) { + energy[i].accumulator -= ACTION_COST; + ecs_remove(it->world, monster, MyTurn); + } + } +} + +/* System 5f: AI Action - Fleeing behavior */ +static void AiActionFleeingSystem(ecs_iter_t *it) { + Energy *energy = ecs_field(it, Energy, 1); + GridPosition *grid = ecs_field(it, GridPosition, 2); + + DungeonContext *dungeon = (DungeonContext *)ecs_get_ctx(it->world); + if (!dungeon) return; + + ecs_entity_t player = 0; + int player_x = 0, player_y = 0; + find_player(it->world, &player, &player_x, &player_y); + + for (int i = 0; i < it->count; i++) { + ecs_entity_t monster = it->entities[i]; + + int flee_dx = grid[i].x - player_x; + int flee_dy = grid[i].y - player_y; + + int dx = (flee_dx > 0) ? 1 : ((flee_dx < 0) ? -1 : 0); + int dy = (flee_dy > 0) ? 1 : ((flee_dy < 0) ? -1 : 0); + + int new_x = grid[i].x + dx; + int new_y = grid[i].y + dy; + Tile t = dungeon_context_get_tile(dungeon, new_x, new_y); + + if (t != TILE_FLOOR) { + int alts[4][2] = {{dx, 0}, {0, dy}, {-dy, dx}, {dy, -dx}}; + dx = 0; + dy = 0; + for (int j = 0; j < 4; j++) { + new_x = grid[i].x + alts[j][0]; + new_y = grid[i].y + alts[j][1]; + t = dungeon_context_get_tile(dungeon, new_x, new_y); + if (t == TILE_FLOOR) { + dx = alts[j][0]; + dy = alts[j][1]; + break; + } + } + } + + if (dx != 0 || dy != 0) { + execute_move_immediate(it->world, monster, dx, dy); + } + + energy[i].accumulator -= ACTION_COST; + ecs_remove(it->world, monster, MyTurn); + } +} + +/* System 5g: AI Action - Investigating behavior */ +static void AiActionInvestigatingSystem(ecs_iter_t *it) { + Energy *energy = ecs_field(it, Energy, 1); + GridPosition *grid = ecs_field(it, GridPosition, 2); + AiStateInvestigating *inv = ecs_field(it, AiStateInvestigating, 3); + + DungeonContext *dungeon = (DungeonContext *)ecs_get_ctx(it->world); + if (!dungeon) return; + + for (int i = 0; i < it->count; i++) { + ecs_entity_t monster = it->entities[i]; + + inv[i].turns_remaining--; + + int dx = 0, dy = 0; + int to_x = inv[i].target_x - grid[i].x; + int to_y = inv[i].target_y - grid[i].y; + + if (to_x != 0 || to_y != 0) { + dx = (to_x > 0) ? 1 : ((to_x < 0) ? -1 : 0); + dy = (to_y > 0) ? 1 : ((to_y < 0) ? -1 : 0); + + int new_x = grid[i].x + dx; + int new_y = grid[i].y + dy; + Tile t = dungeon_context_get_tile(dungeon, new_x, new_y); + + if (t != TILE_FLOOR) { + if (abs(to_x) >= abs(to_y)) { + dy = 0; + } else { + dx = 0; + } + new_x = grid[i].x + dx; + new_y = grid[i].y + dy; + t = dungeon_context_get_tile(dungeon, new_x, new_y); + if (t != TILE_FLOOR) { + dx = 0; + dy = 0; + } + } + } + + if (dx != 0 || dy != 0) { + execute_move_immediate(it->world, monster, dx, dy); + } + + energy[i].accumulator -= ACTION_COST; + ecs_remove(it->world, monster, MyTurn); + } +} + +/* System 6: Action Execution System - Execute queued actions (Attacks, Items) */ +static void ActionExecutionSystem(ecs_iter_t *it) { + TurnState *ts = ecs_field(it, TurnState, 0); + + for (int i = 0; i < it->count; i++) { + if (ts[i].action_count == 0) continue; + + rlc_action_queue_sort(&ts[i]); + + for (size_t j = 0; j < ts[i].action_count; j++) { + QueuedAction *qa = &ts[i].action_queue[j]; + + switch (qa->action_type) { + case ACTION_ATTACK: { + if (!ecs_is_alive(it->world, qa->target)) break; + + const GridPosition *attacker_pos = ecs_get(it->world, qa->actor, GridPosition); + const GridPosition *target_pos = ecs_get(it->world, qa->target, GridPosition); + + if (!attacker_pos || !target_pos) break; + + int dx = target_pos->x - attacker_pos->x; + int dy = target_pos->y - attacker_pos->y; + if (abs(dx) > 1 || abs(dy) > 1) break; + + /* Attack lunge animation */ + { + float lunge_x = (float)dx * 4.0f; + float lunge_y = (float)dy * 4.0f; + + if (!ecs_has(it->world, qa->actor, RenderOffset)) { + ecs_set(it->world, qa->actor, RenderOffset, {0.0f, 0.0f}); + } + + TweenBuilder lunge = TWEEN(it->world, qa->actor); + rlc_tween_duration(&lunge, 0.15f); + rlc_tween_easing(&lunge, EASE_OUT_QUAD); + rlc_tween_repeat(&lunge, TWEEN_MODE_YOYO); + rlc_tween_offset(lunge, lunge_x, lunge_y); + } + + /* ── Deterministic weapon-based damage ── */ + int raw_damage = 1; /* unarmed fallback */ + const WeaponStats *wpn = NULL; + ecs_entity_t weapon_ent = find_equipped_weapon(it->world, qa->actor); + + if (weapon_ent) { + wpn = ecs_get(it->world, weapon_ent, WeaponStats); + if (wpn) raw_damage = wpn->base_damage; + } else { + /* Unarmed: 1 + str/3 */ + const Attributes *attr = ecs_get(it->world, qa->actor, Attributes); + raw_damage = 1 + (attr ? attr->str / 3 : 0); + } + + /* Flat defense from target's armor */ + int defense = 0; + ecs_entity_t armor_ent = find_equipped_armor(it->world, qa->target); + if (armor_ent) { + const ArmorStats *arm = ecs_get(it->world, armor_ent, ArmorStats); + if (arm) defense += arm->defense; + } + /* Also check target's Attributes for innate defense (monsters) */ + /* Monsters don't equip armor; their defense field IS their defense */ + if (!armor_ent) { + const Attributes *tgt_attr = ecs_get(it->world, qa->target, Attributes); + /* con provides innate defense for unarmored entities */ + if (tgt_attr) defense += tgt_attr->con / 3; + } + + /* Final damage: deterministic, floor 1 */ + int damage = raw_damage - defense; + if (damage < 1) damage = 1; + + Health *target_hp = ecs_get_mut(it->world, qa->target, Health); + if (target_hp) { + target_hp->current -= damage; + + /* Enhanced combat log with damage breakdown */ + rlc_log_combat_detailed(it->world, qa->actor, qa->target, + raw_damage, defense, damage, weapon_ent); + + /* Stun mechanic: push target's queued attacks forward */ + if (wpn && wpn->stun_delay > 0 && target_hp->current > 0) { + for (size_t k = 0; k < ts[i].action_count; k++) { + if (ts[i].action_queue[k].actor == qa->target) { + ts[i].action_queue[k].delay += wpn->stun_delay; + } + } + rlc_action_queue_sort(&ts[i]); + + const Name *tgt_name = ecs_get(it->world, qa->target, Name); + rlc_log_message(it->world, LOG_MSG_COMBAT_HIT, + "%s is stunned! (+%d delay)", + tgt_name ? tgt_name->str : "Target", wpn->stun_delay); + } + + if (target_hp->current <= 0) { + bool is_target_player = ecs_has(it->world, qa->target, Player); + if (!is_target_player) { + ecs_delete(it->world, qa->target); + } else { + RLC_LOG_INFO("Player killed!"); + } + } + } else { + rlc_log_combat_detailed(it->world, qa->actor, qa->target, + 0, 0, 0, 0); + } + break; + } + + case ACTION_USE_ITEM: { + if (!ecs_is_alive(it->world, qa->item)) break; + const Consumable *cons = ecs_get(it->world, qa->item, Consumable); + if (!cons) break; + + bool consumed = false; + switch (cons->effect) { + case CONSUMABLE_EFFECT_HEAL: { + Health *hp = ecs_get_mut(it->world, qa->actor, Health); + if (hp) { + int old_hp = hp->current; + hp->current += cons->power; + if (hp->current > hp->max) hp->current = hp->max; + ecs_modified(it->world, qa->actor, Health); + int healed = hp->current - old_hp; + rlc_log_message(it->world, LOG_MSG_ITEM_USE, "You use a healing potion and restore %d HP", healed); + consumed = true; + } + break; + } + case CONSUMABLE_EFFECT_TELEPORT: { + rlc_log_message(it->world, LOG_MSG_ITEM_USE, "You read a scroll of teleportation!"); + consumed = true; + break; + } + case CONSUMABLE_EFFECT_AIZAWA: { + rlc_log_message(it->world, LOG_MSG_ITEM_USE, + "You read the Scroll of Aizawa... reality unravels!"); + ecs_add(it->world, qa->actor, AizawaPending); + consumed = true; + break; + } + default: break; + } + if (consumed) ecs_delete(it->world, qa->item); + break; + } + + case ACTION_DROP_ITEM: { + if (!ecs_is_alive(it->world, qa->item)) break; + /* Remove all equipment tags */ + ecs_remove(it->world, qa->item, EquippedWeapon); + ecs_remove(it->world, qa->item, EquippedArmor); + ecs_remove(it->world, qa->item, EquippedAccessory); + /* Remove inventory slot and containment */ + ecs_remove(it->world, qa->item, InventorySlot); + ecs_remove_pair(it->world, qa->item, ContainedBy, qa->actor); + const GridPosition *pos = ecs_get(it->world, qa->actor, GridPosition); + if (pos) { + ecs_add(it->world, qa->item, WorldItem); + ecs_set(it->world, qa->item, GridPosition, {pos->x, pos->y}); + ecs_set(it->world, qa->item, RenderPosition, {(float)pos->x, (float)pos->y}); + const Name *item_name = ecs_get(it->world, qa->item, Name); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You drop %s", item_name ? item_name->str : "an item"); + } + break; + } + + case ACTION_EQUIP_ITEM: { + if (!ecs_is_alive(it->world, qa->item)) break; + const Name *item_name = ecs_get(it->world, qa->item, Name); + + /* Check attribute requirements before equipping */ + const Attributes *equip_attr = ecs_get(it->world, qa->actor, Attributes); + const WeaponStats *equip_wpn = ecs_get(it->world, qa->item, WeaponStats); + const ArmorStats *equip_arm = ecs_get(it->world, qa->item, ArmorStats); + + if (equip_wpn && equip_attr) { + if (equip_attr->str < equip_wpn->req_str) { + rlc_log_message(it->world, LOG_MSG_SYSTEM, + "Need %d STR to wield %s (you have %d)", + equip_wpn->req_str, item_name ? item_name->str : "weapon", equip_attr->str); + break; + } + if (equip_attr->dex < equip_wpn->req_dex) { + rlc_log_message(it->world, LOG_MSG_SYSTEM, + "Need %d DEX to wield %s (you have %d)", + equip_wpn->req_dex, item_name ? item_name->str : "weapon", equip_attr->dex); + break; + } + } + if (equip_arm && equip_attr) { + if (equip_attr->str < equip_arm->req_str) { + rlc_log_message(it->world, LOG_MSG_SYSTEM, + "Need %d STR to wear %s (you have %d)", + equip_arm->req_str, item_name ? item_name->str : "armor", equip_attr->str); + break; + } + } + + /* Check item type and toggle equipment tag */ + if (ecs_has(it->world, qa->item, IsWeapon)) { + if (ecs_has(it->world, qa->item, EquippedWeapon)) { + ecs_remove(it->world, qa->item, EquippedWeapon); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You unequip %s", item_name ? item_name->str : "weapon"); + } else { + unequip_slot_type(it->world, qa->actor, ecs_id(EquippedWeapon)); + ecs_add(it->world, qa->item, EquippedWeapon); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You equip %s", item_name ? item_name->str : "weapon"); + } + } else if (ecs_has(it->world, qa->item, IsArmor)) { + if (ecs_has(it->world, qa->item, EquippedArmor)) { + ecs_remove(it->world, qa->item, EquippedArmor); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You unequip %s", item_name ? item_name->str : "armor"); + } else { + unequip_slot_type(it->world, qa->actor, ecs_id(EquippedArmor)); + ecs_add(it->world, qa->item, EquippedArmor); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You equip %s", item_name ? item_name->str : "armor"); + } + } else if (ecs_has(it->world, qa->item, IsAccessory)) { + if (ecs_has(it->world, qa->item, EquippedAccessory)) { + ecs_remove(it->world, qa->item, EquippedAccessory); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You unequip %s", item_name ? item_name->str : "accessory"); + } else { + unequip_slot_type(it->world, qa->actor, ecs_id(EquippedAccessory)); + ecs_add(it->world, qa->item, EquippedAccessory); + rlc_log_message(it->world, LOG_MSG_SYSTEM, "You equip %s", item_name ? item_name->str : "accessory"); + } + } + break; + } + + case ACTION_PICKUP_ITEM: { + if (!ecs_is_alive(it->world, qa->item)) break; + if (!ecs_has(it->world, qa->item, WorldItem)) break; + + /* Validate item isn't already in an inventory */ + if (ecs_has(it->world, qa->item, InventorySlot)) break; + if (ecs_has_pair(it->world, qa->item, ContainedBy, EcsWildcard)) break; + + /* Find free inventory slot */ + int slot = find_free_slot(it->world, qa->actor); + if (slot == -1) { + rlc_log_message(it->world, LOG_MSG_SYSTEM, "Inventory full!"); + break; + } + + /* Add to inventory */ + ecs_remove(it->world, qa->item, WorldItem); + ecs_remove(it->world, qa->item, GridPosition); + ecs_remove(it->world, qa->item, RenderPosition); + ecs_add_pair(it->world, qa->item, ContainedBy, qa->actor); + ecs_set(it->world, qa->item, InventorySlot, {.slot_index = slot}); + + const Name *item_name = ecs_get(it->world, qa->item, Name); + rlc_log_message(it->world, LOG_MSG_ITEM_PICKUP, "You pick up %s", item_name ? item_name->str : "an item"); + break; + } + + default: break; + } + } + + rlc_action_queue_clear(&ts[i]); + } +} + +/* Register all turn systems */ +void rlc_turn_systems_register(ecs_world_t *world) { + /* 1. Turn Init */ + ecs_entity_t sys_turn_init = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "TurnInitSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + .query.terms = {{ .id = ecs_id(TurnState), .inout = EcsInOut }}, + .callback = TurnInitSystem + }); + + /* 2. Timeline (Time Loop) */ + ecs_entity_t sys_timeline = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "TimelineSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + /* Reads energy to manage turns, adds MyTurn tag */ + .callback = TimelineSystem + }); + ecs_add_pair(world, sys_timeline, EcsDependsOn, sys_turn_init); + + /* 3. Player Path (Requires MyTurn) */ + ecs_entity_t sys_player_path = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "PlayerPathFollowSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + .query.terms = { + { .id = ecs_id(ActionIntent), .inout = EcsInOut }, + { .id = ecs_id(AStarPath), .inout = EcsInOut }, + { .id = ecs_id(PathStatus), .inout = EcsInOut }, + { .id = ecs_id(Player), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = PlayerPathFollowSystem + }); + ecs_add_pair(world, sys_player_path, EcsDependsOn, sys_timeline); + + /* 4. Player Action (Requires MyTurn) */ + ecs_entity_t sys_player_action = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "PlayerActionSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + .query.terms = { + { .id = ecs_id(ActionIntent), .inout = EcsIn }, + { .id = ecs_id(Energy), .inout = EcsInOut }, + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = PlayerActionSystem + }); + ecs_add_pair(world, sys_player_action, EcsDependsOn, sys_player_path); + + /* 5. AI Systems (Require MyTurn) */ + ecs_entity_t sys_ai_perception = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "AiPerceptionSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(AiMemory), .inout = EcsInOut }, + { .id = ecs_id(GridPosition), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiPerceptionSystem + }); + ecs_add_pair(world, sys_ai_perception, EcsDependsOn, sys_timeline); + + ecs_entity_t sys_ai_state = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "AiStateTransitionSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(AiMemory), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiStateTransitionSystem + }); + ecs_add_pair(world, sys_ai_state, EcsDependsOn, sys_ai_perception); + + ecs_entity_t sys_ai_wandering = ecs_system(world, { + .entity = ecs_entity(world, { .name = "AiActionWanderingSystem", .add = ecs_ids(ecs_dependson(EcsOnUpdate)) }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(Energy), .inout = EcsInOut }, + { .id = ecs_id(GridPosition), .inout = EcsIn }, + { .id = ecs_id(AiStateWandering), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiActionWanderingSystem + }); + ecs_add_pair(world, sys_ai_wandering, EcsDependsOn, sys_ai_state); + + ecs_entity_t sys_ai_idle = ecs_system(world, { + .entity = ecs_entity(world, { .name = "AiActionIdleSystem", .add = ecs_ids(ecs_dependson(EcsOnUpdate)) }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(Energy), .inout = EcsInOut }, + { .id = ecs_id(AiStateIdle), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiActionIdleSystem + }); + ecs_add_pair(world, sys_ai_idle, EcsDependsOn, sys_ai_state); + + ecs_entity_t sys_ai_hunting = ecs_system(world, { + .entity = ecs_entity(world, { .name = "AiActionHuntingSystem", .add = ecs_ids(ecs_dependson(EcsOnUpdate)) }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(Energy), .inout = EcsInOut }, + { .id = ecs_id(GridPosition), .inout = EcsIn }, + { .id = ecs_id(AiStateHunting), .inout = EcsInOut }, + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiActionHuntingSystem + }); + ecs_add_pair(world, sys_ai_hunting, EcsDependsOn, sys_ai_state); + + ecs_entity_t sys_ai_fleeing = ecs_system(world, { + .entity = ecs_entity(world, { .name = "AiActionFleeingSystem", .add = ecs_ids(ecs_dependson(EcsOnUpdate)) }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(Energy), .inout = EcsInOut }, + { .id = ecs_id(GridPosition), .inout = EcsIn }, + { .id = ecs_id(AiStateFleeing), .inout = EcsIn }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiActionFleeingSystem + }); + ecs_add_pair(world, sys_ai_fleeing, EcsDependsOn, sys_ai_state); + + ecs_entity_t sys_ai_investigating = ecs_system(world, { + .entity = ecs_entity(world, { .name = "AiActionInvestigatingSystem", .add = ecs_ids(ecs_dependson(EcsOnUpdate)) }), + .query.terms = { + { .id = ecs_id(Actor), .inout = EcsIn }, + { .id = ecs_id(Energy), .inout = EcsInOut }, + { .id = ecs_id(GridPosition), .inout = EcsIn }, + { .id = ecs_id(AiStateInvestigating), .inout = EcsInOut }, + { .id = ecs_id(MyTurn), .inout = EcsIn } + }, + .callback = AiActionInvestigatingSystem + }); + ecs_add_pair(world, sys_ai_investigating, EcsDependsOn, sys_ai_state); + + /* 6. Action Execution (Runs after everyone has had a chance to queue things) */ + ecs_entity_t sys_action_exec = ecs_system(world, { + .entity = ecs_entity(world, { + .name = "ActionExecutionSystem", + .add = ecs_ids(ecs_dependson(EcsOnUpdate)) + }), + .query.terms = {{ .id = ecs_id(TurnState), .inout = EcsInOut }}, + .callback = ActionExecutionSystem + }); + /* Run after all AI and Player systems */ + ecs_add_pair(world, sys_action_exec, EcsDependsOn, sys_ai_investigating); + ecs_add_pair(world, sys_action_exec, EcsDependsOn, sys_player_action); + + /* Register NPC AI systems (schedule, movement, alert, flee) */ + rlc_npc_ai_systems_register(world); +} diff --git a/Quake/image.c b/Quake/image.c new file mode 100644 index 0000000..33c1cac --- /dev/null +++ b/Quake/image.c @@ -0,0 +1,666 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +//image.c -- image loading + +#include "quakedef.h" + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#define STB_IMAGE_WRITE_STATIC +#include "stb_image_write.h" + +#define LODEPNG_NO_COMPILE_DECODER +#define LODEPNG_NO_COMPILE_CPP +#define LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS +#define LODEPNG_NO_COMPILE_ERROR_TEXT +#include "lodepng.h" +#include "lodepng.c" + +static char loadfilename[MAX_OSPATH]; //file scope so that error messages can use it + +typedef struct stdio_buffer_s { + FILE *f; + unsigned char buffer[1024]; + int size; + int pos; +} stdio_buffer_t; + +static stdio_buffer_t *Buf_Alloc(FILE *f) +{ + stdio_buffer_t *buf = (stdio_buffer_t *) calloc(1, sizeof(stdio_buffer_t)); + buf->f = f; + return buf; +} + +static void Buf_Free(stdio_buffer_t *buf) +{ + free(buf); +} + +static inline int Buf_GetC(stdio_buffer_t *buf) +{ + if (buf->pos >= buf->size) + { + buf->size = fread(buf->buffer, 1, sizeof(buf->buffer), buf->f); + buf->pos = 0; + + if (buf->size == 0) + return EOF; + } + + return buf->buffer[buf->pos++]; +} + +/* +============ +Image_LoadImage + +returns a pointer to hunk allocated RGBA data + +TODO: search order: tga png jpg pcx lmp +============ +*/ +byte *Image_LoadImage (const char *name, int *width, int *height) +{ + FILE *f; + + q_snprintf (loadfilename, sizeof(loadfilename), "%s.tga", name); + COM_FOpenFile (loadfilename, &f, NULL); + if (f) + return Image_LoadTGA (f, width, height); + + q_snprintf (loadfilename, sizeof(loadfilename), "%s.pcx", name); + COM_FOpenFile (loadfilename, &f, NULL); + if (f) + return Image_LoadPCX (f, width, height); + + return NULL; +} + +//============================================================================== +// +// TGA +// +//============================================================================== + +typedef struct targaheader_s { + unsigned char id_length, colormap_type, image_type; + unsigned short colormap_index, colormap_length; + unsigned char colormap_size; + unsigned short x_origin, y_origin, width, height; + unsigned char pixel_size, attributes; +} targaheader_t; + +#define TARGAHEADERSIZE 18 /* size on disk */ + +int fgetLittleShort (FILE *f) +{ + byte b1, b2; + + b1 = fgetc(f); + b2 = fgetc(f); + + return (short)(b1 + b2*256); +} + +int fgetLittleLong (FILE *f) +{ + byte b1, b2, b3, b4; + + b1 = fgetc(f); + b2 = fgetc(f); + b3 = fgetc(f); + b4 = fgetc(f); + + return b1 + (b2<<8) + (b3<<16) + (b4<<24); +} + +/* +============ +Image_WriteTGA -- writes RGB or RGBA data to a TGA file + +returns true if successful + +TODO: support BGRA and BGR formats (since opengl can return them, and we don't have to swap) +============ +*/ +qboolean Image_WriteTGA (const char *name, byte *data, int width, int height, int bpp, qboolean upsidedown) +{ + int handle, i, size, temp, bytes; + char pathname[MAX_OSPATH]; + byte header[TARGAHEADERSIZE]; + + Sys_mkdir (com_gamedir); //if we've switched to a nonexistant gamedir, create it now so we don't crash + q_snprintf (pathname, sizeof(pathname), "%s/%s", com_gamedir, name); + handle = Sys_FileOpenWrite (pathname); + if (handle == -1) + return false; + + Q_memset (header, 0, TARGAHEADERSIZE); + header[2] = 2; // uncompressed type + header[12] = width&255; + header[13] = width>>8; + header[14] = height&255; + header[15] = height>>8; + header[16] = bpp; // pixel size + if (upsidedown) + header[17] = 0x20; //upside-down attribute + + // swap red and blue bytes + bytes = bpp/8; + size = width*height*bytes; + for (i=0; i<size; i+=bytes) + { + temp = data[i]; + data[i] = data[i+2]; + data[i+2] = temp; + } + + Sys_FileWrite (handle, header, TARGAHEADERSIZE); + Sys_FileWrite (handle, data, size); + Sys_FileClose (handle); + + return true; +} + +/* +============= +Image_LoadTGA +============= +*/ +byte *Image_LoadTGA (FILE *fin, int *width, int *height) +{ + int columns, rows, numPixels; + byte *pixbuf; + int row, column; + byte *targa_rgba; + int realrow; //johnfitz -- fix for upside-down targas + qboolean upside_down; //johnfitz -- fix for upside-down targas + stdio_buffer_t *buf; + targaheader_t targa_header; + + targa_header.id_length = fgetc(fin); + targa_header.colormap_type = fgetc(fin); + targa_header.image_type = fgetc(fin); + + targa_header.colormap_index = fgetLittleShort(fin); + targa_header.colormap_length = fgetLittleShort(fin); + targa_header.colormap_size = fgetc(fin); + targa_header.x_origin = fgetLittleShort(fin); + targa_header.y_origin = fgetLittleShort(fin); + targa_header.width = fgetLittleShort(fin); + targa_header.height = fgetLittleShort(fin); + targa_header.pixel_size = fgetc(fin); + targa_header.attributes = fgetc(fin); + + if (targa_header.image_type==1) + { + if (targa_header.pixel_size != 8 || targa_header.colormap_size != 24 || targa_header.colormap_length > 256) + Sys_Error ("Image_LoadTGA: %s has an %ibit palette", loadfilename, targa_header.colormap_type); + } + else + { + if (targa_header.image_type!=2 && targa_header.image_type!=3 && targa_header.image_type!=10) + Sys_Error("Image_LoadTGA: %s is not a type 2, 3, or 10 targa (%i)", loadfilename, targa_header.image_type); + + if (targa_header.image_type == 3) + { + if (targa_header.colormap_type != 0 || targa_header.pixel_size != 8) + Sys_Error ("Image_LoadTGA: %s is not a 8bit grayscale targa", loadfilename); + } + else + { + if (targa_header.colormap_type !=0 || (targa_header.pixel_size!=32 && targa_header.pixel_size!=24)) + Sys_Error ("Image_LoadTGA: %s is not a 24bit or 32bit targa", loadfilename); + } + } + + columns = targa_header.width; + rows = targa_header.height; + numPixels = columns * rows; + upside_down = !(targa_header.attributes & 0x20); //johnfitz -- fix for upside-down targas + + targa_rgba = (byte *) Hunk_Alloc (numPixels*4); + + if (targa_header.id_length != 0) + fseek(fin, targa_header.id_length, SEEK_CUR); // skip TARGA image comment + + buf = Buf_Alloc(fin); + + if (targa_header.image_type==1) // Uncompressed, paletted images + { + byte palette[256*4]; + int i; + //palette data comes first + for (i = 0; i < targa_header.colormap_length; i++) + { //this palette data is bgr. + palette[i*4+2] = Buf_GetC(buf); + palette[i*4+1] = Buf_GetC(buf); + palette[i*4+0] = Buf_GetC(buf); + palette[i*4+3] = 255; + } + for (i = targa_header.colormap_length*4; i < sizeof(palette); i++) + palette[i] = 0; + for(row=rows-1; row>=0; row--) + { + realrow = upside_down ? row : rows - 1 - row; + pixbuf = targa_rgba + realrow*columns*4; + + for(column=0; column<columns; column++) + { + i = Buf_GetC(buf); + *pixbuf++= palette[i*4+0]; + *pixbuf++= palette[i*4+1]; + *pixbuf++= palette[i*4+2]; + *pixbuf++= palette[i*4+3]; + } + } + } + else if (targa_header.image_type==2) // Uncompressed, RGB images + { + for(row=rows-1; row>=0; row--) + { + //johnfitz -- fix for upside-down targas + realrow = upside_down ? row : rows - 1 - row; + pixbuf = targa_rgba + realrow*columns*4; + //johnfitz + for(column=0; column<columns; column++) + { + unsigned char red,green,blue,alphabyte; + switch (targa_header.pixel_size) + { + case 24: + blue = Buf_GetC(buf); + green = Buf_GetC(buf); + red = Buf_GetC(buf); + *pixbuf++ = red; + *pixbuf++ = green; + *pixbuf++ = blue; + *pixbuf++ = 255; + break; + case 32: + blue = Buf_GetC(buf); + green = Buf_GetC(buf); + red = Buf_GetC(buf); + alphabyte = Buf_GetC(buf); + *pixbuf++ = red; + *pixbuf++ = green; + *pixbuf++ = blue; + *pixbuf++ = alphabyte; + break; + } + } + } + } + else if (targa_header.image_type==3) // Uncompressed grayscale images + { + for(row=rows-1; row>=0; row--) + { + realrow = upside_down ? row : rows - 1 - row; + pixbuf = targa_rgba + realrow*columns*4; + + for(column=0; column<columns; column++) + { + unsigned char gray = Buf_GetC(buf); + + *pixbuf++ = gray; // R + *pixbuf++ = gray; // G + *pixbuf++ = gray; // B + *pixbuf++ = 255; // A + } + } + } + else if (targa_header.image_type==10) // Runlength encoded RGB images + { + unsigned char red,green,blue,alphabyte,packetHeader,packetSize,j; + for(row=rows-1; row>=0; row--) + { + //johnfitz -- fix for upside-down targas + realrow = upside_down ? row : rows - 1 - row; + pixbuf = targa_rgba + realrow*columns*4; + //johnfitz + for(column=0; column<columns; ) + { + packetHeader=Buf_GetC(buf); + packetSize = 1 + (packetHeader & 0x7f); + if (packetHeader & 0x80) // run-length packet + { + switch (targa_header.pixel_size) + { + case 24: + blue = Buf_GetC(buf); + green = Buf_GetC(buf); + red = Buf_GetC(buf); + alphabyte = 255; + break; + case 32: + blue = Buf_GetC(buf); + green = Buf_GetC(buf); + red = Buf_GetC(buf); + alphabyte = Buf_GetC(buf); + break; + default: /* avoid compiler warnings */ + blue = red = green = alphabyte = 0; + } + + for(j=0;j<packetSize;j++) + { + *pixbuf++=red; + *pixbuf++=green; + *pixbuf++=blue; + *pixbuf++=alphabyte; + column++; + if (column==columns) // run spans across rows + { + column=0; + if (row>0) + row--; + else + goto breakOut; + //johnfitz -- fix for upside-down targas + realrow = upside_down ? row : rows - 1 - row; + pixbuf = targa_rgba + realrow*columns*4; + //johnfitz + } + } + } + else // non run-length packet + { + for(j=0;j<packetSize;j++) + { + switch (targa_header.pixel_size) + { + case 24: + blue = Buf_GetC(buf); + green = Buf_GetC(buf); + red = Buf_GetC(buf); + *pixbuf++ = red; + *pixbuf++ = green; + *pixbuf++ = blue; + *pixbuf++ = 255; + break; + case 32: + blue = Buf_GetC(buf); + green = Buf_GetC(buf); + red = Buf_GetC(buf); + alphabyte = Buf_GetC(buf); + *pixbuf++ = red; + *pixbuf++ = green; + *pixbuf++ = blue; + *pixbuf++ = alphabyte; + break; + default: /* avoid compiler warnings */ + blue = red = green = alphabyte = 0; + } + column++; + if (column==columns) // pixel packet run spans across rows + { + column=0; + if (row>0) + row--; + else + goto breakOut; + //johnfitz -- fix for upside-down targas + realrow = upside_down ? row : rows - 1 - row; + pixbuf = targa_rgba + realrow*columns*4; + //johnfitz + } + } + } + } + breakOut:; + } + } + + Buf_Free(buf); + fclose(fin); + + *width = (int)(targa_header.width); + *height = (int)(targa_header.height); + return targa_rgba; +} + +//============================================================================== +// +// PCX +// +//============================================================================== + +typedef struct +{ + char signature; + char version; + char encoding; + char bits_per_pixel; + unsigned short xmin,ymin,xmax,ymax; + unsigned short hdpi,vdpi; + byte colortable[48]; + char reserved; + char color_planes; + unsigned short bytes_per_line; + unsigned short palette_type; + char filler[58]; +} pcxheader_t; + +/* +============ +Image_LoadPCX +============ +*/ +byte *Image_LoadPCX (FILE *f, int *width, int *height) +{ + pcxheader_t pcx; + int x, y, w, h, readbyte, runlength, start; + byte *p, *data; + byte palette[768]; + stdio_buffer_t *buf; + + start = ftell (f); //save start of file (since we might be inside a pak file, SEEK_SET might not be the start of the pcx) + + if (!fread(&pcx, sizeof(pcx), 1, f)) + Sys_Error ("Failed reading header from '%s'", loadfilename); + pcx.xmin = (unsigned short)LittleShort (pcx.xmin); + pcx.ymin = (unsigned short)LittleShort (pcx.ymin); + pcx.xmax = (unsigned short)LittleShort (pcx.xmax); + pcx.ymax = (unsigned short)LittleShort (pcx.ymax); + pcx.bytes_per_line = (unsigned short)LittleShort (pcx.bytes_per_line); + + if (pcx.signature != 0x0A) + Sys_Error ("'%s' is not a valid PCX file", loadfilename); + + if (pcx.version != 5) + Sys_Error ("'%s' is version %i, should be 5", loadfilename, pcx.version); + + if (pcx.encoding != 1 || pcx.bits_per_pixel != 8 || pcx.color_planes != 1) + Sys_Error ("'%s' has wrong encoding or bit depth", loadfilename); + + w = pcx.xmax - pcx.xmin + 1; + h = pcx.ymax - pcx.ymin + 1; + + data = (byte *) Hunk_Alloc((w*h+1)*4); //+1 to allow reading padding byte on last line + + //load palette + fseek (f, start + com_filesize - 768, SEEK_SET); + if (!fread (palette, 768, 1, f)) + Sys_Error ("Failed reading palette from '%s'", loadfilename); + + //back to start of image data + fseek (f, start + sizeof(pcx), SEEK_SET); + + buf = Buf_Alloc(f); + + for (y=0; y<h; y++) + { + p = data + y * w * 4; + + for (x=0; x<(pcx.bytes_per_line); ) //read the extra padding byte if necessary + { + readbyte = Buf_GetC(buf); + + if(readbyte >= 0xC0) + { + runlength = readbyte & 0x3F; + readbyte = Buf_GetC(buf); + } + else + runlength = 1; + + while(runlength--) + { + p[0] = palette[readbyte*3]; + p[1] = palette[readbyte*3+1]; + p[2] = palette[readbyte*3+2]; + p[3] = 255; + p += 4; + x++; + } + } + } + + Buf_Free(buf); + fclose(f); + + *width = w; + *height = h; + return data; +} + +//============================================================================== +// +// STB_IMAGE_WRITE +// +//============================================================================== + +static byte *CopyFlipped(const byte *data, int width, int height, int bpp) +{ + int y, rowsize; + byte *flipped; + + rowsize = width * (bpp / 8); + flipped = (byte *) malloc(height * rowsize); + if (!flipped) + return NULL; + + for (y=0; y<height; y++) + { + memcpy(&flipped[y * rowsize], &data[(height - 1 - y) * rowsize], rowsize); + } + return flipped; +} + +/* +============ +Image_WriteJPG -- writes using stb_image_write + +returns true if successful +============ +*/ +qboolean Image_WriteJPG (const char *name, byte *data, int width, int height, int bpp, int quality, qboolean upsidedown) +{ + unsigned error; + char pathname[MAX_OSPATH]; + byte *flipped; + int bytes_per_pixel; + + if (!(bpp == 32 || bpp == 24)) + Sys_Error ("bpp not 24 or 32"); + + bytes_per_pixel = bpp / 8; + + Sys_mkdir (com_gamedir); //if we've switched to a nonexistant gamedir, create it now so we don't crash + q_snprintf (pathname, sizeof(pathname), "%s/%s", com_gamedir, name); + + if (!upsidedown) + { + flipped = CopyFlipped (data, width, height, bpp); + if (!flipped) + return false; + } + else + flipped = data; + + error = stbi_write_jpg (pathname, width, height, bytes_per_pixel, flipped, quality); + if (!upsidedown) + free (flipped); + + return (error != 0); +} + +qboolean Image_WritePNG (const char *name, byte *data, int width, int height, int bpp, qboolean upsidedown) +{ + unsigned error; + char pathname[MAX_OSPATH]; + byte *flipped; + unsigned char *filters; + unsigned char *png; + size_t pngsize; + LodePNGState state; + + if (!(bpp == 32 || bpp == 24)) + Sys_Error("bpp not 24 or 32"); + + Sys_mkdir (com_gamedir); //if we've switched to a nonexistant gamedir, create it now so we don't crash + q_snprintf (pathname, sizeof(pathname), "%s/%s", com_gamedir, name); + + flipped = (!upsidedown)? CopyFlipped (data, width, height, bpp) : data; + filters = (unsigned char *) malloc (height); + if (!filters || !flipped) + { + if (!upsidedown) + free (flipped); + free (filters); + return false; + } + +// set some options for faster compression + lodepng_state_init(&state); + state.encoder.zlibsettings.use_lz77 = 0; + state.encoder.auto_convert = 0; + state.encoder.filter_strategy = LFS_PREDEFINED; + memset(filters, 1, height); //use filter 1; see https://www.w3.org/TR/PNG-Filters.html + state.encoder.predefined_filters = filters; + + if (bpp == 24) + { + state.info_raw.colortype = LCT_RGB; + state.info_png.color.colortype = LCT_RGB; + } + else + { + state.info_raw.colortype = LCT_RGBA; + state.info_png.color.colortype = LCT_RGBA; + } + + error = lodepng_encode (&png, &pngsize, flipped, width, height, &state); + if (error == 0) lodepng_save_file (png, pngsize, pathname); +#ifdef LODEPNG_COMPILE_ERROR_TEXT + else Con_Printf("WritePNG: %s\n", lodepng_error_text (error)); +#endif + + lodepng_state_cleanup (&state); + lodepng_free (png); /* png was allocated by lodepng */ + free (filters); + if (!upsidedown) { + free (flipped); + } + + return (error == 0); +} diff --git a/Quake/image.h b/Quake/image.h new file mode 100644 index 0000000..0b89abb --- /dev/null +++ b/Quake/image.h @@ -0,0 +1,38 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef GL_IMAGE_H +#define GL_IMAGE_H + +//image.h -- image reading / writing + +//be sure to free the hunk after using these loading functions +byte *Image_LoadTGA (FILE *f, int *width, int *height); +byte *Image_LoadPCX (FILE *f, int *width, int *height); +byte *Image_LoadImage (const char *name, int *width, int *height); + +qboolean Image_WriteTGA (const char *name, byte *data, int width, int height, int bpp, qboolean upsidedown); +qboolean Image_WritePNG (const char *name, byte *data, int width, int height, int bpp, qboolean upsidedown); +qboolean Image_WriteJPG (const char *name, byte *data, int width, int height, int bpp, int quality, qboolean upsidedown); + +#endif /* GL_IMAGE_H */ + diff --git a/Quake/in_sdl.c b/Quake/in_sdl.c new file mode 100644 index 0000000..fc145db --- /dev/null +++ b/Quake/in_sdl.c @@ -0,0 +1,1160 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + +static qboolean windowhasfocus = true; //just in case sdl fails to tell us... +static qboolean textmode; + +static cvar_t in_debugkeys = {"in_debugkeys", "0", CVAR_NONE}; + +#ifdef __APPLE__ +/* Mouse acceleration needs to be disabled on OS X */ +#define MACOS_X_ACCELERATION_HACK +#endif + +#ifdef MACOS_X_ACCELERATION_HACK +#include <IOKit/IOTypes.h> +#include <IOKit/hidsystem/IOHIDLib.h> +#include <IOKit/hidsystem/IOHIDParameter.h> +#include <IOKit/hidsystem/event_status_driver.h> +#endif + +// SDL2 Game Controller cvars +cvar_t joy_deadzone_look = { "joy_deadzone_look", "0.175", CVAR_ARCHIVE }; +cvar_t joy_deadzone_move = { "joy_deadzone_move", "0.175", CVAR_ARCHIVE }; +cvar_t joy_outer_threshold_look = { "joy_outer_threshold_look", "0.02", CVAR_ARCHIVE }; +cvar_t joy_outer_threshold_move = { "joy_outer_threshold_move", "0.02", CVAR_ARCHIVE }; +cvar_t joy_deadzone_trigger = { "joy_deadzone_trigger", "0.2", CVAR_ARCHIVE }; +cvar_t joy_sensitivity_yaw = { "joy_sensitivity_yaw", "240", CVAR_ARCHIVE }; +cvar_t joy_sensitivity_pitch = { "joy_sensitivity_pitch", "130", CVAR_ARCHIVE }; +cvar_t joy_invert = { "joy_invert", "0", CVAR_ARCHIVE }; +cvar_t joy_exponent = { "joy_exponent", "2", CVAR_ARCHIVE }; +cvar_t joy_exponent_move = { "joy_exponent_move", "2", CVAR_ARCHIVE }; +cvar_t joy_swapmovelook = { "joy_swapmovelook", "0", CVAR_ARCHIVE }; +cvar_t joy_enable = { "joy_enable", "1", CVAR_ARCHIVE }; + +#if defined(USE_SDL2) +static SDL_JoystickID joy_active_instaceid = -1; +static SDL_GameController *joy_active_controller = NULL; +#endif + +static qboolean no_mouse = false; + +static int buttonremap[] = +{ + K_MOUSE1, + K_MOUSE3, /* right button */ + K_MOUSE2, /* middle button */ +#if !defined(USE_SDL2) /* mousewheel up/down not counted as buttons in SDL2 */ + K_MWHEELUP, + K_MWHEELDOWN, +#endif + K_MOUSE4, + K_MOUSE5 +}; + +/* total accumulated mouse movement since last frame */ +static int total_dx, total_dy = 0; + +static int SDLCALL IN_FilterMouseEvents (const SDL_Event *event) +{ + switch (event->type) + { + case SDL_MOUSEMOTION: + // case SDL_MOUSEBUTTONDOWN: + // case SDL_MOUSEBUTTONUP: + return 0; + } + + return 1; +} + +#if defined(USE_SDL2) +static int SDLCALL IN_SDL2_FilterMouseEvents (void *userdata, SDL_Event *event) +{ + return IN_FilterMouseEvents (event); +} +#endif + +static void IN_BeginIgnoringMouseEvents(void) +{ +#if defined(USE_SDL2) + SDL_EventFilter currentFilter = NULL; + void *currentUserdata = NULL; + SDL_GetEventFilter(¤tFilter, ¤tUserdata); + + if (currentFilter != IN_SDL2_FilterMouseEvents) + SDL_SetEventFilter(IN_SDL2_FilterMouseEvents, NULL); +#else + if (SDL_GetEventFilter() != IN_FilterMouseEvents) + SDL_SetEventFilter(IN_FilterMouseEvents); +#endif +} + +static void IN_EndIgnoringMouseEvents(void) +{ +#if defined(USE_SDL2) + SDL_EventFilter currentFilter; + void *currentUserdata; + if (SDL_GetEventFilter(¤tFilter, ¤tUserdata) == SDL_TRUE) + SDL_SetEventFilter(NULL, NULL); +#else + if (SDL_GetEventFilter() != NULL) + SDL_SetEventFilter(NULL); +#endif +} + +#ifdef MACOS_X_ACCELERATION_HACK +static cvar_t in_disablemacosxmouseaccel = {"in_disablemacosxmouseaccel", "1", CVAR_ARCHIVE}; +static double originalMouseSpeed = -1.0; + +static io_connect_t IN_GetIOHandle(void) +{ + io_connect_t iohandle = MACH_PORT_NULL; + io_service_t iohidsystem = MACH_PORT_NULL; + mach_port_t masterport; + kern_return_t status; + + status = IOMasterPort(MACH_PORT_NULL, &masterport); + if (status != KERN_SUCCESS) + return 0; + + iohidsystem = IORegistryEntryFromPath(masterport, kIOServicePlane ":/IOResources/IOHIDSystem"); + if (!iohidsystem) + return 0; + + status = IOServiceOpen(iohidsystem, mach_task_self(), kIOHIDParamConnectType, &iohandle); + IOObjectRelease(iohidsystem); + + return iohandle; +} + +static void IN_DisableOSXMouseAccel (void) +{ + io_connect_t mouseDev = IN_GetIOHandle(); + if (mouseDev != 0) + { + if (IOHIDGetAccelerationWithKey(mouseDev, CFSTR(kIOHIDMouseAccelerationType), &originalMouseSpeed) == kIOReturnSuccess) + { + if (IOHIDSetAccelerationWithKey(mouseDev, CFSTR(kIOHIDMouseAccelerationType), -1.0) != kIOReturnSuccess) + { + Cvar_Set("in_disablemacosxmouseaccel", "0"); + Con_Printf("WARNING: Could not disable mouse acceleration (failed at IOHIDSetAccelerationWithKey).\n"); + } + } + else + { + Cvar_Set("in_disablemacosxmouseaccel", "0"); + Con_Printf("WARNING: Could not disable mouse acceleration (failed at IOHIDGetAccelerationWithKey).\n"); + } + IOServiceClose(mouseDev); + } + else + { + Cvar_Set("in_disablemacosxmouseaccel", "0"); + Con_Printf("WARNING: Could not disable mouse acceleration (failed at IO_GetIOHandle).\n"); + } +} + +static void IN_ReenableOSXMouseAccel (void) +{ + io_connect_t mouseDev = IN_GetIOHandle(); + if (mouseDev != 0) + { + if (IOHIDSetAccelerationWithKey(mouseDev, CFSTR(kIOHIDMouseAccelerationType), originalMouseSpeed) != kIOReturnSuccess) + Con_Printf("WARNING: Could not re-enable mouse acceleration (failed at IOHIDSetAccelerationWithKey).\n"); + IOServiceClose(mouseDev); + } + else + { + Con_Printf("WARNING: Could not re-enable mouse acceleration (failed at IO_GetIOHandle).\n"); + } + originalMouseSpeed = -1; +} +#endif /* MACOS_X_ACCELERATION_HACK */ + + +void IN_Activate (void) +{ + if (no_mouse) + return; + +#ifdef MACOS_X_ACCELERATION_HACK + /* Save the status of mouse acceleration */ + if (originalMouseSpeed == -1 && in_disablemacosxmouseaccel.value) + IN_DisableOSXMouseAccel(); +#endif + +#if defined(USE_SDL2) +#ifdef __APPLE__ + { + // Work around https://github.com/sezero/quakespasm/issues/48 + int width, height; + SDL_GetWindowSize((SDL_Window*) VID_GetWindow(), &width, &height); + SDL_WarpMouseInWindow((SDL_Window*) VID_GetWindow(), width / 2, height / 2); + } +#endif + + if (SDL_SetRelativeMouseMode(SDL_TRUE) != 0) + { + Con_Printf("WARNING: SDL_SetRelativeMouseMode(SDL_TRUE) failed.\n"); + } +#else + if (SDL_WM_GrabInput(SDL_GRAB_QUERY) != SDL_GRAB_ON) + { + SDL_WM_GrabInput(SDL_GRAB_ON); + if (SDL_WM_GrabInput(SDL_GRAB_QUERY) != SDL_GRAB_ON) + Con_Printf("WARNING: SDL_WM_GrabInput(SDL_GRAB_ON) failed.\n"); + } + + if (SDL_ShowCursor(SDL_QUERY) != SDL_DISABLE) + { + SDL_ShowCursor(SDL_DISABLE); + if (SDL_ShowCursor(SDL_QUERY) != SDL_DISABLE) + Con_Printf("WARNING: SDL_ShowCursor(SDL_DISABLE) failed.\n"); + } +#endif + + IN_EndIgnoringMouseEvents(); + + total_dx = 0; + total_dy = 0; +} + +void IN_Deactivate (qboolean free_cursor) +{ + if (no_mouse) + return; + +#ifdef MACOS_X_ACCELERATION_HACK + if (originalMouseSpeed != -1) + IN_ReenableOSXMouseAccel(); +#endif + + if (free_cursor) + { +#if defined(USE_SDL2) + SDL_SetRelativeMouseMode(SDL_FALSE); +#else + if (SDL_WM_GrabInput(SDL_GRAB_QUERY) != SDL_GRAB_OFF) + { + SDL_WM_GrabInput(SDL_GRAB_OFF); + if (SDL_WM_GrabInput(SDL_GRAB_QUERY) != SDL_GRAB_OFF) + Con_Printf("WARNING: SDL_WM_GrabInput(SDL_GRAB_OFF) failed.\n"); + } + + if (SDL_ShowCursor(SDL_QUERY) != SDL_ENABLE) + { + SDL_ShowCursor(SDL_ENABLE); + if (SDL_ShowCursor(SDL_QUERY) != SDL_ENABLE) + Con_Printf("WARNING: SDL_ShowCursor(SDL_ENABLE) failed.\n"); + } +#endif + } + + /* discard all mouse events when input is deactivated */ + IN_BeginIgnoringMouseEvents(); +} + +void IN_StartupJoystick (void) +{ +#if defined(USE_SDL2) + int i; + int nummappings; + char controllerdb[MAX_OSPATH]; + SDL_GameController *gamecontroller; + + if (COM_CheckParm("-nojoy")) + return; + + if (SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER) == -1 ) + { + Con_Warning("could not initialize SDL Game Controller\n"); + return; + } + + // Load additional SDL2 controller definitions from gamecontrollerdb.txt + q_snprintf (controllerdb, sizeof(controllerdb), "%s/gamecontrollerdb.txt", com_basedir); + nummappings = SDL_GameControllerAddMappingsFromFile(controllerdb); + if (nummappings > 0) + Con_Printf("%d mappings loaded from gamecontrollerdb.txt\n", nummappings); + + // Also try host_parms->userdir + if (host_parms->userdir != host_parms->basedir) + { + q_snprintf (controllerdb, sizeof(controllerdb), "%s/gamecontrollerdb.txt", host_parms->userdir); + nummappings = SDL_GameControllerAddMappingsFromFile(controllerdb); + if (nummappings > 0) + Con_Printf("%d mappings loaded from gamecontrollerdb.txt\n", nummappings); + } + + for (i = 0; i < SDL_NumJoysticks(); i++) + { + const char *joyname = SDL_JoystickNameForIndex(i); + if ( SDL_IsGameController(i) ) + { + const char *controllername = SDL_GameControllerNameForIndex(i); + gamecontroller = SDL_GameControllerOpen(i); + if (gamecontroller) + { + Con_Printf("detected controller: %s\n", controllername != NULL ? controllername : "NULL"); + + joy_active_instaceid = SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(gamecontroller)); + joy_active_controller = gamecontroller; + break; + } + else + { + Con_Warning("failed to open controller: %s\n", controllername != NULL ? controllername : "NULL"); + } + } + else + { + Con_Warning("joystick missing controller mappings: %s\n", joyname != NULL ? joyname : "NULL" ); + } + } +#endif +} + +void IN_ShutdownJoystick (void) +{ +#if defined(USE_SDL2) + SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER); +#endif +} + +void IN_Init (void) +{ + textmode = Key_TextEntry(); + +#if !defined(USE_SDL2) + SDL_EnableUNICODE (textmode); + if (SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL) == -1) + Con_Printf("Warning: SDL_EnableKeyRepeat() failed.\n"); +#else + if (textmode) + SDL_StartTextInput(); + else + SDL_StopTextInput(); +#endif + if (safemode || COM_CheckParm("-nomouse")) + { + no_mouse = true; + /* discard all mouse events when input is deactivated */ + IN_BeginIgnoringMouseEvents(); + } + +#ifdef MACOS_X_ACCELERATION_HACK + Cvar_RegisterVariable(&in_disablemacosxmouseaccel); +#endif + Cvar_RegisterVariable(&in_debugkeys); + Cvar_RegisterVariable(&joy_sensitivity_yaw); + Cvar_RegisterVariable(&joy_sensitivity_pitch); + Cvar_RegisterVariable(&joy_deadzone_look); + Cvar_RegisterVariable(&joy_deadzone_move); + Cvar_RegisterVariable(&joy_outer_threshold_look); + Cvar_RegisterVariable(&joy_outer_threshold_move); + Cvar_RegisterVariable(&joy_deadzone_trigger); + Cvar_RegisterVariable(&joy_invert); + Cvar_RegisterVariable(&joy_exponent); + Cvar_RegisterVariable(&joy_exponent_move); + Cvar_RegisterVariable(&joy_swapmovelook); + Cvar_RegisterVariable(&joy_enable); + + IN_Activate(); + IN_StartupJoystick(); +} + +void IN_Shutdown (void) +{ + IN_Deactivate(true); + IN_ShutdownJoystick(); +} + +extern cvar_t cl_maxpitch; /* johnfitz -- variable pitch clamping */ +extern cvar_t cl_minpitch; /* johnfitz -- variable pitch clamping */ + + +void IN_MouseMotion(int dx, int dy) +{ + if (!windowhasfocus) + dx = dy = 0; //don't change view angles etc while unfocused. + total_dx += dx; + total_dy += dy; +} + +#if defined(USE_SDL2) +typedef struct joyaxis_s +{ + float x; + float y; +} joyaxis_t; + +typedef struct joy_buttonstate_s +{ + qboolean buttondown[SDL_CONTROLLER_BUTTON_MAX]; +} joybuttonstate_t; + +typedef struct axisstate_s +{ + float axisvalue[SDL_CONTROLLER_AXIS_MAX]; // normalized to +-1 +} joyaxisstate_t; + +static joybuttonstate_t joy_buttonstate; +static joyaxisstate_t joy_axisstate; + +static double joy_buttontimer[SDL_CONTROLLER_BUTTON_MAX]; +static double joy_emulatedkeytimer[6]; + +#ifdef __WATCOMC__ /* OW1.9 doesn't have powf() / sqrtf() */ +#define powf pow +#define sqrtf sqrt +#endif + +/* +================ +IN_AxisMagnitude + +Returns the vector length of the given joystick axis +================ +*/ +static vec_t IN_AxisMagnitude(joyaxis_t axis) +{ + vec_t magnitude = sqrtf((axis.x * axis.x) + (axis.y * axis.y)); + return magnitude; +} + +/* +================ +IN_ApplyEasing + +assumes axis values are in [-1, 1] and the vector magnitude has been clamped at 1. +Raises the axis values to the given exponent, keeping signs. +================ +*/ +static joyaxis_t IN_ApplyEasing(joyaxis_t axis, float exponent) +{ + joyaxis_t result = {0}; + vec_t eased_magnitude; + vec_t magnitude = IN_AxisMagnitude(axis); + + if (magnitude == 0) + return result; + + eased_magnitude = powf(magnitude, exponent); + + result.x = axis.x * (eased_magnitude / magnitude); + result.y = axis.y * (eased_magnitude / magnitude); + return result; +} + +/* +================ +IN_ApplyDeadzone + +in: raw joystick axis values converted to floats in +-1 +out: applies a circular inner deadzone and a circular outer threshold and clamps the magnitude at 1 + (my 360 controller is slightly non-circular and the stick travels further on the diagonals) + +deadzone is expected to satisfy 0 < deadzone < 1 - outer_threshold +outer_threshold is expected to satisfy 0 < outer_threshold < 1 - deadzone + +from https://github.com/jeremiah-sypult/Quakespasm-Rift +and adapted from http://www.third-helix.com/2013/04/12/doing-thumbstick-dead-zones-right.html +================ +*/ +static joyaxis_t IN_ApplyDeadzone(joyaxis_t axis, float deadzone, float outer_threshold) +{ + joyaxis_t result = {0}; + vec_t magnitude = IN_AxisMagnitude(axis); + + if ( magnitude > deadzone ) { + // rescale the magnitude so deadzone becomes 0, and 1-outer_threshold becomes 1 + const vec_t new_magnitude = q_min(1.0, (magnitude - deadzone) / (1.0 - deadzone - outer_threshold)); + const vec_t scale = new_magnitude / magnitude; + result.x = axis.x * scale; + result.y = axis.y * scale; + } + + return result; +} + +/* +================ +IN_KeyForControllerButton +================ +*/ +static int IN_KeyForControllerButton(SDL_GameControllerButton button) +{ + switch (button) + { + case SDL_CONTROLLER_BUTTON_A: return K_ABUTTON; + case SDL_CONTROLLER_BUTTON_B: return K_BBUTTON; + case SDL_CONTROLLER_BUTTON_X: return K_XBUTTON; + case SDL_CONTROLLER_BUTTON_Y: return K_YBUTTON; + case SDL_CONTROLLER_BUTTON_BACK: return K_TAB; + case SDL_CONTROLLER_BUTTON_START: return K_ESCAPE; + case SDL_CONTROLLER_BUTTON_LEFTSTICK: return K_LTHUMB; + case SDL_CONTROLLER_BUTTON_RIGHTSTICK: return K_RTHUMB; + case SDL_CONTROLLER_BUTTON_LEFTSHOULDER: return K_LSHOULDER; + case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: return K_RSHOULDER; + case SDL_CONTROLLER_BUTTON_DPAD_UP: return K_UPARROW; + case SDL_CONTROLLER_BUTTON_DPAD_DOWN: return K_DOWNARROW; + case SDL_CONTROLLER_BUTTON_DPAD_LEFT: return K_LEFTARROW; + case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: return K_RIGHTARROW; + default: return 0; + } +} + +/* +================ +IN_JoyKeyEvent + +Sends a Key_Event if a unpressed -> pressed or pressed -> unpressed transition occurred, +and generates key repeats if the button is held down. + +Adapted from DarkPlaces by lordhavoc +================ +*/ +static void IN_JoyKeyEvent(qboolean wasdown, qboolean isdown, int key, double *timer) +{ + // we can't use `realtime` for key repeats because it is not monotomic + const double currenttime = Sys_DoubleTime(); + + if (wasdown) + { + if (isdown) + { + if (currenttime >= *timer) + { + *timer = currenttime + 0.1; + Key_Event(key, true); + } + } + else + { + *timer = 0; + Key_Event(key, false); + } + } + else + { + if (isdown) + { + *timer = currenttime + 0.5; + Key_Event(key, true); + } + } +} +#endif + +/* +================ +IN_Commands + +Emit key events for game controller buttons, including emulated buttons for analog sticks/triggers +================ +*/ +void IN_Commands (void) +{ +#if defined(USE_SDL2) + joyaxisstate_t newaxisstate; + int i; + const float stickthreshold = 0.9; + const float triggerthreshold = joy_deadzone_trigger.value; + + if (!joy_enable.value) + return; + + if (!joy_active_controller) + return; + + // emit key events for controller buttons + for (i = 0; i < SDL_CONTROLLER_BUTTON_MAX; i++) + { + qboolean newstate = SDL_GameControllerGetButton(joy_active_controller, (SDL_GameControllerButton)i); + qboolean oldstate = joy_buttonstate.buttondown[i]; + + joy_buttonstate.buttondown[i] = newstate; + + // NOTE: This can cause a reentrant call of IN_Commands, via SCR_ModalMessage when confirming a new game. + IN_JoyKeyEvent(oldstate, newstate, IN_KeyForControllerButton((SDL_GameControllerButton)i), &joy_buttontimer[i]); + } + + for (i = 0; i < SDL_CONTROLLER_AXIS_MAX; i++) + { + newaxisstate.axisvalue[i] = SDL_GameControllerGetAxis(joy_active_controller, (SDL_GameControllerAxis)i) / 32768.0f; + } + + // emit emulated arrow keys so the analog sticks can be used in the menu + if (key_dest != key_game) + { + IN_JoyKeyEvent(joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTX] < -stickthreshold, newaxisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTX] < -stickthreshold, K_LEFTARROW, &joy_emulatedkeytimer[0]); + IN_JoyKeyEvent(joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTX] > stickthreshold, newaxisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTX] > stickthreshold, K_RIGHTARROW, &joy_emulatedkeytimer[1]); + IN_JoyKeyEvent(joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTY] < -stickthreshold, newaxisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTY] < -stickthreshold, K_UPARROW, &joy_emulatedkeytimer[2]); + IN_JoyKeyEvent(joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTY] > stickthreshold, newaxisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTY] > stickthreshold, K_DOWNARROW, &joy_emulatedkeytimer[3]); + } + + // emit emulated keys for the analog triggers + IN_JoyKeyEvent(joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_TRIGGERLEFT] > triggerthreshold, newaxisstate.axisvalue[SDL_CONTROLLER_AXIS_TRIGGERLEFT] > triggerthreshold, K_LTRIGGER, &joy_emulatedkeytimer[4]); + IN_JoyKeyEvent(joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_TRIGGERRIGHT] > triggerthreshold, newaxisstate.axisvalue[SDL_CONTROLLER_AXIS_TRIGGERRIGHT] > triggerthreshold, K_RTRIGGER, &joy_emulatedkeytimer[5]); + + joy_axisstate = newaxisstate; +#endif +} + +/* +================ +IN_JoyMove +================ +*/ +void IN_JoyMove (usercmd_t *cmd) +{ +#if defined(USE_SDL2) + float speed; + joyaxis_t moveRaw, moveDeadzone, moveEased; + joyaxis_t lookRaw, lookDeadzone, lookEased; + extern cvar_t sv_maxspeed; + + if (!joy_enable.value) + return; + + if (!joy_active_controller) + return; + + if (cl.paused || key_dest != key_game) + return; + + moveRaw.x = joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTX]; + moveRaw.y = joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_LEFTY]; + lookRaw.x = joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_RIGHTX]; + lookRaw.y = joy_axisstate.axisvalue[SDL_CONTROLLER_AXIS_RIGHTY]; + + if (joy_swapmovelook.value) + { + joyaxis_t temp = moveRaw; + moveRaw = lookRaw; + lookRaw = temp; + } + + moveDeadzone = IN_ApplyDeadzone(moveRaw, joy_deadzone_move.value, joy_outer_threshold_move.value); + lookDeadzone = IN_ApplyDeadzone(lookRaw, joy_deadzone_look.value, joy_outer_threshold_look.value); + + moveEased = IN_ApplyEasing(moveDeadzone, joy_exponent_move.value); + lookEased = IN_ApplyEasing(lookDeadzone, joy_exponent.value); + + if ((in_speed.state & 1) ^ (cl_alwaysrun.value != 0.0 || cl_forwardspeed.value >= sv_maxspeed.value)) + // running + speed = sv_maxspeed.value; + else if (cl_forwardspeed.value >= sv_maxspeed.value) + // not running, with always run = vanilla + speed = q_min(sv_maxspeed.value, cl_forwardspeed.value / cl_movespeedkey.value); + else + // not running, with always run = off or quakespasm + speed = cl_forwardspeed.value; + + cmd->sidemove += speed * moveEased.x; + cmd->forwardmove -= speed * moveEased.y; + + cl.viewangles[YAW] -= lookEased.x * joy_sensitivity_yaw.value * host_frametime; + cl.viewangles[PITCH] += lookEased.y * joy_sensitivity_pitch.value * (joy_invert.value ? -1.0 : 1.0) * host_frametime; + + if (lookEased.x != 0 || lookEased.y != 0) + V_StopPitchDrift(); + + /* johnfitz -- variable pitch clamping */ + if (cl.viewangles[PITCH] > cl_maxpitch.value) + cl.viewangles[PITCH] = cl_maxpitch.value; + if (cl.viewangles[PITCH] < cl_minpitch.value) + cl.viewangles[PITCH] = cl_minpitch.value; +#endif +} + +void IN_MouseMove(usercmd_t *cmd) +{ + float dmx, dmy; + + dmx = total_dx * sensitivity.value; + dmy = total_dy * sensitivity.value; + + total_dx = 0; + total_dy = 0; + + // do pause check after resetting total_d* so mouse movements during pause don't accumulate + if (cl.paused || key_dest != key_game) + return; + + if ( (in_strafe.state & 1) || (lookstrafe.value && (in_mlook.state & 1) )) + cmd->sidemove += m_side.value * dmx; + else + cl.viewangles[YAW] -= m_yaw.value * dmx; + + if (in_mlook.state & 1) + { + if (dmx || dmy) + V_StopPitchDrift (); + } + + if ( (in_mlook.state & 1) && !(in_strafe.state & 1)) + { + cl.viewangles[PITCH] += m_pitch.value * dmy; + /* johnfitz -- variable pitch clamping */ + if (cl.viewangles[PITCH] > cl_maxpitch.value) + cl.viewangles[PITCH] = cl_maxpitch.value; + if (cl.viewangles[PITCH] < cl_minpitch.value) + cl.viewangles[PITCH] = cl_minpitch.value; + } + else + { + if ((in_strafe.state & 1) && noclip_anglehack) + cmd->upmove -= m_forward.value * dmy; + else + cmd->forwardmove -= m_forward.value * dmy; + } +} + +void IN_Move(usercmd_t *cmd) +{ + IN_JoyMove(cmd); + IN_MouseMove(cmd); +} + +void IN_ClearStates (void) +{ +} + +void IN_UpdateInputMode (void) +{ + qboolean want_textmode = Key_TextEntry(); + if (textmode != want_textmode) + { + textmode = want_textmode; +#if !defined(USE_SDL2) + SDL_EnableUNICODE(textmode); + if (in_debugkeys.value) + Con_Printf("SDL_EnableUNICODE %d time: %g\n", textmode, Sys_DoubleTime()); +#else + if (textmode) + { + SDL_StartTextInput(); + if (in_debugkeys.value) + Con_Printf("SDL_StartTextInput time: %g\n", Sys_DoubleTime()); + } + else + { + SDL_StopTextInput(); + if (in_debugkeys.value) + Con_Printf("SDL_StopTextInput time: %g\n", Sys_DoubleTime()); + } +#endif + } +} + +#if !defined(USE_SDL2) +static inline int IN_SDL_KeysymToQuakeKey(SDLKey sym) +{ + if (sym > SDLK_SPACE && sym < SDLK_DELETE) + return sym; + + switch (sym) + { + case SDLK_TAB: return K_TAB; + case SDLK_RETURN: return K_ENTER; + case SDLK_ESCAPE: return K_ESCAPE; + case SDLK_SPACE: return K_SPACE; + + case SDLK_BACKSPACE: return K_BACKSPACE; + case SDLK_UP: return K_UPARROW; + case SDLK_DOWN: return K_DOWNARROW; + case SDLK_LEFT: return K_LEFTARROW; + case SDLK_RIGHT: return K_RIGHTARROW; + + case SDLK_LALT: return K_ALT; + case SDLK_RALT: return K_ALT; + case SDLK_LCTRL: return K_CTRL; + case SDLK_RCTRL: return K_CTRL; + case SDLK_LSHIFT: return K_SHIFT; + case SDLK_RSHIFT: return K_SHIFT; + + case SDLK_F1: return K_F1; + case SDLK_F2: return K_F2; + case SDLK_F3: return K_F3; + case SDLK_F4: return K_F4; + case SDLK_F5: return K_F5; + case SDLK_F6: return K_F6; + case SDLK_F7: return K_F7; + case SDLK_F8: return K_F8; + case SDLK_F9: return K_F9; + case SDLK_F10: return K_F10; + case SDLK_F11: return K_F11; + case SDLK_F12: return K_F12; + case SDLK_INSERT: return K_INS; + case SDLK_DELETE: return K_DEL; + case SDLK_PAGEDOWN: return K_PGDN; + case SDLK_PAGEUP: return K_PGUP; + case SDLK_HOME: return K_HOME; + case SDLK_END: return K_END; + + case SDLK_NUMLOCK: return K_KP_NUMLOCK; + case SDLK_KP_DIVIDE: return K_KP_SLASH; + case SDLK_KP_MULTIPLY: return K_KP_STAR; + case SDLK_KP_MINUS:return K_KP_MINUS; + case SDLK_KP7: return K_KP_HOME; + case SDLK_KP8: return K_KP_UPARROW; + case SDLK_KP9: return K_KP_PGUP; + case SDLK_KP_PLUS: return K_KP_PLUS; + case SDLK_KP4: return K_KP_LEFTARROW; + case SDLK_KP5: return K_KP_5; + case SDLK_KP6: return K_KP_RIGHTARROW; + case SDLK_KP1: return K_KP_END; + case SDLK_KP2: return K_KP_DOWNARROW; + case SDLK_KP3: return K_KP_PGDN; + case SDLK_KP_ENTER: return K_KP_ENTER; + case SDLK_KP0: return K_KP_INS; + case SDLK_KP_PERIOD: return K_KP_DEL; + + case SDLK_LMETA: return K_COMMAND; + case SDLK_RMETA: return K_COMMAND; + + case SDLK_BREAK: return K_PAUSE; + case SDLK_PAUSE: return K_PAUSE; + + case SDLK_WORLD_18: return '~'; // the '²' key + + default: return 0; + } +} +#endif + +#if defined(USE_SDL2) +static inline int IN_SDL2_ScancodeToQuakeKey(SDL_Scancode scancode) +{ + switch (scancode) + { + case SDL_SCANCODE_TAB: return K_TAB; + case SDL_SCANCODE_RETURN: return K_ENTER; + case SDL_SCANCODE_RETURN2: return K_ENTER; + case SDL_SCANCODE_ESCAPE: return K_ESCAPE; + case SDL_SCANCODE_SPACE: return K_SPACE; + + case SDL_SCANCODE_A: return 'a'; + case SDL_SCANCODE_B: return 'b'; + case SDL_SCANCODE_C: return 'c'; + case SDL_SCANCODE_D: return 'd'; + case SDL_SCANCODE_E: return 'e'; + case SDL_SCANCODE_F: return 'f'; + case SDL_SCANCODE_G: return 'g'; + case SDL_SCANCODE_H: return 'h'; + case SDL_SCANCODE_I: return 'i'; + case SDL_SCANCODE_J: return 'j'; + case SDL_SCANCODE_K: return 'k'; + case SDL_SCANCODE_L: return 'l'; + case SDL_SCANCODE_M: return 'm'; + case SDL_SCANCODE_N: return 'n'; + case SDL_SCANCODE_O: return 'o'; + case SDL_SCANCODE_P: return 'p'; + case SDL_SCANCODE_Q: return 'q'; + case SDL_SCANCODE_R: return 'r'; + case SDL_SCANCODE_S: return 's'; + case SDL_SCANCODE_T: return 't'; + case SDL_SCANCODE_U: return 'u'; + case SDL_SCANCODE_V: return 'v'; + case SDL_SCANCODE_W: return 'w'; + case SDL_SCANCODE_X: return 'x'; + case SDL_SCANCODE_Y: return 'y'; + case SDL_SCANCODE_Z: return 'z'; + + case SDL_SCANCODE_1: return '1'; + case SDL_SCANCODE_2: return '2'; + case SDL_SCANCODE_3: return '3'; + case SDL_SCANCODE_4: return '4'; + case SDL_SCANCODE_5: return '5'; + case SDL_SCANCODE_6: return '6'; + case SDL_SCANCODE_7: return '7'; + case SDL_SCANCODE_8: return '8'; + case SDL_SCANCODE_9: return '9'; + case SDL_SCANCODE_0: return '0'; + + case SDL_SCANCODE_MINUS: return '-'; + case SDL_SCANCODE_EQUALS: return '='; + case SDL_SCANCODE_LEFTBRACKET: return '['; + case SDL_SCANCODE_RIGHTBRACKET: return ']'; + case SDL_SCANCODE_BACKSLASH: return '\\'; + case SDL_SCANCODE_NONUSHASH: return '#'; + case SDL_SCANCODE_SEMICOLON: return ';'; + case SDL_SCANCODE_APOSTROPHE: return '\''; + case SDL_SCANCODE_GRAVE: return '`'; + case SDL_SCANCODE_COMMA: return ','; + case SDL_SCANCODE_PERIOD: return '.'; + case SDL_SCANCODE_SLASH: return '/'; + case SDL_SCANCODE_NONUSBACKSLASH: return '\\'; + + case SDL_SCANCODE_BACKSPACE: return K_BACKSPACE; + case SDL_SCANCODE_UP: return K_UPARROW; + case SDL_SCANCODE_DOWN: return K_DOWNARROW; + case SDL_SCANCODE_LEFT: return K_LEFTARROW; + case SDL_SCANCODE_RIGHT: return K_RIGHTARROW; + + case SDL_SCANCODE_LALT: return K_ALT; + case SDL_SCANCODE_RALT: return K_ALT; + case SDL_SCANCODE_LCTRL: return K_CTRL; + case SDL_SCANCODE_RCTRL: return K_CTRL; + case SDL_SCANCODE_LSHIFT: return K_SHIFT; + case SDL_SCANCODE_RSHIFT: return K_SHIFT; + + case SDL_SCANCODE_F1: return K_F1; + case SDL_SCANCODE_F2: return K_F2; + case SDL_SCANCODE_F3: return K_F3; + case SDL_SCANCODE_F4: return K_F4; + case SDL_SCANCODE_F5: return K_F5; + case SDL_SCANCODE_F6: return K_F6; + case SDL_SCANCODE_F7: return K_F7; + case SDL_SCANCODE_F8: return K_F8; + case SDL_SCANCODE_F9: return K_F9; + case SDL_SCANCODE_F10: return K_F10; + case SDL_SCANCODE_F11: return K_F11; + case SDL_SCANCODE_F12: return K_F12; + case SDL_SCANCODE_INSERT: return K_INS; + case SDL_SCANCODE_DELETE: return K_DEL; + case SDL_SCANCODE_PAGEDOWN: return K_PGDN; + case SDL_SCANCODE_PAGEUP: return K_PGUP; + case SDL_SCANCODE_HOME: return K_HOME; + case SDL_SCANCODE_END: return K_END; + + case SDL_SCANCODE_NUMLOCKCLEAR: return K_KP_NUMLOCK; + case SDL_SCANCODE_KP_DIVIDE: return K_KP_SLASH; + case SDL_SCANCODE_KP_MULTIPLY: return K_KP_STAR; + case SDL_SCANCODE_KP_MINUS: return K_KP_MINUS; + case SDL_SCANCODE_KP_7: return K_KP_HOME; + case SDL_SCANCODE_KP_8: return K_KP_UPARROW; + case SDL_SCANCODE_KP_9: return K_KP_PGUP; + case SDL_SCANCODE_KP_PLUS: return K_KP_PLUS; + case SDL_SCANCODE_KP_4: return K_KP_LEFTARROW; + case SDL_SCANCODE_KP_5: return K_KP_5; + case SDL_SCANCODE_KP_6: return K_KP_RIGHTARROW; + case SDL_SCANCODE_KP_1: return K_KP_END; + case SDL_SCANCODE_KP_2: return K_KP_DOWNARROW; + case SDL_SCANCODE_KP_3: return K_KP_PGDN; + case SDL_SCANCODE_KP_ENTER: return K_KP_ENTER; + case SDL_SCANCODE_KP_0: return K_KP_INS; + case SDL_SCANCODE_KP_PERIOD: return K_KP_DEL; + + case SDL_SCANCODE_LGUI: return K_COMMAND; + case SDL_SCANCODE_RGUI: return K_COMMAND; + + case SDL_SCANCODE_PAUSE: return K_PAUSE; + + default: return 0; + } +} +#endif + +#if defined(USE_SDL2) +static void IN_DebugTextEvent(SDL_Event *event) +{ + Con_Printf ("SDL_TEXTINPUT '%s' time: %g\n", event->text.text, Sys_DoubleTime()); +} +#endif + +static void IN_DebugKeyEvent(SDL_Event *event) +{ + const char *eventtype = (event->key.state == SDL_PRESSED) ? "SDL_KEYDOWN" : "SDL_KEYUP"; +#if defined(USE_SDL2) + Con_Printf ("%s scancode: '%s' keycode: '%s' time: %g\n", + eventtype, + SDL_GetScancodeName(event->key.keysym.scancode), + SDL_GetKeyName(event->key.keysym.sym), + Sys_DoubleTime()); +#else + Con_Printf ("%s sym: '%s' unicode: %04x time: %g\n", + eventtype, + SDL_GetKeyName(event->key.keysym.sym), + (int)event->key.keysym.unicode, + Sys_DoubleTime()); +#endif +} + +void IN_SendKeyEvents (void) +{ + SDL_Event event; + int key; + qboolean down; + + while (SDL_PollEvent(&event)) + { + switch (event.type) + { +#if defined(USE_SDL2) + case SDL_WINDOWEVENT: + if (event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED) + { + windowhasfocus = true; + S_UnblockSound(); + } + else if (event.window.event == SDL_WINDOWEVENT_FOCUS_LOST) + { + windowhasfocus = false; + S_BlockSound(); + } + break; +#else + case SDL_ACTIVEEVENT: + if (event.active.state & (SDL_APPINPUTFOCUS|SDL_APPACTIVE)) + { + if (event.active.gain) + { + windowhasfocus = true; + S_UnblockSound(); + } + else + { + windowhasfocus = false; + S_BlockSound(); + } + } + break; +#endif +#if defined(USE_SDL2) + case SDL_TEXTINPUT: + if (in_debugkeys.value) + IN_DebugTextEvent(&event); + + // SDL2: We use SDL_TEXTINPUT for typing in the console / chat. + // SDL2 uses the local keyboard layout and handles modifiers + // (shift for uppercase, etc.) for us. + { + unsigned char *ch; + for (ch = (unsigned char *)event.text.text; *ch; ch++) + if ((*ch & ~0x7F) == 0) + Char_Event (*ch); + } + break; +#endif + case SDL_KEYDOWN: + case SDL_KEYUP: + down = (event.key.state == SDL_PRESSED); + + if (in_debugkeys.value) + IN_DebugKeyEvent(&event); + +#if defined(USE_SDL2) + // SDL2: we interpret the keyboard as the US layout, so keybindings + // are based on key position, not the label on the key cap. + key = IN_SDL2_ScancodeToQuakeKey(event.key.keysym.scancode); +#else + key = IN_SDL_KeysymToQuakeKey(event.key.keysym.sym); +#endif + + // also pass along the underlying keycode using the proper current layout for Y/N prompts. + Key_EventWithKeycode (key, down, event.key.keysym.sym); + +#if !defined(USE_SDL2) + if (down && (event.key.keysym.unicode & ~0x7F) == 0) + Char_Event (event.key.keysym.unicode); +#endif + break; + + case SDL_MOUSEBUTTONDOWN: + case SDL_MOUSEBUTTONUP: + if (event.button.button < 1 || + event.button.button > Q_COUNTOF(buttonremap)) + { + Con_Printf ("Ignored event for mouse button %d\n", + event.button.button); + break; + } + Key_Event(buttonremap[event.button.button - 1], event.button.state == SDL_PRESSED); + break; + +#if defined(USE_SDL2) + case SDL_MOUSEWHEEL: + if (event.wheel.y > 0) + { + Key_Event(K_MWHEELUP, true); + Key_Event(K_MWHEELUP, false); + } + else if (event.wheel.y < 0) + { + Key_Event(K_MWHEELDOWN, true); + Key_Event(K_MWHEELDOWN, false); + } + break; +#endif + + case SDL_MOUSEMOTION: + IN_MouseMotion(event.motion.xrel, event.motion.yrel); + break; + +#if defined(USE_SDL2) + case SDL_CONTROLLERDEVICEADDED: + if (joy_active_instaceid == -1) + { + joy_active_controller = SDL_GameControllerOpen(event.cdevice.which); + if (joy_active_controller == NULL) + Con_DPrintf("Couldn't open game controller\n"); + else + { + SDL_Joystick *joy; + joy = SDL_GameControllerGetJoystick(joy_active_controller); + joy_active_instaceid = SDL_JoystickInstanceID(joy); + } + } + else + Con_DPrintf("Ignoring SDL_CONTROLLERDEVICEADDED\n"); + break; + case SDL_CONTROLLERDEVICEREMOVED: + if (joy_active_instaceid != -1 && event.cdevice.which == joy_active_instaceid) + { + SDL_GameControllerClose(joy_active_controller); + joy_active_controller = NULL; + joy_active_instaceid = -1; + } + else + Con_DPrintf("Ignoring SDL_CONTROLLERDEVICEREMOVED\n"); + break; + case SDL_CONTROLLERDEVICEREMAPPED: + Con_DPrintf("Ignoring SDL_CONTROLLERDEVICEREMAPPED\n"); + break; +#endif + + case SDL_QUIT: + CL_Disconnect (); + Sys_Quit (); + break; + + default: + break; + } + } +} + diff --git a/Quake/input.h b/Quake/input.h new file mode 100644 index 0000000..212d4cb --- /dev/null +++ b/Quake/input.h @@ -0,0 +1,56 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef QUAKE_INPUT_H +#define QUAKE_INPUT_H + +// input.h -- external (non-keyboard) input devices + +void IN_Init (void); + +void IN_Shutdown (void); + +void IN_Commands (void); +// oportunity for devices to stick commands on the script buffer + +// mouse moved by dx and dy pixels +void IN_MouseMotion(int dx, int dy); + + +void IN_SendKeyEvents (void); +// used as a callback for Sys_SendKeyEvents() by some drivers + +void IN_UpdateInputMode (void); +// do stuff if input mode (text/non-text) changes matter to the keyboard driver + +void IN_Move (usercmd_t *cmd); +// add additional movement on top of the keyboard move cmd + +void IN_ClearStates (void); +// restores all button and position states to defaults + +// called when the app becomes active +void IN_Activate (void); + +// called when the app becomes inactive +void IN_Deactivate (qboolean free_cursor); + +#endif diff --git a/Quake/keys.c b/Quake/keys.c new file mode 100644 index 0000000..eba2ced --- /dev/null +++ b/Quake/keys.c @@ -0,0 +1,1247 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#include "arch_def.h" +#include "sh_game.h" + +/* key up events are sent even if in console mode */ + +#define HISTORY_FILE_NAME "history.txt" + +char key_lines[CMDLINES][MAXCMDLINE]; + +int key_linepos; +int key_insert; //johnfitz -- insert key toggle (for editing) +double key_blinktime; //johnfitz -- fudge cursor blinking to make it easier to spot in certain cases + +int edit_line = 0; +int history_line = 0; + +keydest_t key_dest; + +char *keybindings[MAX_KEYS]; +qboolean consolekeys[MAX_KEYS]; // if true, can't be rebound while in console +qboolean menubound[MAX_KEYS]; // if true, can't be rebound while in menu +qboolean keydown[MAX_KEYS]; + +typedef struct +{ + const char *name; + int keynum; +} keyname_t; + +keyname_t keynames[] = +{ + {"TAB", K_TAB}, + {"ENTER", K_ENTER}, + {"ESCAPE", K_ESCAPE}, + {"SPACE", K_SPACE}, + {"BACKSPACE", K_BACKSPACE}, + {"UPARROW", K_UPARROW}, + {"DOWNARROW", K_DOWNARROW}, + {"LEFTARROW", K_LEFTARROW}, + {"RIGHTARROW", K_RIGHTARROW}, + + {"ALT", K_ALT}, + {"CTRL", K_CTRL}, + {"SHIFT", K_SHIFT}, + +// {"KP_NUMLOCK", K_KP_NUMLOCK}, + {"KP_SLASH", K_KP_SLASH}, + {"KP_STAR", K_KP_STAR}, + {"KP_MINUS", K_KP_MINUS}, + {"KP_HOME", K_KP_HOME}, + {"KP_UPARROW", K_KP_UPARROW}, + {"KP_PGUP", K_KP_PGUP}, + {"KP_PLUS", K_KP_PLUS}, + {"KP_LEFTARROW", K_KP_LEFTARROW}, + {"KP_5", K_KP_5}, + {"KP_RIGHTARROW", K_KP_RIGHTARROW}, + {"KP_END", K_KP_END}, + {"KP_DOWNARROW", K_KP_DOWNARROW}, + {"KP_PGDN", K_KP_PGDN}, + {"KP_ENTER", K_KP_ENTER}, + {"KP_INS", K_KP_INS}, + {"KP_DEL", K_KP_DEL}, + + {"F1", K_F1}, + {"F2", K_F2}, + {"F3", K_F3}, + {"F4", K_F4}, + {"F5", K_F5}, + {"F6", K_F6}, + {"F7", K_F7}, + {"F8", K_F8}, + {"F9", K_F9}, + {"F10", K_F10}, + {"F11", K_F11}, + {"F12", K_F12}, + + {"INS", K_INS}, + {"DEL", K_DEL}, + {"PGDN", K_PGDN}, + {"PGUP", K_PGUP}, + {"HOME", K_HOME}, + {"END", K_END}, + + {"COMMAND", K_COMMAND}, + + {"MOUSE1", K_MOUSE1}, + {"MOUSE2", K_MOUSE2}, + {"MOUSE3", K_MOUSE3}, + {"MOUSE4", K_MOUSE4}, + {"MOUSE5", K_MOUSE5}, + + {"JOY1", K_JOY1}, + {"JOY2", K_JOY2}, + {"JOY3", K_JOY3}, + {"JOY4", K_JOY4}, + + {"AUX1", K_AUX1}, + {"AUX2", K_AUX2}, + {"AUX3", K_AUX3}, + {"AUX4", K_AUX4}, + {"AUX5", K_AUX5}, + {"AUX6", K_AUX6}, + {"AUX7", K_AUX7}, + {"AUX8", K_AUX8}, + {"AUX9", K_AUX9}, + {"AUX10", K_AUX10}, + {"AUX11", K_AUX11}, + {"AUX12", K_AUX12}, + {"AUX13", K_AUX13}, + {"AUX14", K_AUX14}, + {"AUX15", K_AUX15}, + {"AUX16", K_AUX16}, + {"AUX17", K_AUX17}, + {"AUX18", K_AUX18}, + {"AUX19", K_AUX19}, + {"AUX20", K_AUX20}, + {"AUX21", K_AUX21}, + {"AUX22", K_AUX22}, + {"AUX23", K_AUX23}, + {"AUX24", K_AUX24}, + {"AUX25", K_AUX25}, + {"AUX26", K_AUX26}, + {"AUX27", K_AUX27}, + {"AUX28", K_AUX28}, + {"AUX29", K_AUX29}, + {"AUX30", K_AUX30}, + {"AUX31", K_AUX31}, + {"AUX32", K_AUX32}, + + {"PAUSE", K_PAUSE}, + + {"MWHEELUP", K_MWHEELUP}, + {"MWHEELDOWN", K_MWHEELDOWN}, + + {"SEMICOLON", ';'}, // because a raw semicolon seperates commands + + {"BACKQUOTE", '`'}, // because a raw backquote may toggle the console + {"TILDE", '~'}, // because a raw tilde may toggle the console + + {"LTHUMB", K_LTHUMB}, + {"RTHUMB", K_RTHUMB}, + {"LSHOULDER", K_LSHOULDER}, + {"RSHOULDER", K_RSHOULDER}, + {"ABUTTON", K_ABUTTON}, + {"BBUTTON", K_BBUTTON}, + {"XBUTTON", K_XBUTTON}, + {"YBUTTON", K_YBUTTON}, + {"LTRIGGER", K_LTRIGGER}, + {"RTRIGGER", K_RTRIGGER}, + + {NULL, 0} +}; + +/* +============================================================================== + + LINE TYPING INTO THE CONSOLE + +============================================================================== +*/ + +static void PasteToConsole (void) +{ + char *cbd, *p, *workline; + int mvlen, inslen; + + if (key_linepos == MAXCMDLINE - 1) + return; + + if ((cbd = PL_GetClipboardData()) == NULL) + return; + + p = cbd; + while (*p) + { + if (*p == '\n' || *p == '\r' || *p == '\b') + { + *p = 0; + break; + } + p++; + } + + inslen = (int) (p - cbd); + if (inslen + key_linepos > MAXCMDLINE - 1) + inslen = MAXCMDLINE - 1 - key_linepos; + if (inslen <= 0) goto done; + + workline = key_lines[edit_line]; + workline += key_linepos; + mvlen = (int) strlen(workline); + if (mvlen + inslen + key_linepos > MAXCMDLINE - 1) + { + mvlen = MAXCMDLINE - 1 - key_linepos - inslen; + if (mvlen < 0) mvlen = 0; + } + + // insert the string + if (mvlen != 0) + memmove (workline + inslen, workline, mvlen); + memcpy (workline, cbd, inslen); + key_linepos += inslen; + workline[mvlen + inslen] = '\0'; + done: + Z_Free(cbd); +} + +/* +==================== +Key_Console -- johnfitz -- heavy revision + +Interactive line editing and console scrollback +==================== +*/ +extern char *con_text, key_tabpartial[MAXCMDLINE]; +extern int con_current, con_linewidth, con_vislines; + +void Key_Console (int key) +{ + static char current[MAXCMDLINE] = ""; + int history_line_last; + size_t len; + char *workline = key_lines[edit_line]; + + switch (key) + { + case K_ENTER: + case K_KP_ENTER: + key_tabpartial[0] = 0; + Cbuf_AddText (workline + 1); // skip the prompt + Cbuf_AddText ("\n"); + Con_Printf ("%s\n", workline); + + // If the last two lines are identical, skip storing this line in history + // by not incrementing edit_line + if (strcmp(workline, key_lines[(edit_line - 1) & (CMDLINES - 1)])) + edit_line = (edit_line + 1) & (CMDLINES - 1); + + history_line = edit_line; + key_lines[edit_line][0] = ']'; + key_lines[edit_line][1] = 0; //johnfitz -- otherwise old history items show up in the new edit line + key_linepos = 1; + if (cls.state == ca_disconnected) + SCR_UpdateScreen (); // force an update, because the command may take some time + return; + + case K_TAB: + Con_TabComplete (); + return; + + case K_BACKSPACE: + key_tabpartial[0] = 0; + if (key_linepos > 1) + { + workline += key_linepos - 1; + if (workline[1]) + { + len = strlen(workline); + memmove (workline, workline + 1, len); + } + else *workline = 0; + key_linepos--; + } + return; + + case K_DEL: + key_tabpartial[0] = 0; + workline += key_linepos; + if (*workline) + { + if (workline[1]) + { + len = strlen(workline); + memmove (workline, workline + 1, len); + } + else *workline = 0; + } + return; + + case K_HOME: + if (keydown[K_CTRL]) + { + //skip initial empty lines + int i, x; + char *line; + + for (i = con_current - con_totallines + 1; i <= con_current; i++) + { + line = con_text + (i % con_totallines) * con_linewidth; + for (x = 0; x < con_linewidth; x++) + { + if (line[x] != ' ') + break; + } + if (x != con_linewidth) + break; + } + con_backscroll = CLAMP(0, con_current-i%con_totallines-2, con_totallines-(glheight>>3)-1); + } + else key_linepos = 1; + return; + + case K_END: + if (keydown[K_CTRL]) + con_backscroll = 0; + else key_linepos = strlen(workline); + return; + + case K_PGUP: + case K_MWHEELUP: + con_backscroll += keydown[K_CTRL] ? ((con_vislines>>3) - 4) : 2; + if (con_backscroll > con_totallines - (vid.height>>3) - 1) + con_backscroll = con_totallines - (vid.height>>3) - 1; + return; + + case K_PGDN: + case K_MWHEELDOWN: + con_backscroll -= keydown[K_CTRL] ? ((con_vislines>>3) - 4) : 2; + if (con_backscroll < 0) + con_backscroll = 0; + return; + + case K_LEFTARROW: + if (key_linepos > 1) + { + key_linepos--; + key_blinktime = realtime; + } + return; + + case K_RIGHTARROW: + len = strlen(workline); + if ((int)len == key_linepos) + { + len = strlen(key_lines[(edit_line + (CMDLINES - 1)) & (CMDLINES - 1)]); + if ((int)len <= key_linepos) + return; // no character to get + workline += key_linepos; + *workline = key_lines[(edit_line + (CMDLINES - 1)) & (CMDLINES - 1)][key_linepos]; + workline[1] = 0; + key_linepos++; + } + else + { + key_linepos++; + key_blinktime = realtime; + } + return; + + case K_UPARROW: + if (history_line == edit_line) + Q_strcpy(current, workline); + + history_line_last = history_line; + do + { + history_line = (history_line - 1) & (CMDLINES - 1); + } while (history_line != edit_line && !key_lines[history_line][1]); + + if (history_line == edit_line) + { + history_line = history_line_last; + return; + } + + key_tabpartial[0] = 0; + len = strlen(key_lines[history_line]); + memmove(workline, key_lines[history_line], len+1); + key_linepos = (int)len; + return; + + case K_DOWNARROW: + if (history_line == edit_line) + return; + + key_tabpartial[0] = 0; + + do + { + history_line = (history_line + 1) & (CMDLINES - 1); + } while (history_line != edit_line && !key_lines[history_line][1]); + + if (history_line == edit_line) + { + len = strlen(current); + memcpy(workline, current, len+1); + } + else + { + len = strlen(key_lines[history_line]); + memmove(workline, key_lines[history_line], len+1); + } + key_linepos = (int)len; + return; + + case K_INS: + if (keydown[K_SHIFT]) /* Shift-Ins paste */ + PasteToConsole(); + else key_insert ^= 1; + return; + + case 'v': + case 'V': +#if defined(PLATFORM_OSX) || defined(PLATFORM_MAC) + if (keydown[K_COMMAND]) { /* Cmd+v paste (Mac-only) */ + PasteToConsole(); + return; + } +#endif + if (keydown[K_CTRL]) { /* Ctrl+v paste */ + PasteToConsole(); + return; + } + break; + + case 'c': + case 'C': + if (keydown[K_CTRL]) { /* Ctrl+C: abort the line -- S.A */ + Con_Printf ("%s\n", workline); + workline[0] = ']'; + workline[1] = 0; + key_linepos = 1; + history_line= edit_line; + return; + } + break; + } +} + +void Char_Console (int key) +{ + size_t len; + char *workline = key_lines[edit_line]; + + if (key_linepos < MAXCMDLINE-1) + { + qboolean endpos = !workline[key_linepos]; + + key_tabpartial[0] = 0; //johnfitz + // if inserting, move the text to the right + if (key_insert && !endpos) + { + workline[MAXCMDLINE - 2] = 0; + workline += key_linepos; + len = strlen(workline) + 1; + #if defined(__GNUC__) && (__GNUC__ > 7) + #pragma GCC diagnostic ignored "-Warray-bounds" + #endif + memmove (workline + 1, workline, len); + #if defined(__GNUC__) && (__GNUC__ > 7) + #pragma GCC diagnostic pop + #endif + *workline = key; + } + else + { + workline += key_linepos; + *workline = key; + // null terminate if at the end + if (endpos) + workline[1] = 0; + } + key_linepos++; + } +} + +//============================================================================ + +qboolean chat_team = false; +static char chat_buffer[MAXCMDLINE]; +static int chat_bufferlen = 0; + +const char *Key_GetChatBuffer (void) +{ + return chat_buffer; +} + +int Key_GetChatMsgLen (void) +{ + return chat_bufferlen; +} + +void Key_EndChat (void) +{ + key_dest = key_game; + chat_bufferlen = 0; + chat_buffer[0] = 0; +} + +void Key_Message (int key) +{ + switch (key) + { + case K_ENTER: + case K_KP_ENTER: + if (chat_team) + Cbuf_AddText ("say_team \""); + else + Cbuf_AddText ("say \""); + Cbuf_AddText(chat_buffer); + Cbuf_AddText("\"\n"); + + Key_EndChat (); + return; + + case K_ESCAPE: + Key_EndChat (); + return; + + case K_BACKSPACE: + if (chat_bufferlen) + chat_buffer[--chat_bufferlen] = 0; + return; + } +} + +void Char_Message (int key) +{ + if (chat_bufferlen == sizeof(chat_buffer) - 1) + return; // all full + + chat_buffer[chat_bufferlen++] = key; + chat_buffer[chat_bufferlen] = 0; +} + +//============================================================================ + + +/* +=================== +Key_StringToKeynum + +Returns a key number to be used to index keybindings[] by looking at +the given string. Single ascii characters return themselves, while +the K_* names are matched up. +=================== +*/ +int Key_StringToKeynum (const char *str) +{ + keyname_t *kn; + + if (!str || !str[0]) + return -1; + if (!str[1]) + return str[0]; + + for (kn=keynames ; kn->name ; kn++) + { + if (!q_strcasecmp(str,kn->name)) + return kn->keynum; + } + return -1; +} + +/* +=================== +Key_KeynumToString + +Returns a string (either a single ascii char, or a K_* name) for the +given keynum. +FIXME: handle quote special (general escape sequence?) +=================== +*/ +const char *Key_KeynumToString (int keynum) +{ + static char tinystr[2]; + keyname_t *kn; + + if (keynum == -1) + return "<KEY NOT FOUND>"; + if (keynum > 32 && keynum < 127) + { // printable ascii + tinystr[0] = keynum; + tinystr[1] = 0; + return tinystr; + } + + for (kn = keynames; kn->name; kn++) + { + if (keynum == kn->keynum) + return kn->name; + } + + return "<UNKNOWN KEYNUM>"; +} + + +/* +=================== +Key_SetBinding +=================== +*/ +void Key_SetBinding (int keynum, const char *binding) +{ + if (keynum == -1) + return; + +// free old bindings + if (keybindings[keynum]) + { + Z_Free (keybindings[keynum]); + keybindings[keynum] = NULL; + } + +// allocate memory for new binding + if (binding) + keybindings[keynum] = Z_Strdup(binding); +} + +/* +=================== +Key_Unbind_f +=================== +*/ +void Key_Unbind_f (void) +{ + int b; + + if (Cmd_Argc() != 2) + { + Con_Printf ("unbind <key> : remove commands from a key\n"); + return; + } + + b = Key_StringToKeynum (Cmd_Argv(1)); + if (b == -1) + { + Con_Printf ("\"%s\" isn't a valid key\n", Cmd_Argv(1)); + return; + } + + Key_SetBinding (b, NULL); +} + +void Key_Unbindall_f (void) +{ + int i; + + for (i = 0; i < MAX_KEYS; i++) + { + if (keybindings[i]) + Key_SetBinding (i, NULL); + } +} + +/* +============ +Key_Bindlist_f -- johnfitz +============ +*/ +void Key_Bindlist_f (void) +{ + int i, count; + + count = 0; + for (i = 0; i < MAX_KEYS; i++) + { + if (keybindings[i] && *keybindings[i]) + { + Con_SafePrintf (" %s \"%s\"\n", Key_KeynumToString(i), keybindings[i]); + count++; + } + } + Con_SafePrintf ("%i bindings\n", count); +} + +/* +=================== +Key_Bind_f +=================== +*/ +void Key_Bind_f (void) +{ + int i, c, b; + char cmd[1024]; + + c = Cmd_Argc(); + + if (c != 2 && c != 3) + { + Con_Printf ("bind <key> [command] : attach a command to a key\n"); + return; + } + b = Key_StringToKeynum (Cmd_Argv(1)); + if (b == -1) + { + Con_Printf ("\"%s\" isn't a valid key\n", Cmd_Argv(1)); + return; + } + + if (c == 2) + { + if (keybindings[b]) + Con_Printf ("\"%s\" = \"%s\"\n", Cmd_Argv(1), keybindings[b] ); + else + Con_Printf ("\"%s\" is not bound\n", Cmd_Argv(1) ); + return; + } + +// copy the rest of the command line + cmd[0] = 0; + for (i = 2; i < c; i++) + { + q_strlcat (cmd, Cmd_Argv(i), sizeof(cmd)); + if (i != (c-1)) + q_strlcat (cmd, " ", sizeof(cmd)); + } + + Key_SetBinding (b, cmd); +} + +/* +============ +Key_WriteBindings + +Writes lines containing "bind key value" +============ +*/ +void Key_WriteBindings (FILE *f) +{ + int i; + + // unbindall before loading stored bindings: + if (cfg_unbindall.value) + fprintf (f, "unbindall\n"); + for (i = 0; i < MAX_KEYS; i++) + { + if (keybindings[i] && *keybindings[i]) + fprintf (f, "bind \"%s\" \"%s\"\n", Key_KeynumToString(i), keybindings[i]); + } +} + + +void History_Init (void) +{ + int i, c; + FILE *hf; + + for (i = 0; i < CMDLINES; i++) + { + key_lines[i][0] = ']'; + key_lines[i][1] = 0; + } + key_linepos = 1; + + hf = fopen(va("%s/%s", host_parms->userdir, HISTORY_FILE_NAME), "rt"); + if (hf != NULL) + { + do + { + i = 1; + do + { + c = fgetc(hf); + key_lines[edit_line][i++] = c; + } while (c != '\r' && c != '\n' && c != EOF && i < MAXCMDLINE); + key_lines[edit_line][i - 1] = 0; + edit_line = (edit_line + 1) & (CMDLINES - 1); + /* for people using a windows-generated history file on unix: */ + if (c == '\r' || c == '\n') + { + do + c = fgetc(hf); + while (c == '\r' || c == '\n'); + if (c != EOF) + ungetc(c, hf); + else c = 0; /* loop once more, otherwise last line is lost */ + } + } while (c != EOF && edit_line < CMDLINES); + fclose(hf); + + history_line = edit_line = (edit_line - 1) & (CMDLINES - 1); + key_lines[edit_line][0] = ']'; + key_lines[edit_line][1] = 0; + } +} + +void History_Shutdown (void) +{ + int i; + FILE *hf; + + hf = fopen(va("%s/%s", host_parms->userdir, HISTORY_FILE_NAME), "wt"); + if (hf != NULL) + { + i = edit_line; + do + { + i = (i + 1) & (CMDLINES - 1); + } while (i != edit_line && !key_lines[i][1]); + + while (i != edit_line && key_lines[i][1]) + { + fprintf(hf, "%s\n", key_lines[i] + 1); + i = (i + 1) & (CMDLINES - 1); + } + fclose(hf); + } +} + +/* +=================== +Key_Init +=================== +*/ +void Key_Init (void) +{ + int i; + + History_Init (); + + key_blinktime = realtime; //johnfitz + +// +// initialize consolekeys[] +// + for (i = 32; i < 127; i++) // ascii characters + consolekeys[i] = true; + consolekeys['`'] = false; + consolekeys['~'] = false; + consolekeys[K_TAB] = true; + consolekeys[K_ENTER] = true; + consolekeys[K_ESCAPE] = true; + consolekeys[K_BACKSPACE] = true; + consolekeys[K_UPARROW] = true; + consolekeys[K_DOWNARROW] = true; + consolekeys[K_LEFTARROW] = true; + consolekeys[K_RIGHTARROW] = true; + consolekeys[K_CTRL] = true; + consolekeys[K_SHIFT] = true; + consolekeys[K_INS] = true; + consolekeys[K_DEL] = true; + consolekeys[K_PGDN] = true; + consolekeys[K_PGUP] = true; + consolekeys[K_HOME] = true; + consolekeys[K_END] = true; + consolekeys[K_KP_NUMLOCK] = true; + consolekeys[K_KP_SLASH] = true; + consolekeys[K_KP_STAR] = true; + consolekeys[K_KP_MINUS] = true; + consolekeys[K_KP_HOME] = true; + consolekeys[K_KP_UPARROW] = true; + consolekeys[K_KP_PGUP] = true; + consolekeys[K_KP_PLUS] = true; + consolekeys[K_KP_LEFTARROW] = true; + consolekeys[K_KP_5] = true; + consolekeys[K_KP_RIGHTARROW] = true; + consolekeys[K_KP_END] = true; + consolekeys[K_KP_DOWNARROW] = true; + consolekeys[K_KP_PGDN] = true; + consolekeys[K_KP_ENTER] = true; + consolekeys[K_KP_INS] = true; + consolekeys[K_KP_DEL] = true; +#if defined(PLATFORM_OSX) || defined(PLATFORM_MAC) + consolekeys[K_COMMAND] = true; +#endif + consolekeys[K_MWHEELUP] = true; + consolekeys[K_MWHEELDOWN] = true; + +// +// initialize menubound[] +// + menubound[K_ESCAPE] = true; + for (i = 0; i < 12; i++) + menubound[K_F1+i] = true; + +// +// register our functions +// + Cmd_AddCommand ("bindlist",Key_Bindlist_f); //johnfitz + Cmd_AddCommand ("bind",Key_Bind_f); + Cmd_AddCommand ("unbind",Key_Unbind_f); + Cmd_AddCommand ("unbindall",Key_Unbindall_f); +} + +static struct { + qboolean active; + int lastkey; + int lastchar; +} key_inputgrab = { false, -1, -1 }; + +/* +=================== +Key_BeginInputGrab +=================== +*/ +void Key_BeginInputGrab (void) +{ + Key_ClearStates (); + + key_inputgrab.active = true; + key_inputgrab.lastkey = -1; + key_inputgrab.lastchar = -1; + + IN_UpdateInputMode (); +} + +/* +=================== +Key_EndInputGrab +=================== +*/ +void Key_EndInputGrab (void) +{ + Key_ClearStates (); + + key_inputgrab.active = false; + + IN_UpdateInputMode (); +} + +/* +=================== +Key_GetGrabbedInput +=================== +*/ +void Key_GetGrabbedInput (int *lastkey, int *lastchar) +{ + if (lastkey) + *lastkey = key_inputgrab.lastkey; + if (lastchar) + *lastchar = key_inputgrab.lastchar; +} + +/* +=================== +Key_Event + +Called by the system between frames for both key up and key down events +Should NOT be called during an interrupt! +=================== +*/ +void Key_Event (int key, qboolean down) +{ + Key_EventWithKeycode (key, down, 0); +} + +/* +=================== +Key_EventWithKeycode + +Called by the system between frames for both key up and key down events +Should NOT be called during an interrupt! +keycode parameter should have the key's actual keycode using the current keyboard layout, +not necessarily the US-keyboard-based scancode. Pass 0 if not applicable. +=================== +*/ +void Key_EventWithKeycode (int key, qboolean down, int keycode) +{ + char *kb; + char cmd[1024]; + + if (key < 0 || key >= MAX_KEYS) + return; + +// handle fullscreen toggle + if (down && (key == K_ENTER || key == K_KP_ENTER) && keydown[K_ALT]) + { + VID_Toggle(); + return; + } + +// space hulk input intercept + if (SH_Active() && key_dest == key_game) + { + if (SH_Input_KeyEvent(key, down)) + return; + } + +// handle autorepeats and stray key up events + if (down) + { + if (keydown[key]) + { + if (key_dest == key_game && !con_forcedup) + return; // ignore autorepeats in game mode + } + else if (key >= 200 && !keybindings[key]) + Con_Printf ("%s is unbound, hit F4 to set.\n", Key_KeynumToString(key)); + } + else if (!keydown[key]) + return; // ignore stray key up events + + keydown[key] = down; + + if (key_inputgrab.active) + { + if (down) + { + key_inputgrab.lastkey = key; + if (keycode > 0) + key_inputgrab.lastchar = keycode; + } + return; + } + +// handle escape specialy, so the user can never unbind it + if (key == K_ESCAPE) + { + if (!down) + return; + + if (keydown[K_SHIFT]) + { + Con_ToggleConsole_f(); + return; + } + + switch (key_dest) + { + case key_message: + Key_Message (key); + break; + case key_menu: + M_Keydown (key); + break; + case key_game: + case key_console: + M_ToggleMenu_f (); + break; + default: + Sys_Error ("Bad key_dest"); + } + + return; + } + +// key up events only generate commands if the game key binding is +// a button command (leading + sign). These will occur even in console mode, +// to keep the character from continuing an action started before a console +// switch. Button commands include the kenum as a parameter, so multiple +// downs can be matched with ups + if (!down) + { + kb = keybindings[key]; + if (kb && kb[0] == '+') + { + sprintf (cmd, "-%s %i\n", kb+1, key); + Cbuf_AddText (cmd); + } + return; + } + +// during demo playback, most keys bring up the main menu + if (cls.demoplayback && down && consolekeys[key] && key_dest == key_game && key != K_TAB) + { + M_ToggleMenu_f (); + return; + } + +// if not a consolekey, send to the interpreter no matter what mode is + if ((key_dest == key_menu && menubound[key]) || + (key_dest == key_console && !consolekeys[key]) || + (key_dest == key_game && (!con_forcedup || !consolekeys[key]))) + { + kb = keybindings[key]; + if (kb) + { + if (kb[0] == '+') + { // button commands add keynum as a parm + sprintf (cmd, "%s %i\n", kb, key); + Cbuf_AddText (cmd); + } + else + { + Cbuf_AddText (kb); + Cbuf_AddText ("\n"); + } + } + return; + } + + if (!down) + return; // other systems only care about key down events + + switch (key_dest) + { + case key_message: + Key_Message (key); + break; + case key_menu: + M_Keydown (key); + break; + + case key_game: + case key_console: + Key_Console (key); + break; + default: + Sys_Error ("Bad key_dest"); + } +} + +/* +=================== +Char_Event + +Called by the backend when the user has input a character. +=================== +*/ +void Char_Event (int key) +{ + if (key < 32 || key > 126) + return; + +#if defined(PLATFORM_OSX) || defined(PLATFORM_MAC) + if (keydown[K_COMMAND]) + return; +#endif + if (keydown[K_CTRL]) + return; + + if (key_inputgrab.active) + { + key_inputgrab.lastchar = key; + return; + } + + switch (key_dest) + { + case key_message: + Char_Message (key); + break; + case key_menu: + M_Charinput (key); + break; + case key_game: + if (!con_forcedup) + break; + /* fallthrough */ + case key_console: + Char_Console (key); + break; + default: + break; + } +} + +/* +=================== +Key_TextEntry +=================== +*/ +qboolean Key_TextEntry (void) +{ + if (key_inputgrab.active) + { + // This path is used for simple single-letter inputs (y/n prompts) that also + // accept controller input, so we don't want an onscreen keyboard for this case. + return false; + } + + switch (key_dest) + { + case key_message: + return true; + case key_menu: + return M_TextEntry(); + case key_game: + // Don't return true even during con_forcedup, because that happens while starting a + // game and we don't to trigger text input (and the onscreen keyboard on some devices) + // during this. + return false; + case key_console: + return true; + default: + return false; + } +} + +/* +=================== +Key_ClearStates +=================== +*/ +void Key_ClearStates (void) +{ + int i; + + for (i = 0; i < MAX_KEYS; i++) + { + if (keydown[i]) + Key_Event (i, false); + } +} + +/* +=================== +Key_UpdateForDest +=================== +*/ +void Key_UpdateForDest (void) +{ + static qboolean forced = false; + + if (cls.state == ca_dedicated) + return; + + switch (key_dest) + { + case key_console: + if (forced && cls.state == ca_connected) + { + forced = false; + IN_Activate(); + key_dest = key_game; + } + break; + case key_game: + if (cls.state != ca_connected) + { + forced = true; + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_console; + break; + } + /* fallthrough */ + default: + forced = false; + break; + } +} + diff --git a/Quake/keys.h b/Quake/keys.h new file mode 100644 index 0000000..29beddd --- /dev/null +++ b/Quake/keys.h @@ -0,0 +1,201 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_KEYS_H +#define _QUAKE_KEYS_H + +// +// these are the key numbers that should be passed to Key_Event +// +#define K_TAB 9 +#define K_ENTER 13 +#define K_ESCAPE 27 +#define K_SPACE 32 + +// normal keys should be passed as lowercased ascii + +#define K_BACKSPACE 127 +#define K_UPARROW 128 +#define K_DOWNARROW 129 +#define K_LEFTARROW 130 +#define K_RIGHTARROW 131 + +#define K_ALT 132 +#define K_CTRL 133 +#define K_SHIFT 134 +#define K_F1 135 +#define K_F2 136 +#define K_F3 137 +#define K_F4 138 +#define K_F5 139 +#define K_F6 140 +#define K_F7 141 +#define K_F8 142 +#define K_F9 143 +#define K_F10 144 +#define K_F11 145 +#define K_F12 146 +#define K_INS 147 +#define K_DEL 148 +#define K_PGDN 149 +#define K_PGUP 150 +#define K_HOME 151 +#define K_END 152 + +#define K_KP_NUMLOCK 153 +#define K_KP_SLASH 154 +#define K_KP_STAR 155 +#define K_KP_MINUS 156 +#define K_KP_HOME 157 +#define K_KP_UPARROW 158 +#define K_KP_PGUP 159 +#define K_KP_PLUS 160 +#define K_KP_LEFTARROW 161 +#define K_KP_5 162 +#define K_KP_RIGHTARROW 163 +#define K_KP_END 164 +#define K_KP_DOWNARROW 165 +#define K_KP_PGDN 166 +#define K_KP_ENTER 167 +#define K_KP_INS 168 +#define K_KP_DEL 169 + +#define K_COMMAND 170 + +#define K_PAUSE 255 + +// +// mouse buttons generate virtual keys +// +#define K_MOUSE1 200 +#define K_MOUSE2 201 +#define K_MOUSE3 202 + +// +// joystick buttons +// +#define K_JOY1 203 +#define K_JOY2 204 +#define K_JOY3 205 +#define K_JOY4 206 +// aux keys are for multi-buttoned joysticks to generate so they can use +// the normal binding process +// aux29-32: reserved for the HAT (POV) switch motion +#define K_AUX1 207 +#define K_AUX2 208 +#define K_AUX3 209 +#define K_AUX4 210 +#define K_AUX5 211 +#define K_AUX6 212 +#define K_AUX7 213 +#define K_AUX8 214 +#define K_AUX9 215 +#define K_AUX10 216 +#define K_AUX11 217 +#define K_AUX12 218 +#define K_AUX13 219 +#define K_AUX14 220 +#define K_AUX15 221 +#define K_AUX16 222 +#define K_AUX17 223 +#define K_AUX18 224 +#define K_AUX19 225 +#define K_AUX20 226 +#define K_AUX21 227 +#define K_AUX22 228 +#define K_AUX23 229 +#define K_AUX24 230 +#define K_AUX25 231 +#define K_AUX26 232 +#define K_AUX27 233 +#define K_AUX28 234 +#define K_AUX29 235 +#define K_AUX30 236 +#define K_AUX31 237 +#define K_AUX32 238 + +// JACK: Intellimouse(c) Mouse Wheel Support + +#define K_MWHEELUP 239 +#define K_MWHEELDOWN 240 + +// thumb buttons +#define K_MOUSE4 241 +#define K_MOUSE5 242 + +// SDL2 game controller keys +#define K_LTHUMB 243 +#define K_RTHUMB 244 +#define K_LSHOULDER 245 +#define K_RSHOULDER 246 +#define K_ABUTTON 247 +#define K_BBUTTON 248 +#define K_XBUTTON 249 +#define K_YBUTTON 250 +#define K_LTRIGGER 251 +#define K_RTRIGGER 252 + +#define MAX_KEYS 256 + +#define MAXCMDLINE 256 + +typedef enum {key_game, key_console, key_message, key_menu} keydest_t; + +extern keydest_t key_dest; +extern char *keybindings[MAX_KEYS]; + +#define CMDLINES 64 + +extern char key_lines[CMDLINES][MAXCMDLINE]; +extern int edit_line; +extern int key_linepos; +extern int key_insert; +extern double key_blinktime; + +extern qboolean chat_team; + +void Key_Init (void); +void Key_ClearStates (void); +void Key_UpdateForDest (void); + +void Key_BeginInputGrab (void); +void Key_EndInputGrab (void); +void Key_GetGrabbedInput (int *lastkey, int *lastchar); + +void Key_Event (int key, qboolean down); +void Key_EventWithKeycode (int key, qboolean down, int keycode); +void Char_Event (int key); +qboolean Key_TextEntry (void); + +void Key_SetBinding (int keynum, const char *binding); +const char *Key_KeynumToString (int keynum); +void Key_WriteBindings (FILE *f); + +void Key_EndChat (void); +const char *Key_GetChatBuffer (void); +int Key_GetChatMsgLen (void); + +void History_Init (void); +void History_Shutdown (void); + +#endif /* _QUAKE_KEYS_H */ + diff --git a/Quake/lodepng.c b/Quake/lodepng.c new file mode 100644 index 0000000..9cff281 --- /dev/null +++ b/Quake/lodepng.c @@ -0,0 +1,6665 @@ +/* +LodePNG version 20220717 + +Copyright (c) 2005-2022 Lode Vandevenne + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +/* +The manual and changelog are in the header file "lodepng.h" +Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for C. +*/ + +#include "lodepng.h" + +#ifdef LODEPNG_COMPILE_DISK +#include <limits.h> /* LONG_MAX */ +#include <stdio.h> /* file handling */ +#endif /* LODEPNG_COMPILE_DISK */ + +#ifdef LODEPNG_COMPILE_ALLOCATORS +#include <stdlib.h> /* allocations */ +#endif /* LODEPNG_COMPILE_ALLOCATORS */ + +#if defined(_MSC_VER) && (_MSC_VER >= 1310) /*Visual Studio: A few warning types are not desired here.*/ +#pragma warning( disable : 4244 ) /*implicit conversions: not warned by gcc -Wall -Wextra and requires too much casts*/ +#pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/ +#endif /*_MSC_VER */ + +const char* LODEPNG_VERSION_STRING = "20220717"; + +/* +This source file is divided into the following large parts. The code sections +with the "LODEPNG_COMPILE_" #defines divide this up further in an intermixed way. +-Tools for C and common code for PNG and Zlib +-C Code for Zlib (huffman, deflate, ...) +-C Code for PNG (file format chunks, adam7, PNG filters, color conversions, ...) +-The C++ wrapper around all of the above +*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // Tools for C, and common code for PNG and Zlib. // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*The malloc, realloc and free functions defined here with "lodepng_" in front +of the name, so that you can easily change them to others related to your +platform if needed. Everything else in the code calls these. Pass +-DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler, or comment out +#define LODEPNG_COMPILE_ALLOCATORS in the header, to disable the ones here and +define them in your own project's source files without needing to change +lodepng source code. Don't forget to remove "static" if you copypaste them +from here.*/ + +#ifdef LODEPNG_COMPILE_ALLOCATORS +static void* lodepng_malloc(size_t size) { +#ifdef LODEPNG_MAX_ALLOC + if(size > LODEPNG_MAX_ALLOC) return 0; +#endif + return malloc(size); +} + +/* NOTE: when realloc returns NULL, it leaves the original memory untouched */ +static void* lodepng_realloc(void* ptr, size_t new_size) { +#ifdef LODEPNG_MAX_ALLOC + if(new_size > LODEPNG_MAX_ALLOC) return 0; +#endif + return realloc(ptr, new_size); +} + +static void lodepng_free(void* ptr) { + free(ptr); +} +#else /*LODEPNG_COMPILE_ALLOCATORS*/ +/* TODO: support giving additional void* payload to the custom allocators */ +void* lodepng_malloc(size_t size); +void* lodepng_realloc(void* ptr, size_t new_size); +void lodepng_free(void* ptr); +#endif /*LODEPNG_COMPILE_ALLOCATORS*/ + +/* convince the compiler to inline a function, for use when this measurably improves performance */ +/* inline is not available in C90, but use it when supported by the compiler */ +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined(__cplusplus) && (__cplusplus >= 199711L)) +#define LODEPNG_INLINE inline +#else +#define LODEPNG_INLINE /* not available */ +#endif + +/* restrict is not available in C90, but use it when supported by the compiler */ +#if (defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))) ||\ + (defined(_MSC_VER) && (_MSC_VER >= 1400)) || \ + (defined(__WATCOMC__) && (__WATCOMC__ >= 1250) && !defined(__cplusplus)) +#define LODEPNG_RESTRICT __restrict +#else +#define LODEPNG_RESTRICT /* not available */ +#endif + +/* Replacements for C library functions such as memcpy and strlen, to support platforms +where a full C library is not available. The compiler can recognize them and compile +to something as fast. */ + +static void lodepng_memcpy(void* LODEPNG_RESTRICT dst, + const void* LODEPNG_RESTRICT src, size_t size) { + size_t i; + for(i = 0; i < size; i++) ((char*)dst)[i] = ((const char*)src)[i]; +} + +static void lodepng_memset(void* LODEPNG_RESTRICT dst, + int value, size_t num) { + size_t i; + for(i = 0; i < num; i++) ((char*)dst)[i] = (char)value; +} + +/* does not check memory out of bounds, do not use on untrusted data */ +static size_t lodepng_strlen(const char* a) { + const char* orig = a; + /* avoid warning about unused function in case of disabled COMPILE... macros */ + (void)(&lodepng_strlen); + while(*a) a++; + return (size_t)(a - orig); +} + +#define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define LODEPNG_MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define LODEPNG_ABS(x) ((x) < 0 ? -(x) : (x)) + +#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_DECODER) +/* Safely check if adding two integers will overflow (no undefined +behavior, compiler removing the code, etc...) and output result. */ +static int lodepng_addofl(size_t a, size_t b, size_t* result) { + *result = a + b; /* Unsigned addition is well defined and safe in C90 */ + return *result < a; +} +#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_DECODER)*/ + +#ifdef LODEPNG_COMPILE_DECODER +/* Safely check if multiplying two integers will overflow (no undefined +behavior, compiler removing the code, etc...) and output result. */ +static int lodepng_mulofl(size_t a, size_t b, size_t* result) { + *result = a * b; /* Unsigned multiplication is well defined and safe in C90 */ + return (a != 0 && *result / a != b); +} + +#ifdef LODEPNG_COMPILE_ZLIB +/* Safely check if a + b > c, even if overflow could happen. */ +static int lodepng_gtofl(size_t a, size_t b, size_t c) { + size_t d; + if(lodepng_addofl(a, b, &d)) return 1; + return d > c; +} +#endif /*LODEPNG_COMPILE_ZLIB*/ +#endif /*LODEPNG_COMPILE_DECODER*/ + + +/* +Often in case of an error a value is assigned to a variable and then it breaks +out of a loop (to go to the cleanup phase of a function). This macro does that. +It makes the error handling code shorter and more readable. + +Example: if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83); +*/ +#define CERROR_BREAK(errorvar, code){\ + errorvar = code;\ + break;\ +} + +/*version of CERROR_BREAK that assumes the common case where the error variable is named "error"*/ +#define ERROR_BREAK(code) CERROR_BREAK(error, code) + +/*Set error var to the error code, and return it.*/ +#define CERROR_RETURN_ERROR(errorvar, code){\ + errorvar = code;\ + return code;\ +} + +/*Try the code, if it returns error, also return the error.*/ +#define CERROR_TRY_RETURN(call){\ + unsigned error = call;\ + if(error) return error;\ +} + +/*Set error var to the error code, and return from the void function.*/ +#define CERROR_RETURN(errorvar, code){\ + errorvar = code;\ + return;\ +} + +/* +About uivector, ucvector and string: +-All of them wrap dynamic arrays or text strings in a similar way. +-LodePNG was originally written in C++. The vectors replace the std::vectors that were used in the C++ version. +-The string tools are made to avoid problems with compilers that declare things like strncat as deprecated. +-They're not used in the interface, only internally in this file as static functions. +-As with many other structs in this file, the init and cleanup functions serve as ctor and dtor. +*/ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_ENCODER +/*dynamic vector of unsigned ints*/ +typedef struct uivector { + unsigned* data; + size_t size; /*size in number of unsigned longs*/ + size_t allocsize; /*allocated size in bytes*/ +} uivector; + +static void uivector_cleanup(void* p) { + ((uivector*)p)->size = ((uivector*)p)->allocsize = 0; + lodepng_free(((uivector*)p)->data); + ((uivector*)p)->data = NULL; +} + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned uivector_resize(uivector* p, size_t size) { + size_t allocsize = size * sizeof(unsigned); + if(allocsize > p->allocsize) { + size_t newsize = allocsize + (p->allocsize >> 1u); + void* data = lodepng_realloc(p->data, newsize); + if(data) { + p->allocsize = newsize; + p->data = (unsigned*)data; + } + else return 0; /*error: not enough memory*/ + } + p->size = size; + return 1; /*success*/ +} + +static void uivector_init(uivector* p) { + p->data = NULL; + p->size = p->allocsize = 0; +} + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned uivector_push_back(uivector* p, unsigned c) { + if(!uivector_resize(p, p->size + 1)) return 0; + p->data[p->size - 1] = c; + return 1; +} +#endif /*LODEPNG_COMPILE_ENCODER*/ +#endif /*LODEPNG_COMPILE_ZLIB*/ + +/* /////////////////////////////////////////////////////////////////////////// */ + +/*dynamic vector of unsigned chars*/ +typedef struct ucvector { + unsigned char* data; + size_t size; /*used size*/ + size_t allocsize; /*allocated size*/ +} ucvector; + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned ucvector_reserve(ucvector* p, size_t size) { + if(size > p->allocsize) { + size_t newsize = size + (p->allocsize >> 1u); + void* data = lodepng_realloc(p->data, newsize); + if(data) { + p->allocsize = newsize; + p->data = (unsigned char*)data; + } + else return 0; /*error: not enough memory*/ + } + return 1; /*success*/ +} + +/*returns 1 if success, 0 if failure ==> nothing done*/ +static unsigned ucvector_resize(ucvector* p, size_t size) { + p->size = size; + return ucvector_reserve(p, size); +} + +static ucvector ucvector_init(unsigned char* buffer, size_t size) { + ucvector v; + v.data = buffer; + v.allocsize = v.size = size; + return v; +} + +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_PNG +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +/*free string pointer and set it to NULL*/ +static void string_cleanup(char** out) { + lodepng_free(*out); + *out = NULL; +} + +/*also appends null termination character*/ +static char* alloc_string_sized(const char* in, size_t insize) { + char* out = (char*)lodepng_malloc(insize + 1); + if(out) { + lodepng_memcpy(out, in, insize); + out[insize] = 0; + } + return out; +} + +/* dynamically allocates a new string with a copy of the null terminated input text */ +static char* alloc_string(const char* in) { + return alloc_string_sized(in, lodepng_strlen(in)); +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +/* ////////////////////////////////////////////////////////////////////////// */ + +#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_PNG) +static unsigned lodepng_read32bitInt(const unsigned char* buffer) { + return (((unsigned)buffer[0] << 24u) | ((unsigned)buffer[1] << 16u) | + ((unsigned)buffer[2] << 8u) | (unsigned)buffer[3]); +} +#endif /*defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_PNG)*/ + +#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER) +/*buffer must have at least 4 allocated bytes available*/ +static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) { + buffer[0] = (unsigned char)((value >> 24) & 0xff); + buffer[1] = (unsigned char)((value >> 16) & 0xff); + buffer[2] = (unsigned char)((value >> 8) & 0xff); + buffer[3] = (unsigned char)((value ) & 0xff); +} +#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / File IO / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_DISK + +#ifdef LODEPNG_COMPILE_DECODER /**/ +/* returns negative value on error. This should be pure C compatible, so no fstat. */ +static long lodepng_filesize(const char* filename) { + FILE* file; + long size; + file = fopen(filename, "rb"); + if(!file) return -1; + + if(fseek(file, 0, SEEK_END) != 0) { + fclose(file); + return -1; + } + + size = ftell(file); + /* It may give LONG_MAX as directory size, this is invalid for us. */ + if(size == LONG_MAX) size = -1; + + fclose(file); + return size; +} + +/* load file into buffer that already has the correct allocated size. Returns error code.*/ +static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename) { + FILE* file; + size_t readsize; + file = fopen(filename, "rb"); + if(!file) return 78; + + readsize = fread(out, 1, size, file); + fclose(file); + + if(readsize != size) return 78; + return 0; +} + +unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename) { + long size = lodepng_filesize(filename); + if(size < 0) return 78; + *outsize = (size_t)size; + + *out = (unsigned char*)lodepng_malloc((size_t)size); + if(!(*out) && size > 0) return 83; /*the above malloc failed*/ + + return lodepng_buffer_file(*out, (size_t)size, filename); +} +#endif /**/ + +/*write given buffer to the file, overwriting the file, it doesn't append to it.*/ +unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename) { + FILE* file; + file = fopen(filename, "wb" ); + if(!file) return 79; + fwrite(buffer, 1, buffersize, file); + fclose(file); + return 0; +} + +#endif /*LODEPNG_COMPILE_DISK*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // End of common code and tools. Begin of Zlib related code. // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_ENCODER + +typedef struct { + ucvector* data; + unsigned char bp; /*ok to overflow, indicates bit pos inside byte*/ +} LodePNGBitWriter; + +static void LodePNGBitWriter_init(LodePNGBitWriter* writer, ucvector* data) { + writer->data = data; + writer->bp = 0; +} + +/*TODO: this ignores potential out of memory errors*/ +#define WRITEBIT(writer, bit){\ + /* append new byte */\ + if(((writer->bp) & 7u) == 0) {\ + if(!ucvector_resize(writer->data, writer->data->size + 1)) return;\ + writer->data->data[writer->data->size - 1] = 0;\ + }\ + (writer->data->data[writer->data->size - 1]) |= (bit << ((writer->bp) & 7u));\ + ++writer->bp;\ +} + +/* LSB of value is written first, and LSB of bytes is used first */ +static void writeBits(LodePNGBitWriter* writer, unsigned value, size_t nbits) { + if(nbits == 1) { /* compiler should statically compile this case if nbits == 1 */ + WRITEBIT(writer, value); + } else { + /* TODO: increase output size only once here rather than in each WRITEBIT */ + size_t i; + for(i = 0; i != nbits; ++i) { + WRITEBIT(writer, (unsigned char)((value >> i) & 1)); + } + } +} + +/* This one is to use for adding huffman symbol, the value bits are written MSB first */ +static void writeBitsReversed(LodePNGBitWriter* writer, unsigned value, size_t nbits) { + size_t i; + for(i = 0; i != nbits; ++i) { + /* TODO: increase output size only once here rather than in each WRITEBIT */ + WRITEBIT(writer, (unsigned char)((value >> (nbits - 1u - i)) & 1u)); + } +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_DECODER + +typedef struct { + const unsigned char* data; + size_t size; /*size of data in bytes*/ + size_t bitsize; /*size of data in bits, end of valid bp values, should be 8*size*/ + size_t bp; + unsigned buffer; /*buffer for reading bits. NOTE: 'unsigned' must support at least 32 bits*/ +} LodePNGBitReader; + +/* data size argument is in bytes. Returns error if size too large causing overflow */ +static unsigned LodePNGBitReader_init(LodePNGBitReader* reader, const unsigned char* data, size_t size) { + size_t temp; + reader->data = data; + reader->size = size; + /* size in bits, return error if overflow (if size_t is 32 bit this supports up to 500MB) */ + if(lodepng_mulofl(size, 8u, &reader->bitsize)) return 105; + /*ensure incremented bp can be compared to bitsize without overflow even when it would be incremented 32 too much and + trying to ensure 32 more bits*/ + if(lodepng_addofl(reader->bitsize, 64u, &temp)) return 105; + reader->bp = 0; + reader->buffer = 0; + return 0; /*ok*/ +} + +/* +ensureBits functions: +Ensures the reader can at least read nbits bits in one or more readBits calls, +safely even if not enough bits are available. +The nbits parameter is unused but is given for documentation purposes, error +checking for amount of bits must be done beforehand. +*/ + +/*See ensureBits documentation above. This one ensures up to 9 bits */ +static LODEPNG_INLINE void ensureBits9(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 1u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u); + reader->buffer >>= (reader->bp & 7u); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer = reader->data[start + 0]; + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/*See ensureBits documentation above. This one ensures up to 17 bits */ +static LODEPNG_INLINE void ensureBits17(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 2u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | + ((unsigned)reader->data[start + 2] << 16u); + reader->buffer >>= (reader->bp & 7u); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer |= reader->data[start + 0]; + if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/*See ensureBits documentation above. This one ensures up to 25 bits */ +static LODEPNG_INLINE void ensureBits25(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 3u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | + ((unsigned)reader->data[start + 2] << 16u) | ((unsigned)reader->data[start + 3] << 24u); + reader->buffer >>= (reader->bp & 7u); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer |= reader->data[start + 0]; + if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); + if(start + 2u < size) reader->buffer |= ((unsigned)reader->data[start + 2] << 16u); + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/*See ensureBits documentation above. This one ensures up to 32 bits */ +static LODEPNG_INLINE void ensureBits32(LodePNGBitReader* reader, size_t nbits) { + size_t start = reader->bp >> 3u; + size_t size = reader->size; + if(start + 4u < size) { + reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | + ((unsigned)reader->data[start + 2] << 16u) | ((unsigned)reader->data[start + 3] << 24u); + reader->buffer >>= (reader->bp & 7u); + reader->buffer |= (((unsigned)reader->data[start + 4] << 24u) << (8u - (reader->bp & 7u))); + } else { + reader->buffer = 0; + if(start + 0u < size) reader->buffer |= reader->data[start + 0]; + if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); + if(start + 2u < size) reader->buffer |= ((unsigned)reader->data[start + 2] << 16u); + if(start + 3u < size) reader->buffer |= ((unsigned)reader->data[start + 3] << 24u); + reader->buffer >>= (reader->bp & 7u); + } + (void)nbits; +} + +/* Get bits without advancing the bit pointer. Must have enough bits available with ensureBits. Max nbits is 31. */ +static LODEPNG_INLINE unsigned peekBits(LodePNGBitReader* reader, size_t nbits) { + /* The shift allows nbits to be only up to 31. */ + return reader->buffer & ((1u << nbits) - 1u); +} + +/* Must have enough bits available with ensureBits */ +static LODEPNG_INLINE void advanceBits(LodePNGBitReader* reader, size_t nbits) { + reader->buffer >>= nbits; + reader->bp += nbits; +} + +/* Must have enough bits available with ensureBits */ +static LODEPNG_INLINE unsigned readBits(LodePNGBitReader* reader, size_t nbits) { + unsigned result = peekBits(reader, nbits); + advanceBits(reader, nbits); + return result; +} +#endif /*LODEPNG_COMPILE_DECODER*/ + +static unsigned reverseBits(unsigned bits, unsigned num) { + /*TODO: implement faster lookup table based version when needed*/ + unsigned i, result = 0; + for(i = 0; i < num; i++) result |= ((bits >> (num - i - 1u)) & 1u) << i; + return result; +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Deflate - Huffman / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#define FIRST_LENGTH_CODE_INDEX 257 +#define LAST_LENGTH_CODE_INDEX 285 +/*256 literals, the end code, some length codes, and 2 unused codes*/ +#define NUM_DEFLATE_CODE_SYMBOLS 288 +/*the distance codes have their own symbols, 30 used, 2 unused*/ +#define NUM_DISTANCE_SYMBOLS 32 +/*the code length codes. 0-15: code lengths, 16: copy previous 3-6 times, 17: 3-10 zeros, 18: 11-138 zeros*/ +#define NUM_CODE_LENGTH_CODES 19 + +/*the base lengths represented by codes 257-285*/ +static const unsigned LENGTHBASE[29] + = {3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, + 67, 83, 99, 115, 131, 163, 195, 227, 258}; + +/*the extra bits used by codes 257-285 (added to base length)*/ +static const unsigned LENGTHEXTRA[29] + = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, + 4, 4, 4, 4, 5, 5, 5, 5, 0}; + +/*the base backwards distances (the bits of distance codes appear after length codes and use their own huffman tree)*/ +static const unsigned DISTANCEBASE[30] + = {1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, + 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577}; + +/*the extra bits of backwards distances (added to base)*/ +static const unsigned DISTANCEEXTRA[30] + = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, + 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; + +/*the order in which "code length alphabet code lengths" are stored as specified by deflate, out of this the huffman +tree of the dynamic huffman tree lengths is generated*/ +static const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES] + = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + +/* ////////////////////////////////////////////////////////////////////////// */ + +/* +Huffman tree struct, containing multiple representations of the tree +*/ +typedef struct HuffmanTree { + unsigned* codes; /*the huffman codes (bit patterns representing the symbols)*/ + unsigned* lengths; /*the lengths of the huffman codes*/ + unsigned maxbitlen; /*maximum number of bits a single code can get*/ + unsigned numcodes; /*number of symbols in the alphabet = number of codes*/ + /* for reading only */ + unsigned char* table_len; /*length of symbol from lookup table, or max length if secondary lookup needed*/ + unsigned short* table_value; /*value of symbol from lookup table, or pointer to secondary table if needed*/ +} HuffmanTree; + +static void HuffmanTree_init(HuffmanTree* tree) { + tree->codes = NULL; + tree->lengths = NULL; + tree->table_len = NULL; + tree->table_value = NULL; +} + +static void HuffmanTree_cleanup(HuffmanTree* tree) { + lodepng_free(tree->codes); + lodepng_free(tree->lengths); + lodepng_free(tree->table_len); + lodepng_free(tree->table_value); +} + +/* amount of bits for first huffman table lookup (aka root bits), see HuffmanTree_makeTable and huffmanDecodeSymbol.*/ +/* values 8u and 9u work the fastest */ +#define FIRSTBITS 9u + +/* a symbol value too big to represent any valid symbol, to indicate reading disallowed huffman bits combination, +which is possible in case of only 0 or 1 present symbols. */ +#define INVALIDSYMBOL 65535u + +/* make table for huffman decoding */ +static unsigned HuffmanTree_makeTable(HuffmanTree* tree) { + static const unsigned headsize = 1u << FIRSTBITS; /*size of the first table*/ + static const unsigned mask = (1u << FIRSTBITS) /*headsize*/ - 1u; + size_t i, numpresent, pointer, size; /*total table size*/ + unsigned* maxlens = (unsigned*)lodepng_malloc(headsize * sizeof(unsigned)); + if(!maxlens) return 83; /*alloc fail*/ + + /* compute maxlens: max total bit length of symbols sharing prefix in the first table*/ + lodepng_memset(maxlens, 0, headsize * sizeof(*maxlens)); + for(i = 0; i < tree->numcodes; i++) { + unsigned symbol = tree->codes[i]; + unsigned l = tree->lengths[i]; + unsigned index; + if(l <= FIRSTBITS) continue; /*symbols that fit in first table don't increase secondary table size*/ + /*get the FIRSTBITS MSBs, the MSBs of the symbol are encoded first. See later comment about the reversing*/ + index = reverseBits(symbol >> (l - FIRSTBITS), FIRSTBITS); + maxlens[index] = LODEPNG_MAX(maxlens[index], l); + } + /* compute total table size: size of first table plus all secondary tables for symbols longer than FIRSTBITS */ + size = headsize; + for(i = 0; i < headsize; ++i) { + unsigned l = maxlens[i]; + if(l > FIRSTBITS) size += (((size_t)1) << (l - FIRSTBITS)); + } + tree->table_len = (unsigned char*)lodepng_malloc(size * sizeof(*tree->table_len)); + tree->table_value = (unsigned short*)lodepng_malloc(size * sizeof(*tree->table_value)); + if(!tree->table_len || !tree->table_value) { + lodepng_free(maxlens); + /* freeing tree->table values is done at a higher scope */ + return 83; /*alloc fail*/ + } + /*initialize with an invalid length to indicate unused entries*/ + for(i = 0; i < size; ++i) tree->table_len[i] = 16; + + /*fill in the first table for long symbols: max prefix size and pointer to secondary tables*/ + pointer = headsize; + for(i = 0; i < headsize; ++i) { + unsigned l = maxlens[i]; + if(l <= FIRSTBITS) continue; + tree->table_len[i] = l; + tree->table_value[i] = pointer; + pointer += (((size_t)1) << (l - FIRSTBITS)); + } + lodepng_free(maxlens); + + /*fill in the first table for short symbols, or secondary table for long symbols*/ + numpresent = 0; + for(i = 0; i < tree->numcodes; ++i) { + unsigned l = tree->lengths[i]; + unsigned symbol, reverse; + if(l == 0) continue; + symbol = tree->codes[i]; /*the huffman bit pattern. i itself is the value.*/ + /*reverse bits, because the huffman bits are given in MSB first order but the bit reader reads LSB first*/ + reverse = reverseBits(symbol, l); + numpresent++; + + if(l <= FIRSTBITS) { + /*short symbol, fully in first table, replicated num times if l < FIRSTBITS*/ + unsigned num = 1u << (FIRSTBITS - l); + unsigned j; + for(j = 0; j < num; ++j) { + /*bit reader will read the l bits of symbol first, the remaining FIRSTBITS - l bits go to the MSB's*/ + unsigned index = reverse | (j << l); + if(tree->table_len[index] != 16) return 55; /*invalid tree: long symbol shares prefix with short symbol*/ + tree->table_len[index] = l; + tree->table_value[index] = i; + } + } else { + /*long symbol, shares prefix with other long symbols in first lookup table, needs second lookup*/ + /*the FIRSTBITS MSBs of the symbol are the first table index*/ + unsigned index = reverse & mask; + unsigned maxlen = tree->table_len[index]; + /*log2 of secondary table length, should be >= l - FIRSTBITS*/ + unsigned tablelen = maxlen - FIRSTBITS; + unsigned start = tree->table_value[index]; /*starting index in secondary table*/ + unsigned num = 1u << (tablelen - (l - FIRSTBITS)); /*amount of entries of this symbol in secondary table*/ + unsigned j; + if(maxlen < l) return 55; /*invalid tree: long symbol shares prefix with short symbol*/ + for(j = 0; j < num; ++j) { + unsigned reverse2 = reverse >> FIRSTBITS; /* l - FIRSTBITS bits */ + unsigned index2 = start + (reverse2 | (j << (l - FIRSTBITS))); + tree->table_len[index2] = l; + tree->table_value[index2] = i; + } + } + } + + if(numpresent < 2) { + /* In case of exactly 1 symbol, in theory the huffman symbol needs 0 bits, + but deflate uses 1 bit instead. In case of 0 symbols, no symbols can + appear at all, but such huffman tree could still exist (e.g. if distance + codes are never used). In both cases, not all symbols of the table will be + filled in. Fill them in with an invalid symbol value so returning them from + huffmanDecodeSymbol will cause error. */ + for(i = 0; i < size; ++i) { + if(tree->table_len[i] == 16) { + /* As length, use a value smaller than FIRSTBITS for the head table, + and a value larger than FIRSTBITS for the secondary table, to ensure + valid behavior for advanceBits when reading this symbol. */ + tree->table_len[i] = (i < headsize) ? 1 : (FIRSTBITS + 1); + tree->table_value[i] = INVALIDSYMBOL; + } + } + } else { + /* A good huffman tree has N * 2 - 1 nodes, of which N - 1 are internal nodes. + If that is not the case (due to too long length codes), the table will not + have been fully used, and this is an error (not all bit combinations can be + decoded): an oversubscribed huffman tree, indicated by error 55. */ + for(i = 0; i < size; ++i) { + if(tree->table_len[i] == 16) return 55; + } + } + + return 0; +} + +/* +Second step for the ...makeFromLengths and ...makeFromFrequencies functions. +numcodes, lengths and maxbitlen must already be filled in correctly. return +value is error. +*/ +static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) { + unsigned* blcount; + unsigned* nextcode; + unsigned error = 0; + unsigned bits, n; + + tree->codes = (unsigned*)lodepng_malloc(tree->numcodes * sizeof(unsigned)); + blcount = (unsigned*)lodepng_malloc((tree->maxbitlen + 1) * sizeof(unsigned)); + nextcode = (unsigned*)lodepng_malloc((tree->maxbitlen + 1) * sizeof(unsigned)); + if(!tree->codes || !blcount || !nextcode) error = 83; /*alloc fail*/ + + if(!error) { + for(n = 0; n != tree->maxbitlen + 1; n++) blcount[n] = nextcode[n] = 0; + /*step 1: count number of instances of each code length*/ + for(bits = 0; bits != tree->numcodes; ++bits) ++blcount[tree->lengths[bits]]; + /*step 2: generate the nextcode values*/ + for(bits = 1; bits <= tree->maxbitlen; ++bits) { + nextcode[bits] = (nextcode[bits - 1] + blcount[bits - 1]) << 1u; + } + /*step 3: generate all the codes*/ + for(n = 0; n != tree->numcodes; ++n) { + if(tree->lengths[n] != 0) { + tree->codes[n] = nextcode[tree->lengths[n]]++; + /*remove superfluous bits from the code*/ + tree->codes[n] &= ((1u << tree->lengths[n]) - 1u); + } + } + } + + lodepng_free(blcount); + lodepng_free(nextcode); + + if(!error) error = HuffmanTree_makeTable(tree); + return error; +} + +/* +given the code lengths (as stored in the PNG file), generate the tree as defined +by Deflate. maxbitlen is the maximum bits that a code in the tree can have. +return value is error. +*/ +static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* bitlen, + size_t numcodes, unsigned maxbitlen) { + unsigned i; + tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned)); + if(!tree->lengths) return 83; /*alloc fail*/ + for(i = 0; i != numcodes; ++i) tree->lengths[i] = bitlen[i]; + tree->numcodes = (unsigned)numcodes; /*number of symbols*/ + tree->maxbitlen = maxbitlen; + return HuffmanTree_makeFromLengths2(tree); +} + +#ifdef LODEPNG_COMPILE_ENCODER + +/*BPM: Boundary Package Merge, see "A Fast and Space-Economical Algorithm for Length-Limited Coding", +Jyrki Katajainen, Alistair Moffat, Andrew Turpin, 1995.*/ + +/*chain node for boundary package merge*/ +typedef struct BPMNode { + int weight; /*the sum of all weights in this chain*/ + unsigned index; /*index of this leaf node (called "count" in the paper)*/ + struct BPMNode* tail; /*the next nodes in this chain (null if last)*/ + int in_use; +} BPMNode; + +/*lists of chains*/ +typedef struct BPMLists { + /*memory pool*/ + unsigned memsize; + BPMNode* memory; + unsigned numfree; + unsigned nextfree; + BPMNode** freelist; + /*two heads of lookahead chains per list*/ + unsigned listsize; + BPMNode** chains0; + BPMNode** chains1; +} BPMLists; + +/*creates a new chain node with the given parameters, from the memory in the lists */ +static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail) { + unsigned i; + BPMNode* result; + + /*memory full, so garbage collect*/ + if(lists->nextfree >= lists->numfree) { + /*mark only those that are in use*/ + for(i = 0; i != lists->memsize; ++i) lists->memory[i].in_use = 0; + for(i = 0; i != lists->listsize; ++i) { + BPMNode* node; + for(node = lists->chains0[i]; node != NULL; node = node->tail) node->in_use = 1; + for(node = lists->chains1[i]; node != NULL; node = node->tail) node->in_use = 1; + } + /*collect those that are free*/ + lists->numfree = 0; + for(i = 0; i != lists->memsize; ++i) { + if(!lists->memory[i].in_use) lists->freelist[lists->numfree++] = &lists->memory[i]; + } + lists->nextfree = 0; + } + + result = lists->freelist[lists->nextfree++]; + result->weight = weight; + result->index = index; + result->tail = tail; + return result; +} + +/*sort the leaves with stable mergesort*/ +static void bpmnode_sort(BPMNode* leaves, size_t num) { + BPMNode* mem = (BPMNode*)lodepng_malloc(sizeof(*leaves) * num); + size_t width, counter = 0; + for(width = 1; width < num; width *= 2) { + BPMNode* a = (counter & 1) ? mem : leaves; + BPMNode* b = (counter & 1) ? leaves : mem; + size_t p; + for(p = 0; p < num; p += 2 * width) { + size_t q = (p + width > num) ? num : (p + width); + size_t r = (p + 2 * width > num) ? num : (p + 2 * width); + size_t i = p, j = q, k; + for(k = p; k < r; k++) { + if(i < q && (j >= r || a[i].weight <= a[j].weight)) b[k] = a[i++]; + else b[k] = a[j++]; + } + } + counter++; + } + if(counter & 1) lodepng_memcpy(leaves, mem, sizeof(*leaves) * num); + lodepng_free(mem); +} + +/*Boundary Package Merge step, numpresent is the amount of leaves, and c is the current chain.*/ +static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num) { + unsigned lastindex = lists->chains1[c]->index; + + if(c == 0) { + if(lastindex >= numpresent) return; + lists->chains0[c] = lists->chains1[c]; + lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, NULL); + } else { + /*sum of the weights of the head nodes of the previous lookahead chains.*/ + int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight; + lists->chains0[c] = lists->chains1[c]; + if(lastindex < numpresent && sum > leaves[lastindex].weight) { + lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, lists->chains1[c]->tail); + return; + } + lists->chains1[c] = bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]); + /*in the end we are only interested in the chain of the last list, so no + need to recurse if we're at the last one (this gives measurable speedup)*/ + if(num + 1 < (int)(2 * numpresent - 2)) { + boundaryPM(lists, leaves, numpresent, c - 1, num); + boundaryPM(lists, leaves, numpresent, c - 1, num); + } + } +} + +unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, + size_t numcodes, unsigned maxbitlen) { + unsigned error = 0; + unsigned i; + size_t numpresent = 0; /*number of symbols with non-zero frequency*/ + BPMNode* leaves; /*the symbols, only those with > 0 frequency*/ + + if(numcodes == 0) return 80; /*error: a tree of 0 symbols is not supposed to be made*/ + if((1u << maxbitlen) < (unsigned)numcodes) return 80; /*error: represent all symbols*/ + + leaves = (BPMNode*)lodepng_malloc(numcodes * sizeof(*leaves)); + if(!leaves) return 83; /*alloc fail*/ + + for(i = 0; i != numcodes; ++i) { + if(frequencies[i] > 0) { + leaves[numpresent].weight = (int)frequencies[i]; + leaves[numpresent].index = i; + ++numpresent; + } + } + + lodepng_memset(lengths, 0, numcodes * sizeof(*lengths)); + + /*ensure at least two present symbols. There should be at least one symbol + according to RFC 1951 section 3.2.7. Some decoders incorrectly require two. To + make these work as well ensure there are at least two symbols. The + Package-Merge code below also doesn't work correctly if there's only one + symbol, it'd give it the theoretical 0 bits but in practice zlib wants 1 bit*/ + if(numpresent == 0) { + lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only lengths[0] = 1 is needed*/ + } else if(numpresent == 1) { + lengths[leaves[0].index] = 1; + lengths[leaves[0].index == 0 ? 1 : 0] = 1; + } else { + BPMLists lists; + BPMNode* node; + + bpmnode_sort(leaves, numpresent); + + lists.listsize = maxbitlen; + lists.memsize = 2 * maxbitlen * (maxbitlen + 1); + lists.nextfree = 0; + lists.numfree = lists.memsize; + lists.memory = (BPMNode*)lodepng_malloc(lists.memsize * sizeof(*lists.memory)); + lists.freelist = (BPMNode**)lodepng_malloc(lists.memsize * sizeof(BPMNode*)); + lists.chains0 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); + lists.chains1 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*)); + if(!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) error = 83; /*alloc fail*/ + + if(!error) { + for(i = 0; i != lists.memsize; ++i) lists.freelist[i] = &lists.memory[i]; + + bpmnode_create(&lists, leaves[0].weight, 1, NULL); + bpmnode_create(&lists, leaves[1].weight, 2, NULL); + + for(i = 0; i != lists.listsize; ++i) { + lists.chains0[i] = &lists.memory[0]; + lists.chains1[i] = &lists.memory[1]; + } + + /*each boundaryPM call adds one chain to the last list, and we need 2 * numpresent - 2 chains.*/ + for(i = 2; i != 2 * numpresent - 2; ++i) boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i); + + for(node = lists.chains1[maxbitlen - 1]; node; node = node->tail) { + for(i = 0; i != node->index; ++i) ++lengths[leaves[i].index]; + } + } + + lodepng_free(lists.memory); + lodepng_free(lists.freelist); + lodepng_free(lists.chains0); + lodepng_free(lists.chains1); + } + + lodepng_free(leaves); + return error; +} + +/*Create the Huffman tree given the symbol frequencies*/ +static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies, + size_t mincodes, size_t numcodes, unsigned maxbitlen) { + unsigned error = 0; + while(!frequencies[numcodes - 1] && numcodes > mincodes) --numcodes; /*trim zeroes*/ + tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned)); + if(!tree->lengths) return 83; /*alloc fail*/ + tree->maxbitlen = maxbitlen; + tree->numcodes = (unsigned)numcodes; /*number of symbols*/ + + error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen); + if(!error) error = HuffmanTree_makeFromLengths2(tree); + return error; +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +/*get the literal and length code tree of a deflated block with fixed tree, as per the deflate specification*/ +static unsigned generateFixedLitLenTree(HuffmanTree* tree) { + unsigned i, error = 0; + unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); + if(!bitlen) return 83; /*alloc fail*/ + + /*288 possible codes: 0-255=literals, 256=endcode, 257-285=lengthcodes, 286-287=unused*/ + for(i = 0; i <= 143; ++i) bitlen[i] = 8; + for(i = 144; i <= 255; ++i) bitlen[i] = 9; + for(i = 256; i <= 279; ++i) bitlen[i] = 7; + for(i = 280; i <= 287; ++i) bitlen[i] = 8; + + error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DEFLATE_CODE_SYMBOLS, 15); + + lodepng_free(bitlen); + return error; +} + +/*get the distance code tree of a deflated block with fixed tree, as specified in the deflate specification*/ +static unsigned generateFixedDistanceTree(HuffmanTree* tree) { + unsigned i, error = 0; + unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); + if(!bitlen) return 83; /*alloc fail*/ + + /*there are 32 distance codes, but 30-31 are unused*/ + for(i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen[i] = 5; + error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DISTANCE_SYMBOLS, 15); + + lodepng_free(bitlen); + return error; +} + +#ifdef LODEPNG_COMPILE_DECODER + +/* +returns the code. The bit reader must already have been ensured at least 15 bits +*/ +static unsigned huffmanDecodeSymbol(LodePNGBitReader* reader, const HuffmanTree* codetree) { + unsigned short code = peekBits(reader, FIRSTBITS); + unsigned short l = codetree->table_len[code]; + unsigned short value = codetree->table_value[code]; + if(l <= FIRSTBITS) { + advanceBits(reader, l); + return value; + } else { + advanceBits(reader, FIRSTBITS); + value += peekBits(reader, l - FIRSTBITS); + advanceBits(reader, codetree->table_len[value] - FIRSTBITS); + return codetree->table_value[value]; + } +} +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_DECODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Inflator (Decompressor) / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*get the tree of a deflated block with fixed tree, as specified in the deflate specification +Returns error code.*/ +static unsigned getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) { + unsigned error = generateFixedLitLenTree(tree_ll); + if(error) return error; + return generateFixedDistanceTree(tree_d); +} + +/*get the tree of a deflated block with dynamic tree, the tree itself is also Huffman compressed with a known tree*/ +static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d, + LodePNGBitReader* reader) { + /*make sure that length values that aren't filled in will be 0, or a wrong tree will be generated*/ + unsigned error = 0; + unsigned n, HLIT, HDIST, HCLEN, i; + + /*see comments in deflateDynamic for explanation of the context and these variables, it is analogous*/ + unsigned* bitlen_ll = NULL; /*lit,len code lengths*/ + unsigned* bitlen_d = NULL; /*dist code lengths*/ + /*code length code lengths ("clcl"), the bit lengths of the huffman tree used to compress bitlen_ll and bitlen_d*/ + unsigned* bitlen_cl = NULL; + HuffmanTree tree_cl; /*the code tree for code length codes (the huffman tree for compressed huffman trees)*/ + + if(reader->bitsize - reader->bp < 14) return 49; /*error: the bit pointer is or will go past the memory*/ + ensureBits17(reader, 14); + + /*number of literal/length codes + 257. Unlike the spec, the value 257 is added to it here already*/ + HLIT = readBits(reader, 5) + 257; + /*number of distance codes. Unlike the spec, the value 1 is added to it here already*/ + HDIST = readBits(reader, 5) + 1; + /*number of code length codes. Unlike the spec, the value 4 is added to it here already*/ + HCLEN = readBits(reader, 4) + 4; + + bitlen_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned)); + if(!bitlen_cl) return 83 /*alloc fail*/; + + HuffmanTree_init(&tree_cl); + + while(!error) { + /*read the code length codes out of 3 * (amount of code length codes) bits*/ + if(lodepng_gtofl(reader->bp, HCLEN * 3, reader->bitsize)) { + ERROR_BREAK(50); /*error: the bit pointer is or will go past the memory*/ + } + for(i = 0; i != HCLEN; ++i) { + ensureBits9(reader, 3); /*out of bounds already checked above */ + bitlen_cl[CLCL_ORDER[i]] = readBits(reader, 3); + } + for(i = HCLEN; i != NUM_CODE_LENGTH_CODES; ++i) { + bitlen_cl[CLCL_ORDER[i]] = 0; + } + + error = HuffmanTree_makeFromLengths(&tree_cl, bitlen_cl, NUM_CODE_LENGTH_CODES, 7); + if(error) break; + + /*now we can use this tree to read the lengths for the tree that this function will return*/ + bitlen_ll = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); + bitlen_d = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); + if(!bitlen_ll || !bitlen_d) ERROR_BREAK(83 /*alloc fail*/); + lodepng_memset(bitlen_ll, 0, NUM_DEFLATE_CODE_SYMBOLS * sizeof(*bitlen_ll)); + lodepng_memset(bitlen_d, 0, NUM_DISTANCE_SYMBOLS * sizeof(*bitlen_d)); + + /*i is the current symbol we're reading in the part that contains the code lengths of lit/len and dist codes*/ + i = 0; + while(i < HLIT + HDIST) { + unsigned code; + ensureBits25(reader, 22); /* up to 15 bits for huffman code, up to 7 extra bits below*/ + code = huffmanDecodeSymbol(reader, &tree_cl); + if(code <= 15) /*a length code*/ { + if(i < HLIT) bitlen_ll[i] = code; + else bitlen_d[i - HLIT] = code; + ++i; + } else if(code == 16) /*repeat previous*/ { + unsigned replength = 3; /*read in the 2 bits that indicate repeat length (3-6)*/ + unsigned value; /*set value to the previous code*/ + + if(i == 0) ERROR_BREAK(54); /*can't repeat previous if i is 0*/ + + replength += readBits(reader, 2); + + if(i < HLIT + 1) value = bitlen_ll[i - 1]; + else value = bitlen_d[i - HLIT - 1]; + /*repeat this value in the next lengths*/ + for(n = 0; n < replength; ++n) { + if(i >= HLIT + HDIST) ERROR_BREAK(13); /*error: i is larger than the amount of codes*/ + if(i < HLIT) bitlen_ll[i] = value; + else bitlen_d[i - HLIT] = value; + ++i; + } + } else if(code == 17) /*repeat "0" 3-10 times*/ { + unsigned replength = 3; /*read in the bits that indicate repeat length*/ + replength += readBits(reader, 3); + + /*repeat this value in the next lengths*/ + for(n = 0; n < replength; ++n) { + if(i >= HLIT + HDIST) ERROR_BREAK(14); /*error: i is larger than the amount of codes*/ + + if(i < HLIT) bitlen_ll[i] = 0; + else bitlen_d[i - HLIT] = 0; + ++i; + } + } else if(code == 18) /*repeat "0" 11-138 times*/ { + unsigned replength = 11; /*read in the bits that indicate repeat length*/ + replength += readBits(reader, 7); + + /*repeat this value in the next lengths*/ + for(n = 0; n < replength; ++n) { + if(i >= HLIT + HDIST) ERROR_BREAK(15); /*error: i is larger than the amount of codes*/ + + if(i < HLIT) bitlen_ll[i] = 0; + else bitlen_d[i - HLIT] = 0; + ++i; + } + } else /*if(code == INVALIDSYMBOL)*/ { + ERROR_BREAK(16); /*error: tried to read disallowed huffman symbol*/ + } + /*check if any of the ensureBits above went out of bounds*/ + if(reader->bp > reader->bitsize) { + /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol + (10=no endcode, 11=wrong jump outside of tree)*/ + /* TODO: revise error codes 10,11,50: the above comment is no longer valid */ + ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ + } + } + if(error) break; + + if(bitlen_ll[256] == 0) ERROR_BREAK(64); /*the length of the end code 256 must be larger than 0*/ + + /*now we've finally got HLIT and HDIST, so generate the code trees, and the function is done*/ + error = HuffmanTree_makeFromLengths(tree_ll, bitlen_ll, NUM_DEFLATE_CODE_SYMBOLS, 15); + if(error) break; + error = HuffmanTree_makeFromLengths(tree_d, bitlen_d, NUM_DISTANCE_SYMBOLS, 15); + + break; /*end of error-while*/ + } + + lodepng_free(bitlen_cl); + lodepng_free(bitlen_ll); + lodepng_free(bitlen_d); + HuffmanTree_cleanup(&tree_cl); + + return error; +} + +/*inflate a block with dynamic of fixed Huffman tree. btype must be 1 or 2.*/ +static unsigned inflateHuffmanBlock(ucvector* out, LodePNGBitReader* reader, + unsigned btype, size_t max_output_size) { + unsigned error = 0; + HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/ + HuffmanTree tree_d; /*the huffman tree for distance codes*/ + const size_t reserved_size = 260; /* must be at least 258 for max length, and a few extra for adding a few extra literals */ + int done = 0; + + if(!ucvector_reserve(out, out->size + reserved_size)) return 83; /*alloc fail*/ + + HuffmanTree_init(&tree_ll); + HuffmanTree_init(&tree_d); + + if(btype == 1) error = getTreeInflateFixed(&tree_ll, &tree_d); + else /*if(btype == 2)*/ error = getTreeInflateDynamic(&tree_ll, &tree_d, reader); + + + while(!error && !done) /*decode all symbols until end reached, breaks at end code*/ { + /*code_ll is literal, length or end code*/ + unsigned code_ll; + /* ensure enough bits for 2 huffman code reads (15 bits each): if the first is a literal, a second literal is read at once. This + appears to be slightly faster, than ensuring 20 bits here for 1 huffman symbol and the potential 5 extra bits for the length symbol.*/ + ensureBits32(reader, 30); + code_ll = huffmanDecodeSymbol(reader, &tree_ll); + if(code_ll <= 255) { + /*slightly faster code path if multiple literals in a row*/ + out->data[out->size++] = (unsigned char)code_ll; + code_ll = huffmanDecodeSymbol(reader, &tree_ll); + } + if(code_ll <= 255) /*literal symbol*/ { + out->data[out->size++] = (unsigned char)code_ll; + } else if(code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ { + unsigned code_d, distance; + unsigned numextrabits_l, numextrabits_d; /*extra bits for length and distance*/ + size_t start, backward, length; + + /*part 1: get length base*/ + length = LENGTHBASE[code_ll - FIRST_LENGTH_CODE_INDEX]; + + /*part 2: get extra bits and add the value of that to length*/ + numextrabits_l = LENGTHEXTRA[code_ll - FIRST_LENGTH_CODE_INDEX]; + if(numextrabits_l != 0) { + /* bits already ensured above */ + ensureBits25(reader, 5); + length += readBits(reader, numextrabits_l); + } + + /*part 3: get distance code*/ + ensureBits32(reader, 28); /* up to 15 for the huffman symbol, up to 13 for the extra bits */ + code_d = huffmanDecodeSymbol(reader, &tree_d); + if(code_d > 29) { + if(code_d <= 31) { + ERROR_BREAK(18); /*error: invalid distance code (30-31 are never used)*/ + } else /* if(code_d == INVALIDSYMBOL) */{ + ERROR_BREAK(16); /*error: tried to read disallowed huffman symbol*/ + } + } + distance = DISTANCEBASE[code_d]; + + /*part 4: get extra bits from distance*/ + numextrabits_d = DISTANCEEXTRA[code_d]; + if(numextrabits_d != 0) { + /* bits already ensured above */ + distance += readBits(reader, numextrabits_d); + } + + /*part 5: fill in all the out[n] values based on the length and dist*/ + start = out->size; + if(distance > start) ERROR_BREAK(52); /*too long backward distance*/ + backward = start - distance; + + out->size += length; + if(distance < length) { + size_t forward; + lodepng_memcpy(out->data + start, out->data + backward, distance); + start += distance; + for(forward = distance; forward < length; ++forward) { + out->data[start++] = out->data[backward++]; + } + } else { + lodepng_memcpy(out->data + start, out->data + backward, length); + } + } else if(code_ll == 256) { + done = 1; /*end code, finish the loop*/ + } else /*if(code_ll == INVALIDSYMBOL)*/ { + ERROR_BREAK(16); /*error: tried to read disallowed huffman symbol*/ + } + if(out->allocsize - out->size < reserved_size) { + if(!ucvector_reserve(out, out->size + reserved_size)) ERROR_BREAK(83); /*alloc fail*/ + } + /*check if any of the ensureBits above went out of bounds*/ + if(reader->bp > reader->bitsize) { + /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol + (10=no endcode, 11=wrong jump outside of tree)*/ + /* TODO: revise error codes 10,11,50: the above comment is no longer valid */ + ERROR_BREAK(51); /*error, bit pointer jumps past memory*/ + } + if(max_output_size && out->size > max_output_size) { + ERROR_BREAK(109); /*error, larger than max size*/ + } + } + + HuffmanTree_cleanup(&tree_ll); + HuffmanTree_cleanup(&tree_d); + + return error; +} + +static unsigned inflateNoCompression(ucvector* out, LodePNGBitReader* reader, + const LodePNGDecompressSettings* settings) { + size_t bytepos; + size_t size = reader->size; + unsigned LEN, NLEN, error = 0; + + /*go to first boundary of byte*/ + bytepos = (reader->bp + 7u) >> 3u; + + /*read LEN (2 bytes) and NLEN (2 bytes)*/ + if(bytepos + 4 >= size) return 52; /*error, bit pointer will jump past memory*/ + LEN = (unsigned)reader->data[bytepos] + ((unsigned)reader->data[bytepos + 1] << 8u); bytepos += 2; + NLEN = (unsigned)reader->data[bytepos] + ((unsigned)reader->data[bytepos + 1] << 8u); bytepos += 2; + + /*check if 16-bit NLEN is really the one's complement of LEN*/ + if(!settings->ignore_nlen && LEN + NLEN != 65535) { + return 21; /*error: NLEN is not one's complement of LEN*/ + } + + if(!ucvector_resize(out, out->size + LEN)) return 83; /*alloc fail*/ + + /*read the literal data: LEN bytes are now stored in the out buffer*/ + if(bytepos + LEN > size) return 23; /*error: reading outside of in buffer*/ + + /*out->data can be NULL (when LEN is zero), and arithmetics on NULL ptr is undefined*/ + if (LEN) { + lodepng_memcpy(out->data + out->size - LEN, reader->data + bytepos, LEN); + bytepos += LEN; + } + + reader->bp = bytepos << 3u; + + return error; +} + +static unsigned lodepng_inflatev(ucvector* out, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + unsigned BFINAL = 0; + LodePNGBitReader reader; + unsigned error = LodePNGBitReader_init(&reader, in, insize); + + if(error) return error; + + while(!BFINAL) { + unsigned BTYPE; + if(reader.bitsize - reader.bp < 3) return 52; /*error, bit pointer will jump past memory*/ + ensureBits9(&reader, 3); + BFINAL = readBits(&reader, 1); + BTYPE = readBits(&reader, 2); + + if(BTYPE == 3) return 20; /*error: invalid BTYPE*/ + else if(BTYPE == 0) error = inflateNoCompression(out, &reader, settings); /*no compression*/ + else error = inflateHuffmanBlock(out, &reader, BTYPE, settings->max_output_size); /*compression, BTYPE 01 or 10*/ + if(!error && settings->max_output_size && out->size > settings->max_output_size) error = 109; + if(error) break; + } + + return error; +} + +unsigned lodepng_inflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_inflatev(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + return error; +} + +static unsigned inflatev(ucvector* out, const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + if(settings->custom_inflate) { + unsigned error = settings->custom_inflate(&out->data, &out->size, in, insize, settings); + out->allocsize = out->size; + if(error) { + /*the custom inflate is allowed to have its own error codes, however, we translate it to code 110*/ + error = 110; + /*if there's a max output size, and the custom zlib returned error, then indicate that error instead*/ + if(settings->max_output_size && out->size > settings->max_output_size) error = 109; + } + return error; + } else { + return lodepng_inflatev(out, in, insize, settings); + } +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Deflator (Compressor) / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +static const size_t MAX_SUPPORTED_DEFLATE_LENGTH = 258; + +/*search the index in the array, that has the largest value smaller than or equal to the given value, +given array must be sorted (if no value is smaller, it returns the size of the given array)*/ +static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value) { + /*binary search (only small gain over linear). TODO: use CPU log2 instruction for getting symbols instead*/ + size_t left = 1; + size_t right = array_size - 1; + + while(left <= right) { + size_t mid = (left + right) >> 1; + if(array[mid] >= value) right = mid - 1; + else left = mid + 1; + } + if(left >= array_size || array[left] > value) left--; + return left; +} + +static void addLengthDistance(uivector* values, size_t length, size_t distance) { + /*values in encoded vector are those used by deflate: + 0-255: literal bytes + 256: end + 257-285: length/distance pair (length code, followed by extra length bits, distance code, extra distance bits) + 286-287: invalid*/ + + unsigned length_code = (unsigned)searchCodeIndex(LENGTHBASE, 29, length); + unsigned extra_length = (unsigned)(length - LENGTHBASE[length_code]); + unsigned dist_code = (unsigned)searchCodeIndex(DISTANCEBASE, 30, distance); + unsigned extra_distance = (unsigned)(distance - DISTANCEBASE[dist_code]); + + size_t pos = values->size; + /*TODO: return error when this fails (out of memory)*/ + unsigned ok = uivector_resize(values, values->size + 4); + if(ok) { + values->data[pos + 0] = length_code + FIRST_LENGTH_CODE_INDEX; + values->data[pos + 1] = extra_length; + values->data[pos + 2] = dist_code; + values->data[pos + 3] = extra_distance; + } +} + +/*3 bytes of data get encoded into two bytes. The hash cannot use more than 3 +bytes as input because 3 is the minimum match length for deflate*/ +static const unsigned HASH_NUM_VALUES = 65536; +static const unsigned HASH_BIT_MASK = 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/ + +typedef struct Hash { + int* head; /*hash value to head circular pos - can be outdated if went around window*/ + /*circular pos to prev circular pos*/ + unsigned short* chain; + int* val; /*circular pos to hash value*/ + + /*TODO: do this not only for zeros but for any repeated byte. However for PNG + it's always going to be the zeros that dominate, so not important for PNG*/ + int* headz; /*similar to head, but for chainz*/ + unsigned short* chainz; /*those with same amount of zeros*/ + unsigned short* zeros; /*length of zeros streak, used as a second hash chain*/ +} Hash; + +static unsigned hash_init(Hash* hash, unsigned windowsize) { + unsigned i; + hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); + hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize); + hash->chain = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); + + hash->zeros = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); + hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); + hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); + + if(!hash->head || !hash->chain || !hash->val || !hash->headz|| !hash->chainz || !hash->zeros) { + return 83; /*alloc fail*/ + } + + /*initialize hash table*/ + for(i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1; + for(i = 0; i != windowsize; ++i) hash->val[i] = -1; + for(i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized*/ + + for(i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1; + for(i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialized*/ + + return 0; +} + +static void hash_cleanup(Hash* hash) { + lodepng_free(hash->head); + lodepng_free(hash->val); + lodepng_free(hash->chain); + + lodepng_free(hash->zeros); + lodepng_free(hash->headz); + lodepng_free(hash->chainz); +} + + + +static unsigned getHash(const unsigned char* data, size_t size, size_t pos) { + unsigned result = 0; + if(pos + 2 < size) { + /*A simple shift and xor hash is used. Since the data of PNGs is dominated + by zeroes due to the filters, a better hash does not have a significant + effect on speed in traversing the chain, and causes more time spend on + calculating the hash.*/ + result ^= ((unsigned)data[pos + 0] << 0u); + result ^= ((unsigned)data[pos + 1] << 4u); + result ^= ((unsigned)data[pos + 2] << 8u); + } else { + size_t amount, i; + if(pos >= size) return 0; + amount = size - pos; + for(i = 0; i != amount; ++i) result ^= ((unsigned)data[pos + i] << (i * 8u)); + } + return result & HASH_BIT_MASK; +} + +static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) { + const unsigned char* start = data + pos; + const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH; + if(end > data + size) end = data + size; + data = start; + while(data != end && *data == 0) ++data; + /*subtracting two addresses returned as 32-bit number (max value is MAX_SUPPORTED_DEFLATE_LENGTH)*/ + return (unsigned)(data - start); +} + +/*wpos = pos & (windowsize - 1)*/ +static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) { + hash->val[wpos] = (int)hashval; + if(hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval]; + hash->head[hashval] = (int)wpos; + + hash->zeros[wpos] = numzeros; + if(hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros]; + hash->headz[numzeros] = (int)wpos; +} + +/* +LZ77-encode the data. Return value is error code. The input are raw bytes, the output +is in the form of unsigned integers with codes representing for example literal bytes, or +length/distance pairs. +It uses a hash table technique to let it encode faster. When doing LZ77 encoding, a +sliding window (of windowsize) is used, and all past bytes in that window can be used as +the "dictionary". A brute force search through all possible distances would be slow, and +this hash technique is one out of several ways to speed this up. +*/ +static unsigned encodeLZ77(uivector* out, Hash* hash, + const unsigned char* in, size_t inpos, size_t insize, unsigned windowsize, + unsigned minmatch, unsigned nicematch, unsigned lazymatching) { + size_t pos; + unsigned i, error = 0; + /*for large window lengths, assume the user wants no compression loss. Otherwise, max hash chain length speedup.*/ + unsigned maxchainlength = windowsize >= 8192 ? windowsize : windowsize / 8u; + unsigned maxlazymatch = windowsize >= 8192 ? MAX_SUPPORTED_DEFLATE_LENGTH : 64; + + unsigned usezeros = 1; /*not sure if setting it to false for windowsize < 8192 is better or worse*/ + unsigned numzeros = 0; + + unsigned offset; /*the offset represents the distance in LZ77 terminology*/ + unsigned length; + unsigned lazy = 0; + unsigned lazylength = 0, lazyoffset = 0; + unsigned hashval; + unsigned current_offset, current_length; + unsigned prev_offset; + const unsigned char *lastptr, *foreptr, *backptr; + unsigned hashpos; + + if(windowsize == 0 || windowsize > 32768) return 60; /*error: windowsize smaller/larger than allowed*/ + if((windowsize & (windowsize - 1)) != 0) return 90; /*error: must be power of two*/ + + if(nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) nicematch = MAX_SUPPORTED_DEFLATE_LENGTH; + + for(pos = inpos; pos < insize; ++pos) { + size_t wpos = pos & (windowsize - 1); /*position for in 'circular' hash buffers*/ + unsigned chainlength = 0; + + hashval = getHash(in, insize, pos); + + if(usezeros && hashval == 0) { + if(numzeros == 0) numzeros = countZeros(in, insize, pos); + else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; + } else { + numzeros = 0; + } + + updateHashChain(hash, wpos, hashval, numzeros); + + /*the length and offset found for the current position*/ + length = 0; + offset = 0; + + hashpos = hash->chain[wpos]; + + lastptr = &in[insize < pos + MAX_SUPPORTED_DEFLATE_LENGTH ? insize : pos + MAX_SUPPORTED_DEFLATE_LENGTH]; + + /*search for the longest string*/ + prev_offset = 0; + for(;;) { + if(chainlength++ >= maxchainlength) break; + current_offset = (unsigned)(hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize); + + if(current_offset < prev_offset) break; /*stop when went completely around the circular buffer*/ + prev_offset = current_offset; + if(current_offset > 0) { + /*test the next characters*/ + foreptr = &in[pos]; + backptr = &in[pos - current_offset]; + + /*common case in PNGs is lots of zeros. Quickly skip over them as a speedup*/ + if(numzeros >= 3) { + unsigned skip = hash->zeros[hashpos]; + if(skip > numzeros) skip = numzeros; + backptr += skip; + foreptr += skip; + } + + while(foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/ { + ++backptr; + ++foreptr; + } + current_length = (unsigned)(foreptr - &in[pos]); + + if(current_length > length) { + length = current_length; /*the longest length*/ + offset = current_offset; /*the offset that is related to this longest length*/ + /*jump out once a length of max length is found (speed gain). This also jumps + out if length is MAX_SUPPORTED_DEFLATE_LENGTH*/ + if(current_length >= nicematch) break; + } + } + + if(hashpos == hash->chain[hashpos]) break; + + if(numzeros >= 3 && length > numzeros) { + hashpos = hash->chainz[hashpos]; + if(hash->zeros[hashpos] != numzeros) break; + } else { + hashpos = hash->chain[hashpos]; + /*outdated hash value, happens if particular value was not encountered in whole last window*/ + if(hash->val[hashpos] != (int)hashval) break; + } + } + + if(lazymatching) { + if(!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH) { + lazy = 1; + lazylength = length; + lazyoffset = offset; + continue; /*try the next byte*/ + } + if(lazy) { + lazy = 0; + if(pos == 0) ERROR_BREAK(81); + if(length > lazylength + 1) { + /*push the previous character as literal*/ + if(!uivector_push_back(out, in[pos - 1])) ERROR_BREAK(83 /*alloc fail*/); + } else { + length = lazylength; + offset = lazyoffset; + hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alteration*/ + hash->headz[numzeros] = -1; /*idem*/ + --pos; + } + } + } + if(length >= 3 && offset > windowsize) ERROR_BREAK(86 /*too big (or overflown negative) offset*/); + + /*encode it as length/distance pair or literal value*/ + if(length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/ { + if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); + } else if(length < minmatch || (length == 3 && offset > 4096)) { + /*compensate for the fact that longer offsets have more extra bits, a + length of only 3 may be not worth it then*/ + if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/); + } else { + addLengthDistance(out, length, offset); + for(i = 1; i < length; ++i) { + ++pos; + wpos = pos & (windowsize - 1); + hashval = getHash(in, insize, pos); + if(usezeros && hashval == 0) { + if(numzeros == 0) numzeros = countZeros(in, insize, pos); + else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros; + } else { + numzeros = 0; + } + updateHashChain(hash, wpos, hashval, numzeros); + } + } + } /*end of the loop through each character of input*/ + + return error; +} + +/* /////////////////////////////////////////////////////////////////////////// */ + +static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize) { + /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it jumps to start of next byte, + 2 bytes LEN, 2 bytes NLEN, LEN bytes literal DATA*/ + + size_t i, numdeflateblocks = (datasize + 65534u) / 65535u; + unsigned datapos = 0; + for(i = 0; i != numdeflateblocks; ++i) { + unsigned BFINAL, BTYPE, LEN, NLEN; + unsigned char firstbyte; + size_t pos = out->size; + + BFINAL = (i == numdeflateblocks - 1); + BTYPE = 0; + + LEN = 65535; + if(datasize - datapos < 65535u) LEN = (unsigned)datasize - datapos; + NLEN = 65535 - LEN; + + if(!ucvector_resize(out, out->size + LEN + 5)) return 83; /*alloc fail*/ + + firstbyte = (unsigned char)(BFINAL + ((BTYPE & 1u) << 1u) + ((BTYPE & 2u) << 1u)); + out->data[pos + 0] = firstbyte; + out->data[pos + 1] = (unsigned char)(LEN & 255); + out->data[pos + 2] = (unsigned char)(LEN >> 8u); + out->data[pos + 3] = (unsigned char)(NLEN & 255); + out->data[pos + 4] = (unsigned char)(NLEN >> 8u); + lodepng_memcpy(out->data + pos + 5, data + datapos, LEN); + datapos += LEN; + } + + return 0; +} + +/* +write the lz77-encoded data, which has lit, len and dist codes, to compressed stream using huffman trees. +tree_ll: the tree for lit and len codes. +tree_d: the tree for distance codes. +*/ +static void writeLZ77data(LodePNGBitWriter* writer, const uivector* lz77_encoded, + const HuffmanTree* tree_ll, const HuffmanTree* tree_d) { + size_t i = 0; + for(i = 0; i != lz77_encoded->size; ++i) { + unsigned val = lz77_encoded->data[i]; + writeBitsReversed(writer, tree_ll->codes[val], tree_ll->lengths[val]); + if(val > 256) /*for a length code, 3 more things have to be added*/ { + unsigned length_index = val - FIRST_LENGTH_CODE_INDEX; + unsigned n_length_extra_bits = LENGTHEXTRA[length_index]; + unsigned length_extra_bits = lz77_encoded->data[++i]; + + unsigned distance_code = lz77_encoded->data[++i]; + + unsigned distance_index = distance_code; + unsigned n_distance_extra_bits = DISTANCEEXTRA[distance_index]; + unsigned distance_extra_bits = lz77_encoded->data[++i]; + + writeBits(writer, length_extra_bits, n_length_extra_bits); + writeBitsReversed(writer, tree_d->codes[distance_code], tree_d->lengths[distance_code]); + writeBits(writer, distance_extra_bits, n_distance_extra_bits); + } + } +} + +/*Deflate for a block of type "dynamic", that is, with freely, optimally, created huffman trees*/ +static unsigned deflateDynamic(LodePNGBitWriter* writer, Hash* hash, + const unsigned char* data, size_t datapos, size_t dataend, + const LodePNGCompressSettings* settings, unsigned final) { + unsigned error = 0; + + /* + A block is compressed as follows: The PNG data is lz77 encoded, resulting in + literal bytes and length/distance pairs. This is then huffman compressed with + two huffman trees. One huffman tree is used for the lit and len values ("ll"), + another huffman tree is used for the dist values ("d"). These two trees are + stored using their code lengths, and to compress even more these code lengths + are also run-length encoded and huffman compressed. This gives a huffman tree + of code lengths "cl". The code lengths used to describe this third tree are + the code length code lengths ("clcl"). + */ + + /*The lz77 encoded data, represented with integers since there will also be length and distance codes in it*/ + uivector lz77_encoded; + HuffmanTree tree_ll; /*tree for lit,len values*/ + HuffmanTree tree_d; /*tree for distance codes*/ + HuffmanTree tree_cl; /*tree for encoding the code lengths representing tree_ll and tree_d*/ + unsigned* frequencies_ll = NULL; /*frequency of lit,len codes*/ + unsigned* frequencies_d = NULL; /*frequency of dist codes*/ + unsigned* frequencies_cl = NULL; /*frequency of code length codes*/ + unsigned* bitlen_lld = NULL; /*lit,len,dist code lengths (int bits), literally (without repeat codes).*/ + unsigned* bitlen_lld_e = NULL; /*bitlen_lld encoded with repeat codes (this is a rudimentary run length compression)*/ + size_t datasize = dataend - datapos; + + /* + If we could call "bitlen_cl" the the code length code lengths ("clcl"), that is the bit lengths of codes to represent + tree_cl in CLCL_ORDER, then due to the huffman compression of huffman tree representations ("two levels"), there are + some analogies: + bitlen_lld is to tree_cl what data is to tree_ll and tree_d. + bitlen_lld_e is to bitlen_lld what lz77_encoded is to data. + bitlen_cl is to bitlen_lld_e what bitlen_lld is to lz77_encoded. + */ + + unsigned BFINAL = final; + size_t i; + size_t numcodes_ll, numcodes_d, numcodes_lld, numcodes_lld_e, numcodes_cl; + unsigned HLIT, HDIST, HCLEN; + + uivector_init(&lz77_encoded); + HuffmanTree_init(&tree_ll); + HuffmanTree_init(&tree_d); + HuffmanTree_init(&tree_cl); + /* could fit on stack, but >1KB is on the larger side so allocate instead */ + frequencies_ll = (unsigned*)lodepng_malloc(286 * sizeof(*frequencies_ll)); + frequencies_d = (unsigned*)lodepng_malloc(30 * sizeof(*frequencies_d)); + frequencies_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(*frequencies_cl)); + + if(!frequencies_ll || !frequencies_d || !frequencies_cl) error = 83; /*alloc fail*/ + + /*This while loop never loops due to a break at the end, it is here to + allow breaking out of it to the cleanup phase on error conditions.*/ + while(!error) { + lodepng_memset(frequencies_ll, 0, 286 * sizeof(*frequencies_ll)); + lodepng_memset(frequencies_d, 0, 30 * sizeof(*frequencies_d)); + lodepng_memset(frequencies_cl, 0, NUM_CODE_LENGTH_CODES * sizeof(*frequencies_cl)); + + if(settings->use_lz77) { + error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, + settings->minmatch, settings->nicematch, settings->lazymatching); + if(error) break; + } else { + if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83 /*alloc fail*/); + for(i = datapos; i < dataend; ++i) lz77_encoded.data[i - datapos] = data[i]; /*no LZ77, but still will be Huffman compressed*/ + } + + /*Count the frequencies of lit, len and dist codes*/ + for(i = 0; i != lz77_encoded.size; ++i) { + unsigned symbol = lz77_encoded.data[i]; + ++frequencies_ll[symbol]; + if(symbol > 256) { + unsigned dist = lz77_encoded.data[i + 2]; + ++frequencies_d[dist]; + i += 3; + } + } + frequencies_ll[256] = 1; /*there will be exactly 1 end code, at the end of the block*/ + + /*Make both huffman trees, one for the lit and len codes, one for the dist codes*/ + error = HuffmanTree_makeFromFrequencies(&tree_ll, frequencies_ll, 257, 286, 15); + if(error) break; + /*2, not 1, is chosen for mincodes: some buggy PNG decoders require at least 2 symbols in the dist tree*/ + error = HuffmanTree_makeFromFrequencies(&tree_d, frequencies_d, 2, 30, 15); + if(error) break; + + numcodes_ll = LODEPNG_MIN(tree_ll.numcodes, 286); + numcodes_d = LODEPNG_MIN(tree_d.numcodes, 30); + /*store the code lengths of both generated trees in bitlen_lld*/ + numcodes_lld = numcodes_ll + numcodes_d; + bitlen_lld = (unsigned*)lodepng_malloc(numcodes_lld * sizeof(*bitlen_lld)); + /*numcodes_lld_e never needs more size than bitlen_lld*/ + bitlen_lld_e = (unsigned*)lodepng_malloc(numcodes_lld * sizeof(*bitlen_lld_e)); + if(!bitlen_lld || !bitlen_lld_e) ERROR_BREAK(83); /*alloc fail*/ + numcodes_lld_e = 0; + + for(i = 0; i != numcodes_ll; ++i) bitlen_lld[i] = tree_ll.lengths[i]; + for(i = 0; i != numcodes_d; ++i) bitlen_lld[numcodes_ll + i] = tree_d.lengths[i]; + + /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 (copy length 3-6 times), + 17 (3-10 zeroes), 18 (11-138 zeroes)*/ + for(i = 0; i != numcodes_lld; ++i) { + unsigned j = 0; /*amount of repetitions*/ + while(i + j + 1 < numcodes_lld && bitlen_lld[i + j + 1] == bitlen_lld[i]) ++j; + + if(bitlen_lld[i] == 0 && j >= 2) /*repeat code for zeroes*/ { + ++j; /*include the first zero*/ + if(j <= 10) /*repeat code 17 supports max 10 zeroes*/ { + bitlen_lld_e[numcodes_lld_e++] = 17; + bitlen_lld_e[numcodes_lld_e++] = j - 3; + } else /*repeat code 18 supports max 138 zeroes*/ { + if(j > 138) j = 138; + bitlen_lld_e[numcodes_lld_e++] = 18; + bitlen_lld_e[numcodes_lld_e++] = j - 11; + } + i += (j - 1); + } else if(j >= 3) /*repeat code for value other than zero*/ { + size_t k; + unsigned num = j / 6u, rest = j % 6u; + bitlen_lld_e[numcodes_lld_e++] = bitlen_lld[i]; + for(k = 0; k < num; ++k) { + bitlen_lld_e[numcodes_lld_e++] = 16; + bitlen_lld_e[numcodes_lld_e++] = 6 - 3; + } + if(rest >= 3) { + bitlen_lld_e[numcodes_lld_e++] = 16; + bitlen_lld_e[numcodes_lld_e++] = rest - 3; + } + else j -= rest; + i += j; + } else /*too short to benefit from repeat code*/ { + bitlen_lld_e[numcodes_lld_e++] = bitlen_lld[i]; + } + } + + /*generate tree_cl, the huffmantree of huffmantrees*/ + for(i = 0; i != numcodes_lld_e; ++i) { + ++frequencies_cl[bitlen_lld_e[i]]; + /*after a repeat code come the bits that specify the number of repetitions, + those don't need to be in the frequencies_cl calculation*/ + if(bitlen_lld_e[i] >= 16) ++i; + } + + error = HuffmanTree_makeFromFrequencies(&tree_cl, frequencies_cl, + NUM_CODE_LENGTH_CODES, NUM_CODE_LENGTH_CODES, 7); + if(error) break; + + /*compute amount of code-length-code-lengths to output*/ + numcodes_cl = NUM_CODE_LENGTH_CODES; + /*trim zeros at the end (using CLCL_ORDER), but minimum size must be 4 (see HCLEN below)*/ + while(numcodes_cl > 4u && tree_cl.lengths[CLCL_ORDER[numcodes_cl - 1u]] == 0) { + numcodes_cl--; + } + + /* + Write everything into the output + + After the BFINAL and BTYPE, the dynamic block consists out of the following: + - 5 bits HLIT, 5 bits HDIST, 4 bits HCLEN + - (HCLEN+4)*3 bits code lengths of code length alphabet + - HLIT + 257 code lengths of lit/length alphabet (encoded using the code length + alphabet, + possible repetition codes 16, 17, 18) + - HDIST + 1 code lengths of distance alphabet (encoded using the code length + alphabet, + possible repetition codes 16, 17, 18) + - compressed data + - 256 (end code) + */ + + /*Write block type*/ + writeBits(writer, BFINAL, 1); + writeBits(writer, 0, 1); /*first bit of BTYPE "dynamic"*/ + writeBits(writer, 1, 1); /*second bit of BTYPE "dynamic"*/ + + /*write the HLIT, HDIST and HCLEN values*/ + /*all three sizes take trimmed ending zeroes into account, done either by HuffmanTree_makeFromFrequencies + or in the loop for numcodes_cl above, which saves space. */ + HLIT = (unsigned)(numcodes_ll - 257); + HDIST = (unsigned)(numcodes_d - 1); + HCLEN = (unsigned)(numcodes_cl - 4); + writeBits(writer, HLIT, 5); + writeBits(writer, HDIST, 5); + writeBits(writer, HCLEN, 4); + + /*write the code lengths of the code length alphabet ("bitlen_cl")*/ + for(i = 0; i != numcodes_cl; ++i) writeBits(writer, tree_cl.lengths[CLCL_ORDER[i]], 3); + + /*write the lengths of the lit/len AND the dist alphabet*/ + for(i = 0; i != numcodes_lld_e; ++i) { + writeBitsReversed(writer, tree_cl.codes[bitlen_lld_e[i]], tree_cl.lengths[bitlen_lld_e[i]]); + /*extra bits of repeat codes*/ + if(bitlen_lld_e[i] == 16) writeBits(writer, bitlen_lld_e[++i], 2); + else if(bitlen_lld_e[i] == 17) writeBits(writer, bitlen_lld_e[++i], 3); + else if(bitlen_lld_e[i] == 18) writeBits(writer, bitlen_lld_e[++i], 7); + } + + /*write the compressed data symbols*/ + writeLZ77data(writer, &lz77_encoded, &tree_ll, &tree_d); + /*error: the length of the end code 256 must be larger than 0*/ + if(tree_ll.lengths[256] == 0) ERROR_BREAK(64); + + /*write the end code*/ + writeBitsReversed(writer, tree_ll.codes[256], tree_ll.lengths[256]); + + break; /*end of error-while*/ + } + + /*cleanup*/ + uivector_cleanup(&lz77_encoded); + HuffmanTree_cleanup(&tree_ll); + HuffmanTree_cleanup(&tree_d); + HuffmanTree_cleanup(&tree_cl); + lodepng_free(frequencies_ll); + lodepng_free(frequencies_d); + lodepng_free(frequencies_cl); + lodepng_free(bitlen_lld); + lodepng_free(bitlen_lld_e); + + return error; +} + +static unsigned deflateFixed(LodePNGBitWriter* writer, Hash* hash, + const unsigned char* data, + size_t datapos, size_t dataend, + const LodePNGCompressSettings* settings, unsigned final) { + HuffmanTree tree_ll; /*tree for literal values and length codes*/ + HuffmanTree tree_d; /*tree for distance codes*/ + + unsigned BFINAL = final; + unsigned error = 0; + size_t i; + + HuffmanTree_init(&tree_ll); + HuffmanTree_init(&tree_d); + + error = generateFixedLitLenTree(&tree_ll); + if(!error) error = generateFixedDistanceTree(&tree_d); + + if(!error) { + writeBits(writer, BFINAL, 1); + writeBits(writer, 1, 1); /*first bit of BTYPE*/ + writeBits(writer, 0, 1); /*second bit of BTYPE*/ + + if(settings->use_lz77) /*LZ77 encoded*/ { + uivector lz77_encoded; + uivector_init(&lz77_encoded); + error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize, + settings->minmatch, settings->nicematch, settings->lazymatching); + if(!error) writeLZ77data(writer, &lz77_encoded, &tree_ll, &tree_d); + uivector_cleanup(&lz77_encoded); + } else /*no LZ77, but still will be Huffman compressed*/ { + for(i = datapos; i < dataend; ++i) { + writeBitsReversed(writer, tree_ll.codes[data[i]], tree_ll.lengths[data[i]]); + } + } + /*add END code*/ + if(!error) writeBitsReversed(writer,tree_ll.codes[256], tree_ll.lengths[256]); + } + + /*cleanup*/ + HuffmanTree_cleanup(&tree_ll); + HuffmanTree_cleanup(&tree_d); + + return error; +} + +static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings) { + unsigned error = 0; + size_t i, blocksize, numdeflateblocks; + Hash hash; + LodePNGBitWriter writer; + + LodePNGBitWriter_init(&writer, out); + + if(settings->btype > 2) return 61; + else if(settings->btype == 0) return deflateNoCompression(out, in, insize); + else if(settings->btype == 1) blocksize = insize; + else /*if(settings->btype == 2)*/ { + /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/ + blocksize = insize / 8u + 8; + if(blocksize < 65536) blocksize = 65536; + if(blocksize > 262144) blocksize = 262144; + } + + numdeflateblocks = (insize + blocksize - 1) / blocksize; + if(numdeflateblocks == 0) numdeflateblocks = 1; + + error = hash_init(&hash, settings->windowsize); + + if(!error) { + for(i = 0; i != numdeflateblocks && !error; ++i) { + unsigned final = (i == numdeflateblocks - 1); + size_t start = i * blocksize; + size_t end = start + blocksize; + if(end > insize) end = insize; + + if(settings->btype == 1) error = deflateFixed(&writer, &hash, in, start, end, settings, final); + else if(settings->btype == 2) error = deflateDynamic(&writer, &hash, in, start, end, settings, final); + } + } + + hash_cleanup(&hash); + + return error; +} + +unsigned lodepng_deflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_deflatev(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + return error; +} + +static unsigned deflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings) { + if(settings->custom_deflate) { + unsigned error = settings->custom_deflate(out, outsize, in, insize, settings); + /*the custom deflate is allowed to have its own error codes, however, we translate it to code 111*/ + return error ? 111 : 0; + } else { + return lodepng_deflate(out, outsize, in, insize, settings); + } +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Adler32 / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) { + unsigned s1 = adler & 0xffffu; + unsigned s2 = (adler >> 16u) & 0xffffu; + + while(len != 0u) { + unsigned i; + /*at least 5552 sums can be done before the sums overflow, saving a lot of module divisions*/ + unsigned amount = len > 5552u ? 5552u : len; + len -= amount; + for(i = 0; i != amount; ++i) { + s1 += (*data++); + s2 += s1; + } + s1 %= 65521u; + s2 %= 65521u; + } + + return (s2 << 16u) | s1; +} + +/*Return the adler32 of the bytes data[0..len-1]*/ +static unsigned adler32(const unsigned char* data, unsigned len) { + return update_adler32(1u, data, len); +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Zlib / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_DECODER + +static unsigned lodepng_zlib_decompressv(ucvector* out, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings) { + unsigned error = 0; + unsigned CM, CINFO, FDICT; + + if(insize < 2) return 53; /*error, size of zlib data too small*/ + /*read information from zlib header*/ + if((in[0] * 256 + in[1]) % 31 != 0) { + /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is supposed to be made that way*/ + return 24; + } + + CM = in[0] & 15; + CINFO = (in[0] >> 4) & 15; + /*FCHECK = in[1] & 31;*/ /*FCHECK is already tested above*/ + FDICT = (in[1] >> 5) & 1; + /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/ + + if(CM != 8 || CINFO > 7) { + /*error: only compression method 8: inflate with sliding window of 32k is supported by the PNG spec*/ + return 25; + } + if(FDICT != 0) { + /*error: the specification of PNG says about the zlib stream: + "The additional flags shall not specify a preset dictionary."*/ + return 26; + } + + error = inflatev(out, in + 2, insize - 2, settings); + if(error) return error; + + if(!settings->ignore_adler32) { + unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]); + unsigned checksum = adler32(out->data, (unsigned)(out->size)); + if(checksum != ADLER32) return 58; /*error, adler checksum not correct, data must be corrupted*/ + } + + return 0; /*no error*/ +} + + +unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGDecompressSettings* settings) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_zlib_decompressv(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + return error; +} + +/*expected_size is expected output size, to avoid intermediate allocations. Set to 0 if not known. */ +static unsigned zlib_decompress(unsigned char** out, size_t* outsize, size_t expected_size, + const unsigned char* in, size_t insize, const LodePNGDecompressSettings* settings) { + unsigned error; + if(settings->custom_zlib) { + error = settings->custom_zlib(out, outsize, in, insize, settings); + if(error) { + /*the custom zlib is allowed to have its own error codes, however, we translate it to code 110*/ + error = 110; + /*if there's a max output size, and the custom zlib returned error, then indicate that error instead*/ + if(settings->max_output_size && *outsize > settings->max_output_size) error = 109; + } + } else { + ucvector v = ucvector_init(*out, *outsize); + if(expected_size) { + /*reserve the memory to avoid intermediate reallocations*/ + ucvector_resize(&v, *outsize + expected_size); + v.size = *outsize; + } + error = lodepng_zlib_decompressv(&v, in, insize, settings); + *out = v.data; + *outsize = v.size; + } + return error; +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER + +unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGCompressSettings* settings) { + size_t i; + unsigned error; + unsigned char* deflatedata = NULL; + size_t deflatesize = 0; + + error = deflate(&deflatedata, &deflatesize, in, insize, settings); + + *out = NULL; + *outsize = 0; + if(!error) { + *outsize = deflatesize + 6; + *out = (unsigned char*)lodepng_malloc(*outsize); + if(!*out) error = 83; /*alloc fail*/ + } + + if(!error) { + unsigned ADLER32 = adler32(in, (unsigned)insize); + /*zlib data: 1 byte CMF (CM+CINFO), 1 byte FLG, deflate data, 4 byte ADLER32 checksum of the Decompressed data*/ + unsigned CMF = 120; /*0b01111000: CM 8, CINFO 7. With CINFO 7, any window size up to 32768 can be used.*/ + unsigned FLEVEL = 0; + unsigned FDICT = 0; + unsigned CMFFLG = 256 * CMF + FDICT * 32 + FLEVEL * 64; + unsigned FCHECK = 31 - CMFFLG % 31; + CMFFLG += FCHECK; + + (*out)[0] = (unsigned char)(CMFFLG >> 8); + (*out)[1] = (unsigned char)(CMFFLG & 255); + for(i = 0; i != deflatesize; ++i) (*out)[i + 2] = deflatedata[i]; + lodepng_set32bitInt(&(*out)[*outsize - 4], ADLER32); + } + + lodepng_free(deflatedata); + return error; +} + +/* compress using the default or custom zlib function */ +static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGCompressSettings* settings) { + if(settings->custom_zlib) { + unsigned error = settings->custom_zlib(out, outsize, in, insize, settings); + /*the custom zlib is allowed to have its own error codes, however, we translate it to code 111*/ + return error ? 111 : 0; + } else { + return lodepng_zlib_compress(out, outsize, in, insize, settings); + } +} + +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#else /*no LODEPNG_COMPILE_ZLIB*/ + +#ifdef LODEPNG_COMPILE_DECODER +static unsigned zlib_decompress(unsigned char** out, size_t* outsize, size_t expected_size, + const unsigned char* in, size_t insize, const LodePNGDecompressSettings* settings) { + if(!settings->custom_zlib) return 87; /*no custom zlib function provided */ + (void)expected_size; + return settings->custom_zlib(out, outsize, in, insize, settings); +} +#endif /*LODEPNG_COMPILE_DECODER*/ +#ifdef LODEPNG_COMPILE_ENCODER +static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in, + size_t insize, const LodePNGCompressSettings* settings) { + if(!settings->custom_zlib) return 87; /*no custom zlib function provided */ + return settings->custom_zlib(out, outsize, in, insize, settings); +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#endif /*LODEPNG_COMPILE_ZLIB*/ + +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_ENCODER + +/*this is a good tradeoff between speed and compression ratio*/ +#define DEFAULT_WINDOWSIZE 2048 + +void lodepng_compress_settings_init(LodePNGCompressSettings* settings) { + /*compress with dynamic huffman tree (not in the mathematical sense, just not the predefined one)*/ + settings->btype = 2; + settings->use_lz77 = 1; + settings->windowsize = DEFAULT_WINDOWSIZE; + settings->minmatch = 3; + settings->nicematch = 128; + settings->lazymatching = 1; + + settings->custom_zlib = NULL; + settings->custom_deflate = NULL; + settings->custom_context = NULL; +} + +const LodePNGCompressSettings lodepng_default_compress_settings = {2, 1, DEFAULT_WINDOWSIZE, 3, 128, 1, NULL, NULL, NULL}; + + +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_DECODER + +void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings) { + settings->ignore_adler32 = 0; + settings->ignore_nlen = 0; + settings->max_output_size = 0; + + settings->custom_zlib = NULL; + settings->custom_inflate = NULL; + settings->custom_context = NULL; +} + +const LodePNGDecompressSettings lodepng_default_decompress_settings = {0, 0, 0, NULL, NULL, NULL}; + +#endif /*LODEPNG_COMPILE_DECODER*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // End of Zlib related code. Begin of PNG related code. // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_PNG + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / CRC32 / */ +/* ////////////////////////////////////////////////////////////////////////// */ + + +#ifdef LODEPNG_COMPILE_CRC +/* CRC polynomial: 0xedb88320 */ +static unsigned lodepng_crc32_table[256] = { + 0u, 1996959894u, 3993919788u, 2567524794u, 124634137u, 1886057615u, 3915621685u, 2657392035u, + 249268274u, 2044508324u, 3772115230u, 2547177864u, 162941995u, 2125561021u, 3887607047u, 2428444049u, + 498536548u, 1789927666u, 4089016648u, 2227061214u, 450548861u, 1843258603u, 4107580753u, 2211677639u, + 325883990u, 1684777152u, 4251122042u, 2321926636u, 335633487u, 1661365465u, 4195302755u, 2366115317u, + 997073096u, 1281953886u, 3579855332u, 2724688242u, 1006888145u, 1258607687u, 3524101629u, 2768942443u, + 901097722u, 1119000684u, 3686517206u, 2898065728u, 853044451u, 1172266101u, 3705015759u, 2882616665u, + 651767980u, 1373503546u, 3369554304u, 3218104598u, 565507253u, 1454621731u, 3485111705u, 3099436303u, + 671266974u, 1594198024u, 3322730930u, 2970347812u, 795835527u, 1483230225u, 3244367275u, 3060149565u, + 1994146192u, 31158534u, 2563907772u, 4023717930u, 1907459465u, 112637215u, 2680153253u, 3904427059u, + 2013776290u, 251722036u, 2517215374u, 3775830040u, 2137656763u, 141376813u, 2439277719u, 3865271297u, + 1802195444u, 476864866u, 2238001368u, 4066508878u, 1812370925u, 453092731u, 2181625025u, 4111451223u, + 1706088902u, 314042704u, 2344532202u, 4240017532u, 1658658271u, 366619977u, 2362670323u, 4224994405u, + 1303535960u, 984961486u, 2747007092u, 3569037538u, 1256170817u, 1037604311u, 2765210733u, 3554079995u, + 1131014506u, 879679996u, 2909243462u, 3663771856u, 1141124467u, 855842277u, 2852801631u, 3708648649u, + 1342533948u, 654459306u, 3188396048u, 3373015174u, 1466479909u, 544179635u, 3110523913u, 3462522015u, + 1591671054u, 702138776u, 2966460450u, 3352799412u, 1504918807u, 783551873u, 3082640443u, 3233442989u, + 3988292384u, 2596254646u, 62317068u, 1957810842u, 3939845945u, 2647816111u, 81470997u, 1943803523u, + 3814918930u, 2489596804u, 225274430u, 2053790376u, 3826175755u, 2466906013u, 167816743u, 2097651377u, + 4027552580u, 2265490386u, 503444072u, 1762050814u, 4150417245u, 2154129355u, 426522225u, 1852507879u, + 4275313526u, 2312317920u, 282753626u, 1742555852u, 4189708143u, 2394877945u, 397917763u, 1622183637u, + 3604390888u, 2714866558u, 953729732u, 1340076626u, 3518719985u, 2797360999u, 1068828381u, 1219638859u, + 3624741850u, 2936675148u, 906185462u, 1090812512u, 3747672003u, 2825379669u, 829329135u, 1181335161u, + 3412177804u, 3160834842u, 628085408u, 1382605366u, 3423369109u, 3138078467u, 570562233u, 1426400815u, + 3317316542u, 2998733608u, 733239954u, 1555261956u, 3268935591u, 3050360625u, 752459403u, 1541320221u, + 2607071920u, 3965973030u, 1969922972u, 40735498u, 2617837225u, 3943577151u, 1913087877u, 83908371u, + 2512341634u, 3803740692u, 2075208622u, 213261112u, 2463272603u, 3855990285u, 2094854071u, 198958881u, + 2262029012u, 4057260610u, 1759359992u, 534414190u, 2176718541u, 4139329115u, 1873836001u, 414664567u, + 2282248934u, 4279200368u, 1711684554u, 285281116u, 2405801727u, 4167216745u, 1634467795u, 376229701u, + 2685067896u, 3608007406u, 1308918612u, 956543938u, 2808555105u, 3495958263u, 1231636301u, 1047427035u, + 2932959818u, 3654703836u, 1088359270u, 936918000u, 2847714899u, 3736837829u, 1202900863u, 817233897u, + 3183342108u, 3401237130u, 1404277552u, 615818150u, 3134207493u, 3453421203u, 1423857449u, 601450431u, + 3009837614u, 3294710456u, 1567103746u, 711928724u, 3020668471u, 3272380065u, 1510334235u, 755167117u +}; + +/*Return the CRC of the bytes buf[0..len-1].*/ +unsigned lodepng_crc32(const unsigned char* data, size_t length) { + unsigned r = 0xffffffffu; + size_t i; + for(i = 0; i < length; ++i) { + r = lodepng_crc32_table[(r ^ data[i]) & 0xffu] ^ (r >> 8u); + } + return r ^ 0xffffffffu; +} +#else /* LODEPNG_COMPILE_CRC */ +/*in this case, the function is only declared here, and must be defined externally +so that it will be linked in*/ +unsigned lodepng_crc32(const unsigned char* data, size_t length); +#endif /* LODEPNG_COMPILE_CRC */ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Reading and writing PNG color channel bits / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/* The color channel bits of less-than-8-bit pixels are read with the MSB of bytes first, +so LodePNGBitWriter and LodePNGBitReader can't be used for those. */ + +static unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream) { + unsigned char result = (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1); + ++(*bitpointer); + return result; +} + +/* TODO: make this faster */ +static unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) { + unsigned result = 0; + size_t i; + for(i = 0 ; i < nbits; ++i) { + result <<= 1u; + result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream); + } + return result; +} + +static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) { + /*the current bit in bitstream may be 0 or 1 for this to work*/ + if(bit == 0) bitstream[(*bitpointer) >> 3u] &= (unsigned char)(~(1u << (7u - ((*bitpointer) & 7u)))); + else bitstream[(*bitpointer) >> 3u] |= (1u << (7u - ((*bitpointer) & 7u))); + ++(*bitpointer); +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / PNG chunks / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +unsigned lodepng_chunk_length(const unsigned char* chunk) { + return lodepng_read32bitInt(chunk); +} + +void lodepng_chunk_type(char type[5], const unsigned char* chunk) { + unsigned i; + for(i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i]; + type[4] = 0; /*null termination char*/ +} + +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) { + if(lodepng_strlen(type) != 4) return 0; + return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]); +} + +unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) { + return((chunk[4] & 32) != 0); +} + +unsigned char lodepng_chunk_private(const unsigned char* chunk) { + return((chunk[6] & 32) != 0); +} + +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) { + return((chunk[7] & 32) != 0); +} + +unsigned char* lodepng_chunk_data(unsigned char* chunk) { + return &chunk[8]; +} + +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) { + return &chunk[8]; +} + +unsigned lodepng_chunk_check_crc(const unsigned char* chunk) { + unsigned length = lodepng_chunk_length(chunk); + unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]); + /*the CRC is taken of the data and the 4 chunk type letters, not the length*/ + unsigned checksum = lodepng_crc32(&chunk[4], length + 4); + if(CRC != checksum) return 1; + else return 0; +} + +void lodepng_chunk_generate_crc(unsigned char* chunk) { + unsigned length = lodepng_chunk_length(chunk); + unsigned CRC = lodepng_crc32(&chunk[4], length + 4); + lodepng_set32bitInt(chunk + 8 + length, CRC); +} + +unsigned char* lodepng_chunk_next(unsigned char* chunk, unsigned char* end) { + size_t available_size = (size_t)(end - chunk); + if(chunk >= end || available_size < 12) return end; /*too small to contain a chunk*/ + if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 + && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { + /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ + return chunk + 8; + } else { + size_t total_chunk_length; + if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return end; + if(total_chunk_length > available_size) return end; /*outside of range*/ + return chunk + total_chunk_length; + } +} + +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk, const unsigned char* end) { + size_t available_size = (size_t)(end - chunk); + if(chunk >= end || available_size < 12) return end; /*too small to contain a chunk*/ + if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47 + && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) { + /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ + return chunk + 8; + } else { + size_t total_chunk_length; + if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return end; + if(total_chunk_length > available_size) return end; /*outside of range*/ + return chunk + total_chunk_length; + } +} + +unsigned char* lodepng_chunk_find(unsigned char* chunk, unsigned char* end, const char type[5]) { + for(;;) { + if(chunk >= end || end - chunk < 12) return NULL; /* past file end: chunk + 12 > end */ + if(lodepng_chunk_type_equals(chunk, type)) return chunk; + chunk = lodepng_chunk_next(chunk, end); + } +} + +const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]) { + for(;;) { + if(chunk >= end || end - chunk < 12) return NULL; /* past file end: chunk + 12 > end */ + if(lodepng_chunk_type_equals(chunk, type)) return chunk; + chunk = lodepng_chunk_next_const(chunk, end); + } +} + +unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk) { + unsigned i; + size_t total_chunk_length, new_length; + unsigned char *chunk_start, *new_buffer; + + if(lodepng_addofl(lodepng_chunk_length(chunk), 12, &total_chunk_length)) return 77; + if(lodepng_addofl(*outsize, total_chunk_length, &new_length)) return 77; + + new_buffer = (unsigned char*)lodepng_realloc(*out, new_length); + if(!new_buffer) return 83; /*alloc fail*/ + (*out) = new_buffer; + (*outsize) = new_length; + chunk_start = &(*out)[new_length - total_chunk_length]; + + for(i = 0; i != total_chunk_length; ++i) chunk_start[i] = chunk[i]; + + return 0; +} + +/*Sets length and name and allocates the space for data and crc but does not +set data or crc yet. Returns the start of the chunk in chunk. The start of +the data is at chunk + 8. To finalize chunk, add the data, then use +lodepng_chunk_generate_crc */ +static unsigned lodepng_chunk_init(unsigned char** chunk, + ucvector* out, + unsigned length, const char* type) { + size_t new_length = out->size; + if(lodepng_addofl(new_length, length, &new_length)) return 77; + if(lodepng_addofl(new_length, 12, &new_length)) return 77; + if(!ucvector_resize(out, new_length)) return 83; /*alloc fail*/ + *chunk = out->data + new_length - length - 12u; + + /*1: length*/ + lodepng_set32bitInt(*chunk, length); + + /*2: chunk name (4 letters)*/ + lodepng_memcpy(*chunk + 4, type, 4); + + return 0; +} + +/* like lodepng_chunk_create but with custom allocsize */ +static unsigned lodepng_chunk_createv(ucvector* out, + unsigned length, const char* type, const unsigned char* data) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, length, type)); + + /*3: the data*/ + lodepng_memcpy(chunk + 8, data, length); + + /*4: CRC (of the chunkname characters and the data)*/ + lodepng_chunk_generate_crc(chunk); + + return 0; +} + +unsigned lodepng_chunk_create(unsigned char** out, size_t* outsize, + unsigned length, const char* type, const unsigned char* data) { + ucvector v = ucvector_init(*out, *outsize); + unsigned error = lodepng_chunk_createv(&v, length, type, data); + *out = v.data; + *outsize = v.size; + return error; +} + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / Color types, channels, bits / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*checks if the colortype is valid and the bitdepth bd is allowed for this colortype. +Return value is a LodePNG error code.*/ +static unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) { + switch(colortype) { + case LCT_GREY: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; + case LCT_RGB: if(!( bd == 8 || bd == 16)) return 37; break; + case LCT_PALETTE: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 )) return 37; break; + case LCT_GREY_ALPHA: if(!( bd == 8 || bd == 16)) return 37; break; + case LCT_RGBA: if(!( bd == 8 || bd == 16)) return 37; break; + case LCT_MAX_OCTET_VALUE: return 31; /* invalid color type */ + default: return 31; /* invalid color type */ + } + return 0; /*allowed color type / bits combination*/ +} + +static unsigned getNumColorChannels(LodePNGColorType colortype) { + switch(colortype) { + case LCT_GREY: return 1; + case LCT_RGB: return 3; + case LCT_PALETTE: return 1; + case LCT_GREY_ALPHA: return 2; + case LCT_RGBA: return 4; + case LCT_MAX_OCTET_VALUE: return 0; /* invalid color type */ + default: return 0; /*invalid color type*/ + } +} + +static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) { + /*bits per pixel is amount of channels * bits per channel*/ + return getNumColorChannels(colortype) * bitdepth; +} + +/* ////////////////////////////////////////////////////////////////////////// */ + +void lodepng_color_mode_init(LodePNGColorMode* info) { + info->key_defined = 0; + info->key_r = info->key_g = info->key_b = 0; + info->colortype = LCT_RGBA; + info->bitdepth = 8; + info->palette = NULL; + info->palettesize = 0; +} + +/*allocates palette memory if needed, and initializes all colors to black*/ +static void lodepng_color_mode_alloc_palette(LodePNGColorMode* info) { + size_t i; + /*if the palette is already allocated, it will have size 1024 so no reallocation needed in that case*/ + /*the palette must have room for up to 256 colors with 4 bytes each.*/ + if(!info->palette) info->palette = (unsigned char*)lodepng_malloc(1024); + if(!info->palette) return; /*alloc fail*/ + for(i = 0; i != 256; ++i) { + /*Initialize all unused colors with black, the value used for invalid palette indices. + This is an error according to the PNG spec, but common PNG decoders make it black instead. + That makes color conversion slightly faster due to no error handling needed.*/ + info->palette[i * 4 + 0] = 0; + info->palette[i * 4 + 1] = 0; + info->palette[i * 4 + 2] = 0; + info->palette[i * 4 + 3] = 255; + } +} + +void lodepng_color_mode_cleanup(LodePNGColorMode* info) { + lodepng_palette_clear(info); +} + +unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source) { + lodepng_color_mode_cleanup(dest); + lodepng_memcpy(dest, source, sizeof(LodePNGColorMode)); + if(source->palette) { + dest->palette = (unsigned char*)lodepng_malloc(1024); + if(!dest->palette && source->palettesize) return 83; /*alloc fail*/ + lodepng_memcpy(dest->palette, source->palette, source->palettesize * 4); + } + return 0; +} + +LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth) { + LodePNGColorMode result; + lodepng_color_mode_init(&result); + result.colortype = colortype; + result.bitdepth = bitdepth; + return result; +} + +static int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b) { + size_t i; + if(a->colortype != b->colortype) return 0; + if(a->bitdepth != b->bitdepth) return 0; + if(a->key_defined != b->key_defined) return 0; + if(a->key_defined) { + if(a->key_r != b->key_r) return 0; + if(a->key_g != b->key_g) return 0; + if(a->key_b != b->key_b) return 0; + } + if(a->palettesize != b->palettesize) return 0; + for(i = 0; i != a->palettesize * 4; ++i) { + if(a->palette[i] != b->palette[i]) return 0; + } + return 1; +} + +void lodepng_palette_clear(LodePNGColorMode* info) { + if(info->palette) lodepng_free(info->palette); + info->palette = NULL; + info->palettesize = 0; +} + +unsigned lodepng_palette_add(LodePNGColorMode* info, + unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + if(!info->palette) /*allocate palette if empty*/ { + lodepng_color_mode_alloc_palette(info); + if(!info->palette) return 83; /*alloc fail*/ + } + if(info->palettesize >= 256) { + return 108; /*too many palette values*/ + } + info->palette[4 * info->palettesize + 0] = r; + info->palette[4 * info->palettesize + 1] = g; + info->palette[4 * info->palettesize + 2] = b; + info->palette[4 * info->palettesize + 3] = a; + ++info->palettesize; + return 0; +} + +/*calculate bits per pixel out of colortype and bitdepth*/ +unsigned lodepng_get_bpp(const LodePNGColorMode* info) { + return lodepng_get_bpp_lct(info->colortype, info->bitdepth); +} + +unsigned lodepng_get_channels(const LodePNGColorMode* info) { + return getNumColorChannels(info->colortype); +} + +unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info) { + return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA; +} + +unsigned lodepng_is_alpha_type(const LodePNGColorMode* info) { + return (info->colortype & 4) != 0; /*4 or 6*/ +} + +unsigned lodepng_is_palette_type(const LodePNGColorMode* info) { + return info->colortype == LCT_PALETTE; +} + +unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info) { + size_t i; + for(i = 0; i != info->palettesize; ++i) { + if(info->palette[i * 4 + 3] < 255) return 1; + } + return 0; +} + +unsigned lodepng_can_have_alpha(const LodePNGColorMode* info) { + return info->key_defined + || lodepng_is_alpha_type(info) + || lodepng_has_palette_alpha(info); +} + +static size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) { + size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth); + size_t n = (size_t)w * (size_t)h; + return ((n / 8u) * bpp) + ((n & 7u) * bpp + 7u) / 8u; +} + +size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color) { + return lodepng_get_raw_size_lct(w, h, color->colortype, color->bitdepth); +} + + +#ifdef LODEPNG_COMPILE_PNG + +/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer, +and in addition has one extra byte per line: the filter byte. So this gives a larger +result than lodepng_get_raw_size. Set h to 1 to get the size of 1 row including filter byte. */ +static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, unsigned bpp) { + /* + 1 for the filter byte, and possibly plus padding bits per line. */ + /* Ignoring casts, the expression is equal to (w * bpp + 7) / 8 + 1, but avoids overflow of w * bpp */ + size_t line = ((size_t)(w / 8u) * bpp) + 1u + ((w & 7u) * bpp + 7u) / 8u; + return (size_t)h * line; +} + +#ifdef LODEPNG_COMPILE_DECODER +/*Safely checks whether size_t overflow can be caused due to amount of pixels. +This check is overcautious rather than precise. If this check indicates no overflow, +you can safely compute in a size_t (but not an unsigned): +-(size_t)w * (size_t)h * 8 +-amount of bytes in IDAT (including filter, padding and Adam7 bytes) +-amount of bytes in raw color model +Returns 1 if overflow possible, 0 if not. +*/ +static int lodepng_pixel_overflow(unsigned w, unsigned h, + const LodePNGColorMode* pngcolor, const LodePNGColorMode* rawcolor) { + size_t bpp = LODEPNG_MAX(lodepng_get_bpp(pngcolor), lodepng_get_bpp(rawcolor)); + size_t numpixels, total; + size_t line; /* bytes per line in worst case */ + + if(lodepng_mulofl((size_t)w, (size_t)h, &numpixels)) return 1; + if(lodepng_mulofl(numpixels, 8, &total)) return 1; /* bit pointer with 8-bit color, or 8 bytes per channel color */ + + /* Bytes per scanline with the expression "(w / 8u) * bpp) + ((w & 7u) * bpp + 7u) / 8u" */ + if(lodepng_mulofl((size_t)(w / 8u), bpp, &line)) return 1; + if(lodepng_addofl(line, ((w & 7u) * bpp + 7u) / 8u, &line)) return 1; + + if(lodepng_addofl(line, 5, &line)) return 1; /* 5 bytes overhead per line: 1 filterbyte, 4 for Adam7 worst case */ + if(lodepng_mulofl(line, h, &total)) return 1; /* Total bytes in worst case */ + + return 0; /* no overflow */ +} +#endif /*LODEPNG_COMPILE_DECODER*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +static void LodePNGUnknownChunks_init(LodePNGInfo* info) { + unsigned i; + for(i = 0; i != 3; ++i) info->unknown_chunks_data[i] = NULL; + for(i = 0; i != 3; ++i) info->unknown_chunks_size[i] = 0; +} + +static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info) { + unsigned i; + for(i = 0; i != 3; ++i) lodepng_free(info->unknown_chunks_data[i]); +} + +static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src) { + unsigned i; + + LodePNGUnknownChunks_cleanup(dest); + + for(i = 0; i != 3; ++i) { + size_t j; + dest->unknown_chunks_size[i] = src->unknown_chunks_size[i]; + dest->unknown_chunks_data[i] = (unsigned char*)lodepng_malloc(src->unknown_chunks_size[i]); + if(!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) return 83; /*alloc fail*/ + for(j = 0; j < src->unknown_chunks_size[i]; ++j) { + dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j]; + } + } + + return 0; +} + +/******************************************************************************/ + +static void LodePNGText_init(LodePNGInfo* info) { + info->text_num = 0; + info->text_keys = NULL; + info->text_strings = NULL; +} + +static void LodePNGText_cleanup(LodePNGInfo* info) { + size_t i; + for(i = 0; i != info->text_num; ++i) { + string_cleanup(&info->text_keys[i]); + string_cleanup(&info->text_strings[i]); + } + lodepng_free(info->text_keys); + lodepng_free(info->text_strings); +} + +static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source) { + size_t i = 0; + dest->text_keys = NULL; + dest->text_strings = NULL; + dest->text_num = 0; + for(i = 0; i != source->text_num; ++i) { + CERROR_TRY_RETURN(lodepng_add_text(dest, source->text_keys[i], source->text_strings[i])); + } + return 0; +} + +static unsigned lodepng_add_text_sized(LodePNGInfo* info, const char* key, const char* str, size_t size) { + char** new_keys = (char**)(lodepng_realloc(info->text_keys, sizeof(char*) * (info->text_num + 1))); + char** new_strings = (char**)(lodepng_realloc(info->text_strings, sizeof(char*) * (info->text_num + 1))); + + if(new_keys) info->text_keys = new_keys; + if(new_strings) info->text_strings = new_strings; + + if(!new_keys || !new_strings) return 83; /*alloc fail*/ + + ++info->text_num; + info->text_keys[info->text_num - 1] = alloc_string(key); + info->text_strings[info->text_num - 1] = alloc_string_sized(str, size); + if(!info->text_keys[info->text_num - 1] || !info->text_strings[info->text_num - 1]) return 83; /*alloc fail*/ + + return 0; +} + +unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) { + return lodepng_add_text_sized(info, key, str, lodepng_strlen(str)); +} + +void lodepng_clear_text(LodePNGInfo* info) { + LodePNGText_cleanup(info); +} + +/******************************************************************************/ + +static void LodePNGIText_init(LodePNGInfo* info) { + info->itext_num = 0; + info->itext_keys = NULL; + info->itext_langtags = NULL; + info->itext_transkeys = NULL; + info->itext_strings = NULL; +} + +static void LodePNGIText_cleanup(LodePNGInfo* info) { + size_t i; + for(i = 0; i != info->itext_num; ++i) { + string_cleanup(&info->itext_keys[i]); + string_cleanup(&info->itext_langtags[i]); + string_cleanup(&info->itext_transkeys[i]); + string_cleanup(&info->itext_strings[i]); + } + lodepng_free(info->itext_keys); + lodepng_free(info->itext_langtags); + lodepng_free(info->itext_transkeys); + lodepng_free(info->itext_strings); +} + +static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source) { + size_t i = 0; + dest->itext_keys = NULL; + dest->itext_langtags = NULL; + dest->itext_transkeys = NULL; + dest->itext_strings = NULL; + dest->itext_num = 0; + for(i = 0; i != source->itext_num; ++i) { + CERROR_TRY_RETURN(lodepng_add_itext(dest, source->itext_keys[i], source->itext_langtags[i], + source->itext_transkeys[i], source->itext_strings[i])); + } + return 0; +} + +void lodepng_clear_itext(LodePNGInfo* info) { + LodePNGIText_cleanup(info); +} + +static unsigned lodepng_add_itext_sized(LodePNGInfo* info, const char* key, const char* langtag, + const char* transkey, const char* str, size_t size) { + char** new_keys = (char**)(lodepng_realloc(info->itext_keys, sizeof(char*) * (info->itext_num + 1))); + char** new_langtags = (char**)(lodepng_realloc(info->itext_langtags, sizeof(char*) * (info->itext_num + 1))); + char** new_transkeys = (char**)(lodepng_realloc(info->itext_transkeys, sizeof(char*) * (info->itext_num + 1))); + char** new_strings = (char**)(lodepng_realloc(info->itext_strings, sizeof(char*) * (info->itext_num + 1))); + + if(new_keys) info->itext_keys = new_keys; + if(new_langtags) info->itext_langtags = new_langtags; + if(new_transkeys) info->itext_transkeys = new_transkeys; + if(new_strings) info->itext_strings = new_strings; + + if(!new_keys || !new_langtags || !new_transkeys || !new_strings) return 83; /*alloc fail*/ + + ++info->itext_num; + + info->itext_keys[info->itext_num - 1] = alloc_string(key); + info->itext_langtags[info->itext_num - 1] = alloc_string(langtag); + info->itext_transkeys[info->itext_num - 1] = alloc_string(transkey); + info->itext_strings[info->itext_num - 1] = alloc_string_sized(str, size); + + return 0; +} + +unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, + const char* transkey, const char* str) { + return lodepng_add_itext_sized(info, key, langtag, transkey, str, lodepng_strlen(str)); +} + +/* same as set but does not delete */ +static unsigned lodepng_assign_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) { + if(profile_size == 0) return 100; /*invalid ICC profile size*/ + + info->iccp_name = alloc_string(name); + info->iccp_profile = (unsigned char*)lodepng_malloc(profile_size); + + if(!info->iccp_name || !info->iccp_profile) return 83; /*alloc fail*/ + + lodepng_memcpy(info->iccp_profile, profile, profile_size); + info->iccp_profile_size = profile_size; + + return 0; /*ok*/ +} + +unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) { + if(info->iccp_name) lodepng_clear_icc(info); + info->iccp_defined = 1; + + return lodepng_assign_icc(info, name, profile, profile_size); +} + +void lodepng_clear_icc(LodePNGInfo* info) { + string_cleanup(&info->iccp_name); + lodepng_free(info->iccp_profile); + info->iccp_profile = NULL; + info->iccp_profile_size = 0; + info->iccp_defined = 0; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +void lodepng_info_init(LodePNGInfo* info) { + lodepng_color_mode_init(&info->color); + info->interlace_method = 0; + info->compression_method = 0; + info->filter_method = 0; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + info->background_defined = 0; + info->background_r = info->background_g = info->background_b = 0; + + LodePNGText_init(info); + LodePNGIText_init(info); + + info->time_defined = 0; + info->phys_defined = 0; + + info->gama_defined = 0; + info->chrm_defined = 0; + info->srgb_defined = 0; + info->iccp_defined = 0; + info->iccp_name = NULL; + info->iccp_profile = NULL; + + info->sbit_defined = 0; + info->sbit_r = info->sbit_g = info->sbit_b = info->sbit_a = 0; + + LodePNGUnknownChunks_init(info); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} + +void lodepng_info_cleanup(LodePNGInfo* info) { + lodepng_color_mode_cleanup(&info->color); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + LodePNGText_cleanup(info); + LodePNGIText_cleanup(info); + + lodepng_clear_icc(info); + + LodePNGUnknownChunks_cleanup(info); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} + +unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) { + lodepng_info_cleanup(dest); + lodepng_memcpy(dest, source, sizeof(LodePNGInfo)); + lodepng_color_mode_init(&dest->color); + CERROR_TRY_RETURN(lodepng_color_mode_copy(&dest->color, &source->color)); + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + CERROR_TRY_RETURN(LodePNGText_copy(dest, source)); + CERROR_TRY_RETURN(LodePNGIText_copy(dest, source)); + if(source->iccp_defined) { + CERROR_TRY_RETURN(lodepng_assign_icc(dest, source->iccp_name, source->iccp_profile, source->iccp_profile_size)); + } + + LodePNGUnknownChunks_init(dest); + CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source)); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + return 0; +} + +/* ////////////////////////////////////////////////////////////////////////// */ + +/*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, out: octet array to add bits to*/ +static void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in) { + unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/ + /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first half or 1 for second half*/ + unsigned p = index & m; + in &= (1u << bits) - 1u; /*filter out any other bits of the input value*/ + in = in << (bits * (m - p)); + if(p == 0) out[index * bits / 8u] = in; + else out[index * bits / 8u] |= in; +} + +typedef struct ColorTree ColorTree; + +/* +One node of a color tree +This is the data structure used to count the number of unique colors and to get a palette +index for a color. It's like an octree, but because the alpha channel is used too, each +node has 16 instead of 8 children. +*/ +struct ColorTree { + ColorTree* children[16]; /*up to 16 pointers to ColorTree of next level*/ + int index; /*the payload. Only has a meaningful value if this is in the last level*/ +}; + +static void color_tree_init(ColorTree* tree) { + lodepng_memset(tree->children, 0, 16 * sizeof(*tree->children)); + tree->index = -1; +} + +static void color_tree_cleanup(ColorTree* tree) { + int i; + for(i = 0; i != 16; ++i) { + if(tree->children[i]) { + color_tree_cleanup(tree->children[i]); + lodepng_free(tree->children[i]); + } + } +} + +/*returns -1 if color not present, its index otherwise*/ +static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + int bit = 0; + for(bit = 0; bit < 8; ++bit) { + int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); + if(!tree->children[i]) return -1; + else tree = tree->children[i]; + } + return tree ? tree->index : -1; +} + +#ifdef LODEPNG_COMPILE_ENCODER +static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + return color_tree_get(tree, r, g, b, a) >= 0; +} +#endif /*LODEPNG_COMPILE_ENCODER*/ + +/*color is not allowed to already exist. +Index should be >= 0 (it's signed to be compatible with using -1 for "doesn't exist") +Returns error code, or 0 if ok*/ +static unsigned color_tree_add(ColorTree* tree, + unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index) { + int bit; + for(bit = 0; bit < 8; ++bit) { + int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1); + if(!tree->children[i]) { + tree->children[i] = (ColorTree*)lodepng_malloc(sizeof(ColorTree)); + if(!tree->children[i]) return 83; /*alloc fail*/ + color_tree_init(tree->children[i]); + } + tree = tree->children[i]; + } + tree->index = (int)index; + return 0; +} + +/*put a pixel, given its RGBA color, into image of any color type*/ +static unsigned rgba8ToPixel(unsigned char* out, size_t i, + const LodePNGColorMode* mode, ColorTree* tree /*for palette*/, + unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + if(mode->colortype == LCT_GREY) { + unsigned char gray = r; /*((unsigned short)r + g + b) / 3u;*/ + if(mode->bitdepth == 8) out[i] = gray; + else if(mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = gray; + else { + /*take the most significant bits of gray*/ + gray = ((unsigned)gray >> (8u - mode->bitdepth)) & ((1u << mode->bitdepth) - 1u); + addColorBits(out, i, mode->bitdepth, gray); + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + out[i * 3 + 0] = r; + out[i * 3 + 1] = g; + out[i * 3 + 2] = b; + } else { + out[i * 6 + 0] = out[i * 6 + 1] = r; + out[i * 6 + 2] = out[i * 6 + 3] = g; + out[i * 6 + 4] = out[i * 6 + 5] = b; + } + } else if(mode->colortype == LCT_PALETTE) { + int index = color_tree_get(tree, r, g, b, a); + if(index < 0) return 82; /*color not in palette*/ + if(mode->bitdepth == 8) out[i] = index; + else addColorBits(out, i, mode->bitdepth, (unsigned)index); + } else if(mode->colortype == LCT_GREY_ALPHA) { + unsigned char gray = r; /*((unsigned short)r + g + b) / 3u;*/ + if(mode->bitdepth == 8) { + out[i * 2 + 0] = gray; + out[i * 2 + 1] = a; + } else if(mode->bitdepth == 16) { + out[i * 4 + 0] = out[i * 4 + 1] = gray; + out[i * 4 + 2] = out[i * 4 + 3] = a; + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + out[i * 4 + 0] = r; + out[i * 4 + 1] = g; + out[i * 4 + 2] = b; + out[i * 4 + 3] = a; + } else { + out[i * 8 + 0] = out[i * 8 + 1] = r; + out[i * 8 + 2] = out[i * 8 + 3] = g; + out[i * 8 + 4] = out[i * 8 + 5] = b; + out[i * 8 + 6] = out[i * 8 + 7] = a; + } + } + + return 0; /*no error*/ +} + +/*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth type*/ +static void rgba16ToPixel(unsigned char* out, size_t i, + const LodePNGColorMode* mode, + unsigned short r, unsigned short g, unsigned short b, unsigned short a) { + if(mode->colortype == LCT_GREY) { + unsigned short gray = r; /*((unsigned)r + g + b) / 3u;*/ + out[i * 2 + 0] = (gray >> 8) & 255; + out[i * 2 + 1] = gray & 255; + } else if(mode->colortype == LCT_RGB) { + out[i * 6 + 0] = (r >> 8) & 255; + out[i * 6 + 1] = r & 255; + out[i * 6 + 2] = (g >> 8) & 255; + out[i * 6 + 3] = g & 255; + out[i * 6 + 4] = (b >> 8) & 255; + out[i * 6 + 5] = b & 255; + } else if(mode->colortype == LCT_GREY_ALPHA) { + unsigned short gray = r; /*((unsigned)r + g + b) / 3u;*/ + out[i * 4 + 0] = (gray >> 8) & 255; + out[i * 4 + 1] = gray & 255; + out[i * 4 + 2] = (a >> 8) & 255; + out[i * 4 + 3] = a & 255; + } else if(mode->colortype == LCT_RGBA) { + out[i * 8 + 0] = (r >> 8) & 255; + out[i * 8 + 1] = r & 255; + out[i * 8 + 2] = (g >> 8) & 255; + out[i * 8 + 3] = g & 255; + out[i * 8 + 4] = (b >> 8) & 255; + out[i * 8 + 5] = b & 255; + out[i * 8 + 6] = (a >> 8) & 255; + out[i * 8 + 7] = a & 255; + } +} + +/*Get RGBA8 color of pixel with index i (y * width + x) from the raw image with given color type.*/ +static void getPixelColorRGBA8(unsigned char* r, unsigned char* g, + unsigned char* b, unsigned char* a, + const unsigned char* in, size_t i, + const LodePNGColorMode* mode) { + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + *r = *g = *b = in[i]; + if(mode->key_defined && *r == mode->key_r) *a = 0; + else *a = 255; + } else if(mode->bitdepth == 16) { + *r = *g = *b = in[i * 2 + 0]; + if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; + else *a = 255; + } else { + unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ + size_t j = i * mode->bitdepth; + unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); + *r = *g = *b = (value * 255) / highest; + if(mode->key_defined && value == mode->key_r) *a = 0; + else *a = 255; + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + *r = in[i * 3 + 0]; *g = in[i * 3 + 1]; *b = in[i * 3 + 2]; + if(mode->key_defined && *r == mode->key_r && *g == mode->key_g && *b == mode->key_b) *a = 0; + else *a = 255; + } else { + *r = in[i * 6 + 0]; + *g = in[i * 6 + 2]; + *b = in[i * 6 + 4]; + if(mode->key_defined && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r + && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g + && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; + else *a = 255; + } + } else if(mode->colortype == LCT_PALETTE) { + unsigned index; + if(mode->bitdepth == 8) index = in[i]; + else { + size_t j = i * mode->bitdepth; + index = readBitsFromReversedStream(&j, in, mode->bitdepth); + } + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + *r = mode->palette[index * 4 + 0]; + *g = mode->palette[index * 4 + 1]; + *b = mode->palette[index * 4 + 2]; + *a = mode->palette[index * 4 + 3]; + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + *r = *g = *b = in[i * 2 + 0]; + *a = in[i * 2 + 1]; + } else { + *r = *g = *b = in[i * 4 + 0]; + *a = in[i * 4 + 2]; + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + *r = in[i * 4 + 0]; + *g = in[i * 4 + 1]; + *b = in[i * 4 + 2]; + *a = in[i * 4 + 3]; + } else { + *r = in[i * 8 + 0]; + *g = in[i * 8 + 2]; + *b = in[i * 8 + 4]; + *a = in[i * 8 + 6]; + } + } +} + +/*Similar to getPixelColorRGBA8, but with all the for loops inside of the color +mode test cases, optimized to convert the colors much faster, when converting +to the common case of RGBA with 8 bit per channel. buffer must be RGBA with +enough memory.*/ +static void getPixelColorsRGBA8(unsigned char* LODEPNG_RESTRICT buffer, size_t numpixels, + const unsigned char* LODEPNG_RESTRICT in, + const LodePNGColorMode* mode) { + unsigned num_channels = 4; + size_t i; + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i]; + buffer[3] = 255; + } + if(mode->key_defined) { + buffer -= numpixels * num_channels; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + if(buffer[0] == mode->key_r) buffer[3] = 0; + } + } + } else if(mode->bitdepth == 16) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2]; + buffer[3] = mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r ? 0 : 255; + } + } else { + unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); + buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; + buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255; + } + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + lodepng_memcpy(buffer, &in[i * 3], 3); + buffer[3] = 255; + } + if(mode->key_defined) { + buffer -= numpixels * num_channels; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + if(buffer[0] == mode->key_r && buffer[1]== mode->key_g && buffer[2] == mode->key_b) buffer[3] = 0; + } + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 6 + 0]; + buffer[1] = in[i * 6 + 2]; + buffer[2] = in[i * 6 + 4]; + buffer[3] = mode->key_defined + && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r + && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g + && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b ? 0 : 255; + } + } + } else if(mode->colortype == LCT_PALETTE) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = in[i]; + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 4); + } + } else { + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = readBitsFromReversedStream(&j, in, mode->bitdepth); + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 4); + } + } + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; + buffer[3] = in[i * 2 + 1]; + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; + buffer[3] = in[i * 4 + 2]; + } + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + lodepng_memcpy(buffer, in, numpixels * 4); + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 8 + 0]; + buffer[1] = in[i * 8 + 2]; + buffer[2] = in[i * 8 + 4]; + buffer[3] = in[i * 8 + 6]; + } + } + } +} + +/*Similar to getPixelColorsRGBA8, but with 3-channel RGB output.*/ +static void getPixelColorsRGB8(unsigned char* LODEPNG_RESTRICT buffer, size_t numpixels, + const unsigned char* LODEPNG_RESTRICT in, + const LodePNGColorMode* mode) { + const unsigned num_channels = 3; + size_t i; + if(mode->colortype == LCT_GREY) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i]; + } + } else if(mode->bitdepth == 16) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2]; + } + } else { + unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/ + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); + buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; + } + } + } else if(mode->colortype == LCT_RGB) { + if(mode->bitdepth == 8) { + lodepng_memcpy(buffer, in, numpixels * 3); + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 6 + 0]; + buffer[1] = in[i * 6 + 2]; + buffer[2] = in[i * 6 + 4]; + } + } + } else if(mode->colortype == LCT_PALETTE) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = in[i]; + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 3); + } + } else { + size_t j = 0; + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + unsigned index = readBitsFromReversedStream(&j, in, mode->bitdepth); + /*out of bounds of palette not checked: see lodepng_color_mode_alloc_palette.*/ + lodepng_memcpy(buffer, &mode->palette[index * 4], 3); + } + } + } else if(mode->colortype == LCT_GREY_ALPHA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; + } + } + } else if(mode->colortype == LCT_RGBA) { + if(mode->bitdepth == 8) { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + lodepng_memcpy(buffer, &in[i * 4], 3); + } + } else { + for(i = 0; i != numpixels; ++i, buffer += num_channels) { + buffer[0] = in[i * 8 + 0]; + buffer[1] = in[i * 8 + 2]; + buffer[2] = in[i * 8 + 4]; + } + } + } +} + +/*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with +given color type, but the given color type must be 16-bit itself.*/ +static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned short* b, unsigned short* a, + const unsigned char* in, size_t i, const LodePNGColorMode* mode) { + if(mode->colortype == LCT_GREY) { + *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1]; + if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0; + else *a = 65535; + } else if(mode->colortype == LCT_RGB) { + *r = 256u * in[i * 6 + 0] + in[i * 6 + 1]; + *g = 256u * in[i * 6 + 2] + in[i * 6 + 3]; + *b = 256u * in[i * 6 + 4] + in[i * 6 + 5]; + if(mode->key_defined + && 256u * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r + && 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g + && 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0; + else *a = 65535; + } else if(mode->colortype == LCT_GREY_ALPHA) { + *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1]; + *a = 256u * in[i * 4 + 2] + in[i * 4 + 3]; + } else if(mode->colortype == LCT_RGBA) { + *r = 256u * in[i * 8 + 0] + in[i * 8 + 1]; + *g = 256u * in[i * 8 + 2] + in[i * 8 + 3]; + *b = 256u * in[i * 8 + 4] + in[i * 8 + 5]; + *a = 256u * in[i * 8 + 6] + in[i * 8 + 7]; + } +} + +unsigned lodepng_convert(unsigned char* out, const unsigned char* in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, + unsigned w, unsigned h) { + size_t i; + ColorTree tree; + size_t numpixels = (size_t)w * (size_t)h; + unsigned error = 0; + + if(mode_in->colortype == LCT_PALETTE && !mode_in->palette) { + return 107; /* error: must provide palette if input mode is palette */ + } + + if(lodepng_color_mode_equal(mode_out, mode_in)) { + size_t numbytes = lodepng_get_raw_size(w, h, mode_in); + lodepng_memcpy(out, in, numbytes); + return 0; + } + + if(mode_out->colortype == LCT_PALETTE) { + size_t palettesize = mode_out->palettesize; + const unsigned char* palette = mode_out->palette; + size_t palsize = (size_t)1u << mode_out->bitdepth; + /*if the user specified output palette but did not give the values, assume + they want the values of the input color type (assuming that one is palette). + Note that we never create a new palette ourselves.*/ + if(palettesize == 0) { + palettesize = mode_in->palettesize; + palette = mode_in->palette; + /*if the input was also palette with same bitdepth, then the color types are also + equal, so copy literally. This to preserve the exact indices that were in the PNG + even in case there are duplicate colors in the palette.*/ + if(mode_in->colortype == LCT_PALETTE && mode_in->bitdepth == mode_out->bitdepth) { + size_t numbytes = lodepng_get_raw_size(w, h, mode_in); + lodepng_memcpy(out, in, numbytes); + return 0; + } + } + if(palettesize < palsize) palsize = palettesize; + color_tree_init(&tree); + for(i = 0; i != palsize; ++i) { + const unsigned char* p = &palette[i * 4]; + error = color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i); + if(error) break; + } + } + + if(!error) { + if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16) { + for(i = 0; i != numpixels; ++i) { + unsigned short r = 0, g = 0, b = 0, a = 0; + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + rgba16ToPixel(out, i, mode_out, r, g, b, a); + } + } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) { + getPixelColorsRGBA8(out, numpixels, in, mode_in); + } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) { + getPixelColorsRGB8(out, numpixels, in, mode_in); + } else { + unsigned char r = 0, g = 0, b = 0, a = 0; + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a); + if(error) break; + } + } + } + + if(mode_out->colortype == LCT_PALETTE) { + color_tree_cleanup(&tree); + } + + return error; +} + +#ifdef LODEPNG_COMPILE_ENCODER + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +/* Converts a single rgb color without alpha from one type to another, color bits truncated to +their bitdepth. In case of single channel (gray or palette), only the r channel is used. Slow +function, do not use to process all pixels of an image. Alpha channel not supported on purpose: +this is for bKGD, supporting alpha may prevent it from finding a color in the palette, from the +specification it looks like bKGD should ignore the alpha values of the palette since it can use +any palette index but doesn't have an alpha channel. Idem with ignoring color key. */ +static unsigned lodepng_convert_rgb( + unsigned* r_out, unsigned* g_out, unsigned* b_out, + unsigned r_in, unsigned g_in, unsigned b_in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in) { + unsigned r = 0, g = 0, b = 0; + unsigned mul = 65535 / ((1u << mode_in->bitdepth) - 1u); /*65535, 21845, 4369, 257, 1*/ + unsigned shift = 16 - mode_out->bitdepth; + + if(mode_in->colortype == LCT_GREY || mode_in->colortype == LCT_GREY_ALPHA) { + r = g = b = r_in * mul; + } else if(mode_in->colortype == LCT_RGB || mode_in->colortype == LCT_RGBA) { + r = r_in * mul; + g = g_in * mul; + b = b_in * mul; + } else if(mode_in->colortype == LCT_PALETTE) { + if(r_in >= mode_in->palettesize) return 82; + r = mode_in->palette[r_in * 4 + 0] * 257u; + g = mode_in->palette[r_in * 4 + 1] * 257u; + b = mode_in->palette[r_in * 4 + 2] * 257u; + } else { + return 31; + } + + /* now convert to output format */ + if(mode_out->colortype == LCT_GREY || mode_out->colortype == LCT_GREY_ALPHA) { + *r_out = r >> shift ; + } else if(mode_out->colortype == LCT_RGB || mode_out->colortype == LCT_RGBA) { + *r_out = r >> shift ; + *g_out = g >> shift ; + *b_out = b >> shift ; + } else if(mode_out->colortype == LCT_PALETTE) { + unsigned i; + /* a 16-bit color cannot be in the palette */ + if((r >> 8) != (r & 255) || (g >> 8) != (g & 255) || (b >> 8) != (b & 255)) return 82; + for(i = 0; i < mode_out->palettesize; i++) { + unsigned j = i * 4; + if((r >> 8) == mode_out->palette[j + 0] && (g >> 8) == mode_out->palette[j + 1] && + (b >> 8) == mode_out->palette[j + 2]) { + *r_out = i; + return 0; + } + } + return 82; + } else { + return 31; + } + + return 0; +} + +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + +void lodepng_color_stats_init(LodePNGColorStats* stats) { + /*stats*/ + stats->colored = 0; + stats->key = 0; + stats->key_r = stats->key_g = stats->key_b = 0; + stats->alpha = 0; + stats->numcolors = 0; + stats->bits = 1; + stats->numpixels = 0; + /*settings*/ + stats->allow_palette = 1; + stats->allow_greyscale = 1; +} + +/*function used for debug purposes with C++*/ +/*void printColorStats(LodePNGColorStats* p) { + std::cout << "colored: " << (int)p->colored << ", "; + std::cout << "key: " << (int)p->key << ", "; + std::cout << "key_r: " << (int)p->key_r << ", "; + std::cout << "key_g: " << (int)p->key_g << ", "; + std::cout << "key_b: " << (int)p->key_b << ", "; + std::cout << "alpha: " << (int)p->alpha << ", "; + std::cout << "numcolors: " << (int)p->numcolors << ", "; + std::cout << "bits: " << (int)p->bits << std::endl; +}*/ + +/*Returns how many bits needed to represent given value (max 8 bit)*/ +static unsigned getValueRequiredBits(unsigned char value) { + if(value == 0 || value == 255) return 1; + /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/ + if(value % 17 == 0) return value % 85 == 0 ? 2 : 4; + return 8; +} + +/*stats must already have been inited. */ +unsigned lodepng_compute_color_stats(LodePNGColorStats* stats, + const unsigned char* in, unsigned w, unsigned h, + const LodePNGColorMode* mode_in) { + size_t i; + ColorTree tree; + size_t numpixels = (size_t)w * (size_t)h; + unsigned error = 0; + + /* mark things as done already if it would be impossible to have a more expensive case */ + unsigned colored_done = lodepng_is_greyscale_type(mode_in) ? 1 : 0; + unsigned alpha_done = lodepng_can_have_alpha(mode_in) ? 0 : 1; + unsigned numcolors_done = 0; + unsigned bpp = lodepng_get_bpp(mode_in); + unsigned bits_done = (stats->bits == 1 && bpp == 1) ? 1 : 0; + unsigned sixteen = 0; /* whether the input image is 16 bit */ + unsigned maxnumcolors = 257; + if(bpp <= 8) maxnumcolors = LODEPNG_MIN(257, stats->numcolors + (1u << bpp)); + + stats->numpixels += numpixels; + + /*if palette not allowed, no need to compute numcolors*/ + if(!stats->allow_palette) numcolors_done = 1; + + color_tree_init(&tree); + + /*If the stats was already filled in from previous data, fill its palette in tree + and mark things as done already if we know they are the most expensive case already*/ + if(stats->alpha) alpha_done = 1; + if(stats->colored) colored_done = 1; + if(stats->bits == 16) numcolors_done = 1; + if(stats->bits >= bpp) bits_done = 1; + if(stats->numcolors >= maxnumcolors) numcolors_done = 1; + + if(!numcolors_done) { + for(i = 0; i < stats->numcolors; i++) { + const unsigned char* color = &stats->palette[i * 4]; + error = color_tree_add(&tree, color[0], color[1], color[2], color[3], i); + if(error) goto cleanup; + } + } + + /*Check if the 16-bit input is truly 16-bit*/ + if(mode_in->bitdepth == 16 && !sixteen) { + unsigned short r = 0, g = 0, b = 0, a = 0; + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + if((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) || + (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ { + stats->bits = 16; + sixteen = 1; + bits_done = 1; + numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/ + break; + } + } + } + + if(sixteen) { + unsigned short r = 0, g = 0, b = 0, a = 0; + + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + + if(!colored_done && (r != g || r != b)) { + stats->colored = 1; + colored_done = 1; + } + + if(!alpha_done) { + unsigned matchkey = (r == stats->key_r && g == stats->key_g && b == stats->key_b); + if(a != 65535 && (a != 0 || (stats->key && !matchkey))) { + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + } else if(a == 0 && !stats->alpha && !stats->key) { + stats->key = 1; + stats->key_r = r; + stats->key_g = g; + stats->key_b = b; + } else if(a == 65535 && stats->key && matchkey) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + } + } + if(alpha_done && numcolors_done && colored_done && bits_done) break; + } + + if(stats->key && !stats->alpha) { + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); + if(a != 0 && r == stats->key_r && g == stats->key_g && b == stats->key_b) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + } + } + } + } else /* < 16-bit */ { + unsigned char r = 0, g = 0, b = 0, a = 0; + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + + if(!bits_done && stats->bits < 8) { + /*only r is checked, < 8 bits is only relevant for grayscale*/ + unsigned bits = getValueRequiredBits(r); + if(bits > stats->bits) stats->bits = bits; + } + bits_done = (stats->bits >= bpp); + + if(!colored_done && (r != g || r != b)) { + stats->colored = 1; + colored_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no colored modes with less than 8-bit per channel*/ + } + + if(!alpha_done) { + unsigned matchkey = (r == stats->key_r && g == stats->key_g && b == stats->key_b); + if(a != 255 && (a != 0 || (stats->key && !matchkey))) { + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } else if(a == 0 && !stats->alpha && !stats->key) { + stats->key = 1; + stats->key_r = r; + stats->key_g = g; + stats->key_b = b; + } else if(a == 255 && stats->key && matchkey) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } + } + + if(!numcolors_done) { + if(!color_tree_has(&tree, r, g, b, a)) { + error = color_tree_add(&tree, r, g, b, a, stats->numcolors); + if(error) goto cleanup; + if(stats->numcolors < 256) { + unsigned char* p = stats->palette; + unsigned n = stats->numcolors; + p[n * 4 + 0] = r; + p[n * 4 + 1] = g; + p[n * 4 + 2] = b; + p[n * 4 + 3] = a; + } + ++stats->numcolors; + numcolors_done = stats->numcolors >= maxnumcolors; + } + } + + if(alpha_done && numcolors_done && colored_done && bits_done) break; + } + + if(stats->key && !stats->alpha) { + for(i = 0; i != numpixels; ++i) { + getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); + if(a != 0 && r == stats->key_r && g == stats->key_g && b == stats->key_b) { + /* Color key cannot be used if an opaque pixel also has that RGB color. */ + stats->alpha = 1; + stats->key = 0; + alpha_done = 1; + if(stats->bits < 8) stats->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } + } + } + + /*make the stats's key always 16-bit for consistency - repeat each byte twice*/ + stats->key_r += (stats->key_r << 8); + stats->key_g += (stats->key_g << 8); + stats->key_b += (stats->key_b << 8); + } + +cleanup: + color_tree_cleanup(&tree); + return error; +} + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*Adds a single color to the color stats. The stats must already have been inited. The color must be given as 16-bit +(with 2 bytes repeating for 8-bit and 65535 for opaque alpha channel). This function is expensive, do not call it for +all pixels of an image but only for a few additional values. */ +static unsigned lodepng_color_stats_add(LodePNGColorStats* stats, + unsigned r, unsigned g, unsigned b, unsigned a) { + unsigned error = 0; + unsigned char image[8]; + LodePNGColorMode mode; + lodepng_color_mode_init(&mode); + image[0] = r >> 8; image[1] = r; image[2] = g >> 8; image[3] = g; + image[4] = b >> 8; image[5] = b; image[6] = a >> 8; image[7] = a; + mode.bitdepth = 16; + mode.colortype = LCT_RGBA; + error = lodepng_compute_color_stats(stats, image, 1, 1, &mode); + lodepng_color_mode_cleanup(&mode); + return error; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/*Computes a minimal PNG color model that can contain all colors as indicated by the stats. +The stats should be computed with lodepng_compute_color_stats. +mode_in is raw color profile of the image the stats were computed on, to copy palette order from when relevant. +Minimal PNG color model means the color type and bit depth that gives smallest amount of bits in the output image, +e.g. gray if only grayscale pixels, palette if less than 256 colors, color key if only single transparent color, ... +This is used if auto_convert is enabled (it is by default). +*/ +static unsigned auto_choose_color(LodePNGColorMode* mode_out, + const LodePNGColorMode* mode_in, + const LodePNGColorStats* stats) { + unsigned error = 0; + unsigned palettebits; + size_t i, n; + size_t numpixels = stats->numpixels; + unsigned palette_ok, gray_ok; + + unsigned alpha = stats->alpha; + unsigned key = stats->key; + unsigned bits = stats->bits; + + mode_out->key_defined = 0; + + if(key && numpixels <= 16) { + alpha = 1; /*too few pixels to justify tRNS chunk overhead*/ + key = 0; + if(bits < 8) bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ + } + + gray_ok = !stats->colored; + if(!stats->allow_greyscale) gray_ok = 0; + if(!gray_ok && bits < 8) bits = 8; + + n = stats->numcolors; + palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8)); + palette_ok = n <= 256 && bits <= 8 && n != 0; /*n==0 means likely numcolors wasn't computed*/ + if(numpixels < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/ + if(gray_ok && !alpha && bits <= palettebits) palette_ok = 0; /*gray is less overhead*/ + if(!stats->allow_palette) palette_ok = 0; + + if(palette_ok) { + const unsigned char* p = stats->palette; + lodepng_palette_clear(mode_out); /*remove potential earlier palette*/ + for(i = 0; i != stats->numcolors; ++i) { + error = lodepng_palette_add(mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]); + if(error) break; + } + + mode_out->colortype = LCT_PALETTE; + mode_out->bitdepth = palettebits; + + if(mode_in->colortype == LCT_PALETTE && mode_in->palettesize >= mode_out->palettesize + && mode_in->bitdepth == mode_out->bitdepth) { + /*If input should have same palette colors, keep original to preserve its order and prevent conversion*/ + lodepng_color_mode_cleanup(mode_out); /*clears palette, keeps the above set colortype and bitdepth fields as-is*/ + lodepng_color_mode_copy(mode_out, mode_in); + } + } else /*8-bit or 16-bit per channel*/ { + mode_out->bitdepth = bits; + mode_out->colortype = alpha ? (gray_ok ? LCT_GREY_ALPHA : LCT_RGBA) + : (gray_ok ? LCT_GREY : LCT_RGB); + if(key) { + unsigned mask = (1u << mode_out->bitdepth) - 1u; /*stats always uses 16-bit, mask converts it*/ + mode_out->key_r = stats->key_r & mask; + mode_out->key_g = stats->key_g & mask; + mode_out->key_b = stats->key_b & mask; + mode_out->key_defined = 1; + } + } + + return error; +} + +#endif /* #ifdef LODEPNG_COMPILE_ENCODER */ + +/* +Paeth predictor, used by PNG filter type 4 +The parameters are of type short, but should come from unsigned chars, the shorts +are only needed to make the paeth calculation correct. +*/ +static unsigned char paethPredictor(short a, short b, short c) { + short pa = LODEPNG_ABS(b - c); + short pb = LODEPNG_ABS(a - c); + short pc = LODEPNG_ABS(a + b - c - c); + /* return input value associated with smallest of pa, pb, pc (with certain priority if equal) */ + if(pb < pa) { a = b; pa = pb; } + return (pc < pa) ? c : a; +} + +/*shared values used by multiple Adam7 related functions*/ + +static const unsigned ADAM7_IX[7] = { 0, 4, 0, 2, 0, 1, 0 }; /*x start values*/ +static const unsigned ADAM7_IY[7] = { 0, 0, 4, 0, 2, 0, 1 }; /*y start values*/ +static const unsigned ADAM7_DX[7] = { 8, 8, 4, 4, 2, 2, 1 }; /*x delta values*/ +static const unsigned ADAM7_DY[7] = { 8, 8, 8, 4, 4, 2, 2 }; /*y delta values*/ + +/* +Outputs various dimensions and positions in the image related to the Adam7 reduced images. +passw: output containing the width of the 7 passes +passh: output containing the height of the 7 passes +filter_passstart: output containing the index of the start and end of each + reduced image with filter bytes +padded_passstart output containing the index of the start and end of each + reduced image when without filter bytes but with padded scanlines +passstart: output containing the index of the start and end of each reduced + image without padding between scanlines, but still padding between the images +w, h: width and height of non-interlaced image +bpp: bits per pixel +"padded" is only relevant if bpp is less than 8 and a scanline or image does not + end at a full byte +*/ +static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t filter_passstart[8], + size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp) { + /*the passstart values have 8 values: the 8th one indicates the byte after the end of the 7th (= last) pass*/ + unsigned i; + + /*calculate width and height in pixels of each pass*/ + for(i = 0; i != 7; ++i) { + passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i]; + passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i]; + if(passw[i] == 0) passh[i] = 0; + if(passh[i] == 0) passw[i] = 0; + } + + filter_passstart[0] = padded_passstart[0] = passstart[0] = 0; + for(i = 0; i != 7; ++i) { + /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/ + filter_passstart[i + 1] = filter_passstart[i] + + ((passw[i] && passh[i]) ? passh[i] * (1u + (passw[i] * bpp + 7u) / 8u) : 0); + /*bits padded if needed to fill full byte at end of each scanline*/ + padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7u) / 8u); + /*only padded at end of reduced image*/ + passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7u) / 8u; + } +} + +#ifdef LODEPNG_COMPILE_DECODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / PNG Decoder / */ +/* ////////////////////////////////////////////////////////////////////////// */ + +/*read the information from the header and store it in the LodePNGInfo. return value is error*/ +unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state, + const unsigned char* in, size_t insize) { + unsigned width, height; + LodePNGInfo* info = &state->info_png; + if(insize == 0 || in == NULL) { + CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/ + } + if(insize < 33) { + CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller than the length of a PNG header*/ + } + + /*when decoding a new PNG image, make sure all parameters created after previous decoding are reset*/ + /* TODO: remove this. One should use a new LodePNGState for new sessions */ + lodepng_info_cleanup(info); + lodepng_info_init(info); + + if(in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71 + || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) { + CERROR_RETURN_ERROR(state->error, 28); /*error: the first 8 bytes are not the correct PNG signature*/ + } + if(lodepng_chunk_length(in + 8) != 13) { + CERROR_RETURN_ERROR(state->error, 94); /*error: header size must be 13 bytes*/ + } + if(!lodepng_chunk_type_equals(in + 8, "IHDR")) { + CERROR_RETURN_ERROR(state->error, 29); /*error: it doesn't start with a IHDR chunk!*/ + } + + /*read the values given in the header*/ + width = lodepng_read32bitInt(&in[16]); + height = lodepng_read32bitInt(&in[20]); + /*TODO: remove the undocumented feature that allows to give null pointers to width or height*/ + if(w) *w = width; + if(h) *h = height; + info->color.bitdepth = in[24]; + info->color.colortype = (LodePNGColorType)in[25]; + info->compression_method = in[26]; + info->filter_method = in[27]; + info->interlace_method = in[28]; + + /*errors returned only after the parsing so other values are still output*/ + + /*error: invalid image size*/ + if(width == 0 || height == 0) CERROR_RETURN_ERROR(state->error, 93); + /*error: invalid colortype or bitdepth combination*/ + state->error = checkColorValidity(info->color.colortype, info->color.bitdepth); + if(state->error) return state->error; + /*error: only compression method 0 is allowed in the specification*/ + if(info->compression_method != 0) CERROR_RETURN_ERROR(state->error, 32); + /*error: only filter method 0 is allowed in the specification*/ + if(info->filter_method != 0) CERROR_RETURN_ERROR(state->error, 33); + /*error: only interlace methods 0 and 1 exist in the specification*/ + if(info->interlace_method > 1) CERROR_RETURN_ERROR(state->error, 34); + + if(!state->decoder.ignore_crc) { + unsigned CRC = lodepng_read32bitInt(&in[29]); + unsigned checksum = lodepng_crc32(&in[12], 17); + if(CRC != checksum) { + CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/ + } + } + + return state->error; +} + +static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon, + size_t bytewidth, unsigned char filterType, size_t length) { + /* + For PNG filter method 0 + unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte, + the filter works byte per byte (bytewidth = 1) + precon is the previous unfiltered scanline, recon the result, scanline the current one + the incoming scanlines do NOT include the filtertype byte, that one is given in the parameter filterType instead + recon and scanline MAY be the same memory address! precon must be disjoint. + */ + + size_t i; + switch(filterType) { + case 0: + for(i = 0; i != length; ++i) recon[i] = scanline[i]; + break; + case 1: { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; + for(i = bytewidth; i != length; ++i, ++j) recon[i] = scanline[i] + recon[j]; + break; + } + case 2: + if(precon) { + for(i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i]; + } else { + for(i = 0; i != length; ++i) recon[i] = scanline[i]; + } + break; + case 3: + if(precon) { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1u); + /* Unroll independent paths of this predictor. A 6x and 8x version is also possible but that adds + too much code. Whether this speeds up anything depends on compiler and settings. */ + if(bytewidth >= 4) { + for(; i + 3 < length; i += 4, j += 4) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2], s3 = scanline[i + 3]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2], r3 = recon[j + 3]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2], p3 = precon[i + 3]; + recon[i + 0] = s0 + ((r0 + p0) >> 1u); + recon[i + 1] = s1 + ((r1 + p1) >> 1u); + recon[i + 2] = s2 + ((r2 + p2) >> 1u); + recon[i + 3] = s3 + ((r3 + p3) >> 1u); + } + } else if(bytewidth >= 3) { + for(; i + 2 < length; i += 3, j += 3) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2]; + recon[i + 0] = s0 + ((r0 + p0) >> 1u); + recon[i + 1] = s1 + ((r1 + p1) >> 1u); + recon[i + 2] = s2 + ((r2 + p2) >> 1u); + } + } else if(bytewidth >= 2) { + for(; i + 1 < length; i += 2, j += 2) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1]; + recon[i + 0] = s0 + ((r0 + p0) >> 1u); + recon[i + 1] = s1 + ((r1 + p1) >> 1u); + } + } + for(; i != length; ++i, ++j) recon[i] = scanline[i] + ((recon[j] + precon[i]) >> 1u); + } else { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i]; + for(i = bytewidth; i != length; ++i, ++j) recon[i] = scanline[i] + (recon[j] >> 1u); + } + break; + case 4: + if(precon) { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) { + recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ + } + + /* Unroll independent paths of the paeth predictor. A 6x and 8x version is also possible but that + adds too much code. Whether this speeds up anything depends on compiler and settings. */ + if(bytewidth >= 4) { + for(; i + 3 < length; i += 4, j += 4) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2], s3 = scanline[i + 3]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2], r3 = recon[j + 3]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2], p3 = precon[i + 3]; + unsigned char q0 = precon[j + 0], q1 = precon[j + 1], q2 = precon[j + 2], q3 = precon[j + 3]; + recon[i + 0] = s0 + paethPredictor(r0, p0, q0); + recon[i + 1] = s1 + paethPredictor(r1, p1, q1); + recon[i + 2] = s2 + paethPredictor(r2, p2, q2); + recon[i + 3] = s3 + paethPredictor(r3, p3, q3); + } + } else if(bytewidth >= 3) { + for(; i + 2 < length; i += 3, j += 3) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2]; + unsigned char q0 = precon[j + 0], q1 = precon[j + 1], q2 = precon[j + 2]; + recon[i + 0] = s0 + paethPredictor(r0, p0, q0); + recon[i + 1] = s1 + paethPredictor(r1, p1, q1); + recon[i + 2] = s2 + paethPredictor(r2, p2, q2); + } + } else if(bytewidth >= 2) { + for(; i + 1 < length; i += 2, j += 2) { + unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1]; + unsigned char r0 = recon[j + 0], r1 = recon[j + 1]; + unsigned char p0 = precon[i + 0], p1 = precon[i + 1]; + unsigned char q0 = precon[j + 0], q1 = precon[j + 1]; + recon[i + 0] = s0 + paethPredictor(r0, p0, q0); + recon[i + 1] = s1 + paethPredictor(r1, p1, q1); + } + } + + for(; i != length; ++i, ++j) { + recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[j])); + } + } else { + size_t j = 0; + for(i = 0; i != bytewidth; ++i) { + recon[i] = scanline[i]; + } + for(i = bytewidth; i != length; ++i, ++j) { + /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/ + recon[i] = (scanline[i] + recon[j]); + } + } + break; + default: return 36; /*error: invalid filter type given*/ + } + return 0; +} + +static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { + /* + For PNG filter method 0 + this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times) + out must have enough bytes allocated already, in must have the scanlines + 1 filtertype byte per scanline + w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel + in and out are allowed to be the same memory address (but aren't the same size since in has the extra filter bytes) + */ + + unsigned y; + unsigned char* prevline = NULL; + + /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/ + size_t bytewidth = (bpp + 7u) / 8u; + /*the width of a scanline in bytes, not including the filter type*/ + size_t linebytes = lodepng_get_raw_size_idat(w, 1, bpp) - 1u; + + for(y = 0; y < h; ++y) { + size_t outindex = linebytes * y; + size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ + unsigned char filterType = in[inindex]; + + CERROR_TRY_RETURN(unfilterScanline(&out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, linebytes)); + + prevline = &out[outindex]; + } + + return 0; +} + +/* +in: Adam7 interlaced image, with no padding bits between scanlines, but between + reduced images so that each reduced image starts at a byte. +out: the same pixels, but re-ordered so that they're now a non-interlaced image with size w*h +bpp: bits per pixel +out has the following size in bits: w * h * bpp. +in is possibly bigger due to padding bits between reduced images. +out must be big enough AND must be 0 everywhere if bpp < 8 in the current implementation +(because that's likely a little bit faster) +NOTE: comments about padding bits are only relevant if bpp < 8 +*/ +static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { + unsigned passw[7], passh[7]; + size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned i; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + if(bpp >= 8) { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + size_t bytewidth = bpp / 8u; + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth; + size_t pixeloutstart = ((ADAM7_IY[i] + (size_t)y * ADAM7_DY[i]) * (size_t)w + + ADAM7_IX[i] + (size_t)x * ADAM7_DX[i]) * bytewidth; + for(b = 0; b < bytewidth; ++b) { + out[pixeloutstart + b] = in[pixelinstart + b]; + } + } + } + } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + unsigned ilinebits = bpp * passw[i]; + unsigned olinebits = bpp * w; + size_t obp, ibp; /*bit pointers (for out and in buffer)*/ + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp); + obp = (ADAM7_IY[i] + (size_t)y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + (size_t)x * ADAM7_DX[i]) * bpp; + for(b = 0; b < bpp; ++b) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + } + } + } +} + +static void removePaddingBits(unsigned char* out, const unsigned char* in, + size_t olinebits, size_t ilinebits, unsigned h) { + /* + After filtering there are still padding bits if scanlines have non multiple of 8 bit amounts. They need + to be removed (except at last scanline of (Adam7-reduced) image) before working with pure image buffers + for the Adam7 code, the color convert code and the output to the user. + in and out are allowed to be the same buffer, in may also be higher but still overlapping; in must + have >= ilinebits*h bits, out must have >= olinebits*h bits, olinebits must be <= ilinebits + also used to move bits after earlier such operations happened, e.g. in a sequence of reduced images from Adam7 + only useful if (ilinebits - olinebits) is a value in the range 1..7 + */ + unsigned y; + size_t diff = ilinebits - olinebits; + size_t ibp = 0, obp = 0; /*input and output bit pointers*/ + for(y = 0; y < h; ++y) { + size_t x; + for(x = 0; x < olinebits; ++x) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + ibp += diff; + } +} + +/*out must be buffer big enough to contain full image, and in must contain the full decompressed data from +the IDAT chunks (with filter index bytes and possible padding bits) +return value is error*/ +static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, + unsigned w, unsigned h, const LodePNGInfo* info_png) { + /* + This function converts the filtered-padded-interlaced data into pure 2D image buffer with the PNG's colortype. + Steps: + *) if no Adam7: 1) unfilter 2) remove padding bits (= possible extra bits per scanline if bpp < 8) + *) if adam7: 1) 7x unfilter 2) 7x remove padding bits 3) Adam7_deinterlace + NOTE: the in buffer will be overwritten with intermediate data! + */ + unsigned bpp = lodepng_get_bpp(&info_png->color); + if(bpp == 0) return 31; /*error: invalid colortype*/ + + if(info_png->interlace_method == 0) { + if(bpp < 8 && w * bpp != ((w * bpp + 7u) / 8u) * 8u) { + CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp)); + removePaddingBits(out, in, w * bpp, ((w * bpp + 7u) / 8u) * 8u, h); + } + /*we can immediately filter into the out buffer, no other steps needed*/ + else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp)); + } else /*interlace_method is 1 (Adam7)*/ { + unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned i; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + for(i = 0; i != 7; ++i) { + CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp)); + /*TODO: possible efficiency improvement: if in this reduced image the bits fit nicely in 1 scanline, + move bytes instead of bits or move not at all*/ + if(bpp < 8) { + /*remove padding bits in scanlines; after this there still may be padding + bits between the different reduced images: each reduced image still starts nicely at a byte*/ + removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp, + ((passw[i] * bpp + 7u) / 8u) * 8u, passh[i]); + } + } + + Adam7_deinterlace(out, in, w, h, bpp); + } + + return 0; +} + +static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) { + unsigned pos = 0, i; + color->palettesize = chunkLength / 3u; + if(color->palettesize == 0 || color->palettesize > 256) return 38; /*error: palette too small or big*/ + lodepng_color_mode_alloc_palette(color); + if(!color->palette && color->palettesize) { + color->palettesize = 0; + return 83; /*alloc fail*/ + } + + for(i = 0; i != color->palettesize; ++i) { + color->palette[4 * i + 0] = data[pos++]; /*R*/ + color->palette[4 * i + 1] = data[pos++]; /*G*/ + color->palette[4 * i + 2] = data[pos++]; /*B*/ + color->palette[4 * i + 3] = 255; /*alpha*/ + } + + return 0; /* OK */ +} + +static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) { + unsigned i; + if(color->colortype == LCT_PALETTE) { + /*error: more alpha values given than there are palette entries*/ + if(chunkLength > color->palettesize) return 39; + + for(i = 0; i != chunkLength; ++i) color->palette[4 * i + 3] = data[i]; + } else if(color->colortype == LCT_GREY) { + /*error: this chunk must be 2 bytes for grayscale image*/ + if(chunkLength != 2) return 30; + + color->key_defined = 1; + color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1]; + } else if(color->colortype == LCT_RGB) { + /*error: this chunk must be 6 bytes for RGB image*/ + if(chunkLength != 6) return 41; + + color->key_defined = 1; + color->key_r = 256u * data[0] + data[1]; + color->key_g = 256u * data[2] + data[3]; + color->key_b = 256u * data[4] + data[5]; + } + else return 42; /*error: tRNS chunk not allowed for other color models*/ + + return 0; /* OK */ +} + + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*background color chunk (bKGD)*/ +static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(info->color.colortype == LCT_PALETTE) { + /*error: this chunk must be 1 byte for indexed color image*/ + if(chunkLength != 1) return 43; + + /*error: invalid palette index, or maybe this chunk appeared before PLTE*/ + if(data[0] >= info->color.palettesize) return 103; + + info->background_defined = 1; + info->background_r = info->background_g = info->background_b = data[0]; + } else if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) { + /*error: this chunk must be 2 bytes for grayscale image*/ + if(chunkLength != 2) return 44; + + /*the values are truncated to bitdepth in the PNG file*/ + info->background_defined = 1; + info->background_r = info->background_g = info->background_b = 256u * data[0] + data[1]; + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { + /*error: this chunk must be 6 bytes for grayscale image*/ + if(chunkLength != 6) return 45; + + /*the values are truncated to bitdepth in the PNG file*/ + info->background_defined = 1; + info->background_r = 256u * data[0] + data[1]; + info->background_g = 256u * data[2] + data[3]; + info->background_b = 256u * data[4] + data[5]; + } + + return 0; /* OK */ +} + +/*text chunk (tEXt)*/ +static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + char *key = NULL, *str = NULL; + + while(!error) /*not really a while loop, only used to break on error*/ { + unsigned length, string2_begin; + + length = 0; + while(length < chunkLength && data[length] != 0) ++length; + /*even though it's not allowed by the standard, no error is thrown if + there's no null termination char, if the text is empty*/ + if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ + + key = (char*)lodepng_malloc(length + 1); + if(!key) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(key, data, length); + key[length] = 0; + + string2_begin = length + 1; /*skip keyword null terminator*/ + + length = (unsigned)(chunkLength < string2_begin ? 0 : chunkLength - string2_begin); + str = (char*)lodepng_malloc(length + 1); + if(!str) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(str, data + string2_begin, length); + str[length] = 0; + + error = lodepng_add_text(info, key, str); + + break; + } + + lodepng_free(key); + lodepng_free(str); + + return error; +} + +/*compressed text chunk (zTXt)*/ +static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecoderSettings* decoder, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + + /*copy the object to change parameters in it*/ + LodePNGDecompressSettings zlibsettings = decoder->zlibsettings; + + unsigned length, string2_begin; + char *key = NULL; + unsigned char* str = NULL; + size_t size = 0; + + while(!error) /*not really a while loop, only used to break on error*/ { + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 2 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ + if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ + + key = (char*)lodepng_malloc(length + 1); + if(!key) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(key, data, length); + key[length] = 0; + + if(data[length + 1] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ + + string2_begin = length + 2; + if(string2_begin > chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ + + length = (unsigned)chunkLength - string2_begin; + zlibsettings.max_output_size = decoder->max_text_size; + /*will fail if zlib error, e.g. if length is too small*/ + error = zlib_decompress(&str, &size, 0, &data[string2_begin], + length, &zlibsettings); + /*error: compressed text larger than decoder->max_text_size*/ + if(error && size > zlibsettings.max_output_size) error = 112; + if(error) break; + error = lodepng_add_text_sized(info, key, (char*)str, size); + break; + } + + lodepng_free(key); + lodepng_free(str); + + return error; +} + +/*international text chunk (iTXt)*/ +static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecoderSettings* decoder, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + unsigned i; + + /*copy the object to change parameters in it*/ + LodePNGDecompressSettings zlibsettings = decoder->zlibsettings; + + unsigned length, begin, compressed; + char *key = NULL, *langtag = NULL, *transkey = NULL; + + while(!error) /*not really a while loop, only used to break on error*/ { + /*Quick check if the chunk length isn't too small. Even without check + it'd still fail with other error checks below if it's too short. This just gives a different error code.*/ + if(chunkLength < 5) CERROR_BREAK(error, 30); /*iTXt chunk too short*/ + + /*read the key*/ + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 3 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination char, corrupt?*/ + if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/ + + key = (char*)lodepng_malloc(length + 1); + if(!key) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(key, data, length); + key[length] = 0; + + /*read the compression method*/ + compressed = data[length + 1]; + if(data[length + 2] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ + + /*even though it's not allowed by the standard, no error is thrown if + there's no null termination char, if the text is empty for the next 3 texts*/ + + /*read the langtag*/ + begin = length + 3; + length = 0; + for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length; + + langtag = (char*)lodepng_malloc(length + 1); + if(!langtag) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(langtag, data + begin, length); + langtag[length] = 0; + + /*read the transkey*/ + begin += length + 1; + length = 0; + for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length; + + transkey = (char*)lodepng_malloc(length + 1); + if(!transkey) CERROR_BREAK(error, 83); /*alloc fail*/ + + lodepng_memcpy(transkey, data + begin, length); + transkey[length] = 0; + + /*read the actual text*/ + begin += length + 1; + + length = (unsigned)chunkLength < begin ? 0 : (unsigned)chunkLength - begin; + + if(compressed) { + unsigned char* str = NULL; + size_t size = 0; + zlibsettings.max_output_size = decoder->max_text_size; + /*will fail if zlib error, e.g. if length is too small*/ + error = zlib_decompress(&str, &size, 0, &data[begin], + length, &zlibsettings); + /*error: compressed text larger than decoder->max_text_size*/ + if(error && size > zlibsettings.max_output_size) error = 112; + if(!error) error = lodepng_add_itext_sized(info, key, langtag, transkey, (char*)str, size); + lodepng_free(str); + } else { + error = lodepng_add_itext_sized(info, key, langtag, transkey, (char*)(data + begin), length); + } + + break; + } + + lodepng_free(key); + lodepng_free(langtag); + lodepng_free(transkey); + + return error; +} + +static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 7) return 73; /*invalid tIME chunk size*/ + + info->time_defined = 1; + info->time.year = 256u * data[0] + data[1]; + info->time.month = data[2]; + info->time.day = data[3]; + info->time.hour = data[4]; + info->time.minute = data[5]; + info->time.second = data[6]; + + return 0; /* OK */ +} + +static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 9) return 74; /*invalid pHYs chunk size*/ + + info->phys_defined = 1; + info->phys_x = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; + info->phys_y = 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7]; + info->phys_unit = data[8]; + + return 0; /* OK */ +} + +static unsigned readChunk_gAMA(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 4) return 96; /*invalid gAMA chunk size*/ + + info->gama_defined = 1; + info->gama_gamma = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; + + return 0; /* OK */ +} + +static unsigned readChunk_cHRM(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 32) return 97; /*invalid cHRM chunk size*/ + + info->chrm_defined = 1; + info->chrm_white_x = 16777216u * data[ 0] + 65536u * data[ 1] + 256u * data[ 2] + data[ 3]; + info->chrm_white_y = 16777216u * data[ 4] + 65536u * data[ 5] + 256u * data[ 6] + data[ 7]; + info->chrm_red_x = 16777216u * data[ 8] + 65536u * data[ 9] + 256u * data[10] + data[11]; + info->chrm_red_y = 16777216u * data[12] + 65536u * data[13] + 256u * data[14] + data[15]; + info->chrm_green_x = 16777216u * data[16] + 65536u * data[17] + 256u * data[18] + data[19]; + info->chrm_green_y = 16777216u * data[20] + 65536u * data[21] + 256u * data[22] + data[23]; + info->chrm_blue_x = 16777216u * data[24] + 65536u * data[25] + 256u * data[26] + data[27]; + info->chrm_blue_y = 16777216u * data[28] + 65536u * data[29] + 256u * data[30] + data[31]; + + return 0; /* OK */ +} + +static unsigned readChunk_sRGB(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + if(chunkLength != 1) return 98; /*invalid sRGB chunk size (this one is never ignored)*/ + + info->srgb_defined = 1; + info->srgb_intent = data[0]; + + return 0; /* OK */ +} + +static unsigned readChunk_iCCP(LodePNGInfo* info, const LodePNGDecoderSettings* decoder, + const unsigned char* data, size_t chunkLength) { + unsigned error = 0; + unsigned i; + size_t size = 0; + /*copy the object to change parameters in it*/ + LodePNGDecompressSettings zlibsettings = decoder->zlibsettings; + + unsigned length, string2_begin; + + info->iccp_defined = 1; + if(info->iccp_name) lodepng_clear_icc(info); + + for(length = 0; length < chunkLength && data[length] != 0; ++length) ; + if(length + 2 >= chunkLength) return 75; /*no null termination, corrupt?*/ + if(length < 1 || length > 79) return 89; /*keyword too short or long*/ + + info->iccp_name = (char*)lodepng_malloc(length + 1); + if(!info->iccp_name) return 83; /*alloc fail*/ + + info->iccp_name[length] = 0; + for(i = 0; i != length; ++i) info->iccp_name[i] = (char)data[i]; + + if(data[length + 1] != 0) return 72; /*the 0 byte indicating compression must be 0*/ + + string2_begin = length + 2; + if(string2_begin > chunkLength) return 75; /*no null termination, corrupt?*/ + + length = (unsigned)chunkLength - string2_begin; + zlibsettings.max_output_size = decoder->max_icc_size; + error = zlib_decompress(&info->iccp_profile, &size, 0, + &data[string2_begin], + length, &zlibsettings); + /*error: ICC profile larger than decoder->max_icc_size*/ + if(error && size > zlibsettings.max_output_size) error = 113; + info->iccp_profile_size = size; + if(!error && !info->iccp_profile_size) error = 100; /*invalid ICC profile size*/ + return error; +} + +/*significant bits chunk (sBIT)*/ +static unsigned readChunk_sBIT(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) { + unsigned bitdepth = (info->color.colortype == LCT_PALETTE) ? 8 : info->color.bitdepth; + if(info->color.colortype == LCT_GREY) { + /*error: this chunk must be 1 bytes for grayscale image*/ + if(chunkLength != 1) return 114; + if(data[0] == 0 || data[0] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = info->sbit_g = info->sbit_b = data[0]; /*setting g and b is not required, but sensible*/ + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_PALETTE) { + /*error: this chunk must be 3 bytes for RGB and palette image*/ + if(chunkLength != 3) return 114; + if(data[0] == 0 || data[1] == 0 || data[2] == 0) return 115; + if(data[0] > bitdepth || data[1] > bitdepth || data[2] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = data[0]; + info->sbit_g = data[1]; + info->sbit_b = data[2]; + } else if(info->color.colortype == LCT_GREY_ALPHA) { + /*error: this chunk must be 2 byte for grayscale with alpha image*/ + if(chunkLength != 2) return 114; + if(data[0] == 0 || data[1] == 0) return 115; + if(data[0] > bitdepth || data[1] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = info->sbit_g = info->sbit_b = data[0]; /*setting g and b is not required, but sensible*/ + info->sbit_a = data[1]; + } else if(info->color.colortype == LCT_RGBA) { + /*error: this chunk must be 4 bytes for grayscale image*/ + if(chunkLength != 4) return 114; + if(data[0] == 0 || data[1] == 0 || data[2] == 0 || data[3] == 0) return 115; + if(data[0] > bitdepth || data[1] > bitdepth || data[2] > bitdepth || data[3] > bitdepth) return 115; + info->sbit_defined = 1; + info->sbit_r = data[0]; + info->sbit_g = data[1]; + info->sbit_b = data[2]; + info->sbit_a = data[3]; + } + + return 0; /* OK */ +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos, + const unsigned char* in, size_t insize) { + const unsigned char* chunk = in + pos; + unsigned chunkLength; + const unsigned char* data; + unsigned unhandled = 0; + unsigned error = 0; + + if(pos + 4 > insize) return 30; + chunkLength = lodepng_chunk_length(chunk); + if(chunkLength > 2147483647) return 63; + data = lodepng_chunk_data_const(chunk); + if(chunkLength + 12 > insize - pos) return 30; + + if(lodepng_chunk_type_equals(chunk, "PLTE")) { + error = readChunk_PLTE(&state->info_png.color, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { + error = readChunk_tRNS(&state->info_png.color, data, chunkLength); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { + error = readChunk_bKGD(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { + error = readChunk_tEXt(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { + error = readChunk_zTXt(&state->info_png, &state->decoder, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { + error = readChunk_iTXt(&state->info_png, &state->decoder, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "tIME")) { + error = readChunk_tIME(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { + error = readChunk_pHYs(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { + error = readChunk_gAMA(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { + error = readChunk_cHRM(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { + error = readChunk_sRGB(&state->info_png, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { + error = readChunk_iCCP(&state->info_png, &state->decoder, data, chunkLength); + } else if(lodepng_chunk_type_equals(chunk, "sBIT")) { + error = readChunk_sBIT(&state->info_png, data, chunkLength); +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else { + /* unhandled chunk is ok (is not an error) */ + unhandled = 1; + } + + if(!error && !unhandled && !state->decoder.ignore_crc) { + if(lodepng_chunk_check_crc(chunk)) return 57; /*invalid CRC*/ + } + + return error; +} + +/*read a PNG, the result will be in the same color type as the PNG (hence "generic")*/ +static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize) { + unsigned char IEND = 0; + const unsigned char* chunk; /*points to beginning of next chunk*/ + unsigned char* idat; /*the data from idat chunks, zlib compressed*/ + size_t idatsize = 0; + unsigned char* scanlines = NULL; + size_t scanlines_size = 0, expected_size = 0; + size_t outsize = 0; + + /*for unknown chunk order*/ + unsigned unknown = 0; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + + + /* safe output values in case error happens */ + *out = NULL; + *w = *h = 0; + + state->error = lodepng_inspect(w, h, state, in, insize); /*reads header and resets other parameters in state->info_png*/ + if(state->error) return; + + if(lodepng_pixel_overflow(*w, *h, &state->info_png.color, &state->info_raw)) { + CERROR_RETURN(state->error, 92); /*overflow possible due to amount of pixels*/ + } + + /*the input filesize is a safe upper bound for the sum of idat chunks size*/ + idat = (unsigned char*)lodepng_malloc(insize); + if(!idat) CERROR_RETURN(state->error, 83); /*alloc fail*/ + + chunk = &in[33]; /*first byte of the first chunk after the header*/ + + /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk. + IDAT data is put at the start of the in buffer*/ + while(!IEND && !state->error) { + unsigned chunkLength; + const unsigned char* data; /*the data in the chunk*/ + size_t pos = (size_t)(chunk - in); + + /*error: next chunk out of bounds of the in buffer*/ + if(chunk < in || pos + 12 > insize) { + if(state->decoder.ignore_end) break; /*other errors may still happen though*/ + CERROR_BREAK(state->error, 30); + } + + /*length of the data of the chunk, excluding the 12 bytes for length, chunk type and CRC*/ + chunkLength = lodepng_chunk_length(chunk); + /*error: chunk length larger than the max PNG chunk size*/ + if(chunkLength > 2147483647) { + if(state->decoder.ignore_end) break; /*other errors may still happen though*/ + CERROR_BREAK(state->error, 63); + } + + if(pos + (size_t)chunkLength + 12 > insize || pos + (size_t)chunkLength + 12 < pos) { + CERROR_BREAK(state->error, 64); /*error: size of the in buffer too small to contain next chunk (or int overflow)*/ + } + + data = lodepng_chunk_data_const(chunk); + + unknown = 0; + + /*IDAT chunk, containing compressed image data*/ + if(lodepng_chunk_type_equals(chunk, "IDAT")) { + size_t newsize; + if(lodepng_addofl(idatsize, chunkLength, &newsize)) CERROR_BREAK(state->error, 95); + if(newsize > insize) CERROR_BREAK(state->error, 95); + lodepng_memcpy(idat + idatsize, data, chunkLength); + idatsize += chunkLength; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + critical_pos = 3; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else if(lodepng_chunk_type_equals(chunk, "IEND")) { + /*IEND chunk*/ + IEND = 1; + } else if(lodepng_chunk_type_equals(chunk, "PLTE")) { + /*palette chunk (PLTE)*/ + state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength); + if(state->error) break; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + critical_pos = 2; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else if(lodepng_chunk_type_equals(chunk, "tRNS")) { + /*palette transparency chunk (tRNS). Even though this one is an ancillary chunk , it is still compiled + in without 'LODEPNG_COMPILE_ANCILLARY_CHUNKS' because it contains essential color information that + affects the alpha channel of pixels. */ + state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength); + if(state->error) break; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*background color chunk (bKGD)*/ + } else if(lodepng_chunk_type_equals(chunk, "bKGD")) { + state->error = readChunk_bKGD(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "tEXt")) { + /*text chunk (tEXt)*/ + if(state->decoder.read_text_chunks) { + state->error = readChunk_tEXt(&state->info_png, data, chunkLength); + if(state->error) break; + } + } else if(lodepng_chunk_type_equals(chunk, "zTXt")) { + /*compressed text chunk (zTXt)*/ + if(state->decoder.read_text_chunks) { + state->error = readChunk_zTXt(&state->info_png, &state->decoder, data, chunkLength); + if(state->error) break; + } + } else if(lodepng_chunk_type_equals(chunk, "iTXt")) { + /*international text chunk (iTXt)*/ + if(state->decoder.read_text_chunks) { + state->error = readChunk_iTXt(&state->info_png, &state->decoder, data, chunkLength); + if(state->error) break; + } + } else if(lodepng_chunk_type_equals(chunk, "tIME")) { + state->error = readChunk_tIME(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "pHYs")) { + state->error = readChunk_pHYs(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "gAMA")) { + state->error = readChunk_gAMA(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "cHRM")) { + state->error = readChunk_cHRM(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "sRGB")) { + state->error = readChunk_sRGB(&state->info_png, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "iCCP")) { + state->error = readChunk_iCCP(&state->info_png, &state->decoder, data, chunkLength); + if(state->error) break; + } else if(lodepng_chunk_type_equals(chunk, "sBIT")) { + state->error = readChunk_sBIT(&state->info_png, data, chunkLength); + if(state->error) break; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } else /*it's not an implemented chunk type, so ignore it: skip over the data*/ { + /*error: unknown critical chunk (5th bit of first byte of chunk type is 0)*/ + if(!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk)) { + CERROR_BREAK(state->error, 69); + } + + unknown = 1; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(state->decoder.remember_unknown_chunks) { + state->error = lodepng_chunk_append(&state->info_png.unknown_chunks_data[critical_pos - 1], + &state->info_png.unknown_chunks_size[critical_pos - 1], chunk); + if(state->error) break; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + } + + if(!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/ { + if(lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/ + } + + if(!IEND) chunk = lodepng_chunk_next_const(chunk, in + insize); + } + + if(!state->error && state->info_png.color.colortype == LCT_PALETTE && !state->info_png.color.palette) { + state->error = 106; /* error: PNG file must have PLTE chunk if color type is palette */ + } + + if(!state->error) { + /*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation. + If the decompressed size does not match the prediction, the image must be corrupt.*/ + if(state->info_png.interlace_method == 0) { + size_t bpp = lodepng_get_bpp(&state->info_png.color); + expected_size = lodepng_get_raw_size_idat(*w, *h, bpp); + } else { + size_t bpp = lodepng_get_bpp(&state->info_png.color); + /*Adam-7 interlaced: expected size is the sum of the 7 sub-images sizes*/ + expected_size = 0; + expected_size += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, bpp); + if(*w > 4) expected_size += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, bpp); + expected_size += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, bpp); + if(*w > 2) expected_size += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, bpp); + expected_size += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, bpp); + if(*w > 1) expected_size += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, bpp); + expected_size += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, bpp); + } + + state->error = zlib_decompress(&scanlines, &scanlines_size, expected_size, idat, idatsize, &state->decoder.zlibsettings); + } + if(!state->error && scanlines_size != expected_size) state->error = 91; /*decompressed size doesn't match prediction*/ + lodepng_free(idat); + + if(!state->error) { + outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color); + *out = (unsigned char*)lodepng_malloc(outsize); + if(!*out) state->error = 83; /*alloc fail*/ + } + if(!state->error) { + lodepng_memset(*out, 0, outsize); + state->error = postProcessScanlines(*out, scanlines, *w, *h, &state->info_png); + } + lodepng_free(scanlines); +} + +unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize) { + *out = NULL; + decodeGeneric(out, w, h, state, in, insize); + if(state->error) return state->error; + if(!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) { + /*same color type, no copying or converting of data needed*/ + /*store the info_png color settings on the info_raw so that the info_raw still reflects what colortype + the raw image has to the end user*/ + if(!state->decoder.color_convert) { + state->error = lodepng_color_mode_copy(&state->info_raw, &state->info_png.color); + if(state->error) return state->error; + } + } else { /*color conversion needed*/ + unsigned char* data = *out; + size_t outsize; + + /*TODO: check if this works according to the statement in the documentation: "The converter can convert + from grayscale input color type, to 8-bit grayscale or grayscale with alpha"*/ + if(!(state->info_raw.colortype == LCT_RGB || state->info_raw.colortype == LCT_RGBA) + && !(state->info_raw.bitdepth == 8)) { + return 56; /*unsupported color mode conversion*/ + } + + outsize = lodepng_get_raw_size(*w, *h, &state->info_raw); + *out = (unsigned char*)lodepng_malloc(outsize); + if(!(*out)) { + state->error = 83; /*alloc fail*/ + } + else state->error = lodepng_convert(*out, data, &state->info_raw, + &state->info_png.color, *w, *h); + lodepng_free(data); + } + return state->error; +} + +unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, + size_t insize, LodePNGColorType colortype, unsigned bitdepth) { + unsigned error; + LodePNGState state; + lodepng_state_init(&state); + state.info_raw.colortype = colortype; + state.info_raw.bitdepth = bitdepth; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*disable reading things that this function doesn't output*/ + state.decoder.read_text_chunks = 0; + state.decoder.remember_unknown_chunks = 0; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + error = lodepng_decode(out, w, h, &state, in, insize); + lodepng_state_cleanup(&state); + return error; +} + +unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) { + return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8); +} + +unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) { + return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename, + LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer = NULL; + size_t buffersize; + unsigned error; + /* safe output values in case error happens */ + *out = NULL; + *w = *h = 0; + error = lodepng_load_file(&buffer, &buffersize, filename); + if(!error) error = lodepng_decode_memory(out, w, h, buffer, buffersize, colortype, bitdepth); + lodepng_free(buffer); + return error; +} + +unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) { + return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8); +} + +unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) { + return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8); +} +#endif /*LODEPNG_COMPILE_DISK*/ + +void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) { + settings->color_convert = 1; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + settings->read_text_chunks = 1; + settings->remember_unknown_chunks = 0; + settings->max_text_size = 16777216; + settings->max_icc_size = 16777216; /* 16MB is much more than enough for any reasonable ICC profile */ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + settings->ignore_crc = 0; + settings->ignore_critical = 0; + settings->ignore_end = 0; + lodepng_decompress_settings_init(&settings->zlibsettings); +} + +#endif /*LODEPNG_COMPILE_DECODER*/ + +#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) + +void lodepng_state_init(LodePNGState* state) { +#ifdef LODEPNG_COMPILE_DECODER + lodepng_decoder_settings_init(&state->decoder); +#endif /*LODEPNG_COMPILE_DECODER*/ +#ifdef LODEPNG_COMPILE_ENCODER + lodepng_encoder_settings_init(&state->encoder); +#endif /*LODEPNG_COMPILE_ENCODER*/ + lodepng_color_mode_init(&state->info_raw); + lodepng_info_init(&state->info_png); + state->error = 1; +} + +void lodepng_state_cleanup(LodePNGState* state) { + lodepng_color_mode_cleanup(&state->info_raw); + lodepng_info_cleanup(&state->info_png); +} + +void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) { + lodepng_state_cleanup(dest); + *dest = *source; + lodepng_color_mode_init(&dest->info_raw); + lodepng_info_init(&dest->info_png); + dest->error = lodepng_color_mode_copy(&dest->info_raw, &source->info_raw); if(dest->error) return; + dest->error = lodepng_info_copy(&dest->info_png, &source->info_png); if(dest->error) return; +} + +#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */ + +#ifdef LODEPNG_COMPILE_ENCODER + +/* ////////////////////////////////////////////////////////////////////////// */ +/* / PNG Encoder / */ +/* ////////////////////////////////////////////////////////////////////////// */ + + +static unsigned writeSignature(ucvector* out) { + size_t pos = out->size; + const unsigned char signature[] = {137, 80, 78, 71, 13, 10, 26, 10}; + /*8 bytes PNG signature, aka the magic bytes*/ + if(!ucvector_resize(out, out->size + 8)) return 83; /*alloc fail*/ + lodepng_memcpy(out->data + pos, signature, 8); + return 0; +} + +static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method) { + unsigned char *chunk, *data; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 13, "IHDR")); + data = chunk + 8; + + lodepng_set32bitInt(data + 0, w); /*width*/ + lodepng_set32bitInt(data + 4, h); /*height*/ + data[8] = (unsigned char)bitdepth; /*bit depth*/ + data[9] = (unsigned char)colortype; /*color type*/ + data[10] = 0; /*compression method*/ + data[11] = 0; /*filter method*/ + data[12] = interlace_method; /*interlace method*/ + + lodepng_chunk_generate_crc(chunk); + return 0; +} + +/* only adds the chunk if needed (there is a key or palette with alpha) */ +static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) { + unsigned char* chunk; + size_t i, j = 8; + + if(info->palettesize == 0 || info->palettesize > 256) { + return 68; /*invalid palette size, it is only allowed to be 1-256*/ + } + + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, info->palettesize * 3, "PLTE")); + + for(i = 0; i != info->palettesize; ++i) { + /*add all channels except alpha channel*/ + chunk[j++] = info->palette[i * 4 + 0]; + chunk[j++] = info->palette[i * 4 + 1]; + chunk[j++] = info->palette[i * 4 + 2]; + } + + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) { + unsigned char* chunk = NULL; + + if(info->colortype == LCT_PALETTE) { + size_t i, amount = info->palettesize; + /*the tail of palette values that all have 255 as alpha, does not have to be encoded*/ + for(i = info->palettesize; i != 0; --i) { + if(info->palette[4 * (i - 1) + 3] != 255) break; + --amount; + } + if(amount) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, amount, "tRNS")); + /*add the alpha channel values from the palette*/ + for(i = 0; i != amount; ++i) chunk[8 + i] = info->palette[4 * i + 3]; + } + } else if(info->colortype == LCT_GREY) { + if(info->key_defined) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "tRNS")); + chunk[8] = (unsigned char)(info->key_r >> 8); + chunk[9] = (unsigned char)(info->key_r & 255); + } + } else if(info->colortype == LCT_RGB) { + if(info->key_defined) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 6, "tRNS")); + chunk[8] = (unsigned char)(info->key_r >> 8); + chunk[9] = (unsigned char)(info->key_r & 255); + chunk[10] = (unsigned char)(info->key_g >> 8); + chunk[11] = (unsigned char)(info->key_g & 255); + chunk[12] = (unsigned char)(info->key_b >> 8); + chunk[13] = (unsigned char)(info->key_b & 255); + } + } + + if(chunk) lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t datasize, + LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* zlib = NULL; + size_t zlibsize = 0; + + error = zlib_compress(&zlib, &zlibsize, data, datasize, zlibsettings); + if(!error) { + error = lodepng_chunk_createv(out, zlibsize, "IDAT", zlib); + } + lodepng_free(zlib); + return error; +} + +static unsigned addChunk_IEND(ucvector* out) { + return lodepng_chunk_createv(out, 0, "IEND", NULL); +} + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + +static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring) { + unsigned char* chunk = NULL; + size_t keysize = lodepng_strlen(keyword), textsize = lodepng_strlen(textstring); + size_t size = keysize + 1 + textsize; + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, size, "tEXt")); + lodepng_memcpy(chunk + 8, keyword, keysize); + chunk[8 + keysize] = 0; /*null termination char*/ + lodepng_memcpy(chunk + 9 + keysize, textstring, textsize); + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* textstring, + LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* chunk = NULL; + unsigned char* compressed = NULL; + size_t compressedsize = 0; + size_t textsize = lodepng_strlen(textstring); + size_t keysize = lodepng_strlen(keyword); + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + + error = zlib_compress(&compressed, &compressedsize, + (const unsigned char*)textstring, textsize, zlibsettings); + if(!error) { + size_t size = keysize + 2 + compressedsize; + error = lodepng_chunk_init(&chunk, out, size, "zTXt"); + } + if(!error) { + lodepng_memcpy(chunk + 8, keyword, keysize); + chunk[8 + keysize] = 0; /*null termination char*/ + chunk[9 + keysize] = 0; /*compression method: 0*/ + lodepng_memcpy(chunk + 10 + keysize, compressed, compressedsize); + lodepng_chunk_generate_crc(chunk); + } + + lodepng_free(compressed); + return error; +} + +static unsigned addChunk_iTXt(ucvector* out, unsigned compress, const char* keyword, const char* langtag, + const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* chunk = NULL; + unsigned char* compressed = NULL; + size_t compressedsize = 0; + size_t textsize = lodepng_strlen(textstring); + size_t keysize = lodepng_strlen(keyword), langsize = lodepng_strlen(langtag), transsize = lodepng_strlen(transkey); + + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + + if(compress) { + error = zlib_compress(&compressed, &compressedsize, + (const unsigned char*)textstring, textsize, zlibsettings); + } + if(!error) { + size_t size = keysize + 3 + langsize + 1 + transsize + 1 + (compress ? compressedsize : textsize); + error = lodepng_chunk_init(&chunk, out, size, "iTXt"); + } + if(!error) { + size_t pos = 8; + lodepng_memcpy(chunk + pos, keyword, keysize); + pos += keysize; + chunk[pos++] = 0; /*null termination char*/ + chunk[pos++] = (compress ? 1 : 0); /*compression flag*/ + chunk[pos++] = 0; /*compression method: 0*/ + lodepng_memcpy(chunk + pos, langtag, langsize); + pos += langsize; + chunk[pos++] = 0; /*null termination char*/ + lodepng_memcpy(chunk + pos, transkey, transsize); + pos += transsize; + chunk[pos++] = 0; /*null termination char*/ + if(compress) { + lodepng_memcpy(chunk + pos, compressed, compressedsize); + } else { + lodepng_memcpy(chunk + pos, textstring, textsize); + } + lodepng_chunk_generate_crc(chunk); + } + + lodepng_free(compressed); + return error; +} + +static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk = NULL; + if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "bKGD")); + chunk[8] = (unsigned char)(info->background_r >> 8); + chunk[9] = (unsigned char)(info->background_r & 255); + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 6, "bKGD")); + chunk[8] = (unsigned char)(info->background_r >> 8); + chunk[9] = (unsigned char)(info->background_r & 255); + chunk[10] = (unsigned char)(info->background_g >> 8); + chunk[11] = (unsigned char)(info->background_g & 255); + chunk[12] = (unsigned char)(info->background_b >> 8); + chunk[13] = (unsigned char)(info->background_b & 255); + } else if(info->color.colortype == LCT_PALETTE) { + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 1, "bKGD")); + chunk[8] = (unsigned char)(info->background_r & 255); /*palette index*/ + } + if(chunk) lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 7, "tIME")); + chunk[8] = (unsigned char)(time->year >> 8); + chunk[9] = (unsigned char)(time->year & 255); + chunk[10] = (unsigned char)time->month; + chunk[11] = (unsigned char)time->day; + chunk[12] = (unsigned char)time->hour; + chunk[13] = (unsigned char)time->minute; + chunk[14] = (unsigned char)time->second; + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 9, "pHYs")); + lodepng_set32bitInt(chunk + 8, info->phys_x); + lodepng_set32bitInt(chunk + 12, info->phys_y); + chunk[16] = info->phys_unit; + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_gAMA(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 4, "gAMA")); + lodepng_set32bitInt(chunk + 8, info->gama_gamma); + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_cHRM(ucvector* out, const LodePNGInfo* info) { + unsigned char* chunk; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 32, "cHRM")); + lodepng_set32bitInt(chunk + 8, info->chrm_white_x); + lodepng_set32bitInt(chunk + 12, info->chrm_white_y); + lodepng_set32bitInt(chunk + 16, info->chrm_red_x); + lodepng_set32bitInt(chunk + 20, info->chrm_red_y); + lodepng_set32bitInt(chunk + 24, info->chrm_green_x); + lodepng_set32bitInt(chunk + 28, info->chrm_green_y); + lodepng_set32bitInt(chunk + 32, info->chrm_blue_x); + lodepng_set32bitInt(chunk + 36, info->chrm_blue_y); + lodepng_chunk_generate_crc(chunk); + return 0; +} + +static unsigned addChunk_sRGB(ucvector* out, const LodePNGInfo* info) { + unsigned char data = info->srgb_intent; + return lodepng_chunk_createv(out, 1, "sRGB", &data); +} + +static unsigned addChunk_iCCP(ucvector* out, const LodePNGInfo* info, LodePNGCompressSettings* zlibsettings) { + unsigned error = 0; + unsigned char* chunk = NULL; + unsigned char* compressed = NULL; + size_t compressedsize = 0; + size_t keysize = lodepng_strlen(info->iccp_name); + + if(keysize < 1 || keysize > 79) return 89; /*error: invalid keyword size*/ + error = zlib_compress(&compressed, &compressedsize, + info->iccp_profile, info->iccp_profile_size, zlibsettings); + if(!error) { + size_t size = keysize + 2 + compressedsize; + error = lodepng_chunk_init(&chunk, out, size, "iCCP"); + } + if(!error) { + lodepng_memcpy(chunk + 8, info->iccp_name, keysize); + chunk[8 + keysize] = 0; /*null termination char*/ + chunk[9 + keysize] = 0; /*compression method: 0*/ + lodepng_memcpy(chunk + 10 + keysize, compressed, compressedsize); + lodepng_chunk_generate_crc(chunk); + } + + lodepng_free(compressed); + return error; +} + +static unsigned addChunk_sBIT(ucvector* out, const LodePNGInfo* info) { + unsigned bitdepth = (info->color.colortype == LCT_PALETTE) ? 8 : info->color.bitdepth; + unsigned char* chunk = NULL; + if(info->color.colortype == LCT_GREY) { + if(info->sbit_r == 0 || info->sbit_r > bitdepth) return 115; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 1, "sBIT")); + chunk[8] = info->sbit_r; + } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_PALETTE) { + if(info->sbit_r == 0 || info->sbit_g == 0 || info->sbit_b == 0) return 115; + if(info->sbit_r > bitdepth || info->sbit_g > bitdepth || info->sbit_b > bitdepth) return 115; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 3, "sBIT")); + chunk[8] = info->sbit_r; + chunk[9] = info->sbit_g; + chunk[10] = info->sbit_b; + } else if(info->color.colortype == LCT_GREY_ALPHA) { + if(info->sbit_r == 0 || info->sbit_a == 0) return 115; + if(info->sbit_r > bitdepth || info->sbit_a > bitdepth) return 115; + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 2, "sBIT")); + chunk[8] = info->sbit_r; + chunk[9] = info->sbit_a; + } else if(info->color.colortype == LCT_RGBA) { + if(info->sbit_r == 0 || info->sbit_g == 0 || info->sbit_b == 0 || info->sbit_a == 0 || + info->sbit_r > bitdepth || info->sbit_g > bitdepth || + info->sbit_b > bitdepth || info->sbit_a > bitdepth) { + return 115; + } + CERROR_TRY_RETURN(lodepng_chunk_init(&chunk, out, 4, "sBIT")); + chunk[8] = info->sbit_r; + chunk[9] = info->sbit_g; + chunk[10] = info->sbit_b; + chunk[11] = info->sbit_a; + } + if(chunk) lodepng_chunk_generate_crc(chunk); + return 0; +} + +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +static void filterScanline(unsigned char* out, const unsigned char* scanline, const unsigned char* prevline, + size_t length, size_t bytewidth, unsigned char filterType) { + size_t i; + switch(filterType) { + case 0: /*None*/ + for(i = 0; i != length; ++i) out[i] = scanline[i]; + break; + case 1: /*Sub*/ + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; + for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - scanline[i - bytewidth]; + break; + case 2: /*Up*/ + if(prevline) { + for(i = 0; i != length; ++i) out[i] = scanline[i] - prevline[i]; + } else { + for(i = 0; i != length; ++i) out[i] = scanline[i]; + } + break; + case 3: /*Average*/ + if(prevline) { + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i] - (prevline[i] >> 1); + for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1); + } else { + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; + for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - (scanline[i - bytewidth] >> 1); + } + break; + case 4: /*Paeth*/ + if(prevline) { + /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/ + for(i = 0; i != bytewidth; ++i) out[i] = (scanline[i] - prevline[i]); + for(i = bytewidth; i < length; ++i) { + out[i] = (scanline[i] - paethPredictor(scanline[i - bytewidth], prevline[i], prevline[i - bytewidth])); + } + } else { + for(i = 0; i != bytewidth; ++i) out[i] = scanline[i]; + /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - bytewidth]*/ + for(i = bytewidth; i < length; ++i) out[i] = (scanline[i] - scanline[i - bytewidth]); + } + break; + default: return; /*invalid filter type given*/ + } +} + +/* integer binary logarithm, max return value is 31 */ +static size_t ilog2(size_t i) { + size_t result = 0; + if(i >= 65536) { result += 16; i >>= 16; } + if(i >= 256) { result += 8; i >>= 8; } + if(i >= 16) { result += 4; i >>= 4; } + if(i >= 4) { result += 2; i >>= 2; } + if(i >= 2) { result += 1; /*i >>= 1;*/ } + return result; +} + +/* integer approximation for i * log2(i), helper function for LFS_ENTROPY */ +static size_t ilog2i(size_t i) { + size_t l; + if(i == 0) return 0; + l = ilog2(i); + /* approximate i*log2(i): l is integer logarithm, ((i - (1u << l)) << 1u) + linearly approximates the missing fractional part multiplied by i */ + return i * l + ((i - (((size_t)1) << l)) << 1u); +} + +static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, + const LodePNGColorMode* color, const LodePNGEncoderSettings* settings) { + /* + For PNG filter method 0 + out must be a buffer with as size: h + (w * h * bpp + 7u) / 8u, because there are + the scanlines with 1 extra byte per scanline + */ + + unsigned bpp = lodepng_get_bpp(color); + /*the width of a scanline in bytes, not including the filter type*/ + size_t linebytes = lodepng_get_raw_size_idat(w, 1, bpp) - 1u; + + /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/ + size_t bytewidth = (bpp + 7u) / 8u; + const unsigned char* prevline = NULL; + unsigned x, y; + unsigned error = 0; + LodePNGFilterStrategy strategy = settings->filter_strategy; + + /* + There is a heuristic called the minimum sum of absolute differences heuristic, suggested by the PNG standard: + * If the image type is Palette, or the bit depth is smaller than 8, then do not filter the image (i.e. + use fixed filtering, with the filter None). + * (The other case) If the image type is Grayscale or RGB (with or without Alpha), and the bit depth is + not smaller than 8, then use adaptive filtering heuristic as follows: independently for each row, apply + all five filters and select the filter that produces the smallest sum of absolute values per row. + This heuristic is used if filter strategy is LFS_MINSUM and filter_palette_zero is true. + + If filter_palette_zero is true and filter_strategy is not LFS_MINSUM, the above heuristic is followed, + but for "the other case", whatever strategy filter_strategy is set to instead of the minimum sum + heuristic is used. + */ + if(settings->filter_palette_zero && + (color->colortype == LCT_PALETTE || color->bitdepth < 8)) strategy = LFS_ZERO; + + if(bpp == 0) return 31; /*error: invalid color type*/ + + if(strategy >= LFS_ZERO && strategy <= LFS_FOUR) { + unsigned char type = (unsigned char)strategy; + for(y = 0; y != h; ++y) { + size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ + size_t inindex = linebytes * y; + out[outindex] = type; /*filter type byte*/ + filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type); + prevline = &in[inindex]; + } + } else if(strategy == LFS_MINSUM) { + /*adaptive filtering*/ + unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ + size_t smallest = 0; + unsigned char type, bestType = 0; + + for(type = 0; type != 5; ++type) { + attempt[type] = (unsigned char*)lodepng_malloc(linebytes); + if(!attempt[type]) error = 83; /*alloc fail*/ + } + + if(!error) { + for(y = 0; y != h; ++y) { + /*try the 5 filter types*/ + for(type = 0; type != 5; ++type) { + size_t sum = 0; + filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); + + /*calculate the sum of the result*/ + if(type == 0) { + for(x = 0; x != linebytes; ++x) sum += (unsigned char)(attempt[type][x]); + } else { + for(x = 0; x != linebytes; ++x) { + /*For differences, each byte should be treated as signed, values above 127 are negative + (converted to signed char). Filtertype 0 isn't a difference though, so use unsigned there. + This means filtertype 0 is almost never chosen, but that is justified.*/ + unsigned char s = attempt[type][x]; + sum += s < 128 ? s : (255U - s); + } + } + + /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ + if(type == 0 || sum < smallest) { + bestType = type; + smallest = sum; + } + } + + prevline = &in[y * linebytes]; + + /*now fill the out values*/ + out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ + for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; + } + } + + for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); + } else if(strategy == LFS_ENTROPY) { + unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ + size_t bestSum = 0; + unsigned type, bestType = 0; + unsigned count[256]; + + for(type = 0; type != 5; ++type) { + attempt[type] = (unsigned char*)lodepng_malloc(linebytes); + if(!attempt[type]) error = 83; /*alloc fail*/ + } + + if(!error) { + for(y = 0; y != h; ++y) { + /*try the 5 filter types*/ + for(type = 0; type != 5; ++type) { + size_t sum = 0; + filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); + lodepng_memset(count, 0, 256 * sizeof(*count)); + for(x = 0; x != linebytes; ++x) ++count[attempt[type][x]]; + ++count[type]; /*the filter type itself is part of the scanline*/ + for(x = 0; x != 256; ++x) { + sum += ilog2i(count[x]); + } + /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/ + if(type == 0 || sum > bestSum) { + bestType = type; + bestSum = sum; + } + } + + prevline = &in[y * linebytes]; + + /*now fill the out values*/ + out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ + for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; + } + } + + for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); + } else if(strategy == LFS_PREDEFINED) { + for(y = 0; y != h; ++y) { + size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/ + size_t inindex = linebytes * y; + unsigned char type = settings->predefined_filters[y]; + out[outindex] = type; /*filter type byte*/ + filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type); + prevline = &in[inindex]; + } + } else if(strategy == LFS_BRUTE_FORCE) { + /*brute force filter chooser. + deflate the scanline after every filter attempt to see which one deflates best. + This is very slow and gives only slightly smaller, sometimes even larger, result*/ + size_t size[5]; + unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/ + size_t smallest = 0; + unsigned type = 0, bestType = 0; + unsigned char* dummy; + LodePNGCompressSettings zlibsettings; + lodepng_memcpy(&zlibsettings, &settings->zlibsettings, sizeof(LodePNGCompressSettings)); + /*use fixed tree on the attempts so that the tree is not adapted to the filtertype on purpose, + to simulate the true case where the tree is the same for the whole image. Sometimes it gives + better result with dynamic tree anyway. Using the fixed tree sometimes gives worse, but in rare + cases better compression. It does make this a bit less slow, so it's worth doing this.*/ + zlibsettings.btype = 1; + /*a custom encoder likely doesn't read the btype setting and is optimized for complete PNG + images only, so disable it*/ + zlibsettings.custom_zlib = NULL; + zlibsettings.custom_deflate = NULL; + for(type = 0; type != 5; ++type) { + attempt[type] = (unsigned char*)lodepng_malloc(linebytes); + if(!attempt[type]) error = 83; /*alloc fail*/ + } + if(!error) { + for(y = 0; y != h; ++y) /*try the 5 filter types*/ { + for(type = 0; type != 5; ++type) { + unsigned testsize = (unsigned)linebytes; + /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by testing a part of the row*/ + + filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type); + size[type] = 0; + dummy = NULL; + zlib_compress(&dummy, &size[type], attempt[type], testsize, &zlibsettings); + lodepng_free(dummy); + /*check if this is smallest size (or if type == 0 it's the first case so always store the values)*/ + if(type == 0 || size[type] < smallest) { + bestType = type; + smallest = size[type]; + } + } + prevline = &in[y * linebytes]; + out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/ + for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; + } + } + for(type = 0; type != 5; ++type) lodepng_free(attempt[type]); + } + else return 88; /* unknown filter strategy */ + + return error; +} + +static void addPaddingBits(unsigned char* out, const unsigned char* in, + size_t olinebits, size_t ilinebits, unsigned h) { + /*The opposite of the removePaddingBits function + olinebits must be >= ilinebits*/ + unsigned y; + size_t diff = olinebits - ilinebits; + size_t obp = 0, ibp = 0; /*bit pointers*/ + for(y = 0; y != h; ++y) { + size_t x; + for(x = 0; x < ilinebits; ++x) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + /*obp += diff; --> no, fill in some value in the padding bits too, to avoid + "Use of uninitialised value of size ###" warning from valgrind*/ + for(x = 0; x != diff; ++x) setBitOfReversedStream(&obp, out, 0); + } +} + +/* +in: non-interlaced image with size w*h +out: the same pixels, but re-ordered according to PNG's Adam7 interlacing, with + no padding bits between scanlines, but between reduced images so that each + reduced image starts at a byte. +bpp: bits per pixel +there are no padding bits, not between scanlines, not between reduced images +in has the following size in bits: w * h * bpp. +out is possibly bigger due to padding bits between reduced images +NOTE: comments about padding bits are only relevant if bpp < 8 +*/ +static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) { + unsigned passw[7], passh[7]; + size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned i; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + if(bpp >= 8) { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + size_t bytewidth = bpp / 8u; + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth; + size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth; + for(b = 0; b < bytewidth; ++b) { + out[pixeloutstart + b] = in[pixelinstart + b]; + } + } + } + } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ { + for(i = 0; i != 7; ++i) { + unsigned x, y, b; + unsigned ilinebits = bpp * passw[i]; + unsigned olinebits = bpp * w; + size_t obp, ibp; /*bit pointers (for out and in buffer)*/ + for(y = 0; y < passh[i]; ++y) + for(x = 0; x < passw[i]; ++x) { + ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; + obp = (8 * passstart[i]) + (y * ilinebits + x * bpp); + for(b = 0; b < bpp; ++b) { + unsigned char bit = readBitFromReversedStream(&ibp, in); + setBitOfReversedStream(&obp, out, bit); + } + } + } + } +} + +/*out must be buffer big enough to contain uncompressed IDAT chunk data, and in must contain the full image. +return value is error**/ +static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned char* in, + unsigned w, unsigned h, + const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings) { + /* + This function converts the pure 2D image with the PNG's colortype, into filtered-padded-interlaced data. Steps: + *) if no Adam7: 1) add padding bits (= possible extra bits per scanline if bpp < 8) 2) filter + *) if adam7: 1) Adam7_interlace 2) 7x add padding bits 3) 7x filter + */ + unsigned bpp = lodepng_get_bpp(&info_png->color); + unsigned error = 0; + + if(info_png->interlace_method == 0) { + *outsize = h + (h * ((w * bpp + 7u) / 8u)); /*image size plus an extra byte per scanline + possible padding bits*/ + *out = (unsigned char*)lodepng_malloc(*outsize); + if(!(*out) && (*outsize)) error = 83; /*alloc fail*/ + + if(!error) { + /*non multiple of 8 bits per scanline, padding bits needed per scanline*/ + if(bpp < 8 && w * bpp != ((w * bpp + 7u) / 8u) * 8u) { + unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7u) / 8u)); + if(!padded) error = 83; /*alloc fail*/ + if(!error) { + addPaddingBits(padded, in, ((w * bpp + 7u) / 8u) * 8u, w * bpp, h); + error = filter(*out, padded, w, h, &info_png->color, settings); + } + lodepng_free(padded); + } else { + /*we can immediately filter into the out buffer, no other steps needed*/ + error = filter(*out, in, w, h, &info_png->color, settings); + } + } + } else /*interlace_method is 1 (Adam7)*/ { + unsigned passw[7], passh[7]; + size_t filter_passstart[8], padded_passstart[8], passstart[8]; + unsigned char* adam7; + + Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); + + *outsize = filter_passstart[7]; /*image size plus an extra byte per scanline + possible padding bits*/ + *out = (unsigned char*)lodepng_malloc(*outsize); + if(!(*out)) error = 83; /*alloc fail*/ + + adam7 = (unsigned char*)lodepng_malloc(passstart[7]); + if(!adam7 && passstart[7]) error = 83; /*alloc fail*/ + + if(!error) { + unsigned i; + + Adam7_interlace(adam7, in, w, h, bpp); + for(i = 0; i != 7; ++i) { + if(bpp < 8) { + unsigned char* padded = (unsigned char*)lodepng_malloc(padded_passstart[i + 1] - padded_passstart[i]); + if(!padded) ERROR_BREAK(83); /*alloc fail*/ + addPaddingBits(padded, &adam7[passstart[i]], + ((passw[i] * bpp + 7u) / 8u) * 8u, passw[i] * bpp, passh[i]); + error = filter(&(*out)[filter_passstart[i]], padded, + passw[i], passh[i], &info_png->color, settings); + lodepng_free(padded); + } else { + error = filter(&(*out)[filter_passstart[i]], &adam7[padded_passstart[i]], + passw[i], passh[i], &info_png->color, settings); + } + + if(error) break; + } + } + + lodepng_free(adam7); + } + + return error; +} + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +static unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize) { + unsigned char* inchunk = data; + while((size_t)(inchunk - data) < datasize) { + CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk)); + out->allocsize = out->size; /*fix the allocsize again*/ + inchunk = lodepng_chunk_next(inchunk, data + datasize); + } + return 0; +} + +static unsigned isGrayICCProfile(const unsigned char* profile, unsigned size) { + /* + It is a gray profile if bytes 16-19 are "GRAY", rgb profile if bytes 16-19 + are "RGB ". We do not perform any full parsing of the ICC profile here, other + than check those 4 bytes to grayscale profile. Other than that, validity of + the profile is not checked. This is needed only because the PNG specification + requires using a non-gray color model if there is an ICC profile with "RGB " + (sadly limiting compression opportunities if the input data is grayscale RGB + data), and requires using a gray color model if it is "GRAY". + */ + if(size < 20) return 0; + return profile[16] == 'G' && profile[17] == 'R' && profile[18] == 'A' && profile[19] == 'Y'; +} + +static unsigned isRGBICCProfile(const unsigned char* profile, unsigned size) { + /* See comment in isGrayICCProfile*/ + if(size < 20) return 0; + return profile[16] == 'R' && profile[17] == 'G' && profile[18] == 'B' && profile[19] == ' '; +} +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +unsigned lodepng_encode(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h, + LodePNGState* state) { + unsigned char* data = NULL; /*uncompressed version of the IDAT chunk data*/ + size_t datasize = 0; + ucvector outv = ucvector_init(NULL, 0); + LodePNGInfo info; + const LodePNGInfo* info_png = &state->info_png; + LodePNGColorMode auto_color; + + lodepng_info_init(&info); + lodepng_color_mode_init(&auto_color); + + /*provide some proper output values if error will happen*/ + *out = NULL; + *outsize = 0; + state->error = 0; + + /*check input values validity*/ + if((info_png->color.colortype == LCT_PALETTE || state->encoder.force_palette) + && (info_png->color.palettesize == 0 || info_png->color.palettesize > 256)) { + /*this error is returned even if auto_convert is enabled and thus encoder could + generate the palette by itself: while allowing this could be possible in theory, + it may complicate the code or edge cases, and always requiring to give a palette + when setting this color type is a simpler contract*/ + state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/ + goto cleanup; + } + if(state->encoder.zlibsettings.btype > 2) { + state->error = 61; /*error: invalid btype*/ + goto cleanup; + } + if(info_png->interlace_method > 1) { + state->error = 71; /*error: invalid interlace mode*/ + goto cleanup; + } + state->error = checkColorValidity(info_png->color.colortype, info_png->color.bitdepth); + if(state->error) goto cleanup; /*error: invalid color type given*/ + state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth); + if(state->error) goto cleanup; /*error: invalid color type given*/ + + /* color convert and compute scanline filter types */ + lodepng_info_copy(&info, &state->info_png); + if(state->encoder.auto_convert) { + LodePNGColorStats stats; + unsigned allow_convert = 1; + lodepng_color_stats_init(&stats); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->iccp_defined && + isGrayICCProfile(info_png->iccp_profile, info_png->iccp_profile_size)) { + /*the PNG specification does not allow to use palette with a GRAY ICC profile, even + if the palette has only gray colors, so disallow it.*/ + stats.allow_palette = 0; + } + if(info_png->iccp_defined && + isRGBICCProfile(info_png->iccp_profile, info_png->iccp_profile_size)) { + /*the PNG specification does not allow to use grayscale color with RGB ICC profile, so disallow gray.*/ + stats.allow_greyscale = 0; + } +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + state->error = lodepng_compute_color_stats(&stats, image, w, h, &state->info_raw); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->background_defined) { + /*the background chunk's color must be taken into account as well*/ + unsigned r = 0, g = 0, b = 0; + LodePNGColorMode mode16 = lodepng_color_mode_make(LCT_RGB, 16); + lodepng_convert_rgb(&r, &g, &b, + info_png->background_r, info_png->background_g, info_png->background_b, &mode16, &info_png->color); + state->error = lodepng_color_stats_add(&stats, r, g, b, 65535); + if(state->error) goto cleanup; + } +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + state->error = auto_choose_color(&auto_color, &state->info_raw, &stats); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->sbit_defined) { + /*if sbit is defined, due to strict requirements of which sbit values can be present for which color modes, + auto_convert can't be done in many cases. However, do support a few cases here. + TODO: more conversions may be possible, and it may also be possible to get a more appropriate color type out of + auto_choose_color if knowledge about sbit is used beforehand + */ + unsigned sbit_max = LODEPNG_MAX(LODEPNG_MAX(LODEPNG_MAX(info_png->sbit_r, info_png->sbit_g), + info_png->sbit_b), info_png->sbit_a); + unsigned equal = (!info_png->sbit_g || info_png->sbit_g == info_png->sbit_r) + && (!info_png->sbit_b || info_png->sbit_b == info_png->sbit_r) + && (!info_png->sbit_a || info_png->sbit_a == info_png->sbit_r); + allow_convert = 0; + if(info.color.colortype == LCT_PALETTE && + auto_color.colortype == LCT_PALETTE) { + /* input and output are palette, and in this case it may happen that palette data is + expected to be copied from info_raw into the info_png */ + allow_convert = 1; + } + /*going from 8-bit RGB to palette (or 16-bit as long as sbit_max <= 8) is possible + since both are 8-bit RGB for sBIT's purposes*/ + if(info.color.colortype == LCT_RGB && + auto_color.colortype == LCT_PALETTE && sbit_max <= 8) { + allow_convert = 1; + } + /*going from 8-bit RGBA to palette is also ok but only if sbit_a is exactly 8*/ + if(info.color.colortype == LCT_RGBA && auto_color.colortype == LCT_PALETTE && + info_png->sbit_a == 8 && sbit_max <= 8) { + allow_convert = 1; + } + /*going from 16-bit RGB(A) to 8-bit RGB(A) is ok if all sbit values are <= 8*/ + if((info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA) && info.color.bitdepth == 16 && + auto_color.colortype == info.color.colortype && auto_color.bitdepth == 8 && + sbit_max <= 8) { + allow_convert = 1; + } + /*going to less channels is ok if all bit values are equal (all possible values in sbit, + as well as the chosen bitdepth of the result). Due to how auto_convert works, + we already know that auto_color.colortype has less than or equal amount of channels than + info.colortype. Palette is not used here. This conversion is not allowed if + info_png->sbit_r < auto_color.bitdepth, because specifically for alpha, non-presence of + an sbit value heavily implies that alpha's bit depth is equal to the PNG bit depth (rather + than the bit depths set in the r, g and b sbit values, by how the PNG specification describes + handling tRNS chunk case with sBIT), so be conservative here about ignoring user input.*/ + if(info.color.colortype != LCT_PALETTE && auto_color.colortype != LCT_PALETTE && + equal && info_png->sbit_r == auto_color.bitdepth) { + allow_convert = 1; + } + } +#endif + if(state->encoder.force_palette) { + if(info.color.colortype != LCT_GREY && info.color.colortype != LCT_GREY_ALPHA && + (auto_color.colortype == LCT_GREY || auto_color.colortype == LCT_GREY_ALPHA)) { + /*user speficially forced a PLTE palette, so cannot convert to grayscale types because + the PNG specification only allows writing a suggested palette in PLTE for truecolor types*/ + allow_convert = 0; + } + } + if(allow_convert) { + lodepng_color_mode_copy(&info.color, &auto_color); +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*also convert the background chunk*/ + if(info_png->background_defined) { + if(lodepng_convert_rgb(&info.background_r, &info.background_g, &info.background_b, + info_png->background_r, info_png->background_g, info_png->background_b, &info.color, &info_png->color)) { + state->error = 104; + goto cleanup; + } + } +#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ + } + } +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + if(info_png->iccp_defined) { + unsigned gray_icc = isGrayICCProfile(info_png->iccp_profile, info_png->iccp_profile_size); + unsigned rgb_icc = isRGBICCProfile(info_png->iccp_profile, info_png->iccp_profile_size); + unsigned gray_png = info.color.colortype == LCT_GREY || info.color.colortype == LCT_GREY_ALPHA; + if(!gray_icc && !rgb_icc) { + state->error = 100; /* Disallowed profile color type for PNG */ + goto cleanup; + } + if(gray_icc != gray_png) { + /*Not allowed to use RGB/RGBA/palette with GRAY ICC profile or vice versa, + or in case of auto_convert, it wasn't possible to find appropriate model*/ + state->error = state->encoder.auto_convert ? 102 : 101; + goto cleanup; + } + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + if(!lodepng_color_mode_equal(&state->info_raw, &info.color)) { + unsigned char* converted; + size_t size = ((size_t)w * (size_t)h * (size_t)lodepng_get_bpp(&info.color) + 7u) / 8u; + + converted = (unsigned char*)lodepng_malloc(size); + if(!converted && size) state->error = 83; /*alloc fail*/ + if(!state->error) { + state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h); + } + if(!state->error) { + state->error = preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder); + } + lodepng_free(converted); + if(state->error) goto cleanup; + } else { + state->error = preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder); + if(state->error) goto cleanup; + } + + /* output all PNG chunks */ { +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + size_t i; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + /*write signature and chunks*/ + state->error = writeSignature(&outv); + if(state->error) goto cleanup; + /*IHDR*/ + state->error = addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*unknown chunks between IHDR and PLTE*/ + if(info.unknown_chunks_data[0]) { + state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]); + if(state->error) goto cleanup; + } + /*color profile chunks must come before PLTE */ + if(info.iccp_defined) { + state->error = addChunk_iCCP(&outv, &info, &state->encoder.zlibsettings); + if(state->error) goto cleanup; + } + if(info.srgb_defined) { + state->error = addChunk_sRGB(&outv, &info); + if(state->error) goto cleanup; + } + if(info.gama_defined) { + state->error = addChunk_gAMA(&outv, &info); + if(state->error) goto cleanup; + } + if(info.chrm_defined) { + state->error = addChunk_cHRM(&outv, &info); + if(state->error) goto cleanup; + } + if(info_png->sbit_defined) { + state->error = addChunk_sBIT(&outv, &info); + if(state->error) goto cleanup; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + /*PLTE*/ + if(info.color.colortype == LCT_PALETTE) { + state->error = addChunk_PLTE(&outv, &info.color); + if(state->error) goto cleanup; + } + if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) { + /*force_palette means: write suggested palette for truecolor in PLTE chunk*/ + state->error = addChunk_PLTE(&outv, &info.color); + if(state->error) goto cleanup; + } + /*tRNS (this will only add if when necessary) */ + state->error = addChunk_tRNS(&outv, &info.color); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*bKGD (must come between PLTE and the IDAt chunks*/ + if(info.background_defined) { + state->error = addChunk_bKGD(&outv, &info); + if(state->error) goto cleanup; + } + /*pHYs (must come before the IDAT chunks)*/ + if(info.phys_defined) { + state->error = addChunk_pHYs(&outv, &info); + if(state->error) goto cleanup; + } + + /*unknown chunks between PLTE and IDAT*/ + if(info.unknown_chunks_data[1]) { + state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]); + if(state->error) goto cleanup; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + /*IDAT (multiple IDAT chunks must be consecutive)*/ + state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings); + if(state->error) goto cleanup; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*tIME*/ + if(info.time_defined) { + state->error = addChunk_tIME(&outv, &info.time); + if(state->error) goto cleanup; + } + /*tEXt and/or zTXt*/ + for(i = 0; i != info.text_num; ++i) { + if(lodepng_strlen(info.text_keys[i]) > 79) { + state->error = 66; /*text chunk too large*/ + goto cleanup; + } + if(lodepng_strlen(info.text_keys[i]) < 1) { + state->error = 67; /*text chunk too small*/ + goto cleanup; + } + if(state->encoder.text_compression) { + state->error = addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings); + if(state->error) goto cleanup; + } else { + state->error = addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]); + if(state->error) goto cleanup; + } + } + /*LodePNG version id in text chunk*/ + if(state->encoder.add_id) { + unsigned already_added_id_text = 0; + for(i = 0; i != info.text_num; ++i) { + const char* k = info.text_keys[i]; + /* Could use strcmp, but we're not calling or reimplementing this C library function for this use only */ + if(k[0] == 'L' && k[1] == 'o' && k[2] == 'd' && k[3] == 'e' && + k[4] == 'P' && k[5] == 'N' && k[6] == 'G' && k[7] == '\0') { + already_added_id_text = 1; + break; + } + } + if(already_added_id_text == 0) { + state->error = addChunk_tEXt(&outv, "LodePNG", LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/ + if(state->error) goto cleanup; + } + } + /*iTXt*/ + for(i = 0; i != info.itext_num; ++i) { + if(lodepng_strlen(info.itext_keys[i]) > 79) { + state->error = 66; /*text chunk too large*/ + goto cleanup; + } + if(lodepng_strlen(info.itext_keys[i]) < 1) { + state->error = 67; /*text chunk too small*/ + goto cleanup; + } + state->error = addChunk_iTXt( + &outv, state->encoder.text_compression, + info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i], + &state->encoder.zlibsettings); + if(state->error) goto cleanup; + } + + /*unknown chunks between IDAT and IEND*/ + if(info.unknown_chunks_data[2]) { + state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]); + if(state->error) goto cleanup; + } +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + state->error = addChunk_IEND(&outv); + if(state->error) goto cleanup; + } + +cleanup: + lodepng_info_cleanup(&info); + lodepng_free(data); + lodepng_color_mode_cleanup(&auto_color); + + /*instead of cleaning the vector up, give it to the output*/ + *out = outv.data; + *outsize = outv.size; + + return state->error; +} + +unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsigned char* image, + unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) { + unsigned error; + LodePNGState state; + lodepng_state_init(&state); + state.info_raw.colortype = colortype; + state.info_raw.bitdepth = bitdepth; + state.info_png.color.colortype = colortype; + state.info_png.color.bitdepth = bitdepth; + lodepng_encode(out, outsize, image, w, h, &state); + error = state.error; + lodepng_state_cleanup(&state); + return error; +} + +unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8); +} + +unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned lodepng_encode_file(const char* filename, const unsigned char* image, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer; + size_t buffersize; + unsigned error = lodepng_encode_memory(&buffer, &buffersize, image, w, h, colortype, bitdepth); + if(!error) error = lodepng_save_file(buffer, buffersize, filename); + lodepng_free(buffer); + return error; +} + +unsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8); +} + +unsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) { + return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8); +} +#endif /*LODEPNG_COMPILE_DISK*/ + +void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) { + lodepng_compress_settings_init(&settings->zlibsettings); + settings->filter_palette_zero = 1; + settings->filter_strategy = LFS_MINSUM; + settings->auto_convert = 1; + settings->force_palette = 0; + settings->predefined_filters = NULL; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + settings->add_id = 0; + settings->text_compression = 1; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} + +#endif /*LODEPNG_COMPILE_ENCODER*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +#ifdef LODEPNG_COMPILE_ERROR_TEXT +/* +This returns the description of a numerical error code in English. This is also +the documentation of all the error codes. +*/ +const char* lodepng_error_text(unsigned code) { + switch(code) { + case 0: return "no error, everything went ok"; + case 1: return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/ + case 10: return "end of input memory reached without huffman end code"; /*while huffman decoding*/ + case 11: return "error in code tree made it jump outside of huffman tree"; /*while huffman decoding*/ + case 13: return "problem while processing dynamic deflate block"; + case 14: return "problem while processing dynamic deflate block"; + case 15: return "problem while processing dynamic deflate block"; + /*this error could happen if there are only 0 or 1 symbols present in the huffman code:*/ + case 16: return "invalid code while processing dynamic deflate block"; + case 17: return "end of out buffer memory reached while inflating"; + case 18: return "invalid distance code while inflating"; + case 19: return "end of out buffer memory reached while inflating"; + case 20: return "invalid deflate block BTYPE encountered while decoding"; + case 21: return "NLEN is not ones complement of LEN in a deflate block"; + + /*end of out buffer memory reached while inflating: + This can happen if the inflated deflate data is longer than the amount of bytes required to fill up + all the pixels of the image, given the color depth and image dimensions. Something that doesn't + happen in a normal, well encoded, PNG image.*/ + case 22: return "end of out buffer memory reached while inflating"; + case 23: return "end of in buffer memory reached while inflating"; + case 24: return "invalid FCHECK in zlib header"; + case 25: return "invalid compression method in zlib header"; + case 26: return "FDICT encountered in zlib header while it's not used for PNG"; + case 27: return "PNG file is smaller than a PNG header"; + /*Checks the magic file header, the first 8 bytes of the PNG file*/ + case 28: return "incorrect PNG signature, it's no PNG or corrupted"; + case 29: return "first chunk is not the header chunk"; + case 30: return "chunk length too large, chunk broken off at end of file"; + case 31: return "illegal PNG color type or bpp"; + case 32: return "illegal PNG compression method"; + case 33: return "illegal PNG filter method"; + case 34: return "illegal PNG interlace method"; + case 35: return "chunk length of a chunk is too large or the chunk too small"; + case 36: return "illegal PNG filter type encountered"; + case 37: return "illegal bit depth for this color type given"; + case 38: return "the palette is too small or too big"; /*0, or more than 256 colors*/ + case 39: return "tRNS chunk before PLTE or has more entries than palette size"; + case 40: return "tRNS chunk has wrong size for grayscale image"; + case 41: return "tRNS chunk has wrong size for RGB image"; + case 42: return "tRNS chunk appeared while it was not allowed for this color type"; + case 43: return "bKGD chunk has wrong size for palette image"; + case 44: return "bKGD chunk has wrong size for grayscale image"; + case 45: return "bKGD chunk has wrong size for RGB image"; + case 48: return "empty input buffer given to decoder. Maybe caused by non-existing file?"; + case 49: return "jumped past memory while generating dynamic huffman tree"; + case 50: return "jumped past memory while generating dynamic huffman tree"; + case 51: return "jumped past memory while inflating huffman block"; + case 52: return "jumped past memory while inflating"; + case 53: return "size of zlib data too small"; + case 54: return "repeat symbol in tree while there was no value symbol yet"; + /*jumped past tree while generating huffman tree, this could be when the + tree will have more leaves than symbols after generating it out of the + given lengths. They call this an oversubscribed dynamic bit lengths tree in zlib.*/ + case 55: return "jumped past tree while generating huffman tree"; + case 56: return "given output image colortype or bitdepth not supported for color conversion"; + case 57: return "invalid CRC encountered (checking CRC can be disabled)"; + case 58: return "invalid ADLER32 encountered (checking ADLER32 can be disabled)"; + case 59: return "requested color conversion not supported"; + case 60: return "invalid window size given in the settings of the encoder (must be 0-32768)"; + case 61: return "invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)"; + /*LodePNG leaves the choice of RGB to grayscale conversion formula to the user.*/ + case 62: return "conversion from color to grayscale not supported"; + /*(2^31-1)*/ + case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk"; + /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/ + case 64: return "the length of the END symbol 256 in the Huffman tree is 0"; + case 66: return "the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes"; + case 67: return "the length of a text chunk keyword given to the encoder is smaller than the minimum of 1 byte"; + case 68: return "tried to encode a PLTE chunk with a palette that has less than 1 or more than 256 colors"; + case 69: return "unknown chunk type with 'critical' flag encountered by the decoder"; + case 71: return "invalid interlace mode given to encoder (must be 0 or 1)"; + case 72: return "while decoding, invalid compression method encountering in zTXt or iTXt chunk (it must be 0)"; + case 73: return "invalid tIME chunk size"; + case 74: return "invalid pHYs chunk size"; + /*length could be wrong, or data chopped off*/ + case 75: return "no null termination char found while decoding text chunk"; + case 76: return "iTXt chunk too short to contain required bytes"; + case 77: return "integer overflow in buffer size"; + case 78: return "failed to open file for reading"; /*file doesn't exist or couldn't be opened for reading*/ + case 79: return "failed to open file for writing"; + case 80: return "tried creating a tree of 0 symbols"; + case 81: return "lazy matching at pos 0 is impossible"; + case 82: return "color conversion to palette requested while a color isn't in palette, or index out of bounds"; + case 83: return "memory allocation failed"; + case 84: return "given image too small to contain all pixels to be encoded"; + case 86: return "impossible offset in lz77 encoding (internal bug)"; + case 87: return "must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB is not defined"; + case 88: return "invalid filter strategy given for LodePNGEncoderSettings.filter_strategy"; + case 89: return "text chunk keyword too short or long: must have size 1-79"; + /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/ + case 90: return "windowsize must be a power of two"; + case 91: return "invalid decompressed idat size"; + case 92: return "integer overflow due to too many pixels"; + case 93: return "zero width or height is invalid"; + case 94: return "header chunk must have a size of 13 bytes"; + case 95: return "integer overflow with combined idat chunk size"; + case 96: return "invalid gAMA chunk size"; + case 97: return "invalid cHRM chunk size"; + case 98: return "invalid sRGB chunk size"; + case 99: return "invalid sRGB rendering intent"; + case 100: return "invalid ICC profile color type, the PNG specification only allows RGB or GRAY"; + case 101: return "PNG specification does not allow RGB ICC profile on gray color types and vice versa"; + case 102: return "not allowed to set grayscale ICC profile with colored pixels by PNG specification"; + case 103: return "invalid palette index in bKGD chunk. Maybe it came before PLTE chunk?"; + case 104: return "invalid bKGD color while encoding (e.g. palette index out of range)"; + case 105: return "integer overflow of bitsize"; + case 106: return "PNG file must have PLTE chunk if color type is palette"; + case 107: return "color convert from palette mode requested without setting the palette data in it"; + case 108: return "tried to add more than 256 values to a palette"; + /*this limit can be configured in LodePNGDecompressSettings*/ + case 109: return "tried to decompress zlib or deflate data larger than desired max_output_size"; + case 110: return "custom zlib or inflate decompression failed"; + case 111: return "custom zlib or deflate compression failed"; + /*max text size limit can be configured in LodePNGDecoderSettings. This error prevents + unreasonable memory consumption when decoding due to impossibly large text sizes.*/ + case 112: return "compressed text unreasonably large"; + /*max ICC size limit can be configured in LodePNGDecoderSettings. This error prevents + unreasonable memory consumption when decoding due to impossibly large ICC profile*/ + case 113: return "ICC profile unreasonably large"; + case 114: return "sBIT chunk has wrong size for the color type of the image"; + case 115: return "sBIT value out of range"; + } + return "unknown error code"; +} +#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ + +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* // C++ Wrapper // */ +/* ////////////////////////////////////////////////////////////////////////// */ +/* ////////////////////////////////////////////////////////////////////////// */ + +#ifdef LODEPNG_COMPILE_CPP +namespace lodepng { + +#ifdef LODEPNG_COMPILE_DISK +#ifdef LODEPNG_COMPILE_DECODER /**/ +unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename) { + long size = lodepng_filesize(filename.c_str()); + if(size < 0) return 78; + buffer.resize((size_t)size); + return size == 0 ? 0 : lodepng_buffer_file(&buffer[0], (size_t)size, filename.c_str()); +} +#endif /**/ + +/*write given buffer to the file, overwriting the file, it doesn't append to it.*/ +unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename) { + return lodepng_save_file(buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str()); +} +#endif /* LODEPNG_COMPILE_DISK */ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_DECODER +unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize, + const LodePNGDecompressSettings& settings) { + unsigned char* buffer = 0; + size_t buffersize = 0; + unsigned error = zlib_decompress(&buffer, &buffersize, 0, in, insize, &settings); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, + const LodePNGDecompressSettings& settings) { + return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings); +} +#endif /* LODEPNG_COMPILE_DECODER */ + +#ifdef LODEPNG_COMPILE_ENCODER +unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize, + const LodePNGCompressSettings& settings) { + unsigned char* buffer = 0; + size_t buffersize = 0; + unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, + const LodePNGCompressSettings& settings) { + return compress(out, in.empty() ? 0 : &in[0], in.size(), settings); +} +#endif /* LODEPNG_COMPILE_ENCODER */ +#endif /* LODEPNG_COMPILE_ZLIB */ + + +#ifdef LODEPNG_COMPILE_PNG + +State::State() { + lodepng_state_init(this); +} + +State::State(const State& other) { + lodepng_state_init(this); + lodepng_state_copy(this, &other); +} + +State::~State() { + lodepng_state_cleanup(this); +} + +State& State::operator=(const State& other) { + lodepng_state_copy(this, &other); + return *this; +} + +#ifdef LODEPNG_COMPILE_DECODER + +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const unsigned char* in, + size_t insize, LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer = 0; + unsigned error = lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth); + if(buffer && !error) { + State state; + state.info_raw.colortype = colortype; + state.info_raw.bitdepth = bitdepth; + size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); + out.insert(out.end(), buffer, &buffer[buffersize]); + } + lodepng_free(buffer); + return error; +} + +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + const std::vector<unsigned char>& in, LodePNGColorType colortype, unsigned bitdepth) { + return decode(out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, bitdepth); +} + +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + State& state, + const unsigned char* in, size_t insize) { + unsigned char* buffer = NULL; + unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize); + if(buffer && !error) { + size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); + out.insert(out.end(), buffer, &buffer[buffersize]); + } + lodepng_free(buffer); + return error; +} + +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + State& state, + const std::vector<unsigned char>& in) { + return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size()); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const std::string& filename, + LodePNGColorType colortype, unsigned bitdepth) { + std::vector<unsigned char> buffer; + /* safe output values in case error happens */ + w = h = 0; + unsigned error = load_file(buffer, filename); + if(error) return error; + return decode(out, w, h, buffer, colortype, bitdepth); +} +#endif /* LODEPNG_COMPILE_DECODER */ +#endif /* LODEPNG_COMPILE_DISK */ + +#ifdef LODEPNG_COMPILE_ENCODER +unsigned encode(std::vector<unsigned char>& out, const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + unsigned char* buffer; + size_t buffersize; + unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned encode(std::vector<unsigned char>& out, + const std::vector<unsigned char>& in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; + return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); +} + +unsigned encode(std::vector<unsigned char>& out, + const unsigned char* in, unsigned w, unsigned h, + State& state) { + unsigned char* buffer; + size_t buffersize; + unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state); + if(buffer) { + out.insert(out.end(), buffer, &buffer[buffersize]); + lodepng_free(buffer); + } + return error; +} + +unsigned encode(std::vector<unsigned char>& out, + const std::vector<unsigned char>& in, unsigned w, unsigned h, + State& state) { + if(lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) return 84; + return encode(out, in.empty() ? 0 : &in[0], w, h, state); +} + +#ifdef LODEPNG_COMPILE_DISK +unsigned encode(const std::string& filename, + const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + std::vector<unsigned char> buffer; + unsigned error = encode(buffer, in, w, h, colortype, bitdepth); + if(!error) error = save_file(buffer, filename); + return error; +} + +unsigned encode(const std::string& filename, + const std::vector<unsigned char>& in, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth) { + if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84; + return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); +} +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_ENCODER */ +#endif /* LODEPNG_COMPILE_PNG */ +} /* namespace lodepng */ +#endif /*LODEPNG_COMPILE_CPP*/ diff --git a/Quake/lodepng.h b/Quake/lodepng.h new file mode 100644 index 0000000..fdafc77 --- /dev/null +++ b/Quake/lodepng.h @@ -0,0 +1,2085 @@ +/* +LodePNG version 20220717 + +Copyright (c) 2005-2022 Lode Vandevenne + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +*/ + +#ifndef LODEPNG_H +#define LODEPNG_H + +#include <string.h> /*for size_t*/ + +extern const char* LODEPNG_VERSION_STRING; + +/* +The following #defines are used to create code sections. They can be disabled +to disable code sections, which can give faster compile time and smaller binary. +The "NO_COMPILE" defines are designed to be used to pass as defines to the +compiler command to disable them without modifying this header, e.g. +-DLODEPNG_NO_COMPILE_ZLIB for gcc or clang. +*/ +/*deflate & zlib. If disabled, you must specify alternative zlib functions in +the custom_zlib field of the compress and decompress settings*/ +#ifndef LODEPNG_NO_COMPILE_ZLIB +/*pass -DLODEPNG_NO_COMPILE_ZLIB to the compiler to disable this, or comment out LODEPNG_COMPILE_ZLIB below*/ +#define LODEPNG_COMPILE_ZLIB +#endif + +/*png encoder and png decoder*/ +#ifndef LODEPNG_NO_COMPILE_PNG +/*pass -DLODEPNG_NO_COMPILE_PNG to the compiler to disable this, or comment out LODEPNG_COMPILE_PNG below*/ +#define LODEPNG_COMPILE_PNG +#endif + +/*deflate&zlib decoder and png decoder*/ +#ifndef LODEPNG_NO_COMPILE_DECODER +/*pass -DLODEPNG_NO_COMPILE_DECODER to the compiler to disable this, or comment out LODEPNG_COMPILE_DECODER below*/ +#define LODEPNG_COMPILE_DECODER +#endif + +/*deflate&zlib encoder and png encoder*/ +#ifndef LODEPNG_NO_COMPILE_ENCODER +/*pass -DLODEPNG_NO_COMPILE_ENCODER to the compiler to disable this, or comment out LODEPNG_COMPILE_ENCODER below*/ +#define LODEPNG_COMPILE_ENCODER +#endif + +/*the optional built in harddisk file loading and saving functions*/ +#ifndef LODEPNG_NO_COMPILE_DISK +/*pass -DLODEPNG_NO_COMPILE_DISK to the compiler to disable this, or comment out LODEPNG_COMPILE_DISK below*/ +#define LODEPNG_COMPILE_DISK +#endif + +/*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and unknown chunks*/ +#ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS +/*pass -DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS to the compiler to disable this, +or comment out LODEPNG_COMPILE_ANCILLARY_CHUNKS below*/ +#define LODEPNG_COMPILE_ANCILLARY_CHUNKS +#endif + +/*ability to convert error numerical codes to English text string*/ +#ifndef LODEPNG_NO_COMPILE_ERROR_TEXT +/*pass -DLODEPNG_NO_COMPILE_ERROR_TEXT to the compiler to disable this, +or comment out LODEPNG_COMPILE_ERROR_TEXT below*/ +#define LODEPNG_COMPILE_ERROR_TEXT +#endif + +/*Compile the default allocators (C's free, malloc and realloc). If you disable this, +you can define the functions lodepng_free, lodepng_malloc and lodepng_realloc in your +source files with custom allocators.*/ +#ifndef LODEPNG_NO_COMPILE_ALLOCATORS +/*pass -DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler to disable the built-in ones, +or comment out LODEPNG_COMPILE_ALLOCATORS below*/ +#define LODEPNG_COMPILE_ALLOCATORS +#endif + +/*Disable built-in CRC function, in that case a custom implementation of +lodepng_crc32 must be defined externally so that it can be linked in.*/ +#ifndef LODEPNG_NO_COMPILE_CRC +/*pass -DLODEPNG_NO_COMPILE_CRC to the compiler to disable the built-in one, +or comment out LODEPNG_COMPILE_CRC below*/ +#define LODEPNG_COMPILE_CRC +#endif + +/*compile the C++ version (you can disable the C++ wrapper here even when compiling for C++)*/ +#ifdef __cplusplus +#ifndef LODEPNG_NO_COMPILE_CPP +/*pass -DLODEPNG_NO_COMPILE_CPP to the compiler to disable C++ (not needed if a C-only compiler), +or comment out LODEPNG_COMPILE_CPP below*/ +#define LODEPNG_COMPILE_CPP +#endif +#endif + +#ifdef LODEPNG_COMPILE_CPP +#include <vector> +#include <string> +#endif /*LODEPNG_COMPILE_CPP*/ + +#ifdef LODEPNG_COMPILE_PNG +/*The PNG color types (also used for raw image).*/ +typedef enum LodePNGColorType { + LCT_GREY = 0, /*grayscale: 1,2,4,8,16 bit*/ + LCT_RGB = 2, /*RGB: 8,16 bit*/ + LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/ + LCT_GREY_ALPHA = 4, /*grayscale with alpha: 8,16 bit*/ + LCT_RGBA = 6, /*RGB with alpha: 8,16 bit*/ + /*LCT_MAX_OCTET_VALUE lets the compiler allow this enum to represent any invalid + byte value from 0 to 255 that could be present in an invalid PNG file header. Do + not use, compare with or set the name LCT_MAX_OCTET_VALUE, instead either use + the valid color type names above, or numeric values like 1 or 7 when checking for + particular disallowed color type byte values, or cast to integer to print it.*/ + LCT_MAX_OCTET_VALUE = 255 +} LodePNGColorType; + +#ifdef LODEPNG_COMPILE_DECODER +/* +Converts PNG data in memory to raw pixel data. +out: Output parameter. Pointer to buffer that will contain the raw pixel data. + After decoding, its size is w * h * (bytes per pixel) bytes larger than + initially. Bytes per pixel depends on colortype and bitdepth. + Must be freed after usage with free(*out). + Note: for 16-bit per channel colors, uses big endian format like PNG does. +w: Output parameter. Pointer to width of pixel data. +h: Output parameter. Pointer to height of pixel data. +in: Memory buffer with the PNG file. +insize: size of the in buffer. +colortype: the desired color type for the raw output image. See explanation on PNG color types. +bitdepth: the desired bit depth for the raw output image. See explanation on PNG color types. +Return value: LodePNG error code (0 means no error). +*/ +unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, + const unsigned char* in, size_t insize, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_decode_memory, but always decodes to 32-bit RGBA raw image*/ +unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, + const unsigned char* in, size_t insize); + +/*Same as lodepng_decode_memory, but always decodes to 24-bit RGB raw image*/ +unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, + const unsigned char* in, size_t insize); + +#ifdef LODEPNG_COMPILE_DISK +/* +Load PNG from disk, from file with given name. +Same as the other decode functions, but instead takes a filename as input. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory.*/ +unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, + const char* filename, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_decode_file, but always decodes to 32-bit RGBA raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory.*/ +unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, + const char* filename); + +/*Same as lodepng_decode_file, but always decodes to 24-bit RGB raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory.*/ +unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, + const char* filename); +#endif /*LODEPNG_COMPILE_DISK*/ +#endif /*LODEPNG_COMPILE_DECODER*/ + + +#ifdef LODEPNG_COMPILE_ENCODER +/* +Converts raw pixel data into a PNG image in memory. The colortype and bitdepth + of the output PNG image cannot be chosen, they are automatically determined + by the colortype, bitdepth and content of the input pixel data. + Note: for 16-bit per channel colors, needs big endian format like PNG does. +out: Output parameter. Pointer to buffer that will contain the PNG image data. + Must be freed after usage with free(*out). +outsize: Output parameter. Pointer to the size in bytes of the out buffer. +image: The raw pixel data to encode. The size of this buffer should be + w * h * (bytes per pixel), bytes per pixel depends on colortype and bitdepth. +w: width of the raw pixel data in pixels. +h: height of the raw pixel data in pixels. +colortype: the color type of the raw input image. See explanation on PNG color types. +bitdepth: the bit depth of the raw input image. See explanation on PNG color types. +Return value: LodePNG error code (0 means no error). +*/ +unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_encode_memory, but always encodes from 32-bit RGBA raw image.*/ +unsigned lodepng_encode32(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h); + +/*Same as lodepng_encode_memory, but always encodes from 24-bit RGB raw image.*/ +unsigned lodepng_encode24(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h); + +#ifdef LODEPNG_COMPILE_DISK +/* +Converts raw pixel data into a PNG file on disk. +Same as the other encode functions, but instead takes a filename as output. + +NOTE: This overwrites existing files without warning! + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory.*/ +unsigned lodepng_encode_file(const char* filename, + const unsigned char* image, unsigned w, unsigned h, + LodePNGColorType colortype, unsigned bitdepth); + +/*Same as lodepng_encode_file, but always encodes from 32-bit RGBA raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory.*/ +unsigned lodepng_encode32_file(const char* filename, + const unsigned char* image, unsigned w, unsigned h); + +/*Same as lodepng_encode_file, but always encodes from 24-bit RGB raw image. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory.*/ +unsigned lodepng_encode24_file(const char* filename, + const unsigned char* image, unsigned w, unsigned h); +#endif /*LODEPNG_COMPILE_DISK*/ +#endif /*LODEPNG_COMPILE_ENCODER*/ + + +#ifdef LODEPNG_COMPILE_CPP +namespace lodepng { +#ifdef LODEPNG_COMPILE_DECODER +/*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype +is the format to output the pixels to. Default is RGBA 8-bit per channel.*/ +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + const unsigned char* in, size_t insize, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + const std::vector<unsigned char>& in, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#ifdef LODEPNG_COMPILE_DISK +/* +Converts PNG file from disk to raw pixel data in memory. +Same as the other decode functions, but instead takes a filename as input. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory. +*/ +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + const std::string& filename, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_DECODER */ + +#ifdef LODEPNG_COMPILE_ENCODER +/*Same as lodepng_encode_memory, but encodes to an std::vector. colortype +is that of the raw input data. The output PNG color type will be auto chosen.*/ +unsigned encode(std::vector<unsigned char>& out, + const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +unsigned encode(std::vector<unsigned char>& out, + const std::vector<unsigned char>& in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#ifdef LODEPNG_COMPILE_DISK +/* +Converts 32-bit RGBA raw pixel data into a PNG file on disk. +Same as the other encode functions, but instead takes a filename as output. + +NOTE: This overwrites existing files without warning! + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory. +*/ +unsigned encode(const std::string& filename, + const unsigned char* in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +unsigned encode(const std::string& filename, + const std::vector<unsigned char>& in, unsigned w, unsigned h, + LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_ENCODER */ +} /* namespace lodepng */ +#endif /*LODEPNG_COMPILE_CPP*/ +#endif /*LODEPNG_COMPILE_PNG*/ + +#ifdef LODEPNG_COMPILE_ERROR_TEXT +/*Returns an English description of the numerical error code.*/ +const char* lodepng_error_text(unsigned code); +#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ + +#ifdef LODEPNG_COMPILE_DECODER +/*Settings for zlib decompression*/ +typedef struct LodePNGDecompressSettings LodePNGDecompressSettings; +struct LodePNGDecompressSettings { + /* Check LodePNGDecoderSettings for more ignorable errors such as ignore_crc */ + unsigned ignore_adler32; /*if 1, continue and don't give an error message if the Adler32 checksum is corrupted*/ + unsigned ignore_nlen; /*ignore complement of len checksum in uncompressed blocks*/ + + /*Maximum decompressed size, beyond this the decoder may (and is encouraged to) stop decoding, + return an error, output a data size > max_output_size and all the data up to that point. This is + not hard limit nor a guarantee, but can prevent excessive memory usage. This setting is + ignored by the PNG decoder, but is used by the deflate/zlib decoder and can be used by custom ones. + Set to 0 to impose no limit (the default).*/ + size_t max_output_size; + + /*use custom zlib decoder instead of built in one (default: null). + Should return 0 if success, any non-0 if error (numeric value not exposed).*/ + unsigned (*custom_zlib)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGDecompressSettings*); + /*use custom deflate decoder instead of built in one (default: null) + if custom_zlib is not null, custom_inflate is ignored (the zlib format uses deflate). + Should return 0 if success, any non-0 if error (numeric value not exposed).*/ + unsigned (*custom_inflate)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGDecompressSettings*); + + const void* custom_context; /*optional custom settings for custom functions*/ +}; + +extern const LodePNGDecompressSettings lodepng_default_decompress_settings; +void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/* +Settings for zlib compression. Tweaking these settings tweaks the balance +between speed and compression ratio. +*/ +typedef struct LodePNGCompressSettings LodePNGCompressSettings; +struct LodePNGCompressSettings /*deflate = compress*/ { + /*LZ77 related settings*/ + unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). Should be 2 for proper compression.*/ + unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper compression.*/ + unsigned windowsize; /*must be a power of two <= 32768. higher compresses more but is slower. Default value: 2048.*/ + unsigned minmatch; /*minimum lz77 length. 3 is normally best, 6 can be better for some PNGs. Default: 0*/ + unsigned nicematch; /*stop searching if >= this length found. Set to 258 for best compression. Default: 128*/ + unsigned lazymatching; /*use lazy matching: better compression but a bit slower. Default: true*/ + + /*use custom zlib encoder instead of built in one (default: null)*/ + unsigned (*custom_zlib)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGCompressSettings*); + /*use custom deflate encoder instead of built in one (default: null) + if custom_zlib is used, custom_deflate is ignored since only the built in + zlib function will call custom_deflate*/ + unsigned (*custom_deflate)(unsigned char**, size_t*, + const unsigned char*, size_t, + const LodePNGCompressSettings*); + + const void* custom_context; /*optional custom settings for custom functions*/ +}; + +extern const LodePNGCompressSettings lodepng_default_compress_settings; +void lodepng_compress_settings_init(LodePNGCompressSettings* settings); +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_PNG +/* +Color mode of an image. Contains all information required to decode the pixel +bits to RGBA colors. This information is the same as used in the PNG file +format, and is used both for PNG and raw image data in LodePNG. +*/ +typedef struct LodePNGColorMode { + /*header (IHDR)*/ + LodePNGColorType colortype; /*color type, see PNG standard or documentation further in this header file*/ + unsigned bitdepth; /*bits per sample, see PNG standard or documentation further in this header file*/ + + /* + palette (PLTE and tRNS) + + Dynamically allocated with the colors of the palette, including alpha. + This field may not be allocated directly, use lodepng_color_mode_init first, + then lodepng_palette_add per color to correctly initialize it (to ensure size + of exactly 1024 bytes). + + The alpha channels must be set as well, set them to 255 for opaque images. + + When decoding, with the default settings you can ignore this palette, since + LodePNG already fills the palette colors in the pixels of the raw RGBA output, + but when decoding to the original PNG color mode it is needed to reconstruct + the colors. + + The palette is only supported for color type 3. + */ + unsigned char* palette; /*palette in RGBARGBA... order. Must be either 0, or when allocated must have 1024 bytes*/ + size_t palettesize; /*palette size in number of colors (amount of used bytes is 4 * palettesize)*/ + + /* + transparent color key (tRNS) + + This color uses the same bit depth as the bitdepth value in this struct, which can be 1-bit to 16-bit. + For grayscale PNGs, r, g and b will all 3 be set to the same. + + When decoding, by default you can ignore this information, since LodePNG sets + pixels with this key to transparent already in the raw RGBA output. + + The color key is only supported for color types 0 and 2. + */ + unsigned key_defined; /*is a transparent color key given? 0 = false, 1 = true*/ + unsigned key_r; /*red/grayscale component of color key*/ + unsigned key_g; /*green component of color key*/ + unsigned key_b; /*blue component of color key*/ +} LodePNGColorMode; + +/*init, cleanup and copy functions to use with this struct*/ +void lodepng_color_mode_init(LodePNGColorMode* info); +void lodepng_color_mode_cleanup(LodePNGColorMode* info); +/*return value is error code (0 means no error)*/ +unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source); +/* Makes a temporary LodePNGColorMode that does not need cleanup (no palette) */ +LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth); + +void lodepng_palette_clear(LodePNGColorMode* info); +/*add 1 color to the palette*/ +unsigned lodepng_palette_add(LodePNGColorMode* info, + unsigned char r, unsigned char g, unsigned char b, unsigned char a); + +/*get the total amount of bits per pixel, based on colortype and bitdepth in the struct*/ +unsigned lodepng_get_bpp(const LodePNGColorMode* info); +/*get the amount of color channels used, based on colortype in the struct. +If a palette is used, it counts as 1 channel.*/ +unsigned lodepng_get_channels(const LodePNGColorMode* info); +/*is it a grayscale type? (only colortype 0 or 4)*/ +unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info); +/*has it got an alpha channel? (only colortype 2 or 6)*/ +unsigned lodepng_is_alpha_type(const LodePNGColorMode* info); +/*has it got a palette? (only colortype 3)*/ +unsigned lodepng_is_palette_type(const LodePNGColorMode* info); +/*only returns true if there is a palette and there is a value in the palette with alpha < 255. +Loops through the palette to check this.*/ +unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info); +/* +Check if the given color info indicates the possibility of having non-opaque pixels in the PNG image. +Returns true if the image can have translucent or invisible pixels (it still be opaque if it doesn't use such pixels). +Returns false if the image can only have opaque pixels. +In detail, it returns true only if it's a color type with alpha, or has a palette with non-opaque values, +or if "key_defined" is true. +*/ +unsigned lodepng_can_have_alpha(const LodePNGColorMode* info); +/*Returns the byte size of a raw image buffer with given width, height and color mode*/ +size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color); + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +/*The information of a Time chunk in PNG.*/ +typedef struct LodePNGTime { + unsigned year; /*2 bytes used (0-65535)*/ + unsigned month; /*1-12*/ + unsigned day; /*1-31*/ + unsigned hour; /*0-23*/ + unsigned minute; /*0-59*/ + unsigned second; /*0-60 (to allow for leap seconds)*/ +} LodePNGTime; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/*Information about the PNG image, except pixels, width and height.*/ +typedef struct LodePNGInfo { + /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/ + unsigned compression_method;/*compression method of the original file. Always 0.*/ + unsigned filter_method; /*filter method of the original file*/ + unsigned interlace_method; /*interlace method of the original file: 0=none, 1=Adam7*/ + LodePNGColorMode color; /*color type and bits, palette and transparency of the PNG file*/ + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /* + Suggested background color chunk (bKGD) + + This uses the same color mode and bit depth as the PNG (except no alpha channel), + with values truncated to the bit depth in the unsigned integer. + + For grayscale and palette PNGs, the value is stored in background_r. The values + in background_g and background_b are then unused. The decoder will set them + equal to background_r, the encoder ignores them in this case. + + When decoding, you may get these in a different color mode than the one you requested + for the raw pixels: the colortype and bitdepth defined by info_png.color, that is the + ones defined in the header of the PNG image, are used. + + When encoding with auto_convert, you must use the color model defined in info_png.color for + these values. The encoder normally ignores info_png.color when auto_convert is on, but will + use it to interpret these values (and convert copies of them to its chosen color model). + + When encoding, avoid setting this to an expensive color, such as a non-gray value + when the image is gray, or the compression will be worse since it will be forced to + write the PNG with a more expensive color mode (when auto_convert is on). + + The decoder does not use this background color to edit the color of pixels. This is a + completely optional metadata feature. + */ + unsigned background_defined; /*is a suggested background color given?*/ + unsigned background_r; /*red/gray/palette component of suggested background color*/ + unsigned background_g; /*green component of suggested background color*/ + unsigned background_b; /*blue component of suggested background color*/ + + /* + Non-international text chunks (tEXt and zTXt) + + The char** arrays each contain num strings. The actual messages are in + text_strings, while text_keys are keywords that give a short description what + the actual text represents, e.g. Title, Author, Description, or anything else. + + All the string fields below including strings, keys, names and language tags are null terminated. + The PNG specification uses null characters for the keys, names and tags, and forbids null + characters to appear in the main text which is why we can use null termination everywhere here. + + A keyword is minimum 1 character and maximum 79 characters long (plus the + additional null terminator). It's discouraged to use a single line length + longer than 79 characters for texts. + + Don't allocate these text buffers yourself. Use the init/cleanup functions + correctly and use lodepng_add_text and lodepng_clear_text. + + Standard text chunk keywords and strings are encoded using Latin-1. + */ + size_t text_num; /*the amount of texts in these char** buffers (there may be more texts in itext)*/ + char** text_keys; /*the keyword of a text chunk (e.g. "Comment")*/ + char** text_strings; /*the actual text*/ + + /* + International text chunks (iTXt) + Similar to the non-international text chunks, but with additional strings + "langtags" and "transkeys", and the following text encodings are used: + keys: Latin-1, langtags: ASCII, transkeys and strings: UTF-8. + keys must be 1-79 characters (plus the additional null terminator), the other + strings are any length. + */ + size_t itext_num; /*the amount of international texts in this PNG*/ + char** itext_keys; /*the English keyword of the text chunk (e.g. "Comment")*/ + char** itext_langtags; /*language tag for this text's language, ISO/IEC 646 string, e.g. ISO 639 language tag*/ + char** itext_transkeys; /*keyword translated to the international language - UTF-8 string*/ + char** itext_strings; /*the actual international text - UTF-8 string*/ + + /*time chunk (tIME)*/ + unsigned time_defined; /*set to 1 to make the encoder generate a tIME chunk*/ + LodePNGTime time; + + /*phys chunk (pHYs)*/ + unsigned phys_defined; /*if 0, there is no pHYs chunk and the values below are undefined, if 1 else there is one*/ + unsigned phys_x; /*pixels per unit in x direction*/ + unsigned phys_y; /*pixels per unit in y direction*/ + unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/ + + /* + Color profile related chunks: gAMA, cHRM, sRGB, iCPP, sBIT + + LodePNG does not apply any color conversions on pixels in the encoder or decoder and does not interpret these color + profile values. It merely passes on the information. If you wish to use color profiles and convert colors, please + use these values with a color management library. + + See the PNG, ICC and sRGB specifications for more information about the meaning of these values. + */ + + /* gAMA chunk: optional, overridden by sRGB or iCCP if those are present. */ + unsigned gama_defined; /* Whether a gAMA chunk is present (0 = not present, 1 = present). */ + unsigned gama_gamma; /* Gamma exponent times 100000 */ + + /* cHRM chunk: optional, overridden by sRGB or iCCP if those are present. */ + unsigned chrm_defined; /* Whether a cHRM chunk is present (0 = not present, 1 = present). */ + unsigned chrm_white_x; /* White Point x times 100000 */ + unsigned chrm_white_y; /* White Point y times 100000 */ + unsigned chrm_red_x; /* Red x times 100000 */ + unsigned chrm_red_y; /* Red y times 100000 */ + unsigned chrm_green_x; /* Green x times 100000 */ + unsigned chrm_green_y; /* Green y times 100000 */ + unsigned chrm_blue_x; /* Blue x times 100000 */ + unsigned chrm_blue_y; /* Blue y times 100000 */ + + /* + sRGB chunk: optional. May not appear at the same time as iCCP. + If gAMA is also present gAMA must contain value 45455. + If cHRM is also present cHRM must contain respectively 31270,32900,64000,33000,30000,60000,15000,6000. + */ + unsigned srgb_defined; /* Whether an sRGB chunk is present (0 = not present, 1 = present). */ + unsigned srgb_intent; /* Rendering intent: 0=perceptual, 1=rel. colorimetric, 2=saturation, 3=abs. colorimetric */ + + /* + iCCP chunk: optional. May not appear at the same time as sRGB. + + LodePNG does not parse or use the ICC profile (except its color space header field for an edge case), a + separate library to handle the ICC data (not included in LodePNG) format is needed to use it for color + management and conversions. + + For encoding, if iCCP is present, gAMA and cHRM are recommended to be added as well with values that match the ICC + profile as closely as possible, if you wish to do this you should provide the correct values for gAMA and cHRM and + enable their '_defined' flags since LodePNG will not automatically compute them from the ICC profile. + + For encoding, the ICC profile is required by the PNG specification to be an "RGB" profile for non-gray + PNG color types and a "GRAY" profile for gray PNG color types. If you disable auto_convert, you must ensure + the ICC profile type matches your requested color type, else the encoder gives an error. If auto_convert is + enabled (the default), and the ICC profile is not a good match for the pixel data, this will result in an encoder + error if the pixel data has non-gray pixels for a GRAY profile, or a silent less-optimal compression of the pixel + data if the pixels could be encoded as grayscale but the ICC profile is RGB. + + To avoid this do not set an ICC profile in the image unless there is a good reason for it, and when doing so + make sure you compute it carefully to avoid the above problems. + */ + unsigned iccp_defined; /* Whether an iCCP chunk is present (0 = not present, 1 = present). */ + char* iccp_name; /* Null terminated string with profile name, 1-79 bytes */ + /* + The ICC profile in iccp_profile_size bytes. + Don't allocate this buffer yourself. Use the init/cleanup functions + correctly and use lodepng_set_icc and lodepng_clear_icc. + */ + unsigned char* iccp_profile; + unsigned iccp_profile_size; /* The size of iccp_profile in bytes */ + + /* + sBIT chunk: significant bits. Optional metadata, only set this if needed. + + If defined, these values give the bit depth of the original data. Since PNG only stores 1, 2, 4, 8 or 16-bit + per channel data, the significant bits value can be used to indicate the original encoded data has another + sample depth, such as 10 or 12. + + Encoders using this value, when storing the pixel data, should use the most significant bits + of the data to store the original bits, and use a good sample depth scaling method such as + "left bit replication" to fill in the least significant bits, rather than fill zeroes. + + Decoders using this value, if able to work with data that's e.g. 10-bit or 12-bit, should right + shift the data to go back to the original bit depth, but decoders are also allowed to ignore + sbit and work e.g. with the 8-bit or 16-bit data from the PNG directly, since thanks + to the encoder contract, the values encoded in PNG are in valid range for the PNG bit depth. + + For grayscale images, sbit_g and sbit_b are not used, and for images that don't use color + type RGBA or grayscale+alpha, sbit_a is not used (it's not used even for palette images with + translucent palette values, or images with color key). The values that are used must be + greater than zero and smaller than or equal to the PNG bit depth. + + The color type from the header in the PNG image defines these used and unused fields: if + decoding with a color mode conversion, such as always decoding to RGBA, this metadata still + only uses the color type of the original PNG, and may e.g. lack the alpha channel info + if the PNG was RGB. When encoding with auto_convert (as well as without), also always the + color model defined in info_png.color determines this. + + NOTE: enabling sbit can hurt compression, because the encoder can then not always use + auto_convert to choose a more optimal color mode for the data, because the PNG format has + strict requirements for the allowed sbit values in combination with color modes. + For example, setting these fields to 10-bit will force the encoder to keep using a 16-bit per channel + color mode, even if the pixel data would in fact fit in a more efficient 8-bit mode. + */ + unsigned sbit_defined; /*is significant bits given? if not, the values below are unused*/ + unsigned sbit_r; /*red or gray component of significant bits*/ + unsigned sbit_g; /*green component of significant bits*/ + unsigned sbit_b; /*blue component of significant bits*/ + unsigned sbit_a; /*alpha component of significant bits*/ + + /* End of color profile related chunks */ + + + /* + unknown chunks: chunks not known by LodePNG, passed on byte for byte. + + There are 3 buffers, one for each position in the PNG where unknown chunks can appear. + Each buffer contains all unknown chunks for that position consecutively. + The 3 positions are: + 0: between IHDR and PLTE, 1: between PLTE and IDAT, 2: between IDAT and IEND. + + For encoding, do not store critical chunks or known chunks that are enabled with a "_defined" flag + above in here, since the encoder will blindly follow this and could then encode an invalid PNG file + (such as one with two IHDR chunks or the disallowed combination of sRGB with iCCP). But do use + this if you wish to store an ancillary chunk that is not supported by LodePNG (such as sPLT or hIST), + or any non-standard PNG chunk. + + Do not allocate or traverse this data yourself. Use the chunk traversing functions declared + later, such as lodepng_chunk_next and lodepng_chunk_append, to read/write this struct. + */ + unsigned char* unknown_chunks_data[3]; + size_t unknown_chunks_size[3]; /*size in bytes of the unknown chunks, given for protection*/ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} LodePNGInfo; + +/*init, cleanup and copy functions to use with this struct*/ +void lodepng_info_init(LodePNGInfo* info); +void lodepng_info_cleanup(LodePNGInfo* info); +/*return value is error code (0 means no error)*/ +unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source); + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS +unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str); /*push back both texts at once*/ +void lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ + +unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag, + const char* transkey, const char* str); /*push back the 4 texts of 1 chunk at once*/ +void lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/ + +/*replaces if exists*/ +unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size); +void lodepng_clear_icc(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/ +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ + +/* +Converts raw buffer from one color type to another color type, based on +LodePNGColorMode structs to describe the input and output color type. +See the reference manual at the end of this header file to see which color conversions are supported. +return value = LodePNG error code (0 if all went ok, an error if the conversion isn't supported) +The out buffer must have size (w * h * bpp + 7) / 8, where bpp is the bits per pixel +of the output color type (lodepng_get_bpp). +For < 8 bpp images, there should not be padding bits at the end of scanlines. +For 16-bit per channel colors, uses big endian format like PNG does. +Return value is LodePNG error code +*/ +unsigned lodepng_convert(unsigned char* out, const unsigned char* in, + const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in, + unsigned w, unsigned h); + +#ifdef LODEPNG_COMPILE_DECODER +/* +Settings for the decoder. This contains settings for the PNG and the Zlib +decoder, but not the Info settings from the Info structs. +*/ +typedef struct LodePNGDecoderSettings { + LodePNGDecompressSettings zlibsettings; /*in here is the setting to ignore Adler32 checksums*/ + + /* Check LodePNGDecompressSettings for more ignorable errors such as ignore_adler32 */ + unsigned ignore_crc; /*ignore CRC checksums*/ + unsigned ignore_critical; /*ignore unknown critical chunks*/ + unsigned ignore_end; /*ignore issues at end of file if possible (missing IEND chunk, too large chunk, ...)*/ + /* TODO: make a system involving warnings with levels and a strict mode instead. Other potentially recoverable + errors: srgb rendering intent value, size of content of ancillary chunks, more than 79 characters for some + strings, placement/combination rules for ancillary chunks, crc of unknown chunks, allowed characters + in string keys, etc... */ + + unsigned color_convert; /*whether to convert the PNG to the color type you want. Default: yes*/ + +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + unsigned read_text_chunks; /*if false but remember_unknown_chunks is true, they're stored in the unknown chunks*/ + + /*store all bytes from unknown chunks in the LodePNGInfo (off by default, useful for a png editor)*/ + unsigned remember_unknown_chunks; + + /* maximum size for decompressed text chunks. If a text chunk's text is larger than this, an error is returned, + unless reading text chunks is disabled or this limit is set higher or disabled. Set to 0 to allow any size. + By default it is a value that prevents unreasonably large strings from hogging memory. */ + size_t max_text_size; + + /* maximum size for compressed ICC chunks. If the ICC profile is larger than this, an error will be returned. Set to + 0 to allow any size. By default this is a value that prevents ICC profiles that would be much larger than any + legitimate profile could be to hog memory. */ + size_t max_icc_size; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} LodePNGDecoderSettings; + +void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/*automatically use color type with less bits per pixel if losslessly possible. Default: AUTO*/ +typedef enum LodePNGFilterStrategy { + /*every filter at zero*/ + LFS_ZERO = 0, + /*every filter at 1, 2, 3 or 4 (paeth), unlike LFS_ZERO not a good choice, but for testing*/ + LFS_ONE = 1, + LFS_TWO = 2, + LFS_THREE = 3, + LFS_FOUR = 4, + /*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/ + LFS_MINSUM, + /*Use the filter type that gives smallest Shannon entropy for this scanline. Depending + on the image, this is better or worse than minsum.*/ + LFS_ENTROPY, + /* + Brute-force-search PNG filters by compressing each filter for each scanline. + Experimental, very slow, and only rarely gives better compression than MINSUM. + */ + LFS_BRUTE_FORCE, + /*use predefined_filters buffer: you specify the filter type for each scanline*/ + LFS_PREDEFINED +} LodePNGFilterStrategy; + +/*Gives characteristics about the integer RGBA colors of the image (count, alpha channel usage, bit depth, ...), +which helps decide which color model to use for encoding. +Used internally by default if "auto_convert" is enabled. Public because it's useful for custom algorithms.*/ +typedef struct LodePNGColorStats { + unsigned colored; /*not grayscale*/ + unsigned key; /*image is not opaque and color key is possible instead of full alpha*/ + unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte is duplicated, e.g. 65535 means 255*/ + unsigned short key_g; + unsigned short key_b; + unsigned alpha; /*image is not opaque and alpha channel or alpha palette required*/ + unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16 or allow_palette is disabled.*/ + unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in no particular order, only valid when numcolors is valid*/ + unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for grayscale only. 16 if 16-bit per channel required.*/ + size_t numpixels; + + /*user settings for computing/using the stats*/ + unsigned allow_palette; /*default 1. if 0, disallow choosing palette colortype in auto_choose_color, and don't count numcolors*/ + unsigned allow_greyscale; /*default 1. if 0, choose RGB or RGBA even if the image only has gray colors*/ +} LodePNGColorStats; + +void lodepng_color_stats_init(LodePNGColorStats* stats); + +/*Get a LodePNGColorStats of the image. The stats must already have been inited. +Returns error code (e.g. alloc fail) or 0 if ok.*/ +unsigned lodepng_compute_color_stats(LodePNGColorStats* stats, + const unsigned char* image, unsigned w, unsigned h, + const LodePNGColorMode* mode_in); + +/*Settings for the encoder.*/ +typedef struct LodePNGEncoderSettings { + LodePNGCompressSettings zlibsettings; /*settings for the zlib encoder, such as window size, ...*/ + + unsigned auto_convert; /*automatically choose output PNG color type. Default: true*/ + + /*If true, follows the official PNG heuristic: if the PNG uses a palette or lower than + 8 bit depth, set all filters to zero. Otherwise use the filter_strategy. Note that to + completely follow the official PNG heuristic, filter_palette_zero must be true and + filter_strategy must be LFS_MINSUM*/ + unsigned filter_palette_zero; + /*Which filter strategy to use when not using zeroes due to filter_palette_zero. + Set filter_palette_zero to 0 to ensure always using your chosen strategy. Default: LFS_MINSUM*/ + LodePNGFilterStrategy filter_strategy; + /*used if filter_strategy is LFS_PREDEFINED. In that case, this must point to a buffer with + the same length as the amount of scanlines in the image, and each value must <= 5. You + have to cleanup this buffer, LodePNG will never free it. Don't forget that filter_palette_zero + must be set to 0 to ensure this is also used on palette or low bitdepth images.*/ + const unsigned char* predefined_filters; + + /*force creating a PLTE chunk if colortype is 2 or 6 (= a suggested palette). + If colortype is 3, PLTE is always created. If color type is explicitely set + to a grayscale type (1 or 4), this is not done and is ignored. If enabling this, + a palette must be present in the info_png. + NOTE: enabling this may worsen compression if auto_convert is used to choose + optimal color mode, because it cannot use grayscale color modes in this case*/ + unsigned force_palette; +#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS + /*add LodePNG identifier and version as a text chunk, for debugging*/ + unsigned add_id; + /*encode text chunks as zTXt chunks instead of tEXt chunks, and use compression in iTXt chunks*/ + unsigned text_compression; +#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ +} LodePNGEncoderSettings; + +void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings); +#endif /*LODEPNG_COMPILE_ENCODER*/ + + +#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) +/*The settings, state and information for extended encoding and decoding.*/ +typedef struct LodePNGState { +#ifdef LODEPNG_COMPILE_DECODER + LodePNGDecoderSettings decoder; /*the decoding settings*/ +#endif /*LODEPNG_COMPILE_DECODER*/ +#ifdef LODEPNG_COMPILE_ENCODER + LodePNGEncoderSettings encoder; /*the encoding settings*/ +#endif /*LODEPNG_COMPILE_ENCODER*/ + LodePNGColorMode info_raw; /*specifies the format in which you would like to get the raw pixel buffer*/ + LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/ + unsigned error; +} LodePNGState; + +/*init, cleanup and copy functions to use with this struct*/ +void lodepng_state_init(LodePNGState* state); +void lodepng_state_cleanup(LodePNGState* state); +void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source); +#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */ + +#ifdef LODEPNG_COMPILE_DECODER +/* +Same as lodepng_decode_memory, but uses a LodePNGState to allow custom settings and +getting much more information about the PNG image and color mode. +*/ +unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize); + +/* +Read the PNG header, but not the actual data. This returns only the information +that is in the IHDR chunk of the PNG, such as width, height and color type. The +information is placed in the info_png field of the LodePNGState. +*/ +unsigned lodepng_inspect(unsigned* w, unsigned* h, + LodePNGState* state, + const unsigned char* in, size_t insize); +#endif /*LODEPNG_COMPILE_DECODER*/ + +/* +Reads one metadata chunk (other than IHDR, which is handled by lodepng_inspect) +of the PNG file and outputs what it read in the state. Returns error code on failure. +Use lodepng_inspect first with a new state, then e.g. lodepng_chunk_find_const +to find the desired chunk type, and if non null use lodepng_inspect_chunk (with +chunk_pointer - start_of_file as pos). +Supports most metadata chunks from the PNG standard (gAMA, bKGD, tEXt, ...). +Ignores unsupported, unknown, non-metadata or IHDR chunks (without error). +Requirements: &in[pos] must point to start of a chunk, must use regular +lodepng_inspect first since format of most other chunks depends on IHDR, and if +there is a PLTE chunk, that one must be inspected before tRNS or bKGD. +*/ +unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos, + const unsigned char* in, size_t insize); + +#ifdef LODEPNG_COMPILE_ENCODER +/*This function allocates the out buffer with standard malloc and stores the size in *outsize.*/ +unsigned lodepng_encode(unsigned char** out, size_t* outsize, + const unsigned char* image, unsigned w, unsigned h, + LodePNGState* state); +#endif /*LODEPNG_COMPILE_ENCODER*/ + +/* +The lodepng_chunk functions are normally not needed, except to traverse the +unknown chunks stored in the LodePNGInfo struct, or add new ones to it. +It also allows traversing the chunks of an encoded PNG file yourself. + +The chunk pointer always points to the beginning of the chunk itself, that is +the first byte of the 4 length bytes. + +In the PNG file format, chunks have the following format: +-4 bytes length: length of the data of the chunk in bytes (chunk itself is 12 bytes longer) +-4 bytes chunk type (ASCII a-z,A-Z only, see below) +-length bytes of data (may be 0 bytes if length was 0) +-4 bytes of CRC, computed on chunk name + data + +The first chunk starts at the 8th byte of the PNG file, the entire rest of the file +exists out of concatenated chunks with the above format. + +PNG standard chunk ASCII naming conventions: +-First byte: uppercase = critical, lowercase = ancillary +-Second byte: uppercase = public, lowercase = private +-Third byte: must be uppercase +-Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy +*/ + +/* +Gets the length of the data of the chunk. Total chunk length has 12 bytes more. +There must be at least 4 bytes to read from. If the result value is too large, +it may be corrupt data. +*/ +unsigned lodepng_chunk_length(const unsigned char* chunk); + +/*puts the 4-byte type in null terminated string*/ +void lodepng_chunk_type(char type[5], const unsigned char* chunk); + +/*check if the type is the given type*/ +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type); + +/*0: it's one of the critical chunk types, 1: it's an ancillary chunk (see PNG standard)*/ +unsigned char lodepng_chunk_ancillary(const unsigned char* chunk); + +/*0: public, 1: private (see PNG standard)*/ +unsigned char lodepng_chunk_private(const unsigned char* chunk); + +/*0: the chunk is unsafe to copy, 1: the chunk is safe to copy (see PNG standard)*/ +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk); + +/*get pointer to the data of the chunk, where the input points to the header of the chunk*/ +unsigned char* lodepng_chunk_data(unsigned char* chunk); +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk); + +/*returns 0 if the crc is correct, 1 if it's incorrect (0 for OK as usual!)*/ +unsigned lodepng_chunk_check_crc(const unsigned char* chunk); + +/*generates the correct CRC from the data and puts it in the last 4 bytes of the chunk*/ +void lodepng_chunk_generate_crc(unsigned char* chunk); + +/* +Iterate to next chunks, allows iterating through all chunks of the PNG file. +Input must be at the beginning of a chunk (result of a previous lodepng_chunk_next call, +or the 8th byte of a PNG file which always has the first chunk), or alternatively may +point to the first byte of the PNG file (which is not a chunk but the magic header, the +function will then skip over it and return the first real chunk). +Will output pointer to the start of the next chunk, or at or beyond end of the file if there +is no more chunk after this or possibly if the chunk is corrupt. +Start this process at the 8th byte of the PNG file. +In a non-corrupt PNG file, the last chunk should have name "IEND". +*/ +unsigned char* lodepng_chunk_next(unsigned char* chunk, unsigned char* end); +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk, const unsigned char* end); + +/*Finds the first chunk with the given type in the range [chunk, end), or returns NULL if not found.*/ +unsigned char* lodepng_chunk_find(unsigned char* chunk, unsigned char* end, const char type[5]); +const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]); + +/* +Appends chunk to the data in out. The given chunk should already have its chunk header. +The out variable and outsize are updated to reflect the new reallocated buffer. +Returns error code (0 if it went ok) +*/ +unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk); + +/* +Appends new chunk to out. The chunk to append is given by giving its length, type +and data separately. The type is a 4-letter string. +The out variable and outsize are updated to reflect the new reallocated buffer. +Returne error code (0 if it went ok) +*/ +unsigned lodepng_chunk_create(unsigned char** out, size_t* outsize, unsigned length, + const char* type, const unsigned char* data); + + +/*Calculate CRC32 of buffer*/ +unsigned lodepng_crc32(const unsigned char* buf, size_t len); +#endif /*LODEPNG_COMPILE_PNG*/ + + +#ifdef LODEPNG_COMPILE_ZLIB +/* +This zlib part can be used independently to zlib compress and decompress a +buffer. It cannot be used to create gzip files however, and it only supports the +part of zlib that is required for PNG, it does not support dictionaries. +*/ + +#ifdef LODEPNG_COMPILE_DECODER +/*Inflate a buffer. Inflate is the decompression step of deflate. Out buffer must be freed after use.*/ +unsigned lodepng_inflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings); + +/* +Decompresses Zlib data. Reallocates the out buffer and appends the data. The +data must be according to the zlib specification. +Either, *out must be NULL and *outsize must be 0, or, *out must be a valid +buffer and *outsize its size in bytes. out must be freed by user after usage. +*/ +unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGDecompressSettings* settings); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/* +Compresses data with Zlib. Reallocates the out buffer and appends the data. +Zlib adds a small header and trailer around the deflate data. +The data is output in the format of the zlib specification. +Either, *out must be NULL and *outsize must be 0, or, *out must be a valid +buffer and *outsize its size in bytes. out must be freed by user after usage. +*/ +unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings); + +/* +Find length-limited Huffman code for given frequencies. This function is in the +public interface only for tests, it's used internally by lodepng_deflate. +*/ +unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies, + size_t numcodes, unsigned maxbitlen); + +/*Compress a buffer with deflate. See RFC 1951. Out buffer must be freed after use.*/ +unsigned lodepng_deflate(unsigned char** out, size_t* outsize, + const unsigned char* in, size_t insize, + const LodePNGCompressSettings* settings); + +#endif /*LODEPNG_COMPILE_ENCODER*/ +#endif /*LODEPNG_COMPILE_ZLIB*/ + +#ifdef LODEPNG_COMPILE_DISK +/* +Load a file from disk into buffer. The function allocates the out buffer, and +after usage you should free it. +out: output parameter, contains pointer to loaded buffer. +outsize: output parameter, size of the allocated out buffer +filename: the path to the file to load +return value: error code (0 means ok) + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory. +*/ +unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename); + +/* +Save a file from buffer to disk. Warning, if it exists, this function overwrites +the file without warning! +buffer: the buffer to write +buffersize: size of the buffer to write +filename: the path to the file to save to +return value: error code (0 means ok) + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory +*/ +unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename); +#endif /*LODEPNG_COMPILE_DISK*/ + +#ifdef LODEPNG_COMPILE_CPP +/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */ +namespace lodepng { +#ifdef LODEPNG_COMPILE_PNG +class State : public LodePNGState { + public: + State(); + State(const State& other); + ~State(); + State& operator=(const State& other); +}; + +#ifdef LODEPNG_COMPILE_DECODER +/* Same as other lodepng::decode, but using a State for more settings and information. */ +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + State& state, + const unsigned char* in, size_t insize); +unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, + State& state, + const std::vector<unsigned char>& in); +#endif /*LODEPNG_COMPILE_DECODER*/ + +#ifdef LODEPNG_COMPILE_ENCODER +/* Same as other lodepng::encode, but using a State for more settings and information. */ +unsigned encode(std::vector<unsigned char>& out, + const unsigned char* in, unsigned w, unsigned h, + State& state); +unsigned encode(std::vector<unsigned char>& out, + const std::vector<unsigned char>& in, unsigned w, unsigned h, + State& state); +#endif /*LODEPNG_COMPILE_ENCODER*/ + +#ifdef LODEPNG_COMPILE_DISK +/* +Load a file from disk into an std::vector. +return value: error code (0 means ok) + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and decode in-memory +*/ +unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename); + +/* +Save the binary data in an std::vector to a file on disk. The file is overwritten +without warning. + +NOTE: Wide-character filenames are not supported, you can use an external method +to handle such files and encode in-memory +*/ +unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename); +#endif /* LODEPNG_COMPILE_DISK */ +#endif /* LODEPNG_COMPILE_PNG */ + +#ifdef LODEPNG_COMPILE_ZLIB +#ifdef LODEPNG_COMPILE_DECODER +/* Zlib-decompress an unsigned char buffer */ +unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize, + const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings); + +/* Zlib-decompress an std::vector */ +unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, + const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings); +#endif /* LODEPNG_COMPILE_DECODER */ + +#ifdef LODEPNG_COMPILE_ENCODER +/* Zlib-compress an unsigned char buffer */ +unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize, + const LodePNGCompressSettings& settings = lodepng_default_compress_settings); + +/* Zlib-compress an std::vector */ +unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in, + const LodePNGCompressSettings& settings = lodepng_default_compress_settings); +#endif /* LODEPNG_COMPILE_ENCODER */ +#endif /* LODEPNG_COMPILE_ZLIB */ +} /* namespace lodepng */ +#endif /*LODEPNG_COMPILE_CPP*/ + +/* +TODO: +[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often +[.] check compatibility with various compilers - done but needs to be redone for every newer version +[X] converting color to 16-bit per channel types +[X] support color profile chunk types (but never let them touch RGB values by default) +[ ] support all public PNG chunk types (almost done except sPLT and hIST) +[ ] make sure encoder generates no chunks with size > (2^31)-1 +[ ] partial decoding (stream processing) +[X] let the "isFullyOpaque" function check color keys and transparent palettes too +[X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl" +[ ] allow treating some errors like warnings, when image is recoverable (e.g. 69, 57, 58) +[ ] make warnings like: oob palette, checksum fail, data after iend, wrong/unknown crit chunk, no null terminator in text, ... +[ ] error messages with line numbers (and version) +[ ] errors in state instead of as return code? +[ ] new errors/warnings like suspiciously big decompressed ztxt or iccp chunk +[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes +[ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ... +[ ] allow user to give data (void*) to custom allocator +[X] provide alternatives for C library functions not present on some platforms (memcpy, ...) +*/ + +#endif /*LODEPNG_H inclusion guard*/ + +/* +LodePNG Documentation +--------------------- + +0. table of contents +-------------------- + + 1. about + 1.1. supported features + 1.2. features not supported + 2. C and C++ version + 3. security + 4. decoding + 5. encoding + 6. color conversions + 6.1. PNG color types + 6.2. color conversions + 6.3. padding bits + 6.4. A note about 16-bits per channel and endianness + 7. error values + 8. chunks and PNG editing + 9. compiler support + 10. examples + 10.1. decoder C++ example + 10.2. decoder C example + 11. state settings reference + 12. changes + 13. contact information + + +1. about +-------- + +PNG is a file format to store raster images losslessly with good compression, +supporting different color types and alpha channel. + +LodePNG is a PNG codec according to the Portable Network Graphics (PNG) +Specification (Second Edition) - W3C Recommendation 10 November 2003. + +The specifications used are: + +*) Portable Network Graphics (PNG) Specification (Second Edition): + http://www.w3.org/TR/2003/REC-PNG-20031110 +*) RFC 1950 ZLIB Compressed Data Format version 3.3: + http://www.gzip.org/zlib/rfc-zlib.html +*) RFC 1951 DEFLATE Compressed Data Format Specification ver 1.3: + http://www.gzip.org/zlib/rfc-deflate.html + +The most recent version of LodePNG can currently be found at +http://lodev.org/lodepng/ + +LodePNG works both in C (ISO C90) and C++, with a C++ wrapper that adds +extra functionality. + +LodePNG exists out of two files: +-lodepng.h: the header file for both C and C++ +-lodepng.c(pp): give it the name lodepng.c or lodepng.cpp (or .cc) depending on your usage + +If you want to start using LodePNG right away without reading this doc, get the +examples from the LodePNG website to see how to use it in code, or check the +smaller examples in chapter 13 here. + +LodePNG is simple but only supports the basic requirements. To achieve +simplicity, the following design choices were made: There are no dependencies +on any external library. There are functions to decode and encode a PNG with +a single function call, and extended versions of these functions taking a +LodePNGState struct allowing to specify or get more information. By default +the colors of the raw image are always RGB or RGBA, no matter what color type +the PNG file uses. To read and write files, there are simple functions to +convert the files to/from buffers in memory. + +This all makes LodePNG suitable for loading textures in games, demos and small +programs, ... It's less suitable for full fledged image editors, loading PNGs +over network (it requires all the image data to be available before decoding can +begin), life-critical systems, ... + +1.1. supported features +----------------------- + +The following features are supported by the decoder: + +*) decoding of PNGs with any color type, bit depth and interlace mode, to a 24- or 32-bit color raw image, + or the same color type as the PNG +*) encoding of PNGs, from any raw image to 24- or 32-bit color, or the same color type as the raw image +*) Adam7 interlace and deinterlace for any color type +*) loading the image from harddisk or decoding it from a buffer from other sources than harddisk +*) support for alpha channels, including RGBA color model, translucent palettes and color keying +*) zlib decompression (inflate) +*) zlib compression (deflate) +*) CRC32 and ADLER32 checksums +*) colorimetric color profile conversions: currently experimentally available in lodepng_util.cpp only, + plus alternatively ability to pass on chroma/gamma/ICC profile information to other color management system. +*) handling of unknown chunks, allowing making a PNG editor that stores custom and unknown chunks. +*) the following chunks are supported by both encoder and decoder: + IHDR: header information + PLTE: color palette + IDAT: pixel data + IEND: the final chunk + tRNS: transparency for palettized images + tEXt: textual information + zTXt: compressed textual information + iTXt: international textual information + bKGD: suggested background color + pHYs: physical dimensions + tIME: modification time + cHRM: RGB chromaticities + gAMA: RGB gamma correction + iCCP: ICC color profile + sRGB: rendering intent + sBIT: significant bits + +1.2. features not supported +--------------------------- + +The following features are not (yet) supported: + +*) some features needed to make a conformant PNG-Editor might be still missing. +*) partial loading/stream processing. All data must be available and is processed in one call. +*) The hIST and sPLT public chunks are not (yet) supported but treated as unknown chunks + + +2. C and C++ version +-------------------- + +The C version uses buffers allocated with alloc that you need to free() +yourself. You need to use init and cleanup functions for each struct whenever +using a struct from the C version to avoid exploits and memory leaks. + +The C++ version has extra functions with std::vectors in the interface and the +lodepng::State class which is a LodePNGState with constructor and destructor. + +These files work without modification for both C and C++ compilers because all +the additional C++ code is in "#ifdef __cplusplus" blocks that make C-compilers +ignore it, and the C code is made to compile both with strict ISO C90 and C++. + +To use the C++ version, you need to rename the source file to lodepng.cpp +(instead of lodepng.c), and compile it with a C++ compiler. + +To use the C version, you need to rename the source file to lodepng.c (instead +of lodepng.cpp), and compile it with a C compiler. + + +3. Security +----------- + +Even if carefully designed, it's always possible that LodePNG contains possible +exploits. If you discover one, please let me know, and it will be fixed. + +When using LodePNG, care has to be taken with the C version of LodePNG, as well +as the C-style structs when working with C++. The following conventions are used +for all C-style structs: + +-if a struct has a corresponding init function, always call the init function when making a new one +-if a struct has a corresponding cleanup function, call it before the struct disappears to avoid memory leaks +-if a struct has a corresponding copy function, use the copy function instead of "=". + The destination must also be inited already. + + +4. Decoding +----------- + +Decoding converts a PNG compressed image to a raw pixel buffer. + +Most documentation on using the decoder is at its declarations in the header +above. For C, simple decoding can be done with functions such as +lodepng_decode32, and more advanced decoding can be done with the struct +LodePNGState and lodepng_decode. For C++, all decoding can be done with the +various lodepng::decode functions, and lodepng::State can be used for advanced +features. + +When using the LodePNGState, it uses the following fields for decoding: +*) LodePNGInfo info_png: it stores extra information about the PNG (the input) in here +*) LodePNGColorMode info_raw: here you can say what color mode of the raw image (the output) you want to get +*) LodePNGDecoderSettings decoder: you can specify a few extra settings for the decoder to use + +LodePNGInfo info_png +-------------------- + +After decoding, this contains extra information of the PNG image, except the actual +pixels, width and height because these are already gotten directly from the decoder +functions. + +It contains for example the original color type of the PNG image, text comments, +suggested background color, etc... More details about the LodePNGInfo struct are +at its declaration documentation. + +LodePNGColorMode info_raw +------------------------- + +When decoding, here you can specify which color type you want +the resulting raw image to be. If this is different from the colortype of the +PNG, then the decoder will automatically convert the result. This conversion +always works, except if you want it to convert a color PNG to grayscale or to +a palette with missing colors. + +By default, 32-bit color is used for the result. + +LodePNGDecoderSettings decoder +------------------------------ + +The settings can be used to ignore the errors created by invalid CRC and Adler32 +chunks, and to disable the decoding of tEXt chunks. + +There's also a setting color_convert, true by default. If false, no conversion +is done, the resulting data will be as it was in the PNG (after decompression) +and you'll have to puzzle the colors of the pixels together yourself using the +color type information in the LodePNGInfo. + + +5. Encoding +----------- + +Encoding converts a raw pixel buffer to a PNG compressed image. + +Most documentation on using the encoder is at its declarations in the header +above. For C, simple encoding can be done with functions such as +lodepng_encode32, and more advanced decoding can be done with the struct +LodePNGState and lodepng_encode. For C++, all encoding can be done with the +various lodepng::encode functions, and lodepng::State can be used for advanced +features. + +Like the decoder, the encoder can also give errors. However it gives less errors +since the encoder input is trusted, the decoder input (a PNG image that could +be forged by anyone) is not trusted. + +When using the LodePNGState, it uses the following fields for encoding: +*) LodePNGInfo info_png: here you specify how you want the PNG (the output) to be. +*) LodePNGColorMode info_raw: here you say what color type of the raw image (the input) has +*) LodePNGEncoderSettings encoder: you can specify a few settings for the encoder to use + +LodePNGInfo info_png +-------------------- + +When encoding, you use this the opposite way as when decoding: for encoding, +you fill in the values you want the PNG to have before encoding. By default it's +not needed to specify a color type for the PNG since it's automatically chosen, +but it's possible to choose it yourself given the right settings. + +The encoder will not always exactly match the LodePNGInfo struct you give, +it tries as close as possible. Some things are ignored by the encoder. The +encoder uses, for example, the following settings from it when applicable: +colortype and bitdepth, text chunks, time chunk, the color key, the palette, the +background color, the interlace method, unknown chunks, ... + +When encoding to a PNG with colortype 3, the encoder will generate a PLTE chunk. +If the palette contains any colors for which the alpha channel is not 255 (so +there are translucent colors in the palette), it'll add a tRNS chunk. + +LodePNGColorMode info_raw +------------------------- + +You specify the color type of the raw image that you give to the input here, +including a possible transparent color key and palette you happen to be using in +your raw image data. + +By default, 32-bit color is assumed, meaning your input has to be in RGBA +format with 4 bytes (unsigned chars) per pixel. + +LodePNGEncoderSettings encoder +------------------------------ + +The following settings are supported (some are in sub-structs): +*) auto_convert: when this option is enabled, the encoder will +automatically choose the smallest possible color mode (including color key) that +can encode the colors of all pixels without information loss. +*) btype: the block type for LZ77. 0 = uncompressed, 1 = fixed huffman tree, + 2 = dynamic huffman tree (best compression). Should be 2 for proper + compression. +*) use_lz77: whether or not to use LZ77 for compressed block types. Should be + true for proper compression. +*) windowsize: the window size used by the LZ77 encoder (1 - 32768). Has value + 2048 by default, but can be set to 32768 for better, but slow, compression. +*) force_palette: if colortype is 2 or 6, you can make the encoder write a PLTE + chunk if force_palette is true. This can used as suggested palette to convert + to by viewers that don't support more than 256 colors (if those still exist) +*) add_id: add text chunk "Encoder: LodePNG <version>" to the image. +*) text_compression: default 1. If 1, it'll store texts as zTXt instead of tEXt chunks. + zTXt chunks use zlib compression on the text. This gives a smaller result on + large texts but a larger result on small texts (such as a single program name). + It's all tEXt or all zTXt though, there's no separate setting per text yet. + + +6. color conversions +-------------------- + +An important thing to note about LodePNG, is that the color type of the PNG, and +the color type of the raw image, are completely independent. By default, when +you decode a PNG, you get the result as a raw image in the color type you want, +no matter whether the PNG was encoded with a palette, grayscale or RGBA color. +And if you encode an image, by default LodePNG will automatically choose the PNG +color type that gives good compression based on the values of colors and amount +of colors in the image. It can be configured to let you control it instead as +well, though. + +To be able to do this, LodePNG does conversions from one color mode to another. +It can convert from almost any color type to any other color type, except the +following conversions: RGB to grayscale is not supported, and converting to a +palette when the palette doesn't have a required color is not supported. This is +not supported on purpose: this is information loss which requires a color +reduction algorithm that is beyond the scope of a PNG encoder (yes, RGB to gray +is easy, but there are multiple ways if you want to give some channels more +weight). + +By default, when decoding, you get the raw image in 32-bit RGBA or 24-bit RGB +color, no matter what color type the PNG has. And by default when encoding, +LodePNG automatically picks the best color model for the output PNG, and expects +the input image to be 32-bit RGBA or 24-bit RGB. So, unless you want to control +the color format of the images yourself, you can skip this chapter. + +6.1. PNG color types +-------------------- + +A PNG image can have many color types, ranging from 1-bit color to 64-bit color, +as well as palettized color modes. After the zlib decompression and unfiltering +in the PNG image is done, the raw pixel data will have that color type and thus +a certain amount of bits per pixel. If you want the output raw image after +decoding to have another color type, a conversion is done by LodePNG. + +The PNG specification gives the following color types: + +0: grayscale, bit depths 1, 2, 4, 8, 16 +2: RGB, bit depths 8 and 16 +3: palette, bit depths 1, 2, 4 and 8 +4: grayscale with alpha, bit depths 8 and 16 +6: RGBA, bit depths 8 and 16 + +Bit depth is the amount of bits per pixel per color channel. So the total amount +of bits per pixel is: amount of channels * bitdepth. + +6.2. color conversions +---------------------- + +As explained in the sections about the encoder and decoder, you can specify +color types and bit depths in info_png and info_raw to change the default +behaviour. + +If, when decoding, you want the raw image to be something else than the default, +you need to set the color type and bit depth you want in the LodePNGColorMode, +or the parameters colortype and bitdepth of the simple decoding function. + +If, when encoding, you use another color type than the default in the raw input +image, you need to specify its color type and bit depth in the LodePNGColorMode +of the raw image, or use the parameters colortype and bitdepth of the simple +encoding function. + +If, when encoding, you don't want LodePNG to choose the output PNG color type +but control it yourself, you need to set auto_convert in the encoder settings +to false, and specify the color type you want in the LodePNGInfo of the +encoder (including palette: it can generate a palette if auto_convert is true, +otherwise not). + +If the input and output color type differ (whether user chosen or auto chosen), +LodePNG will do a color conversion, which follows the rules below, and may +sometimes result in an error. + +To avoid some confusion: +-the decoder converts from PNG to raw image +-the encoder converts from raw image to PNG +-the colortype and bitdepth in LodePNGColorMode info_raw, are those of the raw image +-the colortype and bitdepth in the color field of LodePNGInfo info_png, are those of the PNG +-when encoding, the color type in LodePNGInfo is ignored if auto_convert + is enabled, it is automatically generated instead +-when decoding, the color type in LodePNGInfo is set by the decoder to that of the original + PNG image, but it can be ignored since the raw image has the color type you requested instead +-if the color type of the LodePNGColorMode and PNG image aren't the same, a conversion + between the color types is done if the color types are supported. If it is not + supported, an error is returned. If the types are the same, no conversion is done. +-even though some conversions aren't supported, LodePNG supports loading PNGs from any + colortype and saving PNGs to any colortype, sometimes it just requires preparing + the raw image correctly before encoding. +-both encoder and decoder use the same color converter. + +The function lodepng_convert does the color conversion. It is available in the +interface but normally isn't needed since the encoder and decoder already call +it. + +Non supported color conversions: +-color to grayscale when non-gray pixels are present: no error is thrown, but +the result will look ugly because only the red channel is taken (it assumes all +three channels are the same in this case so ignores green and blue). The reason +no error is given is to allow converting from three-channel grayscale images to +one-channel even if there are numerical imprecisions. +-anything to palette when the palette does not have an exact match for a from-color +in it: in this case an error is thrown + +Supported color conversions: +-anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA +-any gray or gray+alpha, to gray or gray+alpha +-anything to a palette, as long as the palette has the requested colors in it +-removing alpha channel +-higher to smaller bitdepth, and vice versa + +If you want no color conversion to be done (e.g. for speed or control): +-In the encoder, you can make it save a PNG with any color type by giving the +raw color mode and LodePNGInfo the same color mode, and setting auto_convert to +false. +-In the decoder, you can make it store the pixel data in the same color type +as the PNG has, by setting the color_convert setting to false. Settings in +info_raw are then ignored. + +6.3. padding bits +----------------- + +In the PNG file format, if a less than 8-bit per pixel color type is used and the scanlines +have a bit amount that isn't a multiple of 8, then padding bits are used so that each +scanline starts at a fresh byte. But that is NOT true for the LodePNG raw input and output. +The raw input image you give to the encoder, and the raw output image you get from the decoder +will NOT have these padding bits, e.g. in the case of a 1-bit image with a width +of 7 pixels, the first pixel of the second scanline will the 8th bit of the first byte, +not the first bit of a new byte. + +6.4. A note about 16-bits per channel and endianness +---------------------------------------------------- + +LodePNG uses unsigned char arrays for 16-bit per channel colors too, just like +for any other color format. The 16-bit values are stored in big endian (most +significant byte first) in these arrays. This is the opposite order of the +little endian used by x86 CPU's. + +LodePNG always uses big endian because the PNG file format does so internally. +Conversions to other formats than PNG uses internally are not supported by +LodePNG on purpose, there are myriads of formats, including endianness of 16-bit +colors, the order in which you store R, G, B and A, and so on. Supporting and +converting to/from all that is outside the scope of LodePNG. + +This may mean that, depending on your use case, you may want to convert the big +endian output of LodePNG to little endian with a for loop. This is certainly not +always needed, many applications and libraries support big endian 16-bit colors +anyway, but it means you cannot simply cast the unsigned char* buffer to an +unsigned short* buffer on x86 CPUs. + + +7. error values +--------------- + +All functions in LodePNG that return an error code, return 0 if everything went +OK, or a non-zero code if there was an error. + +The meaning of the LodePNG error values can be retrieved with the function +lodepng_error_text: given the numerical error code, it returns a description +of the error in English as a string. + +Check the implementation of lodepng_error_text to see the meaning of each code. + +It is not recommended to use the numerical values to programmatically make +different decisions based on error types as the numbers are not guaranteed to +stay backwards compatible. They are for human consumption only. Programmatically +only 0 or non-0 matter. + + +8. chunks and PNG editing +------------------------- + +If you want to add extra chunks to a PNG you encode, or use LodePNG for a PNG +editor that should follow the rules about handling of unknown chunks, or if your +program is able to read other types of chunks than the ones handled by LodePNG, +then that's possible with the chunk functions of LodePNG. + +A PNG chunk has the following layout: + +4 bytes length +4 bytes type name +length bytes data +4 bytes CRC + +8.1. iterating through chunks +----------------------------- + +If you have a buffer containing the PNG image data, then the first chunk (the +IHDR chunk) starts at byte number 8 of that buffer. The first 8 bytes are the +signature of the PNG and are not part of a chunk. But if you start at byte 8 +then you have a chunk, and can check the following things of it. + +NOTE: none of these functions check for memory buffer boundaries. To avoid +exploits, always make sure the buffer contains all the data of the chunks. +When using lodepng_chunk_next, make sure the returned value is within the +allocated memory. + +unsigned lodepng_chunk_length(const unsigned char* chunk): + +Get the length of the chunk's data. The total chunk length is this length + 12. + +void lodepng_chunk_type(char type[5], const unsigned char* chunk): +unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type): + +Get the type of the chunk or compare if it's a certain type + +unsigned char lodepng_chunk_critical(const unsigned char* chunk): +unsigned char lodepng_chunk_private(const unsigned char* chunk): +unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk): + +Check if the chunk is critical in the PNG standard (only IHDR, PLTE, IDAT and IEND are). +Check if the chunk is private (public chunks are part of the standard, private ones not). +Check if the chunk is safe to copy. If it's not, then, when modifying data in a critical +chunk, unsafe to copy chunks of the old image may NOT be saved in the new one if your +program doesn't handle that type of unknown chunk. + +unsigned char* lodepng_chunk_data(unsigned char* chunk): +const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk): + +Get a pointer to the start of the data of the chunk. + +unsigned lodepng_chunk_check_crc(const unsigned char* chunk): +void lodepng_chunk_generate_crc(unsigned char* chunk): + +Check if the crc is correct or generate a correct one. + +unsigned char* lodepng_chunk_next(unsigned char* chunk): +const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk): + +Iterate to the next chunk. This works if you have a buffer with consecutive chunks. Note that these +functions do no boundary checking of the allocated data whatsoever, so make sure there is enough +data available in the buffer to be able to go to the next chunk. + +unsigned lodepng_chunk_append(unsigned char** out, size_t* outsize, const unsigned char* chunk): +unsigned lodepng_chunk_create(unsigned char** out, size_t* outsize, unsigned length, + const char* type, const unsigned char* data): + +These functions are used to create new chunks that are appended to the data in *out that has +length *outsize. The append function appends an existing chunk to the new data. The create +function creates a new chunk with the given parameters and appends it. Type is the 4-letter +name of the chunk. + +8.2. chunks in info_png +----------------------- + +The LodePNGInfo struct contains fields with the unknown chunk in it. It has 3 +buffers (each with size) to contain 3 types of unknown chunks: +the ones that come before the PLTE chunk, the ones that come between the PLTE +and the IDAT chunks, and the ones that come after the IDAT chunks. +It's necessary to make the distinction between these 3 cases because the PNG +standard forces to keep the ordering of unknown chunks compared to the critical +chunks, but does not force any other ordering rules. + +info_png.unknown_chunks_data[0] is the chunks before PLTE +info_png.unknown_chunks_data[1] is the chunks after PLTE, before IDAT +info_png.unknown_chunks_data[2] is the chunks after IDAT + +The chunks in these 3 buffers can be iterated through and read by using the same +way described in the previous subchapter. + +When using the decoder to decode a PNG, you can make it store all unknown chunks +if you set the option settings.remember_unknown_chunks to 1. By default, this +option is off (0). + +The encoder will always encode unknown chunks that are stored in the info_png. +If you need it to add a particular chunk that isn't known by LodePNG, you can +use lodepng_chunk_append or lodepng_chunk_create to the chunk data in +info_png.unknown_chunks_data[x]. + +Chunks that are known by LodePNG should not be added in that way. E.g. to make +LodePNG add a bKGD chunk, set background_defined to true and add the correct +parameters there instead. + + +9. compiler support +------------------- + +No libraries other than the current standard C library are needed to compile +LodePNG. For the C++ version, only the standard C++ library is needed on top. +Add the files lodepng.c(pp) and lodepng.h to your project, include +lodepng.h where needed, and your program can read/write PNG files. + +It is compatible with C90 and up, and C++03 and up. + +If performance is important, use optimization when compiling! For both the +encoder and decoder, this makes a large difference. + +Make sure that LodePNG is compiled with the same compiler of the same version +and with the same settings as the rest of the program, or the interfaces with +std::vectors and std::strings in C++ can be incompatible. + +CHAR_BITS must be 8 or higher, because LodePNG uses unsigned chars for octets. + +*) gcc and g++ + +LodePNG is developed in gcc so this compiler is natively supported. It gives no +warnings with compiler options "-Wall -Wextra -pedantic -ansi", with gcc and g++ +version 4.7.1 on Linux, 32-bit and 64-bit. + +*) Clang + +Fully supported and warning-free. + +*) Mingw + +The Mingw compiler (a port of gcc for Windows) should be fully supported by +LodePNG. + +*) Visual Studio and Visual C++ Express Edition + +LodePNG should be warning-free with warning level W4. Two warnings were disabled +with pragmas though: warning 4244 about implicit conversions, and warning 4996 +where it wants to use a non-standard function fopen_s instead of the standard C +fopen. + +Visual Studio may want "stdafx.h" files to be included in each source file and +give an error "unexpected end of file while looking for precompiled header". +This is not standard C++ and will not be added to the stock LodePNG. You can +disable it for lodepng.cpp only by right clicking it, Properties, C/C++, +Precompiled Headers, and set it to Not Using Precompiled Headers there. + +NOTE: Modern versions of VS should be fully supported, but old versions, e.g. +VS6, are not guaranteed to work. + +*) Compilers on Macintosh + +LodePNG has been reported to work both with gcc and LLVM for Macintosh, both for +C and C++. + +*) Other Compilers + +If you encounter problems on any compilers, feel free to let me know and I may +try to fix it if the compiler is modern and standards compliant. + + +10. examples +------------ + +This decoder example shows the most basic usage of LodePNG. More complex +examples can be found on the LodePNG website. + +NOTE: these examples do not support wide-character filenames, you can use an +external method to handle such files and encode or decode in-memory + +10.1. decoder C++ example +------------------------- + +#include "lodepng.h" +#include <iostream> + +int main(int argc, char *argv[]) { + const char* filename = argc > 1 ? argv[1] : "test.png"; + + //load and decode + std::vector<unsigned char> image; + unsigned width, height; + unsigned error = lodepng::decode(image, width, height, filename); + + //if there's an error, display it + if(error) std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl; + + //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ... +} + +10.2. decoder C example +----------------------- + +#include "lodepng.h" + +int main(int argc, char *argv[]) { + unsigned error; + unsigned char* image; + size_t width, height; + const char* filename = argc > 1 ? argv[1] : "test.png"; + + error = lodepng_decode32_file(&image, &width, &height, filename); + + if(error) printf("decoder error %u: %s\n", error, lodepng_error_text(error)); + + / * use image here * / + + free(image); + return 0; +} + +11. state settings reference +---------------------------- + +A quick reference of some settings to set on the LodePNGState + +For decoding: + +state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums +state.decoder.zlibsettings.custom_...: use custom inflate function +state.decoder.ignore_crc: ignore CRC checksums +state.decoder.ignore_critical: ignore unknown critical chunks +state.decoder.ignore_end: ignore missing IEND chunk. May fail if this corruption causes other errors +state.decoder.color_convert: convert internal PNG color to chosen one +state.decoder.read_text_chunks: whether to read in text metadata chunks +state.decoder.remember_unknown_chunks: whether to read in unknown chunks +state.info_raw.colortype: desired color type for decoded image +state.info_raw.bitdepth: desired bit depth for decoded image +state.info_raw....: more color settings, see struct LodePNGColorMode +state.info_png....: no settings for decoder but ouput, see struct LodePNGInfo + +For encoding: + +state.encoder.zlibsettings.btype: disable compression by setting it to 0 +state.encoder.zlibsettings.use_lz77: use LZ77 in compression +state.encoder.zlibsettings.windowsize: tweak LZ77 windowsize +state.encoder.zlibsettings.minmatch: tweak min LZ77 length to match +state.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching +state.encoder.zlibsettings.lazymatching: try one more LZ77 matching +state.encoder.zlibsettings.custom_...: use custom deflate function +state.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png +state.encoder.filter_palette_zero: PNG filter strategy for palette +state.encoder.filter_strategy: PNG filter strategy to encode with +state.encoder.force_palette: add palette even if not encoding to one +state.encoder.add_id: add LodePNG identifier and version as a text chunk +state.encoder.text_compression: use compressed text chunks for metadata +state.info_raw.colortype: color type of raw input image you provide +state.info_raw.bitdepth: bit depth of raw input image you provide +state.info_raw: more color settings, see struct LodePNGColorMode +state.info_png.color.colortype: desired color type if auto_convert is false +state.info_png.color.bitdepth: desired bit depth if auto_convert is false +state.info_png.color....: more color settings, see struct LodePNGColorMode +state.info_png....: more PNG related settings, see struct LodePNGInfo + + +12. changes +----------- + +The version number of LodePNG is the date of the change given in the format +yyyymmdd. + +Some changes aren't backwards compatible. Those are indicated with a (!) +symbol. + +Not all changes are listed here, the commit history in github lists more: +https://github.com/lvandeve/lodepng + +*) 13 jun 2022: added support for the sBIT chunk. +*) 09 jan 2022: minor decoder speed improvements. +*) 27 jun 2021: added warnings that file reading/writing functions don't support + wide-character filenames (support for this is not planned, opening files is + not the core part of PNG decoding/decoding and is platform dependent). +*) 17 okt 2020: prevent decoding too large text/icc chunks by default. +*) 06 mar 2020: simplified some of the dynamic memory allocations. +*) 12 jan 2020: (!) added 'end' argument to lodepng_chunk_next to allow correct + overflow checks. +*) 14 aug 2019: around 25% faster decoding thanks to huffman lookup tables. +*) 15 jun 2019: (!) auto_choose_color API changed (for bugfix: don't use palette + if gray ICC profile) and non-ICC LodePNGColorProfile renamed to + LodePNGColorStats. +*) 30 dec 2018: code style changes only: removed newlines before opening braces. +*) 10 sep 2018: added way to inspect metadata chunks without full decoding. +*) 19 aug 2018: (!) fixed color mode bKGD is encoded with and made it use + palette index in case of palette. +*) 10 aug 2018: (!) added support for gAMA, cHRM, sRGB and iCCP chunks. This + change is backwards compatible unless you relied on unknown_chunks for those. +*) 11 jun 2018: less restrictive check for pixel size integer overflow +*) 14 jan 2018: allow optionally ignoring a few more recoverable errors +*) 17 sep 2017: fix memory leak for some encoder input error cases +*) 27 nov 2016: grey+alpha auto color model detection bugfix +*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort). +*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within + the limits of pure C90). +*) 08 dec 2015: Made load_file function return error if file can't be opened. +*) 24 okt 2015: Bugfix with decoding to palette output. +*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding. +*) 24 aug 2014: Moved to github +*) 23 aug 2014: Reduced needless memory usage of decoder. +*) 28 jun 2014: Removed fix_png setting, always support palette OOB for + simplicity. Made ColorProfile public. +*) 09 jun 2014: Faster encoder by fixing hash bug and more zeros optimization. +*) 22 dec 2013: Power of two windowsize required for optimization. +*) 15 apr 2013: Fixed bug with LAC_ALPHA and color key. +*) 25 mar 2013: Added an optional feature to ignore some PNG errors (fix_png). +*) 11 mar 2013: (!) Bugfix with custom free. Changed from "my" to "lodepng_" + prefix for the custom allocators and made it possible with a new #define to + use custom ones in your project without needing to change lodepng's code. +*) 28 jan 2013: Bugfix with color key. +*) 27 okt 2012: Tweaks in text chunk keyword length error handling. +*) 8 okt 2012: (!) Added new filter strategy (entropy) and new auto color mode. + (no palette). Better deflate tree encoding. New compression tweak settings. + Faster color conversions while decoding. Some internal cleanups. +*) 23 sep 2012: Reduced warnings in Visual Studio a little bit. +*) 1 sep 2012: (!) Removed #define's for giving custom (de)compression functions + and made it work with function pointers instead. +*) 23 jun 2012: Added more filter strategies. Made it easier to use custom alloc + and free functions and toggle #defines from compiler flags. Small fixes. +*) 6 may 2012: (!) Made plugging in custom zlib/deflate functions more flexible. +*) 22 apr 2012: (!) Made interface more consistent, renaming a lot. Removed + redundant C++ codec classes. Reduced amount of structs. Everything changed, + but it is cleaner now imho and functionality remains the same. Also fixed + several bugs and shrunk the implementation code. Made new samples. +*) 6 nov 2011: (!) By default, the encoder now automatically chooses the best + PNG color model and bit depth, based on the amount and type of colors of the + raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color. +*) 9 okt 2011: simpler hash chain implementation for the encoder. +*) 8 sep 2011: lz77 encoder lazy matching instead of greedy matching. +*) 23 aug 2011: tweaked the zlib compression parameters after benchmarking. + A bug with the PNG filtertype heuristic was fixed, so that it chooses much + better ones (it's quite significant). A setting to do an experimental, slow, + brute force search for PNG filter types is added. +*) 17 aug 2011: (!) changed some C zlib related function names. +*) 16 aug 2011: made the code less wide (max 120 characters per line). +*) 17 apr 2011: code cleanup. Bugfixes. Convert low to 16-bit per sample colors. +*) 21 feb 2011: fixed compiling for C90. Fixed compiling with sections disabled. +*) 11 dec 2010: encoding is made faster, based on suggestion by Peter Eastman + to optimize long sequences of zeros. +*) 13 nov 2010: added LodePNG_InfoColor_hasPaletteAlpha and + LodePNG_InfoColor_canHaveAlpha functions for convenience. +*) 7 nov 2010: added LodePNG_error_text function to get error code description. +*) 30 okt 2010: made decoding slightly faster +*) 26 okt 2010: (!) changed some C function and struct names (more consistent). + Reorganized the documentation and the declaration order in the header. +*) 08 aug 2010: only changed some comments and external samples. +*) 05 jul 2010: fixed bug thanks to warnings in the new gcc version. +*) 14 mar 2010: fixed bug where too much memory was allocated for char buffers. +*) 02 sep 2008: fixed bug where it could create empty tree that linux apps could + read by ignoring the problem but windows apps couldn't. +*) 06 jun 2008: added more error checks for out of memory cases. +*) 26 apr 2008: added a few more checks here and there to ensure more safety. +*) 06 mar 2008: crash with encoding of strings fixed +*) 02 feb 2008: support for international text chunks added (iTXt) +*) 23 jan 2008: small cleanups, and #defines to divide code in sections +*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor. +*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder. +*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added + Also various fixes, such as in the deflate and the padding bits code. +*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved + filtering code of encoder. +*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A + C++ wrapper around this provides an interface almost identical to before. + Having LodePNG be pure ISO C90 makes it more portable. The C and C++ code + are together in these files but it works both for C and C++ compilers. +*) 29 dec 2007: (!) changed most integer types to unsigned int + other tweaks +*) 30 aug 2007: bug fixed which makes this Borland C++ compatible +*) 09 aug 2007: some VS2005 warnings removed again +*) 21 jul 2007: deflate code placed in new namespace separate from zlib code +*) 08 jun 2007: fixed bug with 2- and 4-bit color, and small interlaced images +*) 04 jun 2007: improved support for Visual Studio 2005: crash with accessing + invalid std::vector element [0] fixed, and level 3 and 4 warnings removed +*) 02 jun 2007: made the encoder add a tag with version by default +*) 27 may 2007: zlib and png code separated (but still in the same file), + simple encoder/decoder functions added for more simple usage cases +*) 19 may 2007: minor fixes, some code cleaning, new error added (error 69), + moved some examples from here to lodepng_examples.cpp +*) 12 may 2007: palette decoding bug fixed +*) 24 apr 2007: changed the license from BSD to the zlib license +*) 11 mar 2007: very simple addition: ability to encode bKGD chunks. +*) 04 mar 2007: (!) tEXt chunk related fixes, and support for encoding + palettized PNG images. Plus little interface change with palette and texts. +*) 03 mar 2007: Made it encode dynamic Huffman shorter with repeat codes. + Fixed a bug where the end code of a block had length 0 in the Huffman tree. +*) 26 feb 2007: Huffman compression with dynamic trees (BTYPE 2) now implemented + and supported by the encoder, resulting in smaller PNGs at the output. +*) 27 jan 2007: Made the Adler-32 test faster so that a timewaste is gone. +*) 24 jan 2007: gave encoder an error interface. Added color conversion from any + greyscale type to 8-bit greyscale with or without alpha. +*) 21 jan 2007: (!) Totally changed the interface. It allows more color types + to convert to and is more uniform. See the manual for how it works now. +*) 07 jan 2007: Some cleanup & fixes, and a few changes over the last days: + encode/decode custom tEXt chunks, separate classes for zlib & deflate, and + at last made the decoder give errors for incorrect Adler32 or Crc. +*) 01 jan 2007: Fixed bug with encoding PNGs with less than 8 bits per channel. +*) 29 dec 2006: Added support for encoding images without alpha channel, and + cleaned out code as well as making certain parts faster. +*) 28 dec 2006: Added "Settings" to the encoder. +*) 26 dec 2006: The encoder now does LZ77 encoding and produces much smaller files now. + Removed some code duplication in the decoder. Fixed little bug in an example. +*) 09 dec 2006: (!) Placed output parameters of public functions as first parameter. + Fixed a bug of the decoder with 16-bit per color. +*) 15 okt 2006: Changed documentation structure +*) 09 okt 2006: Encoder class added. It encodes a valid PNG image from the + given image buffer, however for now it's not compressed. +*) 08 sep 2006: (!) Changed to interface with a Decoder class +*) 30 jul 2006: (!) LodePNG_InfoPng , width and height are now retrieved in different + way. Renamed decodePNG to decodePNGGeneric. +*) 29 jul 2006: (!) Changed the interface: image info is now returned as a + struct of type LodePNG::LodePNG_Info, instead of a vector, which was a bit clumsy. +*) 28 jul 2006: Cleaned the code and added new error checks. + Corrected terminology "deflate" into "inflate". +*) 23 jun 2006: Added SDL example in the documentation in the header, this + example allows easy debugging by displaying the PNG and its transparency. +*) 22 jun 2006: (!) Changed way to obtain error value. Added + loadFile function for convenience. Made decodePNG32 faster. +*) 21 jun 2006: (!) Changed type of info vector to unsigned. + Changed position of palette in info vector. Fixed an important bug that + happened on PNGs with an uncompressed block. +*) 16 jun 2006: Internally changed unsigned into unsigned where + needed, and performed some optimizations. +*) 07 jun 2006: (!) Renamed functions to decodePNG and placed them + in LodePNG namespace. Changed the order of the parameters. Rewrote the + documentation in the header. Renamed files to lodepng.cpp and lodepng.h +*) 22 apr 2006: Optimized and improved some code +*) 07 sep 2005: (!) Changed to std::vector interface +*) 12 aug 2005: Initial release (C++, decoder only) + + +13. contact information +----------------------- + +Feel free to contact me with suggestions, problems, comments, ... concerning +LodePNG. If you encounter a PNG image that doesn't work properly with this +decoder, feel free to send it and I'll use it to find and fix the problem. + +My email address is (puzzle the account and domain together with an @ symbol): +Domain: gmail dot com. +Account: lode dot vandevenne. + + +Copyright (c) 2005-2022 Lode Vandevenne +*/ diff --git a/Quake/main_sdl.c b/Quake/main_sdl.c new file mode 100644 index 0000000..b7221ff --- /dev/null +++ b/Quake/main_sdl.c @@ -0,0 +1,163 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif +#include <stdio.h> +#ifdef __EMSCRIPTEN__ +#include <gl4esinit.h> +#endif + +static void Sys_AtExit (void) +{ + SDL_Quit(); +} + +static void Sys_InitSDL (void) +{ +#if defined(USE_SDL2) + SDL_version v; + SDL_version *sdl_version = &v; + SDL_GetVersion(&v); +#else + const SDL_version *sdl_version = SDL_Linked_Version(); +#endif + + Sys_Printf("Found SDL version %i.%i.%i\n",sdl_version->major,sdl_version->minor,sdl_version->patch); + + if (SDL_Init(0) < 0) { + Sys_Error("Couldn't init SDL: %s", SDL_GetError()); + } + atexit(Sys_AtExit); +} + +#define DEFAULT_MEMORY (256 * 1024 * 1024) // ericw -- was 72MB (64-bit) / 64MB (32-bit) + +static quakeparms_t parms; + +// On OS X we call SDL_main from the launcher, but SDL2 doesn't redefine main +// as SDL_main on OS X anymore, so we do it ourselves. +#if defined(USE_SDL2) && defined(__APPLE__) +#define main SDL_main +#endif + +int main(int argc, char *argv[]) +{ +#ifdef __EMSCRIPTEN__ + initialize_gl4es(); +#endif + int t; + double time, oldtime, newtime; + + host_parms = &parms; + parms.basedir = "."; + + parms.argc = argc; + parms.argv = argv; + + parms.errstate = 0; + + COM_InitArgv(parms.argc, parms.argv); + + isDedicated = (COM_CheckParm("-dedicated") != 0); + + Sys_InitSDL (); + + Sys_Init(); + + Sys_Printf("Initializing QuakeSpasm v%s\n", QUAKESPASM_VER_STRING); + + parms.memsize = DEFAULT_MEMORY; + if (COM_CheckParm("-heapsize")) + { + t = COM_CheckParm("-heapsize") + 1; + if (t < com_argc) + parms.memsize = Q_atoi(com_argv[t]) * 1024; + } + + parms.membase = malloc (parms.memsize); + + if (!parms.membase) + Sys_Error ("Not enough memory free; check disk space\n"); + + Sys_Printf("Host_Init\n"); + Host_Init(); + + oldtime = Sys_DoubleTime(); + if (isDedicated) + { + while (1) + { + newtime = Sys_DoubleTime (); + time = newtime - oldtime; + + while (time < sys_ticrate.value ) + { + SDL_Delay(1); + newtime = Sys_DoubleTime (); + time = newtime - oldtime; + } + + Host_Frame (time); + oldtime = newtime; + } + } + else + while (1) + { + /* If we have no input focus at all, sleep a bit */ + if (!VID_HasMouseOrInputFocus() || cl.paused) + { + SDL_Delay(16); + } + /* If we're minimised, sleep a bit more */ + if (VID_IsMinimized()) + { + scr_skipupdate = 1; + SDL_Delay(32); + } + else + { + scr_skipupdate = 0; + } + newtime = Sys_DoubleTime (); + time = newtime - oldtime; + + Host_Frame (time); + + if (time < sys_throttle.value && !cls.timedemo) + SDL_Delay(1); + + oldtime = newtime; + } + + return 0; +} diff --git a/Quake/mathlib.c b/Quake/mathlib.c new file mode 100644 index 0000000..6dbbd56 --- /dev/null +++ b/Quake/mathlib.c @@ -0,0 +1,474 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// mathlib.c -- math primitives + +#include "quakedef.h" + +vec3_t vec3_origin = {0,0,0}; + +/*-----------------------------------------------------------------*/ + + +void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal ) +{ + float d; + vec3_t n; + float inv_denom; + + inv_denom = 1.0F / DotProduct( normal, normal ); + + d = DotProduct( normal, p ) * inv_denom; + + n[0] = normal[0] * inv_denom; + n[1] = normal[1] * inv_denom; + n[2] = normal[2] * inv_denom; + + dst[0] = p[0] - d * n[0]; + dst[1] = p[1] - d * n[1]; + dst[2] = p[2] - d * n[2]; +} + +/* +** assumes "src" is normalized +*/ +void PerpendicularVector( vec3_t dst, const vec3_t src ) +{ + int pos; + int i; + float minelem = 1.0F; + vec3_t tempvec; + + /* + ** find the smallest magnitude axially aligned vector + */ + for ( pos = 0, i = 0; i < 3; i++ ) + { + if ( fabs( src[i] ) < minelem ) + { + pos = i; + minelem = fabs( src[i] ); + } + } + tempvec[0] = tempvec[1] = tempvec[2] = 0.0F; + tempvec[pos] = 1.0F; + + /* + ** project the point onto the plane defined by src + */ + ProjectPointOnPlane( dst, tempvec, src ); + + /* + ** normalize the result + */ + VectorNormalize( dst ); +} + +//johnfitz -- removed RotatePointAroundVector() becuase it's no longer used and my compiler fucked it up anyway + +/*-----------------------------------------------------------------*/ + + +float anglemod(float a) +{ +#if 0 + if (a >= 0) + a -= 360*(int)(a/360); + else + a += 360*( 1 + (int)(-a/360) ); +#endif + a = (360.0/65536) * ((int)(a*(65536/360.0)) & 65535); + return a; +} + + +/* +================== +BoxOnPlaneSide + +Returns 1, 2, or 1 + 2 +================== +*/ +int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, mplane_t *p) +{ + float dist1, dist2; + int xneg, yneg, zneg; + int sides; + +#if 0 // this is done by the BOX_ON_PLANE_SIDE macro before calling this + // function +// fast axial cases + if (p->type < 3) + { + if (p->dist <= emins[p->type]) + return 1; + if (p->dist >= emaxs[p->type]) + return 2; + return 3; + } +#endif + + xneg = p->signbits & 1; + yneg = (p->signbits >> 1) & 1; + zneg = (p->signbits >> 2) & 1; + + dist1 = p->normal[0] * (xneg ? emins : emaxs)[0] + + p->normal[1] * (yneg ? emins : emaxs)[1] + + p->normal[2] * (zneg ? emins : emaxs)[2]; + dist2 = p->normal[0] * (xneg ? emaxs : emins)[0] + + p->normal[1] * (yneg ? emaxs : emins)[1] + + p->normal[2] * (zneg ? emaxs : emins)[2]; + + if (p->signbits & ~7) + Sys_Error ("BoxOnPlaneSide: Bad signbits"); + +#if 0 + int i; + vec3_t corners[2]; + + for (i=0 ; i<3 ; i++) + { + if (plane->normal[i] < 0) + { + corners[0][i] = emins[i]; + corners[1][i] = emaxs[i]; + } + else + { + corners[1][i] = emins[i]; + corners[0][i] = emaxs[i]; + } + } + dist = DotProduct (plane->normal, corners[0]) - plane->dist; + dist2 = DotProduct (plane->normal, corners[1]) - plane->dist; + sides = 0; + if (dist1 >= 0) + sides = 1; + if (dist2 < 0) + sides |= 2; +#endif + + sides = 0; + if (dist1 >= p->dist) + sides = 1; + if (dist2 < p->dist) + sides |= 2; + +#ifdef PARANOID + if (sides == 0) + Sys_Error ("BoxOnPlaneSide: sides==0"); +#endif + + return sides; +} + +//johnfitz -- the opposite of AngleVectors. this takes forward and generates pitch yaw roll +//TODO: take right and up vectors to properly set yaw and roll +void VectorAngles (const vec3_t forward, vec3_t angles) +{ + vec3_t temp; + + temp[0] = forward[0]; + temp[1] = forward[1]; + temp[2] = 0; + angles[PITCH] = -atan2(forward[2], VectorLength(temp)) / M_PI_DIV_180; + angles[YAW] = atan2(forward[1], forward[0]) / M_PI_DIV_180; + angles[ROLL] = 0; +} + +void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up) +{ + float angle; + float sr, sp, sy, cr, cp, cy; + + angle = angles[YAW] * (M_PI*2 / 360); + sy = sin(angle); + cy = cos(angle); + angle = angles[PITCH] * (M_PI*2 / 360); + sp = sin(angle); + cp = cos(angle); + angle = angles[ROLL] * (M_PI*2 / 360); + sr = sin(angle); + cr = cos(angle); + + forward[0] = cp*cy; + forward[1] = cp*sy; + forward[2] = -sp; + right[0] = (-1*sr*sp*cy+-1*cr*-sy); + right[1] = (-1*sr*sp*sy+-1*cr*cy); + right[2] = -1*sr*cp; + up[0] = (cr*sp*cy+-sr*-sy); + up[1] = (cr*sp*sy+-sr*cy); + up[2] = cr*cp; +} + +int VectorCompare (vec3_t v1, vec3_t v2) +{ + int i; + + for (i=0 ; i<3 ; i++) + if (v1[i] != v2[i]) + return 0; + + return 1; +} + +void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc) +{ + vecc[0] = veca[0] + scale*vecb[0]; + vecc[1] = veca[1] + scale*vecb[1]; + vecc[2] = veca[2] + scale*vecb[2]; +} + + +vec_t _DotProduct (vec3_t v1, vec3_t v2) +{ + return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; +} + +void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out) +{ + out[0] = veca[0]-vecb[0]; + out[1] = veca[1]-vecb[1]; + out[2] = veca[2]-vecb[2]; +} + +void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out) +{ + out[0] = veca[0]+vecb[0]; + out[1] = veca[1]+vecb[1]; + out[2] = veca[2]+vecb[2]; +} + +void _VectorCopy (vec3_t in, vec3_t out) +{ + out[0] = in[0]; + out[1] = in[1]; + out[2] = in[2]; +} + +void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross) +{ + cross[0] = v1[1]*v2[2] - v1[2]*v2[1]; + cross[1] = v1[2]*v2[0] - v1[0]*v2[2]; + cross[2] = v1[0]*v2[1] - v1[1]*v2[0]; +} + +vec_t VectorLength(vec3_t v) +{ + return sqrt(DotProduct(v,v)); +} + +float VectorNormalize (vec3_t v) +{ + float length, ilength; + + length = sqrt(DotProduct(v,v)); + + if (length) + { + ilength = 1/length; + v[0] *= ilength; + v[1] *= ilength; + v[2] *= ilength; + } + + return length; +} + +void VectorInverse (vec3_t v) +{ + v[0] = -v[0]; + v[1] = -v[1]; + v[2] = -v[2]; +} + +void VectorScale (vec3_t in, vec_t scale, vec3_t out) +{ + out[0] = in[0]*scale; + out[1] = in[1]*scale; + out[2] = in[2]*scale; +} + + +int Q_log2(int val) +{ + int answer=0; + while (val>>=1) + answer++; + return answer; +} + + +/* +================ +R_ConcatRotations +================ +*/ +void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]) +{ + out[0][0] = in1[0][0] * in2[0][0] + in1[0][1] * in2[1][0] + + in1[0][2] * in2[2][0]; + out[0][1] = in1[0][0] * in2[0][1] + in1[0][1] * in2[1][1] + + in1[0][2] * in2[2][1]; + out[0][2] = in1[0][0] * in2[0][2] + in1[0][1] * in2[1][2] + + in1[0][2] * in2[2][2]; + out[1][0] = in1[1][0] * in2[0][0] + in1[1][1] * in2[1][0] + + in1[1][2] * in2[2][0]; + out[1][1] = in1[1][0] * in2[0][1] + in1[1][1] * in2[1][1] + + in1[1][2] * in2[2][1]; + out[1][2] = in1[1][0] * in2[0][2] + in1[1][1] * in2[1][2] + + in1[1][2] * in2[2][2]; + out[2][0] = in1[2][0] * in2[0][0] + in1[2][1] * in2[1][0] + + in1[2][2] * in2[2][0]; + out[2][1] = in1[2][0] * in2[0][1] + in1[2][1] * in2[1][1] + + in1[2][2] * in2[2][1]; + out[2][2] = in1[2][0] * in2[0][2] + in1[2][1] * in2[1][2] + + in1[2][2] * in2[2][2]; +} + + +/* +================ +R_ConcatTransforms +================ +*/ +void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]) +{ + out[0][0] = in1[0][0] * in2[0][0] + in1[0][1] * in2[1][0] + + in1[0][2] * in2[2][0]; + out[0][1] = in1[0][0] * in2[0][1] + in1[0][1] * in2[1][1] + + in1[0][2] * in2[2][1]; + out[0][2] = in1[0][0] * in2[0][2] + in1[0][1] * in2[1][2] + + in1[0][2] * in2[2][2]; + out[0][3] = in1[0][0] * in2[0][3] + in1[0][1] * in2[1][3] + + in1[0][2] * in2[2][3] + in1[0][3]; + out[1][0] = in1[1][0] * in2[0][0] + in1[1][1] * in2[1][0] + + in1[1][2] * in2[2][0]; + out[1][1] = in1[1][0] * in2[0][1] + in1[1][1] * in2[1][1] + + in1[1][2] * in2[2][1]; + out[1][2] = in1[1][0] * in2[0][2] + in1[1][1] * in2[1][2] + + in1[1][2] * in2[2][2]; + out[1][3] = in1[1][0] * in2[0][3] + in1[1][1] * in2[1][3] + + in1[1][2] * in2[2][3] + in1[1][3]; + out[2][0] = in1[2][0] * in2[0][0] + in1[2][1] * in2[1][0] + + in1[2][2] * in2[2][0]; + out[2][1] = in1[2][0] * in2[0][1] + in1[2][1] * in2[1][1] + + in1[2][2] * in2[2][1]; + out[2][2] = in1[2][0] * in2[0][2] + in1[2][1] * in2[1][2] + + in1[2][2] * in2[2][2]; + out[2][3] = in1[2][0] * in2[0][3] + in1[2][1] * in2[1][3] + + in1[2][2] * in2[2][3] + in1[2][3]; +} + + +/* +=================== +FloorDivMod + +Returns mathematically correct (floor-based) quotient and remainder for +numer and denom, both of which should contain no fractional part. The +quotient must fit in 32 bits. +==================== +*/ + +void FloorDivMod (double numer, double denom, int *quotient, + int *rem) +{ + int q, r; + double x; + +#ifndef PARANOID + if (denom <= 0.0) + Sys_Error ("FloorDivMod: bad denominator %f\n", denom); + +// if ((floor(numer) != numer) || (floor(denom) != denom)) +// Sys_Error ("FloorDivMod: non-integer numer or denom %f %f\n", +// numer, denom); +#endif + + if (numer >= 0.0) + { + + x = floor(numer / denom); + q = (int)x; + r = (int)floor(numer - (x * denom)); + } + else + { + // + // perform operations with positive values, and fix mod to make floor-based + // + x = floor(-numer / denom); + q = -(int)x; + r = (int)floor(-numer - (x * denom)); + if (r != 0) + { + q--; + r = (int)denom - r; + } + } + + *quotient = q; + *rem = r; +} + + +/* +=================== +GreatestCommonDivisor +==================== +*/ +int GreatestCommonDivisor (int i1, int i2) +{ + if (i1 > i2) + { + if (i2 == 0) + return (i1); + return GreatestCommonDivisor (i2, i1 % i2); + } + else + { + if (i1 == 0) + return (i2); + return GreatestCommonDivisor (i1, i2 % i1); + } +} + + +/* +=================== +Invert24To16 + +Inverts an 8.24 value to a 16.16 value +==================== +*/ + +fixed16_t Invert24To16(fixed16_t val) +{ + if (val < 256) + return (0xFFFFFFFF); + + return (fixed16_t) + (((double)0x10000 * (double)0x1000000 / (double)val) + 0.5); +} + diff --git a/Quake/mathlib.h b/Quake/mathlib.h new file mode 100644 index 0000000..2f5c679 --- /dev/null +++ b/Quake/mathlib.h @@ -0,0 +1,123 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __MATHLIB_H +#define __MATHLIB_H + +// mathlib.h + +#include <math.h> + +#ifndef M_PI +#define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h +#endif + +#define M_PI_DIV_180 (M_PI / 180.0) //johnfitz +#define DEG2RAD(a) ((a) * M_PI_DIV_180) + +struct mplane_s; + +extern vec3_t vec3_origin; + +#define nanmask (255 << 23) /* 7F800000 */ +#if 0 /* macro is violating strict aliasing rules */ +#define IS_NAN(x) (((*(int *) (char *) &x) & nanmask) == nanmask) +#else +static inline int IS_NAN (float x) { + union { float f; int i; } num; + num.f = x; + return ((num.i & nanmask) == nanmask); +} +#endif + +#define Q_rint(x) ((x) > 0 ? (int)((x) + 0.5) : (int)((x) - 0.5)) //johnfitz -- from joequake + +#define DotProduct(x,y) ((x)[0]*(y)[0]+(x)[1]*(y)[1]+(x)[2]*(y)[2]) +#define DoublePrecisionDotProduct(x,y) ((double)(x)[0]*(y)[0]+(double)(x)[1]*(y)[1]+(double)(x)[2]*(y)[2]) +#define VectorSubtract(a,b,c) {(c)[0]=(a)[0]-(b)[0];(c)[1]=(a)[1]-(b)[1];(c)[2]=(a)[2]-(b)[2];} +#define VectorAdd(a,b,c) {(c)[0]=(a)[0]+(b)[0];(c)[1]=(a)[1]+(b)[1];(c)[2]=(a)[2]+(b)[2];} +#define VectorCopy(a,b) {(b)[0]=(a)[0];(b)[1]=(a)[1];(b)[2]=(a)[2];} + +//johnfitz -- courtesy of lordhavoc +// QuakeSpasm: To avoid strict aliasing violations, use a float/int union instead of type punning. +#define VectorNormalizeFast(_v)\ +{\ + union { float f; int i; } _y, _number;\ + _number.f = DotProduct((_v), (_v));\ + if (_number.f != 0.0)\ + {\ + _y.i = 0x5f3759df - (_number.i >> 1);\ + _y.f = _y.f * (1.5f - (_number.f * 0.5f * _y.f * _y.f));\ + VectorScale((_v), _y.f, (_v));\ + }\ +} + +void TurnVector (vec3_t out, const vec3_t forward, const vec3_t side, float angle); //johnfitz +void VectorAngles (const vec3_t forward, vec3_t angles); //johnfitz + +void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc); + +vec_t _DotProduct (vec3_t v1, vec3_t v2); +void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out); +void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out); +void _VectorCopy (vec3_t in, vec3_t out); + +int VectorCompare (vec3_t v1, vec3_t v2); +vec_t VectorLength (vec3_t v); +void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross); +float VectorNormalize (vec3_t v); // returns vector length +void VectorInverse (vec3_t v); +void VectorScale (vec3_t in, vec_t scale, vec3_t out); +int Q_log2(int val); + +void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]); +void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]); + +void FloorDivMod (double numer, double denom, int *quotient, + int *rem); +fixed16_t Invert24To16(fixed16_t val); +int GreatestCommonDivisor (int i1, int i2); + +void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up); +int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct mplane_s *plane); +float anglemod(float a); + + +#define BOX_ON_PLANE_SIDE(emins, emaxs, p) \ + (((p)->type < 3)? \ + ( \ + ((p)->dist <= (emins)[(p)->type])? \ + 1 \ + : \ + ( \ + ((p)->dist >= (emaxs)[(p)->type])?\ + 2 \ + : \ + 3 \ + ) \ + ) \ + : \ + BoxOnPlaneSide( (emins), (emaxs), (p))) + +#endif /* __MATHLIB_H */ + diff --git a/Quake/menu.c b/Quake/menu.c new file mode 100644 index 0000000..9463cbb --- /dev/null +++ b/Quake/menu.c @@ -0,0 +1,2794 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#include "bgmusic.h" + +void (*vid_menucmdfn)(void); //johnfitz +void (*vid_menudrawfn)(void); +void (*vid_menukeyfn)(int key); + +enum m_state_e m_state; + +void M_Menu_Main_f (void); + void M_Menu_SinglePlayer_f (void); + void M_Menu_Load_f (void); + void M_Menu_Save_f (void); + void M_Menu_MultiPlayer_f (void); + void M_Menu_Setup_f (void); + void M_Menu_Net_f (void); + void M_Menu_LanConfig_f (void); + void M_Menu_GameOptions_f (void); + void M_Menu_Search_f (void); + void M_Menu_ServerList_f (void); + void M_Menu_Options_f (void); + void M_Menu_Keys_f (void); + void M_Menu_Video_f (void); + void M_Menu_Help_f (void); + void M_Menu_Quit_f (void); + +void M_Main_Draw (void); + void M_SinglePlayer_Draw (void); + void M_Load_Draw (void); + void M_Save_Draw (void); + void M_MultiPlayer_Draw (void); + void M_Setup_Draw (void); + void M_Net_Draw (void); + void M_LanConfig_Draw (void); + void M_GameOptions_Draw (void); + void M_Search_Draw (void); + void M_ServerList_Draw (void); + void M_Options_Draw (void); + void M_Keys_Draw (void); + void M_Video_Draw (void); + void M_Help_Draw (void); + void M_Quit_Draw (void); + +void M_Main_Key (int key); + void M_SinglePlayer_Key (int key); + void M_Load_Key (int key); + void M_Save_Key (int key); + void M_MultiPlayer_Key (int key); + void M_Setup_Key (int key); + void M_Net_Key (int key); + void M_LanConfig_Key (int key); + void M_GameOptions_Key (int key); + void M_Search_Key (int key); + void M_ServerList_Key (int key); + void M_Options_Key (int key); + void M_Keys_Key (int key); + void M_Video_Key (int key); + void M_Help_Key (int key); + void M_Quit_Key (int key); + +qboolean m_entersound; // play after drawing a frame, so caching + // won't disrupt the sound +qboolean m_recursiveDraw; + +enum m_state_e m_return_state; +qboolean m_return_onerror; +char m_return_reason [32]; + +#define StartingGame (m_multiplayer_cursor == 1) +#define JoiningGame (m_multiplayer_cursor == 0) +#define IPXConfig (m_net_cursor == 0) +#define TCPIPConfig (m_net_cursor == 1) + +void M_ConfigureNetSubsystem(void); + +/* +================ +M_DrawCharacter + +Draws one solid graphics character +================ +*/ +void M_DrawCharacter (int cx, int line, int num) +{ + Draw_Character (cx, line, num); +} + +void M_Print (int cx, int cy, const char *str) +{ + while (*str) + { + M_DrawCharacter (cx, cy, (*str)+128); + str++; + cx += 8; + } +} + +void M_PrintWhite (int cx, int cy, const char *str) +{ + while (*str) + { + M_DrawCharacter (cx, cy, *str); + str++; + cx += 8; + } +} + +void M_DrawTransPic (int x, int y, qpic_t *pic) +{ + Draw_Pic (x, y, pic); //johnfitz -- simplified becuase centering is handled elsewhere +} + +void M_DrawPic (int x, int y, qpic_t *pic) +{ + Draw_Pic (x, y, pic); //johnfitz -- simplified becuase centering is handled elsewhere +} + +void M_DrawTransPicTranslate (int x, int y, qpic_t *pic, int top, int bottom) //johnfitz -- more parameters +{ + Draw_TransPicTranslate (x, y, pic, top, bottom); //johnfitz -- simplified becuase centering is handled elsewhere +} + +void M_DrawTextBox (int x, int y, int width, int lines) +{ + qpic_t *p; + int cx, cy; + int n; + + // draw left side + cx = x; + cy = y; + p = Draw_CachePic ("gfx/box_tl.lmp"); + M_DrawTransPic (cx, cy, p); + p = Draw_CachePic ("gfx/box_ml.lmp"); + for (n = 0; n < lines; n++) + { + cy += 8; + M_DrawTransPic (cx, cy, p); + } + p = Draw_CachePic ("gfx/box_bl.lmp"); + M_DrawTransPic (cx, cy+8, p); + + // draw middle + cx += 8; + while (width > 0) + { + cy = y; + p = Draw_CachePic ("gfx/box_tm.lmp"); + M_DrawTransPic (cx, cy, p); + p = Draw_CachePic ("gfx/box_mm.lmp"); + for (n = 0; n < lines; n++) + { + cy += 8; + if (n == 1) + p = Draw_CachePic ("gfx/box_mm2.lmp"); + M_DrawTransPic (cx, cy, p); + } + p = Draw_CachePic ("gfx/box_bm.lmp"); + M_DrawTransPic (cx, cy+8, p); + width -= 2; + cx += 16; + } + + // draw right side + cy = y; + p = Draw_CachePic ("gfx/box_tr.lmp"); + M_DrawTransPic (cx, cy, p); + p = Draw_CachePic ("gfx/box_mr.lmp"); + for (n = 0; n < lines; n++) + { + cy += 8; + M_DrawTransPic (cx, cy, p); + } + p = Draw_CachePic ("gfx/box_br.lmp"); + M_DrawTransPic (cx, cy+8, p); +} + +//============================================================================= + +int m_save_demonum; + +/* +================ +M_ToggleMenu_f +================ +*/ +void M_ToggleMenu_f (void) +{ + m_entersound = true; + + if (key_dest == key_menu) + { + if (m_state != m_main) + { + M_Menu_Main_f (); + return; + } + + IN_Activate(); + key_dest = key_game; + m_state = m_none; + return; + } + if (key_dest == key_console) + { + Con_ToggleConsole_f (); + } + else + { + M_Menu_Main_f (); + } +} + + +//============================================================================= +/* MAIN MENU */ + +int m_main_cursor; +#define MAIN_ITEMS 5 + + +void M_Menu_Main_f (void) +{ + if (key_dest != key_menu) + { + m_save_demonum = cls.demonum; + cls.demonum = -1; + } + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_main; + m_entersound = true; +} + + +void M_Main_Draw (void) +{ + int f; + qpic_t *p; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/ttl_main.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + M_DrawTransPic (72, 32, Draw_CachePic ("gfx/mainmenu.lmp") ); + + f = (int)(realtime * 10)%6; + + M_DrawTransPic (54, 32 + m_main_cursor * 20,Draw_CachePic( va("gfx/menudot%i.lmp", f+1 ) ) ); +} + + +void M_Main_Key (int key) +{ + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + IN_Activate(); + key_dest = key_game; + m_state = m_none; + cls.demonum = m_save_demonum; + if (!fitzmode && !cl_startdemos.value) /* QuakeSpasm customization: */ + break; + if (cls.demonum != -1 && !cls.demoplayback && cls.state != ca_connected) + CL_NextDemo (); + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + if (++m_main_cursor >= MAIN_ITEMS) + m_main_cursor = 0; + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + if (--m_main_cursor < 0) + m_main_cursor = MAIN_ITEMS - 1; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_entersound = true; + + switch (m_main_cursor) + { + case 0: + M_Menu_SinglePlayer_f (); + break; + + case 1: + M_Menu_MultiPlayer_f (); + break; + + case 2: + M_Menu_Options_f (); + break; + + case 3: + M_Menu_Help_f (); + break; + + case 4: + M_Menu_Quit_f (); + break; + } + } +} + +//============================================================================= +/* SINGLE PLAYER MENU */ + +int m_singleplayer_cursor; +#define SINGLEPLAYER_ITEMS 3 + + +void M_Menu_SinglePlayer_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_singleplayer; + m_entersound = true; +} + + +void M_SinglePlayer_Draw (void) +{ + int f; + qpic_t *p; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/ttl_sgl.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + M_DrawTransPic (72, 32, Draw_CachePic ("gfx/sp_menu.lmp") ); + + f = (int)(realtime * 10)%6; + + M_DrawTransPic (54, 32 + m_singleplayer_cursor * 20,Draw_CachePic( va("gfx/menudot%i.lmp", f+1 ) ) ); +} + + +void M_SinglePlayer_Key (int key) +{ + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Main_f (); + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + if (++m_singleplayer_cursor >= SINGLEPLAYER_ITEMS) + m_singleplayer_cursor = 0; + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + if (--m_singleplayer_cursor < 0) + m_singleplayer_cursor = SINGLEPLAYER_ITEMS - 1; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_entersound = true; + + switch (m_singleplayer_cursor) + { + case 0: + if (sv.active) + if (!SCR_ModalMessage("Are you sure you want to\nstart a new game? (y/n)\n", 0.0f)) + break; + IN_Activate(); + key_dest = key_game; + if (sv.active) + Cbuf_AddText ("disconnect\n"); + Cbuf_AddText ("maxplayers 1\n"); + Cbuf_AddText ("deathmatch 0\n"); //johnfitz + Cbuf_AddText ("coop 0\n"); //johnfitz + Cbuf_AddText ("map start\n"); + break; + + case 1: + M_Menu_Load_f (); + break; + + case 2: + M_Menu_Save_f (); + break; + } + } +} + +//============================================================================= +/* LOAD/SAVE MENU */ + +int load_cursor; // 0 < load_cursor < MAX_SAVEGAMES + +#define MAX_SAVEGAMES 20 /* johnfitz -- increased from 12 */ +char m_filenames[MAX_SAVEGAMES][SAVEGAME_COMMENT_LENGTH+1]; +int loadable[MAX_SAVEGAMES]; + +void M_ScanSaves (void) +{ + int i, j; + char name[MAX_OSPATH]; + FILE *f; + int version; + + for (i = 0; i < MAX_SAVEGAMES; i++) + { + strcpy (m_filenames[i], "--- UNUSED SLOT ---"); + loadable[i] = false; + q_snprintf (name, sizeof(name), "%s/s%i.sav", com_gamedir, i); + f = fopen (name, "r"); + if (!f) { + continue; + } + if (fscanf(f, "%i\n", &version) != 1 || + fscanf(f, "%79s\n", name) != 1) { + fclose(f); + continue; + } + q_strlcpy (m_filenames[i], name, SAVEGAME_COMMENT_LENGTH+1); + + // change _ back to space + for (j = 0; j < SAVEGAME_COMMENT_LENGTH; j++) + { + if (m_filenames[i][j] == '_') + m_filenames[i][j] = ' '; + } + loadable[i] = true; + fclose (f); + } +} + +void M_Menu_Load_f (void) +{ + m_entersound = true; + m_state = m_load; + + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + M_ScanSaves (); +} + + +void M_Menu_Save_f (void) +{ + if (!sv.active) + return; + if (cl.intermission) + return; + if (svs.maxclients != 1) + return; + m_entersound = true; + m_state = m_save; + + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + M_ScanSaves (); +} + + +void M_Load_Draw (void) +{ + int i; + qpic_t *p; + + p = Draw_CachePic ("gfx/p_load.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + for (i = 0; i < MAX_SAVEGAMES; i++) + M_Print (16, 32 + 8*i, m_filenames[i]); + +// line cursor + M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(realtime*4)&1)); +} + + +void M_Save_Draw (void) +{ + int i; + qpic_t *p; + + p = Draw_CachePic ("gfx/p_save.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + for (i = 0; i < MAX_SAVEGAMES; i++) + M_Print (16, 32 + 8*i, m_filenames[i]); + +// line cursor + M_DrawCharacter (8, 32 + load_cursor*8, 12+((int)(realtime*4)&1)); +} + + +void M_Load_Key (int k) +{ + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_SinglePlayer_f (); + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + S_LocalSound ("misc/menu2.wav"); + if (!loadable[load_cursor]) + return; + m_state = m_none; + key_dest = key_game; + + // Host_Loadgame_f can't bring up the loading plaque because too much + // stack space has been used, so do it now + SCR_BeginLoadingPlaque (); + + // issue the load command + Cbuf_AddText (va ("load s%i\n", load_cursor) ); + return; + + case K_UPARROW: + case K_LEFTARROW: + S_LocalSound ("misc/menu1.wav"); + load_cursor--; + if (load_cursor < 0) + load_cursor = MAX_SAVEGAMES-1; + break; + + case K_DOWNARROW: + case K_RIGHTARROW: + S_LocalSound ("misc/menu1.wav"); + load_cursor++; + if (load_cursor >= MAX_SAVEGAMES) + load_cursor = 0; + break; + } +} + + +void M_Save_Key (int k) +{ + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_SinglePlayer_f (); + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_state = m_none; + IN_Activate(); + key_dest = key_game; + Cbuf_AddText (va("save s%i\n", load_cursor)); + return; + + case K_UPARROW: + case K_LEFTARROW: + S_LocalSound ("misc/menu1.wav"); + load_cursor--; + if (load_cursor < 0) + load_cursor = MAX_SAVEGAMES-1; + break; + + case K_DOWNARROW: + case K_RIGHTARROW: + S_LocalSound ("misc/menu1.wav"); + load_cursor++; + if (load_cursor >= MAX_SAVEGAMES) + load_cursor = 0; + break; + } +} + +//============================================================================= +/* MULTIPLAYER MENU */ + +int m_multiplayer_cursor; +#define MULTIPLAYER_ITEMS 3 + + +void M_Menu_MultiPlayer_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_multiplayer; + m_entersound = true; +} + + +void M_MultiPlayer_Draw (void) +{ + int f; + qpic_t *p; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/p_multi.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + M_DrawTransPic (72, 32, Draw_CachePic ("gfx/mp_menu.lmp") ); + + f = (int)(realtime * 10)%6; + + M_DrawTransPic (54, 32 + m_multiplayer_cursor * 20,Draw_CachePic( va("gfx/menudot%i.lmp", f+1 ) ) ); + + if (ipxAvailable || tcpipAvailable) + return; + M_PrintWhite ((320/2) - ((27*8)/2), 148, "No Communications Available"); +} + + +void M_MultiPlayer_Key (int key) +{ + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Main_f (); + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + if (++m_multiplayer_cursor >= MULTIPLAYER_ITEMS) + m_multiplayer_cursor = 0; + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + if (--m_multiplayer_cursor < 0) + m_multiplayer_cursor = MULTIPLAYER_ITEMS - 1; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_entersound = true; + switch (m_multiplayer_cursor) + { + case 0: + if (ipxAvailable || tcpipAvailable) + M_Menu_Net_f (); + break; + + case 1: + if (ipxAvailable || tcpipAvailable) + M_Menu_Net_f (); + break; + + case 2: + M_Menu_Setup_f (); + break; + } + } +} + +//============================================================================= +/* SETUP MENU */ + +int setup_cursor = 4; +int setup_cursor_table[] = {40, 56, 80, 104, 140}; + +char setup_hostname[16]; +char setup_myname[16]; +int setup_oldtop; +int setup_oldbottom; +int setup_top; +int setup_bottom; + +#define NUM_SETUP_CMDS 5 + +void M_Menu_Setup_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_setup; + m_entersound = true; + Q_strcpy(setup_myname, cl_name.string); + Q_strcpy(setup_hostname, hostname.string); + setup_top = setup_oldtop = ((int)cl_color.value) >> 4; + setup_bottom = setup_oldbottom = ((int)cl_color.value) & 15; +} + + +void M_Setup_Draw (void) +{ + qpic_t *p; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/p_multi.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + M_Print (64, 40, "Hostname"); + M_DrawTextBox (160, 32, 16, 1); + M_Print (168, 40, setup_hostname); + + M_Print (64, 56, "Your name"); + M_DrawTextBox (160, 48, 16, 1); + M_Print (168, 56, setup_myname); + + M_Print (64, 80, "Shirt color"); + M_Print (64, 104, "Pants color"); + + M_DrawTextBox (64, 140-8, 14, 1); + M_Print (72, 140, "Accept Changes"); + + p = Draw_CachePic ("gfx/bigbox.lmp"); + M_DrawTransPic (160, 64, p); + p = Draw_CachePic ("gfx/menuplyr.lmp"); + M_DrawTransPicTranslate (172, 72, p, setup_top, setup_bottom); + + M_DrawCharacter (56, setup_cursor_table [setup_cursor], 12+((int)(realtime*4)&1)); + + if (setup_cursor == 0) + M_DrawCharacter (168 + 8*strlen(setup_hostname), setup_cursor_table [setup_cursor], 10+((int)(realtime*4)&1)); + + if (setup_cursor == 1) + M_DrawCharacter (168 + 8*strlen(setup_myname), setup_cursor_table [setup_cursor], 10+((int)(realtime*4)&1)); +} + + +void M_Setup_Key (int k) +{ + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_MultiPlayer_f (); + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + setup_cursor--; + if (setup_cursor < 0) + setup_cursor = NUM_SETUP_CMDS-1; + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + setup_cursor++; + if (setup_cursor >= NUM_SETUP_CMDS) + setup_cursor = 0; + break; + + case K_LEFTARROW: + if (setup_cursor < 2) + return; + S_LocalSound ("misc/menu3.wav"); + if (setup_cursor == 2) + setup_top = setup_top - 1; + if (setup_cursor == 3) + setup_bottom = setup_bottom - 1; + break; + case K_RIGHTARROW: + if (setup_cursor < 2) + return; +forward: + S_LocalSound ("misc/menu3.wav"); + if (setup_cursor == 2) + setup_top = setup_top + 1; + if (setup_cursor == 3) + setup_bottom = setup_bottom + 1; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + if (setup_cursor == 0 || setup_cursor == 1) + return; + + if (setup_cursor == 2 || setup_cursor == 3) + goto forward; + + // setup_cursor == 4 (OK) + if (Q_strcmp(cl_name.string, setup_myname) != 0) + Cbuf_AddText ( va ("name \"%s\"\n", setup_myname) ); + if (Q_strcmp(hostname.string, setup_hostname) != 0) + Cvar_Set("hostname", setup_hostname); + if (setup_top != setup_oldtop || setup_bottom != setup_oldbottom) + Cbuf_AddText( va ("color %i %i\n", setup_top, setup_bottom) ); + m_entersound = true; + M_Menu_MultiPlayer_f (); + break; + + case K_BACKSPACE: + if (setup_cursor == 0) + { + if (strlen(setup_hostname)) + setup_hostname[strlen(setup_hostname)-1] = 0; + } + + if (setup_cursor == 1) + { + if (strlen(setup_myname)) + setup_myname[strlen(setup_myname)-1] = 0; + } + break; + } + + if (setup_top > 13) + setup_top = 0; + if (setup_top < 0) + setup_top = 13; + if (setup_bottom > 13) + setup_bottom = 0; + if (setup_bottom < 0) + setup_bottom = 13; +} + + +void M_Setup_Char (int k) +{ + int l; + + switch (setup_cursor) + { + case 0: + l = strlen(setup_hostname); + if (l < 15) + { + setup_hostname[l+1] = 0; + setup_hostname[l] = k; + } + break; + case 1: + l = strlen(setup_myname); + if (l < 15) + { + setup_myname[l+1] = 0; + setup_myname[l] = k; + } + break; + } +} + + +qboolean M_Setup_TextEntry (void) +{ + return (setup_cursor == 0 || setup_cursor == 1); +} + +//============================================================================= +/* NET MENU */ + +int m_net_cursor; +int m_net_items; + +const char *net_helpMessage [] = +{ +/* .........1.........2.... */ + " Novell network LANs ", + " or Windows 95 DOS-box. ", + " ", + "(LAN=Local Area Network)", + + " Commonly used to play ", + " over the Internet, but ", + " also used on a Local ", + " Area Network. " +}; + +void M_Menu_Net_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_net; + m_entersound = true; + m_net_items = 2; + + if (m_net_cursor >= m_net_items) + m_net_cursor = 0; + m_net_cursor--; + M_Net_Key (K_DOWNARROW); +} + + +void M_Net_Draw (void) +{ + int f; + qpic_t *p; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/p_multi.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + f = 32; + + if (ipxAvailable) + p = Draw_CachePic ("gfx/netmen3.lmp"); + else + p = Draw_CachePic ("gfx/dim_ipx.lmp"); + M_DrawTransPic (72, f, p); + + f += 19; + if (tcpipAvailable) + p = Draw_CachePic ("gfx/netmen4.lmp"); + else + p = Draw_CachePic ("gfx/dim_tcp.lmp"); + M_DrawTransPic (72, f, p); + + f = (320-26*8)/2; + M_DrawTextBox (f, 96, 24, 4); + f += 8; + M_Print (f, 104, net_helpMessage[m_net_cursor*4+0]); + M_Print (f, 112, net_helpMessage[m_net_cursor*4+1]); + M_Print (f, 120, net_helpMessage[m_net_cursor*4+2]); + M_Print (f, 128, net_helpMessage[m_net_cursor*4+3]); + + f = (int)(realtime * 10)%6; + M_DrawTransPic (54, 32 + m_net_cursor * 20,Draw_CachePic( va("gfx/menudot%i.lmp", f+1 ) ) ); +} + + +void M_Net_Key (int k) +{ +again: + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_MultiPlayer_f (); + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + if (++m_net_cursor >= m_net_items) + m_net_cursor = 0; + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + if (--m_net_cursor < 0) + m_net_cursor = m_net_items - 1; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_entersound = true; + M_Menu_LanConfig_f (); + break; + } + + if (m_net_cursor == 0 && !ipxAvailable) + goto again; + if (m_net_cursor == 1 && !tcpipAvailable) + goto again; +} + +//============================================================================= +/* OPTIONS MENU */ + +enum +{ + OPT_CUSTOMIZE = 0, + OPT_CONSOLE, // 1 + OPT_DEFAULTS, // 2 + OPT_SCALE, + OPT_SCRSIZE, + OPT_GAMMA, + OPT_CONTRAST, + OPT_MOUSESPEED, + OPT_SBALPHA, + OPT_SNDVOL, + OPT_MUSICVOL, + OPT_MUSICEXT, + OPT_ALWAYRUN, + OPT_INVMOUSE, + OPT_ALWAYSMLOOK, + OPT_LOOKSPRING, + OPT_LOOKSTRAFE, +//#ifdef _WIN32 +// OPT_USEMOUSE, +//#endif + OPT_VIDEO, // This is the last before OPTIONS_ITEMS + OPTIONS_ITEMS +}; + +enum +{ + ALWAYSRUN_OFF = 0, + ALWAYSRUN_VANILLA, + ALWAYSRUN_QUAKESPASM, + ALWAYSRUN_ITEMS +}; + +#define SLIDER_RANGE 10 + +int options_cursor; + +void M_Menu_Options_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_options; + m_entersound = true; +} + + +void M_AdjustSliders (int dir) +{ + int curr_alwaysrun, target_alwaysrun; + float f, l; + + S_LocalSound ("misc/menu3.wav"); + + switch (options_cursor) + { + case OPT_SCALE: // console and menu scale + l = ((vid.width + 31) / 32) / 10.0; + f = scr_conscale.value + dir * .1; + if (f < 1) f = 1; + else if(f > l) f = l; + Cvar_SetValue ("scr_conscale", f); + Cvar_SetValue ("scr_menuscale", f); + Cvar_SetValue ("scr_sbarscale", f); + break; + case OPT_SCRSIZE: // screen size + f = scr_viewsize.value + dir * 10; + if (f > 120) f = 120; + else if(f < 30) f = 30; + Cvar_SetValue ("viewsize", f); + break; + case OPT_GAMMA: // gamma + f = vid_gamma.value - dir * 0.05; + if (f < 0.5) f = 0.5; + else if (f > 1) f = 1; + Cvar_SetValue ("gamma", f); + break; + case OPT_CONTRAST: // contrast + f = vid_contrast.value + dir * 0.1; + if (f < 1) f = 1; + else if (f > 2) f = 2; + Cvar_SetValue ("contrast", f); + break; + case OPT_MOUSESPEED: // mouse speed + f = sensitivity.value + dir * 0.5; + if (f > 11) f = 11; + else if (f < 1) f = 1; + Cvar_SetValue ("sensitivity", f); + break; + case OPT_SBALPHA: // statusbar alpha + f = scr_sbaralpha.value - dir * 0.05; + if (f < 0) f = 0; + else if (f > 1) f = 1; + Cvar_SetValue ("scr_sbaralpha", f); + break; + case OPT_MUSICVOL: // music volume + f = bgmvolume.value + dir * 0.1; + if (f < 0) f = 0; + else if (f > 1) f = 1; + Cvar_SetValue ("bgmvolume", f); + break; + case OPT_MUSICEXT: // enable external music vs cdaudio + Cvar_Set ("bgm_extmusic", bgm_extmusic.value ? "0" : "1"); + break; + case OPT_SNDVOL: // sfx volume + f = sfxvolume.value + dir * 0.1; + if (f < 0) f = 0; + else if (f > 1) f = 1; + Cvar_SetValue ("volume", f); + break; + + case OPT_ALWAYRUN: // always run + if (cl_alwaysrun.value) + curr_alwaysrun = ALWAYSRUN_QUAKESPASM; + else if (cl_forwardspeed.value > 200) + curr_alwaysrun = ALWAYSRUN_VANILLA; + else + curr_alwaysrun = ALWAYSRUN_OFF; + + target_alwaysrun = (ALWAYSRUN_ITEMS + curr_alwaysrun + dir) % ALWAYSRUN_ITEMS; + + if (target_alwaysrun == ALWAYSRUN_VANILLA) + { + Cvar_SetValue ("cl_alwaysrun", 0); + Cvar_SetValue ("cl_forwardspeed", 400); + Cvar_SetValue ("cl_backspeed", 400); + } + else if (target_alwaysrun == ALWAYSRUN_QUAKESPASM) + { + Cvar_SetValue ("cl_alwaysrun", 1); + Cvar_SetValue ("cl_forwardspeed", 200); + Cvar_SetValue ("cl_backspeed", 200); + } + else // ALWAYSRUN_OFF + { + Cvar_SetValue ("cl_alwaysrun", 0); + Cvar_SetValue ("cl_forwardspeed", 200); + Cvar_SetValue ("cl_backspeed", 200); + } + break; + + case OPT_INVMOUSE: // invert mouse + Cvar_SetValue ("m_pitch", -m_pitch.value); + break; + + case OPT_ALWAYSMLOOK: + if (in_mlook.state & 1) + Cbuf_AddText("-mlook"); + else + Cbuf_AddText("+mlook"); + break; + + case OPT_LOOKSPRING: // lookspring + Cvar_Set ("lookspring", lookspring.value ? "0" : "1"); + break; + + case OPT_LOOKSTRAFE: // lookstrafe + Cvar_Set ("lookstrafe", lookstrafe.value ? "0" : "1"); + break; + } +} + + +void M_DrawSlider (int x, int y, float range, float value, const char *format) +{ + int i; + char buffer[5]; + + if (range < 0) + range = 0; + if (range > 1) + range = 1; + M_DrawCharacter (x-8, y, 128); + for (i = 0; i < SLIDER_RANGE; i++) + M_DrawCharacter (x + i*8, y, 129); + M_DrawCharacter (x+i*8, y, 130); + M_DrawCharacter (x + (SLIDER_RANGE-1)*8 * range, y, 131); + q_snprintf(buffer, 5, format, value); + M_Print (x + (SLIDER_RANGE + 1) * 8, y, buffer); +} + +void M_DrawCheckbox (int x, int y, int on) +{ +#if 0 + if (on) + M_DrawCharacter (x, y, 131); + else + M_DrawCharacter (x, y, 129); +#endif + if (on) + M_Print (x, y, "on"); + else + M_Print (x, y, "off"); +} + +void M_Options_Draw (void) +{ + float r, l; + qpic_t *p; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/p_option.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + // Draw the items in the order of the enum defined above: + // OPT_CUSTOMIZE: + M_Print (16, 32, " Controls"); + // OPT_CONSOLE: + M_Print (16, 32 + 8*OPT_CONSOLE, " Goto console"); + // OPT_DEFAULTS: + M_Print (16, 32 + 8*OPT_DEFAULTS, " Reset config"); + + // OPT_SCALE: + M_Print (16, 32 + 8*OPT_SCALE, " Scale"); + l = (vid.width / 320.0) - 1; + r = l > 0 ? (scr_conscale.value - 1) / l : 0; + M_DrawSlider (220, 32 + 8*OPT_SCALE, r, scr_conscale.value, "%.1f"); + + // OPT_SCRSIZE: + M_Print (16, 32 + 8*OPT_SCRSIZE, " Screen size"); + r = (scr_viewsize.value - 30) / (120 - 30); + M_DrawSlider (220, 32 + 8*OPT_SCRSIZE, r, scr_viewsize.value, "%.0f"); + + // OPT_GAMMA: + M_Print (16, 32 + 8*OPT_GAMMA, " Brightness"); + r = (1.0 - vid_gamma.value) / 0.5; + M_DrawSlider (220, 32 + 8*OPT_GAMMA, r, vid_gamma.value, "%.2f"); + + // OPT_CONTRAST: + M_Print (16, 32 + 8*OPT_CONTRAST, " Contrast"); + r = vid_contrast.value - 1.0; + M_DrawSlider (220, 32 + 8*OPT_CONTRAST, r, vid_contrast.value, "%.1f"); + + // OPT_MOUSESPEED: + M_Print (16, 32 + 8*OPT_MOUSESPEED, " Mouse Speed"); + r = (sensitivity.value - 1)/10; + M_DrawSlider (220, 32 + 8*OPT_MOUSESPEED, r, sensitivity.value, "%.1f"); + + // OPT_SBALPHA: + M_Print (16, 32 + 8*OPT_SBALPHA, " Statusbar alpha"); + r = (1.0 - scr_sbaralpha.value) ; // scr_sbaralpha range is 1.0 to 0.0 + M_DrawSlider (220, 32 + 8*OPT_SBALPHA, r, scr_sbaralpha.value, "%.2f"); + + // OPT_SNDVOL: + M_Print (16, 32 + 8*OPT_SNDVOL, " Sound Volume"); + r = sfxvolume.value; + M_DrawSlider (220, 32 + 8*OPT_SNDVOL, r, sfxvolume.value, "%.1f"); + + // OPT_MUSICVOL: + M_Print (16, 32 + 8*OPT_MUSICVOL, " Music Volume"); + r = bgmvolume.value; + M_DrawSlider (220, 32 + 8*OPT_MUSICVOL, r, bgmvolume.value, "%.1f"); + + // OPT_MUSICEXT: + M_Print (16, 32 + 8*OPT_MUSICEXT, " External Music"); + M_DrawCheckbox (220, 32 + 8*OPT_MUSICEXT, bgm_extmusic.value); + + // OPT_ALWAYRUN: + M_Print (16, 32 + 8*OPT_ALWAYRUN, " Always Run"); + if (cl_alwaysrun.value) + M_Print (220, 32 + 8*OPT_ALWAYRUN, "quakespasm"); + else if (cl_forwardspeed.value > 200.0) + M_Print (220, 32 + 8*OPT_ALWAYRUN, "vanilla"); + else + M_Print (220, 32 + 8*OPT_ALWAYRUN, "off"); + + // OPT_INVMOUSE: + M_Print (16, 32 + 8*OPT_INVMOUSE, " Invert Mouse"); + M_DrawCheckbox (220, 32 + 8*OPT_INVMOUSE, m_pitch.value < 0); + + // OPT_ALWAYSMLOOK: + M_Print (16, 32 + 8*OPT_ALWAYSMLOOK, " Mouse Look"); + M_DrawCheckbox (220, 32 + 8*OPT_ALWAYSMLOOK, in_mlook.state & 1); + + // OPT_LOOKSPRING: + M_Print (16, 32 + 8*OPT_LOOKSPRING, " Lookspring"); + M_DrawCheckbox (220, 32 + 8*OPT_LOOKSPRING, lookspring.value); + + // OPT_LOOKSTRAFE: + M_Print (16, 32 + 8*OPT_LOOKSTRAFE, " Lookstrafe"); + M_DrawCheckbox (220, 32 + 8*OPT_LOOKSTRAFE, lookstrafe.value); + + // OPT_VIDEO: + if (vid_menudrawfn) + M_Print (16, 32 + 8*OPT_VIDEO, " Video Options"); + +// cursor + M_DrawCharacter (200, 32 + options_cursor*8, 12+((int)(realtime*4)&1)); +} + + +void M_Options_Key (int k) +{ + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Main_f (); + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + m_entersound = true; + switch (options_cursor) + { + case OPT_CUSTOMIZE: + M_Menu_Keys_f (); + break; + case OPT_CONSOLE: + m_state = m_none; + Con_ToggleConsole_f (); + break; + case OPT_DEFAULTS: + if (SCR_ModalMessage("This will reset all controls\n" + "and stored cvars. Continue? (y/n)\n", 15.0f)) + { + Cbuf_AddText ("resetcfg\n"); + Cbuf_AddText ("exec default.cfg\n"); + } + break; + case OPT_VIDEO: + M_Menu_Video_f (); + break; + default: + M_AdjustSliders (1); + break; + } + return; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + options_cursor--; + if (options_cursor < 0) + options_cursor = OPTIONS_ITEMS-1; + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + options_cursor++; + if (options_cursor >= OPTIONS_ITEMS) + options_cursor = 0; + break; + + case K_LEFTARROW: + M_AdjustSliders (-1); + break; + + case K_RIGHTARROW: + M_AdjustSliders (1); + break; + } + + if (options_cursor == OPTIONS_ITEMS - 1 && vid_menudrawfn == NULL) + { + if (k == K_UPARROW) + options_cursor = OPTIONS_ITEMS - 2; + else + options_cursor = 0; + } +} + +//============================================================================= +/* KEYS MENU */ + +const char *bindnames[][2] = +{ + {"+attack", "attack"}, + {"impulse 10", "next weapon"}, + {"impulse 12", "prev weapon"}, + {"+jump", "jump / swim up"}, + {"+forward", "walk forward"}, + {"+back", "backpedal"}, + {"+left", "turn left"}, + {"+right", "turn right"}, + {"+speed", "run"}, + {"+moveleft", "step left"}, + {"+moveright", "step right"}, + {"+strafe", "sidestep"}, + {"+lookup", "look up"}, + {"+lookdown", "look down"}, + {"centerview", "center view"}, + {"+mlook", "mouse look"}, + {"+klook", "keyboard look"}, + {"+moveup", "swim up"}, + {"+movedown", "swim down"} +}; + +#define NUMCOMMANDS Q_COUNTOF(bindnames) + +static int keys_cursor; +static qboolean bind_grab; + +void M_Menu_Keys_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_keys; + m_entersound = true; +} + + +void M_FindKeysForCommand (const char *command, int *threekeys) +{ + int count; + int j; + int l; + char *b; + + threekeys[0] = threekeys[1] = threekeys[2] = -1; + l = strlen(command); + count = 0; + + for (j = 0; j < MAX_KEYS; j++) + { + b = keybindings[j]; + if (!b) + continue; + if (!strncmp (b, command, l) ) + { + threekeys[count] = j; + count++; + if (count == 3) + break; + } + } +} + +void M_UnbindCommand (const char *command) +{ + int j; + int l; + char *b; + + l = strlen(command); + + for (j = 0; j < MAX_KEYS; j++) + { + b = keybindings[j]; + if (!b) + continue; + if (!strncmp (b, command, l) ) + Key_SetBinding (j, NULL); + } +} + +extern qpic_t *pic_up, *pic_down; + +void M_Keys_Draw (void) +{ + int i, x, y; + int keys[3]; + const char *name; + qpic_t *p; + + p = Draw_CachePic ("gfx/ttl_cstm.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + if (bind_grab) + M_Print (12, 32, "Press a key or button for this action"); + else + M_Print (18, 32, "Enter to change, backspace to clear"); + +// search for known bindings + for (i = 0; i < (int)NUMCOMMANDS; i++) + { + y = 48 + 8*i; + + M_Print (16, y, bindnames[i][1]); + + M_FindKeysForCommand (bindnames[i][0], keys); + + if (keys[0] == -1) + { + M_Print (140, y, "???"); + } + else + { + name = Key_KeynumToString (keys[0]); + M_Print (140, y, name); + x = strlen(name) * 8; + if (keys[1] != -1) + { + name = Key_KeynumToString (keys[1]); + M_Print (140 + x + 8, y, "or"); + M_Print (140 + x + 32, y, name); + x = x + 32 + strlen(name) * 8; + if (keys[2] != -1) + { + M_Print (140 + x + 8, y, "or"); + M_Print (140 + x + 32, y, Key_KeynumToString (keys[2])); + } + } + } + } + + if (bind_grab) + M_DrawCharacter (130, 48 + keys_cursor*8, '='); + else + M_DrawCharacter (130, 48 + keys_cursor*8, 12+((int)(realtime*4)&1)); +} + + +void M_Keys_Key (int k) +{ + char cmd[80]; + int keys[3]; + + if (bind_grab) + { // defining a key + S_LocalSound ("misc/menu1.wav"); + if ((k != K_ESCAPE) && (k != '`')) + { + sprintf (cmd, "bind \"%s\" \"%s\"\n", Key_KeynumToString (k), bindnames[keys_cursor][0]); + Cbuf_InsertText (cmd); + } + + bind_grab = false; + IN_Deactivate(modestate == MS_WINDOWED); // deactivate because we're returning to the menu + return; + } + + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Options_f (); + break; + + case K_LEFTARROW: + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + keys_cursor--; + if (keys_cursor < 0) + keys_cursor = NUMCOMMANDS-1; + break; + + case K_DOWNARROW: + case K_RIGHTARROW: + S_LocalSound ("misc/menu1.wav"); + keys_cursor++; + if (keys_cursor >= (int)NUMCOMMANDS) + keys_cursor = 0; + break; + + case K_ENTER: // go into bind mode + case K_KP_ENTER: + case K_ABUTTON: + M_FindKeysForCommand (bindnames[keys_cursor][0], keys); + S_LocalSound ("misc/menu2.wav"); + if (keys[2] != -1) + M_UnbindCommand (bindnames[keys_cursor][0]); + bind_grab = true; + IN_Activate(); // activate to allow mouse key binding + break; + + case K_BACKSPACE: // delete bindings + case K_DEL: + S_LocalSound ("misc/menu2.wav"); + M_UnbindCommand (bindnames[keys_cursor][0]); + break; + } +} + +//============================================================================= +/* VIDEO MENU */ + +void M_Menu_Video_f (void) +{ + (*vid_menucmdfn) (); //johnfitz +} + + +void M_Video_Draw (void) +{ + (*vid_menudrawfn) (); +} + + +void M_Video_Key (int key) +{ + (*vid_menukeyfn) (key); +} + +//============================================================================= +/* HELP MENU */ + +int help_page; +#define NUM_HELP_PAGES 6 + + +void M_Menu_Help_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_help; + m_entersound = true; + help_page = 0; +} + + + +void M_Help_Draw (void) +{ + M_DrawPic (0, 0, Draw_CachePic ( va("gfx/help%i.lmp", help_page)) ); +} + + +void M_Help_Key (int key) +{ + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Main_f (); + break; + + case K_UPARROW: + case K_RIGHTARROW: + m_entersound = true; + if (++help_page >= NUM_HELP_PAGES) + help_page = 0; + break; + + case K_DOWNARROW: + case K_LEFTARROW: + m_entersound = true; + if (--help_page < 0) + help_page = NUM_HELP_PAGES-1; + break; + } + +} + +//============================================================================= +/* QUIT MENU */ + +int msgNumber; +enum m_state_e m_quit_prevstate; +qboolean wasInMenus; + +void M_Menu_Quit_f (void) +{ + if (m_state == m_quit) + return; + wasInMenus = (key_dest == key_menu); + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_quit_prevstate = m_state; + m_state = m_quit; + m_entersound = true; + msgNumber = rand()&7; +} + + +void M_Quit_Key (int key) +{ + if (key == K_ESCAPE) + { + if (wasInMenus) + { + m_state = m_quit_prevstate; + m_entersound = true; + } + else + { + IN_Activate(); + key_dest = key_game; + m_state = m_none; + } + } +} + + +void M_Quit_Char (int key) +{ + switch (key) + { + case 'n': + case 'N': + if (wasInMenus) + { + m_state = m_quit_prevstate; + m_entersound = true; + } + else + { + IN_Activate(); + key_dest = key_game; + m_state = m_none; + } + break; + + case 'y': + case 'Y': + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_console; + Host_Quit_f (); + break; + + default: + break; + } + +} + + +qboolean M_Quit_TextEntry (void) +{ + return true; +} + + +void M_Quit_Draw (void) //johnfitz -- modified for new quit message +{ + char msg1[] = "QuakeSpasm " QUAKESPASM_VER_STRING; + char msg2[] = "by Ozkan Sezer,Eric Wasylishen,others"; /* msg2/msg3 are [38] at most */ + char msg3[] = "Press y to quit"; + int boxlen; + + if (wasInMenus) + { + m_state = m_quit_prevstate; + m_recursiveDraw = true; + M_Draw (); + m_state = m_quit; + } + + //okay, this is kind of fucked up. M_DrawTextBox will always act as if + //width is even. Also, the width and lines values are for the interior of the box, + //but the x and y values include the border. + boxlen = (q_max(sizeof(msg1), q_max(sizeof(msg2),sizeof(msg3))) + 1) & ~1; + M_DrawTextBox (160-4*(boxlen+2), 76, boxlen, 4); + + //now do the text + M_Print (160-4*(sizeof(msg1)-1), 88, msg1); + M_Print (160-4*(sizeof(msg2)-1), 96, msg2); + M_PrintWhite (160-4*(sizeof(msg3)-1), 104, msg3); +} + +//============================================================================= +/* LAN CONFIG MENU */ + +int lanConfig_cursor = -1; +int lanConfig_cursor_table [] = {72, 92, 124}; +#define NUM_LANCONFIG_CMDS 3 + +int lanConfig_port; +char lanConfig_portname[6]; +char lanConfig_joinname[22]; + +void M_Menu_LanConfig_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_lanconfig; + m_entersound = true; + if (lanConfig_cursor == -1) + { + if (JoiningGame && TCPIPConfig) + lanConfig_cursor = 2; + else + lanConfig_cursor = 1; + } + if (StartingGame && lanConfig_cursor == 2) + lanConfig_cursor = 1; + lanConfig_port = DEFAULTnet_hostport; + sprintf(lanConfig_portname, "%u", lanConfig_port); + + m_return_onerror = false; + m_return_reason[0] = 0; +} + + +void M_LanConfig_Draw (void) +{ + qpic_t *p; + int basex; + const char *startJoin; + const char *protocol; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/p_multi.lmp"); + basex = (320-p->width)/2; + M_DrawPic (basex, 4, p); + + basex = 72; /* Arcane Dimensions has an oversized gfx/p_multi.lmp */ + + if (StartingGame) + startJoin = "New Game"; + else + startJoin = "Join Game"; + if (IPXConfig) + protocol = "IPX"; + else + protocol = "TCP/IP"; + M_Print (basex, 32, va ("%s - %s", startJoin, protocol)); + basex += 8; + + M_Print (basex, 52, "Address:"); + if (IPXConfig) + M_Print (basex+9*8, 52, my_ipx_address); + else + M_Print (basex+9*8, 52, my_tcpip_address); + + M_Print (basex, lanConfig_cursor_table[0], "Port"); + M_DrawTextBox (basex+8*8, lanConfig_cursor_table[0]-8, 6, 1); + M_Print (basex+9*8, lanConfig_cursor_table[0], lanConfig_portname); + + if (JoiningGame) + { + M_Print (basex, lanConfig_cursor_table[1], "Search for local games..."); + M_Print (basex, 108, "Join game at:"); + M_DrawTextBox (basex+8, lanConfig_cursor_table[2]-8, 22, 1); + M_Print (basex+16, lanConfig_cursor_table[2], lanConfig_joinname); + } + else + { + M_DrawTextBox (basex, lanConfig_cursor_table[1]-8, 2, 1); + M_Print (basex+8, lanConfig_cursor_table[1], "OK"); + } + + M_DrawCharacter (basex-8, lanConfig_cursor_table [lanConfig_cursor], 12+((int)(realtime*4)&1)); + + if (lanConfig_cursor == 0) + M_DrawCharacter (basex+9*8 + 8*strlen(lanConfig_portname), lanConfig_cursor_table [0], 10+((int)(realtime*4)&1)); + + if (lanConfig_cursor == 2) + M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [2], 10+((int)(realtime*4)&1)); + + if (*m_return_reason) + M_PrintWhite (basex, 148, m_return_reason); +} + + +void M_LanConfig_Key (int key) +{ + int l; + + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Net_f (); + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + lanConfig_cursor--; + if (lanConfig_cursor < 0) + lanConfig_cursor = NUM_LANCONFIG_CMDS-1; + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + lanConfig_cursor++; + if (lanConfig_cursor >= NUM_LANCONFIG_CMDS) + lanConfig_cursor = 0; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + if (lanConfig_cursor == 0) + break; + + m_entersound = true; + + M_ConfigureNetSubsystem (); + + if (lanConfig_cursor == 1) + { + if (StartingGame) + { + M_Menu_GameOptions_f (); + break; + } + M_Menu_Search_f(); + break; + } + + if (lanConfig_cursor == 2) + { + m_return_state = m_state; + m_return_onerror = true; + IN_Activate(); + key_dest = key_game; + m_state = m_none; + Cbuf_AddText ( va ("connect \"%s\"\n", lanConfig_joinname) ); + break; + } + + break; + + case K_BACKSPACE: + if (lanConfig_cursor == 0) + { + if (strlen(lanConfig_portname)) + lanConfig_portname[strlen(lanConfig_portname)-1] = 0; + } + + if (lanConfig_cursor == 2) + { + if (strlen(lanConfig_joinname)) + lanConfig_joinname[strlen(lanConfig_joinname)-1] = 0; + } + break; + } + + if (StartingGame && lanConfig_cursor == 2) + { + if (key == K_UPARROW) + lanConfig_cursor = 1; + else + lanConfig_cursor = 0; + } + + l = Q_atoi(lanConfig_portname); + if (l > 65535) + l = lanConfig_port; + else + lanConfig_port = l; + sprintf(lanConfig_portname, "%u", lanConfig_port); +} + + +void M_LanConfig_Char (int key) +{ + int l; + + switch (lanConfig_cursor) + { + case 0: + if (key < '0' || key > '9') + return; + l = strlen(lanConfig_portname); + if (l < 5) + { + lanConfig_portname[l+1] = 0; + lanConfig_portname[l] = key; + } + break; + case 2: + l = strlen(lanConfig_joinname); + if (l < 21) + { + lanConfig_joinname[l+1] = 0; + lanConfig_joinname[l] = key; + } + break; + } +} + + +qboolean M_LanConfig_TextEntry (void) +{ + return (lanConfig_cursor == 0 || lanConfig_cursor == 2); +} + +//============================================================================= +/* GAME OPTIONS MENU */ + +typedef struct +{ + const char *name; + const char *description; +} level_t; + +level_t levels[] = +{ + {"start", "Entrance"}, // 0 + + {"e1m1", "Slipgate Complex"}, // 1 + {"e1m2", "Castle of the Damned"}, + {"e1m3", "The Necropolis"}, + {"e1m4", "The Grisly Grotto"}, + {"e1m5", "Gloom Keep"}, + {"e1m6", "The Door To Chthon"}, + {"e1m7", "The House of Chthon"}, + {"e1m8", "Ziggurat Vertigo"}, + + {"e2m1", "The Installation"}, // 9 + {"e2m2", "Ogre Citadel"}, + {"e2m3", "Crypt of Decay"}, + {"e2m4", "The Ebon Fortress"}, + {"e2m5", "The Wizard's Manse"}, + {"e2m6", "The Dismal Oubliette"}, + {"e2m7", "Underearth"}, + + {"e3m1", "Termination Central"}, // 16 + {"e3m2", "The Vaults of Zin"}, + {"e3m3", "The Tomb of Terror"}, + {"e3m4", "Satan's Dark Delight"}, + {"e3m5", "Wind Tunnels"}, + {"e3m6", "Chambers of Torment"}, + {"e3m7", "The Haunted Halls"}, + + {"e4m1", "The Sewage System"}, // 23 + {"e4m2", "The Tower of Despair"}, + {"e4m3", "The Elder God Shrine"}, + {"e4m4", "The Palace of Hate"}, + {"e4m5", "Hell's Atrium"}, + {"e4m6", "The Pain Maze"}, + {"e4m7", "Azure Agony"}, + {"e4m8", "The Nameless City"}, + + {"end", "Shub-Niggurath's Pit"}, // 31 + + {"dm1", "Place of Two Deaths"}, // 32 + {"dm2", "Claustrophobopolis"}, + {"dm3", "The Abandoned Base"}, + {"dm4", "The Bad Place"}, + {"dm5", "The Cistern"}, + {"dm6", "The Dark Zone"} +}; + +//MED 01/06/97 added hipnotic levels +level_t hipnoticlevels[] = +{ + {"start", "Command HQ"}, // 0 + + {"hip1m1", "The Pumping Station"}, // 1 + {"hip1m2", "Storage Facility"}, + {"hip1m3", "The Lost Mine"}, + {"hip1m4", "Research Facility"}, + {"hip1m5", "Military Complex"}, + + {"hip2m1", "Ancient Realms"}, // 6 + {"hip2m2", "The Black Cathedral"}, + {"hip2m3", "The Catacombs"}, + {"hip2m4", "The Crypt"}, + {"hip2m5", "Mortum's Keep"}, + {"hip2m6", "The Gremlin's Domain"}, + + {"hip3m1", "Tur Torment"}, // 12 + {"hip3m2", "Pandemonium"}, + {"hip3m3", "Limbo"}, + {"hip3m4", "The Gauntlet"}, + + {"hipend", "Armagon's Lair"}, // 16 + + {"hipdm1", "The Edge of Oblivion"} // 17 +}; + +//PGM 01/07/97 added rogue levels +//PGM 03/02/97 added dmatch level +level_t roguelevels[] = +{ + {"start", "Split Decision"}, + {"r1m1", "Deviant's Domain"}, + {"r1m2", "Dread Portal"}, + {"r1m3", "Judgement Call"}, + {"r1m4", "Cave of Death"}, + {"r1m5", "Towers of Wrath"}, + {"r1m6", "Temple of Pain"}, + {"r1m7", "Tomb of the Overlord"}, + {"r2m1", "Tempus Fugit"}, + {"r2m2", "Elemental Fury I"}, + {"r2m3", "Elemental Fury II"}, + {"r2m4", "Curse of Osiris"}, + {"r2m5", "Wizard's Keep"}, + {"r2m6", "Blood Sacrifice"}, + {"r2m7", "Last Bastion"}, + {"r2m8", "Source of Evil"}, + {"ctf1", "Division of Change"} +}; + +typedef struct +{ + const char *description; + int firstLevel; + int levels; +} episode_t; + +episode_t episodes[] = +{ + {"Welcome to Quake", 0, 1}, + {"Doomed Dimension", 1, 8}, + {"Realm of Black Magic", 9, 7}, + {"Netherworld", 16, 7}, + {"The Elder World", 23, 8}, + {"Final Level", 31, 1}, + {"Deathmatch Arena", 32, 6} +}; + +//MED 01/06/97 added hipnotic episodes +episode_t hipnoticepisodes[] = +{ + {"Scourge of Armagon", 0, 1}, + {"Fortress of the Dead", 1, 5}, + {"Dominion of Darkness", 6, 6}, + {"The Rift", 12, 4}, + {"Final Level", 16, 1}, + {"Deathmatch Arena", 17, 1} +}; + +//PGM 01/07/97 added rogue episodes +//PGM 03/02/97 added dmatch episode +episode_t rogueepisodes[] = +{ + {"Introduction", 0, 1}, + {"Hell's Fortress", 1, 7}, + {"Corridors of Time", 8, 8}, + {"Deathmatch Arena", 16, 1} +}; + +int startepisode; +int startlevel; +int maxplayers; +qboolean m_serverInfoMessage = false; +double m_serverInfoMessageTime; + +void M_Menu_GameOptions_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_gameoptions; + m_entersound = true; + if (maxplayers == 0) + maxplayers = svs.maxclients; + if (maxplayers < 2) + maxplayers = svs.maxclientslimit; +} + + +int gameoptions_cursor_table[] = {40, 56, 64, 72, 80, 88, 96, 112, 120}; +#define NUM_GAMEOPTIONS 9 +int gameoptions_cursor; + +void M_GameOptions_Draw (void) +{ + qpic_t *p; + int x; + + M_DrawTransPic (16, 4, Draw_CachePic ("gfx/qplaque.lmp") ); + p = Draw_CachePic ("gfx/p_multi.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + + M_DrawTextBox (152, 32, 10, 1); + M_Print (160, 40, "begin game"); + + M_Print (0, 56, " Max players"); + M_Print (160, 56, va("%i", maxplayers) ); + + M_Print (0, 64, " Game Type"); + if (coop.value) + M_Print (160, 64, "Cooperative"); + else + M_Print (160, 64, "Deathmatch"); + + M_Print (0, 72, " Teamplay"); + if (rogue) + { + const char *msg; + + switch((int)teamplay.value) + { + case 1: msg = "No Friendly Fire"; break; + case 2: msg = "Friendly Fire"; break; + case 3: msg = "Tag"; break; + case 4: msg = "Capture the Flag"; break; + case 5: msg = "One Flag CTF"; break; + case 6: msg = "Three Team CTF"; break; + default: msg = "Off"; break; + } + M_Print (160, 72, msg); + } + else + { + const char *msg; + + switch((int)teamplay.value) + { + case 1: msg = "No Friendly Fire"; break; + case 2: msg = "Friendly Fire"; break; + default: msg = "Off"; break; + } + M_Print (160, 72, msg); + } + + M_Print (0, 80, " Skill"); + if (skill.value == 0) + M_Print (160, 80, "Easy difficulty"); + else if (skill.value == 1) + M_Print (160, 80, "Normal difficulty"); + else if (skill.value == 2) + M_Print (160, 80, "Hard difficulty"); + else + M_Print (160, 80, "Nightmare difficulty"); + + M_Print (0, 88, " Frag Limit"); + if (fraglimit.value == 0) + M_Print (160, 88, "none"); + else + M_Print (160, 88, va("%i frags", (int)fraglimit.value)); + + M_Print (0, 96, " Time Limit"); + if (timelimit.value == 0) + M_Print (160, 96, "none"); + else + M_Print (160, 96, va("%i minutes", (int)timelimit.value)); + + M_Print (0, 112, " Episode"); + // MED 01/06/97 added hipnotic episodes + if (hipnotic) + M_Print (160, 112, hipnoticepisodes[startepisode].description); + // PGM 01/07/97 added rogue episodes + else if (rogue) + M_Print (160, 112, rogueepisodes[startepisode].description); + else + M_Print (160, 112, episodes[startepisode].description); + + M_Print (0, 120, " Level"); + // MED 01/06/97 added hipnotic episodes + if (hipnotic) + { + M_Print (160, 120, hipnoticlevels[hipnoticepisodes[startepisode].firstLevel + startlevel].description); + M_Print (160, 128, hipnoticlevels[hipnoticepisodes[startepisode].firstLevel + startlevel].name); + } + // PGM 01/07/97 added rogue episodes + else if (rogue) + { + M_Print (160, 120, roguelevels[rogueepisodes[startepisode].firstLevel + startlevel].description); + M_Print (160, 128, roguelevels[rogueepisodes[startepisode].firstLevel + startlevel].name); + } + else + { + M_Print (160, 120, levels[episodes[startepisode].firstLevel + startlevel].description); + M_Print (160, 128, levels[episodes[startepisode].firstLevel + startlevel].name); + } + +// line cursor + M_DrawCharacter (144, gameoptions_cursor_table[gameoptions_cursor], 12+((int)(realtime*4)&1)); + + if (m_serverInfoMessage) + { + if ((realtime - m_serverInfoMessageTime) < 5.0) + { + x = (320-26*8)/2; + M_DrawTextBox (x, 138, 24, 4); + x += 8; + M_Print (x, 146, " More than 4 players "); + M_Print (x, 154, " requires using command "); + M_Print (x, 162, "line parameters; please "); + M_Print (x, 170, " see techinfo.txt. "); + } + else + { + m_serverInfoMessage = false; + } + } +} + + +void M_NetStart_Change (int dir) +{ + int count; + float f; + + switch (gameoptions_cursor) + { + case 1: + maxplayers += dir; + if (maxplayers > svs.maxclientslimit) + { + maxplayers = svs.maxclientslimit; + m_serverInfoMessage = true; + m_serverInfoMessageTime = realtime; + } + if (maxplayers < 2) + maxplayers = 2; + break; + + case 2: + Cvar_Set ("coop", coop.value ? "0" : "1"); + break; + + case 3: + count = (rogue) ? 6 : 2; + f = teamplay.value + dir; + if (f > count) f = 0; + else if (f < 0) f = count; + Cvar_SetValue ("teamplay", f); + break; + + case 4: + f = skill.value + dir; + if (f > 3) f = 0; + else if (f < 0) f = 3; + Cvar_SetValue ("skill", f); + break; + + case 5: + f = fraglimit.value + dir * 10; + if (f > 100) f = 0; + else if (f < 0) f = 100; + Cvar_SetValue ("fraglimit", f); + break; + + case 6: + f = timelimit.value + dir * 5; + if (f > 60) f = 0; + else if (f < 0) f = 60; + Cvar_SetValue ("timelimit", f); + break; + + case 7: + startepisode += dir; + //MED 01/06/97 added hipnotic count + if (hipnotic) + count = 6; + //PGM 01/07/97 added rogue count + //PGM 03/02/97 added 1 for dmatch episode + else if (rogue) + count = 4; + else if (registered.value) + count = 7; + else + count = 2; + + if (startepisode < 0) + startepisode = count - 1; + + if (startepisode >= count) + startepisode = 0; + + startlevel = 0; + break; + + case 8: + startlevel += dir; + //MED 01/06/97 added hipnotic episodes + if (hipnotic) + count = hipnoticepisodes[startepisode].levels; + //PGM 01/06/97 added hipnotic episodes + else if (rogue) + count = rogueepisodes[startepisode].levels; + else + count = episodes[startepisode].levels; + + if (startlevel < 0) + startlevel = count - 1; + + if (startlevel >= count) + startlevel = 0; + break; + } +} + +void M_GameOptions_Key (int key) +{ + switch (key) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_Net_f (); + break; + + case K_UPARROW: + S_LocalSound ("misc/menu1.wav"); + gameoptions_cursor--; + if (gameoptions_cursor < 0) + gameoptions_cursor = NUM_GAMEOPTIONS-1; + break; + + case K_DOWNARROW: + S_LocalSound ("misc/menu1.wav"); + gameoptions_cursor++; + if (gameoptions_cursor >= NUM_GAMEOPTIONS) + gameoptions_cursor = 0; + break; + + case K_LEFTARROW: + if (gameoptions_cursor == 0) + break; + S_LocalSound ("misc/menu3.wav"); + M_NetStart_Change (-1); + break; + + case K_RIGHTARROW: + if (gameoptions_cursor == 0) + break; + S_LocalSound ("misc/menu3.wav"); + M_NetStart_Change (1); + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + S_LocalSound ("misc/menu2.wav"); + if (gameoptions_cursor == 0) + { + if (sv.active) + Cbuf_AddText ("disconnect\n"); + Cbuf_AddText ("listen 0\n"); // so host_netport will be re-examined + Cbuf_AddText ( va ("maxplayers %u\n", maxplayers) ); + SCR_BeginLoadingPlaque (); + + if (hipnotic) + Cbuf_AddText ( va ("map %s\n", hipnoticlevels[hipnoticepisodes[startepisode].firstLevel + startlevel].name) ); + else if (rogue) + Cbuf_AddText ( va ("map %s\n", roguelevels[rogueepisodes[startepisode].firstLevel + startlevel].name) ); + else + Cbuf_AddText ( va ("map %s\n", levels[episodes[startepisode].firstLevel + startlevel].name) ); + + return; + } + + M_NetStart_Change (1); + break; + } +} + +//============================================================================= +/* SEARCH MENU */ + +qboolean searchComplete = false; +double searchCompleteTime; + +void M_Menu_Search_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_search; + m_entersound = false; + slistSilent = true; + slistLocal = false; + searchComplete = false; + NET_Slist_f(); + +} + + +void M_Search_Draw (void) +{ + qpic_t *p; + int x; + + p = Draw_CachePic ("gfx/p_multi.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + x = (320/2) - ((12*8)/2) + 4; + M_DrawTextBox (x-8, 32, 12, 1); + M_Print (x, 40, "Searching..."); + + if(slistInProgress) + { + NET_Poll(); + return; + } + + if (! searchComplete) + { + searchComplete = true; + searchCompleteTime = realtime; + } + + if (hostCacheCount) + { + M_Menu_ServerList_f (); + return; + } + + M_PrintWhite ((320/2) - ((22*8)/2), 64, "No Quake servers found"); + if ((realtime - searchCompleteTime) < 3.0) + return; + + M_Menu_LanConfig_f (); +} + + +void M_Search_Key (int key) +{ +} + +//============================================================================= +/* SLIST MENU */ + +int slist_cursor; +qboolean slist_sorted; + +void M_Menu_ServerList_f (void) +{ + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_slist; + m_entersound = true; + slist_cursor = 0; + m_return_onerror = false; + m_return_reason[0] = 0; + slist_sorted = false; +} + + +void M_ServerList_Draw (void) +{ + int n; + qpic_t *p; + + if (!slist_sorted) + { + slist_sorted = true; + NET_SlistSort (); + } + + p = Draw_CachePic ("gfx/p_multi.lmp"); + M_DrawPic ( (320-p->width)/2, 4, p); + for (n = 0; n < hostCacheCount; n++) + M_Print (16, 32 + 8*n, NET_SlistPrintServer (n)); + M_DrawCharacter (0, 32 + slist_cursor*8, 12+((int)(realtime*4)&1)); + + if (*m_return_reason) + M_PrintWhite (16, 148, m_return_reason); +} + + +void M_ServerList_Key (int k) +{ + switch (k) + { + case K_ESCAPE: + case K_BBUTTON: + M_Menu_LanConfig_f (); + break; + + case K_SPACE: + M_Menu_Search_f (); + break; + + case K_UPARROW: + case K_LEFTARROW: + S_LocalSound ("misc/menu1.wav"); + slist_cursor--; + if (slist_cursor < 0) + slist_cursor = hostCacheCount - 1; + break; + + case K_DOWNARROW: + case K_RIGHTARROW: + S_LocalSound ("misc/menu1.wav"); + slist_cursor++; + if (slist_cursor >= hostCacheCount) + slist_cursor = 0; + break; + + case K_ENTER: + case K_KP_ENTER: + case K_ABUTTON: + S_LocalSound ("misc/menu2.wav"); + m_return_state = m_state; + m_return_onerror = true; + slist_sorted = false; + IN_Activate(); + key_dest = key_game; + m_state = m_none; + Cbuf_AddText ( va ("connect \"%s\"\n", NET_SlistPrintServerName(slist_cursor)) ); + break; + + default: + break; + } + +} + +//============================================================================= +/* Credits menu -- used by the 2021 re-release */ + +void M_Menu_Credits_f (void) +{ +} + +//============================================================================= +/* Menu Subsystem */ + +void M_Init (void) +{ + Cmd_AddCommand ("togglemenu", M_ToggleMenu_f); + + Cmd_AddCommand ("menu_main", M_Menu_Main_f); + Cmd_AddCommand ("menu_singleplayer", M_Menu_SinglePlayer_f); + Cmd_AddCommand ("menu_load", M_Menu_Load_f); + Cmd_AddCommand ("menu_save", M_Menu_Save_f); + Cmd_AddCommand ("menu_multiplayer", M_Menu_MultiPlayer_f); + Cmd_AddCommand ("menu_setup", M_Menu_Setup_f); + Cmd_AddCommand ("menu_options", M_Menu_Options_f); + Cmd_AddCommand ("menu_keys", M_Menu_Keys_f); + Cmd_AddCommand ("menu_video", M_Menu_Video_f); + Cmd_AddCommand ("help", M_Menu_Help_f); + Cmd_AddCommand ("menu_quit", M_Menu_Quit_f); + Cmd_AddCommand ("menu_credits", M_Menu_Credits_f); // needed by the 2021 re-release +} + + +void M_Draw (void) +{ + if (m_state == m_none || key_dest != key_menu) + return; + + if (!m_recursiveDraw) + { + if (scr_con_current) + { + Draw_ConsoleBackground (); + S_ExtraUpdate (); + } + + Draw_FadeScreen (); //johnfitz -- fade even if console fills screen + } + else + { + m_recursiveDraw = false; + } + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + switch (m_state) + { + case m_none: + break; + + case m_main: + M_Main_Draw (); + break; + + case m_singleplayer: + M_SinglePlayer_Draw (); + break; + + case m_load: + M_Load_Draw (); + break; + + case m_save: + M_Save_Draw (); + break; + + case m_multiplayer: + M_MultiPlayer_Draw (); + break; + + case m_setup: + M_Setup_Draw (); + break; + + case m_net: + M_Net_Draw (); + break; + + case m_options: + M_Options_Draw (); + break; + + case m_keys: + M_Keys_Draw (); + break; + + case m_video: + M_Video_Draw (); + break; + + case m_help: + M_Help_Draw (); + break; + + case m_quit: + if (!fitzmode) + { /* QuakeSpasm customization: */ + /* Quit now! S.A. */ + key_dest = key_console; + Host_Quit_f (); + } + M_Quit_Draw (); + break; + + case m_lanconfig: + M_LanConfig_Draw (); + break; + + case m_gameoptions: + M_GameOptions_Draw (); + break; + + case m_search: + M_Search_Draw (); + break; + + case m_slist: + M_ServerList_Draw (); + break; + } + + if (m_entersound) + { + S_LocalSound ("misc/menu2.wav"); + m_entersound = false; + } + + S_ExtraUpdate (); +} + + +void M_Keydown (int key) +{ + switch (m_state) + { + case m_none: + return; + + case m_main: + M_Main_Key (key); + return; + + case m_singleplayer: + M_SinglePlayer_Key (key); + return; + + case m_load: + M_Load_Key (key); + return; + + case m_save: + M_Save_Key (key); + return; + + case m_multiplayer: + M_MultiPlayer_Key (key); + return; + + case m_setup: + M_Setup_Key (key); + return; + + case m_net: + M_Net_Key (key); + return; + + case m_options: + M_Options_Key (key); + return; + + case m_keys: + M_Keys_Key (key); + return; + + case m_video: + M_Video_Key (key); + return; + + case m_help: + M_Help_Key (key); + return; + + case m_quit: + M_Quit_Key (key); + return; + + case m_lanconfig: + M_LanConfig_Key (key); + return; + + case m_gameoptions: + M_GameOptions_Key (key); + return; + + case m_search: + M_Search_Key (key); + break; + + case m_slist: + M_ServerList_Key (key); + return; + } +} + + +void M_Charinput (int key) +{ + switch (m_state) + { + case m_setup: + M_Setup_Char (key); + return; + case m_quit: + M_Quit_Char (key); + return; + case m_lanconfig: + M_LanConfig_Char (key); + return; + default: + return; + } +} + + +qboolean M_TextEntry (void) +{ + switch (m_state) + { + case m_setup: + return M_Setup_TextEntry (); + case m_quit: + return M_Quit_TextEntry (); + case m_lanconfig: + return M_LanConfig_TextEntry (); + default: + return false; + } +} + + +void M_ConfigureNetSubsystem(void) +{ +// enable/disable net systems to match desired config + Cbuf_AddText ("stopdemo\n"); + + if (IPXConfig || TCPIPConfig) + net_hostport = lanConfig_port; +} + diff --git a/Quake/menu.h b/Quake/menu.h new file mode 100644 index 0000000..6e2c9ef --- /dev/null +++ b/Quake/menu.h @@ -0,0 +1,75 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_MENU_H +#define _QUAKE_MENU_H + +enum m_state_e { + m_none, + m_main, + m_singleplayer, + m_load, + m_save, + m_multiplayer, + m_setup, + m_net, + m_options, + m_video, + m_keys, + m_help, + m_quit, + m_lanconfig, + m_gameoptions, + m_search, + m_slist +}; + +extern enum m_state_e m_state; +extern enum m_state_e m_return_state; + +extern qboolean m_entersound; + +// +// menus +// +void M_Init (void); +void M_Keydown (int key); +void M_Charinput (int key); +qboolean M_TextEntry (void); +void M_ToggleMenu_f (void); + +void M_Menu_Main_f (void); +void M_Menu_Options_f (void); +void M_Menu_Quit_f (void); + +void M_Print (int cx, int cy, const char *str); +void M_PrintWhite (int cx, int cy, const char *str); + +void M_Draw (void); +void M_DrawCharacter (int cx, int line, int num); + +void M_DrawPic (int x, int y, qpic_t *pic); +void M_DrawTransPic (int x, int y, qpic_t *pic); +void M_DrawCheckbox (int x, int y, int on); + +#endif /* _QUAKE_MENU_H */ + diff --git a/Quake/miniz.c b/Quake/miniz.c new file mode 100644 index 0000000..46fb16d --- /dev/null +++ b/Quake/miniz.c @@ -0,0 +1,2282 @@ +#include "miniz.h" + +/************************************************************************** + * + * Copyright 2013-2014 RAD Game Tools and Valve Software + * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + +typedef unsigned char mz_validate_uint16[sizeof(mz_uint16) == 2 ? 1 : -1]; +typedef unsigned char mz_validate_uint32[sizeof(mz_uint32) == 4 ? 1 : -1]; +typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1]; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS +/* Karl Malbrain's compact CRC-32. See "A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed": http://www.geocities.com/malbrain/ */ +#if 0 + static mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) + { + static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, + 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c }; + mz_uint32 crcu32 = (mz_uint32)crc; + if (!ptr) + return MZ_CRC32_INIT; + crcu32 = ~crcu32; + while (buf_len--) + { + mz_uint8 b = *ptr++; + crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; + crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; + } + return ~crcu32; + } +#elif defined(USE_EXTERNAL_MZCRC) +/* If USE_EXTERNAL_CRC is defined, an external module will export the + * mz_crc32() symbol for us to use, e.g. an SSE-accelerated version. + * Depending on the impl, it may be necessary to ~ the input/output crc values. + */ +mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len); +#else +/* Faster, but larger CPU cache footprint. + */ +static mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) +{ + static const mz_uint32 s_crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, + 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, + 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, + 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, + 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, + 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, + 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, + 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, + 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, + 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, + 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, + 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, + 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, + 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, + 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, + 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, + 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, + 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, + 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, + 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, + 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, + 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, + 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, + 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, + 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, + 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, + 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, + 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, + 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, + 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + mz_uint32 crc32 = (mz_uint32)crc ^ 0xFFFFFFFF; + const mz_uint8 *pByte_buf = (const mz_uint8 *)ptr; + + while (buf_len >= 4) + { + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[1]) & 0xFF]; + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[2]) & 0xFF]; + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[3]) & 0xFF]; + pByte_buf += 4; + buf_len -= 4; + } + + while (buf_len) + { + crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; + ++pByte_buf; + --buf_len; + } + + return ~crc32; +} +#endif +#endif /* MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS */ + +static /*MINIZ_EXPORT*/ void *miniz_def_alloc_func(void *opaque, size_t items, size_t size) +{ + (void)opaque, (void)items, (void)size; + return MZ_MALLOC(items * size); +} +static /*MINIZ_EXPORT*/ void miniz_def_free_func(void *opaque, void *address) +{ + (void)opaque, (void)address; + MZ_FREE(address); +} +static /*MINIZ_EXPORT*/ void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size) +{ + (void)opaque, (void)address, (void)items, (void)size; + return MZ_REALLOC(address, items * size); +} + +#ifdef __cplusplus +} +#endif + +/* + This is free and unencumbered software released into the public domain. + + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. + + In jurisdictions that recognize copyright laws, the author or authors + of this software dedicate any and all copyright interest in the + software to the public domain. We make this dedication for the benefit + of the public at large and to the detriment of our heirs and + successors. We intend this dedication to be an overt act of + relinquishment in perpetuity of all present and future rights to this + software under copyright law. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + For more information, please refer to <http://unlicense.org/> +*/ + +#ifndef MINIZ_NO_INFLATE_APIS + +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------- Low-level Decompression (completely independent from all compression API's) */ + +#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l) +#define TINFL_MEMSET(p, c, l) memset(p, c, l) + +#define TINFL_CR_BEGIN \ + switch (r->m_state) \ + { \ + case 0: +#define TINFL_CR_RETURN(state_index, result) \ + do \ + { \ + status = result; \ + r->m_state = state_index; \ + goto common_exit; \ + case state_index:; \ + } \ + MZ_MACRO_END +#define TINFL_CR_RETURN_FOREVER(state_index, result) \ + do \ + { \ + for (;;) \ + { \ + TINFL_CR_RETURN(state_index, result); \ + } \ + } \ + MZ_MACRO_END +#define TINFL_CR_FINISH } + +#define TINFL_GET_BYTE(state_index, c) \ + do \ + { \ + while (pIn_buf_cur >= pIn_buf_end) \ + { \ + TINFL_CR_RETURN(state_index, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); \ + } \ + c = *pIn_buf_cur++; \ + } \ + MZ_MACRO_END + +#define TINFL_NEED_BITS(state_index, n) \ + do \ + { \ + mz_uint c; \ + TINFL_GET_BYTE(state_index, c); \ + bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ + num_bits += 8; \ + } while (num_bits < (mz_uint)(n)) +#define TINFL_SKIP_BITS(state_index, n) \ + do \ + { \ + if (num_bits < (mz_uint)(n)) \ + { \ + TINFL_NEED_BITS(state_index, n); \ + } \ + bit_buf >>= (n); \ + num_bits -= (n); \ + } \ + MZ_MACRO_END +#define TINFL_GET_BITS(state_index, b, n) \ + do \ + { \ + if (num_bits < (mz_uint)(n)) \ + { \ + TINFL_NEED_BITS(state_index, n); \ + } \ + b = bit_buf & ((1 << (n)) - 1); \ + bit_buf >>= (n); \ + num_bits -= (n); \ + } \ + MZ_MACRO_END + +/* TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2. */ +/* It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a */ +/* Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the */ +/* bit buffer contains >=15 bits (deflate's max. Huffman code size). */ +#define TINFL_HUFF_BITBUF_FILL(state_index, pLookUp, pTree) \ + do \ + { \ + temp = pLookUp[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ + if (temp >= 0) \ + { \ + code_len = temp >> 9; \ + if ((code_len) && (num_bits >= code_len)) \ + break; \ + } \ + else if (num_bits > TINFL_FAST_LOOKUP_BITS) \ + { \ + code_len = TINFL_FAST_LOOKUP_BITS; \ + do \ + { \ + temp = pTree[~temp + ((bit_buf >> code_len++) & 1)]; \ + } while ((temp < 0) && (num_bits >= (code_len + 1))); \ + if (temp >= 0) \ + break; \ + } \ + TINFL_GET_BYTE(state_index, c); \ + bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ + num_bits += 8; \ + } while (num_bits < 15); + +/* TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read */ +/* beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully */ +/* decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32. */ +/* The slow path is only executed at the very end of the input buffer. */ +/* v1.16: The original macro handled the case at the very end of the passed-in input buffer, but we also need to handle the case where the user passes in 1+zillion bytes */ +/* following the deflate data and our non-conservative read-ahead path won't kick in here on this code. This is much trickier. */ +#define TINFL_HUFF_DECODE(state_index, sym, pLookUp, pTree) \ + do \ + { \ + int temp; \ + mz_uint code_len, c; \ + if (num_bits < 15) \ + { \ + if ((pIn_buf_end - pIn_buf_cur) < 2) \ + { \ + TINFL_HUFF_BITBUF_FILL(state_index, pLookUp, pTree); \ + } \ + else \ + { \ + bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \ + pIn_buf_cur += 2; \ + num_bits += 16; \ + } \ + } \ + if ((temp = pLookUp[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \ + code_len = temp >> 9, temp &= 511; \ + else \ + { \ + code_len = TINFL_FAST_LOOKUP_BITS; \ + do \ + { \ + temp = pTree[~temp + ((bit_buf >> code_len++) & 1)]; \ + } while (temp < 0); \ + } \ + sym = temp; \ + bit_buf >>= code_len; \ + num_bits -= code_len; \ + code_len_hack = code_len; /* FIXME: workaround for miniz/#229 */ \ + } \ + MZ_MACRO_END + +static void tinfl_clear_tree(tinfl_decompressor *r) +{ + if (r->m_type == 0) + MZ_CLEAR_ARR(r->m_tree_0); + else if (r->m_type == 1) + MZ_CLEAR_ARR(r->m_tree_1); + else + MZ_CLEAR_ARR(r->m_tree_2); +} + +tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags) +{ + static const mz_uint16 s_length_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 }; + static const mz_uint8 s_length_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 }; + static const mz_uint16 s_dist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 }; + static const mz_uint8 s_dist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; + static const mz_uint8 s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; + static const mz_uint16 s_min_table_sizes[3] = { 257, 1, 4 }; + + mz_int16 *pTrees[3]; + mz_uint8 *pCode_sizes[3]; + + tinfl_status status = TINFL_STATUS_FAILED; + mz_uint32 num_bits, dist, counter, num_extra; + tinfl_bit_buf_t bit_buf; + const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size; + mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next ? pOut_buf_next + *pOut_buf_size : NULL; + size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start; + + /* Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). */ + if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) + { + *pIn_buf_size = *pOut_buf_size = 0; + return TINFL_STATUS_BAD_PARAM; + } + + pTrees[0] = r->m_tree_0; + pTrees[1] = r->m_tree_1; + pTrees[2] = r->m_tree_2; + pCode_sizes[0] = r->m_code_size_0; + pCode_sizes[1] = r->m_code_size_1; + pCode_sizes[2] = r->m_code_size_2; + + num_bits = r->m_num_bits; + bit_buf = r->m_bit_buf; + dist = r->m_dist; + counter = r->m_counter; + num_extra = r->m_num_extra; + dist_from_out_buf_start = r->m_dist_from_out_buf_start; + TINFL_CR_BEGIN + + bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; + r->m_z_adler32 = r->m_check_adler32 = 1; + if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) + { + TINFL_GET_BYTE(1, r->m_zhdr0); + TINFL_GET_BYTE(2, r->m_zhdr1); + counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8)); + if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) + counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4))))); + if (counter) + { + TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); + } + } + + do + { + TINFL_GET_BITS(3, r->m_final, 3); + r->m_type = r->m_final >> 1; + if (r->m_type == 0) + { + TINFL_SKIP_BITS(5, num_bits & 7); + for (counter = 0; counter < 4; ++counter) + { + if (num_bits) + TINFL_GET_BITS(6, r->m_raw_header[counter], 8); + else + TINFL_GET_BYTE(7, r->m_raw_header[counter]); + } + if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) + { + TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); + } + while ((counter) && (num_bits)) + { + TINFL_GET_BITS(51, dist, 8); + while (pOut_buf_cur >= pOut_buf_end) + { + TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); + } + *pOut_buf_cur++ = (mz_uint8)dist; + counter--; + } + while (counter) + { + size_t n; + while (pOut_buf_cur >= pOut_buf_end) + { + TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); + } + while (pIn_buf_cur >= pIn_buf_end) + { + TINFL_CR_RETURN(38, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); + } + n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter); + TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); + pIn_buf_cur += n; + pOut_buf_cur += n; + counter -= (mz_uint)n; + } + } + else if (r->m_type == 3) + { + TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED); + } + else + { + mz_uint code_len_hack; /* FIXME: workaround for miniz/#229 */ + if (r->m_type == 1) + { + mz_uint8 *p = r->m_code_size_0; + mz_uint i; + r->m_table_sizes[0] = 288; + r->m_table_sizes[1] = 32; + TINFL_MEMSET(r->m_code_size_1, 5, 32); + for (i = 0; i <= 143; ++i) + *p++ = 8; + for (; i <= 255; ++i) + *p++ = 9; + for (; i <= 279; ++i) + *p++ = 7; + for (; i <= 287; ++i) + *p++ = 8; + } + else + { + for (counter = 0; counter < 3; counter++) + { + TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); + r->m_table_sizes[counter] += s_min_table_sizes[counter]; + } + MZ_CLEAR_ARR(r->m_code_size_2); + for (counter = 0; counter < r->m_table_sizes[2]; counter++) + { + mz_uint s; + TINFL_GET_BITS(14, s, 3); + r->m_code_size_2[s_length_dezigzag[counter]] = (mz_uint8)s; + } + r->m_table_sizes[2] = 19; + } + for (; (int)r->m_type >= 0; r->m_type--) + { + int tree_next, tree_cur; + mz_int16 *pLookUp; + mz_int16 *pTree; + mz_uint8 *pCode_size; + mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; + pLookUp = r->m_look_up[r->m_type]; + pTree = pTrees[r->m_type]; + pCode_size = pCode_sizes[r->m_type]; + MZ_CLEAR_ARR(total_syms); + TINFL_MEMSET(pLookUp, 0, sizeof(r->m_look_up[0])); + tinfl_clear_tree(r); + for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) + total_syms[pCode_size[i]]++; + used_syms = 0, total = 0; + next_code[0] = next_code[1] = 0; + for (i = 1; i <= 15; ++i) + { + used_syms += total_syms[i]; + next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); + } + if ((65536 != total) && (used_syms > 1)) + { + TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED); + } + for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index) + { + mz_uint rev_code = 0, l, cur_code, code_size = pCode_size[sym_index]; + if (!code_size) + continue; + cur_code = next_code[code_size]++; + for (l = code_size; l > 0; l--, cur_code >>= 1) + rev_code = (rev_code << 1) | (cur_code & 1); + if (code_size <= TINFL_FAST_LOOKUP_BITS) + { + mz_int16 k = (mz_int16)((code_size << 9) | sym_index); + while (rev_code < TINFL_FAST_LOOKUP_SIZE) + { + pLookUp[rev_code] = k; + rev_code += (1 << code_size); + } + continue; + } + if (0 == (tree_cur = pLookUp[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) + { + pLookUp[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; + tree_cur = tree_next; + tree_next -= 2; + } + rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1); + for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--) + { + tree_cur -= ((rev_code >>= 1) & 1); + if (!pTree[-tree_cur - 1]) + { + pTree[-tree_cur - 1] = (mz_int16)tree_next; + tree_cur = tree_next; + tree_next -= 2; + } + else + tree_cur = pTree[-tree_cur - 1]; + } + tree_cur -= ((rev_code >>= 1) & 1); + pTree[-tree_cur - 1] = (mz_int16)sym_index; + } + if (r->m_type == 2) + { + for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]);) + { + mz_uint s; + TINFL_HUFF_DECODE(16, dist, r->m_look_up[2], r->m_tree_2); + if (dist < 16) + { + r->m_len_codes[counter++] = (mz_uint8)dist; + continue; + } + if ((dist == 16) && (!counter)) + { + TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED); + } + num_extra = "\02\03\07"[dist - 16]; + TINFL_GET_BITS(18, s, num_extra); + s += "\03\03\013"[dist - 16]; + TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); + counter += s; + } + if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter) + { + TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED); + } + TINFL_MEMCPY(r->m_code_size_0, r->m_len_codes, r->m_table_sizes[0]); + TINFL_MEMCPY(r->m_code_size_1, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]); + } + } + for (;;) + { + mz_uint8 *pSrc; + for (;;) + { + if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2)) + { + TINFL_HUFF_DECODE(23, counter, r->m_look_up[0], r->m_tree_0); + /* FIXME: workaround for miniz/#229 */ + if (!code_len_hack) + TINFL_CR_RETURN_FOREVER(101, TINFL_STATUS_FAILED); + if (counter >= 256) + break; + while (pOut_buf_cur >= pOut_buf_end) + { + TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); + } + *pOut_buf_cur++ = (mz_uint8)counter; + } + else + { + int sym2; + mz_uint code_len; +#if TINFL_USE_64BIT_BITBUF + if (num_bits < 30) + { + bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); + pIn_buf_cur += 4; + num_bits += 32; + } +#else + if (num_bits < 15) + { + bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); + pIn_buf_cur += 2; + num_bits += 16; + } +#endif + if ((sym2 = r->m_look_up[0][bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) + code_len = sym2 >> 9; + else + { + code_len = TINFL_FAST_LOOKUP_BITS; + do + { + sym2 = r->m_tree_0[~sym2 + ((bit_buf >> code_len++) & 1)]; + } while (sym2 < 0); + } + /* FIXME: workaround for miniz/#229 */ + if (!code_len) + TINFL_CR_RETURN_FOREVER(100, TINFL_STATUS_FAILED); + counter = sym2; + bit_buf >>= code_len; + num_bits -= code_len; + if (counter & 256) + break; + +#if !TINFL_USE_64BIT_BITBUF + if (num_bits < 15) + { + bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); + pIn_buf_cur += 2; + num_bits += 16; + } +#endif + if ((sym2 = r->m_look_up[0][bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) + code_len = sym2 >> 9; + else + { + code_len = TINFL_FAST_LOOKUP_BITS; + do + { + sym2 = r->m_tree_0[~sym2 + ((bit_buf >> code_len++) & 1)]; + } while (sym2 < 0); + } + bit_buf >>= code_len; + num_bits -= code_len; + + pOut_buf_cur[0] = (mz_uint8)counter; + if (sym2 & 256) + { + pOut_buf_cur++; + counter = sym2; + break; + } + pOut_buf_cur[1] = (mz_uint8)sym2; + pOut_buf_cur += 2; + } + } + if ((counter &= 511) == 256) + break; + + num_extra = s_length_extra[counter - 257]; + counter = s_length_base[counter - 257]; + if (num_extra) + { + mz_uint extra_bits; + TINFL_GET_BITS(25, extra_bits, num_extra); + counter += extra_bits; + } + + TINFL_HUFF_DECODE(26, dist, r->m_look_up[1], r->m_tree_1); + num_extra = s_dist_extra[dist]; + dist = s_dist_base[dist]; + if (num_extra) + { + mz_uint extra_bits; + TINFL_GET_BITS(27, extra_bits, num_extra); + dist += extra_bits; + } + + dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start; + if ((dist == 0 || dist > dist_from_out_buf_start || dist_from_out_buf_start == 0) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) + { + TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED); + } + + pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask); + + if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end) + { + while (counter--) + { + while (pOut_buf_cur >= pOut_buf_end) + { + TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); + } + *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask]; + } + continue; + } +#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES + else if ((counter >= 9) && (counter <= dist)) + { + const mz_uint8 *pSrc_end = pSrc + (counter & ~7); + do + { +#ifdef MINIZ_UNALIGNED_USE_MEMCPY + memcpy(pOut_buf_cur, pSrc, sizeof(mz_uint32)*2); +#else + ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0]; + ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1]; +#endif + pOut_buf_cur += 8; + } while ((pSrc += 8) < pSrc_end); + if ((counter &= 7) < 3) + { + if (counter) + { + pOut_buf_cur[0] = pSrc[0]; + if (counter > 1) + pOut_buf_cur[1] = pSrc[1]; + pOut_buf_cur += counter; + } + continue; + } + } +#endif + while(counter>2) + { + pOut_buf_cur[0] = pSrc[0]; + pOut_buf_cur[1] = pSrc[1]; + pOut_buf_cur[2] = pSrc[2]; + pOut_buf_cur += 3; + pSrc += 3; + counter -= 3; + } + if (counter > 0) + { + pOut_buf_cur[0] = pSrc[0]; + if (counter > 1) + pOut_buf_cur[1] = pSrc[1]; + pOut_buf_cur += counter; + } + } + } + } while (!(r->m_final & 1)); + + /* Ensure byte alignment and put back any bytes from the bitbuf if we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */ + /* I'm being super conservative here. A number of simplifications can be made to the byte alignment part, and the Adler32 check shouldn't ever need to worry about reading from the bitbuf now. */ + TINFL_SKIP_BITS(32, num_bits & 7); + while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8)) + { + --pIn_buf_cur; + num_bits -= 8; + } + bit_buf &= ~(~(tinfl_bit_buf_t)0 << num_bits); + MZ_ASSERT(!num_bits); /* if this assert fires then we've read beyond the end of non-deflate/zlib streams with following data (such as gzip streams). */ + + if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) + { + for (counter = 0; counter < 4; ++counter) + { + mz_uint s; + if (num_bits) + TINFL_GET_BITS(41, s, 8); + else + TINFL_GET_BYTE(42, s); + r->m_z_adler32 = (r->m_z_adler32 << 8) | s; + } + } + TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE); + + TINFL_CR_FINISH + +common_exit: + /* As long as we aren't telling the caller that we NEED more input to make forward progress: */ + /* Put back any bytes from the bitbuf in case we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */ + /* We need to be very careful here to NOT push back any bytes we definitely know we need to make forward progress, though, or we'll lock the caller up into an inf loop. */ + if ((status != TINFL_STATUS_NEEDS_MORE_INPUT) && (status != TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS)) + { + while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8)) + { + --pIn_buf_cur; + num_bits -= 8; + } + } + r->m_num_bits = num_bits; + r->m_bit_buf = bit_buf & ~(~(tinfl_bit_buf_t)0 << num_bits); + r->m_dist = dist; + r->m_counter = counter; + r->m_num_extra = num_extra; + r->m_dist_from_out_buf_start = dist_from_out_buf_start; + *pIn_buf_size = pIn_buf_cur - pIn_buf_next; + *pOut_buf_size = pOut_buf_cur - pOut_buf_next; + if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0)) + { + const mz_uint8 *ptr = pOut_buf_next; + size_t buf_len = *pOut_buf_size; + mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; + size_t block_len = buf_len % 5552; + while (buf_len) + { + for (i = 0; i + 7 < block_len; i += 8, ptr += 8) + { + s1 += ptr[0], s2 += s1; + s1 += ptr[1], s2 += s1; + s1 += ptr[2], s2 += s1; + s1 += ptr[3], s2 += s1; + s1 += ptr[4], s2 += s1; + s1 += ptr[5], s2 += s1; + s1 += ptr[6], s2 += s1; + s1 += ptr[7], s2 += s1; + } + for (; i < block_len; ++i) + s1 += *ptr++, s2 += s1; + s1 %= 65521U, s2 %= 65521U; + buf_len -= block_len; + block_len = 5552; + } + r->m_check_adler32 = (s2 << 16) + s1; + if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) + status = TINFL_STATUS_ADLER32_MISMATCH; + } + return status; +} + +#ifdef __cplusplus +} +#endif + +#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/ + /************************************************************************** + * + * Copyright 2013-2014 RAD Game Tools and Valve Software + * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC + * Copyright 2016 Martin Raiber + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + + +#ifndef MINIZ_NO_ARCHIVE_APIS + +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------- .ZIP archive reading */ + +#define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c)) + +/* Various ZIP archive enums. To completely avoid cross platform compiler alignment and platform endian issues, miniz.c doesn't use structs for any of this stuff. */ +enum +{ + /* ZIP archive identifiers and record sizes */ + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50, + MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50, + MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50, + MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30, + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46, + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22, + + /* ZIP64 archive identifier and record sizes */ + MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50, + MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50, + MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56, + MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20, + MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001, + MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50, + MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24, + MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16, + + /* Central directory header record offsets */ + MZ_ZIP_CDH_SIG_OFS = 0, + MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4, + MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6, + MZ_ZIP_CDH_BIT_FLAG_OFS = 8, + MZ_ZIP_CDH_METHOD_OFS = 10, + MZ_ZIP_CDH_FILE_TIME_OFS = 12, + MZ_ZIP_CDH_FILE_DATE_OFS = 14, + MZ_ZIP_CDH_CRC32_OFS = 16, + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20, + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24, + MZ_ZIP_CDH_FILENAME_LEN_OFS = 28, + MZ_ZIP_CDH_EXTRA_LEN_OFS = 30, + MZ_ZIP_CDH_COMMENT_LEN_OFS = 32, + MZ_ZIP_CDH_DISK_START_OFS = 34, + MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36, + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38, + MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42, + + /* Local directory header offsets */ + MZ_ZIP_LDH_SIG_OFS = 0, + MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4, + MZ_ZIP_LDH_BIT_FLAG_OFS = 6, + MZ_ZIP_LDH_METHOD_OFS = 8, + MZ_ZIP_LDH_FILE_TIME_OFS = 10, + MZ_ZIP_LDH_FILE_DATE_OFS = 12, + MZ_ZIP_LDH_CRC32_OFS = 14, + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18, + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22, + MZ_ZIP_LDH_FILENAME_LEN_OFS = 26, + MZ_ZIP_LDH_EXTRA_LEN_OFS = 28, + MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR = 1 << 3, + + /* End of central directory offsets */ + MZ_ZIP_ECDH_SIG_OFS = 0, + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4, + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6, + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8, + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10, + MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12, + MZ_ZIP_ECDH_CDIR_OFS_OFS = 16, + MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20, + + /* ZIP64 End of central directory locator offsets */ + MZ_ZIP64_ECDL_SIG_OFS = 0, /* 4 bytes */ + MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4, /* 4 bytes */ + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8, /* 8 bytes */ + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */ + + /* ZIP64 End of central directory header offsets */ + MZ_ZIP64_ECDH_SIG_OFS = 0, /* 4 bytes */ + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4, /* 8 bytes */ + MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12, /* 2 bytes */ + MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14, /* 2 bytes */ + MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16, /* 4 bytes */ + MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20, /* 4 bytes */ + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */ + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32, /* 8 bytes */ + MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40, /* 8 bytes */ + MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48, /* 8 bytes */ + MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0, + MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10, + MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1, + MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32, + MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64, + MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192, + MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11 +}; + +typedef struct +{ + void *m_p; + size_t m_size, m_capacity; + mz_uint m_element_size; +} mz_zip_array; + +struct mz_zip_internal_state_tag +{ + mz_zip_array m_central_dir; + mz_zip_array m_central_dir_offsets; + mz_zip_array m_sorted_central_dir_offsets; + + /* The flags passed in when the archive is initially opened. */ + mz_uint32 m_init_flags; + + /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc. */ + mz_bool m_zip64; + + /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64 will also be slammed to true too, even if we didn't find a zip64 end of central dir header, etc.) */ + mz_bool m_zip64_has_extended_info_fields; + + void *m_pMem; +}; + +#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size + +#if defined(DEBUG) || defined(_DEBUG) +static MZ_FORCEINLINE mz_uint mz_zip_array_range_check(const mz_zip_array *pArray, mz_uint index) +{ + MZ_ASSERT(index < pArray->m_size); + return index; +} +#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[mz_zip_array_range_check(array_ptr, index)] +#else +#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index] +#endif + +static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray) +{ + pZip->m_pFree(pZip->m_pAlloc_opaque, pArray->m_p); + memset(pArray, 0, sizeof(mz_zip_array)); +} + +static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing) +{ + void *pNew_p; + size_t new_capacity = min_new_capacity; + MZ_ASSERT(pArray->m_element_size); + if (pArray->m_capacity >= min_new_capacity) + return MZ_TRUE; + if (growing) + { + new_capacity = MZ_MAX(1, pArray->m_capacity); + while (new_capacity < min_new_capacity) + new_capacity *= 2; + } + if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, pArray->m_element_size, new_capacity))) + return MZ_FALSE; + pArray->m_p = pNew_p; + pArray->m_capacity = new_capacity; + return MZ_TRUE; +} + +static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing) +{ + if (new_size > pArray->m_capacity) + { + if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) + return MZ_FALSE; + } + pArray->m_size = new_size; + return MZ_TRUE; +} + +static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip, mz_zip_error err_num) +{ + if (pZip) + pZip->m_last_error = err_num; + return MZ_FALSE; +} + +static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint flags) +{ + (void)flags; + if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + if (!pZip->m_pAlloc) + pZip->m_pAlloc = miniz_def_alloc_func; + if (!pZip->m_pFree) + pZip->m_pFree = miniz_def_free_func; + if (!pZip->m_pRealloc) + pZip->m_pRealloc = miniz_def_realloc_func; + + pZip->m_archive_size = 0; + pZip->m_central_directory_file_ofs = 0; + pZip->m_total_files = 0; + pZip->m_last_error = MZ_ZIP_NO_ERROR; + + if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) + return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); + + memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); + MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); + pZip->m_pState->m_init_flags = flags; + pZip->m_pState->m_zip64 = MZ_FALSE; + pZip->m_pState->m_zip64_has_extended_info_fields = MZ_FALSE; + + pZip->m_zip_mode = MZ_ZIP_MODE_READING; + + return MZ_TRUE; +} + +static MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index) +{ + const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; + const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index)); + mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS); + mz_uint8 l = 0, r = 0; + pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + pE = pL + MZ_MIN(l_len, r_len); + while (pL < pE) + { + if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) + break; + pL++; + pR++; + } + return (pL == pE) ? (l_len < r_len) : (l < r); +} + +#define MZ_SWAP_UINT32(a, b) \ + do \ + { \ + mz_uint32 t = a; \ + a = b; \ + b = t; \ + } \ + MZ_MACRO_END + +/* Heap sort of lowercased filenames, used to help accelerate plain central directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), but it could allocate memory.) */ +static void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) +{ + mz_zip_internal_state *pState = pZip->m_pState; + const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; + const mz_zip_array *pCentral_dir = &pState->m_central_dir; + mz_uint32 *pIndices; + mz_uint32 start, end; + const mz_uint32 size = pZip->m_total_files; + + if (size <= 1U) + return; + + pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); + + start = (size - 2U) >> 1U; + for (;;) + { + mz_uint64 child, root = start; + for (;;) + { + if ((child = (root << 1U) + 1U) >= size) + break; + child += (((child + 1U) < size) && (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U]))); + if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) + break; + MZ_SWAP_UINT32(pIndices[root], pIndices[child]); + root = child; + } + if (!start) + break; + start--; + } + + end = size - 1; + while (end > 0) + { + mz_uint64 child, root = 0; + MZ_SWAP_UINT32(pIndices[end], pIndices[0]); + for (;;) + { + if ((child = (root << 1U) + 1U) >= end) + break; + child += (((child + 1U) < end) && mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U])); + if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) + break; + MZ_SWAP_UINT32(pIndices[root], pIndices[child]); + root = child; + } + end--; + } +} + +static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip, mz_uint32 record_sig, mz_uint32 record_size, mz_int64 *pOfs) +{ + mz_int64 cur_file_ofs; + mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; + mz_uint8 *pBuf = (mz_uint8 *)buf_u32; + + /* Basic sanity checks - reject files which are too small */ + if (pZip->m_archive_size < record_size) + return MZ_FALSE; + + /* Find the record by scanning the file from the end towards the beginning. */ + cur_file_ofs = MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0); + for (;;) + { + int i, n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs); + + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n) + return MZ_FALSE; + + for (i = n - 4; i >= 0; --i) + { + mz_uint s = MZ_READ_LE32(pBuf + i); + if (s == record_sig) + { + if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size) + break; + } + } + + if (i >= 0) + { + cur_file_ofs += i; + break; + } + + /* Give up if we've searched the entire file, or we've gone back "too far" (~64kb) */ + if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= (MZ_UINT16_MAX + record_size))) + return MZ_FALSE; + + cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0); + } + + *pOfs = cur_file_ofs; + return MZ_TRUE; +} + +static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flags) +{ + mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0, cdir_disk_index = 0; + mz_uint64 cdir_ofs = 0; + mz_int64 cur_file_ofs = 0; + const mz_uint8 *p; + + mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; + mz_uint8 *pBuf = (mz_uint8 *)buf_u32; + mz_bool sort_central_dir = ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0); + mz_uint32 zip64_end_of_central_dir_locator_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; + mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32; + + mz_uint32 zip64_end_of_central_dir_header_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; + mz_uint8 *pZip64_end_of_central_dir = (mz_uint8 *)zip64_end_of_central_dir_header_u32; + + mz_uint64 zip64_end_of_central_dir_ofs = 0; + + /* Basic sanity checks - reject files which are too small, and check the first 4 bytes of the file to make sure a local header is there. */ + if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) + return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); + + if (!mz_zip_reader_locate_header_sig(pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs)) + return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR); + + /* Read and verify the end of central directory record. */ + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) + return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); + + if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) + return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); + + if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) + { + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE, pZip64_locator, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) + { + if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) + { + zip64_end_of_central_dir_ofs = MZ_READ_LE64(pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS); + if (zip64_end_of_central_dir_ofs > (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) + return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); + + if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs, pZip64_end_of_central_dir, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) + { + if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) + { + pZip->m_pState->m_zip64 = MZ_TRUE; + } + } + } + } + } + + pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS); + cdir_entries_on_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS); + num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS); + cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS); + cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS); + cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS); + + if (pZip->m_pState->m_zip64) + { + mz_uint32 zip64_total_num_of_disks = MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS); + mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS); + mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS); + mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS); + mz_uint64 zip64_size_of_central_directory = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS); + + if (zip64_size_of_end_of_central_dir_record < (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + if (zip64_total_num_of_disks != 1U) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); + + /* Check for miniz's practical limits */ + if (zip64_cdir_total_entries > (mz_uint64)MZ_UINT32_MAX) + return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); + + pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries; + + if (zip64_cdir_total_entries_on_this_disk > (mz_uint64)MZ_UINT32_MAX) + return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); + + cdir_entries_on_this_disk = (mz_uint32)zip64_cdir_total_entries_on_this_disk; + + /* Check for miniz's current practical limits (sorry, this should be enough for millions of files) */ + if (zip64_size_of_central_directory > (mz_uint64)MZ_UINT32_MAX) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); + + cdir_size = (mz_uint32)zip64_size_of_central_directory; + + num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS); + + cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS); + + cdir_ofs = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS); + } + + if (pZip->m_total_files != cdir_entries_on_this_disk) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); + + if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1))) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); + + if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + pZip->m_central_directory_file_ofs = cdir_ofs; + + if (pZip->m_total_files) + { + mz_uint i, n; + /* Read the entire central directory into a heap block, and allocate another heap block to hold the unsorted central dir file record offsets, and possibly another to hold the sorted indices. */ + if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, MZ_FALSE)) || + (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, pZip->m_total_files, MZ_FALSE))) + return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); + + if (sort_central_dir) + { + if (!mz_zip_array_resize(pZip, &pZip->m_pState->m_sorted_central_dir_offsets, pZip->m_total_files, MZ_FALSE)) + return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); + } + + if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, pZip->m_pState->m_central_dir.m_p, cdir_size) != cdir_size) + return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); + + /* Now create an index into the central directory file records, do some basic sanity checking on each record */ + p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p; + for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) + { + mz_uint total_header_size, disk_index, bit_flags, filename_size, ext_data_size; + mz_uint64 comp_size, decomp_size, local_header_ofs; + + if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, i) = (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p); + + if (sort_central_dir) + MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, mz_uint32, i) = i; + + comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); + decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); + local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); + filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); + ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS); + + if ((!pZip->m_pState->m_zip64_has_extended_info_fields) && + (ext_data_size) && + (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) == MZ_UINT32_MAX)) + { + /* Attempt to find zip64 extended information field in the entry's extra data */ + mz_uint32 extra_size_remaining = ext_data_size; + + if (extra_size_remaining) + { + const mz_uint8 *pExtra_data; + void* buf = NULL; + + if (MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + ext_data_size > n) + { + buf = MZ_MALLOC(ext_data_size); + if(buf==NULL) + return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); + + if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size, buf, ext_data_size) != ext_data_size) + { + MZ_FREE(buf); + return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); + } + + pExtra_data = (mz_uint8*)buf; + } + else + { + pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size; + } + + do + { + mz_uint32 field_id; + mz_uint32 field_data_size; + + if (extra_size_remaining < (sizeof(mz_uint16) * 2)) + { + MZ_FREE(buf); + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + } + + field_id = MZ_READ_LE16(pExtra_data); + field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); + + if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining) + { + MZ_FREE(buf); + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + } + + if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) + { + /* Ok, the archive didn't have any zip64 headers but it uses a zip64 extended information field so mark it as zip64 anyway (this can occur with infozip's zip util when it reads compresses files from stdin). */ + pZip->m_pState->m_zip64 = MZ_TRUE; + pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE; + break; + } + + pExtra_data += sizeof(mz_uint16) * 2 + field_data_size; + extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size; + } while (extra_size_remaining); + + MZ_FREE(buf); + } + } + + /* I've seen archives that aren't marked as zip64 that uses zip64 ext data, argh */ + if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) + { + if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && (decomp_size != comp_size)) || (decomp_size && !comp_size)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + } + + disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS); + if ((disk_index == MZ_UINT16_MAX) || ((disk_index != num_this_disk) && (disk_index != 1))) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); + + if (comp_size != MZ_UINT32_MAX) + { + if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + } + + bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); + if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); + + if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > n) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + n -= total_header_size; + p += total_header_size; + } + } + + if (sort_central_dir) + mz_zip_reader_sort_central_dir_offsets_by_filename(pZip); + + return MZ_TRUE; +} + +static mz_bool mz_zip_reader_end_internal(mz_zip_archive *pZip, mz_bool set_last_error) +{ + mz_bool status = MZ_TRUE; + + if (!pZip) + return MZ_FALSE; + + if ((!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) + { + if (set_last_error) + pZip->m_last_error = MZ_ZIP_INVALID_PARAMETER; + + return MZ_FALSE; + } + + if (pZip->m_pState) + { + mz_zip_internal_state *pState = pZip->m_pState; + pZip->m_pState = NULL; + + mz_zip_array_clear(pZip, &pState->m_central_dir); + mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); + mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); + + pZip->m_pFree(pZip->m_pAlloc_opaque, pState); + } + pZip->m_zip_mode = MZ_ZIP_MODE_INVALID; + + return status; +} + +mz_bool mz_zip_reader_end(mz_zip_archive *pZip) +{ + return mz_zip_reader_end_internal(pZip, MZ_TRUE); +} +mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags) +{ + if ((!pZip) || (!pZip->m_pRead)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + if (!mz_zip_reader_init_internal(pZip, flags)) + return MZ_FALSE; + + pZip->m_zip_type = MZ_ZIP_TYPE_USER; + pZip->m_archive_size = size; + + if (!mz_zip_reader_read_central_dir(pZip, flags)) + { + mz_zip_reader_end_internal(pZip, MZ_FALSE); + return MZ_FALSE; + } + + return MZ_TRUE; +} + +static MZ_FORCEINLINE const mz_uint8 *mz_zip_get_cdh(mz_zip_archive *pZip, mz_uint file_index) +{ + if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files)) + return NULL; + return &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); +} + +mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index) +{ + mz_uint m_bit_flag; + const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); + if (!p) + { + mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + return MZ_FALSE; + } + + m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); + return (m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) != 0; +} + +mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index) +{ + mz_uint bit_flag; + mz_uint method; + + const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); + if (!p) + { + mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + return MZ_FALSE; + } + + method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); + bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); + + if ((method != 0) && (method != MZ_DEFLATED)) + { + mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); + return MZ_FALSE; + } + + if (bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) + { + mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); + return MZ_FALSE; + } + + if (bit_flag & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG) + { + mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); + return MZ_FALSE; + } + + return MZ_TRUE; +} + +mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index) +{ + mz_uint filename_len, attribute_mapping_id, external_attr; + const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); + if (!p) + { + mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + return MZ_FALSE; + } + + filename_len = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); + if (filename_len) + { + if (*(p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_len - 1) == '/') + return MZ_TRUE; + } + + /* Bugfix: This code was also checking if the internal attribute was non-zero, which wasn't correct. */ + /* Most/all zip writers (hopefully) set DOS file/directory attributes in the low 16-bits, so check for the DOS directory flag and ignore the source OS ID in the created by field. */ + /* FIXME: Remove this check? Is it necessary - we already check the filename. */ + attribute_mapping_id = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS) >> 8; + (void)attribute_mapping_id; + + external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); + if ((external_attr & MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG) != 0) + { + return MZ_TRUE; + } + + return MZ_FALSE; +} + +static mz_bool mz_zip_file_stat_internal(mz_zip_archive *pZip, mz_uint file_index, const mz_uint8 *pCentral_dir_header, mz_zip_archive_file_stat *pStat, mz_bool *pFound_zip64_extra_data) +{ + mz_uint n; + const mz_uint8 *p = pCentral_dir_header; + + if (pFound_zip64_extra_data) + *pFound_zip64_extra_data = MZ_FALSE; + + if ((!p) || (!pStat)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + /* Extract fields from the central directory record. */ + pStat->m_file_index = file_index; + pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index); + pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS); + pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS); + pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); + pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); + pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS); + pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); + pStat->m_uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); + pStat->m_internal_attr = MZ_READ_LE16(p + MZ_ZIP_CDH_INTERNAL_ATTR_OFS); + pStat->m_external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); + pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); + + /* Copy as much of the filename and comment as possible. */ + n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); + n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1); + memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); + pStat->m_filename[n] = '\0'; + + n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS); + n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1); + pStat->m_comment_size = n; + memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), n); + pStat->m_comment[n] = '\0'; + + /* Set some flags for convienance */ + pStat->m_is_directory = mz_zip_reader_is_file_a_directory(pZip, file_index); + pStat->m_is_encrypted = mz_zip_reader_is_file_encrypted(pZip, file_index); + pStat->m_is_supported = mz_zip_reader_is_file_supported(pZip, file_index); + + /* See if we need to read any zip64 extended information fields. */ + /* Confusingly, these zip64 fields can be present even on non-zip64 archives (Debian zip on a huge files from stdin piped to stdout creates them). */ + if (MZ_MAX(MZ_MAX(pStat->m_comp_size, pStat->m_uncomp_size), pStat->m_local_header_ofs) == MZ_UINT32_MAX) + { + /* Attempt to find zip64 extended information field in the entry's extra data */ + mz_uint32 extra_size_remaining = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS); + + if (extra_size_remaining) + { + const mz_uint8 *pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); + + do + { + mz_uint32 field_id; + mz_uint32 field_data_size; + + if (extra_size_remaining < (sizeof(mz_uint16) * 2)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + field_id = MZ_READ_LE16(pExtra_data); + field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); + + if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) + { + const mz_uint8 *pField_data = pExtra_data + sizeof(mz_uint16) * 2; + mz_uint32 field_data_remaining = field_data_size; + + if (pFound_zip64_extra_data) + *pFound_zip64_extra_data = MZ_TRUE; + + if (pStat->m_uncomp_size == MZ_UINT32_MAX) + { + if (field_data_remaining < sizeof(mz_uint64)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + pStat->m_uncomp_size = MZ_READ_LE64(pField_data); + pField_data += sizeof(mz_uint64); + field_data_remaining -= sizeof(mz_uint64); + } + + if (pStat->m_comp_size == MZ_UINT32_MAX) + { + if (field_data_remaining < sizeof(mz_uint64)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + pStat->m_comp_size = MZ_READ_LE64(pField_data); + pField_data += sizeof(mz_uint64); + field_data_remaining -= sizeof(mz_uint64); + } + + if (pStat->m_local_header_ofs == MZ_UINT32_MAX) + { + if (field_data_remaining < sizeof(mz_uint64)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + pStat->m_local_header_ofs = MZ_READ_LE64(pField_data); + pField_data += sizeof(mz_uint64); + field_data_remaining -= sizeof(mz_uint64); + } + + break; + } + + pExtra_data += sizeof(mz_uint16) * 2 + field_data_size; + extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size; + } while (extra_size_remaining); + } + } + + return MZ_TRUE; +} + +static MZ_FORCEINLINE mz_bool mz_zip_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags) +{ + mz_uint i; + if (flags & MZ_ZIP_FLAG_CASE_SENSITIVE) + return 0 == memcmp(pA, pB, len); + for (i = 0; i < len; ++i) + if (MZ_TOLOWER(pA[i]) != MZ_TOLOWER(pB[i])) + return MZ_FALSE; + return MZ_TRUE; +} + +static MZ_FORCEINLINE int mz_zip_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len) +{ + const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; + mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS); + mz_uint8 l = 0, r = 0; + pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + pE = pL + MZ_MIN(l_len, r_len); + while (pL < pE) + { + if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) + break; + pL++; + pR++; + } + return (pL == pE) ? (int)(l_len - r_len) : (l - r); +} + +static mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename, mz_uint32 *pIndex) +{ + mz_zip_internal_state *pState = pZip->m_pState; + const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; + const mz_zip_array *pCentral_dir = &pState->m_central_dir; + mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); + const mz_uint32 size = pZip->m_total_files; + const mz_uint filename_len = (mz_uint)strlen(pFilename); + + if (pIndex) + *pIndex = 0; + + if (size) + { + /* yes I could use uint32_t's, but then we would have to add some special case checks in the loop, argh, and */ + /* honestly the major expense here on 32-bit CPU's will still be the filename compare */ + mz_int64 l = 0, h = (mz_int64)size - 1; + + while (l <= h) + { + mz_int64 m = l + ((h - l) >> 1); + mz_uint32 file_index = pIndices[(mz_uint32)m]; + + int comp = mz_zip_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len); + if (!comp) + { + if (pIndex) + *pIndex = file_index; + return MZ_TRUE; + } + else if (comp < 0) + l = m + 1; + else + h = m - 1; + } + } + + return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND); +} + +int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags) +{ + mz_uint32 index; + if (!mz_zip_reader_locate_file_v2(pZip, pName, pComment, flags, &index)) + return -1; + else + return (int)index; +} + +mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *pIndex) +{ + mz_uint file_index; + size_t name_len, comment_len; + + if (pIndex) + *pIndex = 0; + + if ((!pZip) || (!pZip->m_pState) || (!pName)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + /* See if we can use a binary search */ + if (((pZip->m_pState->m_init_flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0) && + (pZip->m_zip_mode == MZ_ZIP_MODE_READING) && + ((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size)) + { + return mz_zip_locate_file_binary_search(pZip, pName, pIndex); + } + + /* Locate the entry by scanning the entire central directory */ + name_len = strlen(pName); + if (name_len > MZ_UINT16_MAX) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + comment_len = pComment ? strlen(pComment) : 0; + if (comment_len > MZ_UINT16_MAX) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + for (file_index = 0; file_index < pZip->m_total_files; file_index++) + { + const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); + mz_uint filename_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS); + const char *pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; + if (filename_len < name_len) + continue; + if (comment_len) + { + mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), file_comment_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS); + const char *pFile_comment = pFilename + filename_len + file_extra_len; + if ((file_comment_len != comment_len) || (!mz_zip_string_equal(pComment, pFile_comment, file_comment_len, flags))) + continue; + } + if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len)) + { + int ofs = filename_len - 1; + do + { + if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\') || (pFilename[ofs] == ':')) + break; + } while (--ofs >= 0); + ofs++; + pFilename += ofs; + filename_len -= ofs; + } + if ((filename_len == name_len) && (mz_zip_string_equal(pName, pFilename, filename_len, flags))) + { + if (pIndex) + *pIndex = file_index; + return MZ_TRUE; + } + } + + return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND); +} + +static +mz_bool mz_zip_reader_extract_to_mem_no_alloc1(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size, const mz_zip_archive_file_stat *st) +{ + int status = TINFL_STATUS_DONE; + mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail; + mz_zip_archive_file_stat file_stat; + void *pRead_buf; + mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; + mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; + tinfl_decompressor inflator; + + if ((!pZip) || (!pZip->m_pState) || ((buf_size) && (!pBuf)) || ((user_read_buf_size) && (!pUser_read_buf)) || (!pZip->m_pRead)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + if (st) { + file_stat = *st; + } else + if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) + return MZ_FALSE; + + /* A directory or zero length file */ + if ((file_stat.m_is_directory) || (!file_stat.m_comp_size)) + return MZ_TRUE; + + /* Encryption and patch files are not supported. */ + if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); + + /* This function only supports decompressing stored and deflate. */ + if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) + return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); + + /* Ensure supplied output buffer is large enough. */ + needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size; + if (buf_size < needed_size) + return mz_zip_set_error(pZip, MZ_ZIP_BUF_TOO_SMALL); + + /* Read and parse the local directory entry. */ + cur_file_ofs = file_stat.m_local_header_ofs; + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) + return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); + + if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); + if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); + + if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) + { + /* The file is stored or the caller has requested the compressed data. */ + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, (size_t)needed_size) != needed_size) + return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); + +#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS + if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) == 0) + { + if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32) + return mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED); + } +#endif + + return MZ_TRUE; + } + + /* Decompress the file either directly from memory or from a file input buffer. */ + tinfl_init(&inflator); + + if (pZip->m_pState->m_pMem) + { + /* Read directly from the archive in memory. */ + pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; + read_buf_size = read_buf_avail = file_stat.m_comp_size; + comp_remaining = 0; + } + else if (pUser_read_buf) + { + /* Use a user provided read buffer. */ + if (!user_read_buf_size) + return MZ_FALSE; + pRead_buf = (mz_uint8 *)pUser_read_buf; + read_buf_size = user_read_buf_size; + read_buf_avail = 0; + comp_remaining = file_stat.m_comp_size; + } + else + { + /* Temporarily allocate a read buffer. */ + read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); + if (((sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF)) + return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); + + if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) + return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); + + read_buf_avail = 0; + comp_remaining = file_stat.m_comp_size; + } + + do + { + /* The size_t cast here should be OK because we've verified that the output buffer is >= file_stat.m_uncomp_size above */ + size_t in_buf_size, out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs); + if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) + { + read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); + if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) + { + status = TINFL_STATUS_FAILED; + mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); + break; + } + cur_file_ofs += read_buf_avail; + comp_remaining -= read_buf_avail; + read_buf_ofs = 0; + } + in_buf_size = (size_t)read_buf_avail; + status = tinfl_decompress(&inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0)); + read_buf_avail -= in_buf_size; + read_buf_ofs += in_buf_size; + out_buf_ofs += out_buf_size; + } while (status == TINFL_STATUS_NEEDS_MORE_INPUT); + + if (status == TINFL_STATUS_DONE) + { + /* Make sure the entire file was decompressed, and check its CRC. */ + if (out_buf_ofs != file_stat.m_uncomp_size) + { + mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); + status = TINFL_STATUS_FAILED; + } +#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS + else if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32) + { + mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED); + status = TINFL_STATUS_FAILED; + } +#endif + } + + if ((!pZip->m_pState->m_pMem) && (!pUser_read_buf)) + pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); + + return status == TINFL_STATUS_DONE; +} + +#if 0 /* unused for now */ +mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) +{ + return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size, NULL); +} + +mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags) +{ + return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, NULL, 0, NULL); +} +#endif + +void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags) +{ + mz_zip_archive_file_stat file_stat; + mz_uint64 alloc_size; + void *pBuf; + + if (pSize) + *pSize = 0; + + if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) + return NULL; + + alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size; + if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF)) + { + mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); + return NULL; + } + + if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size))) + { + mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); + return NULL; + } + + if (!mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, (size_t)alloc_size, flags, NULL, 0, &file_stat)) + { + pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); + return NULL; + } + + if (pSize) + *pSize = (size_t)alloc_size; + return pBuf; +} + +void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags) +{ + mz_uint32 file_index; + if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) + { + if (pSize) + *pSize = 0; + return NULL; + } + return mz_zip_reader_extract_to_heap(pZip, file_index, pSize, flags); +} + +/* ------------------- Misc utils */ + +#if 0 /* unused for now */ +mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip) +{ + return pZip ? pZip->m_zip_mode : MZ_ZIP_MODE_INVALID; +} + +mz_zip_type mz_zip_get_type(mz_zip_archive *pZip) +{ + return pZip ? pZip->m_zip_type : MZ_ZIP_TYPE_INVALID; +} + +mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num) +{ + mz_zip_error prev_err; + + if (!pZip) + return MZ_ZIP_INVALID_PARAMETER; + + prev_err = pZip->m_last_error; + + pZip->m_last_error = err_num; + return prev_err; +} + +mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip) +{ + if (!pZip) + return MZ_ZIP_INVALID_PARAMETER; + + return pZip->m_last_error; +} + +mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip) +{ + return mz_zip_set_last_error(pZip, MZ_ZIP_NO_ERROR); +} + +mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip) +{ + mz_zip_error prev_err; + + if (!pZip) + return MZ_ZIP_INVALID_PARAMETER; + + prev_err = pZip->m_last_error; + + pZip->m_last_error = MZ_ZIP_NO_ERROR; + return prev_err; +} + +const char *mz_zip_get_error_string(mz_zip_error mz_err) +{ + switch (mz_err) + { + case MZ_ZIP_NO_ERROR: + return "no error"; + case MZ_ZIP_UNDEFINED_ERROR: + return "undefined error"; + case MZ_ZIP_TOO_MANY_FILES: + return "too many files"; + case MZ_ZIP_FILE_TOO_LARGE: + return "file too large"; + case MZ_ZIP_UNSUPPORTED_METHOD: + return "unsupported method"; + case MZ_ZIP_UNSUPPORTED_ENCRYPTION: + return "unsupported encryption"; + case MZ_ZIP_UNSUPPORTED_FEATURE: + return "unsupported feature"; + case MZ_ZIP_FAILED_FINDING_CENTRAL_DIR: + return "failed finding central directory"; + case MZ_ZIP_NOT_AN_ARCHIVE: + return "not a ZIP archive"; + case MZ_ZIP_INVALID_HEADER_OR_CORRUPTED: + return "invalid header or archive is corrupted"; + case MZ_ZIP_UNSUPPORTED_MULTIDISK: + return "unsupported multidisk archive"; + case MZ_ZIP_DECOMPRESSION_FAILED: + return "decompression failed or archive is corrupted"; + case MZ_ZIP_COMPRESSION_FAILED: + return "compression failed"; + case MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE: + return "unexpected decompressed size"; + case MZ_ZIP_CRC_CHECK_FAILED: + return "CRC-32 check failed"; + case MZ_ZIP_UNSUPPORTED_CDIR_SIZE: + return "unsupported central directory size"; + case MZ_ZIP_ALLOC_FAILED: + return "allocation failed"; + case MZ_ZIP_FILE_OPEN_FAILED: + return "file open failed"; + case MZ_ZIP_FILE_CREATE_FAILED: + return "file create failed"; + case MZ_ZIP_FILE_WRITE_FAILED: + return "file write failed"; + case MZ_ZIP_FILE_READ_FAILED: + return "file read failed"; + case MZ_ZIP_FILE_CLOSE_FAILED: + return "file close failed"; + case MZ_ZIP_FILE_SEEK_FAILED: + return "file seek failed"; + case MZ_ZIP_FILE_STAT_FAILED: + return "file stat failed"; + case MZ_ZIP_INVALID_PARAMETER: + return "invalid parameter"; + case MZ_ZIP_INVALID_FILENAME: + return "invalid filename"; + case MZ_ZIP_BUF_TOO_SMALL: + return "buffer too small"; + case MZ_ZIP_INTERNAL_ERROR: + return "internal error"; + case MZ_ZIP_FILE_NOT_FOUND: + return "file not found"; + case MZ_ZIP_ARCHIVE_TOO_LARGE: + return "archive is too large"; + case MZ_ZIP_VALIDATION_FAILED: + return "validation failed"; + case MZ_ZIP_WRITE_CALLBACK_FAILED: + return "write calledback failed"; + default: + break; + } + + return "unknown error"; +} + +/* Note: Just because the archive is not zip64 doesn't necessarily mean it doesn't have Zip64 extended information extra field, argh. */ +mz_bool mz_zip_is_zip64(mz_zip_archive *pZip) +{ + if ((!pZip) || (!pZip->m_pState)) + return MZ_FALSE; + + return pZip->m_pState->m_zip64; +} + +size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip) +{ + if ((!pZip) || (!pZip->m_pState)) + return 0; + + return pZip->m_pState->m_central_dir.m_size; +} + +mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip) +{ + return pZip ? pZip->m_total_files : 0; +} + +mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip) +{ + if (!pZip) + return 0; + return pZip->m_archive_size; +} + +MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip) +{ + if ((!pZip) || (!pZip->m_pState)) + return 0; + return pZip->m_pState->m_pFile; +} + +size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n) +{ + if ((!pZip) || (!pZip->m_pState) || (!pBuf) || (!pZip->m_pRead)) + return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + + return pZip->m_pRead(pZip->m_pIO_opaque, file_ofs, pBuf, n); +} + +mz_bool mz_zip_end(mz_zip_archive *pZip) +{ + if (!pZip) + return MZ_FALSE; + + if (pZip->m_zip_mode == MZ_ZIP_MODE_READING) + return mz_zip_reader_end(pZip); + + return MZ_FALSE; +} + +mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size) +{ + mz_uint n; + const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); + if (!p) + { + if (filename_buf_size) + pFilename[0] = '\0'; + mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); + return 0; + } + n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); + if (filename_buf_size) + { + n = MZ_MIN(n, filename_buf_size - 1); + memcpy(pFilename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); + pFilename[n] = '\0'; + } + return n + 1; +} +#endif /* unused */ + +mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat) +{ + return mz_zip_file_stat_internal(pZip, file_index, mz_zip_get_cdh(pZip, file_index), pStat, NULL); +} + +#ifdef __cplusplus +} +#endif + +#endif /*#ifndef MINIZ_NO_ARCHIVE_APIS*/ diff --git a/Quake/miniz.h b/Quake/miniz.h new file mode 100644 index 0000000..362a8ca --- /dev/null +++ b/Quake/miniz.h @@ -0,0 +1,726 @@ +#ifndef Q_MINIZ_H +#define Q_MINIZ_H 1 + +#ifndef MINIZ_EXPORT +#define MINIZ_EXPORT +#endif + +/* miniz.c 2.2.0 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing + See "unlicense" statement at the end of this file. + Rich Geldreich <richgel99@gmail.com>, last updated Oct. 13, 2013 + Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt + + Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define + MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros). + + * Low-level Deflate/Inflate implementation notes: + + Compression: Use the "tdefl" API's. The compressor supports raw, static, and dynamic blocks, lazy or + greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses + approximately as well as zlib. + + Decompression: Use the "tinfl" API's. The entire decompressor is implemented as a single function + coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or into a memory + block large enough to hold the entire file. + + The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation. + + * zlib-style API notes: + + miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in + zlib replacement in many apps: + The z_stream struct, optional memory allocation callbacks + deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound + inflateInit/inflateInit2/inflate/inflateReset/inflateEnd + compress, compress2, compressBound, uncompress + CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines. + Supports raw deflate streams or standard zlib streams with adler-32 checking. + + Limitations: + The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries. + I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but + there are no guarantees that miniz.c pulls this off perfectly. + + * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by + Alex Evans. Supports 1-4 bytes/pixel images. + + * ZIP archive API notes: + + The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to + get the job done with minimal fuss. There are simple API's to retrieve file information, read files from + existing archives, create new archives, append new files to existing archives, or clone archive data from + one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h), + or you can specify custom file read/write callbacks. + + - Archive reading: Just call this function to read a single file from a disk archive: + + void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, + size_t *pSize, mz_uint zip_flags); + + For more complex cases, use the "mz_zip_reader" functions. Upon opening an archive, the entire central + directory is located and read as-is into memory, and subsequent file access only occurs when reading individual files. + + - Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file: + + int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); + + The locate operation can optionally check file comments too, which (as one example) can be used to identify + multiple versions of the same file in an archive. This function uses a simple linear search through the central + directory, so it's not very fast. + + Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and + retrieve detailed info on each file by calling mz_zip_reader_file_stat(). + + - Archive creation: Use the "mz_zip_writer" functions. The ZIP writer immediately writes compressed file data + to disk and builds an exact image of the central directory in memory. The central directory image is written + all at once at the end of the archive file when the archive is finalized. + + The archive writer can optionally align each file's local header and file data to any power of 2 alignment, + which can be useful when the archive will be read from optical media. Also, the writer supports placing + arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still + readable by any ZIP tool. + + - Archive appending: The simple way to add a single file to an archive is to call this function: + + mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, + const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); + + The archive will be created if it doesn't already exist, otherwise it'll be appended to. + Note the appending is done in-place and is not an atomic operation, so if something goes wrong + during the operation it's possible the archive could be left without a central directory (although the local + file headers and file data will be fine, so the archive will be recoverable). + + For more complex archive modification scenarios: + 1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to + preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the + compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and + you're done. This is safe but requires a bunch of temporary disk space or heap memory. + + 2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(), + append new files as needed, then finalize the archive which will write an updated central directory to the + original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a + possibility that the archive's central directory could be lost with this method if anything goes wrong, though. + + - ZIP archive support limitations: + No spanning support. Extraction functions can only handle unencrypted, stored or deflated files. + Requires streams capable of seeking. + + * This is a header file library, like stb_image.c. To get only a header file, either cut and paste the + below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it. + + * Important: For best perf. be sure to customize the below macros for your target platform: + #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 + #define MINIZ_LITTLE_ENDIAN 1 + #define MINIZ_HAS_64BIT_REGISTERS 1 + + * On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before including miniz.c to ensure miniz + uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files + (i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes). +*/ + +#if 1 /* QUAKESPASM-SPECIFIC CONFIG: */ + +#ifndef NDEBUG +#define NDEBUG /* disable assert()s */ +#endif + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#ifdef USE_SDL2 +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + +/* Defines to completely disable specific portions of miniz.c: + If all macros here are defined the only functionality remaining will be CRC-32 and adler-32. */ + +/* Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. */ +#define MINIZ_NO_STDIO + +/* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */ +/* get/set file times, and the C run-time funcs that get/set times won't be called. */ +/* The current downside is the times written to your archives will be from 1979. */ +#define MINIZ_NO_TIME + +/* Define MINIZ_NO_DEFLATE_APIS to disable all compression API's. */ +#define MINIZ_NO_DEFLATE_APIS + +/* Define MINIZ_NO_INFLATE_APIS to disable all decompression API's. */ +/*#define MINIZ_NO_INFLATE_APIS */ + +/* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */ +/*#define MINIZ_NO_ARCHIVE_APIS */ + +/* Define MINIZ_NO_ARCHIVE_WRITING_APIS to disable all writing related ZIP archive API's. */ +#define MINIZ_NO_ARCHIVE_WRITING_APIS + +/* Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. */ +#define MINIZ_NO_ZLIB_APIS + +/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */ +#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES + +/* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. + Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc + callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user + functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. */ +/*#define MINIZ_NO_MALLOC */ + +#define MINIZ_LITTLE_ENDIAN (SDL_BYTEORDER == SDL_LIL_ENDIAN) + +#endif /* QUAKESPASM-SPECIFIC */ + +#ifdef MINIZ_NO_INFLATE_APIS +#define MINIZ_NO_ARCHIVE_APIS +#endif + +#ifdef MINIZ_NO_DEFLATE_APIS +#define MINIZ_NO_ARCHIVE_WRITING_APIS +#endif + +#if defined(__TINYC__) && (defined(__linux) || defined(__linux__)) +/* TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux */ +#define MINIZ_NO_TIME +#endif + +#include <stddef.h> + +#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__) +/* MINIZ_X86_OR_X64_CPU is only used to help set the below macros. */ +#define MINIZ_X86_OR_X64_CPU 1 +#else +#define MINIZ_X86_OR_X64_CPU 0 +#endif + +/* Set MINIZ_LITTLE_ENDIAN only if not set */ +#if !defined(MINIZ_LITTLE_ENDIAN) +#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) + +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */ +#define MINIZ_LITTLE_ENDIAN 1 +#else +#define MINIZ_LITTLE_ENDIAN 0 +#endif + +#else + +#if MINIZ_X86_OR_X64_CPU +#define MINIZ_LITTLE_ENDIAN 1 +#else +#define MINIZ_LITTLE_ENDIAN 0 +#endif + +#endif +#endif + +#if defined(__has_feature) +#if __has_feature(undefined_behavior_sanitizer) +#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0 +#endif +#endif + +/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */ +#if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES) +#if MINIZ_X86_OR_X64_CPU +/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */ +#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 +#define MINIZ_UNALIGNED_USE_MEMCPY +#else +#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0 +#endif +#endif + +#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__) +/* Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions). */ +#define MINIZ_HAS_64BIT_REGISTERS 1 +#else +#define MINIZ_HAS_64BIT_REGISTERS 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------- zlib-style API Definitions. */ + +/* For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits! */ +typedef unsigned long mz_ulong; + +#define MZ_CRC32_INIT (0) +#if 0 +/* mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL. */ +MINIZ_EXPORT mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len); +#endif + +/* Method */ +#define MZ_DEFLATED 8 + +/* Heap allocation callbacks. +Note that mz_alloc_func parameter types purposely differ from zlib's: items/size is size_t, not unsigned long. */ +typedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size); +typedef void (*mz_free_func)(void *opaque, void *address); +typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size); + +#define MZ_VERSION "10.2.0" +#define MZ_VERNUM 0xA100 +#define MZ_VER_MAJOR 10 +#define MZ_VER_MINOR 2 +#define MZ_VER_REVISION 0 +#define MZ_VER_SUBREVISION 0 + +#ifdef __cplusplus +} +#endif + +#include <assert.h> +#include <stdlib.h> +#include <string.h> + +/* ------------------- Types and macros */ +typedef unsigned char mz_uint8; +typedef signed short mz_int16; +typedef unsigned short mz_uint16; +typedef unsigned int mz_uint32; +typedef unsigned int mz_uint; +#if defined(_MSC_VER) && (_MSC_VER < 1600) +typedef signed __int64 mz_int64; +typedef unsigned __int64 mz_uint64; +#else +#include <stdint.h> +typedef int64_t mz_int64; +typedef uint64_t mz_uint64; +#endif +typedef int mz_bool; + +#define MZ_FALSE (0) +#define MZ_TRUE (1) + +/* Works around MSVC's spammy "warning C4127: conditional expression is constant" message. */ +#ifdef _MSC_VER +#define MZ_MACRO_END while (0, 0) +#else +#define MZ_MACRO_END while (0) +#endif + +#define MZ_FILE void * + +#define MZ_ASSERT(x) assert(x) + +#define MZ_MALLOC(x) malloc(x) +#define MZ_FREE(x) free(x) +#define MZ_REALLOC(p, x) realloc(p, x) + +#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj)) +#define MZ_CLEAR_ARR(obj) memset((obj), 0, sizeof(obj)) +#define MZ_CLEAR_PTR(obj) memset((obj), 0, sizeof(*obj)) + +#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN +#define MZ_READ_LE16(p) *((const mz_uint16 *)(p)) +#define MZ_READ_LE32(p) *((const mz_uint32 *)(p)) +#else +#define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U)) +#define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U)) +#endif + +#define MZ_READ_LE64(p) (((mz_uint64)MZ_READ_LE32(p)) | (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) << 32U)) + +#ifdef _MSC_VER +#define MZ_FORCEINLINE __forceinline +#elif (defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))) || defined(__clang__) +#define MZ_FORCEINLINE __inline__ __attribute__((__always_inline__)) +#else +#define MZ_FORCEINLINE inline +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if 0 +extern MINIZ_EXPORT void *miniz_def_alloc_func(void *opaque, size_t items, size_t size); +extern MINIZ_EXPORT void miniz_def_free_func(void *opaque, void *address); +extern MINIZ_EXPORT void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size); +#endif + +#define MZ_UINT16_MAX (0xFFFFU) +#define MZ_UINT32_MAX (0xFFFFFFFFU) + +#ifdef __cplusplus +} +#endif + + +/* ------------------- Low-level Decompression API Definitions */ + +#ifndef MINIZ_NO_INFLATE_APIS + +#ifdef __cplusplus +extern "C" { +#endif +/* Decompression flags used by tinfl_decompress(). */ +/* TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the input is a raw deflate stream. */ +/* TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer. If clear, the input buffer contains all remaining input. */ +/* TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB). */ +/* TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes. */ +enum +{ + TINFL_FLAG_PARSE_ZLIB_HEADER = 1, + TINFL_FLAG_HAS_MORE_INPUT = 2, + TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4, + TINFL_FLAG_COMPUTE_ADLER32 = 8 +}; + +struct tinfl_decompressor_tag; +typedef struct tinfl_decompressor_tag tinfl_decompressor; + +/* Max size of LZ dictionary. */ +#define TINFL_LZ_DICT_SIZE 32768 + +/* Return status. */ +typedef enum { + /* This flags indicates the inflator needs 1 or more input bytes to make forward progress, but the caller is indicating that no more are available. The compressed data */ + /* is probably corrupted. If you call the inflator again with more bytes it'll try to continue processing the input but this is a BAD sign (either the data is corrupted or you called it incorrectly). */ + /* If you call it again with no input you'll just get TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS again. */ + TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS = -4, + + /* This flag indicates that one or more of the input parameters was obviously bogus. (You can try calling it again, but if you get this error the calling code is wrong.) */ + TINFL_STATUS_BAD_PARAM = -3, + + /* This flags indicate the inflator is finished but the adler32 check of the uncompressed data didn't match. If you call it again it'll return TINFL_STATUS_DONE. */ + TINFL_STATUS_ADLER32_MISMATCH = -2, + + /* This flags indicate the inflator has somehow failed (bad code, corrupted input, etc.). If you call it again without resetting via tinfl_init() it it'll just keep on returning the same status failure code. */ + TINFL_STATUS_FAILED = -1, + + /* Any status code less than TINFL_STATUS_DONE must indicate a failure. */ + + /* This flag indicates the inflator has returned every byte of uncompressed data that it can, has consumed every byte that it needed, has successfully reached the end of the deflate stream, and */ + /* if zlib headers and adler32 checking enabled that it has successfully checked the uncompressed data's adler32. If you call it again you'll just get TINFL_STATUS_DONE over and over again. */ + TINFL_STATUS_DONE = 0, + + /* This flag indicates the inflator MUST have more input data (even 1 byte) before it can make any more forward progress, or you need to clear the TINFL_FLAG_HAS_MORE_INPUT */ + /* flag on the next call if you don't have any more source data. If the source data was somehow corrupted it's also possible (but unlikely) for the inflator to keep on demanding input to */ + /* proceed, so be sure to properly set the TINFL_FLAG_HAS_MORE_INPUT flag. */ + TINFL_STATUS_NEEDS_MORE_INPUT = 1, + + /* This flag indicates the inflator definitely has 1 or more bytes of uncompressed data available, but it cannot write this data into the output buffer. */ + /* Note if the source compressed data was corrupted it's possible for the inflator to return a lot of uncompressed data to the caller. I've been assuming you know how much uncompressed data to expect */ + /* (either exact or worst case) and will stop calling the inflator and fail after receiving too much. In pure streaming scenarios where you have no idea how many bytes to expect this may not be possible */ + /* so I may need to add some code to address this. */ + TINFL_STATUS_HAS_MORE_OUTPUT = 2 +} tinfl_status; + +/* Initializes the decompressor to its initial state. */ +#define tinfl_init(r) \ + do \ + { \ + (r)->m_state = 0; \ + } \ + MZ_MACRO_END +#define tinfl_get_adler32(r) (r)->m_check_adler32 + +/* Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability. */ +/* This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output. */ +MINIZ_EXPORT tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags); + +/* Internal/private bits follow. */ +enum +{ + TINFL_MAX_HUFF_TABLES = 3, + TINFL_MAX_HUFF_SYMBOLS_0 = 288, + TINFL_MAX_HUFF_SYMBOLS_1 = 32, + TINFL_MAX_HUFF_SYMBOLS_2 = 19, + TINFL_FAST_LOOKUP_BITS = 10, + TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS +}; + +#if MINIZ_HAS_64BIT_REGISTERS +#define TINFL_USE_64BIT_BITBUF 1 +#else +#define TINFL_USE_64BIT_BITBUF 0 +#endif + +#if TINFL_USE_64BIT_BITBUF +typedef mz_uint64 tinfl_bit_buf_t; +#define TINFL_BITBUF_SIZE (64) +#else +typedef mz_uint32 tinfl_bit_buf_t; +#define TINFL_BITBUF_SIZE (32) +#endif + +struct tinfl_decompressor_tag +{ + mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES]; + tinfl_bit_buf_t m_bit_buf; + size_t m_dist_from_out_buf_start; + mz_int16 m_look_up[TINFL_MAX_HUFF_TABLES][TINFL_FAST_LOOKUP_SIZE]; + mz_int16 m_tree_0[TINFL_MAX_HUFF_SYMBOLS_0 * 2]; + mz_int16 m_tree_1[TINFL_MAX_HUFF_SYMBOLS_1 * 2]; + mz_int16 m_tree_2[TINFL_MAX_HUFF_SYMBOLS_2 * 2]; + mz_uint8 m_code_size_0[TINFL_MAX_HUFF_SYMBOLS_0]; + mz_uint8 m_code_size_1[TINFL_MAX_HUFF_SYMBOLS_1]; + mz_uint8 m_code_size_2[TINFL_MAX_HUFF_SYMBOLS_2]; + mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137]; +}; + +#ifdef __cplusplus +} +#endif + +#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/ + + +/* ------------------- ZIP archive reading/writing */ + +#ifndef MINIZ_NO_ARCHIVE_APIS + +#ifdef __cplusplus +extern "C" { +#endif + +enum +{ + /* Note: These enums can be reduced as needed to save memory or stack space - they are pretty conservative. */ + MZ_ZIP_MAX_IO_BUF_SIZE = 64 * 1024, + MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 512, + MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 512 +}; + +typedef struct +{ + /* Central directory file index. */ + mz_uint32 m_file_index; + + /* Byte offset of this entry in the archive's central directory. Note we currently only support up to UINT_MAX or less bytes in the central dir. */ + mz_uint64 m_central_dir_ofs; + + /* These fields are copied directly from the zip's central dir. */ + mz_uint16 m_version_made_by; + mz_uint16 m_version_needed; + mz_uint16 m_bit_flag; + mz_uint16 m_method; + + /* CRC-32 of uncompressed data. */ + mz_uint32 m_crc32; + + /* File's compressed size. */ + mz_uint64 m_comp_size; + + /* File's uncompressed size. Note, I've seen some old archives where directory entries had 512 bytes for their uncompressed sizes, but when you try to unpack them you actually get 0 bytes. */ + mz_uint64 m_uncomp_size; + + /* Zip internal and external file attributes. */ + mz_uint16 m_internal_attr; + mz_uint32 m_external_attr; + + /* Entry's local header file offset in bytes. */ + mz_uint64 m_local_header_ofs; + + /* Size of comment in bytes. */ + mz_uint32 m_comment_size; + + /* MZ_TRUE if the entry appears to be a directory. */ + mz_bool m_is_directory; + + /* MZ_TRUE if the entry uses encryption/strong encryption (which miniz_zip doesn't support) */ + mz_bool m_is_encrypted; + + /* MZ_TRUE if the file is not encrypted, a patch file, and if it uses a compression method we support. */ + mz_bool m_is_supported; + + /* Filename. If string ends in '/' it's a subdirectory entry. */ + /* Guaranteed to be zero terminated, may be truncated to fit. */ + char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE]; + + /* Comment field. */ + /* Guaranteed to be zero terminated, may be truncated to fit. */ + char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE]; + +} mz_zip_archive_file_stat; + +typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n); +typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n); +typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque); + +struct mz_zip_internal_state_tag; +typedef struct mz_zip_internal_state_tag mz_zip_internal_state; + +typedef enum { + MZ_ZIP_MODE_INVALID = 0, + MZ_ZIP_MODE_READING = 1, + MZ_ZIP_MODE_WRITING = 2, + MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3 +} mz_zip_mode; + +typedef enum { + MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100, + MZ_ZIP_FLAG_IGNORE_PATH = 0x0200, + MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400, + MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800, + MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG = 0x1000, /* if enabled, mz_zip_reader_locate_file() will be called on each file as its validated to ensure the func finds the file in the central dir (intended for testing) */ + MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY = 0x2000, /* validate the local headers, but don't decompress the entire file and check the crc32 */ + MZ_ZIP_FLAG_WRITE_ZIP64 = 0x4000, /* always use the zip64 file format, instead of the original zip file format with automatic switch to zip64. Use as flags parameter with mz_zip_writer_init*_v2 */ + MZ_ZIP_FLAG_WRITE_ALLOW_READING = 0x8000, + MZ_ZIP_FLAG_ASCII_FILENAME = 0x10000, + /*After adding a compressed file, seek back + to local file header and set the correct sizes*/ + MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE = 0x20000 +} mz_zip_flags; + +typedef enum { + MZ_ZIP_TYPE_INVALID = 0, + MZ_ZIP_TYPE_USER, + MZ_ZIP_TYPE_MEMORY, + MZ_ZIP_TYPE_HEAP, + MZ_ZIP_TYPE_FILE, + MZ_ZIP_TYPE_CFILE, + MZ_ZIP_TOTAL_TYPES +} mz_zip_type; + +/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or modify this enum. */ +typedef enum { + MZ_ZIP_NO_ERROR = 0, + MZ_ZIP_UNDEFINED_ERROR, + MZ_ZIP_TOO_MANY_FILES, + MZ_ZIP_FILE_TOO_LARGE, + MZ_ZIP_UNSUPPORTED_METHOD, + MZ_ZIP_UNSUPPORTED_ENCRYPTION, + MZ_ZIP_UNSUPPORTED_FEATURE, + MZ_ZIP_FAILED_FINDING_CENTRAL_DIR, + MZ_ZIP_NOT_AN_ARCHIVE, + MZ_ZIP_INVALID_HEADER_OR_CORRUPTED, + MZ_ZIP_UNSUPPORTED_MULTIDISK, + MZ_ZIP_DECOMPRESSION_FAILED, + MZ_ZIP_COMPRESSION_FAILED, + MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE, + MZ_ZIP_CRC_CHECK_FAILED, + MZ_ZIP_UNSUPPORTED_CDIR_SIZE, + MZ_ZIP_ALLOC_FAILED, + MZ_ZIP_FILE_OPEN_FAILED, + MZ_ZIP_FILE_CREATE_FAILED, + MZ_ZIP_FILE_WRITE_FAILED, + MZ_ZIP_FILE_READ_FAILED, + MZ_ZIP_FILE_CLOSE_FAILED, + MZ_ZIP_FILE_SEEK_FAILED, + MZ_ZIP_FILE_STAT_FAILED, + MZ_ZIP_INVALID_PARAMETER, + MZ_ZIP_INVALID_FILENAME, + MZ_ZIP_BUF_TOO_SMALL, + MZ_ZIP_INTERNAL_ERROR, + MZ_ZIP_FILE_NOT_FOUND, + MZ_ZIP_ARCHIVE_TOO_LARGE, + MZ_ZIP_VALIDATION_FAILED, + MZ_ZIP_WRITE_CALLBACK_FAILED, + MZ_ZIP_TOTAL_ERRORS +} mz_zip_error; + +typedef struct +{ + mz_uint64 m_archive_size; + mz_uint64 m_central_directory_file_ofs; + + /* We only support up to UINT32_MAX files in zip64 mode. */ + mz_uint32 m_total_files; + mz_zip_mode m_zip_mode; + mz_zip_type m_zip_type; + mz_zip_error m_last_error; + + mz_uint64 m_file_offset_alignment; + + mz_alloc_func m_pAlloc; + mz_free_func m_pFree; + mz_realloc_func m_pRealloc; + void *m_pAlloc_opaque; + + mz_file_read_func m_pRead; + mz_file_write_func m_pWrite; + mz_file_needs_keepalive m_pNeeds_keepalive; + void *m_pIO_opaque; + + mz_zip_internal_state *m_pState; + +} mz_zip_archive; + +/* -------- ZIP reading */ + +/* Inits a ZIP archive reader. */ +/* These functions read and validate the archive's central directory. */ +MINIZ_EXPORT mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags); + +/* Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was used. */ +MINIZ_EXPORT mz_bool mz_zip_reader_end(mz_zip_archive *pZip); + +/* -------- ZIP reading or writing */ + +MINIZ_EXPORT mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip); +MINIZ_EXPORT mz_zip_type mz_zip_get_type(mz_zip_archive *pZip); + +/* Returns the total number of files in the archive. */ +MINIZ_EXPORT mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip); + +MINIZ_EXPORT mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip); +MINIZ_EXPORT MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip); + +/* Reads n bytes of raw archive data, starting at file offset file_ofs, to pBuf. */ +MINIZ_EXPORT size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n); + +/* All mz_zip funcs set the m_last_error field in the mz_zip_archive struct. These functions retrieve/manipulate this field. */ +/* Note that the m_last_error functionality is not thread safe. */ +MINIZ_EXPORT mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num); +MINIZ_EXPORT mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip); +MINIZ_EXPORT mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip); +MINIZ_EXPORT mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip); +MINIZ_EXPORT const char *mz_zip_get_error_string(mz_zip_error mz_err); + +/* MZ_TRUE if the archive file entry is a directory entry. */ +MINIZ_EXPORT mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index); + +/* MZ_TRUE if the file is encrypted/strong encrypted. */ +MINIZ_EXPORT mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index); + +/* MZ_TRUE if the compression method is supported, and the file is not encrypted, and the file is not a compressed patch file. */ +MINIZ_EXPORT mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index); + +/* Retrieves the filename of an archive file entry. */ +/* Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of bytes needed to fully store the filename. */ +MINIZ_EXPORT mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size); + +/* Attempts to locates a file in the archive's central directory. */ +/* Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH */ +/* Returns -1 if the file cannot be found. */ +MINIZ_EXPORT int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); +MINIZ_EXPORT mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *file_index); + +/* Returns detailed information about an archive file entry. */ +MINIZ_EXPORT mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat); + +/* MZ_TRUE if the file is in zip64 format. */ +/* A file is considered zip64 if it contained a zip64 end of central directory marker, or if it contained any zip64 extended file information fields in the central directory. */ +MINIZ_EXPORT mz_bool mz_zip_is_zip64(mz_zip_archive *pZip); + +/* Returns the total central directory size in bytes. */ +/* The current max supported size is <= MZ_UINT32_MAX. */ +MINIZ_EXPORT size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip); + +/* Extracts a archive file to a dynamically allocated heap buffer. */ +/* The memory will be allocated via the mz_zip_archive's alloc/realloc functions. */ +/* Returns NULL and sets the last error on failure. */ +MINIZ_EXPORT void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags); +MINIZ_EXPORT void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags); + +/* Universal end function - calls either mz_zip_reader_end() or mz_zip_writer_end(). */ +MINIZ_EXPORT mz_bool mz_zip_end(mz_zip_archive *pZip); + +#ifdef __cplusplus +} +#endif + +#endif /* MINIZ_NO_ARCHIVE_APIS */ + +#endif /* Q_MINIZ_H */ diff --git a/Quake/modelgen.h b/Quake/modelgen.h new file mode 100644 index 0000000..92dbcf4 --- /dev/null +++ b/Quake/modelgen.h @@ -0,0 +1,141 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _MODELGEN_H +#define _MODELGEN_H + +// +// modelgen.h: header file for model generation program +// + +// ********************************************************* +// * This file must be identical in the modelgen directory * +// * and in the Quake directory, because it's used to * +// * pass data from one to the other via model files. * +// ********************************************************* + +#ifdef INCLUDELIBS + +#include <stdlib.h> +#include <stdio.h> +#include <math.h> +#include <string.h> + +#include "cmdlib.h" +#include "scriplib.h" +#include "trilib.h" +#include "lbmlib.h" +#include "mathlib.h" + +#endif + +#define ALIAS_VERSION 6 + +#define ALIAS_ONSEAM 0x0020 + +// must match definition in spritegn.h +#ifndef SYNCTYPE_T +#define SYNCTYPE_T +typedef enum {ST_SYNC=0, ST_RAND } synctype_t; +#endif + +typedef enum { ALIAS_SINGLE=0, ALIAS_GROUP } aliasframetype_t; + +typedef enum { ALIAS_SKIN_SINGLE=0, ALIAS_SKIN_GROUP } aliasskintype_t; + +typedef struct { + int ident; + int version; + vec3_t scale; + vec3_t scale_origin; + float boundingradius; + vec3_t eyeposition; + int numskins; + int skinwidth; + int skinheight; + int numverts; + int numtris; + int numframes; + synctype_t synctype; + int flags; + float size; +} mdl_t; + +// TODO: could be shorts + +typedef struct { + int onseam; + int s; + int t; +} stvert_t; + +typedef struct dtriangle_s { + int facesfront; + int vertindex[3]; +} dtriangle_t; + +#define DT_FACES_FRONT 0x0010 + +// This mirrors trivert_t in trilib.h, is present so Quake knows how to +// load this data + +typedef struct { + byte v[3]; + byte lightnormalindex; +} trivertx_t; + +typedef struct { + trivertx_t bboxmin; // lightnormal isn't used + trivertx_t bboxmax; // lightnormal isn't used + char name[16]; // frame name from grabbing +} daliasframe_t; + +typedef struct { + int numframes; + trivertx_t bboxmin; // lightnormal isn't used + trivertx_t bboxmax; // lightnormal isn't used +} daliasgroup_t; + +typedef struct { + int numskins; +} daliasskingroup_t; + +typedef struct { + float interval; +} daliasinterval_t; + +typedef struct { + float interval; +} daliasskininterval_t; + +typedef struct { + aliasframetype_t type; +} daliasframetype_t; + +typedef struct { + aliasskintype_t type; +} daliasskintype_t; + +#define IDPOLYHEADER (('O'<<24)+('P'<<16)+('D'<<8)+'I') + // little-endian "IDPO" + +#endif /* _MODELGEN_H */ + diff --git a/Quake/net.h b/Quake/net.h new file mode 100644 index 0000000..a078490 --- /dev/null +++ b/Quake/net.h @@ -0,0 +1,115 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2009-2010 Ozkan Sezer +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +/* + net.h + quake's interface to the networking layer + network functions and data, common to the + whole engine +*/ + +#ifndef _QUAKE_NET_H +#define _QUAKE_NET_H + + +#define NET_NAMELEN 64 + +#define NET_MAXMESSAGE 64000 /* ericw -- was 32000 */ + +extern int DEFAULTnet_hostport; +extern int net_hostport; + +extern cvar_t hostname; + +extern double net_time; +extern sizebuf_t net_message; +extern int net_activeconnections; + + +void NET_Init (void); +void NET_Shutdown (void); + +struct qsocket_s *NET_CheckNewConnections (void); +// returns a new connection number if there is one pending, else -1 + +struct qsocket_s *NET_Connect (const char *host); +// called by client to connect to a host. Returns -1 if not able to + +double NET_QSocketGetTime (const struct qsocket_s *sock); +const char *NET_QSocketGetAddressString (const struct qsocket_s *sock); + +qboolean NET_CanSendMessage (struct qsocket_s *sock); +// Returns true or false if the given qsocket can currently accept a +// message to be transmitted. + +int NET_GetMessage (struct qsocket_s *sock); +// returns data in net_message sizebuf +// returns 0 if no data is waiting +// returns 1 if a message was received +// returns 2 if an unreliable message was received +// returns -1 if the connection died + +int NET_SendMessage (struct qsocket_s *sock, sizebuf_t *data); +int NET_SendUnreliableMessage (struct qsocket_s *sock, sizebuf_t *data); +// returns 0 if the message connot be delivered reliably, but the connection +// is still considered valid +// returns 1 if the message was sent properly +// returns -1 if the connection died + +int NET_SendToAll(sizebuf_t *data, double blocktime); +// This is a reliable *blocking* send to all attached clients. + +void NET_Close (struct qsocket_s *sock); +// if a dead connection is returned by a get or send function, this function +// should be called when it is convenient + +// Server calls when a client is kicked off for a game related misbehavior +// like an illegal protocal conversation. Client calls when disconnecting +// from a server. +// A netcon_t number will not be reused until this function is called for it + +void NET_Poll (void); + + +// Server list related globals: +extern qboolean slistInProgress; +extern qboolean slistSilent; +extern qboolean slistLocal; + +extern int hostCacheCount; + +void NET_Slist_f (void); +void NET_SlistSort (void); +const char *NET_SlistPrintServer (int n); +const char *NET_SlistPrintServerName (int n); + + +/* FIXME: driver related, but public: + */ +extern qboolean ipxAvailable; +extern qboolean tcpipAvailable; +extern char my_ipx_address[NET_NAMELEN]; +extern char my_tcpip_address[NET_NAMELEN]; + +#endif /* _QUAKE_NET_H */ + diff --git a/Quake/net_bsd.c b/Quake/net_bsd.c new file mode 100644 index 0000000..52d99a3 --- /dev/null +++ b/Quake/net_bsd.c @@ -0,0 +1,96 @@ +/* +Copyright (C) 1996-1997 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" + +#include "net_dgrm.h" +#include "net_loop.h" + +net_driver_t net_drivers[] = +{ + { "Loopback", + false, + Loop_Init, + Loop_Listen, + Loop_SearchForHosts, + Loop_Connect, + Loop_CheckNewConnections, + Loop_GetMessage, + Loop_SendMessage, + Loop_SendUnreliableMessage, + Loop_CanSendMessage, + Loop_CanSendUnreliableMessage, + Loop_Close, + Loop_Shutdown + }, + + { "Datagram", + false, + Datagram_Init, + Datagram_Listen, + Datagram_SearchForHosts, + Datagram_Connect, + Datagram_CheckNewConnections, + Datagram_GetMessage, + Datagram_SendMessage, + Datagram_SendUnreliableMessage, + Datagram_CanSendMessage, + Datagram_CanSendUnreliableMessage, + Datagram_Close, + Datagram_Shutdown + } +}; + +const int net_numdrivers = Q_COUNTOF(net_drivers); + +#include "net_udp.h" + +net_landriver_t net_landrivers[] = +{ + { "UDP", + false, + 0, + UDP_Init, + UDP_Shutdown, + UDP_Listen, + UDP_OpenSocket, + UDP_CloseSocket, + UDP_Connect, + UDP_CheckNewConnections, + UDP_Read, + UDP_Write, + UDP_Broadcast, + UDP_AddrToString, + UDP_StringToAddr, + UDP_GetSocketAddr, + UDP_GetNameFromAddr, + UDP_GetAddrFromName, + UDP_AddrCompare, + UDP_GetSocketPort, + UDP_SetSocketPort + } +}; + +const int net_numlandrivers = Q_COUNTOF(net_landrivers); diff --git a/Quake/net_defs.h b/Quake/net_defs.h new file mode 100644 index 0000000..424b85d --- /dev/null +++ b/Quake/net_defs.h @@ -0,0 +1,260 @@ +/* + * net_defs.h -- functions and data private to the network layer + * net_sys.h and its dependencies must be included before net_defs.h. + * + * Copyright (C) 1996-1997 Id Software, Inc. + * Copyright (C) 2005-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __NET_DEFS_H +#define __NET_DEFS_H + +struct qsockaddr +{ +#if defined(HAVE_SA_LEN) + unsigned char qsa_len; + unsigned char qsa_family; +#else + short qsa_family; +#endif /* BSD, sockaddr */ + unsigned char qsa_data[14]; +}; + +#define NET_HEADERSIZE (2 * sizeof(unsigned int)) +#define NET_DATAGRAMSIZE (MAX_DATAGRAM + NET_HEADERSIZE) + +// NetHeader flags +#define NETFLAG_LENGTH_MASK 0x0000ffff +#define NETFLAG_DATA 0x00010000 +#define NETFLAG_ACK 0x00020000 +#define NETFLAG_NAK 0x00040000 +#define NETFLAG_EOM 0x00080000 +#define NETFLAG_UNRELIABLE 0x00100000 +#define NETFLAG_CTL 0x80000000 + +#if (NETFLAG_LENGTH_MASK & NET_MAXMESSAGE) != NET_MAXMESSAGE +#error "NET_MAXMESSAGE must fit within NETFLAG_LENGTH_MASK" +#endif + +#define NET_PROTOCOL_VERSION 3 + +/** + +This is the network info/connection protocol. It is used to find Quake +servers, get info about them, and connect to them. Once connected, the +Quake game protocol (documented elsewhere) is used. + + +General notes: + game_name is currently always "QUAKE", but is there so this same protocol + can be used for future games as well; can you say Quake2? + +CCREQ_CONNECT + string game_name "QUAKE" + byte net_protocol_version NET_PROTOCOL_VERSION + +CCREQ_SERVER_INFO + string game_name "QUAKE" + byte net_protocol_version NET_PROTOCOL_VERSION + +CCREQ_PLAYER_INFO + byte player_number + +CCREQ_RULE_INFO + string rule + +CCREP_ACCEPT + long port + +CCREP_REJECT + string reason + +CCREP_SERVER_INFO + string server_address + string host_name + string level_name + byte current_players + byte max_players + byte protocol_version NET_PROTOCOL_VERSION + +CCREP_PLAYER_INFO + byte player_number + string name + long colors + long frags + long connect_time + string address + +CCREP_RULE_INFO + string rule + string value + + note: + There are two address forms used above. The short form is just a + port number. The address that goes along with the port is defined as + "whatever address you receive this reponse from". This lets us use + the host OS to solve the problem of multiple host addresses (possibly + with no routing between them); the host will use the right address + when we reply to the inbound connection request. The long from is + a full address and port in a string. It is used for returning the + address of a server that is not running locally. + +**/ + +#define CCREQ_CONNECT 0x01 +#define CCREQ_SERVER_INFO 0x02 +#define CCREQ_PLAYER_INFO 0x03 +#define CCREQ_RULE_INFO 0x04 + +#define CCREP_ACCEPT 0x81 +#define CCREP_REJECT 0x82 +#define CCREP_SERVER_INFO 0x83 +#define CCREP_PLAYER_INFO 0x84 +#define CCREP_RULE_INFO 0x85 + +typedef struct qsocket_s +{ + struct qsocket_s *next; + double connecttime; + double lastMessageTime; + double lastSendTime; + + qboolean disconnected; + qboolean canSend; + qboolean sendNext; + + int driver; + int landriver; + sys_socket_t socket; + void *driverdata; + + unsigned int ackSequence; + unsigned int sendSequence; + unsigned int unreliableSendSequence; + int sendMessageLength; + byte sendMessage [NET_MAXMESSAGE]; + + unsigned int receiveSequence; + unsigned int unreliableReceiveSequence; + int receiveMessageLength; + byte receiveMessage [NET_MAXMESSAGE]; + + struct qsockaddr addr; + char address[NET_NAMELEN]; + +} qsocket_t; + +extern qsocket_t *net_activeSockets; +extern qsocket_t *net_freeSockets; +extern int net_numsockets; + +typedef struct +{ + const char *name; + qboolean initialized; + sys_socket_t controlSock; + sys_socket_t (*Init) (void); + void (*Shutdown) (void); + void (*Listen) (qboolean state); + sys_socket_t (*Open_Socket) (int port); + int (*Close_Socket) (sys_socket_t socketid); + int (*Connect) (sys_socket_t socketid, struct qsockaddr *addr); + sys_socket_t (*CheckNewConnections) (void); + int (*Read) (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); + int (*Write) (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); + int (*Broadcast) (sys_socket_t socketid, byte *buf, int len); + const char * (*AddrToString) (struct qsockaddr *addr); + int (*StringToAddr) (const char *string, struct qsockaddr *addr); + int (*GetSocketAddr) (sys_socket_t socketid, struct qsockaddr *addr); + int (*GetNameFromAddr) (struct qsockaddr *addr, char *name); + int (*GetAddrFromName) (const char *name, struct qsockaddr *addr); + int (*AddrCompare) (struct qsockaddr *addr1, struct qsockaddr *addr2); + int (*GetSocketPort) (struct qsockaddr *addr); + int (*SetSocketPort) (struct qsockaddr *addr, int port); +} net_landriver_t; + +#define MAX_NET_DRIVERS 8 +extern net_landriver_t net_landrivers[]; +extern const int net_numlandrivers; + +typedef struct +{ + const char *name; + qboolean initialized; + int (*Init) (void); + void (*Listen) (qboolean state); + void (*SearchForHosts) (qboolean xmit); + qsocket_t *(*Connect) (const char *host); + qsocket_t *(*CheckNewConnections) (void); + int (*QGetMessage) (qsocket_t *sock); + int (*QSendMessage) (qsocket_t *sock, sizebuf_t *data); + int (*SendUnreliableMessage) (qsocket_t *sock, sizebuf_t *data); + qboolean (*CanSendMessage) (qsocket_t *sock); + qboolean (*CanSendUnreliableMessage) (qsocket_t *sock); + void (*Close) (qsocket_t *sock); + void (*Shutdown) (void); +} net_driver_t; + +extern net_driver_t net_drivers[]; +extern const int net_numdrivers; + +/* Loop driver must always be registered the first */ +#define IS_LOOP_DRIVER(p) ((p) == 0) + +extern int net_driverlevel; + +extern int messagesSent; +extern int messagesReceived; +extern int unreliableMessagesSent; +extern int unreliableMessagesReceived; + +qsocket_t *NET_NewQSocket (void); +void NET_FreeQSocket(qsocket_t *); +double SetNetTime(void); + + +#define HOSTCACHESIZE 8 + +typedef struct +{ + char name[16]; + char map[16]; + char cname[32]; + int users; + int maxusers; + int driver; + int ldriver; + struct qsockaddr addr; +} hostcache_t; + +extern int hostCacheCount; +extern hostcache_t hostcache[HOSTCACHESIZE]; + + +typedef struct _PollProcedure +{ + struct _PollProcedure *next; + double nextTime; + void (*procedure)(void *); + void *arg; +} PollProcedure; + +void SchedulePollProcedure(PollProcedure *pp, double timeOffset); + +#endif /* __NET_DEFS_H */ + diff --git a/Quake/net_dgrm.c b/Quake/net_dgrm.c new file mode 100644 index 0000000..778717d --- /dev/null +++ b/Quake/net_dgrm.c @@ -0,0 +1,1421 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// This is enables a simple IP banning mechanism +#define BAN_TEST + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" +#include "net_dgrm.h" + +// these two macros are to make the code more readable +#define sfunc net_landrivers[sock->landriver] +#define dfunc net_landrivers[net_landriverlevel] + +static int net_landriverlevel; + +/* statistic counters */ +static int packetsSent = 0; +static int packetsReSent = 0; +static int packetsReceived = 0; +static int receivedDuplicateCount = 0; +static int shortPacketCount = 0; +static int droppedDatagrams; + +static struct +{ + unsigned int length; + unsigned int sequence; + byte data[MAX_DATAGRAM]; +} packetBuffer; + +static int myDriverLevel; + +extern qboolean m_return_onerror; +extern char m_return_reason[32]; + + +static char *StrAddr (struct qsockaddr *addr) +{ + static char buf[34]; + byte *p = (byte *)addr; + int n; + + for (n = 0; n < 16; n++) + sprintf (buf + n * 2, "%02x", *p++); + return buf; +} + + +#ifdef BAN_TEST + +static struct in_addr banAddr; +static struct in_addr banMask; + +static void NET_Ban_f (void) +{ + char addrStr [32]; + char maskStr [32]; + void (*print_fn)(const char *fmt, ...) FUNCP_PRINTF(1,2); + + if (cmd_source == src_command) + { + if (!sv.active) + { + Cmd_ForwardToServer (); + return; + } + print_fn = Con_Printf; + } + else + { + if (pr_global_struct->deathmatch) + return; + print_fn = SV_ClientPrintf; + } + + switch (Cmd_Argc ()) + { + case 1: + if (banAddr.s_addr != INADDR_ANY) + { + Q_strcpy(addrStr, inet_ntoa(banAddr)); + Q_strcpy(maskStr, inet_ntoa(banMask)); + print_fn("Banning %s [%s]\n", addrStr, maskStr); + } + else + print_fn("Banning not active\n"); + break; + + case 2: + if (q_strcasecmp(Cmd_Argv(1), "off") == 0) + banAddr.s_addr = INADDR_ANY; + else + banAddr.s_addr = inet_addr(Cmd_Argv(1)); + banMask.s_addr = INADDR_NONE; + break; + + case 3: + banAddr.s_addr = inet_addr(Cmd_Argv(1)); + banMask.s_addr = inet_addr(Cmd_Argv(2)); + break; + + default: + print_fn("BAN ip_address [mask]\n"); + break; + } +} +#endif // BAN_TEST + + +int Datagram_SendMessage (qsocket_t *sock, sizebuf_t *data) +{ + unsigned int packetLen; + unsigned int dataLen; + unsigned int eom; + +#ifdef DEBUG + if (data->cursize == 0) + Sys_Error("Datagram_SendMessage: zero length message"); + + if (data->cursize > NET_MAXMESSAGE) + Sys_Error("Datagram_SendMessage: message too big: %u", data->cursize); + + if (sock->canSend == false) + Sys_Error("SendMessage: called with canSend == false"); +#endif + + Q_memcpy(sock->sendMessage, data->data, data->cursize); + sock->sendMessageLength = data->cursize; + + if (data->cursize <= MAX_DATAGRAM) + { + dataLen = data->cursize; + eom = NETFLAG_EOM; + } + else + { + dataLen = MAX_DATAGRAM; + eom = 0; + } + packetLen = NET_HEADERSIZE + dataLen; + + packetBuffer.length = BigLong(packetLen | (NETFLAG_DATA | eom)); + packetBuffer.sequence = BigLong(sock->sendSequence++); + Q_memcpy (packetBuffer.data, sock->sendMessage, dataLen); + + sock->canSend = false; + + if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1) + return -1; + + sock->lastSendTime = net_time; + packetsSent++; + return 1; +} + + +static int SendMessageNext (qsocket_t *sock) +{ + unsigned int packetLen; + unsigned int dataLen; + unsigned int eom; + + if (sock->sendMessageLength <= MAX_DATAGRAM) + { + dataLen = sock->sendMessageLength; + eom = NETFLAG_EOM; + } + else + { + dataLen = MAX_DATAGRAM; + eom = 0; + } + packetLen = NET_HEADERSIZE + dataLen; + + packetBuffer.length = BigLong(packetLen | (NETFLAG_DATA | eom)); + packetBuffer.sequence = BigLong(sock->sendSequence++); + Q_memcpy (packetBuffer.data, sock->sendMessage, dataLen); + + sock->sendNext = false; + + if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1) + return -1; + + sock->lastSendTime = net_time; + packetsSent++; + return 1; +} + + +static int ReSendMessage (qsocket_t *sock) +{ + unsigned int packetLen; + unsigned int dataLen; + unsigned int eom; + + if (sock->sendMessageLength <= MAX_DATAGRAM) + { + dataLen = sock->sendMessageLength; + eom = NETFLAG_EOM; + } + else + { + dataLen = MAX_DATAGRAM; + eom = 0; + } + packetLen = NET_HEADERSIZE + dataLen; + + packetBuffer.length = BigLong(packetLen | (NETFLAG_DATA | eom)); + packetBuffer.sequence = BigLong(sock->sendSequence - 1); + Q_memcpy (packetBuffer.data, sock->sendMessage, dataLen); + + sock->sendNext = false; + + if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1) + return -1; + + sock->lastSendTime = net_time; + packetsReSent++; + return 1; +} + + +qboolean Datagram_CanSendMessage (qsocket_t *sock) +{ + if (sock->sendNext) + SendMessageNext (sock); + + return sock->canSend; +} + + +qboolean Datagram_CanSendUnreliableMessage (qsocket_t *sock) +{ + return true; +} + + +int Datagram_SendUnreliableMessage (qsocket_t *sock, sizebuf_t *data) +{ + int packetLen; + +#ifdef DEBUG + if (data->cursize == 0) + Sys_Error("Datagram_SendUnreliableMessage: zero length message"); + + if (data->cursize > MAX_DATAGRAM) + Sys_Error("Datagram_SendUnreliableMessage: message too big: %u", data->cursize); +#endif + + packetLen = NET_HEADERSIZE + data->cursize; + + packetBuffer.length = BigLong(packetLen | NETFLAG_UNRELIABLE); + packetBuffer.sequence = BigLong(sock->unreliableSendSequence++); + Q_memcpy (packetBuffer.data, data->data, data->cursize); + + if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1) + return -1; + + packetsSent++; + return 1; +} + + +int Datagram_GetMessage (qsocket_t *sock) +{ + unsigned int length; + unsigned int flags; + int ret = 0; + struct qsockaddr readaddr; + unsigned int sequence; + unsigned int count; + + if (!sock->canSend) + if ((net_time - sock->lastSendTime) > 1.0) + ReSendMessage (sock); + + while (1) + { + length = (unsigned int) sfunc.Read(sock->socket, (byte *)&packetBuffer, + NET_DATAGRAMSIZE, &readaddr); + + // if ((rand() & 255) > 220) + // continue; + + if (length == 0) + break; + + if (length == (unsigned int)-1) + { + Con_Printf("Read error\n"); + return -1; + } + + if (sfunc.AddrCompare(&readaddr, &sock->addr) != 0) + { + Con_Printf("Forged packet received\n"); + Con_Printf("Expected: %s\n", StrAddr (&sock->addr)); + Con_Printf("Received: %s\n", StrAddr (&readaddr)); + continue; + } + + if (length < NET_HEADERSIZE) + { + shortPacketCount++; + continue; + } + + length = BigLong(packetBuffer.length); + flags = length & (~NETFLAG_LENGTH_MASK); + length &= NETFLAG_LENGTH_MASK; + + if (flags & NETFLAG_CTL) + continue; + + sequence = BigLong(packetBuffer.sequence); + packetsReceived++; + + if (flags & NETFLAG_UNRELIABLE) + { + if (sequence < sock->unreliableReceiveSequence) + { + Con_DPrintf("Got a stale datagram\n"); + ret = 0; + break; + } + if (sequence != sock->unreliableReceiveSequence) + { + count = sequence - sock->unreliableReceiveSequence; + droppedDatagrams += count; + Con_DPrintf("Dropped %u datagram(s)\n", count); + } + sock->unreliableReceiveSequence = sequence + 1; + + length -= NET_HEADERSIZE; + + SZ_Clear (&net_message); + SZ_Write (&net_message, packetBuffer.data, length); + + ret = 2; + break; + } + + if (flags & NETFLAG_ACK) + { + if (sequence != (sock->sendSequence - 1)) + { + Con_DPrintf("Stale ACK received\n"); + continue; + } + if (sequence == sock->ackSequence) + { + sock->ackSequence++; + if (sock->ackSequence != sock->sendSequence) + Con_DPrintf("ack sequencing error\n"); + } + else + { + Con_DPrintf("Duplicate ACK received\n"); + continue; + } + sock->sendMessageLength -= MAX_DATAGRAM; + if (sock->sendMessageLength > 0) + { + memmove (sock->sendMessage, sock->sendMessage + MAX_DATAGRAM, sock->sendMessageLength); + sock->sendNext = true; + } + else + { + sock->sendMessageLength = 0; + sock->canSend = true; + } + continue; + } + + if (flags & NETFLAG_DATA) + { + packetBuffer.length = BigLong(NET_HEADERSIZE | NETFLAG_ACK); + packetBuffer.sequence = BigLong(sequence); + sfunc.Write (sock->socket, (byte *)&packetBuffer, NET_HEADERSIZE, &readaddr); + + if (sequence != sock->receiveSequence) + { + receivedDuplicateCount++; + continue; + } + sock->receiveSequence++; + + length -= NET_HEADERSIZE; + + if (flags & NETFLAG_EOM) + { + SZ_Clear(&net_message); + SZ_Write(&net_message, sock->receiveMessage, sock->receiveMessageLength); + SZ_Write(&net_message, packetBuffer.data, length); + sock->receiveMessageLength = 0; + + ret = 1; + break; + } + + Q_memcpy(sock->receiveMessage + sock->receiveMessageLength, packetBuffer.data, length); + sock->receiveMessageLength += length; + continue; + } + } + + if (sock->sendNext) + SendMessageNext (sock); + + return ret; +} + + +static void PrintStats(qsocket_t *s) +{ + Con_Printf("canSend = %4u \n", s->canSend); + Con_Printf("sendSeq = %4u ", s->sendSequence); + Con_Printf("recvSeq = %4u \n", s->receiveSequence); + Con_Printf("\n"); +} + +static void NET_Stats_f (void) +{ + qsocket_t *s; + + if (Cmd_Argc () == 1) + { + Con_Printf("unreliable messages sent = %i\n", unreliableMessagesSent); + Con_Printf("unreliable messages recv = %i\n", unreliableMessagesReceived); + Con_Printf("reliable messages sent = %i\n", messagesSent); + Con_Printf("reliable messages received = %i\n", messagesReceived); + Con_Printf("packetsSent = %i\n", packetsSent); + Con_Printf("packetsReSent = %i\n", packetsReSent); + Con_Printf("packetsReceived = %i\n", packetsReceived); + Con_Printf("receivedDuplicateCount = %i\n", receivedDuplicateCount); + Con_Printf("shortPacketCount = %i\n", shortPacketCount); + Con_Printf("droppedDatagrams = %i\n", droppedDatagrams); + } + else if (Q_strcmp(Cmd_Argv(1), "*") == 0) + { + for (s = net_activeSockets; s; s = s->next) + PrintStats(s); + for (s = net_freeSockets; s; s = s->next) + PrintStats(s); + } + else + { + for (s = net_activeSockets; s; s = s->next) + { + if (q_strcasecmp(Cmd_Argv(1), s->address) == 0) + break; + } + + if (s == NULL) + { + for (s = net_freeSockets; s; s = s->next) + { + if (q_strcasecmp(Cmd_Argv(1), s->address) == 0) + break; + } + } + + if (s == NULL) + return; + + PrintStats(s); + } +} + + +// recognize ip:port (based on ProQuake) +static const char *Strip_Port (const char *host) +{ + static char noport[MAX_QPATH]; + /* array size as in Host_Connect_f() */ + char *p; + int port; + + if (!host || !*host) + return host; + q_strlcpy (noport, host, sizeof(noport)); + if ((p = Q_strrchr(noport, ':')) == NULL) + return host; + *p++ = '\0'; + port = Q_atoi (p); + if (port > 0 && port < 65536 && port != net_hostport) + { + net_hostport = port; + Con_Printf("Port set to %d\n", net_hostport); + } + return noport; +} + + +static qboolean testInProgress = false; +static int testPollCount; +static int testDriver; +static sys_socket_t testSocket; + +static void Test_Poll (void *); +static PollProcedure testPollProcedure = {NULL, 0.0, Test_Poll}; + +static void Test_Poll (void *unused) +{ + struct qsockaddr clientaddr; + int control; + int len; + char name[32]; + char address[64]; + int colors; + int frags; + int connectTime; + + net_landriverlevel = testDriver; + + while (1) + { + len = dfunc.Read (testSocket, net_message.data, net_message.maxsize, &clientaddr); + if (len < (int) sizeof(int)) + break; + + net_message.cursize = len; + + MSG_BeginReading (); + control = BigLong(*((int *)net_message.data)); + MSG_ReadLong(); + if (control == -1) + break; + if ((control & (~NETFLAG_LENGTH_MASK)) != (int)NETFLAG_CTL) + break; + if ((control & NETFLAG_LENGTH_MASK) != len) + break; + + if (MSG_ReadByte() != CCREP_PLAYER_INFO) + Sys_Error("Unexpected response to Player Info request\n"); + + MSG_ReadByte(); /* playerNumber */ + Q_strcpy(name, MSG_ReadString()); + colors = MSG_ReadLong(); + frags = MSG_ReadLong(); + connectTime = MSG_ReadLong(); + Q_strcpy(address, MSG_ReadString()); + + Con_Printf("%s\n frags:%3i colors:%d %d time:%d\n %s\n", name, frags, colors >> 4, colors & 0x0f, connectTime / 60, address); + } + + testPollCount--; + if (testPollCount) + { + SchedulePollProcedure(&testPollProcedure, 0.1); + } + else + { + dfunc.Close_Socket(testSocket); + testInProgress = false; + } +} + +static void Test_f (void) +{ + const char *host; + int n; + int maxusers = MAX_SCOREBOARD; + struct qsockaddr sendaddr; + + if (testInProgress) + return; + + host = Strip_Port (Cmd_Argv(1)); + + if (host && hostCacheCount) + { + for (n = 0; n < hostCacheCount; n++) + { + if (q_strcasecmp (host, hostcache[n].name) == 0) + { + if (hostcache[n].driver != myDriverLevel) + continue; + net_landriverlevel = hostcache[n].ldriver; + maxusers = hostcache[n].maxusers; + Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr)); + break; + } + } + + if (n < hostCacheCount) + goto JustDoIt; + } + + for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) + { + if (!net_landrivers[net_landriverlevel].initialized) + continue; + + // see if we can resolve the host name + if (dfunc.GetAddrFromName(host, &sendaddr) != -1) + break; + } + + if (net_landriverlevel == net_numlandrivers) + { + Con_Printf("Could not resolve %s\n", host); + return; + } + +JustDoIt: + testSocket = dfunc.Open_Socket(0); + if (testSocket == INVALID_SOCKET) + return; + + testInProgress = true; + testPollCount = 20; + testDriver = net_landriverlevel; + + for (n = 0; n < maxusers; n++) + { + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREQ_PLAYER_INFO); + MSG_WriteByte(&net_message, n); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (testSocket, net_message.data, net_message.cursize, &sendaddr); + } + SZ_Clear(&net_message); + SchedulePollProcedure(&testPollProcedure, 0.1); +} + + +static qboolean test2InProgress = false; +static int test2Driver; +static sys_socket_t test2Socket; + +static void Test2_Poll (void *); +static PollProcedure test2PollProcedure = {NULL, 0.0, Test2_Poll}; + +static void Test2_Poll (void *unused) +{ + struct qsockaddr clientaddr; + int control; + int len; + char name[256]; + char value[256]; + + net_landriverlevel = test2Driver; + name[0] = 0; + + len = dfunc.Read (test2Socket, net_message.data, net_message.maxsize, &clientaddr); + if (len < (int) sizeof(int)) + goto Reschedule; + + net_message.cursize = len; + + MSG_BeginReading (); + control = BigLong(*((int *)net_message.data)); + MSG_ReadLong(); + if (control == -1) + goto Error; + if ((control & (~NETFLAG_LENGTH_MASK)) != (int)NETFLAG_CTL) + goto Error; + if ((control & NETFLAG_LENGTH_MASK) != len) + goto Error; + + if (MSG_ReadByte() != CCREP_RULE_INFO) + goto Error; + + Q_strcpy(name, MSG_ReadString()); + if (name[0] == 0) + goto Done; + Q_strcpy(value, MSG_ReadString()); + + Con_Printf("%-16.16s %-16.16s\n", name, value); + + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREQ_RULE_INFO); + MSG_WriteString(&net_message, name); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (test2Socket, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + +Reschedule: + SchedulePollProcedure(&test2PollProcedure, 0.05); + return; + +Error: + Con_Printf("Unexpected response to Rule Info request\n"); +Done: + dfunc.Close_Socket(test2Socket); + test2InProgress = false; + return; +} + +static void Test2_f (void) +{ + const char *host; + int n; + struct qsockaddr sendaddr; + + if (test2InProgress) + return; + + host = Strip_Port (Cmd_Argv(1)); + + if (host && hostCacheCount) + { + for (n = 0; n < hostCacheCount; n++) + { + if (q_strcasecmp (host, hostcache[n].name) == 0) + { + if (hostcache[n].driver != myDriverLevel) + continue; + net_landriverlevel = hostcache[n].ldriver; + Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr)); + break; + } + } + + if (n < hostCacheCount) + goto JustDoIt; + } + + for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) + { + if (!net_landrivers[net_landriverlevel].initialized) + continue; + + // see if we can resolve the host name + if (dfunc.GetAddrFromName(host, &sendaddr) != -1) + break; + } + + if (net_landriverlevel == net_numlandrivers) + { + Con_Printf("Could not resolve %s\n", host); + return; + } + +JustDoIt: + test2Socket = dfunc.Open_Socket(0); + if (test2Socket == INVALID_SOCKET) + return; + + test2InProgress = true; + test2Driver = net_landriverlevel; + + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREQ_RULE_INFO); + MSG_WriteString(&net_message, ""); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (test2Socket, net_message.data, net_message.cursize, &sendaddr); + SZ_Clear(&net_message); + SchedulePollProcedure(&test2PollProcedure, 0.05); +} + + +int Datagram_Init (void) +{ + int i, num_inited; + sys_socket_t csock; + +#ifdef BAN_TEST + banAddr.s_addr = INADDR_ANY; + banMask.s_addr = INADDR_NONE; +#endif + myDriverLevel = net_driverlevel; + + Cmd_AddCommand ("net_stats", NET_Stats_f); + + if (safemode || COM_CheckParm("-nolan")) + return -1; + + num_inited = 0; + for (i = 0; i < net_numlandrivers; i++) + { + csock = net_landrivers[i].Init (); + if (csock == INVALID_SOCKET) + continue; + net_landrivers[i].initialized = true; + net_landrivers[i].controlSock = csock; + num_inited++; + } + + if (num_inited == 0) + return -1; + +#ifdef BAN_TEST + Cmd_AddCommand ("ban", NET_Ban_f); +#endif + Cmd_AddCommand ("test", Test_f); + Cmd_AddCommand ("test2", Test2_f); + + return 0; +} + + +void Datagram_Shutdown (void) +{ + int i; + +// +// shutdown the lan drivers +// + for (i = 0; i < net_numlandrivers; i++) + { + if (net_landrivers[i].initialized) + { + net_landrivers[i].Shutdown (); + net_landrivers[i].initialized = false; + } + } +} + + +void Datagram_Close (qsocket_t *sock) +{ + sfunc.Close_Socket(sock->socket); +} + + +void Datagram_Listen (qboolean state) +{ + int i; + + for (i = 0; i < net_numlandrivers; i++) + { + if (net_landrivers[i].initialized) + net_landrivers[i].Listen (state); + } +} + + +static qsocket_t *_Datagram_CheckNewConnections (void) +{ + struct qsockaddr clientaddr; + struct qsockaddr newaddr; + sys_socket_t newsock; + sys_socket_t acceptsock; + qsocket_t *sock; + qsocket_t *s; + int len; + int command; + int control; + int ret; + + acceptsock = dfunc.CheckNewConnections(); + if (acceptsock == INVALID_SOCKET) + return NULL; + + SZ_Clear(&net_message); + + len = dfunc.Read (acceptsock, net_message.data, net_message.maxsize, &clientaddr); + if (len < (int) sizeof(int)) + return NULL; + net_message.cursize = len; + + MSG_BeginReading (); + control = BigLong(*((int *)net_message.data)); + MSG_ReadLong(); + if (control == -1) + return NULL; + if ((control & (~NETFLAG_LENGTH_MASK)) != (int)NETFLAG_CTL) + return NULL; + if ((control & NETFLAG_LENGTH_MASK) != len) + return NULL; + + command = MSG_ReadByte(); + if (command == CCREQ_SERVER_INFO) + { + if (Q_strcmp(MSG_ReadString(), "QUAKE") != 0) + return NULL; + + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_SERVER_INFO); + dfunc.GetSocketAddr(acceptsock, &newaddr); + MSG_WriteString(&net_message, dfunc.AddrToString(&newaddr)); + MSG_WriteString(&net_message, hostname.string); + MSG_WriteString(&net_message, sv.name); + MSG_WriteByte(&net_message, net_activeconnections); + MSG_WriteByte(&net_message, svs.maxclients); + MSG_WriteByte(&net_message, NET_PROTOCOL_VERSION); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + return NULL; + } + + if (command == CCREQ_PLAYER_INFO) + { + int playerNumber; + int activeNumber; + int clientNumber; + client_t *client; + + playerNumber = MSG_ReadByte(); + activeNumber = -1; + + for (clientNumber = 0, client = svs.clients; clientNumber < svs.maxclients; clientNumber++, client++) + { + if (client->active) + { + activeNumber++; + if (activeNumber == playerNumber) + break; + } + } + + if (clientNumber == svs.maxclients) + return NULL; + + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_PLAYER_INFO); + MSG_WriteByte(&net_message, playerNumber); + MSG_WriteString(&net_message, client->name); + MSG_WriteLong(&net_message, client->colors); + MSG_WriteLong(&net_message, (int)client->edict->v.frags); + MSG_WriteLong(&net_message, (int)(net_time - client->netconnection->connecttime)); + MSG_WriteString(&net_message, client->netconnection->address); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + + return NULL; + } + + if (command == CCREQ_RULE_INFO) + { + const char *prevCvarName; + cvar_t *var; + + // find the search start location + prevCvarName = MSG_ReadString(); + var = Cvar_FindVarAfter (prevCvarName, CVAR_SERVERINFO); + + // send the response + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_RULE_INFO); + if (var) + { + MSG_WriteString(&net_message, var->name); + MSG_WriteString(&net_message, var->string); + } + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + + return NULL; + } + + if (command != CCREQ_CONNECT) + return NULL; + + if (Q_strcmp(MSG_ReadString(), "QUAKE") != 0) + return NULL; + + if (MSG_ReadByte() != NET_PROTOCOL_VERSION) + { + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_REJECT); + MSG_WriteString(&net_message, "Incompatible version.\n"); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + return NULL; + } + +#ifdef BAN_TEST + // check for a ban + if (clientaddr.qsa_family == AF_INET) + { + in_addr_t testAddr; + testAddr = ((struct sockaddr_in *)&clientaddr)->sin_addr.s_addr; + if ((testAddr & banMask.s_addr) == banAddr.s_addr) + { + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_REJECT); + MSG_WriteString(&net_message, "You have been banned.\n"); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + return NULL; + } + } +#endif + + // see if this guy is already connected + for (s = net_activeSockets; s; s = s->next) + { + if (s->driver != net_driverlevel) + continue; + ret = dfunc.AddrCompare(&clientaddr, &s->addr); + if (ret >= 0) + { + // is this a duplicate connection reqeust? + if (ret == 0 && net_time - s->connecttime < 2.0) + { + // yes, so send a duplicate reply + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_ACCEPT); + dfunc.GetSocketAddr(s->socket, &newaddr); + MSG_WriteLong(&net_message, dfunc.GetSocketPort(&newaddr)); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + return NULL; + } + // it's somebody coming back in from a crash/disconnect + // so close the old qsocket and let their retry get them back in + NET_Close(s); + return NULL; + } + } + + // allocate a QSocket + sock = NET_NewQSocket (); + if (sock == NULL) // no room; try to let him know + { + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_REJECT); + MSG_WriteString(&net_message, "Server is full.\n"); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + return NULL; + } + + // allocate a network socket + newsock = dfunc.Open_Socket(0); + if (newsock == INVALID_SOCKET) + { + NET_FreeQSocket(sock); + return NULL; + } + + // connect to the client + if (dfunc.Connect (newsock, &clientaddr) == -1) + { + dfunc.Close_Socket(newsock); + NET_FreeQSocket(sock); + return NULL; + } + + // everything is allocated, just fill in the details + sock->socket = newsock; + sock->landriver = net_landriverlevel; + sock->addr = clientaddr; + Q_strcpy(sock->address, dfunc.AddrToString(&clientaddr)); + + // send him back the info about the server connection he has been allocated + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREP_ACCEPT); + dfunc.GetSocketAddr(newsock, &newaddr); + MSG_WriteLong(&net_message, dfunc.GetSocketPort(&newaddr)); +// MSG_WriteString(&net_message, dfunc.AddrToString(&newaddr)); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr); + SZ_Clear(&net_message); + + return sock; +} + +qsocket_t *Datagram_CheckNewConnections (void) +{ + qsocket_t *ret = NULL; + + for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) + { + if (net_landrivers[net_landriverlevel].initialized) + { + if ((ret = _Datagram_CheckNewConnections ()) != NULL) + break; + } + } + return ret; +} + + +static void _Datagram_SearchForHosts (qboolean xmit) +{ + int ret; + int n; + int i; + struct qsockaddr readaddr; + struct qsockaddr myaddr; + int control; + + dfunc.GetSocketAddr (dfunc.controlSock, &myaddr); + if (xmit) + { + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREQ_SERVER_INFO); + MSG_WriteString(&net_message, "QUAKE"); + MSG_WriteByte(&net_message, NET_PROTOCOL_VERSION); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Broadcast(dfunc.controlSock, net_message.data, net_message.cursize); + SZ_Clear(&net_message); + } + + while ((ret = dfunc.Read (dfunc.controlSock, net_message.data, net_message.maxsize, &readaddr)) > 0) + { + if (ret < (int) sizeof(int)) + continue; + net_message.cursize = ret; + + // don't answer our own query + if (dfunc.AddrCompare(&readaddr, &myaddr) >= 0) + continue; + + // is the cache full? + if (hostCacheCount == HOSTCACHESIZE) + continue; + + MSG_BeginReading (); + control = BigLong(*((int *)net_message.data)); + MSG_ReadLong(); + if (control == -1) + continue; + if ((control & (~NETFLAG_LENGTH_MASK)) != (int)NETFLAG_CTL) + continue; + if ((control & NETFLAG_LENGTH_MASK) != ret) + continue; + + if (MSG_ReadByte() != CCREP_SERVER_INFO) + continue; + + dfunc.GetAddrFromName(MSG_ReadString(), &readaddr); + // search the cache for this server + for (n = 0; n < hostCacheCount; n++) + { + if (dfunc.AddrCompare(&readaddr, &hostcache[n].addr) == 0) + break; + } + + // is it already there? + if (n < hostCacheCount) + continue; + + // add it + hostCacheCount++; + Q_strcpy(hostcache[n].name, MSG_ReadString()); + Q_strcpy(hostcache[n].map, MSG_ReadString()); + hostcache[n].users = MSG_ReadByte(); + hostcache[n].maxusers = MSG_ReadByte(); + if (MSG_ReadByte() != NET_PROTOCOL_VERSION) + { + Q_strcpy(hostcache[n].cname, hostcache[n].name); + hostcache[n].cname[14] = 0; + Q_strcpy(hostcache[n].name, "*"); + Q_strcat(hostcache[n].name, hostcache[n].cname); + } + Q_memcpy(&hostcache[n].addr, &readaddr, sizeof(struct qsockaddr)); + hostcache[n].driver = net_driverlevel; + hostcache[n].ldriver = net_landriverlevel; + Q_strcpy(hostcache[n].cname, dfunc.AddrToString(&readaddr)); + + // check for a name conflict + for (i = 0; i < hostCacheCount; i++) + { + if (i == n) + continue; + if (q_strcasecmp (hostcache[n].name, hostcache[i].name) == 0) + { + i = Q_strlen(hostcache[n].name); + if (i < 15 && hostcache[n].name[i-1] > '8') + { + hostcache[n].name[i] = '0'; + hostcache[n].name[i+1] = 0; + } + else + hostcache[n].name[i-1]++; + + i = -1; + } + } + } +} + +void Datagram_SearchForHosts (qboolean xmit) +{ + for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) + { + if (hostCacheCount == HOSTCACHESIZE) + break; + if (net_landrivers[net_landriverlevel].initialized) + _Datagram_SearchForHosts (xmit); + } +} + + +static qsocket_t *_Datagram_Connect (const char *host) +{ + struct qsockaddr sendaddr; + struct qsockaddr readaddr; + qsocket_t *sock; + sys_socket_t newsock; + int ret; + int reps; + double start_time; + int control; + const char *reason; + + // see if we can resolve the host name + if (dfunc.GetAddrFromName(host, &sendaddr) == -1) + { + Con_Printf("Could not resolve %s\n", host); + return NULL; + } + + newsock = dfunc.Open_Socket (0); + if (newsock == INVALID_SOCKET) + return NULL; + + sock = NET_NewQSocket (); + if (sock == NULL) + goto ErrorReturn2; + sock->socket = newsock; + sock->landriver = net_landriverlevel; + + // connect to the host + if (dfunc.Connect (newsock, &sendaddr) == -1) + goto ErrorReturn; + + // send the connection request + Con_Printf("trying...\n"); + SCR_UpdateScreen (); + start_time = net_time; + + for (reps = 0; reps < 3; reps++) + { + SZ_Clear(&net_message); + // save space for the header, filled in later + MSG_WriteLong(&net_message, 0); + MSG_WriteByte(&net_message, CCREQ_CONNECT); + MSG_WriteString(&net_message, "QUAKE"); + MSG_WriteByte(&net_message, NET_PROTOCOL_VERSION); + *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); + dfunc.Write (newsock, net_message.data, net_message.cursize, &sendaddr); + SZ_Clear(&net_message); + do + { + ret = dfunc.Read (newsock, net_message.data, net_message.maxsize, &readaddr); + // if we got something, validate it + if (ret > 0) + { + // is it from the right place? + if (sfunc.AddrCompare(&readaddr, &sendaddr) != 0) + { + Con_Printf("wrong reply address\n"); + Con_Printf("Expected: %s | %s\n", dfunc.AddrToString (&sendaddr), StrAddr(&sendaddr)); + Con_Printf("Received: %s | %s\n", dfunc.AddrToString (&readaddr), StrAddr(&readaddr)); + SCR_UpdateScreen (); + ret = 0; + continue; + } + + if (ret < (int) sizeof(int)) + { + ret = 0; + continue; + } + + net_message.cursize = ret; + MSG_BeginReading (); + + control = BigLong(*((int *)net_message.data)); + MSG_ReadLong(); + if (control == -1) + { + ret = 0; + continue; + } + if ((control & (~NETFLAG_LENGTH_MASK)) != (int)NETFLAG_CTL) + { + ret = 0; + continue; + } + if ((control & NETFLAG_LENGTH_MASK) != ret) + { + ret = 0; + continue; + } + } + } + while (ret == 0 && (SetNetTime() - start_time) < 2.5); + + if (ret) + break; + + Con_Printf("still trying...\n"); + SCR_UpdateScreen (); + start_time = SetNetTime(); + } + + if (ret == 0) + { + reason = "No Response"; + Con_Printf("%s\n", reason); + Q_strcpy(m_return_reason, reason); + goto ErrorReturn; + } + + if (ret == -1) + { + reason = "Network Error"; + Con_Printf("%s\n", reason); + Q_strcpy(m_return_reason, reason); + goto ErrorReturn; + } + + ret = MSG_ReadByte(); + if (ret == CCREP_REJECT) + { + reason = MSG_ReadString(); + Con_Printf("%s\n", reason); + q_strlcpy(m_return_reason, reason, sizeof(m_return_reason)); + goto ErrorReturn; + } + + if (ret == CCREP_ACCEPT) + { + Q_memcpy(&sock->addr, &sendaddr, sizeof(struct qsockaddr)); + dfunc.SetSocketPort (&sock->addr, MSG_ReadLong()); + } + else + { + reason = "Bad Response"; + Con_Printf("%s\n", reason); + Q_strcpy(m_return_reason, reason); + goto ErrorReturn; + } + + dfunc.GetNameFromAddr (&sendaddr, sock->address); + + Con_Printf ("Connection accepted\n"); + sock->lastMessageTime = SetNetTime(); + + // switch the connection to the specified address + if (dfunc.Connect (newsock, &sock->addr) == -1) + { + reason = "Connect to Game failed"; + Con_Printf("%s\n", reason); + Q_strcpy(m_return_reason, reason); + goto ErrorReturn; + } + + m_return_onerror = false; + return sock; + +ErrorReturn: + NET_FreeQSocket(sock); +ErrorReturn2: + dfunc.Close_Socket(newsock); + if (m_return_onerror) + { + IN_Deactivate(modestate == MS_WINDOWED); + key_dest = key_menu; + m_state = m_return_state; + m_return_onerror = false; + } + return NULL; +} + +qsocket_t *Datagram_Connect (const char *host) +{ + qsocket_t *ret = NULL; + + host = Strip_Port (host); + for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) + { + if (net_landrivers[net_landriverlevel].initialized) + { + if ((ret = _Datagram_Connect (host)) != NULL) + break; + } + } + return ret; +} + diff --git a/Quake/net_dgrm.h b/Quake/net_dgrm.h new file mode 100644 index 0000000..357a829 --- /dev/null +++ b/Quake/net_dgrm.h @@ -0,0 +1,39 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __NET_DATAGRAM_H +#define __NET_DATAGRAM_H + +int Datagram_Init (void); +void Datagram_Listen (qboolean state); +void Datagram_SearchForHosts (qboolean xmit); +qsocket_t *Datagram_Connect (const char *host); +qsocket_t *Datagram_CheckNewConnections (void); +int Datagram_GetMessage (qsocket_t *sock); +int Datagram_SendMessage (qsocket_t *sock, sizebuf_t *data); +int Datagram_SendUnreliableMessage (qsocket_t *sock, sizebuf_t *data); +qboolean Datagram_CanSendMessage (qsocket_t *sock); +qboolean Datagram_CanSendUnreliableMessage (qsocket_t *sock); +void Datagram_Close (qsocket_t *sock); +void Datagram_Shutdown (void); + +#endif /* __NET_DATAGRAM_H */ + diff --git a/Quake/net_loop.c b/Quake/net_loop.c new file mode 100644 index 0000000..8cb22db --- /dev/null +++ b/Quake/net_loop.c @@ -0,0 +1,250 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" +#include "net_loop.h" + +static qboolean localconnectpending = false; +static qsocket_t *loop_client = NULL; +static qsocket_t *loop_server = NULL; + +int Loop_Init (void) +{ + if (cls.state == ca_dedicated) + return -1; + return 0; +} + + +void Loop_Shutdown (void) +{ +} + + +void Loop_Listen (qboolean state) +{ +} + + +void Loop_SearchForHosts (qboolean xmit) +{ + if (!sv.active) + return; + + hostCacheCount = 1; + if (Q_strcmp(hostname.string, "UNNAMED") == 0) + Q_strcpy(hostcache[0].name, "local"); + else + Q_strcpy(hostcache[0].name, hostname.string); + Q_strcpy(hostcache[0].map, sv.name); + hostcache[0].users = net_activeconnections; + hostcache[0].maxusers = svs.maxclients; + hostcache[0].driver = net_driverlevel; + Q_strcpy(hostcache[0].cname, "local"); +} + + +qsocket_t *Loop_Connect (const char *host) +{ + if (Q_strcmp(host,"local") != 0) + return NULL; + + localconnectpending = true; + + if (!loop_client) + { + if ((loop_client = NET_NewQSocket ()) == NULL) + { + Con_Printf("Loop_Connect: no qsocket available\n"); + return NULL; + } + Q_strcpy (loop_client->address, "localhost"); + } + loop_client->receiveMessageLength = 0; + loop_client->sendMessageLength = 0; + loop_client->canSend = true; + + if (!loop_server) + { + if ((loop_server = NET_NewQSocket ()) == NULL) + { + Con_Printf("Loop_Connect: no qsocket available\n"); + return NULL; + } + Q_strcpy (loop_server->address, "LOCAL"); + } + loop_server->receiveMessageLength = 0; + loop_server->sendMessageLength = 0; + loop_server->canSend = true; + + loop_client->driverdata = (void *)loop_server; + loop_server->driverdata = (void *)loop_client; + + return loop_client; +} + + +qsocket_t *Loop_CheckNewConnections (void) +{ + if (!localconnectpending) + return NULL; + + localconnectpending = false; + loop_server->sendMessageLength = 0; + loop_server->receiveMessageLength = 0; + loop_server->canSend = true; + loop_client->sendMessageLength = 0; + loop_client->receiveMessageLength = 0; + loop_client->canSend = true; + return loop_server; +} + + +static int IntAlign(int value) +{ + return (value + (sizeof(int) - 1)) & (~(sizeof(int) - 1)); +} + + +int Loop_GetMessage (qsocket_t *sock) +{ + int ret; + int length; + + if (sock->receiveMessageLength == 0) + return 0; + + ret = sock->receiveMessage[0]; + length = sock->receiveMessage[1] + (sock->receiveMessage[2] << 8); + // alignment byte skipped here + SZ_Clear (&net_message); + SZ_Write (&net_message, &sock->receiveMessage[4], length); + + length = IntAlign(length + 4); + sock->receiveMessageLength -= length; + + if (sock->receiveMessageLength) + memmove (sock->receiveMessage, &sock->receiveMessage[length], sock->receiveMessageLength); + + if (sock->driverdata && ret == 1) + ((qsocket_t *)sock->driverdata)->canSend = true; + + return ret; +} + + +int Loop_SendMessage (qsocket_t *sock, sizebuf_t *data) +{ + byte *buffer; + int *bufferLength; + + if (!sock->driverdata) + return -1; + + bufferLength = &((qsocket_t *)sock->driverdata)->receiveMessageLength; + + if ((*bufferLength + data->cursize + 4) > NET_MAXMESSAGE) + Sys_Error("Loop_SendMessage: overflow"); + + buffer = ((qsocket_t *)sock->driverdata)->receiveMessage + *bufferLength; + + // message type + *buffer++ = 1; + + // length + *buffer++ = data->cursize & 0xff; + *buffer++ = data->cursize >> 8; + + // align + buffer++; + + // message + Q_memcpy(buffer, data->data, data->cursize); + *bufferLength = IntAlign(*bufferLength + data->cursize + 4); + + sock->canSend = false; + return 1; +} + + +int Loop_SendUnreliableMessage (qsocket_t *sock, sizebuf_t *data) +{ + byte *buffer; + int *bufferLength; + + if (!sock->driverdata) + return -1; + + bufferLength = &((qsocket_t *)sock->driverdata)->receiveMessageLength; + + if ((*bufferLength + data->cursize + sizeof(byte) + sizeof(short)) > NET_MAXMESSAGE) + return 0; + + buffer = ((qsocket_t *)sock->driverdata)->receiveMessage + *bufferLength; + + // message type + *buffer++ = 2; + + // length + *buffer++ = data->cursize & 0xff; + *buffer++ = data->cursize >> 8; + + // align + buffer++; + + // message + Q_memcpy(buffer, data->data, data->cursize); + *bufferLength = IntAlign(*bufferLength + data->cursize + 4); + return 1; +} + + +qboolean Loop_CanSendMessage (qsocket_t *sock) +{ + if (!sock->driverdata) + return false; + return sock->canSend; +} + + +qboolean Loop_CanSendUnreliableMessage (qsocket_t *sock) +{ + return true; +} + + +void Loop_Close (qsocket_t *sock) +{ + if (sock->driverdata) + ((qsocket_t *)sock->driverdata)->driverdata = NULL; + sock->receiveMessageLength = 0; + sock->sendMessageLength = 0; + sock->canSend = true; + if (sock == loop_client) + loop_client = NULL; + else + loop_server = NULL; +} + diff --git a/Quake/net_loop.h b/Quake/net_loop.h new file mode 100644 index 0000000..267193d --- /dev/null +++ b/Quake/net_loop.h @@ -0,0 +1,40 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __NET_LOOP_H +#define __NET_LOOP_H + +// net_loop.h +int Loop_Init (void); +void Loop_Listen (qboolean state); +void Loop_SearchForHosts (qboolean xmit); +qsocket_t *Loop_Connect (const char *host); +qsocket_t *Loop_CheckNewConnections (void); +int Loop_GetMessage (qsocket_t *sock); +int Loop_SendMessage (qsocket_t *sock, sizebuf_t *data); +int Loop_SendUnreliableMessage (qsocket_t *sock, sizebuf_t *data); +qboolean Loop_CanSendMessage (qsocket_t *sock); +qboolean Loop_CanSendUnreliableMessage (qsocket_t *sock); +void Loop_Close (qsocket_t *sock); +void Loop_Shutdown (void); + +#endif /* __NET_LOOP_H */ + diff --git a/Quake/net_main.c b/Quake/net_main.c new file mode 100644 index 0000000..bbd599a --- /dev/null +++ b/Quake/net_main.c @@ -0,0 +1,906 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" + +qsocket_t *net_activeSockets = NULL; +qsocket_t *net_freeSockets = NULL; +int net_numsockets = 0; + +qboolean ipxAvailable = false; +qboolean tcpipAvailable = false; + +int net_hostport; +int DEFAULTnet_hostport = 26000; + +char my_ipx_address[NET_NAMELEN]; +char my_tcpip_address[NET_NAMELEN]; + +static qboolean listening = false; + +qboolean slistInProgress = false; +qboolean slistSilent = false; +qboolean slistLocal = true; +static double slistStartTime; +static int slistLastShown; + +static void Slist_Send (void *); +static void Slist_Poll (void *); +static PollProcedure slistSendProcedure = {NULL, 0.0, Slist_Send}; +static PollProcedure slistPollProcedure = {NULL, 0.0, Slist_Poll}; + +sizebuf_t net_message; +int net_activeconnections = 0; + +int messagesSent = 0; +int messagesReceived = 0; +int unreliableMessagesSent = 0; +int unreliableMessagesReceived = 0; + +static cvar_t net_messagetimeout = {"net_messagetimeout","300",CVAR_NONE}; +cvar_t hostname = {"hostname", "UNNAMED", CVAR_NONE}; + +// these two macros are to make the code more readable +#define sfunc net_drivers[sock->driver] +#define dfunc net_drivers[net_driverlevel] + +int net_driverlevel; + +double net_time; + + +double SetNetTime (void) +{ + net_time = Sys_DoubleTime(); + return net_time; +} + + +/* +=================== +NET_NewQSocket + +Called by drivers when a new communications endpoint is required +The sequence and buffer fields will be filled in properly +=================== +*/ +qsocket_t *NET_NewQSocket (void) +{ + qsocket_t *sock; + + if (net_freeSockets == NULL) + return NULL; + + if (net_activeconnections >= svs.maxclients) + return NULL; + + // get one from free list + sock = net_freeSockets; + net_freeSockets = sock->next; + + // add it to active list + sock->next = net_activeSockets; + net_activeSockets = sock; + + sock->disconnected = false; + sock->connecttime = net_time; + Q_strcpy (sock->address,"UNSET ADDRESS"); + sock->driver = net_driverlevel; + sock->socket = 0; + sock->driverdata = NULL; + sock->canSend = true; + sock->sendNext = false; + sock->lastMessageTime = net_time; + sock->ackSequence = 0; + sock->sendSequence = 0; + sock->unreliableSendSequence = 0; + sock->sendMessageLength = 0; + sock->receiveSequence = 0; + sock->unreliableReceiveSequence = 0; + sock->receiveMessageLength = 0; + + return sock; +} + + +void NET_FreeQSocket(qsocket_t *sock) +{ + qsocket_t *s; + + // remove it from active list + if (sock == net_activeSockets) + net_activeSockets = net_activeSockets->next; + else + { + for (s = net_activeSockets; s; s = s->next) + { + if (s->next == sock) + { + s->next = sock->next; + break; + } + } + + if (!s) + Sys_Error ("NET_FreeQSocket: not active"); + } + + // add it to free list + sock->next = net_freeSockets; + net_freeSockets = sock; + sock->disconnected = true; +} + + +double NET_QSocketGetTime (const qsocket_t *s) +{ + return s->connecttime; +} + + +const char *NET_QSocketGetAddressString (const qsocket_t *s) +{ + return s->address; +} + + +static void NET_Listen_f (void) +{ + if (Cmd_Argc () != 2) + { + Con_Printf ("\"listen\" is \"%d\"\n", listening ? 1 : 0); + return; + } + + listening = Q_atoi(Cmd_Argv(1)) ? true : false; + + for (net_driverlevel = 0; net_driverlevel < net_numdrivers; net_driverlevel++) + { + if (net_drivers[net_driverlevel].initialized == false) + continue; + dfunc.Listen (listening); + } +} + + +static void MaxPlayers_f (void) +{ + int n; + + if (Cmd_Argc () != 2) + { + Con_Printf ("\"maxplayers\" is \"%d\"\n", svs.maxclients); + return; + } + + if (sv.active) + { + Con_Printf ("maxplayers can not be changed while a server is running.\n"); + return; + } + + n = Q_atoi(Cmd_Argv(1)); + if (n < 1) + n = 1; + if (n > svs.maxclientslimit) + { + n = svs.maxclientslimit; + Con_Printf ("\"maxplayers\" set to \"%d\"\n", n); + } + + if ((n == 1) && listening) + Cbuf_AddText ("listen 0\n"); + + if ((n > 1) && (!listening)) + Cbuf_AddText ("listen 1\n"); + + svs.maxclients = n; + if (n == 1) + Cvar_Set ("deathmatch", "0"); + else + Cvar_Set ("deathmatch", "1"); +} + + +static void NET_Port_f (void) +{ + int n; + + if (Cmd_Argc () != 2) + { + Con_Printf ("\"port\" is \"%d\"\n", net_hostport); + return; + } + + n = Q_atoi(Cmd_Argv(1)); + if (n < 1 || n > 65534) + { + Con_Printf ("Bad value, must be between 1 and 65534\n"); + return; + } + + DEFAULTnet_hostport = n; + net_hostport = n; + + if (listening) + { + // force a change to the new port + Cbuf_AddText ("listen 0\n"); + Cbuf_AddText ("listen 1\n"); + } +} + + +static void PrintSlistHeader(void) +{ + Con_Printf("Server Map Users\n"); + Con_Printf("--------------- --------------- -----\n"); + slistLastShown = 0; +} + + +static void PrintSlist(void) +{ + int n; + + for (n = slistLastShown; n < hostCacheCount; n++) + { + if (hostcache[n].maxusers) + Con_Printf("%-15.15s %-15.15s %2u/%2u\n", hostcache[n].name, hostcache[n].map, hostcache[n].users, hostcache[n].maxusers); + else + Con_Printf("%-15.15s %-15.15s\n", hostcache[n].name, hostcache[n].map); + } + slistLastShown = n; +} + + +static void PrintSlistTrailer(void) +{ + if (hostCacheCount) + Con_Printf("== end list ==\n\n"); + else + Con_Printf("No Quake servers found.\n\n"); +} + + +void NET_Slist_f (void) +{ + if (slistInProgress) + return; + + if (! slistSilent) + { + Con_Printf("Looking for Quake servers...\n"); + PrintSlistHeader(); + } + + slistInProgress = true; + slistStartTime = Sys_DoubleTime(); + + SchedulePollProcedure(&slistSendProcedure, 0.0); + SchedulePollProcedure(&slistPollProcedure, 0.1); + + hostCacheCount = 0; +} + + +void NET_SlistSort (void) +{ + if (hostCacheCount > 1) + { + int i, j; + hostcache_t temp; + for (i = 0; i < hostCacheCount; i++) + { + for (j = i + 1; j < hostCacheCount; j++) + { + if (strcmp(hostcache[j].name, hostcache[i].name) < 0) + { + memcpy(&temp, &hostcache[j], sizeof(hostcache_t)); + memcpy(&hostcache[j], &hostcache[i], sizeof(hostcache_t)); + memcpy(&hostcache[i], &temp, sizeof(hostcache_t)); + } + } + } + } +} + + +const char *NET_SlistPrintServer (int idx) +{ + static char string[64]; + + if (idx < 0 || idx >= hostCacheCount) + return ""; + + if (hostcache[idx].maxusers) + { + q_snprintf(string, sizeof(string), "%-15.15s %-15.15s %2u/%2u\n", + hostcache[idx].name, hostcache[idx].map, + hostcache[idx].users, hostcache[idx].maxusers); + } + else + { + q_snprintf(string, sizeof(string), "%-15.15s %-15.15s\n", + hostcache[idx].name, hostcache[idx].map); + } + + return string; +} + + +const char *NET_SlistPrintServerName (int idx) +{ + if (idx < 0 || idx >= hostCacheCount) + return ""; + return hostcache[idx].cname; +} + + +static void Slist_Send (void *unused) +{ + for (net_driverlevel = 0; net_driverlevel < net_numdrivers; net_driverlevel++) + { + if (!slistLocal && IS_LOOP_DRIVER(net_driverlevel)) + continue; + if (net_drivers[net_driverlevel].initialized == false) + continue; + dfunc.SearchForHosts (true); + } + + if ((Sys_DoubleTime() - slistStartTime) < 0.5) + SchedulePollProcedure(&slistSendProcedure, 0.75); +} + + +static void Slist_Poll (void *unused) +{ + for (net_driverlevel = 0; net_driverlevel < net_numdrivers; net_driverlevel++) + { + if (!slistLocal && IS_LOOP_DRIVER(net_driverlevel)) + continue; + if (net_drivers[net_driverlevel].initialized == false) + continue; + dfunc.SearchForHosts (false); + } + + if (! slistSilent) + PrintSlist(); + + if ((Sys_DoubleTime() - slistStartTime) < 1.5) + { + SchedulePollProcedure(&slistPollProcedure, 0.1); + return; + } + + if (! slistSilent) + PrintSlistTrailer(); + slistInProgress = false; + slistSilent = false; + slistLocal = true; +} + + +/* +=================== +NET_Connect +=================== +*/ + +int hostCacheCount = 0; +hostcache_t hostcache[HOSTCACHESIZE]; + +qsocket_t *NET_Connect (const char *host) +{ + qsocket_t *ret; + int n; + int numdrivers = net_numdrivers; + + SetNetTime(); + + if (host && *host == 0) + host = NULL; + + if (host) + { + if (q_strcasecmp (host, "local") == 0) + { + numdrivers = 1; + goto JustDoIt; + } + + if (hostCacheCount) + { + for (n = 0; n < hostCacheCount; n++) + if (q_strcasecmp (host, hostcache[n].name) == 0) + { + host = hostcache[n].cname; + break; + } + if (n < hostCacheCount) + goto JustDoIt; + } + } + + slistSilent = host ? true : false; + NET_Slist_f (); + + while (slistInProgress) + NET_Poll(); + + if (host == NULL) + { + if (hostCacheCount != 1) + return NULL; + host = hostcache[0].cname; + Con_Printf("Connecting to...\n%s @ %s\n\n", hostcache[0].name, host); + } + + if (hostCacheCount) + { + for (n = 0; n < hostCacheCount; n++) + { + if (q_strcasecmp (host, hostcache[n].name) == 0) + { + host = hostcache[n].cname; + break; + } + } + } + +JustDoIt: + for (net_driverlevel = 0; net_driverlevel < numdrivers; net_driverlevel++) + { + if (net_drivers[net_driverlevel].initialized == false) + continue; + ret = dfunc.Connect (host); + if (ret) + return ret; + } + + if (host) + { + Con_Printf("\n"); + PrintSlistHeader(); + PrintSlist(); + PrintSlistTrailer(); + } + + return NULL; +} + + +/* +=================== +NET_CheckNewConnections +=================== +*/ +qsocket_t *NET_CheckNewConnections (void) +{ + qsocket_t *ret; + + SetNetTime(); + + for (net_driverlevel = 0; net_driverlevel < net_numdrivers; net_driverlevel++) + { + if (net_drivers[net_driverlevel].initialized == false) + continue; + if (!IS_LOOP_DRIVER(net_driverlevel) && listening == false) + continue; + ret = dfunc.CheckNewConnections (); + if (ret) + { + return ret; + } + } + + return NULL; +} + +/* +=================== +NET_Close +=================== +*/ +void NET_Close (qsocket_t *sock) +{ + if (!sock) + return; + + if (sock->disconnected) + return; + + SetNetTime(); + + // call the driver_Close function + sfunc.Close (sock); + + NET_FreeQSocket(sock); +} + + +/* +================= +NET_GetMessage + +If there is a complete message, return it in net_message + +returns 0 if no data is waiting +returns 1 if a message was received +returns -1 if connection is invalid +================= +*/ +int NET_GetMessage (qsocket_t *sock) +{ + int ret; + + if (!sock) + return -1; + + if (sock->disconnected) + { + Con_Printf("NET_GetMessage: disconnected socket\n"); + return -1; + } + + SetNetTime(); + + ret = sfunc.QGetMessage(sock); + + // see if this connection has timed out + if (ret == 0 && !IS_LOOP_DRIVER(sock->driver)) + { + if (net_time - sock->lastMessageTime > net_messagetimeout.value) + { + NET_Close(sock); + return -1; + } + } + + if (ret > 0) + { + if (!IS_LOOP_DRIVER(sock->driver)) + { + sock->lastMessageTime = net_time; + if (ret == 1) + messagesReceived++; + else if (ret == 2) + unreliableMessagesReceived++; + } + } + + return ret; +} + + +/* +================== +NET_SendMessage + +Try to send a complete length+message unit over the reliable stream. +returns 0 if the message cannot be delivered reliably, but the connection + is still considered valid +returns 1 if the message was sent properly +returns -1 if the connection died +================== +*/ +int NET_SendMessage (qsocket_t *sock, sizebuf_t *data) +{ + int r; + + if (!sock) + return -1; + + if (sock->disconnected) + { + Con_Printf("NET_SendMessage: disconnected socket\n"); + return -1; + } + + SetNetTime(); + r = sfunc.QSendMessage(sock, data); + if (r == 1 && !IS_LOOP_DRIVER(sock->driver)) + messagesSent++; + + return r; +} + + +int NET_SendUnreliableMessage (qsocket_t *sock, sizebuf_t *data) +{ + int r; + + if (!sock) + return -1; + + if (sock->disconnected) + { + Con_Printf("NET_SendMessage: disconnected socket\n"); + return -1; + } + + SetNetTime(); + r = sfunc.SendUnreliableMessage(sock, data); + if (r == 1 && !IS_LOOP_DRIVER(sock->driver)) + unreliableMessagesSent++; + + return r; +} + + +/* +================== +NET_CanSendMessage + +Returns true or false if the given qsocket can currently accept a +message to be transmitted. +================== +*/ +qboolean NET_CanSendMessage (qsocket_t *sock) +{ + if (!sock) + return false; + + if (sock->disconnected) + return false; + + SetNetTime(); + + return sfunc.CanSendMessage(sock); +} + + +int NET_SendToAll (sizebuf_t *data, double blocktime) +{ + double start; + int i; + int count = 0; + qboolean msg_init[MAX_SCOREBOARD]; /* did we write the message to the client's connection */ + qboolean msg_sent[MAX_SCOREBOARD]; /* did the msg arrive its destination (canSend state). */ + + for (i = 0, host_client = svs.clients; i < svs.maxclients; i++, host_client++) + { + /* + if (!host_client->netconnection) + continue; + if (host_client->active) + */ + if (host_client->netconnection && host_client->active) + { + if (IS_LOOP_DRIVER(host_client->netconnection->driver)) + { + NET_SendMessage(host_client->netconnection, data); + msg_init[i] = true; + msg_sent[i] = true; + continue; + } + count++; + msg_init[i] = false; + msg_sent[i] = false; + } + else + { + msg_init[i] = true; + msg_sent[i] = true; + } + } + + start = Sys_DoubleTime(); + while (count) + { + count = 0; + for (i = 0, host_client = svs.clients; i < svs.maxclients; i++, host_client++) + { + if (! msg_init[i]) + { + if (NET_CanSendMessage (host_client->netconnection)) + { + msg_init[i] = true; + NET_SendMessage(host_client->netconnection, data); + } + else + { + NET_GetMessage (host_client->netconnection); + } + count++; + continue; + } + + if (! msg_sent[i]) + { + if (NET_CanSendMessage (host_client->netconnection)) + { + msg_sent[i] = true; + } + else + { + NET_GetMessage (host_client->netconnection); + } + count++; + continue; + } + } + if ((Sys_DoubleTime() - start) > blocktime) + break; + } + return count; +} + + +//============================================================================= + +/* +==================== +NET_Init +==================== +*/ + +void NET_Init (void) +{ + int i; + qsocket_t *s; + + i = COM_CheckParm ("-port"); + if (!i) + i = COM_CheckParm ("-udpport"); + if (!i) + i = COM_CheckParm ("-ipxport"); + + if (i) + { + if (i < com_argc-1) + DEFAULTnet_hostport = Q_atoi (com_argv[i+1]); + else + Sys_Error ("NET_Init: you must specify a number after -port"); + } + net_hostport = DEFAULTnet_hostport; + + net_numsockets = svs.maxclientslimit; + if (cls.state != ca_dedicated) + net_numsockets++; + if (COM_CheckParm("-listen") || cls.state == ca_dedicated) + listening = true; + + SetNetTime(); + + for (i = 0; i < net_numsockets; i++) + { + s = (qsocket_t *)Hunk_AllocName(sizeof(qsocket_t), "qsocket"); + s->next = net_freeSockets; + net_freeSockets = s; + s->disconnected = true; + } + + // allocate space for network message buffer + SZ_Alloc (&net_message, NET_MAXMESSAGE); + + Cvar_RegisterVariable (&net_messagetimeout); + Cvar_RegisterVariable (&hostname); + + Cmd_AddCommand ("slist", NET_Slist_f); + Cmd_AddCommand ("listen", NET_Listen_f); + Cmd_AddCommand ("maxplayers", MaxPlayers_f); + Cmd_AddCommand ("port", NET_Port_f); + + // initialize all the drivers + for (i = net_driverlevel = 0; net_driverlevel < net_numdrivers; net_driverlevel++) + { + if (net_drivers[net_driverlevel].Init() == -1) + continue; + i++; + net_drivers[net_driverlevel].initialized = true; + if (listening) + net_drivers[net_driverlevel].Listen (true); + } + + /* Loop_Init() returns -1 for dedicated server case, + * therefore the i == 0 check is correct */ + if (i == 0 + && cls.state == ca_dedicated + ) + { + Sys_Error("Network not available!"); + } + + if (*my_ipx_address) + { + Con_DPrintf("IPX address %s\n", my_ipx_address); + } + if (*my_tcpip_address) + { + Con_DPrintf("TCP/IP address %s\n", my_tcpip_address); + } +} + +/* +==================== +NET_Shutdown +==================== +*/ + +void NET_Shutdown (void) +{ + qsocket_t *sock; + + SetNetTime(); + + for (sock = net_activeSockets; sock; sock = sock->next) + NET_Close(sock); + +// +// shutdown the drivers +// + for (net_driverlevel = 0; net_driverlevel < net_numdrivers; net_driverlevel++) + { + if (net_drivers[net_driverlevel].initialized == true) + { + net_drivers[net_driverlevel].Shutdown (); + net_drivers[net_driverlevel].initialized = false; + } + } +} + + +static PollProcedure *pollProcedureList = NULL; + +void NET_Poll(void) +{ + PollProcedure *pp; + + SetNetTime(); + + for (pp = pollProcedureList; pp; pp = pp->next) + { + if (pp->nextTime > net_time) + break; + pollProcedureList = pp->next; + pp->procedure(pp->arg); + } +} + + +void SchedulePollProcedure(PollProcedure *proc, double timeOffset) +{ + PollProcedure *pp, *prev; + + proc->nextTime = Sys_DoubleTime() + timeOffset; + for (pp = pollProcedureList, prev = NULL; pp; pp = pp->next) + { + if (pp->nextTime >= proc->nextTime) + break; + prev = pp; + } + + if (prev == NULL) + { + proc->next = pollProcedureList; + pollProcedureList = proc; + return; + } + + proc->next = pp; + prev->next = proc; +} + diff --git a/Quake/net_sys.h b/Quake/net_sys.h new file mode 100644 index 0000000..bc334dc --- /dev/null +++ b/Quake/net_sys.h @@ -0,0 +1,200 @@ +/* + * net_sys.h -- common network system header. + * - depends on arch_def.h + * - may depend on q_stdinc.h + * + * Copyright (C) 2007-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __NET_SYS_H__ +#define __NET_SYS_H__ + +#include <sys/types.h> +#include <errno.h> +#include <stddef.h> +#include <limits.h> + +#if defined(PLATFORM_BSD) || defined(PLATFORM_OSX) || \ + defined(PLATFORM_AMIGA) /* bsdsocket.library */ || \ + defined(__GNU__) /* GNU/Hurd */ || defined(__riscos__) || \ + defined(PLATFORM_HAIKU) /* Haiku OS */ +/* struct sockaddr has unsigned char sa_len as the first member in BSD + * variants and the family member is also an unsigned char instead of an + * unsigned short. This should matter only when PLATFORM_UNIX is defined, + * however, checking for the offset of sa_family in every platform that + * provide a struct sockaddr doesn't hurt either (see down below for the + * compile time asserts.) */ +/* FIXME : GET RID OF THIS ABOMINATION !!! */ +#define HAVE_SA_LEN 1 +#define SA_FAM_OFFSET 1 +#else +#undef HAVE_SA_LEN +#define SA_FAM_OFFSET 0 +#endif /* BSD, sockaddr */ + +/* unix includes and compatibility macros */ +#if defined(PLATFORM_UNIX) || defined(PLATFORM_RISCOS) || defined(PLATFORM_HAIKU) + +#include <sys/param.h> +#include <sys/ioctl.h> +#if defined(__sun) || defined(sun) +#include <sys/filio.h> +#include <sys/sockio.h> +#endif /* __sunos__ */ +#include <unistd.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <netdb.h> + +typedef int sys_socket_t; +#define INVALID_SOCKET (-1) +#define SOCKET_ERROR (-1) + +#if defined(__APPLE__) && defined(SO_NKE) && !defined(SO_NOADDRERR) + /* ancient Mac OS X SDKs 10.2 and older are missing socklen_t */ +typedef int socklen_t; /* defining as signed int to match the old api */ +#endif /* ancient OSX SDKs */ + +#define SOCKETERRNO errno +#define ioctlsocket ioctl +#define closesocket close +#define selectsocket select +#define IOCTLARG_P(x) /* (char *) */ x + +#define NET_EWOULDBLOCK EWOULDBLOCK +#define NET_ECONNREFUSED ECONNREFUSED + +#define socketerror(x) strerror((x)) + +/* Verify that we defined HAVE_SA_LEN correctly: */ +COMPILE_TIME_ASSERT(sockaddr, offsetof(struct sockaddr, sa_family) == SA_FAM_OFFSET); + +#endif /* end of unix stuff */ + + +/* amiga includes and compatibility macros */ +#if defined(PLATFORM_AMIGA) /* Amiga bsdsocket.library */ + +#include <sys/param.h> +#include <sys/ioctl.h> +#include <unistd.h> +#include <proto/exec.h> +#include <proto/socket.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <netdb.h> + +typedef int sys_socket_t; +#define INVALID_SOCKET (-1) +#define SOCKET_ERROR (-1) + +#if !(defined(__AROS__) || defined(__amigaos4__)) +typedef LONG socklen_t; /* int32_t */ +#endif +#if !defined(__amigaos4__) +#if (LONG_MAX <= 2147483647L) +typedef unsigned long in_addr_t; /* u_int32_t */ +#else +typedef unsigned int in_addr_t; /* u_int32_t */ +#endif +#endif + +#define SOCKETERRNO Errno() +#define ioctlsocket IoctlSocket +#define closesocket CloseSocket +#define selectsocket(_N,_R,_W,_E,_T) \ + WaitSelect((_N),(_R),(_W),(_E),(_T),NULL) +#define IOCTLARG_P(x) (char *) x +#if defined(__amigaos4__) || defined(PLATFORM_AMIGAOS3) +#define inet_ntoa(x) Inet_NtoA(x.s_addr) /* Inet_NtoA(*(ULONG*)&x) */ +#define h_errno Errno() +#endif + +#define NET_EWOULDBLOCK EWOULDBLOCK +#define NET_ECONNREFUSED ECONNREFUSED + +#define socketerror(x) strerror((x)) +/* there is h_errno but no hstrerror() */ +#define hstrerror(x) strerror((x)) + +/* Verify that we defined HAVE_SA_LEN correctly: */ +COMPILE_TIME_ASSERT(sockaddr, offsetof(struct sockaddr, sa_family) == SA_FAM_OFFSET); + +#endif /* end of amiga bsdsocket.library stuff */ + + +/* windows includes and compatibility macros */ +#if defined(PLATFORM_WINDOWS) + +/* NOTE: winsock[2].h already includes windows.h */ +#if !defined(_USE_WINSOCK2) +#include <winsock.h> +#else +#include <winsock2.h> +#include <ws2tcpip.h> +#endif + +/* there is no in_addr_t on windows: define it as + the type of the S_addr of in_addr structure */ +typedef u_long in_addr_t; /* uint32_t */ + +/* on windows, socklen_t is to be a winsock2 thing */ +#if !defined(IP_MSFILTER_SIZE) +typedef int socklen_t; +#endif /* socklen_t type */ + +typedef SOCKET sys_socket_t; + +#define selectsocket select +#define IOCTLARG_P(x) /* (u_long *) */ x + +#define SOCKETERRNO WSAGetLastError() +#define NET_EWOULDBLOCK WSAEWOULDBLOCK +#define NET_ECONNREFUSED WSAECONNREFUSED +/* must #include "wsaerror.h" for this : */ +#define socketerror(x) __WSAE_StrError((x)) + +/* Verify that we defined HAVE_SA_LEN correctly: */ +COMPILE_TIME_ASSERT(sockaddr, offsetof(struct sockaddr, sa_family) == SA_FAM_OFFSET); + +#endif /* end of windows stuff */ + + +/* macros which may still be missing */ + +#if !defined(INADDR_NONE) +#define INADDR_NONE ((in_addr_t) 0xffffffff) +#endif /* INADDR_NONE */ + +#if !defined(INADDR_LOOPBACK) +#define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) /* 127.0.0.1 */ +#endif /* INADDR_LOOPBACK */ + + +#if !defined(MAXHOSTNAMELEN) +/* SUSv2 guarantees that `Host names are limited to 255 bytes'. + POSIX 1003.1-2001 guarantees that `Host names (not including + the terminating NUL) are limited to HOST_NAME_MAX bytes'. */ +#define MAXHOSTNAMELEN 256 +#endif /* MAXHOSTNAMELEN */ + + +#endif /* __NET_SYS_H__ */ + diff --git a/Quake/net_udp.c b/Quake/net_udp.c new file mode 100644 index 0000000..1f3644b --- /dev/null +++ b/Quake/net_udp.c @@ -0,0 +1,480 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" + +static sys_socket_t net_acceptsocket = INVALID_SOCKET; // socket for fielding new connections +static sys_socket_t net_controlsocket; +static sys_socket_t net_broadcastsocket = 0; +static struct sockaddr_in broadcastaddr; + +static in_addr_t myAddr; + +#include "net_udp.h" + +//============================================================================= + +sys_socket_t UDP_Init (void) +{ + int err, i; + char *tst; + char buff[MAXHOSTNAMELEN]; + struct hostent *local; + struct qsockaddr addr; + + if (COM_CheckParm ("-noudp")) + return INVALID_SOCKET; + + // determine my name & address + myAddr = htonl(INADDR_LOOPBACK); + if (gethostname(buff, MAXHOSTNAMELEN) != 0) + { + err = SOCKETERRNO; + Con_SafePrintf("UDP_Init: WARNING: gethostname failed (%s)\n", + socketerror(err)); + } + else + { + buff[MAXHOSTNAMELEN - 1] = 0; +#ifdef PLATFORM_OSX + // ericw -- if our hostname ends in ".local" (a macOS thing), + // don't bother calling gethostbyname(), because it blocks for a few seconds + // and then fails (on my system anyway.) + tst = strstr(buff, ".local"); + if (tst && tst[6] == '\0') + { + Con_SafePrintf("UDP_Init: skipping gethostbyname for %s\n", buff); + } + else +#endif + if (!(local = gethostbyname(buff))) + { + Con_SafePrintf("UDP_Init: WARNING: gethostbyname failed (%s)\n", + hstrerror(h_errno)); + } + else if (local->h_addrtype != AF_INET) + { + Con_SafePrintf("UDP_Init: address from gethostbyname not IPv4\n"); + } + else + { + i = COM_CheckParm ("-ip"); + if (i) + { + if (i < com_argc-1) + { + myAddr = inet_addr(com_argv[i + 1]); + if (myAddr == INADDR_NONE) + Sys_Error ("%s is not a valid IP address", com_argv[i + 1]); + strcpy(my_tcpip_address, com_argv[i + 1]); + } + else + { + Sys_Error ("NET_Init: you must specify an IP address after -ip"); + } + } + else + { + myAddr = *(in_addr_t *)local->h_addr_list[0]; + } + } + } + + if ((net_controlsocket = UDP_OpenSocket(0)) == INVALID_SOCKET) + { + Con_SafePrintf("UDP_Init: Unable to open control socket, UDP disabled\n"); + return INVALID_SOCKET; + } + + broadcastaddr.sin_family = AF_INET; + broadcastaddr.sin_addr.s_addr = INADDR_BROADCAST; + broadcastaddr.sin_port = htons((unsigned short)net_hostport); + + UDP_GetSocketAddr (net_controlsocket, &addr); + strcpy(my_tcpip_address, UDP_AddrToString (&addr)); + tst = strrchr(my_tcpip_address, ':'); + if (tst) *tst = 0; + + Con_SafePrintf("UDP Initialized\n"); + tcpipAvailable = true; + + return net_controlsocket; +} + +//============================================================================= + +void UDP_Shutdown (void) +{ + UDP_Listen (false); + UDP_CloseSocket (net_controlsocket); +} + +//============================================================================= + +void UDP_Listen (qboolean state) +{ + // enable listening + if (state) + { + if (net_acceptsocket != INVALID_SOCKET) + return; + if ((net_acceptsocket = UDP_OpenSocket (net_hostport)) == INVALID_SOCKET) + Sys_Error ("UDP_Listen: Unable to open accept socket"); + return; + } + + // disable listening + if (net_acceptsocket == INVALID_SOCKET) + return; + UDP_CloseSocket (net_acceptsocket); + net_acceptsocket = INVALID_SOCKET; +} + +//============================================================================= + +sys_socket_t UDP_OpenSocket (int port) +{ + sys_socket_t newsocket; + struct sockaddr_in address; + int _true = 1; + int err; + + if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) + { + err = SOCKETERRNO; + Con_SafePrintf("UDP_OpenSocket: %s\n", socketerror(err)); + return INVALID_SOCKET; + } + + if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR) + goto ErrorReturn; + + memset(&address, 0, sizeof(struct sockaddr_in)); + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons((unsigned short)port); + if (bind (newsocket, (struct sockaddr *)&address, sizeof(address)) == 0) + return newsocket; + +ErrorReturn: + err = SOCKETERRNO; + Con_SafePrintf("UDP_OpenSocket: %s\n", socketerror(err)); + UDP_CloseSocket (newsocket); + return INVALID_SOCKET; +} + +//============================================================================= + +int UDP_CloseSocket (sys_socket_t socketid) +{ + if (socketid == net_broadcastsocket) + net_broadcastsocket = 0; + return closesocket (socketid); +} + +//============================================================================= + +/* +============ +PartialIPAddress + +this lets you type only as much of the net address as required, using +the local network components to fill in the rest +============ +*/ +static int PartialIPAddress (const char *in, struct qsockaddr *hostaddr) +{ + char buff[256]; + char *b; + int addr, mask, num, port, run; + + buff[0] = '.'; + b = buff; + strcpy(buff+1, in); + if (buff[1] == '.') + b++; + + addr = 0; + mask = -1; + while (*b == '.') + { + b++; + num = 0; + run = 0; + while (!( *b < '0' || *b > '9')) + { + num = num*10 + *b++ - '0'; + if (++run > 3) + return -1; + } + if ((*b < '0' || *b > '9') && *b != '.' && *b != ':' && *b != 0) + return -1; + if (num < 0 || num > 255) + return -1; + mask <<= 8; + addr = (addr<<8) + num; + } + + if (*b++ == ':') + port = atoi(b); + else + port = net_hostport; + + hostaddr->qsa_family = AF_INET; + ((struct sockaddr_in *)hostaddr)->sin_port = htons((unsigned short)port); + ((struct sockaddr_in *)hostaddr)->sin_addr.s_addr = + (myAddr & htonl(mask)) | htonl(addr); + + return 0; +} + +//============================================================================= + +int UDP_Connect (sys_socket_t socketid, struct qsockaddr *addr) +{ + return 0; +} + +//============================================================================= + +sys_socket_t UDP_CheckNewConnections (void) +{ + int available; + struct sockaddr_in from; + socklen_t fromlen; + char buff[1]; + + if (net_acceptsocket == INVALID_SOCKET) + return INVALID_SOCKET; + + if (ioctl (net_acceptsocket, FIONREAD, &available) == -1) + { + int err = SOCKETERRNO; + Sys_Error ("UDP: ioctlsocket (FIONREAD) failed (%s)", socketerror(err)); + } + if (available) + return net_acceptsocket; + // quietly absorb empty packets + recvfrom (net_acceptsocket, buff, 0, 0, (struct sockaddr *) &from, &fromlen); + return INVALID_SOCKET; +} + +//============================================================================= + +int UDP_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr) +{ + socklen_t addrlen = sizeof(struct qsockaddr); + int ret; + + ret = recvfrom (socketid, buf, len, 0, (struct sockaddr *)addr, &addrlen); + if (ret == SOCKET_ERROR) + { + int err = SOCKETERRNO; + if (err == NET_EWOULDBLOCK || err == NET_ECONNREFUSED) + return 0; + Con_SafePrintf ("UDP_Read, recvfrom: %s\n", socketerror(err)); + } + return ret; +} + +//============================================================================= + +static int UDP_MakeSocketBroadcastCapable (sys_socket_t socketid) +{ + int i = 1; + + // make this socket broadcast capable + if (setsockopt(socketid, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i)) + == SOCKET_ERROR) + { + int err = SOCKETERRNO; + Con_SafePrintf ("UDP, setsockopt: %s\n", socketerror(err)); + return -1; + } + net_broadcastsocket = socketid; + + return 0; +} + +//============================================================================= + +int UDP_Broadcast (sys_socket_t socketid, byte *buf, int len) +{ + int ret; + + if (socketid != net_broadcastsocket) + { + if (net_broadcastsocket != 0) + Sys_Error("Attempted to use multiple broadcasts sockets"); + ret = UDP_MakeSocketBroadcastCapable (socketid); + if (ret == -1) + { + Con_Printf("Unable to make socket broadcast capable\n"); + return ret; + } + } + + return UDP_Write (socketid, buf, len, (struct qsockaddr *)&broadcastaddr); +} + +//============================================================================= + +int UDP_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr) +{ + int ret; + + ret = sendto (socketid, buf, len, 0, (struct sockaddr *)addr, + sizeof(struct qsockaddr)); + if (ret == SOCKET_ERROR) + { + int err = SOCKETERRNO; + if (err == NET_EWOULDBLOCK) + return 0; + Con_SafePrintf ("UDP_Write, sendto: %s\n", socketerror(err)); + } + return ret; +} + +//============================================================================= + +const char *UDP_AddrToString (struct qsockaddr *addr) +{ + static char buffer[22]; + int haddr; + + haddr = ntohl(((struct sockaddr_in *)addr)->sin_addr.s_addr); + q_snprintf (buffer, sizeof(buffer), "%d.%d.%d.%d:%d", (haddr >> 24) & 0xff, + (haddr >> 16) & 0xff, (haddr >> 8) & 0xff, haddr & 0xff, + ntohs(((struct sockaddr_in *)addr)->sin_port)); + return buffer; +} + +//============================================================================= + +int UDP_StringToAddr (const char *string, struct qsockaddr *addr) +{ + int ha1, ha2, ha3, ha4, hp, ipaddr; + + sscanf(string, "%d.%d.%d.%d:%d", &ha1, &ha2, &ha3, &ha4, &hp); + ipaddr = (ha1 << 24) | (ha2 << 16) | (ha3 << 8) | ha4; + + addr->qsa_family = AF_INET; + ((struct sockaddr_in *)addr)->sin_addr.s_addr = htonl(ipaddr); + ((struct sockaddr_in *)addr)->sin_port = htons((unsigned short)hp); + return 0; +} + +//============================================================================= + +int UDP_GetSocketAddr (sys_socket_t socketid, struct qsockaddr *addr) +{ + socklen_t addrlen = sizeof(struct qsockaddr); + in_addr_t a; + + memset(addr, 0, sizeof(struct qsockaddr)); + if (getsockname(socketid, (struct sockaddr *)addr, &addrlen) != 0) + return -1; + + a = ((struct sockaddr_in *)addr)->sin_addr.s_addr; + if (a == 0 || a == htonl(INADDR_LOOPBACK)) + ((struct sockaddr_in *)addr)->sin_addr.s_addr = myAddr; + + return 0; +} + +//============================================================================= + +int UDP_GetNameFromAddr (struct qsockaddr *addr, char *name) +{ + struct hostent *hostentry; + + hostentry = gethostbyaddr ((char *)&((struct sockaddr_in *)addr)->sin_addr, + sizeof(struct in_addr), AF_INET); + if (hostentry) + { + strncpy (name, (char *)hostentry->h_name, NET_NAMELEN - 1); + return 0; + } + + strcpy (name, UDP_AddrToString (addr)); + return 0; +} + +//============================================================================= + +int UDP_GetAddrFromName (const char *name, struct qsockaddr *addr) +{ + struct hostent *hostentry; + + if (name[0] >= '0' && name[0] <= '9') + return PartialIPAddress (name, addr); + + hostentry = gethostbyname (name); + if (!hostentry) + return -1; + + addr->qsa_family = AF_INET; + ((struct sockaddr_in *)addr)->sin_port = htons((unsigned short)net_hostport); + ((struct sockaddr_in *)addr)->sin_addr.s_addr = + *(in_addr_t *)hostentry->h_addr_list[0]; + + return 0; +} + +//============================================================================= + +int UDP_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2) +{ + if (addr1->qsa_family != addr2->qsa_family) + return -1; + + if (((struct sockaddr_in *)addr1)->sin_addr.s_addr != + ((struct sockaddr_in *)addr2)->sin_addr.s_addr) + return -1; + + if (((struct sockaddr_in *)addr1)->sin_port != + ((struct sockaddr_in *)addr2)->sin_port) + return 1; + + return 0; +} + +//============================================================================= + +int UDP_GetSocketPort (struct qsockaddr *addr) +{ + return ntohs(((struct sockaddr_in *)addr)->sin_port); +} + + +int UDP_SetSocketPort (struct qsockaddr *addr, int port) +{ + ((struct sockaddr_in *)addr)->sin_port = htons((unsigned short)port); + return 0; +} + +//============================================================================= + diff --git a/Quake/net_udp.h b/Quake/net_udp.h new file mode 100644 index 0000000..5df71df --- /dev/null +++ b/Quake/net_udp.h @@ -0,0 +1,45 @@ +/* +Copyright (C) 1996-1997 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __net_udp_h +#define __net_udp_h + +sys_socket_t UDP_Init (void); +void UDP_Shutdown (void); +void UDP_Listen (qboolean state); +sys_socket_t UDP_OpenSocket (int port); +int UDP_CloseSocket (sys_socket_t socketid); +int UDP_Connect (sys_socket_t socketid, struct qsockaddr *addr); +sys_socket_t UDP_CheckNewConnections (void); +int UDP_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); +int UDP_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); +int UDP_Broadcast (sys_socket_t socketid, byte *buf, int len); +const char *UDP_AddrToString (struct qsockaddr *addr); +int UDP_StringToAddr (const char *string, struct qsockaddr *addr); +int UDP_GetSocketAddr (sys_socket_t socketid, struct qsockaddr *addr); +int UDP_GetNameFromAddr (struct qsockaddr *addr, char *name); +int UDP_GetAddrFromName (const char *name, struct qsockaddr *addr); +int UDP_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2); +int UDP_GetSocketPort (struct qsockaddr *addr); +int UDP_SetSocketPort (struct qsockaddr *addr, int port); + +#endif /* __net_udp_h */ + diff --git a/Quake/net_win.c b/Quake/net_win.c new file mode 100644 index 0000000..3029659 --- /dev/null +++ b/Quake/net_win.c @@ -0,0 +1,121 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" + +#include "net_dgrm.h" +#include "net_loop.h" + +net_driver_t net_drivers[] = +{ + { "Loopback", + false, + Loop_Init, + Loop_Listen, + Loop_SearchForHosts, + Loop_Connect, + Loop_CheckNewConnections, + Loop_GetMessage, + Loop_SendMessage, + Loop_SendUnreliableMessage, + Loop_CanSendMessage, + Loop_CanSendUnreliableMessage, + Loop_Close, + Loop_Shutdown + }, + + { "Datagram", + false, + Datagram_Init, + Datagram_Listen, + Datagram_SearchForHosts, + Datagram_Connect, + Datagram_CheckNewConnections, + Datagram_GetMessage, + Datagram_SendMessage, + Datagram_SendUnreliableMessage, + Datagram_CanSendMessage, + Datagram_CanSendUnreliableMessage, + Datagram_Close, + Datagram_Shutdown + } +}; + +const int net_numdrivers = Q_COUNTOF(net_drivers); + + +#include "net_wins.h" +#include "net_wipx.h" + +net_landriver_t net_landrivers[] = +{ + { "Winsock TCPIP", + false, + 0, + WINS_Init, + WINS_Shutdown, + WINS_Listen, + WINS_OpenSocket, + WINS_CloseSocket, + WINS_Connect, + WINS_CheckNewConnections, + WINS_Read, + WINS_Write, + WINS_Broadcast, + WINS_AddrToString, + WINS_StringToAddr, + WINS_GetSocketAddr, + WINS_GetNameFromAddr, + WINS_GetAddrFromName, + WINS_AddrCompare, + WINS_GetSocketPort, + WINS_SetSocketPort + }, + + { "Winsock IPX", + false, + 0, + WIPX_Init, + WIPX_Shutdown, + WIPX_Listen, + WIPX_OpenSocket, + WIPX_CloseSocket, + WIPX_Connect, + WIPX_CheckNewConnections, + WIPX_Read, + WIPX_Write, + WIPX_Broadcast, + WIPX_AddrToString, + WIPX_StringToAddr, + WIPX_GetSocketAddr, + WIPX_GetNameFromAddr, + WIPX_GetAddrFromName, + WIPX_AddrCompare, + WIPX_GetSocketPort, + WIPX_SetSocketPort + } +}; + +const int net_numlandrivers = Q_COUNTOF(net_landrivers); diff --git a/Quake/net_wins.c b/Quake/net_wins.c new file mode 100644 index 0000000..6be7454 --- /dev/null +++ b/Quake/net_wins.c @@ -0,0 +1,544 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include "quakedef.h" +#include "net_defs.h" + +static sys_socket_t net_acceptsocket = INVALID_SOCKET; // socket for fielding new connections +static sys_socket_t net_controlsocket; +static sys_socket_t net_broadcastsocket = 0; +static struct sockaddr_in broadcastaddr; + +static in_addr_t myAddr; + +#include "net_wins.h" + +int winsock_initialized = 0; +WSADATA winsockdata; +#define __wsaerr_static /* not static: used by net_wipx.c too */ +#include "wsaerror.h" + +//============================================================================= + +#if !defined(_USE_WINSOCK2) +static double blocktime; + +static INT_PTR PASCAL FAR BlockingHook (void) +{ + MSG msg; + BOOL ret; + + if ((Sys_DoubleTime() - blocktime) > 2.0) + { + WSACancelBlockingCall(); + return FALSE; + } + + /* get the next message, if any */ + ret = (BOOL) PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); + + /* if we got one, process it */ + if (ret) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + /* TRUE if we got a message */ + return ret; +} +#endif /* ! _USE_WINSOCK2 */ + + +static void WINS_GetLocalAddress (void) +{ + struct hostent *local = NULL; + char buff[MAXHOSTNAMELEN]; + in_addr_t addr; + int err; + + if (myAddr != INADDR_ANY) + return; + + if (gethostname(buff, MAXHOSTNAMELEN) == SOCKET_ERROR) + { + err = SOCKETERRNO; + Con_SafePrintf("WINS_GetLocalAddress: WARNING: gethostname failed (%s)\n", + socketerror(err)); + return; + } + + buff[MAXHOSTNAMELEN - 1] = 0; +#ifndef _USE_WINSOCK2 + blocktime = Sys_DoubleTime(); + WSASetBlockingHook(BlockingHook); +#endif + local = gethostbyname(buff); + err = WSAGetLastError(); +#ifndef _USE_WINSOCK2 + WSAUnhookBlockingHook(); +#endif + if (local == NULL) + { + Con_SafePrintf("WINS_GetLocalAddress: gethostbyname failed (%s)\n", + __WSAE_StrError(err)); + return; + } + + myAddr = *(in_addr_t *)local->h_addr_list[0]; + + addr = ntohl(myAddr); + sprintf(my_tcpip_address, "%ld.%ld.%ld.%ld", (addr >> 24) & 0xff, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff); +} + + +sys_socket_t WINS_Init (void) +{ + int i, err; + char buff[MAXHOSTNAMELEN]; + + if (COM_CheckParm ("-noudp")) + return -1; + + if (winsock_initialized == 0) + { + err = WSAStartup(MAKEWORD(1,1), &winsockdata); + if (err != 0) + { + Con_SafePrintf("Winsock initialization failed (%s)\n", + socketerror(err)); + return INVALID_SOCKET; + } + } + winsock_initialized++; + + // determine my name & address + if (gethostname(buff, MAXHOSTNAMELEN) != 0) + { + err = SOCKETERRNO; + Con_SafePrintf("WINS_Init: WARNING: gethostname failed (%s)\n", + socketerror(err)); + } + else + { + buff[MAXHOSTNAMELEN - 1] = 0; + } + i = COM_CheckParm ("-ip"); + if (i) + { + if (i < com_argc-1) + { + myAddr = inet_addr(com_argv[i + 1]); + if (myAddr == INADDR_NONE) + Sys_Error ("%s is not a valid IP address", com_argv[i + 1]); + strcpy(my_tcpip_address, com_argv[i + 1]); + } + else + { + Sys_Error ("NET_Init: you must specify an IP address after -ip"); + } + } + else + { + myAddr = INADDR_ANY; + strcpy(my_tcpip_address, "INADDR_ANY"); + } + + if ((net_controlsocket = WINS_OpenSocket(0)) == INVALID_SOCKET) + { + Con_SafePrintf("WINS_Init: Unable to open control socket, UDP disabled\n"); + if (--winsock_initialized == 0) + WSACleanup (); + return INVALID_SOCKET; + } + + broadcastaddr.sin_family = AF_INET; + broadcastaddr.sin_addr.s_addr = INADDR_BROADCAST; + broadcastaddr.sin_port = htons((unsigned short)net_hostport); + + Con_SafePrintf("UDP Initialized\n"); + tcpipAvailable = true; + + return net_controlsocket; +} + +//============================================================================= + +void WINS_Shutdown (void) +{ + WINS_Listen (false); + WINS_CloseSocket (net_controlsocket); + if (--winsock_initialized == 0) + WSACleanup (); +} + +//============================================================================= + +void WINS_Listen (qboolean state) +{ + // enable listening + if (state) + { + if (net_acceptsocket != INVALID_SOCKET) + return; + WINS_GetLocalAddress(); + if ((net_acceptsocket = WINS_OpenSocket (net_hostport)) == INVALID_SOCKET) + Sys_Error ("WINS_Listen: Unable to open accept socket"); + return; + } + + // disable listening + if (net_acceptsocket == INVALID_SOCKET) + return; + WINS_CloseSocket (net_acceptsocket); + net_acceptsocket = INVALID_SOCKET; +} + +//============================================================================= + +sys_socket_t WINS_OpenSocket (int port) +{ + sys_socket_t newsocket; + struct sockaddr_in address; + u_long _true = 1; + int err; + + if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) + { + err = SOCKETERRNO; + Con_SafePrintf("WINS_OpenSocket: %s\n", socketerror(err)); + return INVALID_SOCKET; + } + + if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR) + goto ErrorReturn; + + memset(&address, 0, sizeof(struct sockaddr_in)); + address.sin_family = AF_INET; + address.sin_addr.s_addr = myAddr; + address.sin_port = htons((unsigned short)port); + if (bind (newsocket, (struct sockaddr *)&address, sizeof(address)) == 0) + return newsocket; + + if (tcpipAvailable) + { + err = SOCKETERRNO; + Sys_Error ("Unable to bind to %s (%s)", + WINS_AddrToString ((struct qsockaddr *) &address), + socketerror(err)); + return INVALID_SOCKET; /* not reached */ + } + /* else: we are still in init phase, no need to error */ + +ErrorReturn: + err = SOCKETERRNO; + Con_SafePrintf("WINS_OpenSocket: %s\n", socketerror(err)); + closesocket (newsocket); + return INVALID_SOCKET; +} + +//============================================================================= + +int WINS_CloseSocket (sys_socket_t socketid) +{ + if (socketid == net_broadcastsocket) + net_broadcastsocket = 0; + return closesocket (socketid); +} + +//============================================================================= + +/* +============ +PartialIPAddress + +this lets you type only as much of the net address as required, using +the local network components to fill in the rest +============ +*/ +static int PartialIPAddress (const char *in, struct qsockaddr *hostaddr) +{ + char buff[256]; + char *b; + int addr, mask, num, port, run; + + buff[0] = '.'; + b = buff; + strcpy(buff+1, in); + if (buff[1] == '.') + b++; + + addr = 0; + mask = -1; + while (*b == '.') + { + b++; + num = 0; + run = 0; + while (!( *b < '0' || *b > '9')) + { + num = num*10 + *b++ - '0'; + if (++run > 3) + return -1; + } + if ((*b < '0' || *b > '9') && *b != '.' && *b != ':' && *b != 0) + return -1; + if (num < 0 || num > 255) + return -1; + mask <<= 8; + addr = (addr<<8) + num; + } + + if (*b++ == ':') + port = Q_atoi(b); + else + port = net_hostport; + + hostaddr->qsa_family = AF_INET; + ((struct sockaddr_in *)hostaddr)->sin_port = htons((unsigned short)port); + ((struct sockaddr_in *)hostaddr)->sin_addr.s_addr = + (myAddr & htonl(mask)) | htonl(addr); + + return 0; +} + +//============================================================================= + +int WINS_Connect (sys_socket_t socketid, struct qsockaddr *addr) +{ + return 0; +} + +//============================================================================= + +sys_socket_t WINS_CheckNewConnections (void) +{ + char buf[4096]; + + if (net_acceptsocket == INVALID_SOCKET) + return INVALID_SOCKET; + + if (recvfrom (net_acceptsocket, buf, sizeof(buf), MSG_PEEK, NULL, NULL) + != SOCKET_ERROR) + { + return net_acceptsocket; + } + return INVALID_SOCKET; +} + +//============================================================================= + +int WINS_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr) +{ + socklen_t addrlen = sizeof(struct qsockaddr); + int ret; + + ret = recvfrom (socketid, (char *)buf, len, 0, (struct sockaddr *)addr, &addrlen); + if (ret == SOCKET_ERROR) + { + int err = SOCKETERRNO; + if (err == NET_EWOULDBLOCK || err == NET_ECONNREFUSED) + return 0; + Con_SafePrintf ("WINS_Read, recvfrom: %s\n", socketerror(err)); + } + return ret; +} + +//============================================================================= + +static int WINS_MakeSocketBroadcastCapable (sys_socket_t socketid) +{ + int i = 1; + + // make this socket broadcast capable + if (setsockopt(socketid, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i)) + == SOCKET_ERROR) + { + int err = SOCKETERRNO; + Con_SafePrintf ("UDP, setsockopt: %s\n", socketerror(err)); + return -1; + } + net_broadcastsocket = socketid; + + return 0; +} + +//============================================================================= + +int WINS_Broadcast (sys_socket_t socketid, byte *buf, int len) +{ + int ret; + + if (socketid != net_broadcastsocket) + { + if (net_broadcastsocket != 0) + Sys_Error("Attempted to use multiple broadcasts sockets"); + WINS_GetLocalAddress(); + ret = WINS_MakeSocketBroadcastCapable (socketid); + if (ret == -1) + { + Con_Printf("Unable to make socket broadcast capable\n"); + return ret; + } + } + + return WINS_Write (socketid, buf, len, (struct qsockaddr *)&broadcastaddr); +} + +//============================================================================= + +int WINS_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr) +{ + int ret; + + ret = sendto (socketid, (char *)buf, len, 0, (struct sockaddr *)addr, + sizeof(struct qsockaddr)); + if (ret == SOCKET_ERROR) + { + int err = SOCKETERRNO; + if (err == NET_EWOULDBLOCK) + return 0; + Con_SafePrintf ("WINS_Write, sendto: %s\n", socketerror(err)); + } + return ret; +} + +//============================================================================= + +const char *WINS_AddrToString (struct qsockaddr *addr) +{ + static char buffer[22]; + int haddr; + + haddr = ntohl(((struct sockaddr_in *)addr)->sin_addr.s_addr); + sprintf(buffer, "%d.%d.%d.%d:%d", (haddr >> 24) & 0xff, + (haddr >> 16) & 0xff, (haddr >> 8) & 0xff, haddr & 0xff, + ntohs(((struct sockaddr_in *)addr)->sin_port)); + return buffer; +} + +//============================================================================= + +int WINS_StringToAddr (const char *string, struct qsockaddr *addr) +{ + int ha1, ha2, ha3, ha4, hp, ipaddr; + + sscanf(string, "%d.%d.%d.%d:%d", &ha1, &ha2, &ha3, &ha4, &hp); + ipaddr = (ha1 << 24) | (ha2 << 16) | (ha3 << 8) | ha4; + + addr->qsa_family = AF_INET; + ((struct sockaddr_in *)addr)->sin_addr.s_addr = htonl(ipaddr); + ((struct sockaddr_in *)addr)->sin_port = htons((unsigned short)hp); + return 0; +} + +//============================================================================= + +int WINS_GetSocketAddr (sys_socket_t socketid, struct qsockaddr *addr) +{ + socklen_t addrlen = sizeof(struct qsockaddr); + in_addr_t a; + + memset(addr, 0, sizeof(struct qsockaddr)); + getsockname(socketid, (struct sockaddr *)addr, &addrlen); + + a = ((struct sockaddr_in *)addr)->sin_addr.s_addr; + if (a == 0 || a == htonl(INADDR_LOOPBACK)) + ((struct sockaddr_in *)addr)->sin_addr.s_addr = myAddr; + + return 0; +} + +//============================================================================= + +int WINS_GetNameFromAddr (struct qsockaddr *addr, char *name) +{ + struct hostent *hostentry; + + hostentry = gethostbyaddr ((char *)&((struct sockaddr_in *)addr)->sin_addr, + sizeof(struct in_addr), AF_INET); + if (hostentry) + { + Q_strncpy (name, (char *)hostentry->h_name, NET_NAMELEN - 1); + return 0; + } + + Q_strcpy (name, WINS_AddrToString (addr)); + return 0; +} + +//============================================================================= + +int WINS_GetAddrFromName (const char *name, struct qsockaddr *addr) +{ + struct hostent *hostentry; + + if (name[0] >= '0' && name[0] <= '9') + return PartialIPAddress (name, addr); + + hostentry = gethostbyname (name); + if (!hostentry) + return -1; + + addr->qsa_family = AF_INET; + ((struct sockaddr_in *)addr)->sin_port = htons((unsigned short)net_hostport); + ((struct sockaddr_in *)addr)->sin_addr.s_addr = + *(in_addr_t *)hostentry->h_addr_list[0]; + + return 0; +} + +//============================================================================= + +int WINS_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2) +{ + if (addr1->qsa_family != addr2->qsa_family) + return -1; + + if (((struct sockaddr_in *)addr1)->sin_addr.s_addr != + ((struct sockaddr_in *)addr2)->sin_addr.s_addr) + return -1; + + if (((struct sockaddr_in *)addr1)->sin_port != + ((struct sockaddr_in *)addr2)->sin_port) + return 1; + + return 0; +} + +//============================================================================= + +int WINS_GetSocketPort (struct qsockaddr *addr) +{ + return ntohs(((struct sockaddr_in *)addr)->sin_port); +} + + +int WINS_SetSocketPort (struct qsockaddr *addr, int port) +{ + ((struct sockaddr_in *)addr)->sin_port = htons((unsigned short)port); + return 0; +} + +//============================================================================= + diff --git a/Quake/net_wins.h b/Quake/net_wins.h new file mode 100644 index 0000000..59abda4 --- /dev/null +++ b/Quake/net_wins.h @@ -0,0 +1,45 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __NET_WINSOCK_H +#define __NET_WINSOCK_H + +sys_socket_t WINS_Init (void); +void WINS_Shutdown (void); +void WINS_Listen (qboolean state); +sys_socket_t WINS_OpenSocket (int port); +int WINS_CloseSocket (sys_socket_t socketid); +int WINS_Connect (sys_socket_t socketid, struct qsockaddr *addr); +sys_socket_t WINS_CheckNewConnections (void); +int WINS_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); +int WINS_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); +int WINS_Broadcast (sys_socket_t socketid, byte *buf, int len); +const char *WINS_AddrToString (struct qsockaddr *addr); +int WINS_StringToAddr (const char *string, struct qsockaddr *addr); +int WINS_GetSocketAddr (sys_socket_t socketid, struct qsockaddr *addr); +int WINS_GetNameFromAddr (struct qsockaddr *addr, char *name); +int WINS_GetAddrFromName (const char *name, struct qsockaddr *addr); +int WINS_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2); +int WINS_GetSocketPort (struct qsockaddr *addr); +int WINS_SetSocketPort (struct qsockaddr *addr, int port); + +#endif /* __NET_WINSOCK_H */ + diff --git a/Quake/net_wipx.c b/Quake/net_wipx.c new file mode 100644 index 0000000..bd375d1 --- /dev/null +++ b/Quake/net_wipx.c @@ -0,0 +1,448 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// net_wipx.c + +#include "q_stdinc.h" +#include "arch_def.h" +#include "net_sys.h" +#include <wsipx.h> +#include "quakedef.h" +#include "net_defs.h" +#include "net_wipx.h" + +extern cvar_t hostname; + +static sys_socket_t net_acceptsocket = INVALID_SOCKET; // socket for fielding new connections +static sys_socket_t net_controlsocket; +static struct sockaddr_ipx broadcastaddr; + +/* externs from net_wins.c: */ +extern int winsock_initialized; +extern WSADATA winsockdata; +extern const char *__WSAE_StrError (int); + +#define IPXSOCKETS 18 +static sys_socket_t ipxsocket[IPXSOCKETS]; +static int sequence[IPXSOCKETS]; + +//============================================================================= + +sys_socket_t WIPX_Init (void) +{ + int i, err; + char *colon; + char buff[MAXHOSTNAMELEN]; + struct qsockaddr addr; + + if (COM_CheckParm ("-noipx")) + return INVALID_SOCKET; + + if (winsock_initialized == 0) + { + err = WSAStartup(MAKEWORD(1,1), &winsockdata); + if (err != 0) + { + Con_SafePrintf("Winsock initialization failed (%s)\n", + socketerror(err)); + return INVALID_SOCKET; + } + } + winsock_initialized++; + + for (i = 0; i < IPXSOCKETS; i++) + ipxsocket[i] = 0; + + // determine my name & address + if (gethostname(buff, MAXHOSTNAMELEN) != 0) + { + err = SOCKETERRNO; + Con_SafePrintf("WIPX_Init: WARNING: gethostname failed (%s)\n", + socketerror(err)); + } + else + { + buff[MAXHOSTNAMELEN - 1] = 0; + } + + if ((net_controlsocket = WIPX_OpenSocket(0)) == INVALID_SOCKET) + { + Con_SafePrintf("WIPX_Init: Unable to open control socket, IPX disabled\n"); + if (--winsock_initialized == 0) + WSACleanup (); + return INVALID_SOCKET; + } + + broadcastaddr.sa_family = AF_IPX; + memset(broadcastaddr.sa_netnum, 0, 4); + memset(broadcastaddr.sa_nodenum, 0xff, 6); + broadcastaddr.sa_socket = htons((unsigned short)net_hostport); + + WIPX_GetSocketAddr (net_controlsocket, &addr); + Q_strcpy(my_ipx_address, WIPX_AddrToString (&addr)); + colon = Q_strrchr (my_ipx_address, ':'); + if (colon) + *colon = 0; + + Con_SafePrintf("IPX Initialized\n"); + ipxAvailable = true; + + return net_controlsocket; +} + +//============================================================================= + +void WIPX_Shutdown (void) +{ + WIPX_Listen (false); + WIPX_CloseSocket (net_controlsocket); + if (--winsock_initialized == 0) + WSACleanup (); +} + +//============================================================================= + +void WIPX_Listen (qboolean state) +{ + // enable listening + if (state) + { + if (net_acceptsocket != INVALID_SOCKET) + return; + if ((net_acceptsocket = WIPX_OpenSocket (net_hostport)) == INVALID_SOCKET) + Sys_Error ("WIPX_Listen: Unable to open accept socket"); + return; + } + + // disable listening + if (net_acceptsocket == INVALID_SOCKET) + return; + WIPX_CloseSocket (net_acceptsocket); + net_acceptsocket = INVALID_SOCKET; +} + +//============================================================================= + +sys_socket_t WIPX_OpenSocket (int port) +{ + int err; + sys_socket_t handle, newsocket; + struct sockaddr_ipx address; + u_long _true = 1; + + for (handle = 0; handle < IPXSOCKETS; handle++) + { + if (ipxsocket[handle] == 0) + break; + } + if (handle == IPXSOCKETS) + { + Con_SafePrintf("WIPX_OpenSocket: Out of free IPX handles.\n"); + return INVALID_SOCKET; + } + + if ((newsocket = socket (AF_IPX, SOCK_DGRAM, NSPROTO_IPX)) == INVALID_SOCKET) + { + err = SOCKETERRNO; + Con_SafePrintf("WIPX_OpenSocket: %s\n", socketerror(err)); + return INVALID_SOCKET; + } + + if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR) + goto ErrorReturn; + + if (setsockopt(newsocket, SOL_SOCKET, SO_BROADCAST, (char *)&_true, sizeof(_true)) + == SOCKET_ERROR) + goto ErrorReturn; + + address.sa_family = AF_IPX; + memset(address.sa_netnum, 0, 4); + memset(address.sa_nodenum, 0, 6);; + address.sa_socket = htons((unsigned short)port); + if (bind (newsocket, (struct sockaddr *)&address, sizeof(address)) == 0) + { + ipxsocket[handle] = newsocket; + sequence[handle] = 0; + return handle; + } + + if (ipxAvailable) + { + err = SOCKETERRNO; + Sys_Error ("IPX bind failed (%s)", socketerror(err)); + return INVALID_SOCKET; /* not reached */ + } + /* else: we are still in init phase, no need to error */ + +ErrorReturn: + err = SOCKETERRNO; + Con_SafePrintf("WIPX_OpenSocket: %s\n", socketerror(err)); + closesocket (newsocket); + return INVALID_SOCKET; +} + +//============================================================================= + +int WIPX_CloseSocket (sys_socket_t handle) +{ + sys_socket_t socketid = ipxsocket[handle]; + int ret; + + ret = closesocket (socketid); + ipxsocket[handle] = 0; + return ret; +} + +//============================================================================= + +int WIPX_Connect (sys_socket_t handle, struct qsockaddr *addr) +{ + return 0; +} + +//============================================================================= + +sys_socket_t WIPX_CheckNewConnections (void) +{ + u_long available; + + if (net_acceptsocket == INVALID_SOCKET) + return INVALID_SOCKET; + + if (ioctlsocket (ipxsocket[net_acceptsocket], FIONREAD, &available) == SOCKET_ERROR) + { + int err = SOCKETERRNO; + Sys_Error ("WIPX: ioctlsocket (FIONREAD) failed (%s)", socketerror(err)); + } + if (available) + return net_acceptsocket; + return INVALID_SOCKET; +} + +//============================================================================= + +static byte netpacketBuffer[NET_DATAGRAMSIZE + 4]; + +int WIPX_Read (sys_socket_t handle, byte *buf, int len, struct qsockaddr *addr) +{ + socklen_t addrlen = sizeof(struct qsockaddr); + sys_socket_t socketid = ipxsocket[handle]; + int ret; + + ret = recvfrom (socketid, (char *)netpacketBuffer, len+4, 0, (struct sockaddr *)addr, &addrlen); + if (ret == SOCKET_ERROR) + { + int err = SOCKETERRNO; + if (err == NET_EWOULDBLOCK || err == NET_ECONNREFUSED) + return 0; + Con_SafePrintf ("WIPX_Read, recvfrom: %s\n", socketerror(err)); + } + + if (ret < 4) + return 0; + + // remove sequence number, it's only needed for DOS IPX + ret -= 4; + memcpy(buf, netpacketBuffer+4, ret); + + return ret; +} + +//============================================================================= + +int WIPX_Broadcast (sys_socket_t handle, byte *buf, int len) +{ + return WIPX_Write (handle, buf, len, (struct qsockaddr *)&broadcastaddr); +} + +//============================================================================= + +int WIPX_Write (sys_socket_t handle, byte *buf, int len, struct qsockaddr *addr) +{ + sys_socket_t socketid = ipxsocket[handle]; + int ret; + + // build packet with sequence number + memcpy(&netpacketBuffer[0], &sequence[handle], 4); + sequence[handle]++; + memcpy(&netpacketBuffer[4], buf, len); + len += 4; + + ret = sendto (socketid, (char *)netpacketBuffer, len, 0, (struct sockaddr *)addr, sizeof(struct qsockaddr)); + if (ret == SOCKET_ERROR) + { + int err = SOCKETERRNO; + if (err == NET_EWOULDBLOCK) + return 0; + Con_SafePrintf ("WIPX_Write, sendto: %s\n", socketerror(err)); + } + + return ret; +} + +//============================================================================= + +const char *WIPX_AddrToString (struct qsockaddr *addr) +{ + static char buf[28]; + + sprintf(buf, "%02x%02x%02x%02x:%02x%02x%02x%02x%02x%02x:%u", + ((struct sockaddr_ipx *)addr)->sa_netnum[0] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_netnum[1] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_netnum[2] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_netnum[3] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_nodenum[0] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_nodenum[1] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_nodenum[2] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_nodenum[3] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_nodenum[4] & 0xff, + ((struct sockaddr_ipx *)addr)->sa_nodenum[5] & 0xff, + ntohs(((struct sockaddr_ipx *)addr)->sa_socket) + ); + return buf; +} + +//============================================================================= + +int WIPX_StringToAddr (const char *string, struct qsockaddr *addr) +{ + int val; + char buf[3]; + + buf[2] = 0; + Q_memset(addr, 0, sizeof(struct qsockaddr)); + addr->qsa_family = AF_IPX; + +#define DO(src,dest) do { \ + buf[0] = string[src]; \ + buf[1] = string[src + 1]; \ + if (sscanf (buf, "%x", &val) != 1) \ + return -1; \ + ((struct sockaddr_ipx *)addr)->dest = val; \ + } while (0) + + DO(0, sa_netnum[0]); + DO(2, sa_netnum[1]); + DO(4, sa_netnum[2]); + DO(6, sa_netnum[3]); + DO(9, sa_nodenum[0]); + DO(11, sa_nodenum[1]); + DO(13, sa_nodenum[2]); + DO(15, sa_nodenum[3]); + DO(17, sa_nodenum[4]); + DO(19, sa_nodenum[5]); +#undef DO + + sscanf (&string[22], "%u", &val); + ((struct sockaddr_ipx *)addr)->sa_socket = htons((unsigned short)val); + + return 0; +} + +//============================================================================= + +int WIPX_GetSocketAddr (sys_socket_t handle, struct qsockaddr *addr) +{ + sys_socket_t socketid = ipxsocket[handle]; + socklen_t addrlen = sizeof(struct qsockaddr); + + Q_memset(addr, 0, sizeof(struct qsockaddr)); + if (getsockname(socketid, (struct sockaddr *)addr, &addrlen) != 0) + { + int err = SOCKETERRNO; + /* FIXME: what action should be taken?... */ + Con_SafePrintf ("WIPX, getsockname: %s\n", socketerror(err)); + } + + return 0; +} + +//============================================================================= + +int WIPX_GetNameFromAddr (struct qsockaddr *addr, char *name) +{ + Q_strcpy(name, WIPX_AddrToString(addr)); + return 0; +} + +//============================================================================= + +int WIPX_GetAddrFromName (const char *name, struct qsockaddr *addr) +{ + int n; + char buf[32]; + + n = Q_strlen(name); + + if (n == 12) + { + sprintf(buf, "00000000:%s:%u", name, net_hostport); + return WIPX_StringToAddr (buf, addr); + } + if (n == 21) + { + sprintf(buf, "%s:%u", name, net_hostport); + return WIPX_StringToAddr (buf, addr); + } + if (n > 21 && n <= 27) + return WIPX_StringToAddr (name, addr); + + return -1; +} + +//============================================================================= + +int WIPX_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2) +{ + if (addr1->qsa_family != addr2->qsa_family) + return -1; + + if (*((struct sockaddr_ipx *)addr1)->sa_netnum && *((struct sockaddr_ipx *)addr2)->sa_netnum) + { + if (memcmp(((struct sockaddr_ipx *)addr1)->sa_netnum, ((struct sockaddr_ipx *)addr2)->sa_netnum, 4) != 0) + return -1; + } + + if (memcmp(((struct sockaddr_ipx *)addr1)->sa_nodenum, ((struct sockaddr_ipx *)addr2)->sa_nodenum, 6) != 0) + return -1; + + if (((struct sockaddr_ipx *)addr1)->sa_socket != ((struct sockaddr_ipx *)addr2)->sa_socket) + return 1; + + return 0; +} + +//============================================================================= + +int WIPX_GetSocketPort (struct qsockaddr *addr) +{ + return ntohs(((struct sockaddr_ipx *)addr)->sa_socket); +} + + +int WIPX_SetSocketPort (struct qsockaddr *addr, int port) +{ + ((struct sockaddr_ipx *)addr)->sa_socket = htons((unsigned short)port); + return 0; +} + +//============================================================================= + diff --git a/Quake/net_wipx.h b/Quake/net_wipx.h new file mode 100644 index 0000000..e8a24d3 --- /dev/null +++ b/Quake/net_wipx.h @@ -0,0 +1,45 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __NET_WINIPX_H +#define __NET_WINIPX_H + +sys_socket_t WIPX_Init (void); +void WIPX_Shutdown (void); +void WIPX_Listen (qboolean state); +sys_socket_t WIPX_OpenSocket (int port); +int WIPX_CloseSocket (sys_socket_t socketid); +int WIPX_Connect (sys_socket_t socketid, struct qsockaddr *addr); +sys_socket_t WIPX_CheckNewConnections (void); +int WIPX_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); +int WIPX_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr); +int WIPX_Broadcast (sys_socket_t socketid, byte *buf, int len); +const char *WIPX_AddrToString (struct qsockaddr *addr); +int WIPX_StringToAddr (const char *string, struct qsockaddr *addr); +int WIPX_GetSocketAddr (sys_socket_t socketid, struct qsockaddr *addr); +int WIPX_GetNameFromAddr (struct qsockaddr *addr, char *name); +int WIPX_GetAddrFromName (const char *name, struct qsockaddr *addr); +int WIPX_AddrCompare (struct qsockaddr *addr1, struct qsockaddr *addr2); +int WIPX_GetSocketPort (struct qsockaddr *addr); +int WIPX_SetSocketPort (struct qsockaddr *addr, int port); + +#endif /* __NET_WINIPX_H */ + diff --git a/Quake/pl_linux.c b/Quake/pl_linux.c new file mode 100644 index 0000000..5995b4b --- /dev/null +++ b/Quake/pl_linux.c @@ -0,0 +1,98 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + +static const Uint8 bmp_bytes[] = +{ +#include "qs_bmp.h" +}; + +void PL_SetWindowIcon (void) +{ + SDL_RWops *rwop; + SDL_Surface *icon; + Uint32 colorkey; + + /* SDL_RWFromConstMem() requires SDL >= 1.2.7 */ + rwop = SDL_RWFromConstMem(bmp_bytes, sizeof(bmp_bytes)); + if (rwop == NULL) + return; + icon = SDL_LoadBMP_RW(rwop, 1); + if (icon == NULL) + return; + /* make pure magenta (#ff00ff) tranparent */ + colorkey = SDL_MapRGB(icon->format, 255, 0, 255); +#if defined(USE_SDL2) + SDL_SetColorKey(icon, SDL_TRUE, colorkey); + SDL_SetWindowIcon((SDL_Window*) VID_GetWindow(), icon); +#else + SDL_SetColorKey(icon, SDL_SRCCOLORKEY, colorkey); + SDL_WM_SetIcon(icon, NULL); +#endif + SDL_FreeSurface(icon); +} + +void PL_VID_Shutdown (void) +{ +} + +#define MAX_CLIPBOARDTXT MAXCMDLINE /* 256 */ +char *PL_GetClipboardData (void) +{ + char *data = NULL; +#if defined(USE_SDL2) + char *cliptext = SDL_GetClipboardText(); + + if (cliptext != NULL) + { + size_t size = strlen(cliptext) + 1; + /* this is intended for simple small text copies + * such as an ip address, etc: do chop the size + * here, otherwise we may experience Z_Malloc() + * failures and all other not-oh-so-fun stuff. */ + size = q_min((size_t)(MAX_CLIPBOARDTXT), size); + data = (char *) Z_Malloc((int)size); + q_strlcpy (data, cliptext, size); + } +#endif + + return data; +} + +void PL_ErrorDialog (const char *errorMsg) +{ +#if defined(USE_SDL2) + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Quake Error", errorMsg, NULL); +#endif +} + diff --git a/Quake/pl_osx.m b/Quake/pl_osx.m new file mode 100644 index 0000000..792afd1 --- /dev/null +++ b/Quake/pl_osx.m @@ -0,0 +1,99 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif +#import <Cocoa/Cocoa.h> + +void PL_SetWindowIcon (void) +{ +/* nothing to do on OS X */ +} + +void PL_VID_Shutdown (void) +{ +} + +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 +#define NSPasteboardTypeString NSStringPboardType +#endif +#define MAX_CLIPBOARDTXT MAXCMDLINE /* 256 */ +char *PL_GetClipboardData (void) +{ + char *data = NULL; + NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; + NSArray* types = [pasteboard types]; + + if ([types containsObject: NSPasteboardTypeString]) { + NSString* clipboardString = [pasteboard stringForType: NSPasteboardTypeString]; + if (clipboardString != NULL && [clipboardString length] > 0) { + const char* srcdata = NULL; + +#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1040) /* for ppc builds targeting 10.3 and older */ + if ([clipboardString canBeConvertedToEncoding:NSASCIIStringEncoding]) + srcdata = [clipboardString cString]; +#else + srcdata = [clipboardString cStringUsingEncoding: NSASCIIStringEncoding]; +#endif + + if (srcdata != NULL) + { + size_t sz = [clipboardString length] + 1; + sz = q_min((size_t)(MAX_CLIPBOARDTXT), sz); + data = (char *) Z_Malloc((int)sz); + q_strlcpy (data, srcdata, sz); + } + } + } + return data; +} + +#ifndef MAC_OS_X_VERSION_10_12 +#define NSAlertStyleCritical NSCriticalAlertStyle +#endif +void PL_ErrorDialog(const char *errorMsg) +{ +#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1040) /* ppc builds targeting 10.3 and older */ + NSString* msg = [NSString stringWithCString:errorMsg]; +#else + NSString* msg = [NSString stringWithCString:errorMsg encoding:NSASCIIStringEncoding]; +#endif +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1030 + NSRunCriticalAlertPanel (@"Quake Error", @"%@", @"OK", nil, nil, msg); +#else + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + alert.alertStyle = NSAlertStyleCritical; + alert.messageText = @"Quake Error"; + alert.informativeText = msg; + [alert runModal]; +#endif +} + diff --git a/Quake/pl_win.c b/Quake/pl_win.c new file mode 100644 index 0000000..486e3fc --- /dev/null +++ b/Quake/pl_win.c @@ -0,0 +1,114 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" +#include <windows.h> +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#include <SDL2/SDL_syswm.h> +#else +#include <SDL/SDL.h> +#include <SDL/SDL_syswm.h> +#endif +#else +#include "SDL.h" +#include "SDL_syswm.h" +#endif + +static HICON icon; + +void PL_SetWindowIcon (void) +{ + HINSTANCE handle; + SDL_SysWMinfo wminfo; + HWND hwnd; + + handle = GetModuleHandle(NULL); + icon = LoadIcon(handle, "icon"); + + if (!icon) + return; /* no icon in the exe */ + + SDL_VERSION(&wminfo.version); + +#if defined(USE_SDL2) + if (SDL_GetWindowWMInfo((SDL_Window*) VID_GetWindow(), &wminfo) != SDL_TRUE) + return; /* wrong SDL version */ + + hwnd = wminfo.info.win.window; +#else + if (SDL_GetWMInfo(&wminfo) != 1) + return; /* wrong SDL version */ + + hwnd = wminfo.window; +#endif +#ifdef _WIN64 + SetClassLongPtr(hwnd, GCLP_HICON, (LONG_PTR) icon); +#else + SetClassLong(hwnd, GCL_HICON, (LONG) icon); +#endif +} + +void PL_VID_Shutdown (void) +{ + DestroyIcon(icon); +} + +#define MAX_CLIPBOARDTXT MAXCMDLINE /* 256 */ +char *PL_GetClipboardData (void) +{ + char *data = NULL; + char *cliptext; + + if (OpenClipboard(NULL) != 0) + { + HANDLE hClipboardData; + + if ((hClipboardData = GetClipboardData(CF_TEXT)) != NULL) + { + cliptext = (char *) GlobalLock(hClipboardData); + if (cliptext != NULL) + { + size_t size = GlobalSize(hClipboardData) + 1; + /* this is intended for simple small text copies + * such as an ip address, etc: do chop the size + * here, otherwise we may experience Z_Malloc() + * failures and all other not-oh-so-fun stuff. */ + size = q_min((size_t)(MAX_CLIPBOARDTXT), size); + data = (char *) Z_Malloc((int)size); + q_strlcpy (data, cliptext, size); + GlobalUnlock (hClipboardData); + } + } + CloseClipboard (); + } + return data; +} + +void PL_ErrorDialog(const char *errorMsg) +{ + MessageBox (NULL, errorMsg, "Quake Error", + MB_OK | MB_SETFOREGROUND | MB_ICONSTOP); +} + diff --git a/Quake/platform.h b/Quake/platform.h new file mode 100644 index 0000000..5927a00 --- /dev/null +++ b/Quake/platform.h @@ -0,0 +1,48 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_PLATFORM_H +#define _QUAKE_PLATFORM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* platform dependent way to set the window icon */ +void PL_SetWindowIcon(void); + +/* platform dependent cleanup */ +void PL_VID_Shutdown (void); + +/* retrieve text from the clipboard (returns Z_Malloc()'ed data) */ +char *PL_GetClipboardData (void); + +/* show an error dialog */ +void PL_ErrorDialog(const char *text); + +#ifdef __cplusplus +} +#endif + +#endif /* _QUAKE_PLATFORM_H */ + diff --git a/Quake/pr_cmds.c b/Quake/pr_cmds.c new file mode 100644 index 0000000..03643db --- /dev/null +++ b/Quake/pr_cmds.c @@ -0,0 +1,1858 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" + +#define STRINGTEMP_BUFFERS 16 +#define STRINGTEMP_LENGTH 1024 +static char pr_string_temp[STRINGTEMP_BUFFERS][STRINGTEMP_LENGTH]; +static byte pr_string_tempindex = 0; + +static char *PR_GetTempString (void) +{ + return pr_string_temp[(STRINGTEMP_BUFFERS-1) & ++pr_string_tempindex]; +} + +#define RETURN_EDICT(e) (((int *)pr_globals)[OFS_RETURN] = EDICT_TO_PROG(e)) + +#define MSG_BROADCAST 0 // unreliable to all +#define MSG_ONE 1 // reliable to one (msg_entity) +#define MSG_ALL 2 // reliable to all +#define MSG_INIT 3 // write to the init string + +/* +=============================================================================== + + BUILT-IN FUNCTIONS + +=============================================================================== +*/ + +static const char* PF_GetStringArg(int idx, void* userdata) +{ + if (userdata) + idx += *(int*)userdata; + if (idx < 0 || idx >= pr_argc) + return ""; + return LOC_GetString(G_STRING(OFS_PARM0 + idx * 3)); +} + +static char *PF_VarString (int first) +{ + int i; + static char out[1024]; + const char *format; + size_t s; + + out[0] = 0; + s = 0; + + if (first >= pr_argc) + return out; + + format = LOC_GetString(G_STRING((OFS_PARM0 + first * 3))); + if (LOC_HasPlaceholders(format)) + { + int offset = first + 1; + s = LOC_Format(format, PF_GetStringArg, &offset, out, sizeof(out)); + } + else + { + for (i = first; i < pr_argc; i++) + { + s = q_strlcat(out, LOC_GetString(G_STRING(OFS_PARM0+i*3)), sizeof(out)); + if (s >= sizeof(out)) + { + Con_Warning("PF_VarString: overflow (string truncated)\n"); + return out; + } + } + } + if (s > 255) + { + if (!dev_overflows.varstring || dev_overflows.varstring + CONSOLE_RESPAM_TIME < realtime) + { + Con_DWarning("PF_VarString: %i characters exceeds standard limit of 255 (max = %d).\n", + (int) s, (int)(sizeof(out) - 1)); + dev_overflows.varstring = realtime; + } + } + return out; +} + + +/* +================= +PF_error + +This is a TERMINAL error, which will kill off the entire server. +Dumps self. + +error(value) +================= +*/ +static void PF_error (void) +{ + char *s; + edict_t *ed; + + s = PF_VarString(0); + Con_Printf ("======SERVER ERROR in %s:\n%s\n", + PR_GetString(pr_xfunction->s_name), s); + ed = PROG_TO_EDICT(pr_global_struct->self); + ED_Print (ed); + + Host_Error ("Program error"); +} + +/* +================= +PF_objerror + +Dumps out self, then an error message. The program is aborted and self is +removed, but the level can continue. + +objerror(value) +================= +*/ +static void PF_objerror (void) +{ + char *s; + edict_t *ed; + + s = PF_VarString(0); + Con_Printf ("======OBJECT ERROR in %s:\n%s\n", + PR_GetString(pr_xfunction->s_name), s); + ed = PROG_TO_EDICT(pr_global_struct->self); + ED_Print (ed); + ED_Free (ed); + + //Host_Error ("Program error"); //johnfitz -- by design, this should not be fatal +} + + + +/* +============== +PF_makevectors + +Writes new values for v_forward, v_up, and v_right based on angles +makevectors(vector) +============== +*/ +static void PF_makevectors (void) +{ + AngleVectors (G_VECTOR(OFS_PARM0), pr_global_struct->v_forward, pr_global_struct->v_right, pr_global_struct->v_up); +} + +/* +================= +PF_setorigin + +This is the only valid way to move an object without using the physics +of the world (setting velocity and waiting). Directly changing origin +will not set internal links correctly, so clipping would be messed up. + +This should be called when an object is spawned, and then only if it is +teleported. + +setorigin (entity, origin) +================= +*/ +static void PF_setorigin (void) +{ + edict_t *e; + float *org; + + e = G_EDICT(OFS_PARM0); + org = G_VECTOR(OFS_PARM1); + VectorCopy (org, e->v.origin); + SV_LinkEdict (e, false); +} + + +static void SetMinMaxSize (edict_t *e, float *minvec, float *maxvec, qboolean rotate) +{ + float *angles; + vec3_t rmin, rmax; + float bounds[2][3]; + float xvector[2], yvector[2]; + float a; + vec3_t base, transformed; + int i, j, k, l; + + for (i = 0; i < 3; i++) + if (minvec[i] > maxvec[i]) + PR_RunError ("backwards mins/maxs"); + + rotate = false; // FIXME: implement rotation properly again + + if (!rotate) + { + VectorCopy (minvec, rmin); + VectorCopy (maxvec, rmax); + } + else + { + // find min / max for rotations + angles = e->v.angles; + + a = angles[1]/180 * M_PI; + + xvector[0] = cos(a); + xvector[1] = sin(a); + yvector[0] = -sin(a); + yvector[1] = cos(a); + + VectorCopy (minvec, bounds[0]); + VectorCopy (maxvec, bounds[1]); + + rmin[0] = rmin[1] = rmin[2] = FLT_MAX; + rmax[0] = rmax[1] = rmax[2] = -FLT_MAX; + + for (i = 0; i <= 1; i++) + { + base[0] = bounds[i][0]; + for (j = 0; j <= 1; j++) + { + base[1] = bounds[j][1]; + for (k = 0; k <= 1; k++) + { + base[2] = bounds[k][2]; + + // transform the point + transformed[0] = xvector[0]*base[0] + yvector[0]*base[1]; + transformed[1] = xvector[1]*base[0] + yvector[1]*base[1]; + transformed[2] = base[2]; + + for (l = 0; l < 3; l++) + { + if (transformed[l] < rmin[l]) + rmin[l] = transformed[l]; + if (transformed[l] > rmax[l]) + rmax[l] = transformed[l]; + } + } + } + } + } + +// set derived values + VectorCopy (rmin, e->v.mins); + VectorCopy (rmax, e->v.maxs); + VectorSubtract (maxvec, minvec, e->v.size); + + SV_LinkEdict (e, false); +} + +/* +================= +PF_setsize + +the size box is rotated by the current angle + +setsize (entity, minvector, maxvector) +================= +*/ +static void PF_setsize (void) +{ + edict_t *e; + float *minvec, *maxvec; + + e = G_EDICT(OFS_PARM0); + minvec = G_VECTOR(OFS_PARM1); + maxvec = G_VECTOR(OFS_PARM2); + SetMinMaxSize (e, minvec, maxvec, false); +} + + +/* +================= +PF_setmodel + +setmodel(entity, model) +================= +*/ +static void PF_setmodel (void) +{ + int i; + const char *m, **check; + qmodel_t *mod; + edict_t *e; + + e = G_EDICT(OFS_PARM0); + m = G_STRING(OFS_PARM1); + +// check to see if model was properly precached + for (i = 0, check = sv.model_precache; *check; i++, check++) + { + if (!strcmp(*check, m)) + break; + } + + if (!*check) + { + PR_RunError ("no precache: %s", m); + } + e->v.model = PR_SetEngineString(*check); + e->v.modelindex = i; //SV_ModelIndex (m); + + mod = sv.models[ (int)e->v.modelindex]; // Mod_ForName (m, true); + + if (mod) + //johnfitz -- correct physics cullboxes for bmodels + { + if (mod->type == mod_brush) + SetMinMaxSize (e, mod->clipmins, mod->clipmaxs, true); + else + SetMinMaxSize (e, mod->mins, mod->maxs, true); + } + //johnfitz + else + SetMinMaxSize (e, vec3_origin, vec3_origin, true); +} + +/* +================= +PF_bprint + +broadcast print to everyone on server + +bprint(value) +================= +*/ +static void PF_bprint (void) +{ + char *s; + + s = PF_VarString(0); + SV_BroadcastPrintf ("%s", s); +} + +/* +================= +PF_sprint + +single print to a specific client + +sprint(clientent, value) +================= +*/ +static void PF_sprint (void) +{ + char *s; + client_t *client; + int entnum; + + entnum = G_EDICTNUM(OFS_PARM0); + s = PF_VarString(1); + + if (entnum < 1 || entnum > svs.maxclients) + { + Con_Printf ("tried to sprint to a non-client\n"); + return; + } + + client = &svs.clients[entnum-1]; + + MSG_WriteChar (&client->message,svc_print); + MSG_WriteString (&client->message, s ); +} + + +/* +================= +PF_centerprint + +single print to a specific client + +centerprint(clientent, value) +================= +*/ +static void PF_centerprint (void) +{ + char *s; + client_t *client; + int entnum; + + entnum = G_EDICTNUM(OFS_PARM0); + s = PF_VarString(1); + + if (entnum < 1 || entnum > svs.maxclients) + { + Con_Printf ("tried to sprint to a non-client\n"); + return; + } + + client = &svs.clients[entnum-1]; + + MSG_WriteChar (&client->message,svc_centerprint); + MSG_WriteString (&client->message, s); +} + + +/* +================= +PF_normalize + +vector normalize(vector) +================= +*/ +static void PF_normalize (void) +{ + float *value1; + vec3_t newvalue; + double new_temp; + + value1 = G_VECTOR(OFS_PARM0); + + new_temp = (double)value1[0] * value1[0] + (double)value1[1] * value1[1] + (double)value1[2]*value1[2]; + new_temp = sqrt (new_temp); + + if (new_temp == 0) + newvalue[0] = newvalue[1] = newvalue[2] = 0; + else + { + new_temp = 1 / new_temp; + newvalue[0] = value1[0] * new_temp; + newvalue[1] = value1[1] * new_temp; + newvalue[2] = value1[2] * new_temp; + } + + VectorCopy (newvalue, G_VECTOR(OFS_RETURN)); +} + +/* +================= +PF_vlen + +scalar vlen(vector) +================= +*/ +static void PF_vlen (void) +{ + float *value1; + double new_temp; + + value1 = G_VECTOR(OFS_PARM0); + + new_temp = (double)value1[0] * value1[0] + (double)value1[1] * value1[1] + (double)value1[2]*value1[2]; + new_temp = sqrt(new_temp); + + G_FLOAT(OFS_RETURN) = new_temp; +} + +/* +================= +PF_vectoyaw + +float vectoyaw(vector) +================= +*/ +static void PF_vectoyaw (void) +{ + float *value1; + float yaw; + + value1 = G_VECTOR(OFS_PARM0); + + if (value1[1] == 0 && value1[0] == 0) + yaw = 0; + else + { + yaw = (int) (atan2(value1[1], value1[0]) * 180 / M_PI); + if (yaw < 0) + yaw += 360; + } + + G_FLOAT(OFS_RETURN) = yaw; +} + + +/* +================= +PF_vectoangles + +vector vectoangles(vector) +================= +*/ +static void PF_vectoangles (void) +{ + float *value1; + float forward; + float yaw, pitch; + + value1 = G_VECTOR(OFS_PARM0); + + if (value1[1] == 0 && value1[0] == 0) + { + yaw = 0; + if (value1[2] > 0) + pitch = 90; + else + pitch = 270; + } + else + { + yaw = (int) (atan2(value1[1], value1[0]) * 180 / M_PI); + if (yaw < 0) + yaw += 360; + + forward = sqrt (value1[0]*value1[0] + value1[1]*value1[1]); + pitch = (int) (atan2(value1[2], forward) * 180 / M_PI); + if (pitch < 0) + pitch += 360; + } + + G_FLOAT(OFS_RETURN+0) = pitch; + G_FLOAT(OFS_RETURN+1) = yaw; + G_FLOAT(OFS_RETURN+2) = 0; +} + +/* +================= +PF_Random + +Returns a number from 0 <= num < 1 + +random() +================= +*/ +static void PF_random (void) +{ + float num; + + num = (rand() & 0x7fff) / ((float)0x7fff); + + G_FLOAT(OFS_RETURN) = num; +} + +/* +================= +PF_particle + +particle(origin, color, count) +================= +*/ +static void PF_particle (void) +{ + float *org, *dir; + float color; + float count; + + org = G_VECTOR(OFS_PARM0); + dir = G_VECTOR(OFS_PARM1); + color = G_FLOAT(OFS_PARM2); + count = G_FLOAT(OFS_PARM3); + SV_StartParticle (org, dir, color, count); +} + + +/* +================= +PF_ambientsound + +================= +*/ +static void PF_ambientsound (void) +{ + const char *samp, **check; + float *pos; + float vol, attenuation; + int i, soundnum; + int large = false; //johnfitz -- PROTOCOL_FITZQUAKE + + pos = G_VECTOR (OFS_PARM0); + samp = G_STRING(OFS_PARM1); + vol = G_FLOAT(OFS_PARM2); + attenuation = G_FLOAT(OFS_PARM3); + +// check to see if samp was properly precached + for (soundnum = 0, check = sv.sound_precache; *check; check++, soundnum++) + { + if (!strcmp(*check, samp)) + break; + } + + if (!*check) + { + Con_Printf ("no precache: %s\n", samp); + return; + } + + //johnfitz -- PROTOCOL_FITZQUAKE + if (soundnum > 255) + { + if (sv.protocol == PROTOCOL_NETQUAKE) + return; //don't send any info protocol can't support + else + large = true; + } + //johnfitz + + SV_ReserveSignonSpace (17); + +// add an svc_spawnambient command to the level signon packet + + //johnfitz -- PROTOCOL_FITZQUAKE + if (large) + MSG_WriteByte (sv.signon,svc_spawnstaticsound2); + else + MSG_WriteByte (sv.signon,svc_spawnstaticsound); + //johnfitz + + for (i = 0; i < 3; i++) + MSG_WriteCoord(sv.signon, pos[i], sv.protocolflags); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (large) + MSG_WriteShort(sv.signon, soundnum); + else + MSG_WriteByte (sv.signon, soundnum); + //johnfitz + + MSG_WriteByte (sv.signon, vol*255); + MSG_WriteByte (sv.signon, attenuation*64); + +} + +/* +================= +PF_sound + +Each entity can have eight independant sound sources, like voice, +weapon, feet, etc. + +Channel 0 is an auto-allocate channel, the others override anything +already running on that entity/channel pair. + +An attenuation of 0 will play full volume everywhere in the level. +Larger attenuations will drop off. + +================= +*/ +static void PF_sound (void) +{ + const char *sample; + int channel; + edict_t *entity; + int volume; + float attenuation; + + entity = G_EDICT(OFS_PARM0); + channel = G_FLOAT(OFS_PARM1); + sample = G_STRING(OFS_PARM2); + volume = G_FLOAT(OFS_PARM3) * 255; + attenuation = G_FLOAT(OFS_PARM4); + + SV_StartSound (entity, channel, sample, volume, attenuation); +} + +/* +================= +PF_break + +break() +================= +*/ +static void PF_break (void) +{ + Con_Printf ("break statement\n"); + *(int *)-4 = 0; // dump to debugger +// PR_RunError ("break statement"); +} + +/* +================= +PF_traceline + +Used for use tracing and shot targeting +Traces are blocked by bbox and exact bsp entityes, and also slide box entities +if the tryents flag is set. + +traceline (vector1, vector2, tryents) +================= +*/ +static void PF_traceline (void) +{ + float *v1, *v2; + trace_t trace; + int nomonsters; + edict_t *ent; + + v1 = G_VECTOR(OFS_PARM0); + v2 = G_VECTOR(OFS_PARM1); + nomonsters = G_FLOAT(OFS_PARM2); + ent = G_EDICT(OFS_PARM3); + + /* FIXME FIXME FIXME: Why do we hit this with certain progs.dat ?? */ + if (developer.value) { + if (IS_NAN(v1[0]) || IS_NAN(v1[1]) || IS_NAN(v1[2]) || + IS_NAN(v2[0]) || IS_NAN(v2[1]) || IS_NAN(v2[2])) { + Con_Warning ("NAN in traceline:\nv1(%f %f %f) v2(%f %f %f)\nentity %d\n", + v1[0], v1[1], v1[2], v2[0], v2[1], v2[2], NUM_FOR_EDICT(ent)); + } + } + + if (IS_NAN(v1[0]) || IS_NAN(v1[1]) || IS_NAN(v1[2])) + v1[0] = v1[1] = v1[2] = 0; + if (IS_NAN(v2[0]) || IS_NAN(v2[1]) || IS_NAN(v2[2])) + v2[0] = v2[1] = v2[2] = 0; + + trace = SV_Move (v1, vec3_origin, vec3_origin, v2, nomonsters, ent); + + pr_global_struct->trace_allsolid = trace.allsolid; + pr_global_struct->trace_startsolid = trace.startsolid; + pr_global_struct->trace_fraction = trace.fraction; + pr_global_struct->trace_inwater = trace.inwater; + pr_global_struct->trace_inopen = trace.inopen; + VectorCopy (trace.endpos, pr_global_struct->trace_endpos); + VectorCopy (trace.plane.normal, pr_global_struct->trace_plane_normal); + pr_global_struct->trace_plane_dist = trace.plane.dist; + if (trace.ent) + pr_global_struct->trace_ent = EDICT_TO_PROG(trace.ent); + else + pr_global_struct->trace_ent = EDICT_TO_PROG(sv.edicts); +} + +/* +================= +PF_checkpos + +Returns true if the given entity can move to the given position from it's +current position by walking or rolling. +FIXME: make work... +scalar checkpos (entity, vector) +================= +*/ +#if 0 +static void PF_checkpos (void) +{ +} +#endif + +//============================================================================ + +static byte *checkpvs; //ericw -- changed to malloc +static int checkpvs_capacity; + +static int PF_newcheckclient (int check) +{ + int i; + byte *pvs; + edict_t *ent; + mleaf_t *leaf; + vec3_t org; + int pvsbytes; + +// cycle to the next one + + if (check < 1) + check = 1; + if (check > svs.maxclients) + check = svs.maxclients; + + if (check == svs.maxclients) + i = 1; + else + i = check + 1; + + for ( ; ; i++) + { + if (i == svs.maxclients+1) + i = 1; + + ent = EDICT_NUM(i); + + if (i == check) + break; // didn't find anything else + + if (ent->free) + continue; + if (ent->v.health <= 0) + continue; + if ((int)ent->v.flags & FL_NOTARGET) + continue; + + // anything that is a client, or has a client as an enemy + break; + } + +// get the PVS for the entity + VectorAdd (ent->v.origin, ent->v.view_ofs, org); + leaf = Mod_PointInLeaf (org, sv.worldmodel); + pvs = Mod_LeafPVS (leaf, sv.worldmodel); + + pvsbytes = (sv.worldmodel->numleafs+7)>>3; + if (checkpvs == NULL || pvsbytes > checkpvs_capacity) + { + checkpvs_capacity = pvsbytes; + checkpvs = (byte *) realloc (checkpvs, checkpvs_capacity); + if (!checkpvs) + Sys_Error ("PF_newcheckclient: realloc() failed on %d bytes", checkpvs_capacity); + } + memcpy (checkpvs, pvs, pvsbytes); + + return i; +} + +/* +================= +PF_checkclient + +Returns a client (or object that has a client enemy) that would be a +valid target. + +If there are more than one valid options, they are cycled each frame + +If (self.origin + self.viewofs) is not in the PVS of the current target, +it is not returned at all. + +name checkclient () +================= +*/ +#define MAX_CHECK 16 +static int c_invis, c_notvis; +static void PF_checkclient (void) +{ + edict_t *ent, *self; + mleaf_t *leaf; + int l; + vec3_t view; + +// find a new check if on a new frame + if (sv.time - sv.lastchecktime >= 0.1) + { + sv.lastcheck = PF_newcheckclient (sv.lastcheck); + sv.lastchecktime = sv.time; + } + +// return check if it might be visible + ent = EDICT_NUM(sv.lastcheck); + if (ent->free || ent->v.health <= 0) + { + RETURN_EDICT(sv.edicts); + return; + } + +// if current entity can't possibly see the check entity, return 0 + self = PROG_TO_EDICT(pr_global_struct->self); + VectorAdd (self->v.origin, self->v.view_ofs, view); + leaf = Mod_PointInLeaf (view, sv.worldmodel); + l = (leaf - sv.worldmodel->leafs) - 1; + if ( (l < 0) || !(checkpvs[l>>3] & (1 << (l & 7))) ) + { + c_notvis++; + RETURN_EDICT(sv.edicts); + return; + } + +// might be able to see it + c_invis++; + RETURN_EDICT(ent); +} + +//============================================================================ + + +/* +================= +PF_stuffcmd + +Sends text over to the client's execution buffer + +stuffcmd (clientent, value) +================= +*/ +static void PF_stuffcmd (void) +{ + int entnum; + const char *str; + client_t *old; + + entnum = G_EDICTNUM(OFS_PARM0); + if (entnum < 1 || entnum > svs.maxclients) + PR_RunError ("Parm 0 not a client"); + str = G_STRING(OFS_PARM1); + + old = host_client; + host_client = &svs.clients[entnum-1]; + Host_ClientCommands ("%s", str); + host_client = old; +} + +/* +================= +PF_localcmd + +Sends text over to the client's execution buffer + +localcmd (string) +================= +*/ +static void PF_localcmd (void) +{ + const char *str; + + str = G_STRING(OFS_PARM0); + Cbuf_AddText (str); +} + +/* +================= +PF_cvar + +float cvar (string) +================= +*/ +static void PF_cvar (void) +{ + const char *str; + + str = G_STRING(OFS_PARM0); + + G_FLOAT(OFS_RETURN) = Cvar_VariableValue (str); +} + +/* +================= +PF_cvar_set + +float cvar (string) +================= +*/ +static void PF_cvar_set (void) +{ + const char *var, *val; + + var = G_STRING(OFS_PARM0); + val = G_STRING(OFS_PARM1); + + Cvar_Set (var, val); +} + +/* +================= +PF_findradius + +Returns a chain of entities that have origins within a spherical area + +findradius (origin, radius) +================= +*/ +static void PF_findradius (void) +{ + edict_t *ent, *chain; + float rad; + float *org; + int i; + + chain = (edict_t *)sv.edicts; + + org = G_VECTOR(OFS_PARM0); + rad = G_FLOAT(OFS_PARM1); + rad *= rad; + + ent = NEXT_EDICT(sv.edicts); + for (i = 1; i < sv.num_edicts; i++, ent = NEXT_EDICT(ent)) + { + float d, lensq; + if (ent->free) + continue; + if (ent->v.solid == SOLID_NOT) + continue; + + d = org[0] - (ent->v.origin[0] + (ent->v.mins[0] + ent->v.maxs[0]) * 0.5); + lensq = d * d; + if (lensq > rad) + continue; + d = org[1] - (ent->v.origin[1] + (ent->v.mins[1] + ent->v.maxs[1]) * 0.5); + lensq += d * d; + if (lensq > rad) + continue; + d = org[2] - (ent->v.origin[2] + (ent->v.mins[2] + ent->v.maxs[2]) * 0.5); + lensq += d * d; + if (lensq > rad) + continue; + + ent->v.chain = EDICT_TO_PROG(chain); + chain = ent; + } + + RETURN_EDICT(chain); +} + +/* +========= +PF_dprint +========= +*/ +static void PF_dprint (void) +{ + Con_DPrintf ("%s",PF_VarString(0)); +} + +static void PF_ftos (void) +{ + float v; + char *s; + + v = G_FLOAT(OFS_PARM0); + s = PR_GetTempString(); + if (v == (int)v) + sprintf (s, "%d",(int)v); + else + sprintf (s, "%5.1f",v); + G_INT(OFS_RETURN) = PR_SetEngineString(s); +} + +static void PF_fabs (void) +{ + float v; + v = G_FLOAT(OFS_PARM0); + G_FLOAT(OFS_RETURN) = fabs(v); +} + +static void PF_vtos (void) +{ + char *s; + + s = PR_GetTempString(); + sprintf (s, "'%5.1f %5.1f %5.1f'", G_VECTOR(OFS_PARM0)[0], G_VECTOR(OFS_PARM0)[1], G_VECTOR(OFS_PARM0)[2]); + G_INT(OFS_RETURN) = PR_SetEngineString(s); +} + +static void PF_Spawn (void) +{ + edict_t *ed; + + ed = ED_Alloc(); + + RETURN_EDICT(ed); +} + +static void PF_Remove (void) +{ + edict_t *ed; + + ed = G_EDICT(OFS_PARM0); + ED_Free (ed); +} + + +// entity (entity start, .string field, string match) find = #5; +static void PF_Find (void) +{ + int e; + int f; + const char *s, *t; + edict_t *ed; + + e = G_EDICTNUM(OFS_PARM0); + f = G_INT(OFS_PARM1); + s = G_STRING(OFS_PARM2); + if (!s) + PR_RunError ("PF_Find: bad search string"); + + for (e++ ; e < sv.num_edicts ; e++) + { + ed = EDICT_NUM(e); + if (ed->free) + continue; + t = E_STRING(ed,f); + if (!t) + continue; + if (!strcmp(t,s)) + { + RETURN_EDICT(ed); + return; + } + } + + RETURN_EDICT(sv.edicts); +} + +static void PR_CheckEmptyString (const char *s) +{ + if (s[0] <= ' ') + PR_RunError ("Bad string"); +} + +static void PF_precache_file (void) +{ // precache_file is only used to copy files with qcc, it does nothing + G_INT(OFS_RETURN) = G_INT(OFS_PARM0); +} + +static void PF_precache_sound (void) +{ + const char *s; + int i; + + if (sv.state != ss_loading) + PR_RunError ("PF_Precache_*: Precache can only be done in spawn functions"); + + s = G_STRING(OFS_PARM0); + G_INT(OFS_RETURN) = G_INT(OFS_PARM0); + PR_CheckEmptyString (s); + + for (i = 0; i < MAX_SOUNDS; i++) + { + if (!sv.sound_precache[i]) + { + sv.sound_precache[i] = s; + return; + } + if (!strcmp(sv.sound_precache[i], s)) + return; + } + PR_RunError ("PF_precache_sound: overflow"); +} + +static void PF_precache_model (void) +{ + const char *s; + int i; + + if (sv.state != ss_loading) + PR_RunError ("PF_Precache_*: Precache can only be done in spawn functions"); + + s = G_STRING(OFS_PARM0); + G_INT(OFS_RETURN) = G_INT(OFS_PARM0); + PR_CheckEmptyString (s); + + for (i = 0; i < MAX_MODELS; i++) + { + if (!sv.model_precache[i]) + { + sv.model_precache[i] = s; + sv.models[i] = Mod_ForName (s, true); + return; + } + if (!strcmp(sv.model_precache[i], s)) + return; + } + PR_RunError ("PF_precache_model: overflow"); +} + + +static void PF_coredump (void) +{ + ED_PrintEdicts (); +} + +static void PF_traceon (void) +{ + pr_trace = true; +} + +static void PF_traceoff (void) +{ + pr_trace = false; +} + +static void PF_eprint (void) +{ + ED_PrintNum (G_EDICTNUM(OFS_PARM0)); +} + +/* +=============== +PF_walkmove + +float(float yaw, float dist) walkmove +=============== +*/ +static void PF_walkmove (void) +{ + edict_t *ent; + float yaw, dist; + vec3_t move; + dfunction_t *oldf; + int oldself; + + ent = PROG_TO_EDICT(pr_global_struct->self); + yaw = G_FLOAT(OFS_PARM0); + dist = G_FLOAT(OFS_PARM1); + + if ( !( (int)ent->v.flags & (FL_ONGROUND|FL_FLY|FL_SWIM) ) ) + { + G_FLOAT(OFS_RETURN) = 0; + return; + } + + yaw = yaw * M_PI * 2 / 360; + + move[0] = cos(yaw) * dist; + move[1] = sin(yaw) * dist; + move[2] = 0; + +// save program state, because SV_movestep may call other progs + oldf = pr_xfunction; + oldself = pr_global_struct->self; + + G_FLOAT(OFS_RETURN) = SV_movestep(ent, move, true); + + +// restore program state + pr_xfunction = oldf; + pr_global_struct->self = oldself; +} + +/* +=============== +PF_droptofloor + +void() droptofloor +=============== +*/ +static void PF_droptofloor (void) +{ + edict_t *ent; + vec3_t end; + trace_t trace; + + ent = PROG_TO_EDICT(pr_global_struct->self); + + VectorCopy (ent->v.origin, end); + end[2] -= 256; + + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, end, false, ent); + + if (trace.fraction == 1 || trace.allsolid) + G_FLOAT(OFS_RETURN) = 0; + else + { + VectorCopy (trace.endpos, ent->v.origin); + SV_LinkEdict (ent, false); + ent->v.flags = (int)ent->v.flags | FL_ONGROUND; + ent->v.groundentity = EDICT_TO_PROG(trace.ent); + G_FLOAT(OFS_RETURN) = 1; + } +} + +/* +=============== +PF_lightstyle + +void(float style, string value) lightstyle +=============== +*/ +static void PF_lightstyle (void) +{ + int style; + const char *val; + client_t *client; + int j; + + style = G_FLOAT(OFS_PARM0); + val = G_STRING(OFS_PARM1); + +// bounds check to avoid clobbering sv struct + if (style < 0 || style >= MAX_LIGHTSTYLES) + { + Con_DWarning("PF_lightstyle: invalid style %d\n", style); + return; + } + +// change the string in sv + sv.lightstyles[style] = val; + +// send message to all clients on this server + if (sv.state != ss_active) + return; + + for (j = 0, client = svs.clients; j < svs.maxclients; j++, client++) + { + if (client->active || client->spawned) + { + MSG_WriteChar (&client->message, svc_lightstyle); + MSG_WriteChar (&client->message, style); + MSG_WriteString (&client->message, val); + } + } +} + +static void PF_rint (void) +{ + float f; + f = G_FLOAT(OFS_PARM0); + if (f > 0) + G_FLOAT(OFS_RETURN) = (int)(f + 0.5); + else + G_FLOAT(OFS_RETURN) = (int)(f - 0.5); +} + +static void PF_floor (void) +{ + G_FLOAT(OFS_RETURN) = floor(G_FLOAT(OFS_PARM0)); +} + +static void PF_ceil (void) +{ + G_FLOAT(OFS_RETURN) = ceil(G_FLOAT(OFS_PARM0)); +} + + +/* +============= +PF_checkbottom +============= +*/ +static void PF_checkbottom (void) +{ + edict_t *ent; + + ent = G_EDICT(OFS_PARM0); + + G_FLOAT(OFS_RETURN) = SV_CheckBottom (ent); +} + +/* +============= +PF_pointcontents +============= +*/ +static void PF_pointcontents (void) +{ + float *v; + + v = G_VECTOR(OFS_PARM0); + + G_FLOAT(OFS_RETURN) = SV_PointContents (v); +} + +/* +============= +PF_nextent + +entity nextent(entity) +============= +*/ +static void PF_nextent (void) +{ + int i; + edict_t *ent; + + i = G_EDICTNUM(OFS_PARM0); + while (1) + { + i++; + if (i == sv.num_edicts) + { + RETURN_EDICT(sv.edicts); + return; + } + ent = EDICT_NUM(i); + if (!ent->free) + { + RETURN_EDICT(ent); + return; + } + } +} + +/* +============= +PF_aim + +Pick a vector for the player to shoot along +vector aim(entity, missilespeed) +============= +*/ +cvar_t sv_aim = {"sv_aim", "1", CVAR_NONE}; // ericw -- turn autoaim off by default. was 0.93 +static void PF_aim (void) +{ + edict_t *ent, *check, *bestent; + vec3_t start, dir, end, bestdir; + int i, j; + trace_t tr; + float dist, bestdist; + float speed; + + ent = G_EDICT(OFS_PARM0); + speed = G_FLOAT(OFS_PARM1); + (void) speed; /* variable set but not used */ + + VectorCopy (ent->v.origin, start); + start[2] += 20; + +// try sending a trace straight + VectorCopy (pr_global_struct->v_forward, dir); + VectorMA (start, 2048, dir, end); + tr = SV_Move (start, vec3_origin, vec3_origin, end, false, ent); + if (tr.ent && tr.ent->v.takedamage == DAMAGE_AIM + && (!teamplay.value || ent->v.team <= 0 || ent->v.team != tr.ent->v.team) ) + { + VectorCopy (pr_global_struct->v_forward, G_VECTOR(OFS_RETURN)); + return; + } + +// try all possible entities + VectorCopy (dir, bestdir); + bestdist = sv_aim.value; + bestent = NULL; + + check = NEXT_EDICT(sv.edicts); + for (i = 1; i < sv.num_edicts; i++, check = NEXT_EDICT(check) ) + { + if (check->v.takedamage != DAMAGE_AIM) + continue; + if (check == ent) + continue; + if (teamplay.value && ent->v.team > 0 && ent->v.team == check->v.team) + continue; // don't aim at teammate + for (j = 0; j < 3; j++) + end[j] = check->v.origin[j] + 0.5 * (check->v.mins[j] + check->v.maxs[j]); + VectorSubtract (end, start, dir); + VectorNormalize (dir); + dist = DotProduct (dir, pr_global_struct->v_forward); + if (dist < bestdist) + continue; // to far to turn + tr = SV_Move (start, vec3_origin, vec3_origin, end, false, ent); + if (tr.ent == check) + { // can shoot at this one + bestdist = dist; + bestent = check; + } + } + + if (bestent) + { + VectorSubtract (bestent->v.origin, ent->v.origin, dir); + dist = DotProduct (dir, pr_global_struct->v_forward); + VectorScale (pr_global_struct->v_forward, dist, end); + end[2] = dir[2]; + VectorNormalize (end); + VectorCopy (end, G_VECTOR(OFS_RETURN)); + } + else + { + VectorCopy (bestdir, G_VECTOR(OFS_RETURN)); + } +} + +/* +============== +PF_changeyaw + +This was a major timewaster in progs, so it was converted to C +============== +*/ +void PF_changeyaw (void) +{ + edict_t *ent; + float ideal, current, move, speed; + + ent = PROG_TO_EDICT(pr_global_struct->self); + current = anglemod( ent->v.angles[1] ); + ideal = ent->v.ideal_yaw; + speed = ent->v.yaw_speed; + + if (current == ideal) + return; + move = ideal - current; + if (ideal > current) + { + if (move >= 180) + move = move - 360; + } + else + { + if (move <= -180) + move = move + 360; + } + if (move > 0) + { + if (move > speed) + move = speed; + } + else + { + if (move < -speed) + move = -speed; + } + + ent->v.angles[1] = anglemod (current + move); +} + +/* +=============================================================================== + +MESSAGE WRITING + +=============================================================================== +*/ + +static sizebuf_t *WriteDest (void) +{ + int entnum; + int dest; + edict_t *ent; + + dest = G_FLOAT(OFS_PARM0); + switch (dest) + { + case MSG_BROADCAST: + return &sv.datagram; + + case MSG_ONE: + ent = PROG_TO_EDICT(pr_global_struct->msg_entity); + entnum = NUM_FOR_EDICT(ent); + if (entnum < 1 || entnum > svs.maxclients) + PR_RunError ("WriteDest: not a client"); + return &svs.clients[entnum-1].message; + + case MSG_ALL: + return &sv.reliable_datagram; + + case MSG_INIT: + return sv.signon; + + default: + PR_RunError ("WriteDest: bad destination"); + break; + } + + return NULL; +} + +static void PF_WriteByte (void) +{ + MSG_WriteByte (WriteDest(), G_FLOAT(OFS_PARM1)); +} + +static void PF_WriteChar (void) +{ + MSG_WriteChar (WriteDest(), G_FLOAT(OFS_PARM1)); +} + +static void PF_WriteShort (void) +{ + MSG_WriteShort (WriteDest(), G_FLOAT(OFS_PARM1)); +} + +static void PF_WriteLong (void) +{ + MSG_WriteLong (WriteDest(), G_FLOAT(OFS_PARM1)); +} + +static void PF_WriteAngle (void) +{ + MSG_WriteAngle (WriteDest(), G_FLOAT(OFS_PARM1), sv.protocolflags); +} + +static void PF_WriteCoord (void) +{ + MSG_WriteCoord (WriteDest(), G_FLOAT(OFS_PARM1), sv.protocolflags); +} + +static void PF_WriteString (void) +{ + MSG_WriteString (WriteDest(), LOC_GetString(G_STRING(OFS_PARM1))); +} + +static void PF_WriteEntity (void) +{ + MSG_WriteShort (WriteDest(), G_EDICTNUM(OFS_PARM1)); +} + +//============================================================================= + +static void PF_makestatic (void) +{ + edict_t *ent; + int i; + int bits = 0; //johnfitz -- PROTOCOL_FITZQUAKE + + ent = G_EDICT(OFS_PARM0); + + //johnfitz -- don't send invisible static entities + if (ent->alpha == ENTALPHA_ZERO) { + ED_Free (ent); + return; + } + //johnfitz + + //johnfitz -- PROTOCOL_FITZQUAKE + if (sv.protocol == PROTOCOL_NETQUAKE) + { + if (SV_ModelIndex(PR_GetString(ent->v.model)) & 0xFF00 || (int)(ent->v.frame) & 0xFF00) + { + ED_Free (ent); + return; //can't display the correct model & frame, so don't show it at all + } + } + else + { + if (SV_ModelIndex(PR_GetString(ent->v.model)) & 0xFF00) + bits |= B_LARGEMODEL; + if ((int)(ent->v.frame) & 0xFF00) + bits |= B_LARGEFRAME; + if (ent->alpha != ENTALPHA_DEFAULT) + bits |= B_ALPHA; + + if (sv.protocol == PROTOCOL_RMQ) + { + eval_t* val; + val = GetEdictFieldValue(ent, "scale"); + if (val) + ent->scale = ENTSCALE_ENCODE(val->_float); + else + ent->scale = ENTSCALE_DEFAULT; + + if (ent->scale != ENTSCALE_DEFAULT) + bits |= B_SCALE; + } + } + + SV_ReserveSignonSpace (34); + + if (bits) + { + MSG_WriteByte (sv.signon, svc_spawnstatic2); + MSG_WriteByte (sv.signon, bits); + } + else + MSG_WriteByte (sv.signon, svc_spawnstatic); + + if (bits & B_LARGEMODEL) + MSG_WriteShort (sv.signon, SV_ModelIndex(PR_GetString(ent->v.model))); + else + MSG_WriteByte (sv.signon, SV_ModelIndex(PR_GetString(ent->v.model))); + + if (bits & B_LARGEFRAME) + MSG_WriteShort (sv.signon, ent->v.frame); + else + MSG_WriteByte (sv.signon, ent->v.frame); + //johnfitz + + MSG_WriteByte (sv.signon, ent->v.colormap); + MSG_WriteByte (sv.signon, ent->v.skin); + for (i = 0; i < 3; i++) + { + MSG_WriteCoord(sv.signon, ent->v.origin[i], sv.protocolflags); + MSG_WriteAngle(sv.signon, ent->v.angles[i], sv.protocolflags); + } + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & B_ALPHA) + MSG_WriteByte (sv.signon, ent->alpha); + //johnfitz + + if (bits & B_SCALE) + MSG_WriteByte (sv.signon, ent->scale); + +// throw the entity away now + ED_Free (ent); +} + +//============================================================================= + +/* +============== +PF_setspawnparms +============== +*/ +static void PF_setspawnparms (void) +{ + edict_t *ent; + int i; + client_t *client; + + ent = G_EDICT(OFS_PARM0); + i = NUM_FOR_EDICT(ent); + if (i < 1 || i > svs.maxclients) + PR_RunError ("Entity is not a client"); + + // copy spawn parms out of the client_t + client = svs.clients + (i-1); + + for (i = 0; i < NUM_SPAWN_PARMS; i++) + (&pr_global_struct->parm1)[i] = client->spawn_parms[i]; +} + +/* +============== +PF_changelevel +============== +*/ +static void PF_changelevel (void) +{ + const char *s; + +// make sure we don't issue two changelevels + if (svs.changelevel_issued) + return; + svs.changelevel_issued = true; + + s = G_STRING(OFS_PARM0); + Cbuf_AddText (va("changelevel %s\n",s)); +} + +/* +============== +2021 re-release +============== +*/ +static void PF_finalefinished (void) +{ + G_FLOAT(OFS_RETURN) = 0; +} +static void PF_CheckPlayerEXFlags (void) +{ + G_FLOAT(OFS_RETURN) = 0; +} +static void PF_walkpathtogoal (void) +{ + G_FLOAT(OFS_RETURN) = 0; /* PATH_ERROR */ +} +static void PF_localsound (void) +{ + const char *sample; + int entnum; + + entnum = G_EDICTNUM(OFS_PARM0); + sample = G_STRING(OFS_PARM1); + if (entnum < 1 || entnum > svs.maxclients) { + Con_Printf ("tried to localsound to a non-client\n"); + return; + } + SV_LocalSound (&svs.clients[entnum-1], sample); +} + +static void PF_Fixme (void) +{ + PR_RunError ("unimplemented builtin"); +} + + +static builtin_t pr_builtin[] = +{ + PF_Fixme, + PF_makevectors, // void(entity e) makevectors = #1 + PF_setorigin, // void(entity e, vector o) setorigin = #2 + PF_setmodel, // void(entity e, string m) setmodel = #3 + PF_setsize, // void(entity e, vector min, vector max) setsize = #4 + PF_Fixme, // void(entity e, vector min, vector max) setabssize = #5 + PF_break, // void() break = #6 + PF_random, // float() random = #7 + PF_sound, // void(entity e, float chan, string samp) sound = #8 + PF_normalize, // vector(vector v) normalize = #9 + PF_error, // void(string e) error = #10 + PF_objerror, // void(string e) objerror = #11 + PF_vlen, // float(vector v) vlen = #12 + PF_vectoyaw, // float(vector v) vectoyaw = #13 + PF_Spawn, // entity() spawn = #14 + PF_Remove, // void(entity e) remove = #15 + PF_traceline, // float(vector v1, vector v2, float tryents) traceline = #16 + PF_checkclient, // entity() clientlist = #17 + PF_Find, // entity(entity start, .string fld, string match) find = #18 + PF_precache_sound, // void(string s) precache_sound = #19 + PF_precache_model, // void(string s) precache_model = #20 + PF_stuffcmd, // void(entity client, string s)stuffcmd = #21 + PF_findradius, // entity(vector org, float rad) findradius = #22 + PF_bprint, // void(string s) bprint = #23 + PF_sprint, // void(entity client, string s) sprint = #24 + PF_dprint, // void(string s) dprint = #25 + PF_ftos, // void(string s) ftos = #26 + PF_vtos, // void(string s) vtos = #27 + PF_coredump, + PF_traceon, + PF_traceoff, + PF_eprint, // void(entity e) debug print an entire entity + PF_walkmove, // float(float yaw, float dist) walkmove + PF_Fixme, // float(float yaw, float dist) walkmove + PF_droptofloor, + PF_lightstyle, + PF_rint, + PF_floor, + PF_ceil, + PF_Fixme, + PF_checkbottom, + PF_pointcontents, + PF_Fixme, + PF_fabs, + PF_aim, + PF_cvar, + PF_localcmd, + PF_nextent, + PF_particle, + PF_changeyaw, + PF_Fixme, + PF_vectoangles, + + PF_WriteByte, + PF_WriteChar, + PF_WriteShort, + PF_WriteLong, + PF_WriteCoord, + PF_WriteAngle, + PF_WriteString, + PF_WriteEntity, + + PF_Fixme, + PF_Fixme, + PF_Fixme, + PF_Fixme, + PF_Fixme, + PF_Fixme, + PF_Fixme, + + SV_MoveToGoal, + PF_precache_file, + PF_makestatic, + + PF_changelevel, + PF_Fixme, + + PF_cvar_set, + PF_centerprint, + + PF_ambientsound, + + PF_precache_model, + PF_precache_sound, // precache_sound2 is different only for qcc + PF_precache_file, + + PF_setspawnparms, + + // 2021 re-release + PF_finalefinished, // float() finaleFinished = #79 + PF_localsound, // void localsound (entity client, string sample) = #80 + PF_Fixme, // void draw_point (vector point, float colormap, float lifetime, float depthtest) = #81 + PF_Fixme, // void draw_line (vector start, vector end, float colormap, float lifetime, float depthtest) = #82 + PF_Fixme, // void draw_arrow (vector start, vector end, float colormap, float size, float lifetime, float depthtest) = #83 + PF_Fixme, // void draw_ray (vector start, vector direction, float length, float colormap, float size, float lifetime, float depthtest) = #84 + PF_Fixme, // void draw_circle (vector origin, float radius, float colormap, float lifetime, float depthtest) = #85 + PF_Fixme, // void draw_bounds (vector min, vector max, float colormap, float lifetime, float depthtest) = #86 + PF_Fixme, // void draw_worldtext (string s, vector origin, float size, float lifetime, float depthtest) = #87 + PF_Fixme, // void draw_sphere (vector origin, float radius, float colormap, float lifetime, float depthtest) = #88 + PF_Fixme, // void draw_cylinder (vector origin, float halfHeight, float radius, float colormap, float lifetime, float depthtest) = #89 + + PF_CheckPlayerEXFlags, + PF_walkpathtogoal, + + PF_Fixme, +}; + +const builtin_t *pr_builtins = pr_builtin; +const int pr_numbuiltins = Q_COUNTOF(pr_builtin); diff --git a/Quake/pr_comp.h b/Quake/pr_comp.h new file mode 100644 index 0000000..bc6c62e --- /dev/null +++ b/Quake/pr_comp.h @@ -0,0 +1,197 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __PR_COMP_H +#define __PR_COMP_H + +// this file is shared by quake and qcc + +typedef int func_t; +typedef int string_t; + +typedef enum +{ + ev_bad = -1, + ev_void = 0, + ev_string, + ev_float, + ev_vector, + ev_entity, + ev_field, + ev_function, + ev_pointer +} etype_t; + +#define OFS_NULL 0 +#define OFS_RETURN 1 +#define OFS_PARM0 4 // leave 3 ofs for each parm to hold vectors +#define OFS_PARM1 7 +#define OFS_PARM2 10 +#define OFS_PARM3 13 +#define OFS_PARM4 16 +#define OFS_PARM5 19 +#define OFS_PARM6 22 +#define OFS_PARM7 25 +#define RESERVED_OFS 28 + + +enum +{ + OP_DONE, + OP_MUL_F, + OP_MUL_V, + OP_MUL_FV, + OP_MUL_VF, + OP_DIV_F, + OP_ADD_F, + OP_ADD_V, + OP_SUB_F, + OP_SUB_V, + + OP_EQ_F, + OP_EQ_V, + OP_EQ_S, + OP_EQ_E, + OP_EQ_FNC, + + OP_NE_F, + OP_NE_V, + OP_NE_S, + OP_NE_E, + OP_NE_FNC, + + OP_LE, + OP_GE, + OP_LT, + OP_GT, + + OP_LOAD_F, + OP_LOAD_V, + OP_LOAD_S, + OP_LOAD_ENT, + OP_LOAD_FLD, + OP_LOAD_FNC, + + OP_ADDRESS, + + OP_STORE_F, + OP_STORE_V, + OP_STORE_S, + OP_STORE_ENT, + OP_STORE_FLD, + OP_STORE_FNC, + + OP_STOREP_F, + OP_STOREP_V, + OP_STOREP_S, + OP_STOREP_ENT, + OP_STOREP_FLD, + OP_STOREP_FNC, + + OP_RETURN, + OP_NOT_F, + OP_NOT_V, + OP_NOT_S, + OP_NOT_ENT, + OP_NOT_FNC, + OP_IF, + OP_IFNOT, + OP_CALL0, + OP_CALL1, + OP_CALL2, + OP_CALL3, + OP_CALL4, + OP_CALL5, + OP_CALL6, + OP_CALL7, + OP_CALL8, + OP_STATE, + OP_GOTO, + OP_AND, + OP_OR, + + OP_BITAND, + OP_BITOR +}; + +typedef struct statement_s +{ + unsigned short op; + short a, b, c; +} dstatement_t; + +typedef struct +{ + unsigned short type; // if DEF_SAVEGLOBAL bit is set + // the variable needs to be saved in savegames + unsigned short ofs; + int s_name; +} ddef_t; + +#define DEF_SAVEGLOBAL (1<<15) + +#define MAX_PARMS 8 + +typedef struct +{ + int first_statement; // negative numbers are builtins + int parm_start; + int locals; // total ints of parms + locals + + int profile; // runtime + + int s_name; + int s_file; // source file defined in + + int numparms; + byte parm_size[MAX_PARMS]; +} dfunction_t; + + +#define PROG_VERSION 6 +typedef struct +{ + int version; + int crc; // check of header file + + int ofs_statements; + int numstatements; // statement 0 is an error + + int ofs_globaldefs; + int numglobaldefs; + + int ofs_fielddefs; + int numfielddefs; + + int ofs_functions; + int numfunctions; // function 0 is an empty + + int ofs_strings; + int numstrings; // first string is a null string + + int ofs_globals; + int numglobals; + + int entityfields; +} dprograms_t; + +#endif /* __PR_COMP_H */ + diff --git a/Quake/pr_edict.c b/Quake/pr_edict.c new file mode 100644 index 0000000..655fcbc --- /dev/null +++ b/Quake/pr_edict.c @@ -0,0 +1,1422 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sv_edict.c -- entity dictionary + +#include "quakedef.h" + +dprograms_t *progs; +dfunction_t *pr_functions; + +static char *pr_strings; +static int pr_stringssize; +static const char **pr_knownstrings; +static int pr_maxknownstrings; +static int pr_numknownstrings; +static ddef_t *pr_fielddefs; +static ddef_t *pr_globaldefs; + +qboolean pr_alpha_supported; //johnfitz +int pr_effects_mask; // only enable 2021 rerelease quad/penta dlights when applicable + +dstatement_t *pr_statements; +globalvars_t *pr_global_struct; +float *pr_globals; // same as pr_global_struct +int pr_edict_size; // in bytes + +unsigned short pr_crc; + +const int type_size[NUM_TYPE_SIZES] = { + 1, // ev_void + 1, // sizeof(string_t) / 4 // ev_string + 1, // ev_float + 3, // ev_vector + 1, // ev_entity + 1, // ev_field + 1, // sizeof(func_t) / 4 // ev_function + 1 // sizeof(void *) / 4 // ev_pointer +}; + +static ddef_t *ED_FieldAtOfs (int ofs); +static qboolean ED_ParseEpair (void *base, ddef_t *key, const char *s); + +#define MAX_FIELD_LEN 64 +#define GEFV_CACHESIZE 2 + +typedef struct { + ddef_t *pcache; + char field[MAX_FIELD_LEN]; +} gefv_cache; + +static gefv_cache gefvCache[GEFV_CACHESIZE] = +{ + { NULL, "" }, + { NULL, "" } +}; + +cvar_t nomonsters = {"nomonsters", "0", CVAR_NONE}; +cvar_t gamecfg = {"gamecfg", "0", CVAR_NONE}; +cvar_t scratch1 = {"scratch1", "0", CVAR_NONE}; +cvar_t scratch2 = {"scratch2", "0", CVAR_NONE}; +cvar_t scratch3 = {"scratch3", "0", CVAR_NONE}; +cvar_t scratch4 = {"scratch4", "0", CVAR_NONE}; +cvar_t savedgamecfg = {"savedgamecfg", "0", CVAR_ARCHIVE}; +cvar_t saved1 = {"saved1", "0", CVAR_ARCHIVE}; +cvar_t saved2 = {"saved2", "0", CVAR_ARCHIVE}; +cvar_t saved3 = {"saved3", "0", CVAR_ARCHIVE}; +cvar_t saved4 = {"saved4", "0", CVAR_ARCHIVE}; + +/* +================= +ED_ClearEdict + +Sets everything to NULL +================= +*/ +void ED_ClearEdict (edict_t *e) +{ + memset (&e->v, 0, progs->entityfields * 4); + e->free = false; +} + +/* +================= +ED_Alloc + +Either finds a free edict, or allocates a new one. +Try to avoid reusing an entity that was recently freed, because it +can cause the client to think the entity morphed into something else +instead of being removed and recreated, which can cause interpolated +angles and bad trails. +================= +*/ +edict_t *ED_Alloc (void) +{ + int i; + edict_t *e; + + for (i = svs.maxclients + 1; i < sv.num_edicts; i++) + { + e = EDICT_NUM(i); + // the first couple seconds of server time can involve a lot of + // freeing and allocating, so relax the replacement policy + if (e->free && ( e->freetime < 2 || sv.time - e->freetime > 0.5 ) ) + { + ED_ClearEdict (e); + return e; + } + } + + if (i == sv.max_edicts) //johnfitz -- use sv.max_edicts instead of MAX_EDICTS + Host_Error ("ED_Alloc: no free edicts (max_edicts is %i)", sv.max_edicts); + + sv.num_edicts++; + e = EDICT_NUM(i); + memset(e, 0, pr_edict_size); // ericw -- switched sv.edicts to malloc(), so we are accessing uninitialized memory and must fully zero it, not just ED_ClearEdict + e->baseline.scale = ENTSCALE_DEFAULT; + + return e; +} + +/* +================= +ED_Free + +Marks the edict as free +FIXME: walk all entities and NULL out references to this entity +================= +*/ +void ED_Free (edict_t *ed) +{ + SV_UnlinkEdict (ed); // unlink from world bsp + + ed->free = true; + ed->v.model = 0; + ed->v.takedamage = 0; + ed->v.modelindex = 0; + ed->v.colormap = 0; + ed->v.skin = 0; + ed->v.frame = 0; + VectorCopy (vec3_origin, ed->v.origin); + VectorCopy (vec3_origin, ed->v.angles); + ed->v.nextthink = -1; + ed->v.solid = 0; + ed->alpha = ENTALPHA_DEFAULT; //johnfitz -- reset alpha for next entity + ed->scale = ENTSCALE_DEFAULT; + + ed->freetime = sv.time; +} + +//=========================================================================== + +/* +============ +ED_GlobalAtOfs +============ +*/ +static ddef_t *ED_GlobalAtOfs (int ofs) +{ + ddef_t *def; + int i; + + for (i = 0; i < progs->numglobaldefs; i++) + { + def = &pr_globaldefs[i]; + if (def->ofs == ofs) + return def; + } + return NULL; +} + +/* +============ +ED_FieldAtOfs +============ +*/ +static ddef_t *ED_FieldAtOfs (int ofs) +{ + ddef_t *def; + int i; + + for (i = 1; i < progs->numfielddefs; i++) + { + def = &pr_fielddefs[i]; + if (def->ofs == ofs) + return def; + } + return NULL; +} + +/* +============ +ED_FindField +============ +*/ +static ddef_t *ED_FindField (const char *name) +{ + ddef_t *def; + int i; + + for (i = 0; i < progs->numfielddefs; i++) + { + def = &pr_fielddefs[i]; + if ( !strcmp(PR_GetString(def->s_name), name) ) + return def; + } + return NULL; +} + + +/* +============ +ED_FindGlobal +============ +*/ +static ddef_t *ED_FindGlobal (const char *name) +{ + ddef_t *def; + int i; + + for (i = 0; i < progs->numglobaldefs; i++) + { + def = &pr_globaldefs[i]; + if ( !strcmp(PR_GetString(def->s_name), name) ) + return def; + } + return NULL; +} + + +/* +============ +ED_FindFunction +============ +*/ +static dfunction_t *ED_FindFunction (const char *fn_name) +{ + dfunction_t *func; + int i; + + for (i = 0; i < progs->numfunctions; i++) + { + func = &pr_functions[i]; + if ( !strcmp(PR_GetString(func->s_name), fn_name) ) + return func; + } + return NULL; +} + +/* +============ +GetEdictFieldValue +============ +*/ +eval_t *GetEdictFieldValue(edict_t *ed, const char *field) +{ + ddef_t *def = NULL; + int i; + static int rep = 0; + + for (i = 0; i < GEFV_CACHESIZE; i++) + { + if (!strcmp(field, gefvCache[i].field)) + { + def = gefvCache[i].pcache; + goto Done; + } + } + + def = ED_FindField (field); + + if (strlen(field) < MAX_FIELD_LEN) + { + gefvCache[rep].pcache = def; + strcpy (gefvCache[rep].field, field); + rep ^= 1; + } + +Done: + if (!def) + return NULL; + + return (eval_t *)((char *)&ed->v + def->ofs*4); +} + + +/* +============ +PR_ValueString +(etype_t type, eval_t *val) + +Returns a string describing *data in a type specific manner +============= +*/ +static const char *PR_ValueString (int type, eval_t *val) +{ + static char line[512]; + ddef_t *def; + dfunction_t *f; + + type &= ~DEF_SAVEGLOBAL; + + switch (type) + { + case ev_string: + q_snprintf (line, sizeof(line), "%s", PR_GetString(val->string)); + break; + case ev_entity: + q_snprintf (line, sizeof(line), "entity %i", NUM_FOR_EDICT(PROG_TO_EDICT(val->edict)) ); + break; + case ev_function: + f = pr_functions + val->function; + q_snprintf (line, sizeof(line), "%s()", PR_GetString(f->s_name)); + break; + case ev_field: + def = ED_FieldAtOfs ( val->_int ); + q_snprintf (line, sizeof(line), ".%s", PR_GetString(def->s_name)); + break; + case ev_void: + q_snprintf (line, sizeof(line), "void"); + break; + case ev_float: + q_snprintf (line, sizeof(line), "%5.1f", val->_float); + break; + case ev_vector: + q_snprintf (line, sizeof(line), "'%5.1f %5.1f %5.1f'", val->vector[0], val->vector[1], val->vector[2]); + break; + case ev_pointer: + q_snprintf (line, sizeof(line), "pointer"); + break; + default: + q_snprintf (line, sizeof(line), "bad type %i", type); + break; + } + + return line; +} + +/* +============ +PR_UglyValueString +(etype_t type, eval_t *val) + +Returns a string describing *data in a type specific manner +Easier to parse than PR_ValueString +============= +*/ +static const char *PR_UglyValueString (int type, eval_t *val) +{ + static char line[1024]; + ddef_t *def; + dfunction_t *f; + + type &= ~DEF_SAVEGLOBAL; + + switch (type) + { + case ev_string: + q_snprintf (line, sizeof(line), "%s", PR_GetString(val->string)); + break; + case ev_entity: + q_snprintf (line, sizeof(line), "%i", NUM_FOR_EDICT(PROG_TO_EDICT(val->edict))); + break; + case ev_function: + f = pr_functions + val->function; + q_snprintf (line, sizeof(line), "%s", PR_GetString(f->s_name)); + break; + case ev_field: + def = ED_FieldAtOfs ( val->_int ); + q_snprintf (line, sizeof(line), "%s", PR_GetString(def->s_name)); + break; + case ev_void: + q_snprintf (line, sizeof(line), "void"); + break; + case ev_float: + q_snprintf (line, sizeof(line), "%f", val->_float); + break; + case ev_vector: + q_snprintf (line, sizeof(line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]); + break; + default: + q_snprintf (line, sizeof(line), "bad type %i", type); + break; + } + + return line; +} + +/* +============ +PR_GlobalString + +Returns a string with a description and the contents of a global, +padded to 20 field width +============ +*/ +const char *PR_GlobalString (int ofs) +{ + static char line[512]; + static const int lastchari = Q_COUNTOF(line) - 2; + const char *s; + int i; + ddef_t *def; + void *val; + + val = (void *)&pr_globals[ofs]; + def = ED_GlobalAtOfs(ofs); + if (!def) + q_snprintf (line, sizeof(line), "%i(?)", ofs); + else + { + s = PR_ValueString (def->type, (eval_t *)val); + q_snprintf (line, sizeof(line), "%i(%s)%s", ofs, PR_GetString(def->s_name), s); + } + + i = strlen(line); + for ( ; i < 20; i++) + strcat (line, " "); + + if (i < lastchari) + strcat (line, " "); + else + line[lastchari] = ' '; + + return line; +} + +const char *PR_GlobalStringNoContents (int ofs) +{ + static char line[512]; + static const int lastchari = Q_COUNTOF(line) - 2; + int i; + ddef_t *def; + + def = ED_GlobalAtOfs(ofs); + if (!def) + q_snprintf (line, sizeof(line), "%i(?)", ofs); + else + q_snprintf (line, sizeof(line), "%i(%s)", ofs, PR_GetString(def->s_name)); + + i = strlen(line); + for ( ; i < 20; i++) + strcat (line, " "); + + if (i < lastchari) + strcat (line, " "); + else + line[lastchari] = ' '; + + return line; +} + + +/* +============= +ED_Print + +For debugging +============= +*/ +void ED_Print (edict_t *ed) +{ + ddef_t *d; + int *v; + int i, j, l; + const char *name; + int type; + + if (ed->free) + { + Con_Printf ("FREE\n"); + return; + } + + Con_SafePrintf("\nEDICT %i:\n", NUM_FOR_EDICT(ed)); //johnfitz -- was Con_Printf + for (i = 1; i < progs->numfielddefs; i++) + { + d = &pr_fielddefs[i]; + name = PR_GetString(d->s_name); + l = strlen (name); + if (l > 1 && name[l - 2] == '_') + continue; // skip _x, _y, _z vars + + v = (int *)((char *)&ed->v + d->ofs*4); + + // if the value is still all 0, skip the field + type = d->type & ~DEF_SAVEGLOBAL; + + if (type >= NUM_TYPE_SIZES) + continue; + + for (j = 0; j < type_size[type]; j++) + { + if (v[j]) + break; + } + if (j == type_size[type]) + continue; + + Con_SafePrintf ("%s", name); //johnfitz -- was Con_Printf + while (l++ < 15) + Con_SafePrintf (" "); //johnfitz -- was Con_Printf + + Con_SafePrintf ("%s\n", PR_ValueString(d->type, (eval_t *)v)); //johnfitz -- was Con_Printf + } +} + +/* +============= +ED_Write + +For savegames +============= +*/ +void ED_Write (FILE *f, edict_t *ed) +{ + ddef_t *d; + int *v; + int i, j; + const char *name; + int type; + + fprintf (f, "{\n"); + + if (ed->free) + { + fprintf (f, "}\n"); + return; + } + + for (i = 1; i < progs->numfielddefs; i++) + { + d = &pr_fielddefs[i]; + name = PR_GetString(d->s_name); + j = strlen (name); + if (j > 1 && name[j - 2] == '_') + continue; // skip _x, _y, _z vars + + v = (int *)((char *)&ed->v + d->ofs*4); + + // if the value is still all 0, skip the field + type = d->type & ~DEF_SAVEGLOBAL; + + if (type >= NUM_TYPE_SIZES) + continue; + + for (j = 0; j < type_size[type]; j++) + { + if (v[j]) + break; + } + if (j == type_size[type]) + continue; + + fprintf (f, "\"%s\" ", name); + fprintf (f, "\"%s\"\n", PR_UglyValueString(d->type, (eval_t *)v)); + } + + //johnfitz -- save entity alpha manually when progs.dat doesn't know about alpha + if (!pr_alpha_supported && ed->alpha != ENTALPHA_DEFAULT) + fprintf (f, "\"alpha\" \"%f\"\n", ENTALPHA_TOSAVE(ed->alpha)); + //johnfitz + + fprintf (f, "}\n"); +} + +void ED_PrintNum (int ent) +{ + ED_Print (EDICT_NUM(ent)); +} + +/* +============= +ED_PrintEdicts + +For debugging, prints all the entities in the current server +============= +*/ +void ED_PrintEdicts (void) +{ + int i; + + if (!sv.active) + return; + + Con_Printf ("%i entities\n", sv.num_edicts); + for (i = 0; i < sv.num_edicts; i++) + ED_PrintNum (i); +} + +/* +============= +ED_PrintEdict_f + +For debugging, prints a single edicy +============= +*/ +static void ED_PrintEdict_f (void) +{ + int i; + + if (!sv.active) + return; + + i = Q_atoi (Cmd_Argv(1)); + if (i < 0 || i >= sv.num_edicts) + { + Con_Printf("Bad edict number\n"); + return; + } + ED_PrintNum (i); +} + +/* +============= +ED_Count + +For debugging +============= +*/ +static void ED_Count (void) +{ + edict_t *ent; + int i, active, models, solid, step; + + if (!sv.active) + return; + + active = models = solid = step = 0; + for (i = 0; i < sv.num_edicts; i++) + { + ent = EDICT_NUM(i); + if (ent->free) + continue; + active++; + if (ent->v.solid) + solid++; + if (ent->v.model) + models++; + if (ent->v.movetype == MOVETYPE_STEP) + step++; + } + + Con_Printf ("num_edicts:%3i\n", sv.num_edicts); + Con_Printf ("active :%3i\n", active); + Con_Printf ("view :%3i\n", models); + Con_Printf ("touch :%3i\n", solid); + Con_Printf ("step :%3i\n", step); +} + + +/* +============================================================================== + +ARCHIVING GLOBALS + +FIXME: need to tag constants, doesn't really work +============================================================================== +*/ + +/* +============= +ED_WriteGlobals +============= +*/ +void ED_WriteGlobals (FILE *f) +{ + ddef_t *def; + int i; + const char *name; + int type; + + fprintf (f, "{\n"); + for (i = 0; i < progs->numglobaldefs; i++) + { + def = &pr_globaldefs[i]; + type = def->type; + if ( !(def->type & DEF_SAVEGLOBAL) ) + continue; + type &= ~DEF_SAVEGLOBAL; + + if (type != ev_string && type != ev_float && type != ev_entity) + continue; + + name = PR_GetString(def->s_name); + fprintf (f, "\"%s\" ", name); + fprintf (f, "\"%s\"\n", PR_UglyValueString(type, (eval_t *)&pr_globals[def->ofs])); + } + fprintf (f, "}\n"); +} + +/* +============= +ED_ParseGlobals +============= +*/ +const char *ED_ParseGlobals (const char *data) +{ + char keyname[64]; + ddef_t *key; + + while (1) + { + // parse key + data = COM_Parse (data); + if (com_token[0] == '}') + break; + if (!data) + Host_Error ("ED_ParseEntity: EOF without closing brace"); + + q_strlcpy (keyname, com_token, sizeof(keyname)); + + // parse value + data = COM_Parse (data); + if (!data) + Host_Error ("ED_ParseEntity: EOF without closing brace"); + + if (com_token[0] == '}') + Host_Error ("ED_ParseEntity: closing brace without data"); + + key = ED_FindGlobal (keyname); + if (!key) + { + Con_Printf ("'%s' is not a global\n", keyname); + continue; + } + + if (!ED_ParseEpair ((void *)pr_globals, key, com_token)) + Host_Error ("ED_ParseGlobals: parse error"); + } + return data; +} + +//============================================================================ + + +/* +============= +ED_NewString +============= +*/ +static string_t ED_NewString (const char *string) +{ + char *new_p; + int i, l; + string_t num; + + l = strlen(string) + 1; + num = PR_AllocString (l, &new_p); + + for (i = 0; i < l; i++) + { + if (string[i] == '\\' && i < l-1) + { + i++; + if (string[i] == 'n') + *new_p++ = '\n'; + else + *new_p++ = '\\'; + } + else + *new_p++ = string[i]; + } + + return num; +} + + +/* +============= +ED_ParseEval + +Can parse either fields or globals +returns false if error +============= +*/ +static qboolean ED_ParseEpair (void *base, ddef_t *key, const char *s) +{ + int i; + char string[128]; + ddef_t *def; + char *v, *w; + char *end; + void *d; + dfunction_t *func; + + d = (void *)((int *)base + key->ofs); + + switch (key->type & ~DEF_SAVEGLOBAL) + { + case ev_string: + *(string_t *)d = ED_NewString(s); + break; + + case ev_float: + *(float *)d = atof (s); + break; + + case ev_vector: + q_strlcpy (string, s, sizeof(string)); + end = (char *)string + strlen(string); + v = string; + w = string; + + for (i = 0; i < 3 && (w <= end); i++) // ericw -- added (w <= end) check + { + // set v to the next space (or 0 byte), and change that char to a 0 byte + while (*v && *v != ' ') + v++; + *v = 0; + ((float *)d)[i] = atof (w); + w = v = v+1; + } + // ericw -- fill remaining elements to 0 in case we hit the end of string + // before reading 3 floats. + if (i < 3) + { + Con_DWarning ("Avoided reading garbage for \"%s\" \"%s\"\n", PR_GetString(key->s_name), s); + for (; i < 3; i++) + ((float *)d)[i] = 0.0f; + } + break; + + case ev_entity: + *(int *)d = EDICT_TO_PROG(EDICT_NUM(atoi (s))); + break; + + case ev_field: + def = ED_FindField (s); + if (!def) + { + //johnfitz -- HACK -- suppress error becuase fog/sky fields might not be mentioned in defs.qc + if (strncmp(s, "sky", 3) && strcmp(s, "fog")) + Con_DPrintf ("Can't find field %s\n", s); + return false; + } + *(int *)d = G_INT(def->ofs); + break; + + case ev_function: + func = ED_FindFunction (s); + if (!func) + { + Con_Printf ("Can't find function %s\n", s); + return false; + } + *(func_t *)d = func - pr_functions; + break; + + default: + break; + } + return true; +} + +/* +==================== +ED_ParseEdict + +Parses an edict out of the given string, returning the new position +ed should be a properly initialized empty edict. +Used for initial level load and for savegames. +==================== +*/ +const char *ED_ParseEdict (const char *data, edict_t *ent) +{ + ddef_t *key; + char keyname[256]; + qboolean anglehack, init; + int n; + + init = false; + + // clear it + if (ent != sv.edicts) // hack + memset (&ent->v, 0, progs->entityfields * 4); + + // go through all the dictionary pairs + while (1) + { + // parse key + data = COM_Parse (data); + if (com_token[0] == '}') + break; + if (!data) + Host_Error ("ED_ParseEntity: EOF without closing brace"); + + // anglehack is to allow QuakeEd to write single scalar angles + // and allow them to be turned into vectors. (FIXME...) + if (!strcmp(com_token, "angle")) + { + strcpy (com_token, "angles"); + anglehack = true; + } + else + anglehack = false; + + // FIXME: change light to _light to get rid of this hack + if (!strcmp(com_token, "light")) + strcpy (com_token, "light_lev"); // hack for single light def + + q_strlcpy (keyname, com_token, sizeof(keyname)); + + // another hack to fix keynames with trailing spaces + n = strlen(keyname); + while (n && keyname[n-1] == ' ') + { + keyname[n-1] = 0; + n--; + } + + // parse value + // HACK: we allow truncation when reading the wad field, + // otherwise maps using lots of wads with absolute paths + // could cause a parse error + data = COM_ParseEx (data, !strcmp (keyname, "wad") ? CPE_ALLOWTRUNC : CPE_NOTRUNC); + if (!data) + Host_Error ("ED_ParseEntity: EOF without closing brace"); + + if (com_token[0] == '}') + Host_Error ("ED_ParseEntity: closing brace without data"); + + init = true; + + // keynames with a leading underscore are used for utility comments, + // and are immediately discarded by quake + if (keyname[0] == '_') + continue; + + //johnfitz -- hack to support .alpha even when progs.dat doesn't know about it + if (!strcmp(keyname, "alpha")) + ent->alpha = ENTALPHA_ENCODE(Q_atof(com_token)); + //johnfitz + + key = ED_FindField (keyname); + if (!key) + { + //johnfitz -- HACK -- suppress error becuase fog/sky/alpha fields might not be mentioned in defs.qc + if (strncmp(keyname, "sky", 3) && strcmp(keyname, "fog") && strcmp(keyname, "alpha")) + Con_DPrintf ("\"%s\" is not a field\n", keyname); //johnfitz -- was Con_Printf + continue; + } + + if (anglehack) + { + char temp[32]; + strcpy (temp, com_token); + sprintf (com_token, "0 %s 0", temp); + } + + if (!ED_ParseEpair ((void *)&ent->v, key, com_token)) + Host_Error ("ED_ParseEdict: parse error"); + } + + if (!init) + ent->free = true; + + return data; +} + + +/* +================ +ED_LoadFromFile + +The entities are directly placed in the array, rather than allocated with +ED_Alloc, because otherwise an error loading the map would have entity +number references out of order. + +Creates a server's entity / program execution context by +parsing textual entity definitions out of an ent file. + +Used for both fresh maps and savegame loads. A fresh map would also need +to call ED_CallSpawnFunctions () to let the objects initialize themselves. +================ +*/ +void ED_LoadFromFile (const char *data) +{ + const char *classname; + dfunction_t *func; + edict_t *ent = NULL; + int inhibit = 0; + + pr_global_struct->time = sv.time; + + // parse ents + while (1) + { + // parse the opening brace + data = COM_Parse (data); + if (!data) + break; + if (com_token[0] != '{') + Host_Error ("ED_LoadFromFile: found %s when expecting {",com_token); + + if (!ent) + ent = EDICT_NUM(0); + else + ent = ED_Alloc (); + data = ED_ParseEdict (data, ent); + + // remove things from different skill levels or deathmatch + if (deathmatch.value) + { + if (((int)ent->v.spawnflags & SPAWNFLAG_NOT_DEATHMATCH)) + { + ED_Free (ent); + inhibit++; + continue; + } + } + else if ((current_skill == 0 && ((int)ent->v.spawnflags & SPAWNFLAG_NOT_EASY)) + || (current_skill == 1 && ((int)ent->v.spawnflags & SPAWNFLAG_NOT_MEDIUM)) + || (current_skill >= 2 && ((int)ent->v.spawnflags & SPAWNFLAG_NOT_HARD)) ) + { + ED_Free (ent); + inhibit++; + continue; + } + +// +// immediately call spawn function +// + if (!ent->v.classname) + { + Con_SafePrintf ("No classname for:\n"); //johnfitz -- was Con_Printf + ED_Print (ent); + ED_Free (ent); + continue; + } + + classname = PR_GetString (ent->v.classname); + if (sv.nomonsters && !Q_strncmp (classname, "monster_", 8)) + { + ED_Free (ent); + inhibit++; + continue; + } + + // look for the spawn function + func = ED_FindFunction (classname); + + if (!func) + { + Con_SafePrintf ("No spawn function for:\n"); //johnfitz -- was Con_Printf + ED_Print (ent); + ED_Free (ent); + continue; + } + + SV_ReserveSignonSpace (512); + + pr_global_struct->self = EDICT_TO_PROG(ent); + PR_ExecuteProgram (func - pr_functions); + } + + Con_DPrintf ("%i entities inhibited\n", inhibit); +} + + +/* +=============== +PR_HasGlobal +=============== +*/ +static qboolean PR_HasGlobal (const char *name, float value) +{ + ddef_t *g = ED_FindGlobal (name); + return g && (g->type & ~DEF_SAVEGLOBAL) == ev_float && G_FLOAT (g->ofs) == value; +} + + +/* +=============== +PR_FindSupportedEffects + +Checks for the presence of Quake 2021 release effects flags and returns a mask +with the correspondings bits either on or off depending on the result, in order +to avoid conflicts (e.g. Arcane Dimensions uses bit 32 for its explosions) +=============== +*/ +static int PR_FindSupportedEffects (void) +{ + qboolean isqex = + PR_HasGlobal ("EF_QUADLIGHT", EF_QEX_QUADLIGHT) && + (PR_HasGlobal ("EF_PENTLIGHT", EF_QEX_PENTALIGHT) || PR_HasGlobal ("EF_PENTALIGHT", EF_QEX_PENTALIGHT)) + ; + return isqex ? -1 : -1 & ~(EF_QEX_QUADLIGHT|EF_QEX_PENTALIGHT|EF_QEX_CANDLELIGHT); +} + + +/* +=============== +PR_PatchRereleaseBuiltins + +for 2021 re-release +=============== +*/ +static const exbuiltin_t exbuiltins[] = { + /* Update-1 adds the following builtins with new ids. Patch them to use old indices. + * (https://steamcommunity.com/games/2310/announcements/detail/2943653788150871156) */ + { "centerprint", -90, -73 }, + { "bprint", -91, -23 }, + { "sprint", -92, -24 }, + + /* Update-3 changes its unique builtins to be looked up by name instead of builtin + * numbers, to avoid conflict with other engines. Patch them to use our indices. + * (https://steamcommunity.com/games/2310/announcements/detail/3177861894960065435) */ + { "ex_centerprint", 0, -73 }, + { "ex_bprint", 0, -23 }, + { "ex_sprint", 0, -24 }, + { "ex_finaleFinished", 0, -79 }, + + { "ex_localsound", 0, -80 }, + + { "ex_draw_point", 0, -81 }, + { "ex_draw_line", 0, -82 }, + { "ex_draw_arrow", 0, -83 }, + { "ex_draw_ray", 0, -84 }, + { "ex_draw_circle", 0, -85 }, + { "ex_draw_bounds", 0, -86 }, + { "ex_draw_worldtext", 0, -87 }, + { "ex_draw_sphere", 0, -88 }, + { "ex_draw_cylinder", 0, -89 }, + + { "ex_CheckPlayerEXFlags", 0, -90 }, + { "ex_walkpathtogoal", 0, -91 }, + { "ex_bot_movetopoint", 0, -92 }, + { "ex_bot_followentity", 0, -92 }, + + { NULL, 0, 0 } /* end-of-list. */ +}; + +static void PR_PatchRereleaseBuiltins (void) +{ + const exbuiltin_t *ex = exbuiltins; + dfunction_t *f; + + for ( ; ex->name != NULL; ++ex) + { + f = ED_FindFunction (ex->name); + if (f && f->first_statement == ex->first_statement) + f->first_statement = ex->patch_statement; + } +} + + +/* +=============== +PR_LoadProgs +=============== +*/ +void PR_LoadProgs (void) +{ + int i; + + // flush the non-C variable lookup cache + for (i = 0; i < GEFV_CACHESIZE; i++) + gefvCache[i].field[0] = 0; + + CRC_Init (&pr_crc); + + progs = (dprograms_t *)COM_LoadHunkFile ("progs.dat", NULL); + if (!progs) + Host_Error ("PR_LoadProgs: couldn't load progs.dat"); + Con_DPrintf ("Programs occupy %iK.\n", com_filesize/1024); + + for (i = 0; i < com_filesize; i++) + CRC_ProcessByte (&pr_crc, ((byte *)progs)[i]); + + // byte swap the header + for (i = 0; i < (int) sizeof(*progs) / 4; i++) + ((int *)progs)[i] = LittleLong ( ((int *)progs)[i] ); + + if (progs->version != PROG_VERSION) + Host_Error ("progs.dat has wrong version number (%i should be %i)", progs->version, PROG_VERSION); + if (progs->crc != PROGHEADER_CRC) + Host_Error ("progs.dat system vars have been modified, progdefs.h is out of date"); + + pr_functions = (dfunction_t *)((byte *)progs + progs->ofs_functions); + pr_strings = (char *)progs + progs->ofs_strings; + if (progs->ofs_strings + progs->numstrings >= com_filesize) + Host_Error ("progs.dat strings go past end of file\n"); + + // initialize the strings + pr_numknownstrings = 0; + pr_maxknownstrings = 0; + pr_stringssize = progs->numstrings; + if (pr_knownstrings) + Z_Free ((void *)pr_knownstrings); + pr_knownstrings = NULL; + PR_SetEngineString(""); + + pr_globaldefs = (ddef_t *)((byte *)progs + progs->ofs_globaldefs); + pr_fielddefs = (ddef_t *)((byte *)progs + progs->ofs_fielddefs); + pr_statements = (dstatement_t *)((byte *)progs + progs->ofs_statements); + + pr_global_struct = (globalvars_t *)((byte *)progs + progs->ofs_globals); + pr_globals = (float *)pr_global_struct; + + // byte swap the lumps + for (i = 0; i < progs->numstatements; i++) + { + pr_statements[i].op = LittleShort(pr_statements[i].op); + pr_statements[i].a = LittleShort(pr_statements[i].a); + pr_statements[i].b = LittleShort(pr_statements[i].b); + pr_statements[i].c = LittleShort(pr_statements[i].c); + } + + for (i = 0; i < progs->numfunctions; i++) + { + pr_functions[i].first_statement = LittleLong (pr_functions[i].first_statement); + pr_functions[i].parm_start = LittleLong (pr_functions[i].parm_start); + pr_functions[i].s_name = LittleLong (pr_functions[i].s_name); + pr_functions[i].s_file = LittleLong (pr_functions[i].s_file); + pr_functions[i].numparms = LittleLong (pr_functions[i].numparms); + pr_functions[i].locals = LittleLong (pr_functions[i].locals); + } + + for (i = 0; i < progs->numglobaldefs; i++) + { + pr_globaldefs[i].type = LittleShort (pr_globaldefs[i].type); + pr_globaldefs[i].ofs = LittleShort (pr_globaldefs[i].ofs); + pr_globaldefs[i].s_name = LittleLong (pr_globaldefs[i].s_name); + } + + pr_alpha_supported = false; //johnfitz + + for (i = 0; i < progs->numfielddefs; i++) + { + pr_fielddefs[i].type = LittleShort (pr_fielddefs[i].type); + if (pr_fielddefs[i].type & DEF_SAVEGLOBAL) + Host_Error ("PR_LoadProgs: pr_fielddefs[i].type & DEF_SAVEGLOBAL"); + pr_fielddefs[i].ofs = LittleShort (pr_fielddefs[i].ofs); + pr_fielddefs[i].s_name = LittleLong (pr_fielddefs[i].s_name); + + //johnfitz -- detect alpha support in progs.dat + if (!strcmp(pr_strings + pr_fielddefs[i].s_name,"alpha")) + pr_alpha_supported = true; + //johnfitz + } + + for (i = 0; i < progs->numglobals; i++) + ((int *)pr_globals)[i] = LittleLong (((int *)pr_globals)[i]); + + pr_edict_size = progs->entityfields * 4 + sizeof(edict_t) - sizeof(entvars_t); + // round off to next highest whole word address (esp for Alpha) + // this ensures that pointers in the engine data area are always + // properly aligned + pr_edict_size += sizeof(void *) - 1; + pr_edict_size &= ~(sizeof(void *) - 1); + + PR_PatchRereleaseBuiltins (); + pr_effects_mask = PR_FindSupportedEffects (); +} + +/* +=============== +ED_Nomonsters_f +=============== +*/ +static void ED_Nomonsters_f (cvar_t *cvar) +{ + if (cvar->value) + Con_Warning ("\"%s\" can break gameplay.\n", cvar->name); +} + + +/* +=============== +PR_Init +=============== +*/ +void PR_Init (void) +{ + Cmd_AddCommand ("edict", ED_PrintEdict_f); + Cmd_AddCommand ("edicts", ED_PrintEdicts); + Cmd_AddCommand ("edictcount", ED_Count); + Cmd_AddCommand ("profile", PR_Profile_f); + Cvar_RegisterVariable (&nomonsters); + Cvar_SetCallback (&nomonsters, ED_Nomonsters_f); + Cvar_RegisterVariable (&gamecfg); + Cvar_RegisterVariable (&scratch1); + Cvar_RegisterVariable (&scratch2); + Cvar_RegisterVariable (&scratch3); + Cvar_RegisterVariable (&scratch4); + Cvar_RegisterVariable (&savedgamecfg); + Cvar_RegisterVariable (&saved1); + Cvar_RegisterVariable (&saved2); + Cvar_RegisterVariable (&saved3); + Cvar_RegisterVariable (&saved4); +} + + +edict_t *EDICT_NUM(int n) +{ + if (n < 0 || n >= sv.max_edicts) + Host_Error ("EDICT_NUM: bad number %i", n); + return (edict_t *)((byte *)sv.edicts + (n)*pr_edict_size); +} + +int NUM_FOR_EDICT(edict_t *e) +{ + int b; + + b = (byte *)e - (byte *)sv.edicts; + b = b / pr_edict_size; + + if (b < 0 || b >= sv.num_edicts) + Host_Error ("NUM_FOR_EDICT: bad pointer"); + return b; +} + +//=========================================================================== + + +#define PR_STRING_ALLOCSLOTS 256 + +static void PR_AllocStringSlots (void) +{ + pr_maxknownstrings += PR_STRING_ALLOCSLOTS; + Con_DPrintf2("PR_AllocStringSlots: realloc'ing for %d slots\n", pr_maxknownstrings); + pr_knownstrings = (const char **) Z_Realloc ((void *)pr_knownstrings, pr_maxknownstrings * sizeof(char *)); +} + +const char *PR_GetString (int num) +{ + if (num >= 0 && num < pr_stringssize) + return pr_strings + num; + else if (num < 0 && num >= -pr_numknownstrings) + { + if (!pr_knownstrings[-1 - num]) + { + Host_Error ("PR_GetString: attempt to get a non-existant string %d\n", num); + return ""; + } + return pr_knownstrings[-1 - num]; + } + else + { + Host_Error("PR_GetString: invalid string offset %d\n", num); + return ""; + } +} + +int PR_SetEngineString (const char *s) +{ + int i; + + if (!s) + return 0; +#if 0 /* can't: sv.model_precache & sv.sound_precache points to pr_strings */ + if (s >= pr_strings && s <= pr_strings + pr_stringssize) + Host_Error("PR_SetEngineString: \"%s\" in pr_strings area\n", s); +#else + if (s >= pr_strings && s <= pr_strings + pr_stringssize - 2) + return (int)(s - pr_strings); +#endif + for (i = 0; i < pr_numknownstrings; i++) + { + if (pr_knownstrings[i] == s) + return -1 - i; + } + // new unknown engine string + //Con_DPrintf ("PR_SetEngineString: new engine string %p\n", s); +#if 0 + for (i = 0; i < pr_numknownstrings; i++) + { + if (!pr_knownstrings[i]) + break; + } +#endif +// if (i >= pr_numknownstrings) +// { + if (i >= pr_maxknownstrings) + PR_AllocStringSlots(); + pr_numknownstrings++; +// } + pr_knownstrings[i] = s; + return -1 - i; +} + +int PR_AllocString (int size, char **ptr) +{ + int i; + + if (!size) + return 0; + for (i = 0; i < pr_numknownstrings; i++) + { + if (!pr_knownstrings[i]) + break; + } +// if (i >= pr_numknownstrings) +// { + if (i >= pr_maxknownstrings) + PR_AllocStringSlots(); + pr_numknownstrings++; +// } + pr_knownstrings[i] = (char *)Hunk_AllocName(size, "string"); + if (ptr) + *ptr = (char *) pr_knownstrings[i]; + return -1 - i; +} + diff --git a/Quake/pr_exec.c b/Quake/pr_exec.c new file mode 100644 index 0000000..55efd7e --- /dev/null +++ b/Quake/pr_exec.c @@ -0,0 +1,653 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" + +typedef struct +{ + int s; + dfunction_t *f; +} prstack_t; + +#define MAX_STACK_DEPTH 64 /* was 32 */ +static prstack_t pr_stack[MAX_STACK_DEPTH]; +static int pr_depth; + +#define LOCALSTACK_SIZE 2048 +static int localstack[LOCALSTACK_SIZE]; +static int localstack_used; + +qboolean pr_trace; +dfunction_t *pr_xfunction; +int pr_xstatement; +int pr_argc; + +static const char *pr_opnames[] = +{ + "DONE", + + "MUL_F", + "MUL_V", + "MUL_FV", + "MUL_VF", + + "DIV", + + "ADD_F", + "ADD_V", + + "SUB_F", + "SUB_V", + + "EQ_F", + "EQ_V", + "EQ_S", + "EQ_E", + "EQ_FNC", + + "NE_F", + "NE_V", + "NE_S", + "NE_E", + "NE_FNC", + + "LE", + "GE", + "LT", + "GT", + + "INDIRECT", + "INDIRECT", + "INDIRECT", + "INDIRECT", + "INDIRECT", + "INDIRECT", + + "ADDRESS", + + "STORE_F", + "STORE_V", + "STORE_S", + "STORE_ENT", + "STORE_FLD", + "STORE_FNC", + + "STOREP_F", + "STOREP_V", + "STOREP_S", + "STOREP_ENT", + "STOREP_FLD", + "STOREP_FNC", + + "RETURN", + + "NOT_F", + "NOT_V", + "NOT_S", + "NOT_ENT", + "NOT_FNC", + + "IF", + "IFNOT", + + "CALL0", + "CALL1", + "CALL2", + "CALL3", + "CALL4", + "CALL5", + "CALL6", + "CALL7", + "CALL8", + + "STATE", + + "GOTO", + + "AND", + "OR", + + "BITAND", + "BITOR" +}; + +const char *PR_GlobalString (int ofs); +const char *PR_GlobalStringNoContents (int ofs); + + +//============================================================================= + +/* +================= +PR_PrintStatement +================= +*/ +static void PR_PrintStatement (dstatement_t *s) +{ + int i; + + if ((unsigned int)s->op < Q_COUNTOF(pr_opnames)) + { + Con_Printf("%s ", pr_opnames[s->op]); + i = strlen(pr_opnames[s->op]); + for ( ; i < 10; i++) + Con_Printf(" "); + } + + if (s->op == OP_IF || s->op == OP_IFNOT) + Con_Printf("%sbranch %i", PR_GlobalString(s->a), s->b); + else if (s->op == OP_GOTO) + { + Con_Printf("branch %i", s->a); + } + else if ((unsigned int)(s->op-OP_STORE_F) < 6) + { + Con_Printf("%s", PR_GlobalString(s->a)); + Con_Printf("%s", PR_GlobalStringNoContents(s->b)); + } + else + { + if (s->a) + Con_Printf("%s", PR_GlobalString(s->a)); + if (s->b) + Con_Printf("%s", PR_GlobalString(s->b)); + if (s->c) + Con_Printf("%s", PR_GlobalStringNoContents(s->c)); + } + Con_Printf("\n"); +} + +/* +============ +PR_StackTrace +============ +*/ +static void PR_StackTrace (void) +{ + int i; + dfunction_t *f; + + if (pr_depth == 0) + { + Con_Printf("<NO STACK>\n"); + return; + } + + pr_stack[pr_depth].f = pr_xfunction; + for (i = pr_depth; i >= 0; i--) + { + f = pr_stack[i].f; + if (!f) + { + Con_Printf("<NO FUNCTION>\n"); + } + else + { + Con_Printf("%12s : %s\n", PR_GetString(f->s_file), PR_GetString(f->s_name)); + } + } +} + + +/* +============ +PR_Profile_f + +============ +*/ +void PR_Profile_f (void) +{ + int i, num; + int pmax; + dfunction_t *f, *best; + + if (!sv.active) + return; + + num = 0; + do + { + pmax = 0; + best = NULL; + for (i = 0; i < progs->numfunctions; i++) + { + f = &pr_functions[i]; + if (f->profile > pmax) + { + pmax = f->profile; + best = f; + } + } + if (best) + { + if (num < 10) + Con_Printf("%7i %s\n", best->profile, PR_GetString(best->s_name)); + num++; + best->profile = 0; + } + } while (best); +} + + +/* +============ +PR_RunError + +Aborts the currently executing function +============ +*/ +void PR_RunError (const char *error, ...) +{ + va_list argptr; + char string[1024]; + + va_start (argptr, error); + q_vsnprintf (string, sizeof(string), error, argptr); + va_end (argptr); + + PR_PrintStatement(pr_statements + pr_xstatement); + PR_StackTrace(); + + Con_Printf("%s\n", string); + + pr_depth = 0; // dump the stack so host_error can shutdown functions + + Host_Error("Program error"); +} + +/* +==================== +PR_EnterFunction + +Returns the new program statement counter +==================== +*/ +static int PR_EnterFunction (dfunction_t *f) +{ + int i, j, c, o; + + pr_stack[pr_depth].s = pr_xstatement; + pr_stack[pr_depth].f = pr_xfunction; + pr_depth++; + if (pr_depth >= MAX_STACK_DEPTH) + PR_RunError("stack overflow"); + + // save off any locals that the new function steps on + c = f->locals; + if (localstack_used + c > LOCALSTACK_SIZE) + PR_RunError("PR_ExecuteProgram: locals stack overflow"); + + for (i = 0; i < c ; i++) + localstack[localstack_used + i] = ((int *)pr_globals)[f->parm_start + i]; + localstack_used += c; + + // copy parameters + o = f->parm_start; + for (i = 0; i < f->numparms; i++) + { + for (j = 0; j < f->parm_size[i]; j++) + { + ((int *)pr_globals)[o] = ((int *)pr_globals)[OFS_PARM0 + i*3 + j]; + o++; + } + } + + pr_xfunction = f; + return f->first_statement - 1; // offset the s++ +} + +/* +==================== +PR_LeaveFunction +==================== +*/ +static int PR_LeaveFunction (void) +{ + int i, c; + + if (pr_depth <= 0) + Host_Error("prog stack underflow"); + + // Restore locals from the stack + c = pr_xfunction->locals; + localstack_used -= c; + if (localstack_used < 0) + PR_RunError("PR_ExecuteProgram: locals stack underflow"); + + for (i = 0; i < c; i++) + ((int *)pr_globals)[pr_xfunction->parm_start + i] = localstack[localstack_used + i]; + + // up stack + pr_depth--; + pr_xfunction = pr_stack[pr_depth].f; + return pr_stack[pr_depth].s; +} + + +/* +==================== +PR_ExecuteProgram + +The interpretation main loop +==================== +*/ +#define OPA ((eval_t *)&pr_globals[(unsigned short)st->a]) +#define OPB ((eval_t *)&pr_globals[(unsigned short)st->b]) +#define OPC ((eval_t *)&pr_globals[(unsigned short)st->c]) + +void PR_ExecuteProgram (func_t fnum) +{ + eval_t *ptr; + dstatement_t *st; + dfunction_t *f, *newf; + int profile, startprofile; + edict_t *ed; + int exitdepth; + + if (!fnum || fnum >= progs->numfunctions) + { + if (pr_global_struct->self) + ED_Print (PROG_TO_EDICT(pr_global_struct->self)); + Host_Error ("PR_ExecuteProgram: NULL function"); + } + + f = &pr_functions[fnum]; + + pr_trace = false; + +// make a stack frame + exitdepth = pr_depth; + + st = &pr_statements[PR_EnterFunction(f)]; + startprofile = profile = 0; + + while (1) + { + st++; /* next statement */ + + if (++profile > 0x1000000) /* was 100000 */ + { + pr_xstatement = st - pr_statements; + PR_RunError("runaway loop error"); + } + + if (pr_trace) + PR_PrintStatement(st); + + switch (st->op) + { + case OP_ADD_F: + OPC->_float = OPA->_float + OPB->_float; + break; + case OP_ADD_V: + OPC->vector[0] = OPA->vector[0] + OPB->vector[0]; + OPC->vector[1] = OPA->vector[1] + OPB->vector[1]; + OPC->vector[2] = OPA->vector[2] + OPB->vector[2]; + break; + + case OP_SUB_F: + OPC->_float = OPA->_float - OPB->_float; + break; + case OP_SUB_V: + OPC->vector[0] = OPA->vector[0] - OPB->vector[0]; + OPC->vector[1] = OPA->vector[1] - OPB->vector[1]; + OPC->vector[2] = OPA->vector[2] - OPB->vector[2]; + break; + + case OP_MUL_F: + OPC->_float = OPA->_float * OPB->_float; + break; + case OP_MUL_V: + OPC->_float = OPA->vector[0] * OPB->vector[0] + + OPA->vector[1] * OPB->vector[1] + + OPA->vector[2] * OPB->vector[2]; + break; + case OP_MUL_FV: + OPC->vector[0] = OPA->_float * OPB->vector[0]; + OPC->vector[1] = OPA->_float * OPB->vector[1]; + OPC->vector[2] = OPA->_float * OPB->vector[2]; + break; + case OP_MUL_VF: + OPC->vector[0] = OPB->_float * OPA->vector[0]; + OPC->vector[1] = OPB->_float * OPA->vector[1]; + OPC->vector[2] = OPB->_float * OPA->vector[2]; + break; + + case OP_DIV_F: + OPC->_float = OPA->_float / OPB->_float; + break; + + case OP_BITAND: + OPC->_float = (int)OPA->_float & (int)OPB->_float; + break; + + case OP_BITOR: + OPC->_float = (int)OPA->_float | (int)OPB->_float; + break; + + case OP_GE: + OPC->_float = OPA->_float >= OPB->_float; + break; + case OP_LE: + OPC->_float = OPA->_float <= OPB->_float; + break; + case OP_GT: + OPC->_float = OPA->_float > OPB->_float; + break; + case OP_LT: + OPC->_float = OPA->_float < OPB->_float; + break; + case OP_AND: + OPC->_float = OPA->_float && OPB->_float; + break; + case OP_OR: + OPC->_float = OPA->_float || OPB->_float; + break; + + case OP_NOT_F: + OPC->_float = !OPA->_float; + break; + case OP_NOT_V: + OPC->_float = !OPA->vector[0] && !OPA->vector[1] && !OPA->vector[2]; + break; + case OP_NOT_S: + OPC->_float = !OPA->string || !*PR_GetString(OPA->string); + break; + case OP_NOT_FNC: + OPC->_float = !OPA->function; + break; + case OP_NOT_ENT: + OPC->_float = (PROG_TO_EDICT(OPA->edict) == sv.edicts); + break; + + case OP_EQ_F: + OPC->_float = OPA->_float == OPB->_float; + break; + case OP_EQ_V: + OPC->_float = (OPA->vector[0] == OPB->vector[0]) && + (OPA->vector[1] == OPB->vector[1]) && + (OPA->vector[2] == OPB->vector[2]); + break; + case OP_EQ_S: + OPC->_float = !strcmp(PR_GetString(OPA->string), PR_GetString(OPB->string)); + break; + case OP_EQ_E: + OPC->_float = OPA->_int == OPB->_int; + break; + case OP_EQ_FNC: + OPC->_float = OPA->function == OPB->function; + break; + + case OP_NE_F: + OPC->_float = OPA->_float != OPB->_float; + break; + case OP_NE_V: + OPC->_float = (OPA->vector[0] != OPB->vector[0]) || + (OPA->vector[1] != OPB->vector[1]) || + (OPA->vector[2] != OPB->vector[2]); + break; + case OP_NE_S: + OPC->_float = strcmp(PR_GetString(OPA->string), PR_GetString(OPB->string)); + break; + case OP_NE_E: + OPC->_float = OPA->_int != OPB->_int; + break; + case OP_NE_FNC: + OPC->_float = OPA->function != OPB->function; + break; + + case OP_STORE_F: + case OP_STORE_ENT: + case OP_STORE_FLD: // integers + case OP_STORE_S: + case OP_STORE_FNC: // pointers + OPB->_int = OPA->_int; + break; + case OP_STORE_V: + OPB->vector[0] = OPA->vector[0]; + OPB->vector[1] = OPA->vector[1]; + OPB->vector[2] = OPA->vector[2]; + break; + + case OP_STOREP_F: + case OP_STOREP_ENT: + case OP_STOREP_FLD: // integers + case OP_STOREP_S: + case OP_STOREP_FNC: // pointers + ptr = (eval_t *)((byte *)sv.edicts + OPB->_int); + ptr->_int = OPA->_int; + break; + case OP_STOREP_V: + ptr = (eval_t *)((byte *)sv.edicts + OPB->_int); + ptr->vector[0] = OPA->vector[0]; + ptr->vector[1] = OPA->vector[1]; + ptr->vector[2] = OPA->vector[2]; + break; + + case OP_ADDRESS: + ed = PROG_TO_EDICT(OPA->edict); +#ifdef PARANOID + NUM_FOR_EDICT(ed); // Make sure it's in range +#endif + if (ed == (edict_t *)sv.edicts && sv.state == ss_active) + { + pr_xstatement = st - pr_statements; + PR_RunError("assignment to world entity"); + } + OPC->_int = (byte *)((int *)&ed->v + OPB->_int) - (byte *)sv.edicts; + break; + + case OP_LOAD_F: + case OP_LOAD_FLD: + case OP_LOAD_ENT: + case OP_LOAD_S: + case OP_LOAD_FNC: + ed = PROG_TO_EDICT(OPA->edict); +#ifdef PARANOID + NUM_FOR_EDICT(ed); // Make sure it's in range +#endif + OPC->_int = ((eval_t *)((int *)&ed->v + OPB->_int))->_int; + break; + + case OP_LOAD_V: + ed = PROG_TO_EDICT(OPA->edict); +#ifdef PARANOID + NUM_FOR_EDICT(ed); // Make sure it's in range +#endif + ptr = (eval_t *)((int *)&ed->v + OPB->_int); + OPC->vector[0] = ptr->vector[0]; + OPC->vector[1] = ptr->vector[1]; + OPC->vector[2] = ptr->vector[2]; + break; + + case OP_IFNOT: + if (!OPA->_int) + st += st->b - 1; /* -1 to offset the st++ */ + break; + + case OP_IF: + if (OPA->_int) + st += st->b - 1; /* -1 to offset the st++ */ + break; + + case OP_GOTO: + st += st->a - 1; /* -1 to offset the st++ */ + break; + + case OP_CALL0: + case OP_CALL1: + case OP_CALL2: + case OP_CALL3: + case OP_CALL4: + case OP_CALL5: + case OP_CALL6: + case OP_CALL7: + case OP_CALL8: + pr_xfunction->profile += profile - startprofile; + startprofile = profile; + pr_xstatement = st - pr_statements; + pr_argc = st->op - OP_CALL0; + if (!OPA->function) + PR_RunError("NULL function"); + newf = &pr_functions[OPA->function]; + if (newf->first_statement < 0) + { // Built-in function + int i = -newf->first_statement; + if (i >= pr_numbuiltins) + PR_RunError("Bad builtin call number %d", i); + pr_builtins[i](); + break; + } + // Normal function + st = &pr_statements[PR_EnterFunction(newf)]; + break; + + case OP_DONE: + case OP_RETURN: + pr_xfunction->profile += profile - startprofile; + startprofile = profile; + pr_xstatement = st - pr_statements; + pr_globals[OFS_RETURN] = pr_globals[(unsigned short)st->a]; + pr_globals[OFS_RETURN + 1] = pr_globals[(unsigned short)st->a + 1]; + pr_globals[OFS_RETURN + 2] = pr_globals[(unsigned short)st->a + 2]; + st = &pr_statements[PR_LeaveFunction()]; + if (pr_depth == exitdepth) + { // Done + return; + } + break; + + case OP_STATE: + ed = PROG_TO_EDICT(pr_global_struct->self); + ed->v.nextthink = pr_global_struct->time + 0.1; + ed->v.frame = OPA->_float; + ed->v.think = OPB->function; + break; + + default: + pr_xstatement = st - pr_statements; + PR_RunError("Bad opcode %i", st->op); + } + } /* end of while(1) loop */ +} +#undef OPA +#undef OPB +#undef OPC diff --git a/Quake/progdefs.h b/Quake/progdefs.h new file mode 100644 index 0000000..5a806f5 --- /dev/null +++ b/Quake/progdefs.h @@ -0,0 +1,28 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __PROGDEFS_H +#define __PROGDEFS_H + +#include "progdefs.q1" + +#endif /* __PROGDEFS_H */ + diff --git a/Quake/progdefs.q1 b/Quake/progdefs.q1 new file mode 100644 index 0000000..eb15c45 --- /dev/null +++ b/Quake/progdefs.q1 @@ -0,0 +1,143 @@ + +/* file generated by qcc, do not modify */ + +typedef struct +{ int pad[28]; + int self; + int other; + int world; + float time; + float frametime; + float force_retouch; + string_t mapname; + float deathmatch; + float coop; + float teamplay; + float serverflags; + float total_secrets; + float total_monsters; + float found_secrets; + float killed_monsters; + float parm1; + float parm2; + float parm3; + float parm4; + float parm5; + float parm6; + float parm7; + float parm8; + float parm9; + float parm10; + float parm11; + float parm12; + float parm13; + float parm14; + float parm15; + float parm16; + vec3_t v_forward; + vec3_t v_up; + vec3_t v_right; + float trace_allsolid; + float trace_startsolid; + float trace_fraction; + vec3_t trace_endpos; + vec3_t trace_plane_normal; + float trace_plane_dist; + int trace_ent; + float trace_inopen; + float trace_inwater; + int msg_entity; + func_t main; + func_t StartFrame; + func_t PlayerPreThink; + func_t PlayerPostThink; + func_t ClientKill; + func_t ClientConnect; + func_t PutClientInServer; + func_t ClientDisconnect; + func_t SetNewParms; + func_t SetChangeParms; +} globalvars_t; + +typedef struct +{ + float modelindex; + vec3_t absmin; + vec3_t absmax; + float ltime; + float movetype; + float solid; + vec3_t origin; + vec3_t oldorigin; + vec3_t velocity; + vec3_t angles; + vec3_t avelocity; + vec3_t punchangle; + string_t classname; + string_t model; + float frame; + float skin; + float effects; + vec3_t mins; + vec3_t maxs; + vec3_t size; + func_t touch; + func_t use; + func_t think; + func_t blocked; + float nextthink; + int groundentity; + float health; + float frags; + float weapon; + string_t weaponmodel; + float weaponframe; + float currentammo; + float ammo_shells; + float ammo_nails; + float ammo_rockets; + float ammo_cells; + float items; + float takedamage; + int chain; + float deadflag; + vec3_t view_ofs; + float button0; + float button1; + float button2; + float impulse; + float fixangle; + vec3_t v_angle; + float idealpitch; + string_t netname; + int enemy; + float flags; + float colormap; + float team; + float max_health; + float teleport_time; + float armortype; + float armorvalue; + float waterlevel; + float watertype; + float ideal_yaw; + float yaw_speed; + int aiment; + int goalentity; + float spawnflags; + string_t target; + string_t targetname; + float dmg_take; + float dmg_save; + int dmg_inflictor; + int owner; + vec3_t movedir; + string_t message; + float sounds; + string_t noise; + string_t noise1; + string_t noise2; + string_t noise3; +} entvars_t; + +#define PROGHEADER_CRC 5927 diff --git a/Quake/progs.h b/Quake/progs.h new file mode 100644 index 0000000..73f207f --- /dev/null +++ b/Quake/progs.h @@ -0,0 +1,154 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef QUAKE_PROGS_H +#define QUAKE_PROGS_H + +#include "pr_comp.h" /* defs shared with qcc */ +#include "progdefs.h" /* generated by program cdefs */ + +typedef union eval_s +{ + string_t string; + float _float; + float vector[3]; + func_t function; + int _int; + int edict; +} eval_t; + +#define MAX_ENT_LEAFS 32 +typedef struct edict_s +{ + qboolean free; + link_t area; /* linked to a division node or leaf */ + + int num_leafs; + int leafnums[MAX_ENT_LEAFS]; + + entity_state_t baseline; + unsigned char alpha; /* johnfitz -- hack to support alpha since it's not part of entvars_t */ + unsigned char scale; /* Quakespasm: added for model scale support. */ + qboolean sendinterval; /* johnfitz -- send time until nextthink to client for better lerp timing */ + float oldframe; + float oldthinktime; + + float freetime; /* sv.time when the object was freed */ + entvars_t v; /* C exported fields from progs */ + + /* other fields from progs come immediately after */ +} edict_t; + +#define EDICT_FROM_AREA(l) STRUCT_FROM_LINK(l,edict_t,area) + +//============================================================================ + +extern dprograms_t *progs; +extern dfunction_t *pr_functions; +extern dstatement_t *pr_statements; +extern globalvars_t *pr_global_struct; +extern float *pr_globals; /* same as pr_global_struct */ + +extern int pr_edict_size; /* in bytes */ + + +void PR_Init (void); + +void PR_ExecuteProgram (func_t fnum); +void PR_LoadProgs (void); + +const char *PR_GetString (int num); +int PR_SetEngineString (const char *s); +int PR_AllocString (int bufferlength, char **ptr); + +void PR_Profile_f (void); + +edict_t *ED_Alloc (void); +void ED_Free (edict_t *ed); + +void ED_Print (edict_t *ed); +void ED_Write (FILE *f, edict_t *ed); +const char *ED_ParseEdict (const char *data, edict_t *ent); + +void ED_WriteGlobals (FILE *f); +const char *ED_ParseGlobals (const char *data); + +void ED_LoadFromFile (const char *data); + +/* +#define EDICT_NUM(n) ((edict_t *)(sv.edicts+ (n)*pr_edict_size)) +#define NUM_FOR_EDICT(e) (((byte *)(e) - sv.edicts) / pr_edict_size) +*/ +edict_t *EDICT_NUM(int); +int NUM_FOR_EDICT(edict_t*); + +#define NEXT_EDICT(e) ((edict_t *)( (byte *)e + pr_edict_size)) + +#define EDICT_TO_PROG(e) (int)((byte *)e - (byte *)sv.edicts) +#define PROG_TO_EDICT(e) ((edict_t *)((byte *)sv.edicts + e)) + +#define G_FLOAT(o) (pr_globals[o]) +#define G_INT(o) (*(int *)&pr_globals[o]) +#define G_EDICT(o) ((edict_t *)((byte *)sv.edicts+ *(int *)&pr_globals[o])) +#define G_EDICTNUM(o) NUM_FOR_EDICT(G_EDICT(o)) +#define G_VECTOR(o) (&pr_globals[o]) +#define G_STRING(o) (PR_GetString(*(string_t *)&pr_globals[o])) +#define G_FUNCTION(o) (*(func_t *)&pr_globals[o]) + +#define E_FLOAT(e,o) (((float*)&e->v)[o]) +#define E_INT(e,o) (*(int *)&((float*)&e->v)[o]) +#define E_VECTOR(e,o) (&((float*)&e->v)[o]) +#define E_STRING(e,o) (PR_GetString(*(string_t *)&((float*)&e->v)[o])) + +#define NUM_TYPE_SIZES 8 +extern const int type_size[NUM_TYPE_SIZES]; + +typedef void (*builtin_t) (void); +extern const builtin_t *pr_builtins; +extern const int pr_numbuiltins; + +/* for 2021 re-release */ +typedef struct { + const char *name; + int first_statement; + int patch_statement; +} exbuiltin_t; + +extern int pr_argc; + +extern qboolean pr_trace; +extern dfunction_t *pr_xfunction; +extern int pr_xstatement; + +extern unsigned short pr_crc; + +FUNC_NORETURN void PR_RunError (const char *error, ...) FUNC_PRINTF(1,2); +#ifdef __WATCOMC__ +#pragma aux PR_RunError aborts; +#endif + +void ED_PrintEdicts (void); +void ED_PrintNum (int ent); + +eval_t *GetEdictFieldValue(edict_t *ed, const char *field); + +#endif /* QUAKE_PROGS_H */ diff --git a/Quake/protocol.h b/Quake/protocol.h new file mode 100644 index 0000000..a155eee --- /dev/null +++ b/Quake/protocol.h @@ -0,0 +1,279 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_PROTOCOL_H +#define _QUAKE_PROTOCOL_H + +// protocol.h -- communications protocols + +#define PROTOCOL_NETQUAKE 15 //johnfitz -- standard quake protocol +#define PROTOCOL_FITZQUAKE 666 //johnfitz -- added new protocol for fitzquake 0.85 +#define PROTOCOL_RMQ 999 + +// PROTOCOL_RMQ protocol flags +#define PRFL_SHORTANGLE (1 << 1) +#define PRFL_FLOATANGLE (1 << 2) +#define PRFL_24BITCOORD (1 << 3) +#define PRFL_FLOATCOORD (1 << 4) +#define PRFL_EDICTSCALE (1 << 5) +#define PRFL_ALPHASANITY (1 << 6) // cleanup insanity with alpha +#define PRFL_INT32COORD (1 << 7) +#define PRFL_MOREFLAGS (1 << 31) // not supported + +// if the high bit of the servercmd is set, the low bits are fast update flags: +#define U_MOREBITS (1<<0) +#define U_ORIGIN1 (1<<1) +#define U_ORIGIN2 (1<<2) +#define U_ORIGIN3 (1<<3) +#define U_ANGLE2 (1<<4) +#define U_STEP (1<<5) //johnfitz -- was U_NOLERP, renamed since it's only used for MOVETYPE_STEP +#define U_FRAME (1<<6) +#define U_SIGNAL (1<<7) // just differentiates from other updates + +// svc_update can pass all of the fast update bits, plus more +#define U_ANGLE1 (1<<8) +#define U_ANGLE3 (1<<9) +#define U_MODEL (1<<10) +#define U_COLORMAP (1<<11) +#define U_SKIN (1<<12) +#define U_EFFECTS (1<<13) +#define U_LONGENTITY (1<<14) +//johnfitz -- PROTOCOL_FITZQUAKE -- new bits +#define U_EXTEND1 (1<<15) +#define U_ALPHA (1<<16) // 1 byte, uses ENTALPHA_ENCODE, not sent if equal to baseline +#define U_FRAME2 (1<<17) // 1 byte, this is .frame & 0xFF00 (second byte) +#define U_MODEL2 (1<<18) // 1 byte, this is .modelindex & 0xFF00 (second byte) +#define U_LERPFINISH (1<<19) // 1 byte, 0.0-1.0 maps to 0-255, not sent if exactly 0.1, this is ent->v.nextthink - sv.time, used for lerping +#define U_SCALE (1<<20) // 1 byte, for PROTOCOL_RMQ PRFL_EDICTSCALE +#define U_UNUSED21 (1<<21) +#define U_UNUSED22 (1<<22) +#define U_EXTEND2 (1<<23) // another byte to follow, future expansion +//johnfitz + +//johnfitz -- PROTOCOL_NEHAHRA transparency +#define U_TRANS (1<<15) +//johnfitz + +#define SU_VIEWHEIGHT (1<<0) +#define SU_IDEALPITCH (1<<1) +#define SU_PUNCH1 (1<<2) +#define SU_PUNCH2 (1<<3) +#define SU_PUNCH3 (1<<4) +#define SU_VELOCITY1 (1<<5) +#define SU_VELOCITY2 (1<<6) +#define SU_VELOCITY3 (1<<7) +#define SU_UNUSED8 (1<<8) //AVAILABLE BIT +#define SU_ITEMS (1<<9) +#define SU_ONGROUND (1<<10) // no data follows, the bit is it +#define SU_INWATER (1<<11) // no data follows, the bit is it +#define SU_WEAPONFRAME (1<<12) +#define SU_ARMOR (1<<13) +#define SU_WEAPON (1<<14) +//johnfitz -- PROTOCOL_FITZQUAKE -- new bits +#define SU_EXTEND1 (1<<15) // another byte to follow +#define SU_WEAPON2 (1<<16) // 1 byte, this is .weaponmodel & 0xFF00 (second byte) +#define SU_ARMOR2 (1<<17) // 1 byte, this is .armorvalue & 0xFF00 (second byte) +#define SU_AMMO2 (1<<18) // 1 byte, this is .currentammo & 0xFF00 (second byte) +#define SU_SHELLS2 (1<<19) // 1 byte, this is .ammo_shells & 0xFF00 (second byte) +#define SU_NAILS2 (1<<20) // 1 byte, this is .ammo_nails & 0xFF00 (second byte) +#define SU_ROCKETS2 (1<<21) // 1 byte, this is .ammo_rockets & 0xFF00 (second byte) +#define SU_CELLS2 (1<<22) // 1 byte, this is .ammo_cells & 0xFF00 (second byte) +#define SU_EXTEND2 (1<<23) // another byte to follow +#define SU_WEAPONFRAME2 (1<<24) // 1 byte, this is .weaponframe & 0xFF00 (second byte) +#define SU_WEAPONALPHA (1<<25) // 1 byte, this is alpha for weaponmodel, uses ENTALPHA_ENCODE, not sent if ENTALPHA_DEFAULT +#define SU_UNUSED26 (1<<26) +#define SU_UNUSED27 (1<<27) +#define SU_UNUSED28 (1<<28) +#define SU_UNUSED29 (1<<29) +#define SU_UNUSED30 (1<<30) +#define SU_EXTEND3 (1<<31) // another byte to follow, future expansion +//johnfitz + +// a sound with no channel is a local only sound +#define SND_VOLUME (1<<0) // a byte +#define SND_ATTENUATION (1<<1) // a byte +#define SND_LOOPING (1<<2) // a long + +#define DEFAULT_SOUND_PACKET_VOLUME 255 +#define DEFAULT_SOUND_PACKET_ATTENUATION 1.0 + +//johnfitz -- PROTOCOL_FITZQUAKE -- new bits +#define SND_LARGEENTITY (1<<3) // a short + byte (instead of just a short) +#define SND_LARGESOUND (1<<4) // a short soundindex (instead of a byte) +//johnfitz + +//johnfitz -- PROTOCOL_FITZQUAKE -- flags for entity baseline messages +#define B_LARGEMODEL (1<<0) // modelindex is short instead of byte +#define B_LARGEFRAME (1<<1) // frame is short instead of byte +#define B_ALPHA (1<<2) // 1 byte, uses ENTALPHA_ENCODE, not sent if ENTALPHA_DEFAULT +#define B_SCALE (1<<3) +//johnfitz + +//johnfitz -- PROTOCOL_FITZQUAKE -- alpha encoding +#define ENTALPHA_DEFAULT 0 //entity's alpha is "default" (i.e. water obeys r_wateralpha) -- must be zero so zeroed out memory works +#define ENTALPHA_ZERO 1 //entity is invisible (lowest possible alpha) +#define ENTALPHA_ONE 255 //entity is fully opaque (highest possible alpha) +#define ENTALPHA_ENCODE(a) (((a)==0)?ENTALPHA_DEFAULT:Q_rint(CLAMP(1.0f,(a)*254.0f+1,255.0f))) //server convert to byte to send to client +#define ENTALPHA_DECODE(a) (((a)==ENTALPHA_DEFAULT)?1.0f:((float)(a)-1)/(254)) //client convert to float for rendering +#define ENTALPHA_TOSAVE(a) (((a)==ENTALPHA_DEFAULT)?0.0f:(((a)==ENTALPHA_ZERO)?-1.0f:((float)(a)-1)/(254))) //server convert to float for savegame +//johnfitz + +#define ENTSCALE_DEFAULT 16 // Equivalent to float 1.0f due to byte packing. +#define ENTSCALE_ENCODE(a) ((a) ? ((a) * ENTSCALE_DEFAULT) : ENTSCALE_DEFAULT) // Convert to byte +#define ENTSCALE_DECODE(a) ((float)(a) / ENTSCALE_DEFAULT) // Convert to float for rendering + +// defaults for clientinfo messages +#define DEFAULT_VIEWHEIGHT 22 + +// game types sent by serverinfo +// these determine which intermission screen plays +#define GAME_COOP 0 +#define GAME_DEATHMATCH 1 + +//================== +// note that there are some defs.qc that mirror to these numbers +// also related to svc_strings[] in cl_parse +//================== + +// +// server to client +// +#define svc_bad 0 +#define svc_nop 1 +#define svc_disconnect 2 +#define svc_updatestat 3 // [byte] [long] +#define svc_version 4 // [long] server version +#define svc_setview 5 // [short] entity number +#define svc_sound 6 // <see code> +#define svc_time 7 // [float] server time +#define svc_print 8 // [string] null terminated string +#define svc_stufftext 9 // [string] stuffed into client's console buffer + // the string should be \n terminated +#define svc_setangle 10 // [angle3] set the view angle to this absolute value +#define svc_serverinfo 11 // [long] version + // [string] signon string + // [string]..[0]model cache + // [string]...[0]sounds cache +#define svc_lightstyle 12 // [byte] [string] +#define svc_updatename 13 // [byte] [string] +#define svc_updatefrags 14 // [byte] [short] +#define svc_clientdata 15 // <shortbits + data> +#define svc_stopsound 16 // <see code> +#define svc_updatecolors 17 // [byte] [byte] +#define svc_particle 18 // [vec3] <variable> +#define svc_damage 19 +#define svc_spawnstatic 20 +//#define svc_spawnbinary 21 +#define svc_spawnbaseline 22 +#define svc_temp_entity 23 +#define svc_setpause 24 // [byte] on / off +#define svc_signonnum 25 // [byte] used for the signon sequence +#define svc_centerprint 26 // [string] to put in center of the screen +#define svc_killedmonster 27 +#define svc_foundsecret 28 +#define svc_spawnstaticsound 29 // [coord3] [byte] samp [byte] vol [byte] aten +#define svc_intermission 30 // [string] music +#define svc_finale 31 // [string] music [string] text +#define svc_cdtrack 32 // [byte] track [byte] looptrack +#define svc_sellscreen 33 +#define svc_cutscene 34 + +//johnfitz -- PROTOCOL_FITZQUAKE -- new server messages +#define svc_skybox 37 // [string] name +#define svc_bf 40 +#define svc_fog 41 // [byte] density [byte] red [byte] green [byte] blue [float] time +#define svc_spawnbaseline2 42 // support for large modelindex, large framenum, alpha, using flags +#define svc_spawnstatic2 43 // support for large modelindex, large framenum, alpha, using flags +#define svc_spawnstaticsound2 44 // [coord3] [short] samp [byte] vol [byte] aten +//johnfitz + +// 2021 re-release server messages - see: +// https://steamcommunity.com/sharedfiles/filedetails/?id=2679459726 +#define svc_botchat 38 +#define svc_setviews 45 +#define svc_updateping 46 +#define svc_updatesocial 47 +#define svc_updateplinfo 48 +#define svc_rawprint 49 +#define svc_servervars 50 +#define svc_seq 51 +// Note: svc_achievement has same value as svcdp_effect! +#define svc_achievement 52 // [string] id +#define svc_chat 53 +#define svc_levelcompleted 54 +#define svc_backtolobby 55 +#define svc_localsound 56 + +// +// client to server +// +#define clc_bad 0 +#define clc_nop 1 +#define clc_disconnect 2 +#define clc_move 3 // [usercmd_t] +#define clc_stringcmd 4 // [string] message + +// +// temp entity events +// +#define TE_SPIKE 0 +#define TE_SUPERSPIKE 1 +#define TE_GUNSHOT 2 +#define TE_EXPLOSION 3 +#define TE_TAREXPLOSION 4 +#define TE_LIGHTNING1 5 +#define TE_LIGHTNING2 6 +#define TE_WIZSPIKE 7 +#define TE_KNIGHTSPIKE 8 +#define TE_LIGHTNING3 9 +#define TE_LAVASPLASH 10 +#define TE_TELEPORT 11 +#define TE_EXPLOSION2 12 + +// PGM 01/21/97 +#define TE_BEAM 13 +// PGM 01/21/97 + +typedef struct +{ + vec3_t origin; + vec3_t angles; + unsigned short modelindex; //johnfitz -- was int + unsigned short frame; //johnfitz -- was int + unsigned char colormap; //johnfitz -- was int + unsigned char skin; //johnfitz -- was int + unsigned char alpha; //johnfitz -- added + unsigned char scale; //Quakespasm: for model scale support. + int effects; +} entity_state_t; + +typedef struct +{ + vec3_t viewangles; + +// intended velocities + float forwardmove; + float sidemove; + float upmove; +} usercmd_t; + +#endif /* _QUAKE_PROTOCOL_H */ diff --git a/Quake/q_ctype.h b/Quake/q_ctype.h new file mode 100644 index 0000000..729f796 --- /dev/null +++ b/Quake/q_ctype.h @@ -0,0 +1,99 @@ +/* Locale insensitive ctype.h functions taken from the RPM library - + * RPM is Copyright (c) 1998 by Red Hat Software, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Q_CTYPE_H +#define Q_CTYPE_H + +static inline int q_isascii(int c) +{ + return ((c & ~0x7f) == 0); +} + +static inline int q_islower(int c) +{ + return (c >= 'a' && c <= 'z'); +} + +static inline int q_isupper(int c) +{ + return (c >= 'A' && c <= 'Z'); +} + +static inline int q_isalpha(int c) +{ + return (q_islower(c) || q_isupper(c)); +} + +static inline int q_isdigit(int c) +{ + return (c >= '0' && c <= '9'); +} + +static inline int q_isxdigit(int c) +{ + return (q_isdigit(c) || (c >= 'a' && c <= 'f') || + (c >= 'A' && c <= 'F')); +} + +static inline int q_isalnum(int c) +{ + return (q_isalpha(c) || q_isdigit(c)); +} + +static inline int q_isblank(int c) +{ + return (c == ' ' || c == '\t'); +} + +static inline int q_isspace(int c) +{ + switch(c) { + case ' ': case '\t': + case '\n': case '\r': + case '\f': case '\v': return 1; + } + return 0; +} + +static inline int q_isgraph(int c) +{ + return (c > 0x20 && c <= 0x7e); +} + +static inline int q_isprint(int c) +{ + return (c >= 0x20 && c <= 0x7e); +} + +static inline int q_toascii(int c) +{ + return (c & 0x7f); +} + +static inline int q_tolower(int c) +{ + return ((q_isupper(c)) ? (c | ('a' - 'A')) : c); +} + +static inline int q_toupper(int c) +{ + return ((q_islower(c)) ? (c & ~('a' - 'A')) : c); +} + +#endif /* Q_CTYPE_H */ diff --git a/Quake/q_sound.h b/Quake/q_sound.h new file mode 100644 index 0000000..ded7b5d --- /dev/null +++ b/Quake/q_sound.h @@ -0,0 +1,190 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sound.h -- client sound i/o functions + +#ifndef __QUAKE_SOUND__ +#define __QUAKE_SOUND__ + +/* !!! if this is changed, it must be changed in asm_i386.h too !!! */ +typedef struct +{ + int left; + int right; +} portable_samplepair_t; + +typedef struct sfx_s +{ + char name[MAX_QPATH]; + cache_user_t cache; +} sfx_t; + +/* !!! if this is changed, it must be changed in asm_i386.h too !!! */ +typedef struct +{ + int length; + int loopstart; + int speed; + int width; + int stereo; + byte data[1]; /* variable sized */ +} sfxcache_t; + +typedef struct +{ + int channels; + int samples; /* mono samples in buffer */ + int submission_chunk; /* don't mix less than this # */ + int samplepos; /* in mono samples */ + int samplebits; + int signed8; /* device opened for S8 format? (e.g. Amiga AHI) */ + int speed; + unsigned char *buffer; +} dma_t; + +/* !!! if this is changed, it must be changed in asm_i386.h too !!! */ +typedef struct +{ + sfx_t *sfx; /* sfx number */ + int leftvol; /* 0-255 volume */ + int rightvol; /* 0-255 volume */ + int end; /* end time in global paintsamples */ + int pos; /* sample position in sfx */ + int looping; /* where to loop, -1 = no looping */ + int entnum; /* to allow overriding a specific sound */ + int entchannel; + vec3_t origin; /* origin of sound effect */ + vec_t dist_mult; /* distance multiplier (attenuation/clipK) */ + int master_vol; /* 0-255 master volume */ +} channel_t; + +#define WAV_FORMAT_PCM 1 + +typedef struct +{ + int rate; + int width; + int channels; + int loopstart; + int samples; + int dataofs; /* chunk starts this many bytes from file start */ +} wavinfo_t; + +void S_Init (void); +void S_Startup (void); +void S_Shutdown (void); +void S_StartSound (int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float fvol, float attenuation); +void S_StaticSound (sfx_t *sfx, vec3_t origin, float vol, float attenuation); +void S_StopSound (int entnum, int entchannel); +void S_StopAllSounds(qboolean clear); +void S_ClearBuffer (void); +void S_Update (vec3_t origin, vec3_t forward, vec3_t right, vec3_t up); +void S_ExtraUpdate (void); + +void S_BlockSound (void); +void S_UnblockSound (void); + +sfx_t *S_PrecacheSound (const char *sample); +void S_TouchSound (const char *sample); +void S_ClearPrecache (void); +void S_BeginPrecaching (void); +void S_EndPrecaching (void); +void S_PaintChannels (int endtime); +void S_InitPaintChannels (void); + +/* picks a channel based on priorities, empty slots, number of channels */ +channel_t *SND_PickChannel (int entnum, int entchannel); + +/* spatializes a channel */ +void SND_Spatialize (channel_t *ch); + +/* music stream support */ +void S_RawSamples(int samples, int rate, int width, int channels, byte * data, float volume); + /* Expects data in signed 16 bit, or unsigned 8 bit format. */ + +/* initializes cycling through a DMA buffer and returns information on it */ +qboolean SNDDMA_Init(dma_t *dma); + +/* gets the current DMA position */ +int SNDDMA_GetDMAPos(void); + +/* shutdown the DMA xfer. */ +void SNDDMA_Shutdown(void); + +/* validates & locks the dma buffer */ +void SNDDMA_LockBuffer(void); + +/* unlocks the dma buffer / sends sound to the device */ +void SNDDMA_Submit(void); + +/* blocks sound output upon window focus loss */ +void SNDDMA_BlockSound(void); + +/* unblocks the output upon window focus gain */ +void SNDDMA_UnblockSound(void); + +/* ==================================================================== + * User-setable variables + * ==================================================================== + */ + +#define MAX_CHANNELS 1024 // ericw -- was 512 /* johnfitz -- was 128 */ +#define MAX_DYNAMIC_CHANNELS 128 /* johnfitz -- was 8 */ + +extern channel_t snd_channels[MAX_CHANNELS]; +/* 0 to MAX_DYNAMIC_CHANNELS-1 = normal entity sounds + * MAX_DYNAMIC_CHANNELS to MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS -1 = water, etc + * MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS to total_channels = static sounds + */ + +extern volatile dma_t *shm; + +extern int total_channels; +extern int soundtime; +extern int paintedtime; +extern int s_rawend; + +extern vec3_t listener_origin; +extern vec3_t listener_forward; +extern vec3_t listener_right; +extern vec3_t listener_up; + +extern cvar_t sndspeed; +extern cvar_t snd_mixspeed; +extern cvar_t snd_filterquality; +extern cvar_t sfxvolume; +extern cvar_t loadas8bit; + +#define MAX_RAW_SAMPLES 8192 +extern portable_samplepair_t s_rawsamples[MAX_RAW_SAMPLES]; + +extern cvar_t bgmvolume; + +void S_LocalSound (const char *name); +sfxcache_t *S_LoadSound (sfx_t *s); + +wavinfo_t GetWavinfo (const char *name, byte *wav, int wavlength); + +void SND_InitScaletable (void); + +#endif /* __QUAKE_SOUND__ */ + diff --git a/Quake/q_stdinc.h b/Quake/q_stdinc.h new file mode 100644 index 0000000..f7a1069 --- /dev/null +++ b/Quake/q_stdinc.h @@ -0,0 +1,258 @@ +/* q_stdinc.h - includes the minimum necessary stdc headers, + * defines common and / or missing types. + * + * NOTE: for net stuff use net_sys.h, + * for byte order use q_endian.h, + * for math stuff use mathlib.h, + * for locale-insensitive ctype.h functions use q_ctype.h. + * + * Copyright (C) 1996-1997 Id Software, Inc. + * Copyright (C) 2007-2011 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef QSTDINC_H +#define QSTDINC_H + +#include <sys/types.h> +#include <stddef.h> +#include <limits.h> +#ifndef _WIN32 /* others we support without sys/param.h? */ +#include <sys/param.h> +#endif + +#include <stdio.h> + +/* NOTES on TYPE SIZES: + Quake/Hexen II engine relied on 32 bit int type size + with ILP32 (not LP32) model in mind. We now support + LP64 and LLP64, too. We expect: + sizeof (char) == 1 + sizeof (short) == 2 + sizeof (int) == 4 + sizeof (float) == 4 + sizeof (long) == 4 / 8 + sizeof (pointer *) == 4 / 8 + For this, we need stdint.h (or inttypes.h) + FIXME: On some platforms, only inttypes.h is available. + FIXME: Properly replace certain short and int usage + with int16_t and int32_t. + */ +#if defined(_MSC_VER) && (_MSC_VER < 1600) +/* MS Visual Studio provides stdint.h only starting with + * version 2010. Even in VS2010, there is no inttypes.h.. */ +#include "msinttypes/stdint.h" +#else +#include <stdint.h> +#endif + +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +/*==========================================================================*/ + +#ifndef NULL +#if defined(__cplusplus) +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif + +#define Q_MAXCHAR ((char)0x7f) +#define Q_MAXSHORT ((short)0x7fff) +#define Q_MAXINT ((int)0x7fffffff) +#define Q_MAXLONG ((int)0x7fffffff) + +#define Q_MINCHAR ((char)0x80) +#define Q_MINSHORT ((short)0x8000) +#define Q_MININT ((int)0x80000000) +#define Q_MINLONG ((int)0x80000000) + +#ifndef COMPILE_TIME_ASSERT +#if defined(__cplusplus) +/* Keep C++ case alone: Some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode. */ +#if (__cplusplus >= 201103L) +#define COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) +#define COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /**/ +#ifndef COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define COMPILE_TIME_ASSERT(name, x) \ + typedef int dummy_ ## name[(x) * 2 - 1] +#endif + +COMPILE_TIME_ASSERT(char, sizeof(char) == 1); +COMPILE_TIME_ASSERT(float, sizeof(float) == 4); +COMPILE_TIME_ASSERT(long, sizeof(long) >= 4); +COMPILE_TIME_ASSERT(int, sizeof(int) == 4); +COMPILE_TIME_ASSERT(short, sizeof(short) == 2); + +/* make sure enums are the size of ints for structure packing */ +typedef enum { + THE_DUMMY_VALUE +} THE_DUMMY_ENUM; +COMPILE_TIME_ASSERT(enum, sizeof(THE_DUMMY_ENUM) == sizeof(int)); + + +/* for array size: */ +#define Q_COUNTOF(x) (sizeof(x) / sizeof((x)[0])) + +/* Provide a substitute for offsetof() if we don't have one. + * This variant works on most (but not *all*) systems... + */ +#ifndef offsetof +#define offsetof(t,m) ((intptr_t)&(((t *)0)->m)) +#endif + + +/*==========================================================================*/ + +typedef unsigned char byte; + +/* some structures have qboolean members and the x86 asm code expect + * those members to be 4 bytes long. i.e.: qboolean must be 32 bits. */ +typedef int qboolean; +#if !defined(__cplusplus) +/* include stdbool.h for C99 or better, or with GCC >= 3 which has a + * standarts-compliant header. */ +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__GNUC__) && (__GNUC__ >= 3)) || \ + (defined(_MSC_VER) && (_MSC_VER >= 1910 /* VS2017 */)) +#include <stdbool.h> +#elif !defined(__bool_true_false_are_defined) +#define false 0 +#define true 1 +#if defined(__APPLE__) && (defined(__POWERPC__) || defined(__ppc__)) +#define bool int +#else +#define bool unsigned char +#endif +#define __bool_true_false_are_defined 1 +#endif +#endif /* */ +COMPILE_TIME_ASSERT(falsehood, ((1 != 1) == false)); +COMPILE_TIME_ASSERT(truth, ((1 == 1) == true)); +COMPILE_TIME_ASSERT(qboolean, sizeof(qboolean) == 4); + +/*==========================================================================*/ + +/* math */ +typedef float vec_t; +typedef vec_t vec3_t[3]; +typedef vec_t vec4_t[4]; +typedef vec_t vec5_t[5]; +typedef int fixed4_t; +typedef int fixed8_t; +typedef int fixed16_t; + + +/*==========================================================================*/ + +/* MAX_OSPATH (max length of a filesystem pathname, i.e. PATH_MAX) + * Note: See GNU Hurd and others' notes about brokenness of this: + * http://www.gnu.org/software/hurd/community/gsoc/project_ideas/maxpath.html + * http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html */ + +#if !defined(PATH_MAX) +/* equivalent values? */ +#if defined(MAXPATHLEN) +#define PATH_MAX MAXPATHLEN +#elif defined(_WIN32) && defined(_MAX_PATH) +#define PATH_MAX _MAX_PATH +#elif defined(_WIN32) && defined(MAX_PATH) +#define PATH_MAX MAX_PATH +#else /* fallback */ +#define PATH_MAX 1024 +#endif +#endif /* PATH_MAX */ + +#define MAX_OSPATH PATH_MAX + +/*==========================================================================*/ + +/* missing types: */ +#if defined(_MSC_VER) +typedef ptrdiff_t ssize_t; +#endif + +/*==========================================================================*/ + +/* function attributes, etc */ + +#if defined(__GNUC__) +#define FUNC_PRINTF(x,y) __attribute__((__format__(__printf__,x,y))) +#else +#define FUNC_PRINTF(x,y) +#endif + +/* argument format attributes for function pointers are supported for gcc >= 3.1 */ +#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)) +#define FUNCP_PRINTF FUNC_PRINTF +#else +#define FUNCP_PRINTF(x,y) +#endif + +/* llvm's optnone function attribute started with clang-3.5.0 */ +#if defined(__clang__) && \ + (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 5)) +#define FUNC_NO_OPTIMIZE __attribute__((__optnone__)) +/* function optimize attribute is added starting with gcc 4.4.0 */ +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 3)) +#define FUNC_NO_OPTIMIZE __attribute__((__optimize__("0"))) +#else +#define FUNC_NO_OPTIMIZE +#endif + +#if defined(__GNUC__) +#define FUNC_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) +#define FUNC_NORETURN __declspec(noreturn) +#elif defined(__WATCOMC__) +#define FUNC_NORETURN /* use the 'aborts' aux pragma */ +#else +#define FUNC_NORETURN +#endif + +#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +#define FUNC_NOINLINE __attribute__((__noinline__)) +#elif defined(_MSC_VER) && (_MSC_VER >= 1300) +#define FUNC_NOINLINE __declspec(noinline) +#else +#define FUNC_NOINLINE +#endif + +#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) +#define FUNC_NOCLONE __attribute__((__noclone__)) +#else +#define FUNC_NOCLONE +#endif + +#if defined(_MSC_VER) && !defined(__cplusplus) +#define inline __inline +#endif /* _MSC_VER */ + +/*==========================================================================*/ + +#endif /* QSTDINC_H */ diff --git a/Quake/qs_bmp.h b/Quake/qs_bmp.h new file mode 100644 index 0000000..fd2b2b5 --- /dev/null +++ b/Quake/qs_bmp.h @@ -0,0 +1,189 @@ +0x42, 0x4d, 0xc6, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x02, 0x00, 0x00, 0x28, 0x00, +0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0xa4, 0x00, +0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x00, 0x05, 0x06, 0x07, 0x00, 0x06, 0x06, +0x07, 0x00, 0x07, 0x06, 0x07, 0x00, 0x06, 0x07, 0x06, 0x00, 0x06, 0x07, 0x07, 0x00, 0x07, 0x07, +0x07, 0x00, 0x07, 0x08, 0x07, 0x00, 0x08, 0x08, 0x08, 0x00, 0x07, 0x08, 0x09, 0x00, 0x08, 0x08, +0x09, 0x00, 0x07, 0x09, 0x08, 0x00, 0x08, 0x09, 0x08, 0x00, 0x09, 0x09, 0x08, 0x00, 0x08, 0x09, +0x09, 0x00, 0x09, 0x09, 0x09, 0x00, 0x08, 0x09, 0x0a, 0x00, 0x09, 0x09, 0x0a, 0x00, 0x09, 0x09, +0x0b, 0x00, 0x09, 0x0a, 0x09, 0x00, 0x08, 0x0a, 0x0a, 0x00, 0x09, 0x0a, 0x0a, 0x00, 0x0a, 0x0a, +0x0a, 0x00, 0x09, 0x0a, 0x0b, 0x00, 0x0a, 0x0a, 0x0b, 0x00, 0x09, 0x0a, 0x0c, 0x00, 0x09, 0x0b, +0x0b, 0x00, 0x0a, 0x0b, 0x0b, 0x00, 0x0a, 0x0b, 0x0c, 0x00, 0x0b, 0x0b, 0x0c, 0x00, 0x0a, 0x0b, +0x0d, 0x00, 0x0b, 0x0c, 0x0c, 0x00, 0x0b, 0x0c, 0x0d, 0x00, 0x0a, 0x0c, 0x0e, 0x00, 0x0b, 0x0c, +0x0e, 0x00, 0x0c, 0x0c, 0x0f, 0x00, 0x0b, 0x0d, 0x0d, 0x00, 0x0b, 0x0d, 0x0e, 0x00, 0x0c, 0x0d, +0x0e, 0x00, 0x0c, 0x0d, 0x0f, 0x00, 0x0d, 0x0d, 0x0f, 0x00, 0x0b, 0x0d, 0x10, 0x00, 0x0c, 0x0d, +0x10, 0x00, 0x0c, 0x0e, 0x0f, 0x00, 0x0d, 0x0e, 0x0f, 0x00, 0x0c, 0x0e, 0x10, 0x00, 0x0d, 0x0e, +0x10, 0x00, 0x0b, 0x0e, 0x11, 0x00, 0x0c, 0x0e, 0x11, 0x00, 0x0d, 0x0e, 0x11, 0x00, 0x0d, 0x0f, +0x10, 0x00, 0x0d, 0x0f, 0x11, 0x00, 0x0e, 0x0f, 0x11, 0x00, 0x0d, 0x0f, 0x12, 0x00, 0x0e, 0x0f, +0x12, 0x00, 0x0d, 0x0f, 0x13, 0x00, 0x0e, 0x10, 0x11, 0x00, 0x0d, 0x10, 0x12, 0x00, 0x0b, 0x10, +0x13, 0x00, 0x0e, 0x10, 0x12, 0x00, 0x0e, 0x10, 0x13, 0x00, 0x0d, 0x10, 0x14, 0x00, 0x0e, 0x10, +0x14, 0x00, 0x0d, 0x11, 0x13, 0x00, 0x0e, 0x11, 0x13, 0x00, 0x0f, 0x11, 0x13, 0x00, 0x0e, 0x11, +0x14, 0x00, 0x0f, 0x11, 0x14, 0x00, 0x0f, 0x11, 0x15, 0x00, 0x0f, 0x12, 0x14, 0x00, 0x0f, 0x12, +0x15, 0x00, 0x10, 0x12, 0x15, 0x00, 0x0f, 0x12, 0x16, 0x00, 0x10, 0x12, 0x16, 0x00, 0x0f, 0x12, +0x17, 0x00, 0x0f, 0x13, 0x16, 0x00, 0x10, 0x13, 0x16, 0x00, 0x10, 0x13, 0x17, 0x00, 0x11, 0x13, +0x17, 0x00, 0x11, 0x13, 0x18, 0x00, 0x10, 0x14, 0x17, 0x00, 0x11, 0x14, 0x17, 0x00, 0x10, 0x14, +0x18, 0x00, 0x12, 0x15, 0x18, 0x00, 0x10, 0x15, 0x19, 0x00, 0x12, 0x15, 0x19, 0x00, 0x10, 0x15, +0x1a, 0x00, 0x11, 0x15, 0x1a, 0x00, 0x12, 0x15, 0x1a, 0x00, 0x12, 0x15, 0x1b, 0x00, 0x11, 0x16, +0x1a, 0x00, 0x12, 0x16, 0x1a, 0x00, 0x13, 0x16, 0x1a, 0x00, 0x12, 0x16, 0x1b, 0x00, 0x13, 0x16, +0x1b, 0x00, 0x12, 0x17, 0x1b, 0x00, 0x13, 0x17, 0x1b, 0x00, 0x13, 0x17, 0x1c, 0x00, 0x14, 0x17, +0x1c, 0x00, 0x14, 0x17, 0x1d, 0x00, 0x13, 0x18, 0x1d, 0x00, 0x14, 0x18, 0x1d, 0x00, 0x15, 0x18, +0x1f, 0x00, 0x14, 0x19, 0x1d, 0x00, 0x15, 0x19, 0x1d, 0x00, 0x15, 0x19, 0x1e, 0x00, 0x15, 0x19, +0x1f, 0x00, 0x16, 0x19, 0x1f, 0x00, 0x15, 0x19, 0x20, 0x00, 0x16, 0x1a, 0x1e, 0x00, 0x14, 0x1a, +0x1f, 0x00, 0x15, 0x1a, 0x1f, 0x00, 0x16, 0x1a, 0x1f, 0x00, 0x15, 0x1a, 0x20, 0x00, 0x16, 0x1a, +0x21, 0x00, 0x15, 0x1b, 0x21, 0x00, 0x17, 0x1b, 0x22, 0x00, 0x17, 0x1b, 0x23, 0x00, 0x16, 0x1c, +0x22, 0x00, 0x17, 0x1d, 0x22, 0x00, 0x17, 0x1d, 0x23, 0x00, 0x18, 0x1d, 0x23, 0x00, 0x19, 0x1d, +0x23, 0x00, 0x17, 0x1d, 0x24, 0x00, 0x18, 0x1e, 0x23, 0x00, 0x18, 0x1e, 0x24, 0x00, 0x18, 0x1e, +0x25, 0x00, 0x19, 0x1e, 0x25, 0x00, 0x18, 0x1e, 0x26, 0x00, 0x19, 0x1f, 0x26, 0x00, 0x1a, 0x1f, +0x26, 0x00, 0x1a, 0x1f, 0x27, 0x00, 0x1a, 0x1f, 0x28, 0x00, 0x1a, 0x20, 0x26, 0x00, 0x19, 0x20, +0x27, 0x00, 0x1a, 0x20, 0x27, 0x00, 0x1a, 0x20, 0x28, 0x00, 0x1b, 0x20, 0x29, 0x00, 0x1b, 0x21, +0x28, 0x00, 0x1b, 0x21, 0x29, 0x00, 0x1c, 0x21, 0x2a, 0x00, 0x1d, 0x22, 0x29, 0x00, 0x1c, 0x22, +0x2a, 0x00, 0x1d, 0x22, 0x2a, 0x00, 0x1e, 0x23, 0x2c, 0x00, 0x1d, 0x24, 0x2b, 0x00, 0x1d, 0x24, +0x2c, 0x00, 0x1c, 0x24, 0x2d, 0x00, 0x1e, 0x25, 0x2d, 0x00, 0x1f, 0x25, 0x2e, 0x00, 0x1e, 0x26, +0x2e, 0x00, 0x1f, 0x26, 0x2e, 0x00, 0x1f, 0x26, 0x30, 0x00, 0x21, 0x27, 0x2e, 0x00, 0x20, 0x27, +0x2f, 0x00, 0x20, 0x27, 0x31, 0x00, 0x20, 0x29, 0x32, 0x00, 0x20, 0x29, 0x33, 0x00, 0x21, 0x2a, +0x33, 0x00, 0x24, 0x2c, 0x35, 0x00, 0x24, 0x2c, 0x38, 0x00, 0x26, 0x31, 0x3b, 0x00, 0x27, 0x31, +0x3b, 0x00, 0xff, 0x00, 0xff, 0x00, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x05, 0x1a, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x25, 0x48, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x4a, 0x54, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x8a, 0x8c, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x41, 0x5e, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x0d, 0x27, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x1b, 0x1f, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x00, 0x32, 0x69, 0x29, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x21, 0x38, 0x63, 0x2b, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x3d, 0x2b, 0x1c, 0x0e, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x5d, 0x7e, 0x2b, 0x08, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x5d, 0x80, 0x4d, 0x4c, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x24, 0x4a, 0x9c, 0xa1, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x10, 0x39, 0x76, 0x46, 0x6d, 0x9a, +0x60, 0x3f, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x01, 0x78, 0x8e, 0x32, 0x37, 0x81, 0x6c, 0x2a, 0x3c, +0x55, 0x2c, 0x1d, 0x2d, 0x17, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x06, 0x27, 0x55, 0x82, 0x9b, 0x45, 0x0e, 0x47, 0x61, 0x0f, 0x1a, +0x0f, 0x20, 0x62, 0x28, 0x0f, 0x18, 0x08, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0x35, 0x1b, 0x40, 0x98, 0x4d, 0x18, 0x15, 0x1c, 0x26, 0x1b, 0x3b, 0x49, +0x20, 0x46, 0x67, 0x1b, 0x13, 0x0c, 0x15, 0x20, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0x25, 0x4d, 0x3c, 0x34, 0x2b, 0x1c, 0x08, 0x0b, 0x0f, 0x1b, 0x32, 0x9e, 0x8a, +0x08, 0x27, 0x22, 0x0f, 0x36, 0x6f, 0x75, 0x3b, 0x39, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0x7d, 0x7a, 0x56, 0x48, 0x68, 0x32, 0x06, 0xa3, 0xa3, 0xa3, 0x14, 0x40, 0x86, 0x6e, +0xa3, 0xa3, 0xa3, 0x06, 0x2d, 0x85, 0x92, 0x5b, 0x32, 0x6a, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0x1c, 0x58, 0x8a, 0x65, 0x18, 0x21, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x07, 0x43, 0x83, 0x43, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x73, 0x91, 0x7f, 0x62, 0x20, 0x15, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0x1e, 0x31, 0x0f, 0x2e, 0x1c, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x1b, 0x1b, 0x32, 0x16, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x43, 0x3b, 0x22, 0x55, 0x47, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0x72, 0x9d, 0x60, 0x33, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x2d, 0x0f, 0x1b, 0x0f, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x11, 0x2d, 0x93, 0x55, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x50, +0x44, 0x90, 0x8a, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x3a, 0x77, 0x88, 0x47, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x25, 0x45, 0x25, 0x25, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x8a, +0x51, 0x23, 0x43, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x57, 0x5a, 0xa0, 0x84, 0x87, +0x74, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x02, 0x08, 0x8f, 0x8b, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x96, +0x6a, 0x41, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x4e, 0x95, 0x68, 0x5a, 0x4b, 0x7b, +0x70, 0x4c, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x04, 0x53, 0x8d, 0x79, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x79, 0x80, +0x5b, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x0e, 0x7c, 0x94, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x4f, 0x6a, +0x47, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x5f, 0x40, 0x1b, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x46, 0x2d, +0x08, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x97, 0x82, 0x18, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x58, 0x43, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x69, 0x5c, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x71, 0x40, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x65, 0x60, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x52, 0x2d, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x5e, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x2d, 0x20, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x6f, 0x6b, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x2b, 0x5b, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x2e, 0x44, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x25, 0x41, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x40, 0x1e, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x10, 0x38, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x69, 0x42, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x3b, +0x19, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x03, 0x20, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x53, +0x1d, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x4f, 0x15, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0x1d, 0x09, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x48, 0x89, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0x1e, 0x33, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x5b, 0x39, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0x3b, 0x2a, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x59, 0x9f, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0x33, 0x0a, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x2f, 0x64, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0x1d, 0x2b, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x12, 0x99, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0x49, 0x3e, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x1c, 0x36, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x30, 0x5e, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x8a, 0x48, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3 diff --git a/Quake/quakedef.h b/Quake/quakedef.h new file mode 100644 index 0000000..af53eed --- /dev/null +++ b/Quake/quakedef.h @@ -0,0 +1,349 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2019 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef QUAKEDEFS_H +#define QUAKEDEFS_H + +// quakedef.h -- primary header for client + +#define QUAKE_GAME // as opposed to utilities + +#define VERSION 1.09 +#define GLQUAKE_VERSION 1.00 +#define D3DQUAKE_VERSION 0.01 +#define WINQUAKE_VERSION 0.996 +#define LINUX_VERSION 1.30 +#define X11_VERSION 1.10 + +#define FITZQUAKE_VERSION 0.85 //johnfitz +#define QUAKESPASM_VERSION 0.97 +#define QUAKESPASM_VER_PATCH 0 // helper to print a string like 0.94.7 +#ifndef QUAKESPASM_VER_SUFFIX +#define QUAKESPASM_VER_SUFFIX // optional version suffix string literal like "-beta1" +#endif + +#define QS_STRINGIFY_(x) #x +#define QS_STRINGIFY(x) QS_STRINGIFY_(x) + +// combined version string like "0.92.1-beta1" +#define QUAKESPASM_VER_STRING QS_STRINGIFY(QUAKESPASM_VERSION) "." QS_STRINGIFY(QUAKESPASM_VER_PATCH) QUAKESPASM_VER_SUFFIX + +//define PARANOID // speed sapping error checking + +#define GAMENAME "id1" // directory to look in by default + +#define BSP29_VALVE // enable Half-Life map support + +#include "q_stdinc.h" + +// !!! if this is changed, it must be changed in d_ifacea.h too !!! +#define CACHE_SIZE 32 // used to align key data structures + +#define Q_UNUSED(x) (x = x) // for pesky compiler / lint warnings + +#define MINIMUM_MEMORY 0x550000 +#define MINIMUM_MEMORY_LEVELPAK (MINIMUM_MEMORY + 0x100000) + +#define MAX_NUM_ARGVS 50 + +// up / down +#define PITCH 0 + +// left / right +#define YAW 1 + +// fall over +#define ROLL 2 + + +#define MAX_QPATH 64 // max length of a quake game pathname + +#define ON_EPSILON 0.1 // point on plane side epsilon + +#define DIST_EPSILON (0.03125) // 1/32 epsilon to keep floating point happy (moved from world.c) + +#define MAX_MSGLEN 64000 // max length of a reliable message //ericw -- was 32000 +#define MAX_DATAGRAM 64000 // max length of unreliable message //johnfitz -- was 1024 + +#define DATAGRAM_MTU 1400 // johnfitz -- actual limit for unreliable messages to nonlocal clients + +// +// per-level limits +// +#define MIN_EDICTS 256 // johnfitz -- lowest allowed value for max_edicts cvar +#define MAX_EDICTS 32000 // johnfitz -- highest allowed value for max_edicts cvar + // ents past 8192 can't play sounds in the standard protocol +#define MAX_LIGHTSTYLES 64 +#define MAX_MODELS 4096 // johnfitz -- was 256 +#define MAX_SOUNDS 2048 // johnfitz -- was 256 + +#define SAVEGAME_COMMENT_LENGTH 39 + +#define MAX_STYLESTRING 64 + +// +// stats are integers communicated to the client by the server +// +#define MAX_CL_STATS 32 +#define STAT_HEALTH 0 +#define STAT_FRAGS 1 +#define STAT_WEAPON 2 +#define STAT_AMMO 3 +#define STAT_ARMOR 4 +#define STAT_WEAPONFRAME 5 +#define STAT_SHELLS 6 +#define STAT_NAILS 7 +#define STAT_ROCKETS 8 +#define STAT_CELLS 9 +#define STAT_ACTIVEWEAPON 10 +#define STAT_TOTALSECRETS 11 +#define STAT_TOTALMONSTERS 12 +#define STAT_SECRETS 13 // bumped on client side by svc_foundsecret +#define STAT_MONSTERS 14 // bumped by svc_killedmonster + +// stock defines +// +#define IT_SHOTGUN 1 +#define IT_SUPER_SHOTGUN 2 +#define IT_NAILGUN 4 +#define IT_SUPER_NAILGUN 8 +#define IT_GRENADE_LAUNCHER 16 +#define IT_ROCKET_LAUNCHER 32 +#define IT_LIGHTNING 64 +#define IT_SUPER_LIGHTNING 128 +#define IT_SHELLS 256 +#define IT_NAILS 512 +#define IT_ROCKETS 1024 +#define IT_CELLS 2048 +#define IT_AXE 4096 +#define IT_ARMOR1 8192 +#define IT_ARMOR2 16384 +#define IT_ARMOR3 32768 +#define IT_SUPERHEALTH 65536 +#define IT_KEY1 131072 +#define IT_KEY2 262144 +#define IT_INVISIBILITY 524288 +#define IT_INVULNERABILITY 1048576 +#define IT_SUIT 2097152 +#define IT_QUAD 4194304 +#define IT_SIGIL1 (1<<28) +#define IT_SIGIL2 (1<<29) +#define IT_SIGIL3 (1<<30) +#define IT_SIGIL4 (1<<31) + +//=========================================== +//rogue changed and added defines + +#define RIT_SHELLS 128 +#define RIT_NAILS 256 +#define RIT_ROCKETS 512 +#define RIT_CELLS 1024 +#define RIT_AXE 2048 +#define RIT_LAVA_NAILGUN 4096 +#define RIT_LAVA_SUPER_NAILGUN 8192 +#define RIT_MULTI_GRENADE 16384 +#define RIT_MULTI_ROCKET 32768 +#define RIT_PLASMA_GUN 65536 +#define RIT_ARMOR1 8388608 +#define RIT_ARMOR2 16777216 +#define RIT_ARMOR3 33554432 +#define RIT_LAVA_NAILS 67108864 +#define RIT_PLASMA_AMMO 134217728 +#define RIT_MULTI_ROCKETS 268435456 +#define RIT_SHIELD 536870912 +#define RIT_ANTIGRAV 1073741824 +#define RIT_SUPERHEALTH 2147483648 + +//MED 01/04/97 added hipnotic defines +//=========================================== +//hipnotic added defines +#define HIT_PROXIMITY_GUN_BIT 16 +#define HIT_MJOLNIR_BIT 7 +#define HIT_LASER_CANNON_BIT 23 +#define HIT_PROXIMITY_GUN (1<<HIT_PROXIMITY_GUN_BIT) +#define HIT_MJOLNIR (1<<HIT_MJOLNIR_BIT) +#define HIT_LASER_CANNON (1<<HIT_LASER_CANNON_BIT) +#define HIT_WETSUIT (1<<(23+2)) +#define HIT_EMPATHY_SHIELDS (1<<(23+3)) + +//=========================================== + +#define MAX_SCOREBOARD 16 +#define MAX_SCOREBOARDNAME 32 + +#define SOUND_CHANNELS 8 + +typedef struct +{ + const char *basedir; + const char *userdir; // user's directory on UNIX platforms. + // if user directories are enabled, basedir + // and userdir will point to different + // memory locations, otherwise to the same. + int argc; + char **argv; + void *membase; + int memsize; + int numcpus; + int errstate; +} quakeparms_t; + +#include "common.h" +#include "bspfile.h" +#include "sys.h" +#include "zone.h" +#include "mathlib.h" +#include "cvar.h" + +#include "protocol.h" +#include "net.h" + +#include "cmd.h" +#include "crc.h" + +#include "progs.h" +#include "server.h" + +#include "platform.h" + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#ifdef __EMSCRIPTEN__ +#include <GL/gl.h> +#include <GL/glext.h> +#endif +#include <SDL2/SDL.h> +#ifndef __EMSCRIPTEN__ +#include <SDL2/SDL_opengl.h> +#endif +#else /* SDL-1.2: */ +#include <SDL/SDL.h> +#include <SDL/SDL_opengl.h> +#endif +#else /**/ +#include "SDL.h" +#include "SDL_opengl.h" +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif + +#include "console.h" +#include "wad.h" +#include "vid.h" +#include "screen.h" +#include "draw.h" +#include "render.h" +#include "view.h" +#include "sbar.h" +#include "q_sound.h" +#include "client.h" + +#include "gl_model.h" +#include "world.h" + +#include "image.h" //johnfitz +#include "gl_texmgr.h" //johnfitz +#include "input.h" +#include "keys.h" +#include "menu.h" +#include "cdaudio.h" +#include "glquake.h" + + +//============================================================================= + +// the host system specifies the base of the directory tree, the +// command line parms passed to the program, and the amount of memory +// available for the program to use + +extern qboolean noclip_anglehack; + +// +// host +// +extern quakeparms_t *host_parms; + +extern cvar_t sys_ticrate; +extern cvar_t sys_throttle; +extern cvar_t sys_nostdout; +extern cvar_t developer; +extern cvar_t max_edicts; //johnfitz + +extern qboolean host_initialized; // true if into command execution +extern double host_frametime; +extern byte *host_colormap; +extern int host_framecount; // incremented every frame, never reset +extern double realtime; // not bounded in any way, changed at + // start of every frame, never reset + +typedef struct filelist_item_s +{ + char name[32]; + unsigned int path_id; + struct filelist_item_s *next; +} filelist_item_t; + +extern filelist_item_t *modlist; +extern filelist_item_t *extralevels; +extern filelist_item_t *demolist; + +void Host_ClearMemory (void); +void Host_ServerFrame (void); +void Host_InitCommands (void); +void Host_Init (void); +void Host_Shutdown(void); +void Host_Callback_Notify (cvar_t *var); /* callback function for CVAR_NOTIFY */ +FUNC_NORETURN void Host_Error (const char *error, ...) FUNC_PRINTF(1,2); +FUNC_NORETURN void Host_EndGame (const char *message, ...) FUNC_PRINTF(1,2); +#ifdef __WATCOMC__ +#pragma aux Host_Error aborts; +#pragma aux Host_EndGame aborts; +#endif +void Host_Frame (float time); +void Host_Quit_f (void); +void Host_ClientCommands (const char *fmt, ...) FUNC_PRINTF(1,2); +void Host_ShutdownServer (qboolean crash); +void Host_WriteConfiguration (void); +void Host_Resetdemos (void); + +void ExtraMaps_Init (void); +void Modlist_Init (void); +void DemoList_Init (void); + +void ExtraMaps_NewGame (void); +void DemoList_Rebuild (void); + +void Host_SyncExternalFS (void); + +extern int current_skill; // skill level for currently loaded level (in case + // the user changes the cvar while the level is + // running, this reflects the level actually in use) + +extern qboolean isDedicated; + +extern int minimum_memory; + +#endif /* QUAKEDEFS_H */ + diff --git a/Quake/quakespasm.pak b/Quake/quakespasm.pak new file mode 100644 index 0000000000000000000000000000000000000000..820524b51a4b81d78ccc68f96079cd3542812efd GIT binary patch literal 558464 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%0A* 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%0A&o8@h7O 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 literal 0 HcmV?d00001 diff --git a/Quake/r_alias.c b/Quake/r_alias.c new file mode 100644 index 0000000..f179976 --- /dev/null +++ b/Quake/r_alias.c @@ -0,0 +1,1006 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +//r_alias.c -- alias model rendering + +#include "quakedef.h" + +extern cvar_t r_drawflat, gl_overbright_models, gl_fullbrights, r_lerpmodels, r_lerpmove; //johnfitz +extern cvar_t scr_fov, cl_gun_fovscale; + +//up to 16 color translated skins +gltexture_t *playertextures[MAX_SCOREBOARD]; //johnfitz -- changed to an array of pointers + +const float r_avertexnormals[NUMVERTEXNORMALS][3] = { +#include "anorms.h" +}; + +extern vec3_t lightcolor; //johnfitz -- replaces "float shadelight" for lit support + +// precalculated dot products for quantized angles +#define SHADEDOT_QUANT 16 +static const float r_avertexnormal_dots[SHADEDOT_QUANT][256] = { +#include "anorm_dots.h" +}; + +extern vec3_t lightspot; + +static const float *shadedots = r_avertexnormal_dots[0]; +static vec3_t shadevector; + +static float entalpha; //johnfitz + +static qboolean overbright; //johnfitz + +static qboolean shading = true; //johnfitz -- if false, disable vertex shading for various reasons (fullbright, r_lightmap, showtris, etc) + +//johnfitz -- struct for passing lerp information to drawing functions +typedef struct { + short pose1; + short pose2; + float blend; + vec3_t origin; + vec3_t angles; +} lerpdata_t; +//johnfitz + +static GLuint r_alias_program; + +// uniforms used in vert shader +static GLint blendLoc; +static GLint shadevectorLoc; +static GLint lightColorLoc; + +// uniforms used in frag shader +static GLint texLoc; +static GLint fullbrightTexLoc; +static GLint useFullbrightTexLoc; +static GLint useOverbrightLoc; +static GLint useAlphaTestLoc; + +#define pose1VertexAttrIndex 0 +#define pose1NormalAttrIndex 1 +#define pose2VertexAttrIndex 2 +#define pose2NormalAttrIndex 3 +#define texCoordsAttrIndex 4 + +/* +============= +GLARB_GetXYZOffset + +Returns the offset of the first vertex's meshxyz_t.xyz in the vbo for the given +model and pose. +============= +*/ +static void *GLARB_GetXYZOffset (aliashdr_t *hdr, int pose) +{ + const int xyzoffs = offsetof (meshxyz_t, xyz); + return (void *) (currententity->model->vboxyzofs + (hdr->numverts_vbo * pose * sizeof (meshxyz_t)) + xyzoffs); +} + +/* +============= +GLARB_GetNormalOffset + +Returns the offset of the first vertex's meshxyz_t.normal in the vbo for the +given model and pose. +============= +*/ +static void *GLARB_GetNormalOffset (aliashdr_t *hdr, int pose) +{ + const int normaloffs = offsetof (meshxyz_t, normal); + return (void *)(currententity->model->vboxyzofs + (hdr->numverts_vbo * pose * sizeof (meshxyz_t)) + normaloffs); +} + +/* +============= +GLAlias_CreateShaders +============= +*/ +void GLAlias_CreateShaders (void) +{ + const glsl_attrib_binding_t bindings[] = { + { "TexCoords", texCoordsAttrIndex }, + { "Pose1Vert", pose1VertexAttrIndex }, + { "Pose1Normal", pose1NormalAttrIndex }, + { "Pose2Vert", pose2VertexAttrIndex }, + { "Pose2Normal", pose2NormalAttrIndex } + }; + + const GLchar *vertSource = \ + "#version 110\n" + "\n" + "uniform float Blend;\n" + "uniform vec3 ShadeVector;\n" + "uniform vec4 LightColor;\n" + "attribute vec4 TexCoords; // only xy are used \n" + "attribute vec4 Pose1Vert;\n" + "attribute vec3 Pose1Normal;\n" + "attribute vec4 Pose2Vert;\n" + "attribute vec3 Pose2Normal;\n" + "\n" + "varying float FogFragCoord;\n" + "\n" + "float r_avertexnormal_dot(vec3 vertexnormal) // from MH \n" + "{\n" + " float dot = dot(vertexnormal, ShadeVector);\n" + " // wtf - this reproduces anorm_dots within as reasonable a degree of tolerance as the >= 0 case\n" + " if (dot < 0.0)\n" + " return 1.0 + dot * (13.0 / 44.0);\n" + " else\n" + " return 1.0 + dot;\n" + "}\n" + "void main()\n" + "{\n" + " gl_TexCoord[0] = TexCoords;\n" + " vec4 lerpedVert = mix(vec4(Pose1Vert.xyz, 1.0), vec4(Pose2Vert.xyz, 1.0), Blend);\n" + " gl_Position = gl_ModelViewProjectionMatrix * lerpedVert;\n" + " FogFragCoord = gl_Position.w;\n" + " float dot1 = r_avertexnormal_dot(Pose1Normal);\n" + " float dot2 = r_avertexnormal_dot(Pose2Normal);\n" + " gl_FrontColor = LightColor * vec4(vec3(mix(dot1, dot2, Blend)), 1.0);\n" + "}\n"; + + const GLchar *fragSource = \ + "#version 110\n" + "\n" + "uniform sampler2D Tex;\n" + "uniform sampler2D FullbrightTex;\n" + "uniform bool UseFullbrightTex;\n" + "uniform bool UseOverbright;\n" + "uniform bool UseAlphaTest;\n" + "\n" + "varying float FogFragCoord;\n" + "\n" + "void main()\n" + "{\n" + " vec4 result = texture2D(Tex, gl_TexCoord[0].xy);\n" + " if (UseAlphaTest && (result.a < 0.666))\n" + " discard;\n" + " result *= gl_Color;\n" + " if (UseOverbright)\n" + " result.rgb *= 2.0;\n" + " if (UseFullbrightTex)\n" + " result += texture2D(FullbrightTex, gl_TexCoord[0].xy);\n" + " result = clamp(result, 0.0, 1.0);\n" + " float fog = exp(-gl_Fog.density * gl_Fog.density * FogFragCoord * FogFragCoord);\n" + " fog = clamp(fog, 0.0, 1.0);\n" + " result = mix(gl_Fog.color, result, fog);\n" + " result.a = gl_Color.a;\n" // FIXME: This will make almost transparent things cut holes though heavy fog + " gl_FragColor = result;\n" + "}\n"; + + if (!gl_glsl_alias_able) + return; + + r_alias_program = GL_CreateProgram (vertSource, fragSource, Q_COUNTOF(bindings), bindings); + + if (r_alias_program != 0) + { + // get uniform locations + blendLoc = GL_GetUniformLocation (&r_alias_program, "Blend"); + shadevectorLoc = GL_GetUniformLocation (&r_alias_program, "ShadeVector"); + lightColorLoc = GL_GetUniformLocation (&r_alias_program, "LightColor"); + texLoc = GL_GetUniformLocation (&r_alias_program, "Tex"); + fullbrightTexLoc = GL_GetUniformLocation (&r_alias_program, "FullbrightTex"); + useFullbrightTexLoc = GL_GetUniformLocation (&r_alias_program, "UseFullbrightTex"); + useOverbrightLoc = GL_GetUniformLocation (&r_alias_program, "UseOverbright"); + useAlphaTestLoc = GL_GetUniformLocation (&r_alias_program, "UseAlphaTest"); + } +} + +/* +============= +GL_DrawAliasFrame_GLSL -- ericw + +Optimized alias model drawing codepath. +Compared to the original GL_DrawAliasFrame, this makes 1 draw call, +no vertex data is uploaded (it's already in the r_meshvbo and r_meshindexesvbo +static VBOs), and lerping and lighting is done in the vertex shader. + +Supports optional overbright, optional fullbright pixels. + +Based on code by MH from RMQEngine +============= +*/ +void GL_DrawAliasFrame_GLSL (aliashdr_t *paliashdr, lerpdata_t lerpdata, gltexture_t *tx, gltexture_t *fb) +{ + float blend; + + if (lerpdata.pose1 != lerpdata.pose2) + { + blend = lerpdata.blend; + } + else // poses the same means either 1. the entity has paused its animation, or 2. r_lerpmodels is disabled + { + blend = 0; + } + + GL_UseProgramFunc (r_alias_program); + + GL_BindBuffer (GL_ARRAY_BUFFER, currententity->model->meshvbo); + GL_BindBuffer (GL_ELEMENT_ARRAY_BUFFER, currententity->model->meshindexesvbo); + + GL_EnableVertexAttribArrayFunc (texCoordsAttrIndex); + GL_EnableVertexAttribArrayFunc (pose1VertexAttrIndex); + GL_EnableVertexAttribArrayFunc (pose2VertexAttrIndex); + GL_EnableVertexAttribArrayFunc (pose1NormalAttrIndex); + GL_EnableVertexAttribArrayFunc (pose2NormalAttrIndex); + + GL_VertexAttribPointerFunc (texCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, 0, (void *)(intptr_t)currententity->model->vbostofs); + GL_VertexAttribPointerFunc (pose1VertexAttrIndex, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof (meshxyz_t), GLARB_GetXYZOffset (paliashdr, lerpdata.pose1)); + GL_VertexAttribPointerFunc (pose2VertexAttrIndex, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof (meshxyz_t), GLARB_GetXYZOffset (paliashdr, lerpdata.pose2)); +// GL_TRUE to normalize the signed bytes to [-1 .. 1] + GL_VertexAttribPointerFunc (pose1NormalAttrIndex, 4, GL_BYTE, GL_TRUE, sizeof (meshxyz_t), GLARB_GetNormalOffset (paliashdr, lerpdata.pose1)); + GL_VertexAttribPointerFunc (pose2NormalAttrIndex, 4, GL_BYTE, GL_TRUE, sizeof (meshxyz_t), GLARB_GetNormalOffset (paliashdr, lerpdata.pose2)); + +// set uniforms + GL_Uniform1fFunc (blendLoc, blend); + GL_Uniform3fFunc (shadevectorLoc, shadevector[0], shadevector[1], shadevector[2]); + GL_Uniform4fFunc (lightColorLoc, lightcolor[0], lightcolor[1], lightcolor[2], entalpha); + GL_Uniform1iFunc (texLoc, 0); + GL_Uniform1iFunc (fullbrightTexLoc, 1); + GL_Uniform1iFunc (useFullbrightTexLoc, (fb != NULL) ? 1 : 0); + GL_Uniform1fFunc (useOverbrightLoc, overbright); + GL_Uniform1iFunc (useAlphaTestLoc, (currententity->model->flags & MF_HOLEY) ? 1 : 0); + +// set textures + GL_SelectTexture (GL_TEXTURE0); + GL_Bind (tx); + + if (fb) + { + GL_SelectTexture (GL_TEXTURE1); + GL_Bind (fb); + } + +// draw + glDrawElements (GL_TRIANGLES, paliashdr->numindexes, GL_UNSIGNED_SHORT, (void *)(intptr_t)currententity->model->vboindexofs); + +// clean up + GL_DisableVertexAttribArrayFunc (texCoordsAttrIndex); + GL_DisableVertexAttribArrayFunc (pose1VertexAttrIndex); + GL_DisableVertexAttribArrayFunc (pose2VertexAttrIndex); + GL_DisableVertexAttribArrayFunc (pose1NormalAttrIndex); + GL_DisableVertexAttribArrayFunc (pose2NormalAttrIndex); + + GL_UseProgramFunc (0); + GL_SelectTexture (GL_TEXTURE0); + + rs_aliaspasses += paliashdr->numtris; +} + +/* +============= +GL_DrawAliasFrame -- johnfitz -- rewritten to support colored light, lerping, entalpha, multitexture, and r_drawflat +============= +*/ +void GL_DrawAliasFrame (aliashdr_t *paliashdr, lerpdata_t lerpdata) +{ + float vertcolor[4]; + trivertx_t *verts1, *verts2; + int *commands; + int count; + float u,v; + float blend, iblend; + qboolean lerping; + + if (lerpdata.pose1 != lerpdata.pose2) + { + lerping = true; + verts1 = (trivertx_t *)((byte *)paliashdr + paliashdr->posedata); + verts2 = verts1; + verts1 += lerpdata.pose1 * paliashdr->poseverts; + verts2 += lerpdata.pose2 * paliashdr->poseverts; + blend = lerpdata.blend; + iblend = 1.0f - blend; + } + else // poses the same means either 1. the entity has paused its animation, or 2. r_lerpmodels is disabled + { + lerping = false; + verts1 = (trivertx_t *)((byte *)paliashdr + paliashdr->posedata); + verts2 = verts1; // avoid bogus compiler warning + verts1 += lerpdata.pose1 * paliashdr->poseverts; + blend = iblend = 0; // avoid bogus compiler warning + } + + commands = (int *)((byte *)paliashdr + paliashdr->commands); + + vertcolor[3] = entalpha; //never changes, so there's no need to put this inside the loop + + while (1) + { + // get the vertex count and primitive type + count = *commands++; + if (!count) + break; // done + + if (count < 0) + { + count = -count; + glBegin (GL_TRIANGLE_FAN); + } + else + glBegin (GL_TRIANGLE_STRIP); + + do + { + u = ((float *)commands)[0]; + v = ((float *)commands)[1]; + if (mtexenabled) + { + GL_MTexCoord2fFunc (GL_TEXTURE0_ARB, u, v); + GL_MTexCoord2fFunc (GL_TEXTURE1_ARB, u, v); + } + else + glTexCoord2f (u, v); + + commands += 2; + + if (shading) + { + if (r_drawflat_cheatsafe) + { + srand(count * (unsigned int)(src_offset_t)commands); + glColor3f (rand()%256/255.0, rand()%256/255.0, rand()%256/255.0); + } + else if (lerping) + { + vertcolor[0] = (shadedots[verts1->lightnormalindex]*iblend + shadedots[verts2->lightnormalindex]*blend) * lightcolor[0]; + vertcolor[1] = (shadedots[verts1->lightnormalindex]*iblend + shadedots[verts2->lightnormalindex]*blend) * lightcolor[1]; + vertcolor[2] = (shadedots[verts1->lightnormalindex]*iblend + shadedots[verts2->lightnormalindex]*blend) * lightcolor[2]; + glColor4fv (vertcolor); + } + else + { + vertcolor[0] = shadedots[verts1->lightnormalindex] * lightcolor[0]; + vertcolor[1] = shadedots[verts1->lightnormalindex] * lightcolor[1]; + vertcolor[2] = shadedots[verts1->lightnormalindex] * lightcolor[2]; + glColor4fv (vertcolor); + } + } + + if (lerping) + { + glVertex3f (verts1->v[0]*iblend + verts2->v[0]*blend, + verts1->v[1]*iblend + verts2->v[1]*blend, + verts1->v[2]*iblend + verts2->v[2]*blend); + verts1++; + verts2++; + } + else + { + glVertex3f (verts1->v[0], verts1->v[1], verts1->v[2]); + verts1++; + } + } while (--count); + + glEnd (); + } + + rs_aliaspasses += paliashdr->numtris; +} + +/* +================= +R_SetupAliasFrame -- johnfitz -- rewritten to support lerping +================= +*/ +void R_SetupAliasFrame (aliashdr_t *paliashdr, int frame, lerpdata_t *lerpdata) +{ + entity_t *e = currententity; + int posenum, numposes; + + if ((frame >= paliashdr->numframes) || (frame < 0)) + { + Con_DPrintf ("R_AliasSetupFrame: no such frame %d for '%s'\n", frame, e->model->name); + frame = 0; + } + + posenum = paliashdr->frames[frame].firstpose; + numposes = paliashdr->frames[frame].numposes; + + if (numposes > 1) + { + e->lerptime = paliashdr->frames[frame].interval; + posenum += (int)(cl.time / e->lerptime) % numposes; + } + else + e->lerptime = 0.1; + + if (e->lerpflags & LERP_RESETANIM) //kill any lerp in progress + { + e->lerpstart = 0; + e->previouspose = posenum; + e->currentpose = posenum; + e->lerpflags -= LERP_RESETANIM; + } + else if (e->currentpose != posenum) // pose changed, start new lerp + { + if (e->lerpflags & LERP_RESETANIM2) //defer lerping one more time + { + e->lerpstart = 0; + e->previouspose = posenum; + e->currentpose = posenum; + e->lerpflags -= LERP_RESETANIM2; + } + else + { + e->lerpstart = cl.time; + e->previouspose = e->currentpose; + e->currentpose = posenum; + } + } + + //set up values + if (r_lerpmodels.value && !(e->model->flags & MOD_NOLERP && r_lerpmodels.value != 2)) + { + if (e->lerpflags & LERP_FINISH && numposes == 1) + lerpdata->blend = CLAMP (0.0f, (float)(cl.time - e->lerpstart) / (e->lerpfinish - e->lerpstart), 1.0f); + else + lerpdata->blend = CLAMP (0.0f, (float)(cl.time - e->lerpstart) / e->lerptime, 1.0f); + if (lerpdata->blend == 1.0f) + e->previouspose = e->currentpose; + lerpdata->pose1 = e->previouspose; + lerpdata->pose2 = e->currentpose; + } + else //don't lerp + { + lerpdata->blend = 1; + lerpdata->pose1 = posenum; + lerpdata->pose2 = posenum; + } +} + +/* +================= +R_SetupEntityTransform -- johnfitz -- set up transform part of lerpdata +================= +*/ +void R_SetupEntityTransform (entity_t *e, lerpdata_t *lerpdata) +{ + float blend; + vec3_t d; + int i; + + // if LERP_RESETMOVE, kill any lerps in progress + if (e->lerpflags & LERP_RESETMOVE) + { + e->movelerpstart = 0; + VectorCopy (e->origin, e->previousorigin); + VectorCopy (e->origin, e->currentorigin); + VectorCopy (e->angles, e->previousangles); + VectorCopy (e->angles, e->currentangles); + e->lerpflags -= LERP_RESETMOVE; + } + else if (!VectorCompare (e->origin, e->currentorigin) || !VectorCompare (e->angles, e->currentangles)) // origin/angles changed, start new lerp + { + e->movelerpstart = cl.time; + VectorCopy (e->currentorigin, e->previousorigin); + VectorCopy (e->origin, e->currentorigin); + VectorCopy (e->currentangles, e->previousangles); + VectorCopy (e->angles, e->currentangles); + } + + //set up values + if (r_lerpmove.value && e != &cl.viewent && e->lerpflags & LERP_MOVESTEP) + { + if (e->lerpflags & LERP_FINISH) + blend = CLAMP (0.0f, (float)(cl.time - e->movelerpstart) / (e->lerpfinish - e->movelerpstart), 1.0f); + else + blend = CLAMP (0.0f, (float)(cl.time - e->movelerpstart) / 0.1f, 1.0f); + + //translation + VectorSubtract (e->currentorigin, e->previousorigin, d); + lerpdata->origin[0] = e->previousorigin[0] + d[0] * blend; + lerpdata->origin[1] = e->previousorigin[1] + d[1] * blend; + lerpdata->origin[2] = e->previousorigin[2] + d[2] * blend; + + //rotation + VectorSubtract (e->currentangles, e->previousangles, d); + for (i = 0; i < 3; i++) + { + if (d[i] > 180) d[i] -= 360; + if (d[i] < -180) d[i] += 360; + } + lerpdata->angles[0] = e->previousangles[0] + d[0] * blend; + lerpdata->angles[1] = e->previousangles[1] + d[1] * blend; + lerpdata->angles[2] = e->previousangles[2] + d[2] * blend; + } + else //don't lerp + { + VectorCopy (e->origin, lerpdata->origin); + VectorCopy (e->angles, lerpdata->angles); + } +} + +/* +================= +R_SetupAliasLighting -- johnfitz -- broken out from R_DrawAliasModel and rewritten +================= +*/ +void R_SetupAliasLighting (entity_t *e) +{ + vec3_t dist; + float add; + int i; + int quantizedangle; + float radiansangle; + + // if the initial trace is completely black, try again from above + // this helps with models whose origin is slightly below ground level + // (e.g. some of the candles in the DOTM start map) + if (!R_LightPoint (e->origin)) + { + vec3_t lpos; + VectorCopy (e->origin, lpos); + lpos[2] += e->model->maxs[2] * 0.5f; + R_LightPoint (lpos); + } + + //add dlights + for (i=0 ; i<MAX_DLIGHTS ; i++) + { + if (cl_dlights[i].die >= cl.time) + { + VectorSubtract (currententity->origin, cl_dlights[i].origin, dist); + add = cl_dlights[i].radius - VectorLength(dist); + if (add > 0) + VectorMA (lightcolor, add, cl_dlights[i].color, lightcolor); + } + } + + // minimum light value on gun (24) + if (e == &cl.viewent) + { + add = 72.0f - (lightcolor[0] + lightcolor[1] + lightcolor[2]); + if (add > 0.0f) + { + lightcolor[0] += add / 3.0f; + lightcolor[1] += add / 3.0f; + lightcolor[2] += add / 3.0f; + } + } + + // minimum light value on players (8) + if (currententity > cl_entities && currententity <= cl_entities + cl.maxclients) + { + add = 24.0f - (lightcolor[0] + lightcolor[1] + lightcolor[2]); + if (add > 0.0f) + { + lightcolor[0] += add / 3.0f; + lightcolor[1] += add / 3.0f; + lightcolor[2] += add / 3.0f; + } + } + + // clamp lighting so it doesn't overbright as much (96) + if (overbright) + { + add = 288.0f / (lightcolor[0] + lightcolor[1] + lightcolor[2]); + if (add < 1.0f) + VectorScale(lightcolor, add, lightcolor); + } + + //hack up the brightness when fullbrights but no overbrights (256) + if (gl_fullbrights.value && !gl_overbright_models.value) + if (e->model->flags & MOD_FBRIGHTHACK) + { + lightcolor[0] = 256.0f; + lightcolor[1] = 256.0f; + lightcolor[2] = 256.0f; + } + + quantizedangle = ((int)(e->angles[1] * (SHADEDOT_QUANT / 360.0))) & (SHADEDOT_QUANT - 1); + +//ericw -- shadevector is passed to the shader to compute shadedots inside the +//shader, see GLAlias_CreateShaders() + radiansangle = (quantizedangle / 16.0) * 2.0 * 3.14159; + shadevector[0] = cos(-radiansangle); + shadevector[1] = sin(-radiansangle); + shadevector[2] = 1; + VectorNormalize(shadevector); +//ericw -- + + shadedots = r_avertexnormal_dots[quantizedangle]; + VectorScale (lightcolor, 1.0f / 200.0f, lightcolor); +} + +/* +================= +R_DrawAliasModel -- johnfitz -- almost completely rewritten +================= +*/ +void R_DrawAliasModel (entity_t *e) +{ + aliashdr_t *paliashdr; + int anim, skinnum; + gltexture_t *tx, *fb; + lerpdata_t lerpdata; + qboolean alphatest = !!(e->model->flags & MF_HOLEY); + float fovscale = 1.0f; + + // + // setup pose/lerp data -- do it first so we don't miss updates due to culling + // + paliashdr = (aliashdr_t *)Mod_Extradata (e->model); + R_SetupAliasFrame (paliashdr, e->frame, &lerpdata); + R_SetupEntityTransform (e, &lerpdata); + + // + // cull it + // + if (R_CullModelForEntity(e)) + return; + + // + // transform it + // + if (e == &cl.viewent && scr_fov.value > 90.f && cl_gun_fovscale.value) + fovscale = tan(scr_fov.value * (0.5f * M_PI / 180.f)); + + glPushMatrix (); + R_RotateForEntity (lerpdata.origin, lerpdata.angles, e->scale); + glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1] * fovscale, paliashdr->scale_origin[2] * fovscale); + glScalef (paliashdr->scale[0], paliashdr->scale[1] * fovscale, paliashdr->scale[2] * fovscale); + + // + // random stuff + // + if (gl_smoothmodels.value && !r_drawflat_cheatsafe) + glShadeModel (GL_SMOOTH); + if (gl_affinemodels.value) + glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + overbright = !!gl_overbright_models.value; + shading = true; + + // + // set up for alpha blending + // + if (r_drawflat_cheatsafe || r_lightmap_cheatsafe) //no alpha in drawflat or lightmap mode + entalpha = 1; + else + entalpha = ENTALPHA_DECODE(e->alpha); + if (entalpha == 0) + goto cleanup; + if (entalpha < 1) + { + if (!gl_texture_env_combine) overbright = false; //overbright can't be done in a single pass without combiners + glDepthMask(GL_FALSE); + glEnable(GL_BLEND); + } + else if (alphatest) + glEnable (GL_ALPHA_TEST); + + // + // set up lighting + // + rs_aliaspolys += paliashdr->numtris; + R_SetupAliasLighting (e); + + // + // set up textures + // + GL_DisableMultitexture(); + anim = (int)(cl.time*10) & 3; + skinnum = e->skinnum; + if ((skinnum >= paliashdr->numskins) || (skinnum < 0)) + { + Con_DPrintf ("R_DrawAliasModel: no such skin # %d for '%s'\n", skinnum, e->model->name); + // ericw -- display skin 0 for winquake compatibility + skinnum = 0; + } + tx = paliashdr->gltextures[skinnum][anim]; + fb = paliashdr->fbtextures[skinnum][anim]; + if (e->colormap != vid.colormap && !gl_nocolors.value) + { + if ((uintptr_t)e >= (uintptr_t)&cl_entities[1] && (uintptr_t)e <= (uintptr_t)&cl_entities[cl.maxclients]) /* && !strcmp (currententity->model->name, "progs/player.mdl") */ + tx = playertextures[e - cl_entities - 1]; + } + if (!gl_fullbrights.value) + fb = NULL; + + // + // draw it + // + if (r_drawflat_cheatsafe) + { + glDisable (GL_TEXTURE_2D); + GL_DrawAliasFrame (paliashdr, lerpdata); + glEnable (GL_TEXTURE_2D); + srand((int) (cl.time * 1000)); //restore randomness + } + else if (r_fullbright_cheatsafe) + { + GL_Bind (tx); + shading = false; + glColor4f(1,1,1,entalpha); + GL_DrawAliasFrame (paliashdr, lerpdata); + if (fb) + { + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_Bind(fb); + glEnable(GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + glDepthMask(GL_FALSE); + glColor3f(entalpha,entalpha,entalpha); + Fog_StartAdditive (); + GL_DrawAliasFrame (paliashdr, lerpdata); + Fog_StopAdditive (); + glDepthMask(GL_TRUE); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_BLEND); + } + } + else if (r_lightmap_cheatsafe) + { + glDisable (GL_TEXTURE_2D); + shading = false; + glColor3f(1,1,1); + GL_DrawAliasFrame (paliashdr, lerpdata); + glEnable (GL_TEXTURE_2D); + } +// call fast path if possible. if the shader compliation failed for some reason, +// r_alias_program will be 0. + else if (r_alias_program != 0) + { + GL_DrawAliasFrame_GLSL (paliashdr, lerpdata, tx, fb); + } + else if (overbright) + { + if (gl_texture_env_combine && gl_mtexable && gl_texture_env_add && fb) //case 1: everything in one pass + { + GL_Bind (tx); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT); + glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE); + glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE); + glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PRIMARY_COLOR_EXT); + glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 2.0f); + GL_EnableMultitexture(); // selects TEXTURE1 + GL_Bind (fb); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); + glEnable(GL_BLEND); + GL_DrawAliasFrame (paliashdr, lerpdata); + glDisable(GL_BLEND); + GL_DisableMultitexture(); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + else if (gl_texture_env_combine) //case 2: overbright in one pass, then fullbright pass + { + // first pass + GL_Bind(tx); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT); + glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE); + glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE); + glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PRIMARY_COLOR_EXT); + glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 2.0f); + GL_DrawAliasFrame (paliashdr, lerpdata); + glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 1.0f); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + // second pass + if (fb) + { + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_Bind(fb); + glEnable(GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + glDepthMask(GL_FALSE); + shading = false; + glColor3f(entalpha,entalpha,entalpha); + Fog_StartAdditive (); + GL_DrawAliasFrame (paliashdr, lerpdata); + Fog_StopAdditive (); + glDepthMask(GL_TRUE); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_BLEND); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + } + else //case 3: overbright in two passes, then fullbright pass + { + // first pass + GL_Bind(tx); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_DrawAliasFrame (paliashdr, lerpdata); + // second pass -- additive with black fog, to double the object colors but not the fog color + glEnable(GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + glDepthMask(GL_FALSE); + Fog_StartAdditive (); + GL_DrawAliasFrame (paliashdr, lerpdata); + Fog_StopAdditive (); + glDepthMask(GL_TRUE); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_BLEND); + // third pass + if (fb) + { + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_Bind(fb); + glEnable(GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + glDepthMask(GL_FALSE); + shading = false; + glColor3f(entalpha,entalpha,entalpha); + Fog_StartAdditive (); + GL_DrawAliasFrame (paliashdr, lerpdata); + Fog_StopAdditive (); + glDepthMask(GL_TRUE); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_BLEND); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + } + } + else + { + if (gl_mtexable && gl_texture_env_add && fb) //case 4: fullbright mask using multitexture + { + GL_DisableMultitexture(); // selects TEXTURE0 + GL_Bind (tx); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_EnableMultitexture(); // selects TEXTURE1 + GL_Bind (fb); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); + glEnable(GL_BLEND); + GL_DrawAliasFrame (paliashdr, lerpdata); + glDisable(GL_BLEND); + GL_DisableMultitexture(); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + else //case 5: fullbright mask without multitexture + { + // first pass + GL_Bind(tx); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_DrawAliasFrame (paliashdr, lerpdata); + // second pass + if (fb) + { + GL_Bind(fb); + glEnable(GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + glDepthMask(GL_FALSE); + shading = false; + glColor3f(entalpha,entalpha,entalpha); + Fog_StartAdditive (); + GL_DrawAliasFrame (paliashdr, lerpdata); + Fog_StopAdditive (); + glDepthMask(GL_TRUE); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_BLEND); + } + } + } + +cleanup: + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glShadeModel (GL_FLAT); + glDepthMask(GL_TRUE); + glDisable(GL_BLEND); + if (alphatest) + glDisable (GL_ALPHA_TEST); + glColor3f(1,1,1); + glPopMatrix (); +} + +//johnfitz -- values for shadow matrix +#define SHADOW_SKEW_X -0.7 //skew along x axis. -0.7 to mimic glquake shadows +#define SHADOW_SKEW_Y 0 //skew along y axis. 0 to mimic glquake shadows +#define SHADOW_VSCALE 0 //0=completely flat +#define SHADOW_HEIGHT 0.1 //how far above the floor to render the shadow +//johnfitz + +/* +============= +GL_DrawAliasShadow -- johnfitz -- rewritten + +TODO: orient shadow onto "lightplane" (a global mplane_t*) +============= +*/ +void GL_DrawAliasShadow (entity_t *e) +{ + float shadowmatrix[16] = {1, 0, 0, 0, + 0, 1, 0, 0, + SHADOW_SKEW_X, SHADOW_SKEW_Y, SHADOW_VSCALE, 0, + 0, 0, SHADOW_HEIGHT, 1}; + float lheight; + aliashdr_t *paliashdr; + lerpdata_t lerpdata; + + if (R_CullModelForEntity(e)) + return; + + if (e == &cl.viewent || e->model->flags & MOD_NOSHADOW) + return; + + entalpha = ENTALPHA_DECODE(e->alpha); + if (entalpha == 0) return; + + paliashdr = (aliashdr_t *)Mod_Extradata (e->model); + R_SetupAliasFrame (paliashdr, e->frame, &lerpdata); + R_SetupEntityTransform (e, &lerpdata); + R_LightPoint (e->origin); + lheight = currententity->origin[2] - lightspot[2]; + +// set up matrix + glPushMatrix (); + glTranslatef (lerpdata.origin[0], lerpdata.origin[1], lerpdata.origin[2]); + glTranslatef (0,0,-lheight); + glMultMatrixf (shadowmatrix); + glTranslatef (0,0,lheight); + glRotatef (lerpdata.angles[1], 0, 0, 1); + glRotatef (-lerpdata.angles[0], 0, 1, 0); + glRotatef (lerpdata.angles[2], 1, 0, 0); + glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1], paliashdr->scale_origin[2]); + glScalef (paliashdr->scale[0], paliashdr->scale[1], paliashdr->scale[2]); + +// draw it + glDepthMask(GL_FALSE); + glEnable (GL_BLEND); + GL_DisableMultitexture (); + glDisable (GL_TEXTURE_2D); + shading = false; + glColor4f(0,0,0,entalpha * 0.5); + GL_DrawAliasFrame (paliashdr, lerpdata); + glEnable (GL_TEXTURE_2D); + glDisable (GL_BLEND); + glDepthMask(GL_TRUE); + +//clean up + glPopMatrix (); +} + +/* +================= +R_DrawAliasModel_ShowTris -- johnfitz +================= +*/ +void R_DrawAliasModel_ShowTris (entity_t *e) +{ + aliashdr_t *paliashdr; + lerpdata_t lerpdata; + float fovscale = 1.0f; + + if (R_CullModelForEntity(e)) + return; + + paliashdr = (aliashdr_t *)Mod_Extradata (e->model); + R_SetupAliasFrame (paliashdr, e->frame, &lerpdata); + R_SetupEntityTransform (e, &lerpdata); + + if (e == &cl.viewent && scr_fov.value > 90.f && cl_gun_fovscale.value) + fovscale = tan(scr_fov.value * (0.5f * M_PI / 180.f)); + + glPushMatrix (); + R_RotateForEntity (lerpdata.origin,lerpdata.angles, e->scale); + glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1] * fovscale, paliashdr->scale_origin[2] * fovscale); + glScalef (paliashdr->scale[0], paliashdr->scale[1] * fovscale, paliashdr->scale[2] * fovscale); + + shading = false; + glColor3f(1,1,1); + GL_DrawAliasFrame (paliashdr, lerpdata); + + glPopMatrix (); +} diff --git a/Quake/r_brush.c b/Quake/r_brush.c new file mode 100644 index 0000000..89936fa --- /dev/null +++ b/Quake/r_brush.c @@ -0,0 +1,1028 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// r_brush.c: brush model rendering. renamed from r_surf.c + +#include "quakedef.h" + +extern cvar_t gl_fullbrights, r_drawflat, gl_overbright, r_oldwater; //johnfitz +extern cvar_t gl_zfix; // QuakeSpasm z-fighting fix + +int gl_lightmap_format; +int lightmap_bytes; + +#define MAX_SANITY_LIGHTMAPS (1u<<20) +struct lightmap_s *lightmaps; +int lightmap_count; + +static int allocated[LMBLOCK_WIDTH]; +static int last_lightmap_allocated; + +static unsigned blocklights[LMBLOCK_WIDTH*LMBLOCK_HEIGHT*3]; //johnfitz -- was 18*18, added lit support (*3) and loosened surface extents maximum (LMBLOCK_WIDTH*LMBLOCK_HEIGHT) + + +/* +=============== +R_TextureAnimation -- johnfitz -- added "frame" param to eliminate use of "currententity" global + +Returns the proper texture for a given time and base texture +=============== +*/ +texture_t *R_TextureAnimation (texture_t *base, int frame) +{ + int relative; + int count; + + if (frame) + if (base->alternate_anims) + base = base->alternate_anims; + + if (!base->anim_total) + return base; + + relative = (int)(cl.time*10) % base->anim_total; + + count = 0; + while (base->anim_min > relative || base->anim_max <= relative) + { + base = base->anim_next; + if (!base) + Sys_Error ("R_TextureAnimation: broken cycle"); + if (++count > 100) + Sys_Error ("R_TextureAnimation: infinite cycle"); + } + + return base; +} + +/* +================ +DrawGLPoly +================ +*/ +void DrawGLPoly (glpoly_t *p) +{ + float *v; + int i; + + glBegin (GL_POLYGON); + v = p->verts[0]; + for (i=0 ; i<p->numverts ; i++, v+= VERTEXSIZE) + { + glTexCoord2f (v[3], v[4]); + glVertex3fv (v); + } + glEnd (); +} + +/* +================ +DrawGLTriangleFan -- johnfitz -- like DrawGLPoly but for r_showtris +================ +*/ +void DrawGLTriangleFan (glpoly_t *p) +{ + float *v; + int i; + + glBegin (GL_TRIANGLE_FAN); + v = p->verts[0]; + for (i=0 ; i<p->numverts ; i++, v+= VERTEXSIZE) + { + glVertex3fv (v); + } + glEnd (); +} + +/* +============================================================= + + BRUSH MODELS + +============================================================= +*/ + +/* +================= +R_DrawBrushModel +================= +*/ +void R_DrawBrushModel (entity_t *e) +{ + int i, k; + msurface_t *psurf; + float dot; + mplane_t *pplane; + qmodel_t *clmodel; + + if (R_CullModelForEntity(e)) + return; + + currententity = e; + clmodel = e->model; + + VectorSubtract (r_refdef.vieworg, e->origin, modelorg); + if (e->angles[0] || e->angles[1] || e->angles[2]) + { + vec3_t temp; + vec3_t forward, right, up; + + VectorCopy (modelorg, temp); + AngleVectors (e->angles, forward, right, up); + modelorg[0] = DotProduct (temp, forward); + modelorg[1] = -DotProduct (temp, right); + modelorg[2] = DotProduct (temp, up); + } + + psurf = &clmodel->surfaces[clmodel->firstmodelsurface]; + +// calculate dynamic lighting for bmodel if it's not an +// instanced model + if (clmodel->firstmodelsurface != 0 && !gl_flashblend.value) + { + for (k=0 ; k<MAX_DLIGHTS ; k++) + { + if ((cl_dlights[k].die < cl.time) || + (!cl_dlights[k].radius)) + continue; + + R_MarkLights (&cl_dlights[k], k, + clmodel->nodes + clmodel->hulls[0].firstclipnode); + } + } + + glPushMatrix (); + e->angles[0] = -e->angles[0]; // stupid quake bug + if (gl_zfix.value) + { + e->origin[0] -= DIST_EPSILON; + e->origin[1] -= DIST_EPSILON; + e->origin[2] -= DIST_EPSILON; + } + R_RotateForEntity (e->origin, e->angles, e->scale); + if (gl_zfix.value) + { + e->origin[0] += DIST_EPSILON; + e->origin[1] += DIST_EPSILON; + e->origin[2] += DIST_EPSILON; + } + e->angles[0] = -e->angles[0]; // stupid quake bug + + R_ClearTextureChains (clmodel, chain_model); + for (i=0 ; i<clmodel->nummodelsurfaces ; i++, psurf++) + { + pplane = psurf->plane; + dot = DotProduct (modelorg, pplane->normal) - pplane->dist; + if (((psurf->flags & SURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) || + (!(psurf->flags & SURF_PLANEBACK) && (dot > BACKFACE_EPSILON))) + { + R_ChainSurface (psurf, chain_model); + R_RenderDynamicLightmaps(psurf); + rs_brushpolys++; + } + } + + R_DrawTextureChains (clmodel, e, chain_model); + R_DrawTextureChains_Water (clmodel, e, chain_model); + + glPopMatrix (); +} + +/* +================= +R_DrawBrushModel_ShowTris -- johnfitz +================= +*/ +void R_DrawBrushModel_ShowTris (entity_t *e) +{ + int i; + msurface_t *psurf; + float dot; + mplane_t *pplane; + qmodel_t *clmodel; + glpoly_t *p; + + if (R_CullModelForEntity(e)) + return; + + currententity = e; + clmodel = e->model; + + VectorSubtract (r_refdef.vieworg, e->origin, modelorg); + if (e->angles[0] || e->angles[1] || e->angles[2]) + { + vec3_t temp; + vec3_t forward, right, up; + + VectorCopy (modelorg, temp); + AngleVectors (e->angles, forward, right, up); + modelorg[0] = DotProduct (temp, forward); + modelorg[1] = -DotProduct (temp, right); + modelorg[2] = DotProduct (temp, up); + } + + psurf = &clmodel->surfaces[clmodel->firstmodelsurface]; + + glPushMatrix (); + e->angles[0] = -e->angles[0]; // stupid quake bug + R_RotateForEntity (e->origin, e->angles, e->scale); + e->angles[0] = -e->angles[0]; // stupid quake bug + + // + // draw it + // + for (i=0 ; i<clmodel->nummodelsurfaces ; i++, psurf++) + { + pplane = psurf->plane; + dot = DotProduct (modelorg, pplane->normal) - pplane->dist; + if (((psurf->flags & SURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) || + (!(psurf->flags & SURF_PLANEBACK) && (dot > BACKFACE_EPSILON))) + { + if ((psurf->flags & SURF_DRAWTURB) && r_oldwater.value) + for (p = psurf->polys->next; p; p = p->next) + DrawGLTriangleFan (p); + else + DrawGLTriangleFan (psurf->polys); + } + } + + glPopMatrix (); +} + +/* +============================================================= + + LIGHTMAPS + +============================================================= +*/ + +/* +================ +R_RenderDynamicLightmaps +called during rendering +================ +*/ +void R_RenderDynamicLightmaps (msurface_t *fa) +{ + byte *base; + int maps; + glRect_t *theRect; + int smax, tmax; + + if (fa->flags & SURF_DRAWTILED) //johnfitz -- not a lightmapped surface + return; + + // add to lightmap chain + fa->polys->chain = lightmaps[fa->lightmaptexturenum].polys; + lightmaps[fa->lightmaptexturenum].polys = fa->polys; + + // check for lightmap modification + for (maps=0; maps < MAXLIGHTMAPS && fa->styles[maps] != 255; maps++) + if (d_lightstylevalue[fa->styles[maps]] != fa->cached_light[maps]) + goto dynamic; + + if (fa->dlightframe == r_framecount // dynamic this frame + || fa->cached_dlight) // dynamic previously + { +dynamic: + if (r_dynamic.value) + { + struct lightmap_s *lm = &lightmaps[fa->lightmaptexturenum]; + lm->modified = true; + theRect = &lm->rectchange; + if (fa->light_t < theRect->t) { + if (theRect->h) + theRect->h += theRect->t - fa->light_t; + theRect->t = fa->light_t; + } + if (fa->light_s < theRect->l) { + if (theRect->w) + theRect->w += theRect->l - fa->light_s; + theRect->l = fa->light_s; + } + smax = (fa->extents[0]>>4)+1; + tmax = (fa->extents[1]>>4)+1; + if ((theRect->w + theRect->l) < (fa->light_s + smax)) + theRect->w = (fa->light_s-theRect->l)+smax; + if ((theRect->h + theRect->t) < (fa->light_t + tmax)) + theRect->h = (fa->light_t-theRect->t)+tmax; + base = lm->data; + base += fa->light_t * LMBLOCK_WIDTH * lightmap_bytes + fa->light_s * lightmap_bytes; + R_BuildLightMap (fa, base, LMBLOCK_WIDTH*lightmap_bytes); + } + } +} + +/* +======================== +AllocBlock -- returns a texture number and the position inside it +======================== +*/ +int AllocBlock (int w, int h, int *x, int *y) +{ + int i, j; + int best, best2; + int texnum; + + // ericw -- rather than searching starting at lightmap 0 every time, + // start at the last lightmap we allocated a surface in. + // This makes AllocBlock much faster on large levels (can shave off 3+ seconds + // of load time on a level with 180 lightmaps), at a cost of not quite packing + // lightmaps as tightly vs. not doing this (uses ~5% more lightmaps) + for (texnum=last_lightmap_allocated ; texnum<MAX_SANITY_LIGHTMAPS ; texnum++) + { + if (texnum == lightmap_count) + { + lightmap_count++; + lightmaps = (struct lightmap_s *) realloc(lightmaps, sizeof(*lightmaps)*lightmap_count); + memset(&lightmaps[texnum], 0, sizeof(lightmaps[texnum])); + lightmaps[texnum].data = (byte *) calloc(1, 4*LMBLOCK_WIDTH*LMBLOCK_HEIGHT); + //as we're only tracking one texture, we don't need multiple copies of allocated any more. + memset(allocated, 0, sizeof(allocated)); + } + best = LMBLOCK_HEIGHT; + + for (i=0 ; i<LMBLOCK_WIDTH-w ; i++) + { + best2 = 0; + + for (j=0 ; j<w ; j++) + { + if (allocated[i+j] >= best) + break; + if (allocated[i+j] > best2) + best2 = allocated[i+j]; + } + if (j == w) + { // this is a valid spot + *x = i; + *y = best = best2; + } + } + + if (best + h > LMBLOCK_HEIGHT) + continue; + + for (i=0 ; i<w ; i++) + allocated[*x + i] = best + h; + + last_lightmap_allocated = texnum; + return texnum; + } + + Sys_Error ("AllocBlock: full"); + return 0; //johnfitz -- shut up compiler +} + + +static mvertex_t *r_pcurrentvertbase; +static qmodel_t *currentmodel; + +/* +======================== +GL_CreateSurfaceLightmap +======================== +*/ +void GL_CreateSurfaceLightmap (msurface_t *surf) +{ + int smax, tmax; + byte *base; + + if (surf->flags & SURF_DRAWTILED) + { + surf->lightmaptexturenum = -1; + return; + } + + smax = (surf->extents[0]>>4)+1; + tmax = (surf->extents[1]>>4)+1; + + surf->lightmaptexturenum = AllocBlock (smax, tmax, &surf->light_s, &surf->light_t); + base = lightmaps[surf->lightmaptexturenum].data; + base += (surf->light_t * LMBLOCK_WIDTH + surf->light_s) * lightmap_bytes; + R_BuildLightMap (surf, base, LMBLOCK_WIDTH*lightmap_bytes); +} + +/* +================ +BuildSurfaceDisplayList -- called at level load time +================ +*/ +void BuildSurfaceDisplayList (msurface_t *fa) +{ + int i, lindex, lnumverts; + medge_t *pedges, *r_pedge; + float *vec; + float s, t, s0, t0, sdiv, tdiv; + glpoly_t *poly; + +// reconstruct the polygon + pedges = currentmodel->edges; + lnumverts = fa->numedges; + + // + // draw texture + // + poly = (glpoly_t *) Hunk_Alloc (sizeof(glpoly_t) + (lnumverts-4) * VERTEXSIZE*sizeof(float)); + poly->next = fa->polys; + fa->polys = poly; + poly->numverts = lnumverts; + + if (fa->flags & SURF_DRAWTURB) + { + // match Mod_PolyForUnlitSurface + s0 = t0 = 0.f; + sdiv = tdiv = 128.f; + } + else + { + s0 = fa->texinfo->vecs[0][3]; + t0 = fa->texinfo->vecs[1][3]; + sdiv = fa->texinfo->texture->width; + tdiv = fa->texinfo->texture->height; + } + + for (i=0 ; i<lnumverts ; i++) + { + lindex = currentmodel->surfedges[fa->firstedge + i]; + + if (lindex > 0) + { + r_pedge = &pedges[lindex]; + vec = r_pcurrentvertbase[r_pedge->v[0]].position; + } + else + { + r_pedge = &pedges[-lindex]; + vec = r_pcurrentvertbase[r_pedge->v[1]].position; + } + s = DotProduct (vec, fa->texinfo->vecs[0]) + s0; + s /= sdiv; + + t = DotProduct (vec, fa->texinfo->vecs[1]) + t0; + t /= tdiv; + + VectorCopy (vec, poly->verts[i]); + poly->verts[i][3] = s; + poly->verts[i][4] = t; + + // Q64 RERELEASE texture shift + if (fa->texinfo->texture->shift > 0) + { + poly->verts[i][3] /= ( 2 * fa->texinfo->texture->shift); + poly->verts[i][4] /= ( 2 * fa->texinfo->texture->shift); + } + + // + // lightmap texture coordinates + // + s = DotProduct (vec, fa->texinfo->vecs[0]) + fa->texinfo->vecs[0][3]; + s -= fa->texturemins[0]; + s += fa->light_s*16; + s += 8; + s /= LMBLOCK_WIDTH*16; //fa->texinfo->texture->width; + + t = DotProduct (vec, fa->texinfo->vecs[1]) + fa->texinfo->vecs[1][3]; + t -= fa->texturemins[1]; + t += fa->light_t*16; + t += 8; + t /= LMBLOCK_HEIGHT*16; //fa->texinfo->texture->height; + + poly->verts[i][5] = s; + poly->verts[i][6] = t; + } + + //johnfitz -- removed gl_keeptjunctions code + + poly->numverts = lnumverts; + + // support r_oldwater 1 on lit water + if (fa->flags & SURF_DRAWTURB) + GL_SubdivideSurface (fa); +} + +/* +================== +GL_BuildLightmaps -- called at level load time + +Builds the lightmap texture +with all the surfaces from all brush models +================== +*/ +void GL_BuildLightmaps (void) +{ + char name[24]; + int i, j; + struct lightmap_s *lm; + qmodel_t *m; + + r_framecount = 1; // no dlightcache + + //Spike -- wipe out all the lightmap data (johnfitz -- the gltexture objects were already freed by Mod_ClearAll) + for (i=0; i < lightmap_count; i++) + free(lightmaps[i].data); + free(lightmaps); + lightmaps = NULL; + last_lightmap_allocated = 0; + lightmap_count = 0; + + gl_lightmap_format = GL_RGBA;//FIXME: hardcoded for now! + + switch (gl_lightmap_format) + { + case GL_RGBA: + lightmap_bytes = 4; + break; + case GL_BGRA: + lightmap_bytes = 4; + break; + default: + Sys_Error ("GL_BuildLightmaps: bad lightmap format"); + } + + for (j=1 ; j<MAX_MODELS ; j++) + { + m = cl.model_precache[j]; + if (!m) + break; + if (m->name[0] == '*') + continue; + r_pcurrentvertbase = m->vertexes; + currentmodel = m; + for (i=0 ; i<m->numsurfaces ; i++) + { + //johnfitz -- rewritten to use SURF_DRAWTILED instead of the sky/water flags + if (m->surfaces[i].flags & SURF_DRAWTILED) + continue; + GL_CreateSurfaceLightmap (m->surfaces + i); + BuildSurfaceDisplayList (m->surfaces + i); + //johnfitz + } + } + + // + // upload all lightmaps that were filled + // + for (i=0; i<lightmap_count; i++) + { + lm = &lightmaps[i]; + lm->modified = false; + lm->rectchange.l = LMBLOCK_WIDTH; + lm->rectchange.t = LMBLOCK_HEIGHT; + lm->rectchange.w = 0; + lm->rectchange.h = 0; + + //johnfitz -- use texture manager + sprintf(name, "lightmap%07i",i); + lm->texture = TexMgr_LoadImage (cl.worldmodel, name, LMBLOCK_WIDTH, LMBLOCK_HEIGHT, + SRC_LIGHTMAP, lm->data, "", (src_offset_t)lm->data, TEXPREF_LINEAR | TEXPREF_NOPICMIP); + //johnfitz + } + + //johnfitz -- warn about exceeding old limits + //GLQuake limit was 64 textures of 128x128. Estimate how many 128x128 textures we would need + //given that we are using lightmap_count of LMBLOCK_WIDTH x LMBLOCK_HEIGHT + i = lightmap_count * ((LMBLOCK_WIDTH / 128) * (LMBLOCK_HEIGHT / 128)); + if (i > 64) + Con_DWarning("%i lightmaps exceeds standard limit of 64.\n",i); + //johnfitz +} + +/* +============================================================= + + VBO support + +============================================================= +*/ + +GLuint gl_bmodel_vbo = 0; + +void GL_DeleteBModelVertexBuffer (void) +{ + if (!(gl_vbo_able && gl_mtexable && gl_max_texture_units >= 3)) + return; + + GL_DeleteBuffersFunc (1, &gl_bmodel_vbo); + gl_bmodel_vbo = 0; + + GL_ClearBufferBindings (); +} + +/* +================== +GL_BuildBModelVertexBuffer + +Deletes gl_bmodel_vbo if it already exists, then rebuilds it with all +surfaces from world + all brush models +================== +*/ +void GL_BuildBModelVertexBuffer (void) +{ + unsigned int numverts, varray_bytes, varray_index; + int i, j; + qmodel_t *m; + float *varray; + + if (!(gl_vbo_able && gl_mtexable && gl_max_texture_units >= 3)) + return; + +// ask GL for a name for our VBO + GL_DeleteBuffersFunc (1, &gl_bmodel_vbo); + GL_GenBuffersFunc (1, &gl_bmodel_vbo); + +// count all verts in all models + numverts = 0; + for (j=1 ; j<MAX_MODELS ; j++) + { + m = cl.model_precache[j]; + if (!m || m->name[0] == '*' || m->type != mod_brush) + continue; + + for (i=0 ; i<m->numsurfaces ; i++) + { + numverts += m->surfaces[i].numedges; + } + } + +// build vertex array + varray_bytes = VERTEXSIZE * sizeof(float) * numverts; + varray = (float *) malloc (varray_bytes); + varray_index = 0; + + for (j=1 ; j<MAX_MODELS ; j++) + { + m = cl.model_precache[j]; + if (!m || m->name[0] == '*' || m->type != mod_brush) + continue; + + for (i=0 ; i<m->numsurfaces ; i++) + { + msurface_t *s = &m->surfaces[i]; + s->vbo_firstvert = varray_index; + memcpy (&varray[VERTEXSIZE * varray_index], s->polys->verts, VERTEXSIZE * sizeof(float) * s->numedges); + varray_index += s->numedges; + } + } + +// upload to GPU + GL_BindBufferFunc (GL_ARRAY_BUFFER, gl_bmodel_vbo); + GL_BufferDataFunc (GL_ARRAY_BUFFER, varray_bytes, varray, GL_STATIC_DRAW); + free (varray); + +// invalidate the cached bindings + GL_ClearBufferBindings (); +} + +/* +=============== +R_AddDynamicLights +=============== +*/ +void R_AddDynamicLights (msurface_t *surf) +{ + int lnum; + int sd, td; + float dist, rad, minlight; + vec3_t impact, local; + int s, t; + int i; + int smax, tmax; + mtexinfo_t *tex; + //johnfitz -- lit support via lordhavoc + float cred, cgreen, cblue, brightness; + unsigned *bl; + //johnfitz + + smax = (surf->extents[0]>>4)+1; + tmax = (surf->extents[1]>>4)+1; + tex = surf->texinfo; + + for (lnum=0 ; lnum<MAX_DLIGHTS ; lnum++) + { + if (! (surf->dlightbits[lnum >> 5] & (1U << (lnum & 31)))) + continue; // not lit by this light + + rad = cl_dlights[lnum].radius; + dist = DotProduct (cl_dlights[lnum].origin, surf->plane->normal) - + surf->plane->dist; + rad -= fabs(dist); + minlight = cl_dlights[lnum].minlight; + if (rad < minlight) + continue; + minlight = rad - minlight; + + for (i=0 ; i<3 ; i++) + { + impact[i] = cl_dlights[lnum].origin[i] - + surf->plane->normal[i]*dist; + } + + local[0] = DotProduct (impact, tex->vecs[0]) + tex->vecs[0][3]; + local[1] = DotProduct (impact, tex->vecs[1]) + tex->vecs[1][3]; + + local[0] -= surf->texturemins[0]; + local[1] -= surf->texturemins[1]; + + //johnfitz -- lit support via lordhavoc + bl = blocklights; + cred = cl_dlights[lnum].color[0] * 256.0f; + cgreen = cl_dlights[lnum].color[1] * 256.0f; + cblue = cl_dlights[lnum].color[2] * 256.0f; + //johnfitz + for (t = 0 ; t<tmax ; t++) + { + td = local[1] - t*16; + if (td < 0) + td = -td; + for (s=0 ; s<smax ; s++) + { + sd = local[0] - s*16; + if (sd < 0) + sd = -sd; + if (sd > td) + dist = sd + (td>>1); + else + dist = td + (sd>>1); + if (dist < minlight) + //johnfitz -- lit support via lordhavoc + { + brightness = rad - dist; + bl[0] += (int) (brightness * cred); + bl[1] += (int) (brightness * cgreen); + bl[2] += (int) (brightness * cblue); + } + bl += 3; + //johnfitz + } + } + } +} + + +/* +=============== +R_BuildLightMap -- johnfitz -- revised for lit support via lordhavoc + +Combine and scale multiple lightmaps into the 8.8 format in blocklights +=============== +*/ +void R_BuildLightMap (msurface_t *surf, byte *dest, int stride) +{ + const int overbright = !!gl_overbright.value; + const int wide10bits = !!r_lightmapwide.value; + + int smax, tmax; + unsigned r, g, b; + int i, j, size; + byte *lightmap; + unsigned scale; + int maps; + unsigned *bl; + + surf->cached_dlight = (surf->dlightframe == r_framecount); + + smax = (surf->extents[0]>>4)+1; + tmax = (surf->extents[1]>>4)+1; + size = smax*tmax; + lightmap = surf->samples; + + if (cl.worldmodel->lightdata) + { + // clear to no light + memset (&blocklights[0], 0, size * 3 * sizeof (unsigned int)); //johnfitz -- lit support via lordhavoc + + // add all the lightmaps + if (lightmap) + { + for (maps = 0 ; maps < MAXLIGHTMAPS && surf->styles[maps] != 255 ; + maps++) + { + scale = d_lightstylevalue[surf->styles[maps]]; + surf->cached_light[maps] = scale; // 8.8 fraction + //johnfitz -- lit support via lordhavoc + bl = blocklights; + for (i=0 ; i<size ; i++) + { + *bl++ += *lightmap++ * scale; + *bl++ += *lightmap++ * scale; + *bl++ += *lightmap++ * scale; + } + //johnfitz + } + } + + // add all the dynamic lights + if (surf->dlightframe == r_framecount) + R_AddDynamicLights (surf); + } + else + { + // set to full bright if no light data + memset (&blocklights[0], 255, size * 3 * sizeof (unsigned int)); //johnfitz -- lit support via lordhavoc + } + +// bound, invert, and shift +// store: + switch (gl_lightmap_format) + { + case GL_RGBA: + stride -= smax * 4; + bl = blocklights; + for (i=0 ; i<tmax ; i++, dest += stride) + { + for (j=0 ; j<smax ; j++) + { + if (overbright) + { + r = *bl++ >> 8; + g = *bl++ >> 8; + b = *bl++ >> 8; + } + else + { + r = *bl++ >> 7; + g = *bl++ >> 7; + b = *bl++ >> 7; + if (wide10bits) { + // artifically clamp to 255 so gl_overbright 0 renders as expected in the wide10bits case + r = (r > 255) ? 255 : r; + g = (g > 255) ? 255 : g; + b = (b > 255) ? 255 : b; + goto loc0; + } + } + if (wide10bits) + { + r = (r > 1023)? 1023 : r; + g = (g > 1023)? 1023 : g; + b = (b > 1023)? 1023 : b; + loc0: + *(unsigned int*)dest = (r<<22) | (g<<12) | (b<<2) | 3; + dest += 4; + } + else + { + *dest++ = (r > 255)? 255 : r; + *dest++ = (g > 255)? 255 : g; + *dest++ = (b > 255)? 255 : b; + *dest++ = 255; + } + } + } + break; + case GL_BGRA: + stride -= smax * 4; + bl = blocklights; + for (i=0 ; i<tmax ; i++, dest += stride) + { + for (j=0 ; j<smax ; j++) + { + if (overbright) + { + r = *bl++ >> 8; + g = *bl++ >> 8; + b = *bl++ >> 8; + } + else + { + r = *bl++ >> 7; + g = *bl++ >> 7; + b = *bl++ >> 7; + if (wide10bits) { + // artifically clamp to 255 so gl_overbright 0 renders as expected in the wide10bits case + r = (r > 255) ? 255 : r; + g = (g > 255) ? 255 : g; + b = (b > 255) ? 255 : b; + goto loc1; + } + } + if (wide10bits) + { + r = (r > 1023)? 1023 : r; + g = (g > 1023)? 1023 : g; + b = (b > 1023)? 1023 : b; + loc1: + *(unsigned int*)dest = (b<<22) | (g<<12) | (r<<2) | 3; + dest += 4; + } + else + { + *dest++ = (b > 255)? 255 : b; + *dest++ = (g > 255)? 255 : g; + *dest++ = (r > 255)? 255 : r; + *dest++ = 255; + } + } + } + break; + default: + Sys_Error ("R_BuildLightMap: bad lightmap format"); + } +} + +/* +=============== +R_UploadLightmap -- johnfitz -- uploads the modified lightmap to opengl if necessary + +assumes lightmap texture is already bound +=============== +*/ +static void R_UploadLightmap(int lmap) +{ + const int wide10bits = !!r_lightmapwide.value; + const GLenum type = wide10bits ? + GL_UNSIGNED_INT_10_10_10_2 : GL_UNSIGNED_BYTE; + struct lightmap_s *lm = &lightmaps[lmap]; + + if (!lm->modified) + return; + + lm->modified = false; + + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, lm->rectchange.t, LMBLOCK_WIDTH, lm->rectchange.h, gl_lightmap_format, + type, lm->data + lm->rectchange.t*LMBLOCK_WIDTH*lightmap_bytes); + lm->rectchange.l = LMBLOCK_WIDTH; + lm->rectchange.t = LMBLOCK_HEIGHT; + lm->rectchange.h = 0; + lm->rectchange.w = 0; + + rs_dynamiclightmaps++; +} + +void R_UploadLightmaps (void) +{ + int lmap; + + for (lmap = 0; lmap < lightmap_count; lmap++) + { + if (!lightmaps[lmap].modified) + continue; + + GL_Bind (lightmaps[lmap].texture); + R_UploadLightmap(lmap); + } +} + +/* +================ +R_RebuildAllLightmaps -- johnfitz -- called when gl_overbright gets toggled +================ +*/ +void R_RebuildAllLightmaps (void) +{ + const int wide10bits = !!r_lightmapwide.value; + const GLenum type = wide10bits ? + GL_UNSIGNED_INT_10_10_10_2 : GL_UNSIGNED_BYTE; + int i, j; + qmodel_t *mod; + msurface_t *fa; + byte *base; + + if (!cl.worldmodel) // is this the correct test? + return; + + //for each surface in each model, rebuild lightmap with new scale + for (i=1; i<MAX_MODELS; i++) + { + if (!(mod = cl.model_precache[i])) + continue; + fa = &mod->surfaces[mod->firstmodelsurface]; + for (j=0; j<mod->nummodelsurfaces; j++, fa++) + { + if (fa->flags & SURF_DRAWTILED) + continue; + base = lightmaps[fa->lightmaptexturenum].data; + base += fa->light_t * LMBLOCK_WIDTH * lightmap_bytes + fa->light_s * lightmap_bytes; + R_BuildLightMap (fa, base, LMBLOCK_WIDTH*lightmap_bytes); + } + } + + //for each lightmap, upload it + for (i=0; i<lightmap_count; i++) + { + GL_Bind (lightmaps[i].texture); + glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, LMBLOCK_WIDTH, LMBLOCK_HEIGHT, gl_lightmap_format, + type, lightmaps[i].data); + } +} diff --git a/Quake/r_part.c b/Quake/r_part.c new file mode 100644 index 0000000..32e067a --- /dev/null +++ b/Quake/r_part.c @@ -0,0 +1,1020 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "quakedef.h" + +#define ABSOLUTE_MAX_PARTICLES 32768 // default max # of particles at one time +#define ABSOLUTE_MIN_PARTICLES 512 // no fewer than this no matter what's + // on the command line +#define DEFAULT_NUM_PARTICLES 16384 + +static int ramp1[8] = {0x6f, 0x6d, 0x6b, 0x69, 0x67, 0x65, 0x63, 0x61}; +static int ramp2[8] = {0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x6a, 0x68, 0x66}; +static int ramp3[8] = {0x6d, 0x6b, 6, 5, 4, 3}; + +static particle_t *active_particles, *free_particles, *particles; + +static int r_numparticles; + +static gltexture_t *particletexture, *particletexture1, *particletexture2, *particletexture3; //johnfitz +static float texturescalefactor; //johnfitz -- compensate for apparent size of different particle textures + +cvar_t r_particles = {"r_particles","1", CVAR_ARCHIVE}; //johnfitz +cvar_t r_quadparticles = {"r_quadparticles","1", CVAR_ARCHIVE}; //johnfitz + +/* +=============== +R_ParticleTextureLookup -- johnfitz -- generate nice antialiased 32x32 circle for particles +=============== +*/ +int R_ParticleTextureLookup (int x, int y, int sharpness) +{ + int r; //distance from point x,y to circle origin, squared + int a; //alpha value to return + + x -= 16; + y -= 16; + r = x * x + y * y; + r = r > 255 ? 255 : r; + a = sharpness * (255 - r); + a = q_min(a,255); + return a; +} + +/* +=============== +R_InitParticleTextures -- johnfitz -- rewritten +=============== +*/ +void R_InitParticleTextures (void) +{ + int x,y; + static byte particle1_data[64*64*4]; + static byte particle2_data[2*2*4]; + static byte particle3_data[64*64*4]; + byte *dst; + + // particle texture 1 -- circle + dst = particle1_data; + for (x=0 ; x<64 ; x++) + for (y=0 ; y<64 ; y++) + { + *dst++ = 255; + *dst++ = 255; + *dst++ = 255; + *dst++ = R_ParticleTextureLookup(x, y, 8); + } + particletexture1 = TexMgr_LoadImage (NULL, "particle1", 64, 64, SRC_RGBA, particle1_data, "", (src_offset_t)particle1_data, TEXPREF_PERSIST | TEXPREF_ALPHA | TEXPREF_LINEAR); + + // particle texture 2 -- square + dst = particle2_data; + for (x=0 ; x<2 ; x++) + for (y=0 ; y<2 ; y++) + { + *dst++ = 255; + *dst++ = 255; + *dst++ = 255; + *dst++ = x || y ? 0 : 255; + } + particletexture2 = TexMgr_LoadImage (NULL, "particle2", 2, 2, SRC_RGBA, particle2_data, "", (src_offset_t)particle2_data, TEXPREF_PERSIST | TEXPREF_ALPHA | TEXPREF_NEAREST); + + // particle texture 3 -- blob + dst = particle3_data; + for (x=0 ; x<64 ; x++) + for (y=0 ; y<64 ; y++) + { + *dst++ = 255; + *dst++ = 255; + *dst++ = 255; + *dst++ = R_ParticleTextureLookup(x, y, 2); + } + particletexture3 = TexMgr_LoadImage (NULL, "particle3", 64, 64, SRC_RGBA, particle3_data, "", (src_offset_t)particle3_data, TEXPREF_PERSIST | TEXPREF_ALPHA | TEXPREF_LINEAR); + + //set default + particletexture = particletexture1; + texturescalefactor = 1.27; +} + +/* +=============== +R_SetParticleTexture_f -- johnfitz +=============== +*/ +static void R_SetParticleTexture_f (cvar_t *var) +{ + switch ((int)(r_particles.value)) + { + case 1: + particletexture = particletexture1; + texturescalefactor = 1.27; + break; + case 2: + particletexture = particletexture2; + texturescalefactor = 1.0; + break; +// case 3: +// particletexture = particletexture3; +// texturescalefactor = 1.5; +// break; + } +} + +/* +=============== +R_InitParticles +=============== +*/ +void R_InitParticles (void) +{ + int i; + + i = COM_CheckParm ("-particles"); + + if (i && i < com_argc - 1) + { + r_numparticles = atoi(com_argv[i + 1]); + if (r_numparticles < ABSOLUTE_MIN_PARTICLES) + r_numparticles = ABSOLUTE_MIN_PARTICLES; + else if (r_numparticles > ABSOLUTE_MAX_PARTICLES) + r_numparticles = ABSOLUTE_MAX_PARTICLES; + } + else + { + r_numparticles = DEFAULT_NUM_PARTICLES; + } + + particles = (particle_t *) + Hunk_AllocName (r_numparticles * sizeof(particle_t), "particles"); + + Cvar_RegisterVariable (&r_particles); //johnfitz + Cvar_SetCallback (&r_particles, R_SetParticleTexture_f); + Cvar_RegisterVariable (&r_quadparticles); //johnfitz + + R_InitParticleTextures (); //johnfitz +} + +/* +=============== +R_EntityParticles +=============== +*/ +static vec3_t avelocities[NUMVERTEXNORMALS]; +static float beamlength = 16; + +void R_EntityParticles (entity_t *ent) +{ + int i; + particle_t *p; + float angle; + float sp, sy, cp, cy; +// float sr, cr; +// int count; + vec3_t forward; + float dist; + + dist = 64; +// count = 50; + + if (!avelocities[0][0]) + { + for (i = 0; i < NUMVERTEXNORMALS; i++) + { + avelocities[i][0] = (rand() & 255) * 0.01; + avelocities[i][1] = (rand() & 255) * 0.01; + avelocities[i][2] = (rand() & 255) * 0.01; + } + } + + for (i = 0; i < NUMVERTEXNORMALS; i++) + { + angle = cl.time * avelocities[i][0]; + sy = sin(angle); + cy = cos(angle); + angle = cl.time * avelocities[i][1]; + sp = sin(angle); + cp = cos(angle); + angle = cl.time * avelocities[i][2]; + // sr = sin(angle); + // cr = cos(angle); + + forward[0] = cp*cy; + forward[1] = cp*sy; + forward[2] = -sp; + + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = cl.time + 0.01; + p->color = 0x6f; + p->type = pt_explode; + + p->org[0] = ent->origin[0] + r_avertexnormals[i][0]*dist + forward[0]*beamlength; + p->org[1] = ent->origin[1] + r_avertexnormals[i][1]*dist + forward[1]*beamlength; + p->org[2] = ent->origin[2] + r_avertexnormals[i][2]*dist + forward[2]*beamlength; + } +} + +/* +=============== +R_ClearParticles +=============== +*/ +void R_ClearParticles (void) +{ + int i; + + free_particles = &particles[0]; + active_particles = NULL; + + for (i=0 ;i<r_numparticles ; i++) + particles[i].next = &particles[i+1]; + particles[r_numparticles-1].next = NULL; +} + +/* +=============== +R_ReadPointFile_f +=============== +*/ +void R_ReadPointFile_f (void) +{ + FILE *f; + vec3_t org; + int r; + int c; + particle_t *p; + char name[MAX_QPATH]; + + if (cls.state != ca_connected) + return; // need an active map. + + q_snprintf (name, sizeof(name), "maps/%s.pts", cl.mapname); + + COM_FOpenFile (name, &f, NULL); + if (!f) + { + Con_Printf ("couldn't open %s\n", name); + return; + } + + Con_Printf ("Reading %s...\n", name); + c = 0; + org[0] = org[1] = org[2] = 0; // silence pesky compiler warnings + for ( ;; ) + { + r = fscanf (f,"%f %f %f\n", &org[0], &org[1], &org[2]); + if (r != 3) + break; + c++; + + if (!free_particles) + { + Con_Printf ("Not enough free particles\n"); + break; + } + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = 99999; + p->color = (-c)&15; + p->type = pt_static; + VectorCopy (vec3_origin, p->vel); + VectorCopy (org, p->org); + } + + fclose (f); + Con_Printf ("%i points read\n", c); +} + +/* +=============== +R_ParseParticleEffect + +Parse an effect out of the server message +=============== +*/ +void R_ParseParticleEffect (void) +{ + vec3_t org, dir; + int i, count, msgcount, color; + + for (i=0 ; i<3 ; i++) + org[i] = MSG_ReadCoord (cl.protocolflags); + for (i=0 ; i<3 ; i++) + dir[i] = MSG_ReadChar () * (1.0/16); + msgcount = MSG_ReadByte (); + color = MSG_ReadByte (); + + if (msgcount == 255) + count = 1024; + else + count = msgcount; + + R_RunParticleEffect (org, dir, color, count); +} + +/* +=============== +R_ParticleExplosion +=============== +*/ +void R_ParticleExplosion (vec3_t org) +{ + int i, j; + particle_t *p; + + for (i=0 ; i<1024 ; i++) + { + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = cl.time + 5; + p->color = ramp1[0]; + p->ramp = rand()&3; + if (i & 1) + { + p->type = pt_explode; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } + else + { + p->type = pt_explode2; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } + } +} + +/* +=============== +R_ParticleExplosion2 +=============== +*/ +void R_ParticleExplosion2 (vec3_t org, int colorStart, int colorLength) +{ + int i, j; + particle_t *p; + int colorMod = 0; + + for (i=0; i<512; i++) + { + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = cl.time + 0.3; + p->color = colorStart + (colorMod % colorLength); + colorMod++; + + p->type = pt_blob; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } +} + +/* +=============== +R_BlobExplosion +=============== +*/ +void R_BlobExplosion (vec3_t org) +{ + int i, j; + particle_t *p; + + for (i=0 ; i<1024 ; i++) + { + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = cl.time + 1 + (rand()&8)*0.05; + + if (i & 1) + { + p->type = pt_blob; + p->color = 66 + rand()%6; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } + else + { + p->type = pt_blob2; + p->color = 150 + rand()%6; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } + } +} + +/* +=============== +R_RunParticleEffect +=============== +*/ +void R_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count) +{ + int i, j; + particle_t *p; + + for (i=0 ; i<count ; i++) + { + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + if (count == 1024) + { // rocket explosion + p->die = cl.time + 5; + p->color = ramp1[0]; + p->ramp = rand()&3; + if (i & 1) + { + p->type = pt_explode; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } + else + { + p->type = pt_explode2; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()%32)-16); + p->vel[j] = (rand()%512)-256; + } + } + } + else + { + p->die = cl.time + 0.1*(rand()%5); + p->color = (color&~7) + (rand()&7); + p->type = pt_slowgrav; + for (j=0 ; j<3 ; j++) + { + p->org[j] = org[j] + ((rand()&15)-8); + p->vel[j] = dir[j]*15;// + (rand()%300)-150; + } + } + } +} + +/* +=============== +R_LavaSplash +=============== +*/ +void R_LavaSplash (vec3_t org) +{ + int i, j, k; + particle_t *p; + float vel; + vec3_t dir; + + for (i=-16 ; i<16 ; i++) + for (j=-16 ; j<16 ; j++) + for (k=0 ; k<1 ; k++) + { + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = cl.time + 2 + (rand()&31) * 0.02; + p->color = 224 + (rand()&7); + p->type = pt_slowgrav; + + dir[0] = j*8 + (rand()&7); + dir[1] = i*8 + (rand()&7); + dir[2] = 256; + + p->org[0] = org[0] + dir[0]; + p->org[1] = org[1] + dir[1]; + p->org[2] = org[2] + (rand()&63); + + VectorNormalize (dir); + vel = 50 + (rand()&63); + VectorScale (dir, vel, p->vel); + } +} + +/* +=============== +R_TeleportSplash +=============== +*/ +void R_TeleportSplash (vec3_t org) +{ + int i, j, k; + particle_t *p; + float vel; + vec3_t dir; + + for (i=-16 ; i<16 ; i+=4) + { + for (j=-16 ; j<16 ; j+=4) + { + for (k=-24 ; k<32 ; k+=4) + { + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + p->die = cl.time + 0.2 + (rand()&7) * 0.02; + p->color = 7 + (rand()&7); + p->type = pt_slowgrav; + + dir[0] = j*8; + dir[1] = i*8; + dir[2] = k*8; + + p->org[0] = org[0] + i + (rand()&3); + p->org[1] = org[1] + j + (rand()&3); + p->org[2] = org[2] + k + (rand()&3); + + VectorNormalize (dir); + vel = 50 + (rand()&63); + VectorScale (dir, vel, p->vel); + } + } + } +} + +/* +=============== +R_RocketTrail + +FIXME -- rename function and use #defined types instead of numbers +=============== +*/ +void R_RocketTrail (vec3_t start, vec3_t end, int type) +{ + vec3_t vec; + float len; + int j; + particle_t *p; + int dec; + static int tracercount; + + VectorSubtract (end, start, vec); + len = VectorNormalize (vec); + if (type < 128) + dec = 3; + else + { + dec = 1; + type -= 128; + } + + while (len > 0) + { + len -= dec; + + if (!free_particles) + return; + p = free_particles; + free_particles = p->next; + p->next = active_particles; + active_particles = p; + + VectorCopy (vec3_origin, p->vel); + p->die = cl.time + 2; + + switch (type) + { + case 0: // rocket trail + p->ramp = (rand()&3); + p->color = ramp3[(int)p->ramp]; + p->type = pt_fire; + for (j=0 ; j<3 ; j++) + p->org[j] = start[j] + ((rand()%6)-3); + break; + + case 1: // smoke smoke + p->ramp = (rand()&3) + 2; + p->color = ramp3[(int)p->ramp]; + p->type = pt_fire; + for (j=0 ; j<3 ; j++) + p->org[j] = start[j] + ((rand()%6)-3); + break; + + case 2: // blood + p->type = pt_grav; + p->color = 67 + (rand()&3); + for (j=0 ; j<3 ; j++) + p->org[j] = start[j] + ((rand()%6)-3); + break; + + case 3: + case 5: // tracer + p->die = cl.time + 0.5; + p->type = pt_static; + if (type == 3) + p->color = 52 + ((tracercount&4)<<1); + else + p->color = 230 + ((tracercount&4)<<1); + + tracercount++; + + VectorCopy (start, p->org); + if (tracercount & 1) + { + p->vel[0] = 30*vec[1]; + p->vel[1] = 30*-vec[0]; + } + else + { + p->vel[0] = 30*-vec[1]; + p->vel[1] = 30*vec[0]; + } + break; + + case 4: // slight blood + p->type = pt_grav; + p->color = 67 + (rand()&3); + for (j=0 ; j<3 ; j++) + p->org[j] = start[j] + ((rand()%6)-3); + len -= 3; + break; + + case 6: // voor trail + p->color = 9*16 + 8 + (rand()&3); + p->type = pt_static; + p->die = cl.time + 0.3; + for (j=0 ; j<3 ; j++) + p->org[j] = start[j] + ((rand()&15)-8); + break; + } + + VectorAdd (start, vec, start); + } +} + +/* +=============== +CL_RunParticles -- johnfitz -- all the particle behavior, separated from R_DrawParticles +=============== +*/ +void CL_RunParticles (void) +{ + particle_t *p, *kill; + int i; + float time1, time2, time3, dvel, frametime, grav; + extern cvar_t sv_gravity; + + frametime = cl.time - cl.oldtime; + time3 = frametime * 15; + time2 = frametime * 10; + time1 = frametime * 5; + grav = frametime * sv_gravity.value * 0.05; + dvel = 4*frametime; + + for ( ;; ) + { + kill = active_particles; + if (kill && kill->die < cl.time) + { + active_particles = kill->next; + kill->next = free_particles; + free_particles = kill; + continue; + } + break; + } + + for (p=active_particles ; p ; p=p->next) + { + for ( ;; ) + { + kill = p->next; + if (kill && kill->die < cl.time) + { + p->next = kill->next; + kill->next = free_particles; + free_particles = kill; + continue; + } + break; + } + + p->org[0] += p->vel[0]*frametime; + p->org[1] += p->vel[1]*frametime; + p->org[2] += p->vel[2]*frametime; + + switch (p->type) + { + case pt_static: + break; + case pt_fire: + p->ramp += time1; + if (p->ramp >= 6) + p->die = -1; + else + p->color = ramp3[(int)p->ramp]; + p->vel[2] += grav; + break; + + case pt_explode: + p->ramp += time2; + if (p->ramp >=8) + p->die = -1; + else + p->color = ramp1[(int)p->ramp]; + for (i=0 ; i<3 ; i++) + p->vel[i] += p->vel[i]*dvel; + p->vel[2] -= grav; + break; + + case pt_explode2: + p->ramp += time3; + if (p->ramp >=8) + p->die = -1; + else + p->color = ramp2[(int)p->ramp]; + for (i=0 ; i<3 ; i++) + p->vel[i] -= p->vel[i]*frametime; + p->vel[2] -= grav; + break; + + case pt_blob: + for (i=0 ; i<3 ; i++) + p->vel[i] += p->vel[i]*dvel; + p->vel[2] -= grav; + break; + + case pt_blob2: + for (i=0 ; i<2 ; i++) + p->vel[i] -= p->vel[i]*dvel; + p->vel[2] -= grav; + break; + + case pt_grav: + case pt_slowgrav: + p->vel[2] -= grav; + break; + } + } +} + +/* +=============== +R_DrawParticles -- johnfitz -- moved all non-drawing code to CL_RunParticles +=============== +*/ +void R_DrawParticles (void) +{ + particle_t *p; + float scale; + vec3_t up, right, p_up, p_right, p_upright; //johnfitz -- p_ vectors + GLubyte color[4], *c; //johnfitz -- particle transparency + extern cvar_t r_particles; //johnfitz + //float alpha; //johnfitz -- particle transparency + + if (!r_particles.value) + return; + + //ericw -- avoid empty glBegin(),glEnd() pair below; causes issues on AMD + if (!active_particles) + return; + + VectorScale (vup, 1.5, up); + VectorScale (vright, 1.5, right); + + GL_Bind(particletexture); + glEnable (GL_BLEND); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glDepthMask (GL_FALSE); //johnfitz -- fix for particle z-buffer bug + + if (r_quadparticles.value) //johnitz -- quads save fillrate + { + glBegin (GL_QUADS); + for (p=active_particles ; p ; p=p->next) + { + // hack a scale up to keep particles from disapearing + scale = (p->org[0] - r_origin[0]) * vpn[0] + + (p->org[1] - r_origin[1]) * vpn[1] + + (p->org[2] - r_origin[2]) * vpn[2]; + if (scale < 20) + scale = 1 + 0.08; //johnfitz -- added .08 to be consistent + else + scale = 1 + scale * 0.004; + + scale /= 2.0; //quad is half the size of triangle + + scale *= texturescalefactor; //johnfitz -- compensate for apparent size of different particle textures + + //johnfitz -- particle transparency and fade out + c = (GLubyte *) &d_8to24table[(int)p->color]; + color[0] = c[0]; + color[1] = c[1]; + color[2] = c[2]; + //alpha = CLAMP(0, p->die + 0.5 - cl.time, 1); + color[3] = 255; //(int)(alpha * 255); + glColor4ubv(color); + //johnfitz + + glTexCoord2f (0,0); + glVertex3fv (p->org); + + glTexCoord2f (0.5,0); + VectorMA (p->org, scale, up, p_up); + glVertex3fv (p_up); + + glTexCoord2f (0.5,0.5); + VectorMA (p_up, scale, right, p_upright); + glVertex3fv (p_upright); + + glTexCoord2f (0,0.5); + VectorMA (p->org, scale, right, p_right); + glVertex3fv (p_right); + } + glEnd (); + } + else //johnitz -- triangles save verts + { + glBegin (GL_TRIANGLES); + for (p=active_particles ; p ; p=p->next) + { + // hack a scale up to keep particles from disapearing + scale = (p->org[0] - r_origin[0]) * vpn[0] + + (p->org[1] - r_origin[1]) * vpn[1] + + (p->org[2] - r_origin[2]) * vpn[2]; + if (scale < 20) + scale = 1 + 0.08; //johnfitz -- added .08 to be consistent + else + scale = 1 + scale * 0.004; + + scale *= texturescalefactor; //johnfitz -- compensate for apparent size of different particle textures + + //johnfitz -- particle transparency and fade out + c = (GLubyte *) &d_8to24table[(int)p->color]; + color[0] = c[0]; + color[1] = c[1]; + color[2] = c[2]; + //alpha = CLAMP(0, p->die + 0.5 - cl.time, 1); + color[3] = 255; //(int)(alpha * 255); + glColor4ubv(color); + //johnfitz + + glTexCoord2f (0,0); + glVertex3fv (p->org); + + glTexCoord2f (1,0); + VectorMA (p->org, scale, up, p_up); + glVertex3fv (p_up); + + glTexCoord2f (0,1); + VectorMA (p->org, scale, right, p_right); + glVertex3fv (p_right); + } + glEnd (); + } + + glDepthMask (GL_TRUE); //johnfitz -- fix for particle z-buffer bug + glDisable (GL_BLEND); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glColor3f(1,1,1); +} + + +/* +=============== +R_DrawParticles_ShowTris -- johnfitz +=============== +*/ +void R_DrawParticles_ShowTris (void) +{ + particle_t *p; + float scale; + vec3_t up, right, p_up, p_right, p_upright; + extern cvar_t r_particles; + + if (!r_particles.value) + return; + + VectorScale (vup, 1.5, up); + VectorScale (vright, 1.5, right); + + if (r_quadparticles.value) + { + for (p=active_particles ; p ; p=p->next) + { + glBegin (GL_TRIANGLE_FAN); + + // hack a scale up to keep particles from disapearing + scale = (p->org[0] - r_origin[0]) * vpn[0] + + (p->org[1] - r_origin[1]) * vpn[1] + + (p->org[2] - r_origin[2]) * vpn[2]; + if (scale < 20) + scale = 1 + 0.08; //johnfitz -- added .08 to be consistent + else + scale = 1 + scale * 0.004; + + scale /= 2.0; //quad is half the size of triangle + + scale *= texturescalefactor; //compensate for apparent size of different particle textures + + glVertex3fv (p->org); + + VectorMA (p->org, scale, up, p_up); + glVertex3fv (p_up); + + VectorMA (p_up, scale, right, p_upright); + glVertex3fv (p_upright); + + VectorMA (p->org, scale, right, p_right); + glVertex3fv (p_right); + + glEnd (); + } + } + else + { + glBegin (GL_TRIANGLES); + for (p=active_particles ; p ; p=p->next) + { + // hack a scale up to keep particles from disapearing + scale = (p->org[0] - r_origin[0]) * vpn[0] + + (p->org[1] - r_origin[1]) * vpn[1] + + (p->org[2] - r_origin[2]) * vpn[2]; + if (scale < 20) + scale = 1 + 0.08; //johnfitz -- added .08 to be consistent + else + scale = 1 + scale * 0.004; + + scale *= texturescalefactor; //compensate for apparent size of different particle textures + + glVertex3fv (p->org); + + VectorMA (p->org, scale, up, p_up); + glVertex3fv (p_up); + + VectorMA (p->org, scale, right, p_right); + glVertex3fv (p_right); + } + glEnd (); + } +} + diff --git a/Quake/r_sprite.c b/Quake/r_sprite.c new file mode 100644 index 0000000..cca9aad --- /dev/null +++ b/Quake/r_sprite.c @@ -0,0 +1,196 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +//r_sprite.c -- sprite model rendering + +#include "quakedef.h" + +/* +================ +R_GetSpriteFrame +================ +*/ +mspriteframe_t *R_GetSpriteFrame (entity_t *currentent) +{ + msprite_t *psprite; + mspritegroup_t *pspritegroup; + mspriteframe_t *pspriteframe; + int i, numframes, frame; + float *pintervals, fullinterval, targettime, time; + + psprite = (msprite_t *) currentent->model->cache.data; + frame = currentent->frame; + + if ((frame >= psprite->numframes) || (frame < 0)) + { + Con_DPrintf ("R_DrawSprite: no such frame %d for '%s'\n", frame, currentent->model->name); + frame = 0; + } + + if (psprite->frames[frame].type == SPR_SINGLE) + { + pspriteframe = psprite->frames[frame].frameptr; + } + else if (psprite->frames[frame].type == SPR_ANGLED) + { + // erysdren - angled sprites code backported from FTEQW + vec3_t axis[3]; + AngleVectors(currententity->angles, axis[0], axis[1], axis[2]); + { + float f = DotProduct(vpn, axis[0]); + float r = DotProduct(vright, axis[0]); + int dir = (atan2(r, f)+1.125*M_PI)*(4/M_PI); + pspritegroup = (mspritegroup_t *)psprite->frames[frame].frameptr; + pspriteframe = pspritegroup->frames[dir&7]; + } + } + else + { + pspritegroup = (mspritegroup_t *)psprite->frames[frame].frameptr; + pintervals = pspritegroup->intervals; + numframes = pspritegroup->numframes; + fullinterval = pintervals[numframes-1]; + + time = cl.time + currentent->syncbase; + + // when loading in Mod_LoadSpriteGroup, we guaranteed all interval values + // are positive, so we don't have to worry about division by 0 + targettime = time - ((int)(time / fullinterval)) * fullinterval; + + for (i = 0; i < (numframes-1); i++) + { + if (pintervals[i] > targettime) + break; + } + + pspriteframe = pspritegroup->frames[i]; + } + + return pspriteframe; +} + +/* +================= +R_DrawSpriteModel -- johnfitz -- rewritten: now supports all orientations +================= +*/ +void R_DrawSpriteModel (entity_t *e) +{ + vec3_t point, v_forward, v_right, v_up; + msprite_t *psprite; + mspriteframe_t *frame; + float *s_up, *s_right; + float angle, sr, cr; + float scale = ENTSCALE_DECODE(e->scale); + + frame = R_GetSpriteFrame (e); + psprite = (msprite_t *) currententity->model->cache.data; + + switch(psprite->type) + { + case SPR_VP_PARALLEL_UPRIGHT: //faces view plane, up is towards the heavens + v_up[0] = 0; + v_up[1] = 0; + v_up[2] = 1; + CrossProduct(vpn, v_up, v_right); + VectorNormalizeFast(v_right); + s_up = v_up; + s_right = v_right; + break; + case SPR_FACING_UPRIGHT: //faces camera origin, up is towards the heavens + VectorSubtract(currententity->origin, r_origin, v_forward); + v_forward[2] = 0; + VectorNormalizeFast(v_forward); + v_right[0] = v_forward[1]; + v_right[1] = -v_forward[0]; + v_right[2] = 0; + v_up[0] = 0; + v_up[1] = 0; + v_up[2] = 1; + s_up = v_up; + s_right = v_right; + break; + case SPR_VP_PARALLEL: //faces view plane, up is towards the top of the screen + s_up = vup; + s_right = vright; + break; + case SPR_ORIENTED: //pitch yaw roll are independent of camera + AngleVectors (currententity->angles, v_forward, v_right, v_up); + s_up = v_up; + s_right = v_right; + break; + case SPR_VP_PARALLEL_ORIENTED: //faces view plane, but obeys roll value + angle = currententity->angles[ROLL] * M_PI_DIV_180; + sr = sin(angle); + cr = cos(angle); + v_right[0] = vright[0] * cr + vup[0] * sr; + v_right[1] = vright[1] * cr + vup[1] * sr; + v_right[2] = vright[2] * cr + vup[2] * sr; + v_up[0] = vright[0] * -sr + vup[0] * cr; + v_up[1] = vright[1] * -sr + vup[1] * cr; + v_up[2] = vright[2] * -sr + vup[2] * cr; + s_up = v_up; + s_right = v_right; + break; + default: + return; + } + + //johnfitz: offset decals + if (psprite->type == SPR_ORIENTED) + GL_PolygonOffset (OFFSET_DECAL); + + glColor3f (1,1,1); + + GL_DisableMultitexture(); + + GL_Bind(frame->gltexture); + + glEnable (GL_ALPHA_TEST); + glBegin (GL_TRIANGLE_FAN); //was GL_QUADS, but changed to support r_showtris + + glTexCoord2f (0, frame->tmax); + VectorMA (e->origin, frame->down * scale, s_up, point); + VectorMA (point, frame->left * scale, s_right, point); + glVertex3fv (point); + + glTexCoord2f (0, 0); + VectorMA (e->origin, frame->up * scale, s_up, point); + VectorMA (point, frame->left * scale, s_right, point); + glVertex3fv (point); + + glTexCoord2f (frame->smax, 0); + VectorMA (e->origin, frame->up * scale, s_up, point); + VectorMA (point, frame->right * scale, s_right, point); + glVertex3fv (point); + + glTexCoord2f (frame->smax, frame->tmax); + VectorMA (e->origin, frame->down * scale, s_up, point); + VectorMA (point, frame->right * scale, s_right, point); + glVertex3fv (point); + + glEnd (); + glDisable (GL_ALPHA_TEST); + + //johnfitz: offset decals + if (psprite->type == SPR_ORIENTED) + GL_PolygonOffset (OFFSET_NONE); +} diff --git a/Quake/r_world.c b/Quake/r_world.c new file mode 100644 index 0000000..22dd574 --- /dev/null +++ b/Quake/r_world.c @@ -0,0 +1,1329 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// r_world.c: world model rendering + +#include "quakedef.h" + +extern cvar_t gl_fullbrights, r_drawflat, gl_overbright, r_oldwater, r_oldskyleaf, r_showtris; //johnfitz + +byte *SV_FatPVS (vec3_t org, qmodel_t *worldmodel); + +//============================================================================== +// +// SETUP CHAINS +// +//============================================================================== + +/* +================ +R_ClearTextureChains -- ericw + +clears texture chains for all textures used by the given model, and also +clears the lightmap chains +================ +*/ +void R_ClearTextureChains (qmodel_t *mod, texchain_t chain) +{ + int i; + + // set all chains to null + for (i=0 ; i<mod->numtextures ; i++) + if (mod->textures[i]) + mod->textures[i]->texturechains[chain] = NULL; + + // clear lightmap chains + for (i=0 ; i<lightmap_count ; i++) + lightmaps[i].polys = NULL; +} + +/* +================ +R_ChainSurface -- ericw -- adds the given surface to its texture chain +================ +*/ +void R_ChainSurface (msurface_t *surf, texchain_t chain) +{ + surf->texturechain = surf->texinfo->texture->texturechains[chain]; + surf->texinfo->texture->texturechains[chain] = surf; +} + +/* +================ +R_BackFaceCull -- johnfitz -- returns true if the surface is facing away from vieworg +================ +*/ +qboolean R_BackFaceCull (msurface_t *surf) +{ + double dot; + + if (surf->plane->type < 3) + dot = r_refdef.vieworg[surf->plane->type] - surf->plane->dist; + else + dot = DotProduct (r_refdef.vieworg, surf->plane->normal) - surf->plane->dist; + + if ((dot < 0) ^ !!(surf->flags & SURF_PLANEBACK)) + return true; + + return false; +} + +/* +=============== +R_MarkSurfaces -- johnfitz -- mark surfaces based on PVS and rebuild texture chains +=============== +*/ +void R_MarkSurfaces (void) +{ + byte *vis; + mleaf_t *leaf; + msurface_t *surf, **mark; + int i, j; + qboolean nearwaterportal; + + // clear lightmap chains + for (i=0 ; i<lightmap_count ; i++) + lightmaps[i].polys = NULL; + + // check this leaf for water portals + // TODO: loop through all water surfs and use distance to leaf cullbox + nearwaterportal = false; + for (i=0, mark = r_viewleaf->firstmarksurface; i < r_viewleaf->nummarksurfaces; i++, mark++) + if ((*mark)->flags & SURF_DRAWTURB) + nearwaterportal = true; + + // choose vis data + if (r_novis.value || r_viewleaf->contents == CONTENTS_SOLID || r_viewleaf->contents == CONTENTS_SKY) + vis = Mod_NoVisPVS (cl.worldmodel); + else if (nearwaterportal) + vis = SV_FatPVS (r_origin, cl.worldmodel); + else + vis = Mod_LeafPVS (r_viewleaf, cl.worldmodel); + + r_visframecount++; + + // set all chains to null + for (i=0 ; i<cl.worldmodel->numtextures ; i++) + if (cl.worldmodel->textures[i]) + cl.worldmodel->textures[i]->texturechains[chain_world] = NULL; + + // iterate through leaves, marking surfaces + leaf = &cl.worldmodel->leafs[1]; + for (i=0 ; i<cl.worldmodel->numleafs ; i++, leaf++) + { + if (vis[i>>3] & (1<<(i&7))) + { + if (R_CullBox(leaf->minmaxs, leaf->minmaxs + 3)) + continue; + + if (r_oldskyleaf.value || leaf->contents != CONTENTS_SKY) + for (j=0, mark = leaf->firstmarksurface; j<leaf->nummarksurfaces; j++, mark++) + { + surf = *mark; + if (surf->visframe != r_visframecount) + { + surf->visframe = r_visframecount; + if (!R_CullBox(surf->mins, surf->maxs) && !R_BackFaceCull (surf)) + { + rs_brushpolys++; //count wpolys here + R_ChainSurface(surf, chain_world); + R_RenderDynamicLightmaps(surf); + if (surf->texinfo->texture->warpimage) + surf->texinfo->texture->update_warp = true; + } + } + } + + // add static models + if (leaf->efrags) + R_StoreEfrags (&leaf->efrags); + } + } +} + +//============================================================================== +// +// DRAW CHAINS +// +//============================================================================== + +/* +============= +R_BeginTransparentDrawing -- ericw +============= +*/ +static void R_BeginTransparentDrawing (float entalpha) +{ + if (entalpha < 1.0f) + { + glDepthMask (GL_FALSE); + glEnable (GL_BLEND); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glColor4f (1,1,1,entalpha); + } +} + +/* +============= +R_EndTransparentDrawing -- ericw +============= +*/ +static void R_EndTransparentDrawing (float entalpha) +{ + if (entalpha < 1.0f) + { + glDepthMask (GL_TRUE); + glDisable (GL_BLEND); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glColor3f (1, 1, 1); + } +} + +/* +================ +R_DrawTextureChains_ShowTris -- johnfitz +================ +*/ +void R_DrawTextureChains_ShowTris (qmodel_t *model, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + glpoly_t *p; + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + if (!t) + continue; + + if (r_oldwater.value && t->texturechains[chain] && (t->texturechains[chain]->flags & SURF_DRAWTURB)) + { + for (s = t->texturechains[chain]; s; s = s->texturechain) + for (p = s->polys->next; p; p = p->next) + { + DrawGLTriangleFan (p); + } + } + else + { + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + DrawGLTriangleFan (s->polys); + } + } + } +} + +/* +================ +R_DrawTextureChains_Drawflat -- johnfitz +================ +*/ +void R_DrawTextureChains_Drawflat (qmodel_t *model, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + glpoly_t *p; + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + if (!t) + continue; + + if (r_oldwater.value && t->texturechains[chain] && (t->texturechains[chain]->flags & SURF_DRAWTURB)) + { + for (s = t->texturechains[chain]; s; s = s->texturechain) + for (p = s->polys->next; p; p = p->next) + { + srand((unsigned int) (uintptr_t) p); + glColor3f (rand()%256/255.0, rand()%256/255.0, rand()%256/255.0); + DrawGLPoly (p); + rs_brushpasses++; + } + } + else + { + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + srand((unsigned int) (uintptr_t) s->polys); + glColor3f (rand()%256/255.0, rand()%256/255.0, rand()%256/255.0); + DrawGLPoly (s->polys); + rs_brushpasses++; + } + } + } + glColor3f (1,1,1); + srand ((int) (cl.time * 1000)); +} + +/* +================ +R_DrawTextureChains_Glow -- johnfitz +================ +*/ +void R_DrawTextureChains_Glow (qmodel_t *model, entity_t *ent, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + gltexture_t *glt; + qboolean bound; + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || !(glt = R_TextureAnimation(t, ent != NULL ? ent->frame : 0)->fullbright)) + continue; + + bound = false; + + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + GL_Bind (glt); + bound = true; + } + DrawGLPoly (s->polys); + rs_brushpasses++; + } + } +} + +//============================================================================== +// +// VBO SUPPORT +// +//============================================================================== + +static int R_NumTriangleIndicesForSurf (msurface_t *s) +{ + return 3 * (s->numedges - 2); +} + +/* +================ +R_TriangleIndicesForSurf + +Writes out the triangle indices needed to draw s as a triangle list. +The number of indices it will write is given by R_NumTriangleIndicesForSurf. +================ +*/ +static void R_TriangleIndicesForSurf (msurface_t *s, unsigned int *dest) +{ + int i; + for (i=2; i<s->numedges; i++) + { + *dest++ = s->vbo_firstvert; + *dest++ = s->vbo_firstvert + i - 1; + *dest++ = s->vbo_firstvert + i; + } +} + +#define MAX_BATCH_SIZE 4096 + +static unsigned int vbo_indices[MAX_BATCH_SIZE]; +static unsigned int num_vbo_indices; + +/* +================ +R_ClearBatch +================ +*/ +static void R_ClearBatch (void) +{ + num_vbo_indices = 0; +} + +/* +================ +R_FlushBatch + +Draw the current batch if non-empty and clears it, ready for more R_BatchSurface calls. +================ +*/ +static void R_FlushBatch (void) +{ + if (num_vbo_indices > 0) + { + glDrawElements (GL_TRIANGLES, num_vbo_indices, GL_UNSIGNED_INT, vbo_indices); + num_vbo_indices = 0; + } +} + +/* +================ +R_BatchSurface + +Add the surface to the current batch, or just draw it immediately if we're not +using VBOs. +================ +*/ +static void R_BatchSurface (msurface_t *s) +{ + int num_surf_indices = R_NumTriangleIndicesForSurf (s); + + if (num_surf_indices <= 0) + { + // Con_DWarning ("bad numedges for surface\n"); + return; + } + + if (num_vbo_indices + num_surf_indices > MAX_BATCH_SIZE) + R_FlushBatch(); + + R_TriangleIndicesForSurf (s, &vbo_indices[num_vbo_indices]); + num_vbo_indices += num_surf_indices; +} + +/* +================ +R_DrawTextureChains_Multitexture -- johnfitz +================ +*/ +void R_DrawTextureChains_Multitexture (qmodel_t *model, entity_t *ent, texchain_t chain) +{ + int i, j; + msurface_t *s; + texture_t *t; + float *v; + qboolean bound; + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || t->texturechains[chain]->flags & (SURF_DRAWTURB | SURF_DRAWTILED | SURF_NOTEXTURE)) + continue; + + bound = false; + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + GL_Bind ((R_TextureAnimation(t, ent != NULL ? ent->frame : 0))->gltexture); + + if (t->texturechains[chain]->flags & SURF_DRAWFENCE) + glEnable (GL_ALPHA_TEST); // Flip alpha test back on + + GL_EnableMultitexture(); // selects TEXTURE1 + bound = true; + } + GL_Bind (lightmaps[s->lightmaptexturenum].texture); + glBegin(GL_POLYGON); + v = s->polys->verts[0]; + for (j=0 ; j<s->polys->numverts ; j++, v+= VERTEXSIZE) + { + GL_MTexCoord2fFunc (GL_TEXTURE0_ARB, v[3], v[4]); + GL_MTexCoord2fFunc (GL_TEXTURE1_ARB, v[5], v[6]); + glVertex3fv (v); + } + glEnd (); + rs_brushpasses++; + } + GL_DisableMultitexture(); // selects TEXTURE0 + + if (bound && t->texturechains[chain]->flags & SURF_DRAWFENCE) + glDisable (GL_ALPHA_TEST); // Flip alpha test back off + } +} + +/* +================ +R_DrawTextureChains_NoTexture -- johnfitz + +draws surfs whose textures were missing from the BSP +================ +*/ +void R_DrawTextureChains_NoTexture (qmodel_t *model, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + qboolean bound; + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || !(t->texturechains[chain]->flags & SURF_NOTEXTURE)) + continue; + + bound = false; + + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + GL_Bind (t->gltexture); + bound = true; + } + DrawGLPoly (s->polys); + rs_brushpasses++; + } + } +} + +/* +================ +R_DrawTextureChains_TextureOnly -- johnfitz +================ +*/ +void R_DrawTextureChains_TextureOnly (qmodel_t *model, entity_t *ent, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + qboolean bound; + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || t->texturechains[chain]->flags & (SURF_DRAWTURB | SURF_DRAWSKY)) + continue; + + bound = false; + + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + GL_Bind ((R_TextureAnimation(t, ent != NULL ? ent->frame : 0))->gltexture); + + if (t->texturechains[chain]->flags & SURF_DRAWFENCE) + glEnable (GL_ALPHA_TEST); // Flip alpha test back on + + bound = true; + } + DrawGLPoly (s->polys); + rs_brushpasses++; + } + + if (bound && t->texturechains[chain]->flags & SURF_DRAWFENCE) + glDisable (GL_ALPHA_TEST); // Flip alpha test back off + } +} + +/* +================ +GL_WaterAlphaForEntitySurface -- ericw + +Returns the water alpha to use for the entity and surface combination. +================ +*/ +float GL_WaterAlphaForEntitySurface (entity_t *ent, msurface_t *s) +{ + float entalpha; + if (ent == NULL || ent->alpha == ENTALPHA_DEFAULT) + entalpha = GL_WaterAlphaForSurface(s); + else + entalpha = ENTALPHA_DECODE(ent->alpha); + return entalpha; +} + +static GLuint r_world_program; +extern GLuint gl_bmodel_vbo; + +// uniforms used in vert shader + +// uniforms used in frag shader +static GLint texLoc; +static GLint LMTexLoc; +static GLint fullbrightTexLoc; +static GLint useFullbrightTexLoc; +static GLint useOverbrightLoc; +static GLint useAlphaTestLoc; +static GLint useLightmapWideLoc; +static GLint useLightmapOnlyLoc; +static GLint alphaLoc; + +#define vertAttrIndex 0 +#define texCoordsAttrIndex 1 +#define LMCoordsAttrIndex 2 + +/* +================ +R_DrawTextureChains_Water -- johnfitz +================ +*/ +void R_DrawTextureChains_Water (qmodel_t *model, entity_t *ent, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + glpoly_t *p; + qboolean bound; + float entalpha; + int lastlightmap; + qboolean has_lit_water; + qboolean has_unlit_water; + + if (r_drawflat_cheatsafe || r_lightmap_cheatsafe) // ericw -- !r_drawworld_cheatsafe check moved to R_DrawWorld_Water () + return; + + has_lit_water = false; + has_unlit_water = false; + + if (r_oldwater.value) + { + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + if (!t || !t->texturechains[chain] || !(t->texturechains[chain]->flags & SURF_DRAWTURB)) + continue; + bound = false; + entalpha = 1.0f; + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + entalpha = GL_WaterAlphaForEntitySurface (ent, s); + R_BeginTransparentDrawing (entalpha); + GL_Bind (t->gltexture); + bound = true; + } + for (p = s->polys->next; p; p = p->next) + { + DrawWaterPoly (p); + rs_brushpasses++; + } + } + R_EndTransparentDrawing (entalpha); + } + } + else if (cl.worldmodel->haslitwater && r_litwater.value && r_world_program != 0) + { + const int overbright = !!gl_overbright.value; + const int wide10bits = !!r_lightmapwide.value; + + has_lit_water = true; + + GL_UseProgramFunc (r_world_program); + + // Bind the buffers + GL_BindBuffer (GL_ARRAY_BUFFER, gl_bmodel_vbo); + GL_BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); + + GL_EnableVertexAttribArrayFunc (vertAttrIndex); + GL_EnableVertexAttribArrayFunc (texCoordsAttrIndex); + GL_EnableVertexAttribArrayFunc (LMCoordsAttrIndex); + + GL_VertexAttribPointerFunc (vertAttrIndex, 3, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float *)0)); + GL_VertexAttribPointerFunc (texCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float *)0) + 3); + GL_VertexAttribPointerFunc (LMCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float *)0) + 5); + + // Set uniforms + GL_Uniform1iFunc (texLoc, 0); + GL_Uniform1iFunc (LMTexLoc, 1); + GL_Uniform1iFunc (fullbrightTexLoc, 2); + GL_Uniform1iFunc (useFullbrightTexLoc, 0); + GL_Uniform1iFunc (useOverbrightLoc, overbright); + GL_Uniform1iFunc (useAlphaTestLoc, 0); + GL_Uniform1iFunc (useLightmapWideLoc, wide10bits); + GL_Uniform1iFunc (useLightmapOnlyLoc, 0); + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || !(t->texturechains[chain]->flags & SURF_DRAWTURB)) + continue; + + if (t->texturechains[chain]->texinfo->flags & TEX_SPECIAL) + { + has_unlit_water = true; + continue; + } + + bound = false; + entalpha = 1.0f; + lastlightmap = 0; + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + entalpha = GL_WaterAlphaForEntitySurface (ent, s); + if (entalpha < 1.0f) + { + GL_Uniform1fFunc (alphaLoc, entalpha); + R_BeginTransparentDrawing (entalpha); + } + + GL_SelectTexture (GL_TEXTURE0); + GL_Bind (t->warpimage); + + if (model != cl.worldmodel) + { + // ericw -- this is copied from R_DrawSequentialPoly. + // If the poly is not part of the world we have to + // set this flag + t->update_warp = true; // FIXME: one frame too late! + } + + bound = true; + lastlightmap = s->lightmaptexturenum; + } + + if (s->lightmaptexturenum != lastlightmap) + R_FlushBatch (); + + GL_SelectTexture (GL_TEXTURE1); + GL_Bind (lightmaps[s->lightmaptexturenum].texture); + lastlightmap = s->lightmaptexturenum; + R_BatchSurface (s); + + rs_brushpasses++; + } + R_FlushBatch (); + R_EndTransparentDrawing (entalpha); + } + + // clean up + GL_DisableVertexAttribArrayFunc (vertAttrIndex); + GL_DisableVertexAttribArrayFunc (texCoordsAttrIndex); + GL_DisableVertexAttribArrayFunc (LMCoordsAttrIndex); + GL_UseProgramFunc (0); + GL_SelectTexture (GL_TEXTURE0); + } + else + has_unlit_water = true; + + if (has_unlit_water) + { + // Unlit water + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + if (!t || !t->texturechains[chain] || !(t->texturechains[chain]->flags & SURF_DRAWTURB)) + continue; + if (has_lit_water && !(t->texturechains[chain]->texinfo->flags & TEX_SPECIAL)) + continue; + bound = false; + entalpha = 1.0f; + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + entalpha = GL_WaterAlphaForEntitySurface (ent, s); + R_BeginTransparentDrawing (entalpha); + GL_Bind (t->warpimage); + + if (model != cl.worldmodel) + { + // ericw -- this is copied from R_DrawSequentialPoly. + // If the poly is not part of the world we have to + // set this flag + t->update_warp = true; // FIXME: one frame too late! + } + + bound = true; + } + DrawGLPoly (s->polys); + rs_brushpasses++; + } + R_EndTransparentDrawing (entalpha); + } + } +} + +/* +================ +R_DrawTextureChains_White -- johnfitz -- draw sky and water as white polys when r_lightmap is 1 +================ +*/ +void R_DrawTextureChains_White (qmodel_t *model, texchain_t chain) +{ + int i; + msurface_t *s; + texture_t *t; + + glDisable (GL_TEXTURE_2D); + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || !(t->texturechains[chain]->flags & SURF_DRAWTILED)) + continue; + + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + DrawGLPoly (s->polys); + rs_brushpasses++; + } + } + glEnable (GL_TEXTURE_2D); +} + +/* +================ +R_DrawLightmapChains -- johnfitz -- R_BlendLightmaps stripped down to almost nothing +================ +*/ +void R_DrawLightmapChains (void) +{ + int i, j; + glpoly_t *p; + float *v; + + for (i=0 ; i<lightmap_count ; i++) + { + if (!lightmaps[i].polys) + continue; + + GL_Bind (lightmaps[i].texture); + for (p = lightmaps[i].polys; p; p=p->chain) + { + glBegin (GL_POLYGON); + v = p->verts[0]; + for (j=0 ; j<p->numverts ; j++, v+= VERTEXSIZE) + { + glTexCoord2f (v[5], v[6]); + glVertex3fv (v); + } + glEnd (); + rs_brushpasses++; + } + } +} + +/* +============= +GLWorld_CreateShaders +============= +*/ +void GLWorld_CreateShaders (void) +{ + const glsl_attrib_binding_t bindings[] = { + { "Vert", vertAttrIndex }, + { "TexCoords", texCoordsAttrIndex }, + { "LMCoords", LMCoordsAttrIndex } + }; + + // Driver bug workarounds: + // - "Intel(R) UHD Graphics 600" version "4.6.0 - Build 26.20.100.7263" + // crashing on glUseProgram with `vec3 Vert` and + // `gl_ModelViewProjectionMatrix * vec4(Vert, 1.0);`. Work around with + // making Vert a vec4. (https://sourceforge.net/p/quakespasm/bugs/39/) + const GLchar *vertSource = \ + "#version 110\n" + "\n" + "attribute vec4 Vert;\n" + "attribute vec2 TexCoords;\n" + "attribute vec2 LMCoords;\n" + "\n" + "varying float FogFragCoord;\n" + "\n" + "void main()\n" + "{\n" + " gl_TexCoord[0] = vec4(TexCoords, 0.0, 0.0);\n" + " gl_TexCoord[1] = vec4(LMCoords, 0.0, 0.0);\n" + " gl_Position = gl_ModelViewProjectionMatrix * Vert;\n" + " FogFragCoord = gl_Position.w;\n" + "}\n"; + + const GLchar *fragSource = \ + "#version 110\n" + "\n" + "uniform sampler2D Tex;\n" + "uniform sampler2D LMTex;\n" + "uniform sampler2D FullbrightTex;\n" + "uniform bool UseFullbrightTex;\n" + "uniform bool UseOverbright;\n" + "uniform bool UseAlphaTest;\n" + "uniform bool UseLightmapWide;\n" + "uniform bool UseLightmapOnly;\n" + "uniform float Alpha;\n" + "\n" + "varying float FogFragCoord;\n" + "\n" + "void main()\n" + "{\n" + " vec4 result = texture2D(Tex, gl_TexCoord[0].xy);\n" + " if (UseLightmapOnly)\n" + " result = vec4(0.5, 0.5, 0.5, 1.0);\n" + " if (UseAlphaTest && (result.a < 0.666))\n" + " discard;\n" + " result *= texture2D(LMTex, gl_TexCoord[1].xy);\n" + " if (UseLightmapWide)\n" + " result.rgb *= 4.0;\n" + " if (UseOverbright)\n" + " result.rgb *= 2.0;\n" + " if (UseFullbrightTex)\n" + " result += texture2D(FullbrightTex, gl_TexCoord[0].xy);\n" + " result = clamp(result, 0.0, 1.0);\n" + " float fog = exp(-gl_Fog.density * gl_Fog.density * FogFragCoord * FogFragCoord);\n" + " fog = clamp(fog, 0.0, 1.0);\n" + " result = mix(gl_Fog.color, result, fog);\n" + " result.a = Alpha;\n" // FIXME: This will make almost transparent things cut holes though heavy fog + " gl_FragColor = result;\n" + "}\n"; + + if (!gl_glsl_alias_able) + return; + + r_world_program = GL_CreateProgram (vertSource, fragSource, Q_COUNTOF(bindings), bindings); + + if (r_world_program != 0) + { + // get uniform locations + texLoc = GL_GetUniformLocation (&r_world_program, "Tex"); + LMTexLoc = GL_GetUniformLocation (&r_world_program, "LMTex"); + fullbrightTexLoc = GL_GetUniformLocation (&r_world_program, "FullbrightTex"); + useFullbrightTexLoc = GL_GetUniformLocation (&r_world_program, "UseFullbrightTex"); + useOverbrightLoc = GL_GetUniformLocation (&r_world_program, "UseOverbright"); + useAlphaTestLoc = GL_GetUniformLocation (&r_world_program, "UseAlphaTest"); + useLightmapWideLoc = GL_GetUniformLocation (&r_world_program, "UseLightmapWide"); + useLightmapOnlyLoc = GL_GetUniformLocation (&r_world_program, "UseLightmapOnly"); + alphaLoc = GL_GetUniformLocation (&r_world_program, "Alpha"); + } +} + +/* +================ +R_DrawTextureChains_GLSL -- ericw + +Draw lightmapped surfaces with fulbrights in one pass, using VBO. +Requires 3 TMUs, OpenGL 2.0 +================ +*/ +void R_DrawTextureChains_GLSL (qmodel_t *model, entity_t *ent, texchain_t chain) +{ + const float entalpha = (ent != NULL) ? + ENTALPHA_DECODE(ent->alpha) : 1.0f; + const int overbright = !!gl_overbright.value; + const int wide10bits = !!r_lightmapwide.value; + + int i; + msurface_t *s; + texture_t *t; + qboolean bound; + int lastlightmap; + gltexture_t *fullbright = NULL; + +// enable blending / disable depth writes + if (entalpha < 1) + { + glDepthMask (GL_FALSE); + glEnable (GL_BLEND); + } + + GL_UseProgramFunc (r_world_program); + +// Bind the buffers + GL_BindBuffer (GL_ARRAY_BUFFER, gl_bmodel_vbo); + GL_BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); // indices come from client memory! + + GL_EnableVertexAttribArrayFunc (vertAttrIndex); + GL_EnableVertexAttribArrayFunc (texCoordsAttrIndex); + GL_EnableVertexAttribArrayFunc (LMCoordsAttrIndex); + + GL_VertexAttribPointerFunc (vertAttrIndex, 3, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float *)0)); + GL_VertexAttribPointerFunc (texCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float *)0) + 3); + GL_VertexAttribPointerFunc (LMCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float *)0) + 5); + +// set uniforms + GL_Uniform1iFunc (texLoc, 0); + GL_Uniform1iFunc (LMTexLoc, 1); + GL_Uniform1iFunc (fullbrightTexLoc, 2); + GL_Uniform1iFunc (useFullbrightTexLoc, 0); + GL_Uniform1iFunc (useOverbrightLoc, overbright); + GL_Uniform1iFunc (useAlphaTestLoc, 0); + GL_Uniform1iFunc (useLightmapWideLoc, wide10bits); + GL_Uniform1iFunc (useLightmapOnlyLoc, 0); + GL_Uniform1fFunc (alphaLoc, entalpha); + + for (i=0 ; i<model->numtextures ; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || t->texturechains[chain]->flags & (SURF_DRAWTURB | SURF_DRAWTILED | SURF_NOTEXTURE)) + continue; + + // Enable/disable TMU 2 (fullbrights) + // FIXME: Move below to where we bind GL_TEXTURE0 + if (gl_fullbrights.value && (fullbright = R_TextureAnimation(t, ent != NULL ? ent->frame : 0)->fullbright)) + { + GL_SelectTexture (GL_TEXTURE2); + GL_Bind (fullbright); + GL_Uniform1iFunc (useFullbrightTexLoc, 1); + } + else + GL_Uniform1iFunc (useFullbrightTexLoc, 0); + + R_ClearBatch (); + + bound = false; + lastlightmap = 0; // avoid compiler warning + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (!bound) //only bind once we are sure we need this texture + { + GL_SelectTexture (GL_TEXTURE0); + GL_Bind ((R_TextureAnimation(t, ent != NULL ? ent->frame : 0))->gltexture); + if (t->texturechains[chain]->flags & SURF_DRAWFENCE) + GL_Uniform1iFunc (useAlphaTestLoc, 1); // Flip alpha test back on + + bound = true; + lastlightmap = s->lightmaptexturenum; + } + + if (s->lightmaptexturenum != lastlightmap) + R_FlushBatch (); + + GL_SelectTexture (GL_TEXTURE1); + GL_Bind (lightmaps[s->lightmaptexturenum].texture); + lastlightmap = s->lightmaptexturenum; + R_BatchSurface (s); + + rs_brushpasses++; + } + + R_FlushBatch (); + + if (bound && t->texturechains[chain]->flags & SURF_DRAWFENCE) + GL_Uniform1iFunc (useAlphaTestLoc, 0); // Flip alpha test back off + } + + // clean up + GL_DisableVertexAttribArrayFunc (vertAttrIndex); + GL_DisableVertexAttribArrayFunc (texCoordsAttrIndex); + GL_DisableVertexAttribArrayFunc (LMCoordsAttrIndex); + + GL_UseProgramFunc (0); + GL_SelectTexture (GL_TEXTURE0); + + if (entalpha < 1) + { + glDepthMask (GL_TRUE); + glDisable (GL_BLEND); + } +} + +/* +================ +R_DrawLightmapChains_GLSL -- ericw +================ +*/ +void R_DrawLightmapChains_GLSL(qmodel_t* model, entity_t* ent, texchain_t chain) +{ + const int overbright = !!gl_overbright.value; + const int wide10bits = !!r_lightmapwide.value; + + int i; + msurface_t* s; + texture_t* t; + int lastlightmap; + + GL_UseProgramFunc(r_world_program); + + // Bind the buffers + GL_BindBuffer(GL_ARRAY_BUFFER, gl_bmodel_vbo); + GL_BindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); // indices come from client memory! + + GL_EnableVertexAttribArrayFunc(vertAttrIndex); + GL_EnableVertexAttribArrayFunc(texCoordsAttrIndex); + GL_EnableVertexAttribArrayFunc(LMCoordsAttrIndex); + + GL_VertexAttribPointerFunc(vertAttrIndex, 3, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float*)0)); + GL_VertexAttribPointerFunc(texCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float*)0) + 3); + GL_VertexAttribPointerFunc(LMCoordsAttrIndex, 2, GL_FLOAT, GL_FALSE, VERTEXSIZE * sizeof(float), ((float*)0) + 5); + + // set uniforms + GL_Uniform1iFunc(texLoc, 0); + GL_Uniform1iFunc(LMTexLoc, 1); + GL_Uniform1iFunc(fullbrightTexLoc, 2); + GL_Uniform1iFunc(useFullbrightTexLoc, 0); + GL_Uniform1iFunc(useOverbrightLoc, overbright); + GL_Uniform1iFunc(useAlphaTestLoc, 0); + GL_Uniform1iFunc(useLightmapWideLoc, wide10bits); + GL_Uniform1fFunc(alphaLoc, 1.0f); + GL_Uniform1iFunc(useFullbrightTexLoc, 0); + GL_Uniform1iFunc(useLightmapOnlyLoc, 1); + + R_ClearBatch(); + lastlightmap = -1; + + for (i = 0; i < model->numtextures; i++) + { + t = model->textures[i]; + + if (!t || !t->texturechains[chain] || t->texturechains[chain]->flags & (SURF_DRAWTILED | SURF_NOTEXTURE)) + continue; + + if (t->texturechains[chain]->texinfo->flags & TEX_SPECIAL) + continue; // unlit water + + for (s = t->texturechains[chain]; s; s = s->texturechain) + { + if (s->lightmaptexturenum < 0) + continue; + + if (s->lightmaptexturenum != lastlightmap) + { + R_FlushBatch(); + + GL_SelectTexture(GL_TEXTURE1); + GL_Bind(lightmaps[s->lightmaptexturenum].texture); + lastlightmap = s->lightmaptexturenum; + } + R_BatchSurface(s); + + rs_brushpasses++; + } + } + + R_FlushBatch(); + + // clean up + GL_DisableVertexAttribArrayFunc(vertAttrIndex); + GL_DisableVertexAttribArrayFunc(texCoordsAttrIndex); + GL_DisableVertexAttribArrayFunc(LMCoordsAttrIndex); + + GL_UseProgramFunc(0); + GL_SelectTexture(GL_TEXTURE0); +} + +/* +============= +R_DrawWorld -- johnfitz -- rewritten +============= +*/ +void R_DrawTextureChains (qmodel_t *model, entity_t *ent, texchain_t chain) +{ + float entalpha; + + if (ent != NULL) + entalpha = ENTALPHA_DECODE(ent->alpha); + else + entalpha = 1; + + R_UploadLightmaps (); + + if (r_drawflat_cheatsafe) + { + glDisable (GL_TEXTURE_2D); + R_DrawTextureChains_Drawflat (model, chain); + glEnable (GL_TEXTURE_2D); + return; + } + + if (r_fullbright_cheatsafe) + { + R_BeginTransparentDrawing (entalpha); + R_DrawTextureChains_TextureOnly (model, ent, chain); + R_EndTransparentDrawing (entalpha); + goto fullbrights; + } + + if (r_lightmap_cheatsafe) + { + if (r_world_program != 0) + { + R_DrawLightmapChains_GLSL(model, ent, chain); + return; + } + + if (!gl_overbright.value) + { + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glColor3f(0.5, 0.5, 0.5); + } + R_DrawLightmapChains (); + if (!gl_overbright.value) + { + glColor3f(1,1,1); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + R_DrawTextureChains_White (model, chain); + return; + } + + R_BeginTransparentDrawing (entalpha); + + R_DrawTextureChains_NoTexture (model, chain); + + // OpenGL 2 fast path + if (r_world_program != 0) + { + R_EndTransparentDrawing (entalpha); + + R_DrawTextureChains_GLSL (model, ent, chain); + return; + } + + if (gl_overbright.value) + { + if (gl_texture_env_combine && gl_mtexable) //case 1: texture and lightmap in one pass, overbright using texture combiners + { + GL_EnableMultitexture (); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT); + glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE); + glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_PREVIOUS_EXT); + glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_TEXTURE); + glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 2.0f); + GL_DisableMultitexture (); + R_DrawTextureChains_Multitexture (model, ent, chain); + GL_EnableMultitexture (); + glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 1.0f); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_DisableMultitexture (); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + else if (entalpha < 1) //case 2: can't do multipass if entity has alpha, so just draw the texture + { + R_DrawTextureChains_TextureOnly (model, ent, chain); + } + else //case 3: texture in one pass, lightmap in second pass using 2x modulation blend func, fog in third pass + { + //to make fog work with multipass lightmapping, need to do one pass + //with no fog, one modulate pass with black fog, and one additive + //pass with black geometry and normal fog + Fog_DisableGFog (); + R_DrawTextureChains_TextureOnly (model, ent, chain); + Fog_EnableGFog (); + glDepthMask (GL_FALSE); + glEnable (GL_BLEND); + glBlendFunc (GL_DST_COLOR, GL_SRC_COLOR); //2x modulate + Fog_StartAdditive (); + R_DrawLightmapChains (); + Fog_StopAdditive (); + if (Fog_GetDensity() > 0) + { + glBlendFunc(GL_ONE, GL_ONE); //add + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glColor3f(0,0,0); + R_DrawTextureChains_TextureOnly (model, ent, chain); + glColor3f(1,1,1); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable (GL_BLEND); + glDepthMask (GL_TRUE); + } + } + else + { + if (gl_mtexable) //case 4: texture and lightmap in one pass, regular modulation + { + GL_EnableMultitexture (); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + GL_DisableMultitexture (); + R_DrawTextureChains_Multitexture (model, ent, chain); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + else if (entalpha < 1) //case 5: can't do multipass if entity has alpha, so just draw the texture + { + R_DrawTextureChains_TextureOnly (model, ent, chain); + } + else //case 6: texture in one pass, lightmap in a second pass, fog in third pass + { + //to make fog work with multipass lightmapping, need to do one pass + //with no fog, one modulate pass with black fog, and one additive + //pass with black geometry and normal fog + Fog_DisableGFog (); + R_DrawTextureChains_TextureOnly (model, ent, chain); + Fog_EnableGFog (); + glDepthMask (GL_FALSE); + glEnable (GL_BLEND); + glBlendFunc(GL_ZERO, GL_SRC_COLOR); //modulate + Fog_StartAdditive (); + R_DrawLightmapChains (); + Fog_StopAdditive (); + if (Fog_GetDensity() > 0) + { + glBlendFunc(GL_ONE, GL_ONE); //add + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glColor3f(0,0,0); + R_DrawTextureChains_TextureOnly (model, ent, chain); + glColor3f(1,1,1); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + } + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable (GL_BLEND); + glDepthMask (GL_TRUE); + } + } + + R_EndTransparentDrawing (entalpha); + +fullbrights: + if (gl_fullbrights.value) + { + glDepthMask (GL_FALSE); + glEnable (GL_BLEND); + glBlendFunc (GL_ONE, GL_ONE); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glColor3f (entalpha, entalpha, entalpha); + Fog_StartAdditive (); + R_DrawTextureChains_Glow (model, ent, chain); + Fog_StopAdditive (); + glColor3f (1, 1, 1); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable (GL_BLEND); + glDepthMask (GL_TRUE); + } +} + +/* +============= +R_DrawWorld -- ericw -- moved from R_DrawTextureChains, which is no longer specific to the world. +============= +*/ +void R_DrawWorld (void) +{ + if (!r_drawworld_cheatsafe) + return; + + R_DrawTextureChains (cl.worldmodel, NULL, chain_world); +} + +/* +============= +R_DrawWorld_Water -- ericw -- moved from R_DrawTextureChains_Water, which is no longer specific to the world. +============= +*/ +void R_DrawWorld_Water (void) +{ + if (!r_drawworld_cheatsafe) + return; + + R_DrawTextureChains_Water (cl.worldmodel, NULL, chain_world); +} + +/* +============= +R_DrawWorld_ShowTris -- ericw -- moved from R_DrawTextureChains_ShowTris, which is no longer specific to the world. +============= +*/ +void R_DrawWorld_ShowTris (void) +{ + if (!r_drawworld_cheatsafe) + return; + + R_DrawTextureChains_ShowTris (cl.worldmodel, chain_world); +} diff --git a/Quake/render.h b/Quake/render.h new file mode 100644 index 0000000..ef600ee --- /dev/null +++ b/Quake/render.h @@ -0,0 +1,176 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_RENDER_H +#define _QUAKE_RENDER_H + +// refresh.h -- public interface to refresh functions + +#define MAXCLIPPLANES 11 + +#define TOP_RANGE 16 // soldier uniform colors +#define BOTTOM_RANGE 96 + +//============================================================================= + +typedef struct efrag_s +{ + struct efrag_s *leafnext; + struct entity_s *entity; +} efrag_t; + +//johnfitz -- for lerping +#define LERP_MOVESTEP (1<<0) //this is a MOVETYPE_STEP entity, enable movement lerp +#define LERP_RESETANIM (1<<1) //disable anim lerping until next anim frame +#define LERP_RESETANIM2 (1<<2) //set this and previous flag to disable anim lerping for two anim frames +#define LERP_RESETMOVE (1<<3) //disable movement lerping until next origin/angles change +#define LERP_FINISH (1<<4) //use lerpfinish time from server update instead of assuming interval of 0.1 +//johnfitz + +typedef struct entity_s +{ + qboolean forcelink; // model changed + + int update_type; + + entity_state_t baseline; // to fill in defaults in updates + + double msgtime; // time of last update + vec3_t msg_origins[2]; // last two updates (0 is newest) + vec3_t origin; + vec3_t msg_angles[2]; // last two updates (0 is newest) + vec3_t angles; + struct qmodel_s *model; // NULL = no model + struct efrag_s *efrag; // linked list of efrags + int frame; + float syncbase; // for client-side animations + byte *colormap; + int effects; // light, particles, etc + int skinnum; // for Alias models + int visframe; // last frame this entity was + // found in an active leaf + + int dlightframe; // dynamic lighting + int dlightbits; + +// FIXME: could turn these into a union + struct mnode_s *topnode; // for bmodels, first world node + // that splits bmodel, or NULL if + // not split + + byte alpha; //johnfitz -- alpha + byte scale; + byte lerpflags; //johnfitz -- lerping + float lerpstart; //johnfitz -- animation lerping + float lerptime; //johnfitz -- animation lerping + float lerpfinish; //johnfitz -- lerping -- server sent us a more accurate interval, use it instead of 0.1 + short previouspose; //johnfitz -- animation lerping + short currentpose; //johnfitz -- animation lerping +// short futurepose; //johnfitz -- animation lerping + float movelerpstart; //johnfitz -- transform lerping + vec3_t previousorigin; //johnfitz -- transform lerping + vec3_t currentorigin; //johnfitz -- transform lerping + vec3_t previousangles; //johnfitz -- transform lerping + vec3_t currentangles; //johnfitz -- transform lerping +} entity_t; + +// !!! if this is changed, it must be changed in asm_draw.h too !!! +typedef struct +{ + vrect_t vrect; // subwindow in video for refresh + // FIXME: not need vrect next field here? + vrect_t aliasvrect; // scaled Alias version + int vrectright, vrectbottom; // right & bottom screen coords + int aliasvrectright, aliasvrectbottom; // scaled Alias versions + float vrectrightedge; // rightmost right edge we care about, + // for use in edge list + float fvrectx, fvrecty; // for floating-point compares + float fvrectx_adj, fvrecty_adj; // left and top edges, for clamping + int vrect_x_adj_shift20; // (vrect.x + 0.5 - epsilon) << 20 + int vrectright_adj_shift20; // (vrectright + 0.5 - epsilon) << 20 + float fvrectright_adj, fvrectbottom_adj; + // right and bottom edges, for clamping + float fvrectright; // rightmost edge, for Alias clamping + float fvrectbottom; // bottommost edge, for Alias clamping + float horizontalFieldOfView; // at Z = 1.0, this many X is visible + // 2.0 = 90 degrees + float xOrigin; // should probably allways be 0.5 + float yOrigin; // between be around 0.3 to 0.5 + + vec3_t vieworg; + vec3_t viewangles; + + float fov_x, fov_y; + + int ambientlight; +} refdef_t; + + +// +// refresh +// +extern int reinit_surfcache; + + +extern refdef_t r_refdef; +extern vec3_t r_origin, vpn, vright, vup; + + +void R_Init (void); +void R_InitTextures (void); +void R_InitEfrags (void); +void R_RenderView (void); // must set r_refdef first +void R_ViewChanged (vrect_t *pvrect, int lineadj, float aspect); + // called whenever r_refdef or vid change +//void R_InitSky (struct texture_s *mt); // called at level load + +void R_CheckEfrags (void); //johnfitz +void R_AddEfrags (entity_t *ent); + +void R_NewMap (void); + + +void R_ParseParticleEffect (void); +void R_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count); +void R_RocketTrail (vec3_t start, vec3_t end, int type); +void R_EntityParticles (entity_t *ent); +void R_BlobExplosion (vec3_t org); +void R_ParticleExplosion (vec3_t org); +void R_ParticleExplosion2 (vec3_t org, int colorStart, int colorLength); +void R_LavaSplash (vec3_t org); +void R_TeleportSplash (vec3_t org); + +void R_PushDlights (void); + + +// +// surface cache related +// +extern int reinit_surfcache; // if 1, surface cache is currently empty and + +int D_SurfaceCacheForRes (int width, int height); +void D_FlushCaches (void); +void D_DeleteSurfaceCache (void); +void D_InitCaches (void *buffer, int size); +void R_SetVrect (vrect_t *pvrect, vrect_t *pvrectin, int lineadj); + +#endif /* _QUAKE_RENDER_H */ diff --git a/Quake/resource.h b/Quake/resource.h new file mode 100644 index 0000000..d31f0fa --- /dev/null +++ b/Quake/resource.h @@ -0,0 +1,26 @@ +#ifndef _QUAKE_RESOURCE_H +#define _QUAKE_RESOURCE_H + +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by winquake.rc +// +#define IDS_STRING1 1 +#define IDI_ICON2 1 +#define IDD_DIALOG1 108 +#define IDD_PROGRESS 109 +#define IDC_PROGRESS 1000 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 113 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1004 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif + +#endif /* _QUAKE_RESOURCE_H */ + diff --git a/Quake/sbar.c b/Quake/sbar.c new file mode 100644 index 0000000..1f48e53 --- /dev/null +++ b/Quake/sbar.c @@ -0,0 +1,1336 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sbar.c -- status bar code + +#include "quakedef.h" + +static int sb_updates; // if >= vid.numpages, no update needed + +#define STAT_MINUS 10 // num frame for '-' stats digit + +static qpic_t *sb_nums[2][11]; +static qpic_t *sb_colon, *sb_slash; +static qpic_t *sb_ibar; +static qpic_t *sb_sbar; +static qpic_t *sb_scorebar; + +static qpic_t *sb_weapons[7][8]; // 0 is active, 1 is owned, 2-5 are flashes +static qpic_t *sb_ammo[4]; +static qpic_t *sb_sigil[4]; +static qpic_t *sb_armor[3]; +static qpic_t *sb_items[32]; + +static qpic_t *sb_faces[7][2]; // 0 is gibbed, 1 is dead, 2-6 are alive + // 0 is static, 1 is temporary animation +static qpic_t *sb_face_invis; +static qpic_t *sb_face_quad; +static qpic_t *sb_face_invuln; +static qpic_t *sb_face_invis_invuln; + +static qboolean sb_showscores; + +int sb_lines; // scan lines to draw + +static qpic_t *rsb_invbar[2]; +static qpic_t *rsb_weapons[5]; +static qpic_t *rsb_items[2]; +static qpic_t *rsb_ammo[3]; +static qpic_t *rsb_teambord; // PGM 01/19/97 - team color border + +//MED 01/04/97 added two more weapons + 3 alternates for grenade launcher +static qpic_t *hsb_weapons[7][5]; // 0 is active, 1 is owned, 2-5 are flashes +//MED 01/04/97 added array to simplify weapon parsing +static int hipweapons[4] = {HIT_LASER_CANNON_BIT,HIT_MJOLNIR_BIT,4,HIT_PROXIMITY_GUN_BIT}; +//MED 01/04/97 added hipnotic items array +static qpic_t *hsb_items[2]; + +void Sbar_MiniDeathmatchOverlay (void); +void Sbar_DeathmatchOverlay (void); +void M_DrawPic (int x, int y, qpic_t *pic); + +/* +=============== +Sbar_ShowScores + +Tab key down +=============== +*/ +void Sbar_ShowScores (void) +{ + if (sb_showscores) + return; + sb_showscores = true; + sb_updates = 0; +} + +/* +=============== +Sbar_DontShowScores + +Tab key up +=============== +*/ +void Sbar_DontShowScores (void) +{ + sb_showscores = false; + sb_updates = 0; +} + +/* +=============== +Sbar_Changed +=============== +*/ +void Sbar_Changed (void) +{ + sb_updates = 0; // update next frame +} + +/* +=============== +Sbar_LoadPics -- johnfitz -- load all the sbar pics +=============== +*/ +void Sbar_LoadPics (void) +{ + int i; + + for (i = 0; i < 10; i++) + { + sb_nums[0][i] = Draw_PicFromWad (va("num_%i",i)); + sb_nums[1][i] = Draw_PicFromWad (va("anum_%i",i)); + } + + sb_nums[0][10] = Draw_PicFromWad ("num_minus"); + sb_nums[1][10] = Draw_PicFromWad ("anum_minus"); + + sb_colon = Draw_PicFromWad ("num_colon"); + sb_slash = Draw_PicFromWad ("num_slash"); + + sb_weapons[0][0] = Draw_PicFromWad ("inv_shotgun"); + sb_weapons[0][1] = Draw_PicFromWad ("inv_sshotgun"); + sb_weapons[0][2] = Draw_PicFromWad ("inv_nailgun"); + sb_weapons[0][3] = Draw_PicFromWad ("inv_snailgun"); + sb_weapons[0][4] = Draw_PicFromWad ("inv_rlaunch"); + sb_weapons[0][5] = Draw_PicFromWad ("inv_srlaunch"); + sb_weapons[0][6] = Draw_PicFromWad ("inv_lightng"); + + sb_weapons[1][0] = Draw_PicFromWad ("inv2_shotgun"); + sb_weapons[1][1] = Draw_PicFromWad ("inv2_sshotgun"); + sb_weapons[1][2] = Draw_PicFromWad ("inv2_nailgun"); + sb_weapons[1][3] = Draw_PicFromWad ("inv2_snailgun"); + sb_weapons[1][4] = Draw_PicFromWad ("inv2_rlaunch"); + sb_weapons[1][5] = Draw_PicFromWad ("inv2_srlaunch"); + sb_weapons[1][6] = Draw_PicFromWad ("inv2_lightng"); + + for (i = 0; i < 5; i++) + { + sb_weapons[2+i][0] = Draw_PicFromWad (va("inva%i_shotgun",i+1)); + sb_weapons[2+i][1] = Draw_PicFromWad (va("inva%i_sshotgun",i+1)); + sb_weapons[2+i][2] = Draw_PicFromWad (va("inva%i_nailgun",i+1)); + sb_weapons[2+i][3] = Draw_PicFromWad (va("inva%i_snailgun",i+1)); + sb_weapons[2+i][4] = Draw_PicFromWad (va("inva%i_rlaunch",i+1)); + sb_weapons[2+i][5] = Draw_PicFromWad (va("inva%i_srlaunch",i+1)); + sb_weapons[2+i][6] = Draw_PicFromWad (va("inva%i_lightng",i+1)); + } + + sb_ammo[0] = Draw_PicFromWad ("sb_shells"); + sb_ammo[1] = Draw_PicFromWad ("sb_nails"); + sb_ammo[2] = Draw_PicFromWad ("sb_rocket"); + sb_ammo[3] = Draw_PicFromWad ("sb_cells"); + + sb_armor[0] = Draw_PicFromWad ("sb_armor1"); + sb_armor[1] = Draw_PicFromWad ("sb_armor2"); + sb_armor[2] = Draw_PicFromWad ("sb_armor3"); + + sb_items[0] = Draw_PicFromWad ("sb_key1"); + sb_items[1] = Draw_PicFromWad ("sb_key2"); + sb_items[2] = Draw_PicFromWad ("sb_invis"); + sb_items[3] = Draw_PicFromWad ("sb_invuln"); + sb_items[4] = Draw_PicFromWad ("sb_suit"); + sb_items[5] = Draw_PicFromWad ("sb_quad"); + + sb_sigil[0] = Draw_PicFromWad ("sb_sigil1"); + sb_sigil[1] = Draw_PicFromWad ("sb_sigil2"); + sb_sigil[2] = Draw_PicFromWad ("sb_sigil3"); + sb_sigil[3] = Draw_PicFromWad ("sb_sigil4"); + + sb_faces[4][0] = Draw_PicFromWad ("face1"); + sb_faces[4][1] = Draw_PicFromWad ("face_p1"); + sb_faces[3][0] = Draw_PicFromWad ("face2"); + sb_faces[3][1] = Draw_PicFromWad ("face_p2"); + sb_faces[2][0] = Draw_PicFromWad ("face3"); + sb_faces[2][1] = Draw_PicFromWad ("face_p3"); + sb_faces[1][0] = Draw_PicFromWad ("face4"); + sb_faces[1][1] = Draw_PicFromWad ("face_p4"); + sb_faces[0][0] = Draw_PicFromWad ("face5"); + sb_faces[0][1] = Draw_PicFromWad ("face_p5"); + + sb_face_invis = Draw_PicFromWad ("face_invis"); + sb_face_invuln = Draw_PicFromWad ("face_invul2"); + sb_face_invis_invuln = Draw_PicFromWad ("face_inv2"); + sb_face_quad = Draw_PicFromWad ("face_quad"); + + sb_sbar = Draw_PicFromWad ("sbar"); + sb_ibar = Draw_PicFromWad ("ibar"); + sb_scorebar = Draw_PicFromWad ("scorebar"); + +//MED 01/04/97 added new hipnotic weapons + if (hipnotic) + { + hsb_weapons[0][0] = Draw_PicFromWad ("inv_laser"); + hsb_weapons[0][1] = Draw_PicFromWad ("inv_mjolnir"); + hsb_weapons[0][2] = Draw_PicFromWad ("inv_gren_prox"); + hsb_weapons[0][3] = Draw_PicFromWad ("inv_prox_gren"); + hsb_weapons[0][4] = Draw_PicFromWad ("inv_prox"); + + hsb_weapons[1][0] = Draw_PicFromWad ("inv2_laser"); + hsb_weapons[1][1] = Draw_PicFromWad ("inv2_mjolnir"); + hsb_weapons[1][2] = Draw_PicFromWad ("inv2_gren_prox"); + hsb_weapons[1][3] = Draw_PicFromWad ("inv2_prox_gren"); + hsb_weapons[1][4] = Draw_PicFromWad ("inv2_prox"); + + for (i = 0; i < 5; i++) + { + hsb_weapons[2+i][0] = Draw_PicFromWad (va("inva%i_laser",i+1)); + hsb_weapons[2+i][1] = Draw_PicFromWad (va("inva%i_mjolnir",i+1)); + hsb_weapons[2+i][2] = Draw_PicFromWad (va("inva%i_gren_prox",i+1)); + hsb_weapons[2+i][3] = Draw_PicFromWad (va("inva%i_prox_gren",i+1)); + hsb_weapons[2+i][4] = Draw_PicFromWad (va("inva%i_prox",i+1)); + } + + hsb_items[0] = Draw_PicFromWad ("sb_wsuit"); + hsb_items[1] = Draw_PicFromWad ("sb_eshld"); + } + + if (rogue) + { + rsb_invbar[0] = Draw_PicFromWad ("r_invbar1"); + rsb_invbar[1] = Draw_PicFromWad ("r_invbar2"); + + rsb_weapons[0] = Draw_PicFromWad ("r_lava"); + rsb_weapons[1] = Draw_PicFromWad ("r_superlava"); + rsb_weapons[2] = Draw_PicFromWad ("r_gren"); + rsb_weapons[3] = Draw_PicFromWad ("r_multirock"); + rsb_weapons[4] = Draw_PicFromWad ("r_plasma"); + + rsb_items[0] = Draw_PicFromWad ("r_shield1"); + rsb_items[1] = Draw_PicFromWad ("r_agrav1"); + +// PGM 01/19/97 - team color border + rsb_teambord = Draw_PicFromWad ("r_teambord"); +// PGM 01/19/97 - team color border + + rsb_ammo[0] = Draw_PicFromWad ("r_ammolava"); + rsb_ammo[1] = Draw_PicFromWad ("r_ammomulti"); + rsb_ammo[2] = Draw_PicFromWad ("r_ammoplasma"); + } +} + +/* +=============== +Sbar_Init -- johnfitz -- rewritten +=============== +*/ +void Sbar_Init (void) +{ + Cmd_AddCommand ("+showscores", Sbar_ShowScores); + Cmd_AddCommand ("-showscores", Sbar_DontShowScores); + + Sbar_LoadPics (); +} + + +//============================================================================= + +// drawing routines are relative to the status bar location + +/* +============= +Sbar_DrawPic -- johnfitz -- rewritten now that GL_SetCanvas is doing the work +============= +*/ +void Sbar_DrawPic (int x, int y, qpic_t *pic) +{ + Draw_Pic (x, y + 24, pic); +} + +/* +============= +Sbar_DrawPicAlpha -- johnfitz +============= +*/ +void Sbar_DrawPicAlpha (int x, int y, qpic_t *pic, float alpha) +{ + glDisable (GL_ALPHA_TEST); + glEnable (GL_BLEND); + glColor4f(1,1,1,alpha); + Draw_Pic (x, y + 24, pic); + glColor4f(1,1,1,1); // ericw -- changed from glColor3f to work around intel 855 bug with "r_oldwater 0" and "scr_sbaralpha 0" + glDisable (GL_BLEND); + glEnable (GL_ALPHA_TEST); +} + +/* +================ +Sbar_DrawCharacter -- johnfitz -- rewritten now that GL_SetCanvas is doing the work +================ +*/ +void Sbar_DrawCharacter (int x, int y, int num) +{ + Draw_Character (x, y + 24, num); +} + +/* +================ +Sbar_DrawString -- johnfitz -- rewritten now that GL_SetCanvas is doing the work +================ +*/ +void Sbar_DrawString (int x, int y, const char *str) +{ + Draw_String (x, y + 24, str); +} + +/* +=============== +Sbar_DrawScrollString -- johnfitz + +scroll the string inside a glscissor region +=============== +*/ +void Sbar_DrawScrollString (int x, int y, int width, const char *str) +{ + float scale; + int len, ofs, left; + + scale = CLAMP (1.0f, scr_sbarscale.value, (float)glwidth / 320.0f); + left = x * scale; + if (cl.gametype != GAME_DEATHMATCH) + left += (((float)glwidth - 320.0 * scale) / 2); + + glEnable (GL_SCISSOR_TEST); + glScissor (left, 0, width * scale, glheight); + + len = strlen(str)*8 + 40; + ofs = ((int)(realtime*30))%len; + Sbar_DrawString (x - ofs, y, str); + Sbar_DrawCharacter (x - ofs + len - 32, y, '/'); + Sbar_DrawCharacter (x - ofs + len - 24, y, '/'); + Sbar_DrawCharacter (x - ofs + len - 16, y, '/'); + Sbar_DrawString (x - ofs + len, y, str); + + glDisable (GL_SCISSOR_TEST); +} + +/* +============= +Sbar_itoa +============= +*/ +int Sbar_itoa (int num, char *buf) +{ + char *str; + int pow10; + int dig; + + str = buf; + + if (num < 0) + { + *str++ = '-'; + num = -num; + } + + for (pow10 = 10 ; num >= pow10 ; pow10 *= 10) + ; + + do + { + pow10 /= 10; + dig = num/pow10; + *str++ = '0'+dig; + num -= dig*pow10; + } while (pow10 != 1); + + *str = 0; + + return str-buf; +} + + +/* +============= +Sbar_DrawNum +============= +*/ +void Sbar_DrawNum (int x, int y, int num, int digits, int color) +{ + char str[12]; + char *ptr; + int l, frame; + + num = q_min(999,num); //johnfitz -- cap high values rather than truncating number + + l = Sbar_itoa (num, str); + ptr = str; + if (l > digits) + ptr += (l-digits); + if (l < digits) + x += (digits-l)*24; + + while (*ptr) + { + if (*ptr == '-') + frame = STAT_MINUS; + else + frame = *ptr -'0'; + + Sbar_DrawPic (x,y,sb_nums[color][frame]); //johnfitz -- DrawTransPic is obsolete + x += 24; + ptr++; + } +} + +//============================================================================= + +static int fragsort[MAX_SCOREBOARD]; + +static int scoreboardlines; + +/* +=============== +Sbar_SortFrags +=============== +*/ +void Sbar_SortFrags (void) +{ + int i, j, k; + +// sort by frags + scoreboardlines = 0; + for (i = 0; i < cl.maxclients; i++) + { + if (cl.scores[i].name[0]) + { + fragsort[scoreboardlines] = i; + scoreboardlines++; + } + } + + for (i = 0; i < scoreboardlines; i++) + { + for (j = 0; j < scoreboardlines - 1 - i; j++) + { + if (cl.scores[fragsort[j]].frags < cl.scores[fragsort[j+1]].frags) + { + k = fragsort[j]; + fragsort[j] = fragsort[j+1]; + fragsort[j+1] = k; + } + } + } +} + +int Sbar_ColorForMap (int m) +{ + return m < 128 ? m + 8 : m + 8; +} + +/* +=============== +Sbar_SoloScoreboard -- johnfitz -- new layout +=============== +*/ +void Sbar_SoloScoreboard (void) +{ + char str[256]; + int minutes, seconds, tens, units; + int left, right, len; + + sprintf (str,"Kills: %i/%i", cl.stats[STAT_MONSTERS], cl.stats[STAT_TOTALMONSTERS]); + left = 8 + strlen (str) * 8; + Sbar_DrawString (8, 12, str); + + sprintf (str,"Secrets: %i/%i", cl.stats[STAT_SECRETS], cl.stats[STAT_TOTALSECRETS]); + right = 312 - strlen (str) * 8; + Sbar_DrawString (right, 12, str); + + if (!fitzmode) + { /* QuakeSpasm customization: */ + q_snprintf (str, sizeof(str), "skill %i", (int)(skill.value + 0.5)); + Sbar_DrawString ((left + right) / 2 - strlen (str) * 4, 12, str); + + q_snprintf (str, sizeof(str), "%s (%s)", cl.levelname, cl.mapname); + len = strlen (str); + if (len > 40) + Sbar_DrawScrollString (0, 4, 320, str); + else + Sbar_DrawString (160 - len*4, 4, str); + return; + } + minutes = cl.time / 60; + seconds = cl.time - 60*minutes; + tens = seconds / 10; + units = seconds - 10*tens; + sprintf (str,"%i:%i%i", minutes, tens, units); + Sbar_DrawString (160 - strlen(str)*4, 12, str); + + len = strlen (cl.levelname); + if (len > 40) + Sbar_DrawScrollString (0, 4, 320, cl.levelname); + else + Sbar_DrawString (160 - len*4, 4, cl.levelname); +} + +/* +=============== +Sbar_DrawScoreboard +=============== +*/ +void Sbar_DrawScoreboard (void) +{ + Sbar_SoloScoreboard (); + if (cl.gametype == GAME_DEATHMATCH) + Sbar_DeathmatchOverlay (); +} + +//============================================================================= + +/* +=============== +Sbar_DrawInventory +=============== +*/ +void Sbar_DrawInventory (void) +{ + int i, val; + char num[6]; + float time; + int flashon; + + if (rogue) + { + if ( cl.stats[STAT_ACTIVEWEAPON] >= RIT_LAVA_NAILGUN ) + Sbar_DrawPicAlpha (0, -24, rsb_invbar[0], scr_sbaralpha.value); //johnfitz -- scr_sbaralpha + else + Sbar_DrawPicAlpha (0, -24, rsb_invbar[1], scr_sbaralpha.value); //johnfitz -- scr_sbaralpha + } + else + { + Sbar_DrawPicAlpha (0, -24, sb_ibar, scr_sbaralpha.value); //johnfitz -- scr_sbaralpha + } + +// weapons + for (i = 0; i < 7; i++) + { + if (cl.items & (IT_SHOTGUN<<i) ) + { + time = cl.item_gettime[i]; + flashon = (int)((cl.time - time)*10); + if (flashon >= 10) + { + if ( cl.stats[STAT_ACTIVEWEAPON] == (IT_SHOTGUN<<i) ) + flashon = 1; + else + flashon = 0; + } + else + flashon = (flashon%5) + 2; + + Sbar_DrawPic (i*24, -16, sb_weapons[flashon][i]); + + if (flashon > 1) + sb_updates = 0; // force update to remove flash + } + } + +// MED 01/04/97 +// hipnotic weapons + if (hipnotic) + { + int grenadeflashing = 0; + for (i = 0; i < 4; i++) + { + if (cl.items & (1<<hipweapons[i])) + { + time = cl.item_gettime[hipweapons[i]]; + flashon = (int)((cl.time - time)*10); + if (flashon >= 10) + { + if (cl.stats[STAT_ACTIVEWEAPON] == (1<<hipweapons[i])) + flashon = 1; + else + flashon = 0; + } + else + flashon = (flashon%5) + 2; + + // check grenade launcher + if (i == 2) + { + if (cl.items & HIT_PROXIMITY_GUN) + { + if (flashon) + { + grenadeflashing = 1; + Sbar_DrawPic (96, -16, hsb_weapons[flashon][2]); + } + } + } + else if (i == 3) + { + if (cl.items & (IT_SHOTGUN<<4)) + { + if (flashon && !grenadeflashing) + { + Sbar_DrawPic (96, -16, hsb_weapons[flashon][3]); + } + else if (!grenadeflashing) + { + Sbar_DrawPic (96, -16, hsb_weapons[0][3]); + } + } + else + Sbar_DrawPic (96, -16, hsb_weapons[flashon][4]); + } + else + Sbar_DrawPic (176 + (i*24), -16, hsb_weapons[flashon][i]); + + if (flashon > 1) + sb_updates = 0; // force update to remove flash + } + } + } + + if (rogue) + { + // check for powered up weapon. + if ( cl.stats[STAT_ACTIVEWEAPON] >= RIT_LAVA_NAILGUN ) + { + for (i=0;i<5;i++) + { + if (cl.stats[STAT_ACTIVEWEAPON] == (RIT_LAVA_NAILGUN << i)) + { + Sbar_DrawPic ((i+2)*24, -16, rsb_weapons[i]); + } + } + } + } + +// ammo counts + for (i = 0; i < 4; i++) + { + val = cl.stats[STAT_SHELLS+i]; + val = (val < 0)? 0 : q_min(999,val);//johnfitz -- cap displayed value to 999 + sprintf (num, "%3i", val); + if (num[0] != ' ') + Sbar_DrawCharacter ( (6*i+1)*8 + 2, -24, 18 + num[0] - '0'); + if (num[1] != ' ') + Sbar_DrawCharacter ( (6*i+2)*8 + 2, -24, 18 + num[1] - '0'); + if (num[2] != ' ') + Sbar_DrawCharacter ( (6*i+3)*8 + 2, -24, 18 + num[2] - '0'); + } + + flashon = 0; + // items + for (i = 0; i < 6; i++) + { + if (cl.items & (1<<(17+i))) + { + time = cl.item_gettime[17+i]; + if (time && time > cl.time - 2 && flashon) + { // flash frame + sb_updates = 0; + } + else + { + //MED 01/04/97 changed keys + if (!hipnotic || (i > 1)) + { + Sbar_DrawPic (192 + i*16, -16, sb_items[i]); + } + } + if (time && time > cl.time - 2) + sb_updates = 0; + } + } + //MED 01/04/97 added hipnotic items + // hipnotic items + if (hipnotic) + { + for (i = 0; i < 2; i++) + { + if (cl.items & (1<<(24+i))) + { + time = cl.item_gettime[24+i]; + if (time && time > cl.time - 2 && flashon ) + { // flash frame + sb_updates = 0; + } + else + { + Sbar_DrawPic (288 + i*16, -16, hsb_items[i]); + } + if (time && time > cl.time - 2) + sb_updates = 0; + } + } + } + + if (rogue) + { + // new rogue items + for (i = 0; i < 2; i++) + { + if (cl.items & (1<<(29+i))) + { + time = cl.item_gettime[29+i]; + if (time && time > cl.time - 2 && flashon) + { // flash frame + sb_updates = 0; + } + else + { + Sbar_DrawPic (288 + i*16, -16, rsb_items[i]); + } + if (time && time > cl.time - 2) + sb_updates = 0; + } + } + } + else + { + // sigils + for (i = 0; i < 4; i++) + { + if (cl.items & (1<<(28+i))) + { + time = cl.item_gettime[28+i]; + if (time && time > cl.time - 2 && flashon) + { // flash frame + sb_updates = 0; + } + else + Sbar_DrawPic (320-32 + i*8, -16, sb_sigil[i]); + if (time && time > cl.time - 2) + sb_updates = 0; + } + } + } +} + +//============================================================================= + +/* +=============== +Sbar_DrawFrags -- johnfitz -- heavy revision +=============== +*/ +void Sbar_DrawFrags (void) +{ + int numscores, i, x, color; + char num[12]; + scoreboard_t *s; + + Sbar_SortFrags (); + +// draw the text + numscores = q_min(scoreboardlines, 4); + + for (i = 0, x = 184; i<numscores; i++, x += 32) + { + s = &cl.scores[fragsort[i]]; + if (!s->name[0]) + continue; + + // top color + color = s->colors & 0xf0; + color = Sbar_ColorForMap (color); + Draw_Fill (x + 10, 1, 28, 4, color, 1); + + // bottom color + color = (s->colors & 15)<<4; + color = Sbar_ColorForMap (color); + Draw_Fill (x + 10, 5, 28, 3, color, 1); + + // number + sprintf (num, "%3i", s->frags); + Sbar_DrawCharacter (x + 12, -24, num[0]); + Sbar_DrawCharacter (x + 20, -24, num[1]); + Sbar_DrawCharacter (x + 28, -24, num[2]); + + // brackets + if (fragsort[i] == cl.viewentity - 1) + { + Sbar_DrawCharacter (x + 6, -24, 16); + Sbar_DrawCharacter (x + 32, -24, 17); + } + } +} + +//============================================================================= + + +/* +=============== +Sbar_DrawFace +=============== +*/ +void Sbar_DrawFace (void) +{ + int f, anim; + +// PGM 01/19/97 - team color drawing +// PGM 03/02/97 - fixed so color swatch only appears in CTF modes + if (rogue && (cl.maxclients != 1) && (teamplay.value>3) && (teamplay.value<7)) + { + int top, bottom; + int xofs; + char num[12]; + scoreboard_t *s; + + s = &cl.scores[cl.viewentity - 1]; + // draw background + top = s->colors & 0xf0; + bottom = (s->colors & 15)<<4; + top = Sbar_ColorForMap (top); + bottom = Sbar_ColorForMap (bottom); + + if (cl.gametype == GAME_DEATHMATCH) + xofs = 113; + else + xofs = ((vid.width - 320)>>1) + 113; + + Sbar_DrawPic (112, 0, rsb_teambord); + Draw_Fill (xofs, /*vid.height-*/24+3, 22, 9, top, 1); //johnfitz -- sbar coords are now relative + Draw_Fill (xofs, /*vid.height-*/24+12, 22, 9, bottom, 1); //johnfitz -- sbar coords are now relative + + // draw number + f = s->frags; + sprintf (num, "%3i",f); + + if (top == 8) + { + if (num[0] != ' ') + Sbar_DrawCharacter(113, 3, 18 + num[0] - '0'); + if (num[1] != ' ') + Sbar_DrawCharacter(120, 3, 18 + num[1] - '0'); + if (num[2] != ' ') + Sbar_DrawCharacter(127, 3, 18 + num[2] - '0'); + } + else + { + Sbar_DrawCharacter (113, 3, num[0]); + Sbar_DrawCharacter (120, 3, num[1]); + Sbar_DrawCharacter (127, 3, num[2]); + } + + return; + } +// PGM 01/19/97 - team color drawing + + if ((cl.items & (IT_INVISIBILITY | IT_INVULNERABILITY)) + == (IT_INVISIBILITY | IT_INVULNERABILITY)) + { + Sbar_DrawPic (112, 0, sb_face_invis_invuln); + return; + } + if (cl.items & IT_QUAD) + { + Sbar_DrawPic (112, 0, sb_face_quad ); + return; + } + if (cl.items & IT_INVISIBILITY) + { + Sbar_DrawPic (112, 0, sb_face_invis ); + return; + } + if (cl.items & IT_INVULNERABILITY) + { + Sbar_DrawPic (112, 0, sb_face_invuln); + return; + } + + if (cl.stats[STAT_HEALTH] >= 100) + f = 4; + else + f = cl.stats[STAT_HEALTH] / 20; + if (f < 0) // in case we ever decide to draw when health <= 0 + f = 0; + + if (cl.time <= cl.faceanimtime) + { + anim = 1; + sb_updates = 0; // make sure the anim gets drawn over + } + else + anim = 0; + Sbar_DrawPic (112, 0, sb_faces[f][anim]); +} + +/* +=============== +Sbar_Draw +=============== +*/ +void Sbar_Draw (void) +{ + float w; //johnfitz + + if (scr_con_current == vid.height) + return; // console is full screen + + if (cl.intermission) + return; //johnfitz -- never draw sbar during intermission + + if (sb_updates >= vid.numpages && !gl_clear.value && scr_sbaralpha.value >= 1 //johnfitz -- gl_clear, scr_sbaralpha + && !(gl_glsl_gamma_able && vid_gamma.value != 1)) //ericw -- must draw sbar every frame if doing glsl gamma + return; + + sb_updates++; + + GL_SetCanvas (CANVAS_DEFAULT); //johnfitz + + //johnfitz -- don't waste fillrate by clearing the area behind the sbar + w = CLAMP (320.0f, scr_sbarscale.value * 320.0f, (float)glwidth); + if (sb_lines && glwidth > w) + { + if (scr_sbaralpha.value < 1) + Draw_TileClear (0, glheight - sb_lines, glwidth, sb_lines); + if (cl.gametype == GAME_DEATHMATCH) + Draw_TileClear (w, glheight - sb_lines, glwidth - w, sb_lines); + else + { + Draw_TileClear (0, glheight - sb_lines, (glwidth - w) / 2.0f, sb_lines); + Draw_TileClear ((glwidth - w) / 2.0f + w, glheight - sb_lines, (glwidth - w) / 2.0f, sb_lines); + } + } + //johnfitz + + GL_SetCanvas (CANVAS_SBAR); //johnfitz + + if (scr_viewsize.value < 110) //johnfitz -- check viewsize instead of sb_lines + { + Sbar_DrawInventory (); + if (cl.maxclients != 1) + Sbar_DrawFrags (); + } + + if (sb_showscores || cl.stats[STAT_HEALTH] <= 0) + { + Sbar_DrawPicAlpha (0, 0, sb_scorebar, scr_sbaralpha.value); //johnfitz -- scr_sbaralpha + Sbar_DrawScoreboard (); + sb_updates = 0; + } + else if (scr_viewsize.value < 120) //johnfitz -- check viewsize instead of sb_lines + { + Sbar_DrawPicAlpha (0, 0, sb_sbar, scr_sbaralpha.value); //johnfitz -- scr_sbaralpha + + // keys (hipnotic only) + //MED 01/04/97 moved keys here so they would not be overwritten + if (hipnotic) + { + if (cl.items & IT_KEY1) + Sbar_DrawPic (209, 3, sb_items[0]); + if (cl.items & IT_KEY2) + Sbar_DrawPic (209, 12, sb_items[1]); + } + // armor + if (cl.items & IT_INVULNERABILITY) + { + Sbar_DrawNum (24, 0, 666, 3, 1); + Sbar_DrawPic (0, 0, draw_disc); + } + else + { + if (rogue) + { + Sbar_DrawNum (24, 0, cl.stats[STAT_ARMOR], 3, + cl.stats[STAT_ARMOR] <= 25); + if (cl.items & RIT_ARMOR3) + Sbar_DrawPic (0, 0, sb_armor[2]); + else if (cl.items & RIT_ARMOR2) + Sbar_DrawPic (0, 0, sb_armor[1]); + else if (cl.items & RIT_ARMOR1) + Sbar_DrawPic (0, 0, sb_armor[0]); + } + else + { + Sbar_DrawNum (24, 0, cl.stats[STAT_ARMOR], 3 + , cl.stats[STAT_ARMOR] <= 25); + if (cl.items & IT_ARMOR3) + Sbar_DrawPic (0, 0, sb_armor[2]); + else if (cl.items & IT_ARMOR2) + Sbar_DrawPic (0, 0, sb_armor[1]); + else if (cl.items & IT_ARMOR1) + Sbar_DrawPic (0, 0, sb_armor[0]); + } + } + + // face + Sbar_DrawFace (); + + // health + Sbar_DrawNum (136, 0, cl.stats[STAT_HEALTH], 3 + , cl.stats[STAT_HEALTH] <= 25); + + // ammo icon + if (rogue) + { + if (cl.items & RIT_SHELLS) + Sbar_DrawPic (224, 0, sb_ammo[0]); + else if (cl.items & RIT_NAILS) + Sbar_DrawPic (224, 0, sb_ammo[1]); + else if (cl.items & RIT_ROCKETS) + Sbar_DrawPic (224, 0, sb_ammo[2]); + else if (cl.items & RIT_CELLS) + Sbar_DrawPic (224, 0, sb_ammo[3]); + else if (cl.items & RIT_LAVA_NAILS) + Sbar_DrawPic (224, 0, rsb_ammo[0]); + else if (cl.items & RIT_PLASMA_AMMO) + Sbar_DrawPic (224, 0, rsb_ammo[1]); + else if (cl.items & RIT_MULTI_ROCKETS) + Sbar_DrawPic (224, 0, rsb_ammo[2]); + } + else + { + if (cl.items & IT_SHELLS) + Sbar_DrawPic (224, 0, sb_ammo[0]); + else if (cl.items & IT_NAILS) + Sbar_DrawPic (224, 0, sb_ammo[1]); + else if (cl.items & IT_ROCKETS) + Sbar_DrawPic (224, 0, sb_ammo[2]); + else if (cl.items & IT_CELLS) + Sbar_DrawPic (224, 0, sb_ammo[3]); + } + + Sbar_DrawNum (248, 0, cl.stats[STAT_AMMO], 3, + cl.stats[STAT_AMMO] <= 10); + } + + //johnfitz -- removed the vid.width > 320 check here + if (cl.gametype == GAME_DEATHMATCH) + Sbar_MiniDeathmatchOverlay (); +} + +//============================================================================= + +/* +================== +Sbar_IntermissionNumber + +================== +*/ +void Sbar_IntermissionNumber (int x, int y, int num, int digits, int color) +{ + char str[12]; + char *ptr; + int l, frame; + + l = Sbar_itoa (num, str); + ptr = str; + if (l > digits) + ptr += (l-digits); + if (l < digits) + x += (digits-l)*24; + + while (*ptr) + { + if (*ptr == '-') + frame = STAT_MINUS; + else + frame = *ptr -'0'; + + Draw_Pic (x,y,sb_nums[color][frame]); //johnfitz -- stretched menus + x += 24; + ptr++; + } +} + +/* +================== +Sbar_IntermissionPicForChar +================== +*/ +qpic_t *Sbar_IntermissionPicForChar (char c, int color) +{ + if ((unsigned)(c - '0') < 10) + return sb_nums[color][c - '0']; + if (c == '/') + return sb_slash; + if (c == ':') + return sb_colon; + if (c == '-') + return sb_nums[color][STAT_MINUS]; + return NULL; +} + +/* +================== +Sbar_IntermissionTextWidth +================== +*/ +int Sbar_IntermissionTextWidth (const char *str, int color) +{ + int len = 0; + while (*str) + { + qpic_t *pic = Sbar_IntermissionPicForChar (*str++, color); + len += pic ? pic->width : 24; + } + return len; +} + +/* +================== +Sbar_IntermissionText +================== +*/ +void Sbar_IntermissionText (int x, int y, const char *str, int color) +{ + while (*str) + { + qpic_t *pic = Sbar_IntermissionPicForChar (*str++, color); + if (!pic) + continue; + Draw_Pic (x, y, pic); + x += pic ? pic->width : 24; + } +} + +/* +================== +Sbar_DeathmatchOverlay +================== +*/ +void Sbar_DeathmatchOverlay (void) +{ + qpic_t *pic; + int i, k, l; + int top, bottom; + int x, y, f; + char num[12]; + scoreboard_t *s; + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + pic = Draw_CachePic ("gfx/ranking.lmp"); + M_DrawPic ((320-pic->width)/2, 8, pic); + +// scores + Sbar_SortFrags (); + +// draw the text + l = scoreboardlines; + + x = 80; //johnfitz -- simplified becuase some positioning is handled elsewhere + y = 40; + for (i = 0; i < l; i++) + { + k = fragsort[i]; + s = &cl.scores[k]; + if (!s->name[0]) + continue; + + // draw background + top = s->colors & 0xf0; + bottom = (s->colors & 15)<<4; + top = Sbar_ColorForMap (top); + bottom = Sbar_ColorForMap (bottom); + + Draw_Fill ( x, y, 40, 4, top, 1); //johnfitz -- stretched overlays + Draw_Fill ( x, y+4, 40, 4, bottom, 1); //johnfitz -- stretched overlays + + // draw number + f = s->frags; + sprintf (num, "%3i",f); + + Draw_Character ( x+8 , y, num[0]); //johnfitz -- stretched overlays + Draw_Character ( x+16 , y, num[1]); //johnfitz -- stretched overlays + Draw_Character ( x+24 , y, num[2]); //johnfitz -- stretched overlays + + if (k == cl.viewentity - 1) + Draw_Character ( x - 8, y, 12); //johnfitz -- stretched overlays + +#if 0 +{ + int total; + int n, minutes, tens, units; + + // draw time + total = cl.completed_time - s->entertime; + minutes = (int)total/60; + n = total - minutes*60; + tens = n/10; + units = n%10; + + sprintf (num, "%3i:%i%i", minutes, tens, units); + + M_Print ( x+48 , y, num); //johnfitz -- was Draw_String, changed for stretched overlays +} +#endif + + // draw name + M_Print (x+64, y, s->name); //johnfitz -- was Draw_String, changed for stretched overlays + + y += 10; + } + + GL_SetCanvas (CANVAS_SBAR); //johnfitz +} + +/* +================== +Sbar_MiniDeathmatchOverlay +================== +*/ +void Sbar_MiniDeathmatchOverlay (void) +{ + int i, k, top, bottom, x, y, f, numlines; + char num[12]; + float scale; //johnfitz + scoreboard_t *s; + + scale = CLAMP (1.0f, scr_sbarscale.value, (float)glwidth / 320.0f); //johnfitz + + //MAX_SCOREBOARDNAME = 32, so total width for this overlay plus sbar is 632, but we can cut off some i guess + if (glwidth/scale < 512 || scr_viewsize.value >= 120) //johnfitz -- test should consider scr_sbarscale + return; + +// scores + Sbar_SortFrags (); + +// draw the text + numlines = (scr_viewsize.value >= 110) ? 3 : 6; //johnfitz + + //find us + for (i = 0; i < scoreboardlines; i++) + if (fragsort[i] == cl.viewentity - 1) + break; + if (i == scoreboardlines) // we're not there + i = 0; + else // figure out start + i = i - numlines/2; + if (i > scoreboardlines - numlines) + i = scoreboardlines - numlines; + if (i < 0) + i = 0; + + x = 324; + y = (scr_viewsize.value >= 110) ? 24 : 0; //johnfitz -- start at the right place + for ( ; i < scoreboardlines && y <= 48; i++, y+=8) //johnfitz -- change y init, test, inc + { + k = fragsort[i]; + s = &cl.scores[k]; + if (!s->name[0]) + continue; + + // colors + top = s->colors & 0xf0; + bottom = (s->colors & 15)<<4; + top = Sbar_ColorForMap (top); + bottom = Sbar_ColorForMap (bottom); + + Draw_Fill (x, y+1, 40, 4, top, 1); + Draw_Fill (x, y+5, 40, 3, bottom, 1); + + // number + f = s->frags; + sprintf (num, "%3i",f); + Draw_Character (x+ 8, y, num[0]); + Draw_Character (x+16, y, num[1]); + Draw_Character (x+24, y, num[2]); + + // brackets + if (k == cl.viewentity - 1) + { + Draw_Character (x, y, 16); + Draw_Character (x+32, y, 17); + } + + // name + Draw_String (x+48, y, s->name); + } +} + +/* +================== +Sbar_IntermissionOverlay +================== +*/ +void Sbar_IntermissionOverlay (void) +{ + qpic_t *pic; + char time[32]; + char secrets[32]; + char monsters[32]; + int ltime, lsecrets, lmonsters; + int total; + + if (cl.gametype == GAME_DEATHMATCH) + { + Sbar_DeathmatchOverlay (); + return; + } + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + q_snprintf (time, sizeof (time), "%d:%02d", cl.completed_time / 60, cl.completed_time % 60); + q_snprintf (secrets, sizeof (secrets), "%d/%2d", cl.stats[STAT_SECRETS], cl.stats[STAT_TOTALSECRETS]); + q_snprintf (monsters, sizeof (monsters), "%d/%2d", cl.stats[STAT_MONSTERS], cl.stats[STAT_TOTALMONSTERS]); + + ltime = Sbar_IntermissionTextWidth (time, 0); + lsecrets = Sbar_IntermissionTextWidth (secrets, 0); + lmonsters = Sbar_IntermissionTextWidth (monsters, 0); + + total = q_max (ltime, lsecrets); + total = q_max (lmonsters, total); + + pic = Draw_CachePic ("gfx/inter.lmp"); + total += pic->width + 24; + total = q_min (320, total); + Draw_Pic (160 - total / 2, 56, pic); + + pic = Draw_CachePic ("gfx/complete.lmp"); + Draw_Pic (160 - pic->width / 2, 24, pic); + + Sbar_IntermissionText (160 + total / 2 - ltime, 64, time, 0); + Sbar_IntermissionText (160 + total / 2 - lsecrets, 104, secrets, 0); + Sbar_IntermissionText (160 + total / 2 - lmonsters, 144, monsters, 0); +} + + +/* +================== +Sbar_FinaleOverlay +================== +*/ +void Sbar_FinaleOverlay (void) +{ + qpic_t *pic; + + GL_SetCanvas (CANVAS_MENU); //johnfitz + + pic = Draw_CachePic ("gfx/finale.lmp"); + Draw_Pic ( (320 - pic->width)/2, 16, pic); //johnfitz -- stretched menus +} + diff --git a/Quake/sbar.h b/Quake/sbar.h new file mode 100644 index 0000000..bce73b5 --- /dev/null +++ b/Quake/sbar.h @@ -0,0 +1,46 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_SBAR_H +#define _QUAKE_SBAR_H + +// the status bar is only redrawn if something has changed, but if anything +// does, the entire thing will be redrawn for the next vid.numpages frames. + +extern int sb_lines; // scan lines to draw + +void Sbar_Init (void); +void Sbar_LoadPics (void); + +void Sbar_Changed (void); +// call whenever any of the client stats represented on the sbar changes + +void Sbar_Draw (void); +// called every frame by screen + +void Sbar_IntermissionOverlay (void); +// called each frame after the level has been completed + +void Sbar_FinaleOverlay (void); + +#endif /* _QUAKE_SBAR_H */ + diff --git a/Quake/screen.h b/Quake/screen.h new file mode 100644 index 0000000..73c888c --- /dev/null +++ b/Quake/screen.h @@ -0,0 +1,84 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_SCREEN_H +#define _QUAKE_SCREEN_H + +// screen.h + +void SCR_Init (void); +void SCR_LoadPics (void); + +void SCR_UpdateScreen (void); + + +void SCR_SizeUp (void); +void SCR_SizeDown (void); +void SCR_BringDownConsole (void); +void SCR_CenterPrint (const char *str); + +void SCR_BeginLoadingPlaque (void); +void SCR_EndLoadingPlaque (void); + +int SCR_ModalMessage (const char *text, float timeout); //johnfitz -- added timeout + +extern float scr_con_current; +extern float scr_conlines; // lines of console to display + +extern int sb_lines; + +extern int clearnotify; // set to 0 whenever notify text is drawn +extern qboolean scr_disabled_for_loading; +extern qboolean scr_skipupdate; + +extern cvar_t scr_viewsize; + +extern cvar_t scr_sbaralpha; //johnfitz + +void SCR_UpdateWholeScreen (void); + +//johnfitz -- stuff for 2d drawing control +typedef enum { + CANVAS_NONE, + CANVAS_DEFAULT, + CANVAS_CONSOLE, + CANVAS_MENU, + CANVAS_SBAR, + CANVAS_WARPIMAGE, + CANVAS_CROSSHAIR, + CANVAS_BOTTOMLEFT, + CANVAS_BOTTOMRIGHT, + CANVAS_TOPRIGHT, + CANVAS_INVALID = -1 +} canvastype; +extern cvar_t scr_menuscale; +extern cvar_t scr_sbarscale; +extern cvar_t scr_conwidth; +extern cvar_t scr_conscale; +extern cvar_t scr_scale; +extern cvar_t scr_crosshairscale; +//johnfitz + +extern int scr_tileclear_updates; //johnfitz + +#endif /* _QUAKE_SCREEN_H */ + diff --git a/Quake/server.h b/Quake/server.h new file mode 100644 index 0000000..001ee4b --- /dev/null +++ b/Quake/server.h @@ -0,0 +1,247 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef QUAKE_SERVER_H +#define QUAKE_SERVER_H + +// server.h + +typedef struct +{ + int maxclients; + int maxclientslimit; + struct client_s *clients; // [maxclients] + int serverflags; // episode completion information + qboolean changelevel_issued; // cleared when at SV_SpawnServer +} server_static_t; + +//============================================================================= + +#define MAX_SIGNON_BUFFERS 256 + +typedef enum {ss_loading, ss_active} server_state_t; + +typedef struct +{ + qboolean active; // false if only a net client + + qboolean paused; + qboolean loadgame; // handle connections specially + qboolean nomonsters; // server started with 'nomonsters' cvar active + + double time; + + int lastcheck; // used by PF_checkclient + double lastchecktime; + + char name[64]; // map name + char modelname[64]; // maps/<name>.bsp, for model_precache[0] + struct qmodel_s *worldmodel; + const char *model_precache[MAX_MODELS]; // NULL terminated + struct qmodel_s *models[MAX_MODELS]; + const char *sound_precache[MAX_SOUNDS]; // NULL terminated + const char *lightstyles[MAX_LIGHTSTYLES]; + int num_edicts; + int max_edicts; + edict_t *edicts; // can NOT be array indexed, because + // edict_t is variable sized, but can + // be used to reference the world ent + server_state_t state; // some actions are only valid during load + + sizebuf_t datagram; + byte datagram_buf[MAX_DATAGRAM]; + + sizebuf_t reliable_datagram; // copied to all clients at end of frame + byte reliable_datagram_buf[MAX_DATAGRAM]; + + sizebuf_t *signon; + int num_signon_buffers; + sizebuf_t *signon_buffers[MAX_SIGNON_BUFFERS]; + + unsigned protocol; //johnfitz + unsigned protocolflags; +} server_t; + + +#define NUM_PING_TIMES 16 +#define NUM_SPAWN_PARMS 16 + +enum sendsignon_e +{ + PRESPAWN_DONE, + PRESPAWN_FLUSH=1, + PRESPAWN_SIGNONBUFS, + PRESPAWN_SIGNONMSG, +}; + +typedef struct client_s +{ + qboolean active; // false = client is free + qboolean spawned; // false = don't send datagrams + qboolean dropasap; // has been told to go to another level + enum sendsignon_e sendsignon; // only valid before spawned + int signonidx; + + double last_message; // reliable messages must be sent + // periodically + + struct qsocket_s *netconnection; // communications handle + + usercmd_t cmd; // movement + vec3_t wishdir; // intended motion calced from cmd + + sizebuf_t message; // can be added to at any time, + // copied and clear once per frame + byte msgbuf[MAX_MSGLEN]; + edict_t *edict; // EDICT_NUM(clientnum+1) + char name[32]; // for printing to other people + int colors; + + float ping_times[NUM_PING_TIMES]; + int num_pings; // ping_times[num_pings%NUM_PING_TIMES] + +// spawn parms are carried from level to level + float spawn_parms[NUM_SPAWN_PARMS]; + +// client known data for deltas + int old_frags; +} client_t; + + +//============================================================================= + +// edict->movetype values +#define MOVETYPE_NONE 0 // never moves +#define MOVETYPE_ANGLENOCLIP 1 +#define MOVETYPE_ANGLECLIP 2 +#define MOVETYPE_WALK 3 // gravity +#define MOVETYPE_STEP 4 // gravity, special edge handling +#define MOVETYPE_FLY 5 +#define MOVETYPE_TOSS 6 // gravity +#define MOVETYPE_PUSH 7 // no clip to world, push and crush +#define MOVETYPE_NOCLIP 8 +#define MOVETYPE_FLYMISSILE 9 // extra size to monsters +#define MOVETYPE_BOUNCE 10 +#define MOVETYPE_GIB 11 // 2021 rerelease gibs + +// edict->solid values +#define SOLID_NOT 0 // no interaction with other objects +#define SOLID_TRIGGER 1 // touch on edge, but not blocking +#define SOLID_BBOX 2 // touch on edge, block +#define SOLID_SLIDEBOX 3 // touch on edge, but not an onground +#define SOLID_BSP 4 // bsp clip, touch on edge, block + +// edict->deadflag values +#define DEAD_NO 0 +#define DEAD_DYING 1 +#define DEAD_DEAD 2 + +#define DAMAGE_NO 0 +#define DAMAGE_YES 1 +#define DAMAGE_AIM 2 + +// edict->flags +#define FL_FLY 1 +#define FL_SWIM 2 +//#define FL_GLIMPSE 4 +#define FL_CONVEYOR 4 +#define FL_CLIENT 8 +#define FL_INWATER 16 +#define FL_MONSTER 32 +#define FL_GODMODE 64 +#define FL_NOTARGET 128 +#define FL_ITEM 256 +#define FL_ONGROUND 512 +#define FL_PARTIALGROUND 1024 // not all corners are valid +#define FL_WATERJUMP 2048 // player jumping out of water +#define FL_JUMPRELEASED 4096 // for jump debouncing + +// entity effects + +#define EF_BRIGHTFIELD 1 +#define EF_MUZZLEFLASH 2 +#define EF_BRIGHTLIGHT 4 +#define EF_DIMLIGHT 8 + +#define SPAWNFLAG_NOT_EASY 256 +#define SPAWNFLAG_NOT_MEDIUM 512 +#define SPAWNFLAG_NOT_HARD 1024 +#define SPAWNFLAG_NOT_DEATHMATCH 2048 + +//============================================================================ + +extern cvar_t teamplay; +extern cvar_t skill; +extern cvar_t deathmatch; +extern cvar_t coop; +extern cvar_t fraglimit; +extern cvar_t timelimit; + +extern server_static_t svs; // persistant server info +extern server_t sv; // local server + +extern client_t *host_client; + +extern edict_t *sv_player; + +//=========================================================== + +void SV_Init (void); + +void SV_StartParticle (vec3_t org, vec3_t dir, int color, int count); +void SV_StartSound (edict_t *entity, int channel, const char *sample, int volume, + float attenuation); +void SV_LocalSound (client_t *client, const char *sample); // for 2021 rerelease + +void SV_DropClient (qboolean crash); + +void SV_SendClientMessages (void); +void SV_ClearDatagram (void); +void SV_ReserveSignonSpace (int numbytes); + +int SV_ModelIndex (const char *name); + +void SV_SetIdealPitch (void); + +void SV_AddUpdates (void); + +void SV_ClientThink (void); +void SV_AddClientToServer (struct qsocket_s *ret); + +void SV_ClientPrintf (const char *fmt, ...) FUNC_PRINTF(1,2); +void SV_BroadcastPrintf (const char *fmt, ...) FUNC_PRINTF(1,2); + +void SV_Physics (void); + +qboolean SV_CheckBottom (edict_t *ent); +qboolean SV_movestep (edict_t *ent, vec3_t move, qboolean relink); + +void SV_WriteClientdataToMessage (edict_t *ent, sizebuf_t *msg); + +void SV_MoveToGoal (void); + +void SV_CheckForNewClients (void); +void SV_RunClients (void); +void SV_SaveSpawnparms (void); +void SV_SpawnServer (const char *server); + +#endif /* QUAKE_SERVER_H */ diff --git a/Quake/sh_game.c b/Quake/sh_game.c new file mode 100644 index 0000000..8415274 --- /dev/null +++ b/Quake/sh_game.c @@ -0,0 +1,374 @@ +/* + * sh_game.c -- Space Hulk game state machine, grid utilities, animation + * + * Copyright (C) 2026 fish fvch studios + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include "quakedef.h" +#include "sh_game.h" +#include <math.h> + +/* ============================================================ + * GLOBALS + * ============================================================ */ + +sh_gamestate_t sh_game; + +/* ============================================================ + * COORDINATE CONVERSION + * ============================================================ */ + +void SH_GridToWorld (int gx, int gy, vec3_t out) +{ + out[0] = (gx * SH_GRID_SIZE) + (SH_GRID_SIZE / 2); + out[1] = (gy * SH_GRID_SIZE) + (SH_GRID_SIZE / 2); + out[2] = 0; /* floor level; adjusted by caller if needed */ +} + +void SH_WorldToGrid (vec3_t pos, int *gx, int *gy) +{ + *gx = (int)floorf(pos[0] / SH_GRID_SIZE); + *gy = (int)floorf(pos[1] / SH_GRID_SIZE); +} + +/* ============================================================ + * FACING HELPERS + * ============================================================ */ + +float SH_FacingToYaw (sh_facing_t facing) +{ + switch (facing) { + case SH_FACING_NORTH: return 90; + case SH_FACING_EAST: return 0; + case SH_FACING_SOUTH: return 270; + case SH_FACING_WEST: return 180; + } + return 0; +} + +sh_facing_t SH_YawToFacing (float yaw) +{ + /* normalize to 0-360 */ + yaw = fmodf(yaw, 360.0f); + if (yaw < 0) yaw += 360.0f; + + if (yaw >= 315 || yaw < 45) return SH_FACING_EAST; + if (yaw >= 45 && yaw < 135) return SH_FACING_NORTH; + if (yaw >= 135 && yaw < 225) return SH_FACING_WEST; + return SH_FACING_SOUTH; +} + +void SH_FacingToDir (sh_facing_t facing, int *dx, int *dy) +{ + *dx = 0; + *dy = 0; + switch (facing) { + case SH_FACING_NORTH: *dy = 1; break; + case SH_FACING_EAST: *dx = 1; break; + case SH_FACING_SOUTH: *dy = -1; break; + case SH_FACING_WEST: *dx = -1; break; + } +} + +/* ============================================================ + * GRID COLLISION + * ============================================================ */ + +qboolean SH_GridBlocked (int gx, int gy, edict_t *ignore) +{ + vec3_t start, end, mins, maxs; + trace_t trace; + int i; + + /* trace downward through the BSP to see if a floor exists */ + SH_GridToWorld(gx, gy, start); + VectorCopy(start, end); + start[2] = 64; + end[2] = -64; + + mins[0] = -14; mins[1] = -14; mins[2] = 0; + maxs[0] = 14; maxs[1] = 14; maxs[2] = 56; + + trace = SV_Move(start, mins, maxs, end, MOVE_NOMONSTERS, ignore); + + if (trace.allsolid || trace.startsolid) + return true; + + /* check if any marine occupies this cell */ + for (i = 0; i < sh_game.num_marines; i++) + { + if (!sh_game.marines[i].active || !sh_game.marines[i].alive) + continue; + if (sh_game.marines[i].ent == ignore) + continue; + if (sh_game.marines[i].grid_x == gx && sh_game.marines[i].grid_y == gy) + return true; + } + + /* check genestealers too */ + for (i = 0; i < sh_game.num_genestealers; i++) + { + if (!sh_game.genestealers[i].active || !sh_game.genestealers[i].alive) + continue; + if (sh_game.genestealers[i].ent == ignore) + continue; + if (sh_game.genestealers[i].grid_x == gx && sh_game.genestealers[i].grid_y == gy) + return true; + } + + return false; +} + +/* ============================================================ + * ANIMATION SYSTEM + * ============================================================ */ + +void SH_AnimPush (edict_t *ent, vec3_t start, vec3_t end, + float start_yaw, float end_yaw, double duration) +{ + sh_anim_t *a; + int i; + + /* find a free slot */ + for (i = 0; i < SH_MAX_ANIMS; i++) + { + if (!sh_game.anims[i].active) + { + a = &sh_game.anims[i]; + a->active = true; + a->ent = ent; + VectorCopy(start, a->start_pos); + VectorCopy(end, a->end_pos); + a->start_yaw = start_yaw; + a->end_yaw = end_yaw; + a->start_time = realtime; + a->duration = duration; + return; + } + } + + /* no free slot -- snap immediately */ + VectorCopy(end, ent->v.origin); + ent->v.angles[1] = end_yaw; + SV_LinkEdict(ent, false); +} + +static void SH_AnimUpdate (void) +{ + int i; + double t; + float frac; + sh_anim_t *a; + + for (i = 0; i < SH_MAX_ANIMS; i++) + { + a = &sh_game.anims[i]; + if (!a->active) + continue; + + t = realtime - a->start_time; + if (t >= a->duration) + { + /* finished: snap to final position */ + VectorCopy(a->end_pos, a->ent->v.origin); + a->ent->v.angles[1] = a->end_yaw; + SV_LinkEdict(a->ent, false); + a->active = false; + continue; + } + + /* lerp position */ + frac = (float)(t / a->duration); + a->ent->v.origin[0] = a->start_pos[0] + (a->end_pos[0] - a->start_pos[0]) * frac; + a->ent->v.origin[1] = a->start_pos[1] + (a->end_pos[1] - a->start_pos[1]) * frac; + a->ent->v.origin[2] = a->start_pos[2] + (a->end_pos[2] - a->start_pos[2]) * frac; + + /* lerp yaw (handle wraparound) */ + { + float diff = a->end_yaw - a->start_yaw; + if (diff > 180) diff -= 360; + if (diff < -180) diff += 360; + a->ent->v.angles[1] = a->start_yaw + diff * frac; + } + + SV_LinkEdict(a->ent, false); + } +} + +qboolean SH_AnimBusy (void) +{ + int i; + for (i = 0; i < SH_MAX_ANIMS; i++) + { + if (sh_game.anims[i].active) + return true; + } + return false; +} + +/* ============================================================ + * MESSAGE LOG + * ============================================================ */ + +void SH_Log (sh_log_type_t type, const char *fmt, ...) +{ + va_list ap; + sh_log_msg_t *msg; + char buf[SH_LOG_MSG_LEN]; + + va_start(ap, fmt); + q_vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + + /* also print to console so we can see it during development */ + Con_Printf("[SH] %s\n", buf); + + /* check for stacking with previous message */ + if (sh_game.log.count > 0) + { + int prev = (sh_game.log.write_index - 1 + SH_MAX_LOG_MESSAGES) % SH_MAX_LOG_MESSAGES; + msg = &sh_game.log.messages[prev]; + if ((int)msg->type == (int)type && + msg->round == sh_game.round_number && + strcmp(msg->text, buf) == 0) + { + msg->stack_count++; + sh_game.log.updated = true; + return; + } + } + + /* write new message */ + msg = &sh_game.log.messages[sh_game.log.write_index]; + q_strlcpy(msg->text, buf, SH_LOG_MSG_LEN); + msg->type = type; + msg->round = sh_game.round_number; + msg->stack_count = 1; + + sh_game.log.write_index = (sh_game.log.write_index + 1) % SH_MAX_LOG_MESSAGES; + if (sh_game.log.count < SH_MAX_LOG_MESSAGES) + sh_game.log.count++; + sh_game.log.updated = true; +} + +/* ============================================================ + * CONSOLE COMMANDS + * ============================================================ */ + +static void SH_Cmd_NewGame (void) +{ + SH_NewGame(); +} + +/* ============================================================ + * INIT / SHUTDOWN + * ============================================================ */ + +void SH_Init (void) +{ + memset(&sh_game, 0, sizeof(sh_game)); + sh_game.phase = SH_PHASE_INACTIVE; + + Cmd_AddCommand("sh_newgame", SH_Cmd_NewGame); + + SH_Input_Init(); + + Con_Printf("Space Hulk system initialized.\n"); +} + +void SH_Shutdown (void) +{ + memset(&sh_game, 0, sizeof(sh_game)); +} + +/* ============================================================ + * NEW GAME + * ============================================================ */ + +void SH_NewGame (void) +{ + int i; + + if (!sv.active) + { + Con_Printf("SH_NewGame: no map loaded. Load a map first.\n"); + return; + } + + memset(&sh_game, 0, sizeof(sh_game)); + + /* spawn a single marine at grid 2,2 facing north for Phase 1 testing */ + SH_Marine_Spawn(0, 2, 2, SH_FACING_NORTH, SH_WEAPON_STORM_BOLTER, "Sgt. Marcus"); + sh_game.num_marines = 1; + sh_game.selected_marine = 0; + + /* begin player phase */ + sh_game.round_number = 1; + sh_game.phase = SH_PHASE_PLAYER; + SH_Marine_BeginPlayerPhase(); + + /* clear anims */ + for (i = 0; i < SH_MAX_ANIMS; i++) + sh_game.anims[i].active = false; + + SH_Log(SH_LOG_INFO, "Round %d -- PLAYER PHASE", sh_game.round_number); + Con_Printf("Space Hulk: game started. Use W/A/D to move, Space to end turn.\n"); +} + +/* ============================================================ + * ACTIVE CHECK + * ============================================================ */ + +qboolean SH_Active (void) +{ + return (sh_game.phase != SH_PHASE_INACTIVE); +} + +/* ============================================================ + * FRAME -- called every render frame from _Host_Frame + * ============================================================ */ + +void SH_Frame (void) +{ + if (!SH_Active()) + return; + + /* always update animations */ + SH_AnimUpdate(); + + /* don't advance game logic while animations are playing */ + if (SH_AnimBusy()) + return; + + switch (sh_game.phase) { + case SH_PHASE_PLAYER: + /* input-driven: SH_Input_KeyEvent dispatches actions. + * check if all marines are done. */ + if (SH_Marine_AllDone()) + { + sh_game.phase = SH_PHASE_ROUND_END; + } + break; + + case SH_PHASE_ROUND_END: + sh_game.round_number++; + SH_Marine_BeginPlayerPhase(); + sh_game.phase = SH_PHASE_PLAYER; + SH_Log(SH_LOG_INFO, "Round %d -- PLAYER PHASE", sh_game.round_number); + break; + + case SH_PHASE_BRIEFING: + case SH_PHASE_ALIEN: + case SH_PHASE_OVERWATCH_REACT: + case SH_PHASE_VICTORY: + case SH_PHASE_DEFEAT: + case SH_PHASE_INACTIVE: + /* not implemented in Phase 1 */ + break; + } +} diff --git a/Quake/sh_game.h b/Quake/sh_game.h new file mode 100644 index 0000000..92ada24 --- /dev/null +++ b/Quake/sh_game.h @@ -0,0 +1,276 @@ +/* + * sh_game.h -- Space Hulk turn-based game system for Quakespasm + * + * Copyright (C) 2026 fish fvch studios + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef SH_GAME_H +#define SH_GAME_H + +/* ============================================================ + * CONSTANTS + * ============================================================ */ + +#define SH_GRID_SIZE 128 /* quake units per grid cell */ +#define SH_MAX_MARINES 5 +#define SH_MAX_GENESTEALERS 32 +#define SH_MAX_DOORS 16 +#define SH_MAX_BLIP_ENTRIES 8 +#define SH_MAX_LOG_MESSAGES 32 +#define SH_LOG_MSG_LEN 80 + +#define SH_DEFAULT_AP 4 +#define SH_MAX_COMMAND_POINTS 6 /* 1d6 bonus AP per round */ + +#define SH_GENESTEALER_MP 6 /* movement points per alien phase */ + +/* AP costs */ +#define SH_AP_MOVE_FORWARD 1 +#define SH_AP_TURN 0 /* free turns for snappy gameplay */ +#define SH_AP_SHOOT 1 +#define SH_AP_OVERWATCH 2 +#define SH_AP_MELEE 1 +#define SH_AP_DOOR 1 + +/* animation durations (seconds) */ +#define SH_ANIM_MOVE_DURATION 0.2 +#define SH_ANIM_TURN_DURATION 0.15 +#define SH_ANIM_SHOOT_DURATION 0.3 + +#define SH_MAX_ANIMS 8 + +/* standing eye height above grid floor */ +#define SH_EYE_HEIGHT 32 + +/* ============================================================ + * ENUMERATIONS + * ============================================================ */ + +typedef enum { + SH_PHASE_INACTIVE, /* game not started */ + SH_PHASE_BRIEFING, /* pre-mission screen */ + SH_PHASE_PLAYER, /* player marine phase */ + SH_PHASE_ALIEN, /* AI genestealer phase */ + SH_PHASE_OVERWATCH_REACT, /* interrupt: marine reaction fire */ + SH_PHASE_ROUND_END, /* cleanup, check win/lose */ + SH_PHASE_VICTORY, + SH_PHASE_DEFEAT +} sh_phase_t; + +typedef enum { + SH_ACTION_NONE, + SH_ACTION_MOVE_FORWARD, + SH_ACTION_TURN_LEFT, + SH_ACTION_TURN_RIGHT, + SH_ACTION_TURN_180, + SH_ACTION_SHOOT, + SH_ACTION_OVERWATCH, + SH_ACTION_MELEE, + SH_ACTION_DOOR, + SH_ACTION_END_TURN +} sh_action_t; + +typedef enum { + SH_FACING_NORTH, /* +Y: yaw 90 */ + SH_FACING_EAST, /* +X: yaw 0 */ + SH_FACING_SOUTH, /* -Y: yaw 270 */ + SH_FACING_WEST /* -X: yaw 180 */ +} sh_facing_t; + +typedef enum { + SH_WEAPON_STORM_BOLTER, + SH_WEAPON_ASSAULT_CANNON, + SH_WEAPON_POWER_FIST, + SH_WEAPON_FLAMER +} sh_weapon_t; + +typedef enum { + SH_LOG_INFO, + SH_LOG_COMBAT, + SH_LOG_ALERT, + SH_LOG_KILL +} sh_log_type_t; + +typedef enum { + SH_AI_IDLE, + SH_AI_ADVANCE, + SH_AI_ATTACK, + SH_AI_FLANK +} sh_ai_state_t; + +/* ============================================================ + * DATA STRUCTURES + * ============================================================ */ + +/* Sidecar data for a marine entity */ +typedef struct { + qboolean active; + edict_t *ent; /* quake edict for rendering/collision */ + int squad_index; + int grid_x, grid_y; + sh_facing_t facing; + int ap; /* action points remaining this turn */ + int ap_max; /* base AP (default 4) */ + sh_weapon_t weapon; + int health; /* 1 = alive in Space Hulk */ + qboolean on_overwatch; + int overwatch_ap; + qboolean has_acted; /* activated this phase */ + qboolean alive; + char name[32]; +} sh_marine_t; + +/* Sidecar data for a genestealer entity */ +typedef struct { + qboolean active; + edict_t *ent; + int grid_x, grid_y; + sh_facing_t facing; + int mp; /* movement points remaining this phase */ + sh_ai_state_t ai_state; + int target_marine; /* index into marines[], or -1 */ + qboolean alive; + qboolean is_blip; + int blip_count; /* 1-3 genestealers per blip */ +} sh_genestealer_t; + +/* Door entity */ +typedef struct { + qboolean active; + edict_t *ent; + int grid_x, grid_y; + qboolean is_open; +} sh_door_t; + +/* Blip spawn entry point */ +typedef struct { + int grid_x, grid_y; + sh_facing_t entry_facing; + qboolean active; +} sh_blip_entry_t; + +/* Message log (adapted from ideas/turn_manager.c) */ +typedef struct { + char text[SH_LOG_MSG_LEN]; + sh_log_type_t type; + int round; + int stack_count; +} sh_log_msg_t; + +typedef struct { + sh_log_msg_t messages[SH_MAX_LOG_MESSAGES]; + int write_index; + int count; + qboolean updated; +} sh_message_log_t; + +/* Animation lerp for smooth grid movement in 3D */ +typedef struct { + qboolean active; + edict_t *ent; + vec3_t start_pos; + vec3_t end_pos; + float start_yaw; + float end_yaw; + double start_time; + double duration; +} sh_anim_t; + +/* ============================================================ + * MASTER GAME STATE + * ============================================================ */ + +typedef struct { + /* phase management */ + sh_phase_t phase; + sh_phase_t phase_before_interrupt; + int round_number; + int command_points; + int command_points_used; + + /* marines */ + sh_marine_t marines[SH_MAX_MARINES]; + int num_marines; + int selected_marine; + + /* genestealers */ + sh_genestealer_t genestealers[SH_MAX_GENESTEALERS]; + int num_genestealers; + int current_alien; + + /* doors */ + sh_door_t doors[SH_MAX_DOORS]; + int num_doors; + + /* spawn points */ + sh_blip_entry_t blip_entries[SH_MAX_BLIP_ENTRIES]; + int num_blip_entries; + + /* animation queue */ + sh_anim_t anims[SH_MAX_ANIMS]; + int num_anims; + + /* message log */ + sh_message_log_t log; + + /* camera (follows selected marine for now) */ + int camera_marine; +} sh_gamestate_t; + +extern sh_gamestate_t sh_game; + +/* ============================================================ + * PUBLIC API -- sh_game.c + * ============================================================ */ + +void SH_Init (void); +void SH_Shutdown (void); +void SH_NewGame (void); +void SH_Frame (void); +qboolean SH_Active (void); + +/* coordinate conversion */ +void SH_GridToWorld (int gx, int gy, vec3_t out); +void SH_WorldToGrid (vec3_t pos, int *gx, int *gy); + +/* facing helpers */ +float SH_FacingToYaw (sh_facing_t facing); +sh_facing_t SH_YawToFacing (float yaw); +void SH_FacingToDir (sh_facing_t facing, int *dx, int *dy); + +/* grid collision */ +qboolean SH_GridBlocked (int gx, int gy, edict_t *ignore); + +/* animation */ +void SH_AnimPush (edict_t *ent, vec3_t start, vec3_t end, + float start_yaw, float end_yaw, double duration); +qboolean SH_AnimBusy (void); + +/* logging */ +void SH_Log (sh_log_type_t type, const char *fmt, ...) FUNC_PRINTF(2,3); + +/* ============================================================ + * PUBLIC API -- sh_marine.c + * ============================================================ */ + +void SH_Marine_Spawn (int index, int gx, int gy, + sh_facing_t facing, sh_weapon_t weapon, const char *name); +qboolean SH_Marine_TryAction (int marine_index, sh_action_t action); +void SH_Marine_BeginPlayerPhase (void); +qboolean SH_Marine_AllDone (void); +void SH_Marine_SelectNext (void); +void SH_Marine_SelectPrev (void); + +/* ============================================================ + * PUBLIC API -- sh_input.c + * ============================================================ */ + +void SH_Input_Init (void); +qboolean SH_Input_KeyEvent (int key, qboolean down); + +#endif /* SH_GAME_H */ diff --git a/Quake/sh_input.c b/Quake/sh_input.c new file mode 100644 index 0000000..359a95f --- /dev/null +++ b/Quake/sh_input.c @@ -0,0 +1,152 @@ +/* + * sh_input.c -- Turn-based input handling for Space Hulk + * + * Copyright (C) 2026 fish fvch studios + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include "quakedef.h" +#include "sh_game.h" + +/* ============================================================ + * CONSOLE COMMAND WRAPPERS + * ============================================================ */ + +static void SH_Cmd_Move (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_MOVE_FORWARD); +} + +static void SH_Cmd_TurnLeft (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_TURN_LEFT); +} + +static void SH_Cmd_TurnRight (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_TURN_RIGHT); +} + +static void SH_Cmd_Turn180 (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_TURN_180); +} + +static void SH_Cmd_Shoot (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_SHOOT); +} + +static void SH_Cmd_Overwatch (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_OVERWATCH); +} + +static void SH_Cmd_EndTurn (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_END_TURN); +} + +static void SH_Cmd_NextMarine (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_SelectNext(); +} + +static void SH_Cmd_PrevMarine (void) +{ + if (SH_Active() && sh_game.phase == SH_PHASE_PLAYER) + SH_Marine_SelectPrev(); +} + +/* ============================================================ + * INIT -- register console commands + * ============================================================ */ + +void SH_Input_Init (void) +{ + Cmd_AddCommand("sh_move", SH_Cmd_Move); + Cmd_AddCommand("sh_turn_left", SH_Cmd_TurnLeft); + Cmd_AddCommand("sh_turn_right", SH_Cmd_TurnRight); + Cmd_AddCommand("sh_turn_180", SH_Cmd_Turn180); + Cmd_AddCommand("sh_shoot", SH_Cmd_Shoot); + Cmd_AddCommand("sh_overwatch", SH_Cmd_Overwatch); + Cmd_AddCommand("sh_end_turn", SH_Cmd_EndTurn); + Cmd_AddCommand("sh_next_marine", SH_Cmd_NextMarine); + Cmd_AddCommand("sh_prev_marine", SH_Cmd_PrevMarine); +} + +/* ============================================================ + * KEY EVENT -- intercept keys during game + * + * Called from Key_EventWithKeycode() before normal key handling. + * Returns true if we consumed the key. + * ============================================================ */ + +qboolean SH_Input_KeyEvent (int key, qboolean down) +{ + if (!down) + return false; /* only handle key-down */ + + if (sh_game.phase != SH_PHASE_PLAYER) + return false; /* only intercept during player phase */ + + /* swallow input while animations play */ + if (SH_AnimBusy()) + return true; + + switch (key) { + case 'w': + case K_UPARROW: + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_MOVE_FORWARD); + return true; + + case 'a': + case K_LEFTARROW: + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_TURN_LEFT); + return true; + + case 'd': + case K_RIGHTARROW: + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_TURN_RIGHT); + return true; + + case 's': + case K_DOWNARROW: + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_TURN_180); + return true; + + case 'f': + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_SHOOT); + return true; + + case 'o': + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_OVERWATCH); + return true; + + case 'e': + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_DOOR); + return true; + + case K_TAB: + SH_Marine_SelectNext(); + return true; + + case K_SPACE: + SH_Marine_TryAction(sh_game.selected_marine, SH_ACTION_END_TURN); + return true; + } + + return false; +} diff --git a/Quake/sh_marine.c b/Quake/sh_marine.c new file mode 100644 index 0000000..e7f3073 --- /dev/null +++ b/Quake/sh_marine.c @@ -0,0 +1,282 @@ +/* + * sh_marine.c -- Marine spawning, AP tracking, action execution + * + * Copyright (C) 2026 fish fvch studios + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include "quakedef.h" +#include "sh_game.h" + +/* ============================================================ + * SPAWN + * ============================================================ */ + +void SH_Marine_Spawn (int index, int gx, int gy, + sh_facing_t facing, sh_weapon_t weapon, const char *name) +{ + sh_marine_t *m; + vec3_t pos; + + if (index < 0 || index >= SH_MAX_MARINES) + return; + + m = &sh_game.marines[index]; + memset(m, 0, sizeof(*m)); + + m->active = true; + m->alive = true; + m->squad_index = index; + m->grid_x = gx; + m->grid_y = gy; + m->facing = facing; + m->weapon = weapon; + m->ap_max = SH_DEFAULT_AP; + m->ap = m->ap_max; + m->health = 1; + q_strlcpy(m->name, name, sizeof(m->name)); + + /* allocate a quake edict */ + m->ent = ED_Alloc(); + m->ent->v.classname = PR_SetEngineString("sh_marine"); + m->ent->v.movetype = MOVETYPE_NONE; /* we control all movement */ + m->ent->v.solid = SOLID_BBOX; + + /* use the player model as placeholder */ + m->ent->v.modelindex = SV_ModelIndex("progs/player.mdl"); + + /* position at grid center */ + SH_GridToWorld(gx, gy, pos); + VectorCopy(pos, m->ent->v.origin); + m->ent->v.angles[1] = SH_FacingToYaw(facing); + + /* bbox same as player */ + m->ent->v.mins[0] = -16; m->ent->v.mins[1] = -16; m->ent->v.mins[2] = -24; + m->ent->v.maxs[0] = 16; m->ent->v.maxs[1] = 16; m->ent->v.maxs[2] = 32; + + SV_LinkEdict(m->ent, false); + + Con_Printf("SH: Spawned %s at grid (%d, %d) facing %s\n", + m->name, gx, gy, + facing == SH_FACING_NORTH ? "North" : + facing == SH_FACING_EAST ? "East" : + facing == SH_FACING_SOUTH ? "South" : "West"); +} + +/* ============================================================ + * PHASE MANAGEMENT + * ============================================================ */ + +void SH_Marine_BeginPlayerPhase (void) +{ + int i; + for (i = 0; i < sh_game.num_marines; i++) + { + if (!sh_game.marines[i].active || !sh_game.marines[i].alive) + continue; + sh_game.marines[i].ap = sh_game.marines[i].ap_max; + sh_game.marines[i].has_acted = false; + sh_game.marines[i].on_overwatch = false; + sh_game.marines[i].overwatch_ap = 0; + } + + /* roll command points (1d6) */ + sh_game.command_points = (rand() % SH_MAX_COMMAND_POINTS) + 1; + sh_game.command_points_used = 0; +} + +qboolean SH_Marine_AllDone (void) +{ + int i; + for (i = 0; i < sh_game.num_marines; i++) + { + sh_marine_t *m = &sh_game.marines[i]; + if (!m->active || !m->alive) + continue; + /* a marine is "done" if has_acted with 0 AP, or is on overwatch */ + if (m->ap > 0 && !m->on_overwatch && !m->has_acted) + return false; + /* also check if they have AP but haven't ended turn */ + if (m->ap > 0 && !m->on_overwatch) + return false; + } + return true; +} + +void SH_Marine_SelectNext (void) +{ + int start = sh_game.selected_marine; + int i; + + for (i = 1; i <= sh_game.num_marines; i++) + { + int idx = (start + i) % sh_game.num_marines; + sh_marine_t *m = &sh_game.marines[idx]; + if (m->active && m->alive && m->ap > 0 && !m->on_overwatch) + { + sh_game.selected_marine = idx; + sh_game.camera_marine = idx; + SH_Log(SH_LOG_INFO, "Selected: %s (%d AP)", m->name, m->ap); + return; + } + } + /* no marine with AP found, stay on current */ +} + +void SH_Marine_SelectPrev (void) +{ + int start = sh_game.selected_marine; + int i; + + for (i = 1; i <= sh_game.num_marines; i++) + { + int idx = (start - i + sh_game.num_marines) % sh_game.num_marines; + sh_marine_t *m = &sh_game.marines[idx]; + if (m->active && m->alive && m->ap > 0 && !m->on_overwatch) + { + sh_game.selected_marine = idx; + sh_game.camera_marine = idx; + SH_Log(SH_LOG_INFO, "Selected: %s (%d AP)", m->name, m->ap); + return; + } + } +} + +/* ============================================================ + * ACTION EXECUTION + * ============================================================ */ + +qboolean SH_Marine_TryAction (int marine_index, sh_action_t action) +{ + sh_marine_t *m; + vec3_t old_pos, new_pos; + float old_yaw, new_yaw; + int dx, dy, new_gx, new_gy; + + if (marine_index < 0 || marine_index >= sh_game.num_marines) + return false; + + m = &sh_game.marines[marine_index]; + if (!m->active || !m->alive) + return false; + + switch (action) + { + case SH_ACTION_MOVE_FORWARD: + if (m->ap < SH_AP_MOVE_FORWARD) + { + SH_Log(SH_LOG_INFO, "Not enough AP to move."); + return false; + } + + SH_FacingToDir(m->facing, &dx, &dy); + new_gx = m->grid_x + dx; + new_gy = m->grid_y + dy; + + if (SH_GridBlocked(new_gx, new_gy, m->ent)) + { + SH_Log(SH_LOG_INFO, "Blocked!"); + return false; + } + + /* capture old position for animation */ + SH_GridToWorld(m->grid_x, m->grid_y, old_pos); + SH_GridToWorld(new_gx, new_gy, new_pos); + + /* update grid state */ + m->grid_x = new_gx; + m->grid_y = new_gy; + m->ap -= SH_AP_MOVE_FORWARD; + + /* push animation */ + old_yaw = SH_FacingToYaw(m->facing); + SH_AnimPush(m->ent, old_pos, new_pos, old_yaw, old_yaw, SH_ANIM_MOVE_DURATION); + + SH_Log(SH_LOG_INFO, "%s moves forward. (%d AP)", m->name, m->ap); + return true; + + case SH_ACTION_TURN_LEFT: + /* counter-clockwise: N -> W -> S -> E -> N */ + old_yaw = SH_FacingToYaw(m->facing); + m->facing = (sh_facing_t)((m->facing + 3) % 4); + new_yaw = SH_FacingToYaw(m->facing); + + /* turns are free (SH_AP_TURN == 0) but still cost if configured */ + if (m->ap < SH_AP_TURN) + return false; + m->ap -= SH_AP_TURN; + + SH_GridToWorld(m->grid_x, m->grid_y, old_pos); + SH_AnimPush(m->ent, old_pos, old_pos, old_yaw, new_yaw, SH_ANIM_TURN_DURATION); + + SH_Log(SH_LOG_INFO, "%s turns left. (%d AP)", m->name, m->ap); + return true; + + case SH_ACTION_TURN_RIGHT: + /* clockwise: N -> E -> S -> W -> N */ + old_yaw = SH_FacingToYaw(m->facing); + m->facing = (sh_facing_t)((m->facing + 1) % 4); + new_yaw = SH_FacingToYaw(m->facing); + + if (m->ap < SH_AP_TURN) + return false; + m->ap -= SH_AP_TURN; + + SH_GridToWorld(m->grid_x, m->grid_y, old_pos); + SH_AnimPush(m->ent, old_pos, old_pos, old_yaw, new_yaw, SH_ANIM_TURN_DURATION); + + SH_Log(SH_LOG_INFO, "%s turns right. (%d AP)", m->name, m->ap); + return true; + + case SH_ACTION_TURN_180: + old_yaw = SH_FacingToYaw(m->facing); + m->facing = (sh_facing_t)((m->facing + 2) % 4); + new_yaw = SH_FacingToYaw(m->facing); + + if (m->ap < SH_AP_TURN) + return false; + m->ap -= SH_AP_TURN; + + SH_GridToWorld(m->grid_x, m->grid_y, old_pos); + SH_AnimPush(m->ent, old_pos, old_pos, old_yaw, new_yaw, SH_ANIM_TURN_DURATION); + + SH_Log(SH_LOG_INFO, "%s turns around. (%d AP)", m->name, m->ap); + return true; + + case SH_ACTION_END_TURN: + m->ap = 0; + m->has_acted = true; + SH_Log(SH_LOG_INFO, "%s ends turn.", m->name); + /* auto-select next marine with AP */ + SH_Marine_SelectNext(); + return true; + + case SH_ACTION_OVERWATCH: + if (m->ap < SH_AP_OVERWATCH) + { + SH_Log(SH_LOG_INFO, "Need at least %d AP for Overwatch.", SH_AP_OVERWATCH); + return false; + } + m->overwatch_ap = m->ap; + m->ap = 0; + m->on_overwatch = true; + SH_Log(SH_LOG_ALERT, "%s goes on OVERWATCH!", m->name); + SH_Marine_SelectNext(); + return true; + + case SH_ACTION_SHOOT: + case SH_ACTION_MELEE: + case SH_ACTION_DOOR: + /* not implemented in Phase 1 */ + SH_Log(SH_LOG_INFO, "Not yet implemented."); + return false; + + case SH_ACTION_NONE: + default: + return false; + } +} diff --git a/Quake/snd_codec.c b/Quake/snd_codec.c new file mode 100644 index 0000000..7c332e7 --- /dev/null +++ b/Quake/snd_codec.c @@ -0,0 +1,331 @@ +/* + * Audio Codecs: Adapted from ioquake3 with changes. + * For now, only handles streaming music, not sound effects. + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2005 Stuart Dalton <badcdev@gmail.com> + * Copyright (C) 2010-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "quakedef.h" +#include "snd_codec.h" +#include "snd_codeci.h" + +/* headers for individual codecs */ +#include "snd_mikmod.h" +#include "snd_modplug.h" +#include "snd_xmp.h" +#include "snd_umx.h" +#include "snd_wave.h" +#include "snd_flac.h" +#include "snd_mp3.h" +#include "snd_vorbis.h" +#include "snd_opus.h" + + +static snd_codec_t *codecs; + +/* +================= +S_CodecRegister +================= +*/ +static void S_CodecRegister(snd_codec_t *codec) +{ + codec->next = codecs; + codecs = codec; +} + +/* +================= +S_CodecInit +================= +*/ +void S_CodecInit (void) +{ + snd_codec_t *codec; + codecs = NULL; + + /* Register in the inverse order + * of codec choice preference: */ +#ifdef USE_CODEC_UMX + S_CodecRegister(&umx_codec); +#endif +#ifdef USE_CODEC_MODPLUG + S_CodecRegister(&modplug_codec); +#endif +#ifdef USE_CODEC_MIKMOD + S_CodecRegister(&mikmod_codec); +#endif +#ifdef USE_CODEC_XMP + S_CodecRegister(&xmp_codec); +#endif +#ifdef USE_CODEC_WAVE + S_CodecRegister(&wav_codec); +#endif +#ifdef USE_CODEC_FLAC + S_CodecRegister(&flac_codec); +#endif +#ifdef USE_CODEC_MP3 + S_CodecRegister(&mp3_codec); +#endif +#ifdef USE_CODEC_VORBIS + S_CodecRegister(&vorbis_codec); +#endif +#ifdef USE_CODEC_OPUS + S_CodecRegister(&opus_codec); +#endif + + codec = codecs; + while (codec) + { + codec->initialize(); + codec = codec->next; + } +} + +/* +================= +S_CodecShutdown +================= +*/ +void S_CodecShutdown (void) +{ + snd_codec_t *codec = codecs; + while (codec) + { + codec->shutdown(); + codec = codec->next; + } + codecs = NULL; +} + +/* +================= +S_CodecOpenStream +================= +*/ +snd_stream_t *S_CodecOpenStreamType (const char *filename, unsigned int type, qboolean loop) +{ + snd_codec_t *codec; + snd_stream_t *stream; + + if (type == CODECTYPE_NONE) + { + Con_Printf("Bad type for %s\n", filename); + return NULL; + } + + codec = codecs; + while (codec) + { + if (type == codec->type) + break; + codec = codec->next; + } + if (!codec) + { + Con_Printf("Unknown type for %s\n", filename); + return NULL; + } + stream = S_CodecUtilOpen(filename, codec, loop); + if (stream) { + if (codec->codec_open(stream)) + stream->status = STREAM_PLAY; + else S_CodecUtilClose(&stream); + } + return stream; +} + +snd_stream_t *S_CodecOpenStreamExt (const char *filename, qboolean loop) +{ + snd_codec_t *codec; + snd_stream_t *stream; + const char *ext; + + ext = COM_FileGetExtension(filename); + if (! *ext) + { + Con_Printf("No extension for %s\n", filename); + return NULL; + } + + codec = codecs; + while (codec) + { + if (!q_strcasecmp(ext, codec->ext)) + break; + codec = codec->next; + } + if (!codec) + { + Con_Printf("Unknown extension for %s\n", filename); + return NULL; + } + stream = S_CodecUtilOpen(filename, codec, loop); + if (stream) { + if (codec->codec_open(stream)) + stream->status = STREAM_PLAY; + else S_CodecUtilClose(&stream); + } + return stream; +} + +snd_stream_t *S_CodecOpenStreamAny (const char *filename, qboolean loop) +{ + snd_codec_t *codec; + snd_stream_t *stream; + const char *ext; + + ext = COM_FileGetExtension(filename); + if (! *ext) /* try all available */ + { + char tmp[MAX_QPATH]; + + codec = codecs; + while (codec) + { + q_snprintf(tmp, sizeof(tmp), "%s.%s", filename, codec->ext); + stream = S_CodecUtilOpen(tmp, codec, loop); + if (stream) { + if (codec->codec_open(stream)) { + stream->status = STREAM_PLAY; + return stream; + } + S_CodecUtilClose(&stream); + } + codec = codec->next; + } + + return NULL; + } + else /* use the name as is */ + { + codec = codecs; + while (codec) + { + if (!q_strcasecmp(ext, codec->ext)) + break; + codec = codec->next; + } + if (!codec) + { + Con_Printf("Unknown extension for %s\n", filename); + return NULL; + } + stream = S_CodecUtilOpen(filename, codec, loop); + if (stream) { + if (codec->codec_open(stream)) + stream->status = STREAM_PLAY; + else S_CodecUtilClose(&stream); + } + return stream; + } +} + +qboolean S_CodecForwardStream (snd_stream_t *stream, unsigned int type) +{ + snd_codec_t *codec = codecs; + + while (codec) + { + if (type == codec->type) + break; + codec = codec->next; + } + if (!codec) return false; + stream->codec = codec; + return codec->codec_open(stream); +} + +void S_CodecCloseStream (snd_stream_t *stream) +{ + stream->status = STREAM_NONE; + stream->codec->codec_close(stream); +} + +int S_CodecRewindStream (snd_stream_t *stream) +{ + return stream->codec->codec_rewind(stream); +} + +int S_CodecJumpToOrder (snd_stream_t *stream, int to) +{ + if (stream->codec->codec_jump) { + return stream->codec->codec_jump(stream, to); + } + return -1; +} + +int S_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + return stream->codec->codec_read(stream, bytes, buffer); +} + +/* Util functions (used by codecs) */ + +snd_stream_t *S_CodecUtilOpen(const char *filename, snd_codec_t *codec, qboolean loop) +{ + snd_stream_t *stream; + FILE *handle; + qboolean pak; + long length; + + /* Try to open the file */ + length = (long) COM_FOpenFile(filename, &handle, NULL); + pak = file_from_pak; + if (length == -1) + { + Con_DPrintf("Couldn't open %s\n", filename); + return NULL; + } + + /* Allocate a stream, Z_Malloc zeroes its content */ + stream = (snd_stream_t *) Z_Malloc(sizeof(snd_stream_t)); + stream->codec = codec; + stream->loop = loop; + stream->fh.file = handle; + stream->fh.start = ftell(handle); + stream->fh.pos = 0; + stream->fh.length = length; + stream->fh.pak = stream->pak = pak; + q_strlcpy(stream->name, filename, MAX_QPATH); + + return stream; +} + +void S_CodecUtilClose(snd_stream_t **stream) +{ + fclose((*stream)->fh.file); + Z_Free(*stream); + *stream = NULL; +} + +int S_CodecIsAvailable (unsigned int type) +{ + snd_codec_t *codec = codecs; + while (codec) + { + if (type == codec->type) + return codec->initialized; + codec = codec->next; + } + return -1; +} + diff --git a/Quake/snd_codec.h b/Quake/snd_codec.h new file mode 100644 index 0000000..fcc9f86 --- /dev/null +++ b/Quake/snd_codec.h @@ -0,0 +1,107 @@ +/* + * Audio Codecs: Adapted from ioquake3 with changes. + * For now, only handles streaming music, not sound effects. + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2005 Stuart Dalton <badcdev@gmail.com> + * Copyright (C) 2010-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef _SND_CODEC_H_ +#define _SND_CODEC_H_ + +typedef struct snd_info_s +{ + int rate; + int bits, width; + int channels; + int samples; + int blocksize; + int size; + int dataofs; +} snd_info_t; + +typedef enum { + STREAM_NONE = -1, + STREAM_INIT, + STREAM_PAUSE, + STREAM_PLAY +} stream_status_t; + +typedef struct snd_codec_s snd_codec_t; + +typedef struct snd_stream_s +{ + fshandle_t fh; + qboolean pak; + char name[MAX_QPATH]; /* name of the source file */ + snd_info_t info; + stream_status_t status; + snd_codec_t *codec; /* codec handling this stream */ + qboolean loop; + void *priv; /* data private to the codec. */ +} snd_stream_t; + + +void S_CodecInit (void); +void S_CodecShutdown (void); + +/* Callers of the following S_CodecOpenStream* functions + * are reponsible for attaching any path to the filename */ + +snd_stream_t *S_CodecOpenStreamType (const char *filename, unsigned int type, + qboolean loop); + /* Decides according to the required type. */ + +snd_stream_t *S_CodecOpenStreamAny (const char *filename, qboolean loop); + /* Decides according to file extension. if the + * name has no extension, try all available. */ + +snd_stream_t *S_CodecOpenStreamExt (const char *filename, qboolean loop); + /* Decides according to file extension. the name + * MUST have an extension. */ + +void S_CodecCloseStream (snd_stream_t *stream); +int S_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer); +int S_CodecRewindStream (snd_stream_t *stream); +int S_CodecJumpToOrder (snd_stream_t *stream, int to); + +snd_stream_t *S_CodecUtilOpen(const char *filename, snd_codec_t *codec, qboolean loop); +void S_CodecUtilClose(snd_stream_t **stream); + + +#define CODECTYPE_NONE 0 +#define CODECTYPE_MID (1U << 0) +#define CODECTYPE_MOD (1U << 1) +#define CODECTYPE_FLAC (1U << 2) +#define CODECTYPE_WAV (1U << 3) +#define CODECTYPE_MP3 (1U << 4) +#define CODECTYPE_VORBIS (1U << 5) +#define CODECTYPE_OPUS (1U << 6) +#define CODECTYPE_UMX (1U << 7) + +#define CODECTYPE_WAVE CODECTYPE_WAV +#define CODECTYPE_MIDI CODECTYPE_MID + +int S_CodecIsAvailable (unsigned int type); + /* return 1 if available, 0 if codec failed init + * or -1 if no such codec is present. */ + +#endif /* _SND_CODEC_H_ */ + diff --git a/Quake/snd_codeci.h b/Quake/snd_codeci.h new file mode 100644 index 0000000..4df7031 --- /dev/null +++ b/Quake/snd_codeci.h @@ -0,0 +1,57 @@ +/* + * Audio Codecs: Adapted from ioquake3 with changes. + * For now, only handles streaming music, not sound effects. + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2005 Stuart Dalton <badcdev@gmail.com> + * Copyright (C) 2010-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef _SND_CODECI_H_ +#define _SND_CODECI_H_ + +/* Codec internals */ +typedef qboolean (*CODEC_INIT)(void); +typedef void (*CODEC_SHUTDOWN)(void); +typedef qboolean (*CODEC_OPEN)(snd_stream_t *stream); +typedef int (*CODEC_READ)(snd_stream_t *stream, int bytes, void *buffer); +typedef int (*CODEC_REWIND)(snd_stream_t *stream); +typedef int (*CODEC_JUMP)(snd_stream_t *stream, int order); +typedef void (*CODEC_CLOSE)(snd_stream_t *stream); + +struct snd_codec_s +{ + unsigned int type; /* handled data type. (1U << n) */ + qboolean initialized; /* init succeedded */ + const char *ext; /* expected extension */ + CODEC_INIT initialize; + CODEC_SHUTDOWN shutdown; + CODEC_OPEN codec_open; + CODEC_READ codec_read; + CODEC_REWIND codec_rewind; + CODEC_JUMP codec_jump; + CODEC_CLOSE codec_close; + snd_codec_t *next; +}; + +qboolean S_CodecForwardStream (snd_stream_t *stream, unsigned int type); + /* Forward a stream to another codec of 'type' type. */ + +#endif /* _SND_CODECI_H_ */ + diff --git a/Quake/snd_dma.c b/Quake/snd_dma.c new file mode 100644 index 0000000..1049a50 --- /dev/null +++ b/Quake/snd_dma.c @@ -0,0 +1,1065 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2011 O. Sezer <sezero@users.sourceforge.net> +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// snd_dma.c -- main control for any streaming sound output device + +#include "quakedef.h" +#include "snd_codec.h" +#include "bgmusic.h" + +static void S_Play (void); +static void S_PlayVol (void); +static void S_SoundList (void); +static void S_Update_ (void); +void S_StopAllSounds (qboolean clear); +static void S_StopAllSoundsC (void); + +// ======================================================================= +// Internal sound data & structures +// ======================================================================= + +channel_t snd_channels[MAX_CHANNELS]; +int total_channels; + +static int snd_blocked = 0; +static qboolean snd_initialized = false; + +static dma_t sn; +volatile dma_t *shm = NULL; + +vec3_t listener_origin; +vec3_t listener_forward; +vec3_t listener_right; +vec3_t listener_up; + +#define sound_nominal_clip_dist 1000.0 + +int soundtime; // sample PAIRS +int paintedtime; // sample PAIRS + +int s_rawend; +portable_samplepair_t s_rawsamples[MAX_RAW_SAMPLES]; + + +#define MAX_SFX 1024 +static sfx_t *known_sfx = NULL; // hunk allocated [MAX_SFX] +static int num_sfx; + +static sfx_t *ambient_sfx[NUM_AMBIENTS]; + +static qboolean sound_started = false; + +cvar_t bgmvolume = {"bgmvolume", "1", CVAR_ARCHIVE}; +cvar_t sfxvolume = {"volume", "0.7", CVAR_ARCHIVE}; + +cvar_t precache = {"precache", "1", CVAR_NONE}; +cvar_t loadas8bit = {"loadas8bit", "0", CVAR_NONE}; + +cvar_t sndspeed = {"sndspeed", "11025", CVAR_NONE}; +cvar_t snd_mixspeed = {"snd_mixspeed", "44100", CVAR_NONE}; + +#if defined(_WIN32) +#define SND_FILTERQUALITY_DEFAULT "5" +#else +#define SND_FILTERQUALITY_DEFAULT "1" +#endif + +cvar_t snd_filterquality = {"snd_filterquality", SND_FILTERQUALITY_DEFAULT, + CVAR_NONE}; + +static cvar_t nosound = {"nosound", "0", CVAR_NONE}; +static cvar_t ambient_level = {"ambient_level", "0.3", CVAR_NONE}; +static cvar_t ambient_fade = {"ambient_fade", "100", CVAR_NONE}; +static cvar_t snd_noextraupdate = {"snd_noextraupdate", "0", CVAR_NONE}; +static cvar_t snd_show = {"snd_show", "0", CVAR_NONE}; +static cvar_t _snd_mixahead = {"_snd_mixahead", "0.1", CVAR_ARCHIVE}; + + +static void S_SoundInfo_f (void) +{ + if (!sound_started || !shm) + { + Con_Printf ("sound system not started\n"); + return; + } + + Con_Printf("%d bit, %s, %d Hz\n", shm->samplebits, + (shm->channels == 2) ? "stereo" : "mono", shm->speed); + Con_Printf("%5d samples\n", shm->samples); + Con_Printf("%5d samplepos\n", shm->samplepos); + Con_Printf("%5d submission_chunk\n", shm->submission_chunk); + Con_Printf("%5d total_channels\n", total_channels); + Con_Printf("%p dma buffer\n", shm->buffer); +} + + +static void SND_Callback_sfxvolume (cvar_t *var) +{ + SND_InitScaletable (); +} + +static void SND_Callback_snd_filterquality (cvar_t *var) +{ + if (snd_filterquality.value < 1 || snd_filterquality.value > 5) + { + Con_Printf ("snd_filterquality must be between 1 and 5\n"); + Cvar_SetQuick (&snd_filterquality, SND_FILTERQUALITY_DEFAULT); + } +} + +/* +================ +S_Startup +================ +*/ +void S_Startup (void) +{ + if (!snd_initialized) + return; + + sound_started = SNDDMA_Init(&sn); + + if (!sound_started) + { + Con_Printf("Failed initializing sound\n"); + } + else + { + Con_Printf("Audio: %d bit, %s, %d Hz\n", shm->samplebits, + (shm->channels == 2) ? "stereo" : "mono", shm->speed); + } +} + + +/* +================ +S_Init +================ +*/ +void S_Init (void) +{ + int i; + + if (snd_initialized) + { + Con_Printf("Sound is already initialized\n"); + return; + } + + Cvar_RegisterVariable(&nosound); + Cvar_RegisterVariable(&sfxvolume); + Cvar_RegisterVariable(&precache); + Cvar_RegisterVariable(&loadas8bit); + Cvar_RegisterVariable(&bgmvolume); + Cvar_RegisterVariable(&ambient_level); + Cvar_RegisterVariable(&ambient_fade); + Cvar_RegisterVariable(&snd_noextraupdate); + Cvar_RegisterVariable(&snd_show); + Cvar_RegisterVariable(&_snd_mixahead); + Cvar_RegisterVariable(&sndspeed); + Cvar_RegisterVariable(&snd_mixspeed); + Cvar_RegisterVariable(&snd_filterquality); + + if (safemode || COM_CheckParm("-nosound")) + return; + + Con_Printf("\nSound Initialization\n"); + + Cmd_AddCommand("play", S_Play); + Cmd_AddCommand("playvol", S_PlayVol); + Cmd_AddCommand("stopsound", S_StopAllSoundsC); + Cmd_AddCommand("soundlist", S_SoundList); + Cmd_AddCommand("soundinfo", S_SoundInfo_f); + + i = COM_CheckParm("-sndspeed"); + if (i && i < com_argc-1) + { + Cvar_SetQuick (&sndspeed, com_argv[i + 1]); + } + + i = COM_CheckParm("-mixspeed"); + if (i && i < com_argc-1) + { + Cvar_SetQuick (&snd_mixspeed, com_argv[i + 1]); + } + + if (host_parms->memsize < 0x800000) + { + Cvar_SetQuick (&loadas8bit, "1"); + Con_Printf ("loading all sounds as 8bit\n"); + } + + Cvar_SetCallback(&sfxvolume, SND_Callback_sfxvolume); + Cvar_SetCallback(&snd_filterquality, &SND_Callback_snd_filterquality); + + SND_InitScaletable (); + + known_sfx = (sfx_t *) Hunk_AllocName (MAX_SFX*sizeof(sfx_t), "sfx_t"); + num_sfx = 0; + + snd_initialized = true; + + S_Startup (); + if (sound_started == 0) + return; + +// provides a tick sound until washed clean +// if (shm->buffer) +// shm->buffer[4] = shm->buffer[5] = 0x7f; // force a pop for debugging + + ambient_sfx[AMBIENT_WATER] = S_PrecacheSound ("ambience/water1.wav"); + ambient_sfx[AMBIENT_SKY] = S_PrecacheSound ("ambience/wind2.wav"); + + S_CodecInit (); + + S_StopAllSounds (true); +} + + +// ======================================================================= +// Shutdown sound engine +// ======================================================================= +void S_Shutdown (void) +{ + if (!sound_started) + return; + + sound_started = 0; + snd_blocked = 0; + + S_CodecShutdown(); + + SNDDMA_Shutdown(); + shm = NULL; +} + + +// ======================================================================= +// Load a sound +// ======================================================================= + +/* +================== +S_FindName + +================== +*/ +static sfx_t *S_FindName (const char *name) +{ + int i; + sfx_t *sfx; + + if (!name) + Sys_Error ("S_FindName: NULL"); + + if (strlen(name) >= MAX_QPATH) + Sys_Error ("Sound name too long: %s", name); + +// see if already loaded + for (i = 0; i < num_sfx; i++) + { + if (!strcmp(known_sfx[i].name, name)) + { + return &known_sfx[i]; + } + } + + if (num_sfx == MAX_SFX) + Sys_Error ("S_FindName: out of sfx_t"); + + sfx = &known_sfx[i]; + q_strlcpy (sfx->name, name, sizeof(sfx->name)); + + num_sfx++; + + return sfx; +} + + +/* +================== +S_TouchSound + +================== +*/ +void S_TouchSound (const char *name) +{ + sfx_t *sfx; + + if (!sound_started) + return; + + sfx = S_FindName (name); + Cache_Check (&sfx->cache); +} + +/* +================== +S_PrecacheSound + +================== +*/ +sfx_t *S_PrecacheSound (const char *name) +{ + sfx_t *sfx; + + if (!sound_started || nosound.value) + return NULL; + + sfx = S_FindName (name); + +// cache it in + if (precache.value) + S_LoadSound (sfx); + + return sfx; +} + + +//============================================================================= + +/* +================= +SND_PickChannel + +picks a channel based on priorities, empty slots, number of channels +================= +*/ +channel_t *SND_PickChannel (int entnum, int entchannel) +{ + int ch_idx; + int first_to_die; + int life_left; + +// Check for replacement sound, or find the best one to replace + first_to_die = -1; + life_left = 0x7fffffff; + for (ch_idx = NUM_AMBIENTS; ch_idx < NUM_AMBIENTS + MAX_DYNAMIC_CHANNELS; ch_idx++) + { + if (entchannel != 0 // channel 0 never overrides + && snd_channels[ch_idx].entnum == entnum + && (snd_channels[ch_idx].entchannel == entchannel || entchannel == -1) ) + { // always override sound from same entity + first_to_die = ch_idx; + break; + } + + // don't let monster sounds override player sounds + if (snd_channels[ch_idx].entnum == cl.viewentity && entnum != cl.viewentity && snd_channels[ch_idx].sfx) + continue; + + if (snd_channels[ch_idx].end - paintedtime < life_left) + { + life_left = snd_channels[ch_idx].end - paintedtime; + first_to_die = ch_idx; + } + } + + if (first_to_die == -1) + return NULL; + + if (snd_channels[first_to_die].sfx) + snd_channels[first_to_die].sfx = NULL; + + return &snd_channels[first_to_die]; +} + +/* +================= +SND_Spatialize + +spatializes a channel +================= +*/ +void SND_Spatialize (channel_t *ch) +{ + vec_t dot; + vec_t dist; + vec_t lscale, rscale, scale; + vec3_t source_vec; + +// anything coming from the view entity will always be full volume + if (ch->entnum == cl.viewentity) + { + ch->leftvol = ch->master_vol; + ch->rightvol = ch->master_vol; + return; + } + +// calculate stereo seperation and distance attenuation + VectorSubtract(ch->origin, listener_origin, source_vec); + dist = VectorNormalize(source_vec) * ch->dist_mult; + dot = DotProduct(listener_right, source_vec); + + if (shm->channels == 1) + { + rscale = 1.0; + lscale = 1.0; + } + else + { + rscale = 1.0 + dot; + lscale = 1.0 - dot; + } + +// add in distance effect + scale = (1.0 - dist) * rscale; + ch->rightvol = (int) (ch->master_vol * scale); + if (ch->rightvol < 0) + ch->rightvol = 0; + + scale = (1.0 - dist) * lscale; + ch->leftvol = (int) (ch->master_vol * scale); + if (ch->leftvol < 0) + ch->leftvol = 0; +} + + +// ======================================================================= +// Start a sound effect +// ======================================================================= + +void S_StartSound (int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float fvol, float attenuation) +{ + channel_t *target_chan, *check; + sfxcache_t *sc; + int ch_idx; + int skip; + + if (!sound_started) + return; + + if (!sfx) + return; + + if (nosound.value) + return; + +// pick a channel to play on + target_chan = SND_PickChannel(entnum, entchannel); + if (!target_chan) + return; + +// spatialize + memset (target_chan, 0, sizeof(*target_chan)); + VectorCopy(origin, target_chan->origin); + target_chan->dist_mult = attenuation / sound_nominal_clip_dist; + target_chan->master_vol = (int) (fvol * 255); + target_chan->entnum = entnum; + target_chan->entchannel = entchannel; + SND_Spatialize(target_chan); + + if (!target_chan->leftvol && !target_chan->rightvol) + return; // not audible at all + +// new channel + sc = S_LoadSound (sfx); + if (!sc) + { + target_chan->sfx = NULL; + return; // couldn't load the sound's data + } + + target_chan->sfx = sfx; + target_chan->pos = 0.0; + target_chan->end = paintedtime + sc->length; + +// if an identical sound has also been started this frame, offset the pos +// a bit to keep it from just making the first one louder + check = &snd_channels[NUM_AMBIENTS]; + for (ch_idx = NUM_AMBIENTS; ch_idx < NUM_AMBIENTS + MAX_DYNAMIC_CHANNELS; ch_idx++, check++) + { + if (check == target_chan) + continue; + if (check->sfx == sfx && !check->pos) + { + /* + skip = rand () % (int)(0.1 * shm->speed); + if (skip >= target_chan->end) + skip = target_chan->end - 1; + */ + /* LordHavoc: fixed skip calculations */ + skip = 0.1 * shm->speed; /* 0.1 * sc->speed */ + if (skip > sc->length) + skip = sc->length; + if (skip > 0) + skip = rand() % skip; + target_chan->pos += skip; + target_chan->end -= skip; + break; + } + } +} + +void S_StopSound (int entnum, int entchannel) +{ + int i; + + for (i = 0; i < MAX_DYNAMIC_CHANNELS; i++) + { + if (snd_channels[i].entnum == entnum + && snd_channels[i].entchannel == entchannel) + { + snd_channels[i].end = 0; + snd_channels[i].sfx = NULL; + return; + } + } +} + +void S_StopAllSounds (qboolean clear) +{ + int i; + + if (!sound_started) + return; + + total_channels = MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS; // no statics + + for (i = 0; i < MAX_CHANNELS; i++) + { + if (snd_channels[i].sfx) + snd_channels[i].sfx = NULL; + } + + memset(snd_channels, 0, MAX_CHANNELS * sizeof(channel_t)); + + if (clear) + S_ClearBuffer (); +} + +static void S_StopAllSoundsC (void) +{ + S_StopAllSounds (true); +} + +void S_ClearBuffer (void) +{ + int clear; + + if (!sound_started || !shm) + return; + + SNDDMA_LockBuffer (); + if (! shm->buffer) + return; + + s_rawend = 0; + + if (shm->samplebits == 8 && !shm->signed8) + clear = 0x80; + else + clear = 0; + + memset(shm->buffer, clear, shm->samples * shm->samplebits / 8); + + SNDDMA_Submit (); +} + + +/* +================= +S_StaticSound +================= +*/ +void S_StaticSound (sfx_t *sfx, vec3_t origin, float vol, float attenuation) +{ + channel_t *ss; + sfxcache_t *sc; + + if (!sfx) + return; + + if (total_channels == MAX_CHANNELS) + { + Con_Printf ("total_channels == MAX_CHANNELS\n"); + return; + } + + ss = &snd_channels[total_channels]; + total_channels++; + + sc = S_LoadSound (sfx); + if (!sc) + return; + + if (sc->loopstart == -1) + { + Con_Printf ("Sound %s not looped\n", sfx->name); + return; + } + + ss->sfx = sfx; + VectorCopy (origin, ss->origin); + ss->master_vol = (int)vol; + ss->dist_mult = (attenuation / 64) / sound_nominal_clip_dist; + ss->end = paintedtime + sc->length; + + SND_Spatialize (ss); +} + + +//============================================================================= + +/* +=================== +S_UpdateAmbientSounds +=================== +*/ +static void S_UpdateAmbientSounds (void) +{ + mleaf_t *l; + int vol, ambient_channel; + channel_t *chan; + +// no ambients when disconnected + if (cls.state != ca_connected) + return; +// calc ambient sound levels + if (!cl.worldmodel) + return; + + l = Mod_PointInLeaf (listener_origin, cl.worldmodel); + if (!l || !ambient_level.value) + { + for (ambient_channel = 0; ambient_channel < NUM_AMBIENTS; ambient_channel++) + snd_channels[ambient_channel].sfx = NULL; + return; + } + + for (ambient_channel = 0; ambient_channel < NUM_AMBIENTS; ambient_channel++) + { + chan = &snd_channels[ambient_channel]; + chan->sfx = ambient_sfx[ambient_channel]; + + vol = (int) (ambient_level.value * l->ambient_sound_level[ambient_channel]); + if (vol < 8) + vol = 0; + + // don't adjust volume too fast + if (chan->master_vol < vol) + { + chan->master_vol += (int) (host_frametime * ambient_fade.value); + if (chan->master_vol > vol) + chan->master_vol = vol; + } + else if (chan->master_vol > vol) + { + chan->master_vol -= (int) (host_frametime * ambient_fade.value); + if (chan->master_vol < vol) + chan->master_vol = vol; + } + + chan->leftvol = chan->rightvol = chan->master_vol; + } +} + + +/* +=================== +S_RawSamples (from QuakeII) + +Streaming music support. Byte swapping +of data must be handled by the codec. +Expects data in signed 16 bit, or unsigned +8 bit format. +=================== +*/ +void S_RawSamples (int samples, int rate, int width, int channels, byte *data, float volume) +{ + int i; + int src, dst; + float scale; + int intVolume; + + if (s_rawend < paintedtime) + s_rawend = paintedtime; + + scale = (float) rate / shm->speed; + intVolume = (int) (256 * volume); + + if (channels == 2 && width == 2) + { + for (i = 0; ; i++) + { + src = i * scale; + if (src >= samples) + break; + dst = s_rawend & (MAX_RAW_SAMPLES - 1); + s_rawend++; + s_rawsamples [dst].left = ((short *) data)[src * 2] * intVolume; + s_rawsamples [dst].right = ((short *) data)[src * 2 + 1] * intVolume; + } + } + else if (channels == 1 && width == 2) + { + for (i = 0; ; i++) + { + src = i * scale; + if (src >= samples) + break; + dst = s_rawend & (MAX_RAW_SAMPLES - 1); + s_rawend++; + s_rawsamples [dst].left = ((short *) data)[src] * intVolume; + s_rawsamples [dst].right = ((short *) data)[src] * intVolume; + } + } + else if (channels == 2 && width == 1) + { + intVolume *= 256; + + for (i = 0; ; i++) + { + src = i * scale; + if (src >= samples) + break; + dst = s_rawend & (MAX_RAW_SAMPLES - 1); + s_rawend++; + // s_rawsamples [dst].left = ((signed char *) data)[src * 2] * intVolume; + // s_rawsamples [dst].right = ((signed char *) data)[src * 2 + 1] * intVolume; + s_rawsamples [dst].left = (((byte *) data)[src * 2] - 128) * intVolume; + s_rawsamples [dst].right = (((byte *) data)[src * 2 + 1] - 128) * intVolume; + } + } + else if (channels == 1 && width == 1) + { + intVolume *= 256; + + for (i = 0; ; i++) + { + src = i * scale; + if (src >= samples) + break; + dst = s_rawend & (MAX_RAW_SAMPLES - 1); + s_rawend++; + // s_rawsamples [dst].left = ((signed char *) data)[src] * intVolume; + // s_rawsamples [dst].right = ((signed char *) data)[src] * intVolume; + s_rawsamples [dst].left = (((byte *) data)[src] - 128) * intVolume; + s_rawsamples [dst].right = (((byte *) data)[src] - 128) * intVolume; + } + } +} + +/* +============ +S_Update + +Called once each time through the main loop +============ +*/ +void S_Update (vec3_t origin, vec3_t forward, vec3_t right, vec3_t up) +{ + int i, j; + int total; + channel_t *ch; + channel_t *combine; + + if (!sound_started || (snd_blocked > 0)) + return; + + VectorCopy(origin, listener_origin); + VectorCopy(forward, listener_forward); + VectorCopy(right, listener_right); + VectorCopy(up, listener_up); + +// update general area ambient sound sources + S_UpdateAmbientSounds (); + + combine = NULL; + +// update spatialization for static and dynamic sounds + ch = snd_channels + NUM_AMBIENTS; + for (i = NUM_AMBIENTS; i < total_channels; i++, ch++) + { + if (!ch->sfx) + continue; + SND_Spatialize(ch); // respatialize channel + if (!ch->leftvol && !ch->rightvol) + continue; + + // try to combine static sounds with a previous channel of the same + // sound effect so we don't mix five torches every frame + + if (i >= MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS) + { + // see if it can just use the last one + if (combine && combine->sfx == ch->sfx) + { + combine->leftvol += ch->leftvol; + combine->rightvol += ch->rightvol; + ch->leftvol = ch->rightvol = 0; + continue; + } + // search for one + combine = snd_channels + MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS; + for (j = MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS; j < i; j++, combine++) + { + if (combine->sfx == ch->sfx) + break; + } + + if (j == total_channels) + { + combine = NULL; + } + else + { + if (combine != ch) + { + combine->leftvol += ch->leftvol; + combine->rightvol += ch->rightvol; + ch->leftvol = ch->rightvol = 0; + } + continue; + } + } + } + +// +// debugging output +// + if (snd_show.value) + { + total = 0; + ch = snd_channels; + for (i = 0; i < total_channels; i++, ch++) + { + if (ch->sfx && (ch->leftvol || ch->rightvol) ) + { + // Con_Printf ("%3i %3i %s\n", ch->leftvol, ch->rightvol, ch->sfx->name); + total++; + } + } + + Con_Printf ("----(%i)----\n", total); + } + +// add raw data from streamed samples +// BGM_Update(); // moved to the main loop just before S_Update () + +// mix some sound + S_Update_(); +} + +static void GetSoundtime (void) +{ + int samplepos; + static int buffers; + static int oldsamplepos; + int fullsamples; + + fullsamples = shm->samples / shm->channels; + +// it is possible to miscount buffers if it has wrapped twice between +// calls to S_Update. Oh well. + samplepos = SNDDMA_GetDMAPos(); + + if (samplepos < oldsamplepos) + { + buffers++; // buffer wrapped + + if (paintedtime > 0x40000000) + { // time to chop things off to avoid 32 bit limits + buffers = 0; + paintedtime = fullsamples; + S_StopAllSounds (true); + } + } + oldsamplepos = samplepos; + + soundtime = buffers*fullsamples + samplepos/shm->channels; +} + +void S_ExtraUpdate (void) +{ + if (snd_noextraupdate.value) + return; // don't pollute timings + S_Update_(); +} + +static void S_Update_ (void) +{ + unsigned int endtime; + int samps; + + if (!sound_started || (snd_blocked > 0)) + return; + + SNDDMA_LockBuffer (); + if (! shm->buffer) + return; + +// Updates DMA time + GetSoundtime(); + +// check to make sure that we haven't overshot + if (paintedtime < soundtime) + { + // Con_Printf ("S_Update_ : overflow\n"); + paintedtime = soundtime; + } + +// mix ahead of current position + endtime = soundtime + (unsigned int)(_snd_mixahead.value * shm->speed); + samps = shm->samples >> (shm->channels - 1); + endtime = q_min(endtime, (unsigned int)(soundtime + samps)); + + S_PaintChannels (endtime); + + SNDDMA_Submit (); +} + +void S_BlockSound (void) +{ +/* FIXME: do we really need the blocking at the + * driver level? + */ + if (sound_started && snd_blocked == 0) /* ++snd_blocked == 1 */ + { + snd_blocked = 1; + S_ClearBuffer (); + if (shm) + SNDDMA_BlockSound(); + } +} + +void S_UnblockSound (void) +{ + if (!sound_started || !snd_blocked) + return; + if (snd_blocked == 1) /* --snd_blocked == 0 */ + { + snd_blocked = 0; + SNDDMA_UnblockSound(); + S_ClearBuffer (); + } +} + +/* +=============================================================================== + +console functions + +=============================================================================== +*/ + +static void S_Play (void) +{ + static int hash = 345; + int i; + char name[256]; + sfx_t *sfx; + + i = 1; + while (i < Cmd_Argc()) + { + q_strlcpy(name, Cmd_Argv(i), sizeof(name)); + if (!strrchr(Cmd_Argv(i), '.')) + { + q_strlcat(name, ".wav", sizeof(name)); + } + sfx = S_PrecacheSound(name); + S_StartSound(hash++, 0, sfx, listener_origin, 1.0, 1.0); + i++; + } +} + +static void S_PlayVol (void) +{ + static int hash = 543; + int i; + float vol; + char name[256]; + sfx_t *sfx; + + i = 1; + while (i < Cmd_Argc()) + { + q_strlcpy(name, Cmd_Argv(i), sizeof(name)); + if (!strrchr(Cmd_Argv(i), '.')) + { + q_strlcat(name, ".wav", sizeof(name)); + } + sfx = S_PrecacheSound(name); + vol = atof(Cmd_Argv(i + 1)); + S_StartSound(hash++, 0, sfx, listener_origin, vol, 1.0); + i += 2; + } +} + +static void S_SoundList (void) +{ + int i; + sfx_t *sfx; + sfxcache_t *sc; + int size, total; + + total = 0; + for (sfx = known_sfx, i = 0; i < num_sfx; i++, sfx++) + { + sc = (sfxcache_t *) Cache_Check (&sfx->cache); + if (!sc) + continue; + size = sc->length*sc->width*(sc->stereo + 1); + total += size; + if (sc->loopstart >= 0) + Con_SafePrintf ("L"); //johnfitz -- was Con_Printf + else + Con_SafePrintf (" "); //johnfitz -- was Con_Printf + Con_SafePrintf("(%2db) %6i : %s\n", sc->width*8, size, sfx->name); //johnfitz -- was Con_Printf + } + Con_Printf ("%i sounds, %i bytes\n", num_sfx, total); //johnfitz -- added count +} + + +void S_LocalSound (const char *name) +{ + sfx_t *sfx; + + if (nosound.value) + return; + if (!sound_started) + return; + + sfx = S_PrecacheSound (name); + if (!sfx) + { + Con_Printf ("S_LocalSound: can't cache %s\n", name); + return; + } + S_StartSound (cl.viewentity, -1, sfx, vec3_origin, 1, 1); +} + + +void S_ClearPrecache (void) +{ +} + +void S_BeginPrecaching (void) +{ +} + +void S_EndPrecaching (void) +{ +} diff --git a/Quake/snd_flac.c b/Quake/snd_flac.c new file mode 100644 index 0000000..838404b --- /dev/null +++ b/Quake/snd_flac.c @@ -0,0 +1,390 @@ +/* + * fLaC streaming music support, loosely based QuakeForge implementation + * with modifications. requires libFLAC >= 1.0.4 at compile and runtime. + * + * Copyright (C) 2005 Bill Currie <bill@taniwha.org> + * Copyright (C) 2013 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_FLAC) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_flac.h" + +#undef LEGACY_FLAC +#include <FLAC/stream_decoder.h> +/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */ +#if !defined(FLAC_API_VERSION_CURRENT) || ((FLAC_API_VERSION_CURRENT+0) < 8) +#define LEGACY_FLAC +#include <FLAC/seekable_stream_decoder.h> +#endif + +#ifdef LEGACY_FLAC +#define FLAC__StreamDecoder FLAC__SeekableStreamDecoder +#define FLAC__StreamDecoderReadStatus FLAC__SeekableStreamDecoderReadStatus +#define FLAC__StreamDecoderSeekStatus FLAC__SeekableStreamDecoderSeekStatus +#define FLAC__StreamDecoderTellStatus FLAC__SeekableStreamDecoderTellStatus +#define FLAC__StreamDecoderLengthStatus FLAC__SeekableStreamDecoderLengthStatus + +#define FLAC__stream_decoder_new FLAC__seekable_stream_decoder_new +#define FLAC__stream_decoder_finish FLAC__seekable_stream_decoder_finish +#define FLAC__stream_decoder_delete FLAC__seekable_stream_decoder_delete +#define FLAC__stream_decoder_process_single FLAC__seekable_stream_decoder_process_single +#define FLAC__stream_decoder_seek_absolute FLAC__seekable_stream_decoder_seek_absolute +#define FLAC__stream_decoder_process_until_end_of_metadata FLAC__seekable_stream_decoder_process_until_end_of_metadata +#define FLAC__stream_decoder_get_state FLAC__seekable_stream_decoder_get_state + +#define FLAC__STREAM_DECODER_INIT_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_OK +#define FLAC__STREAM_DECODER_READ_STATUS_CONTINUE FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK +#define FLAC__STREAM_DECODER_READ_STATUS_ABORT FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR +#define FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK /* !!! */ +#define FLAC__STREAM_DECODER_WRITE_STATUS_ABORT FLAC__STREAM_DECODER_WRITE_STATUS_ABORT +#define FLAC__STREAM_DECODER_SEEK_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK +#define FLAC__STREAM_DECODER_SEEK_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR +#define FLAC__STREAM_DECODER_TELL_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK +#define FLAC__STREAM_DECODER_TELL_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR +#define FLAC__STREAM_DECODER_LENGTH_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK +typedef unsigned FLAC_SIZE_T; +#else +typedef size_t FLAC_SIZE_T; +#endif + +typedef struct { + FLAC__StreamDecoder *decoder; + fshandle_t *file; + snd_info_t *info; + byte *buffer; + int size, pos, error; +} flacfile_t; + +/* CALLBACK FUNCTIONS: */ +static void +flac_error_func (const FLAC__StreamDecoder *decoder, + FLAC__StreamDecoderErrorStatus status, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + ff->error = -1; + Con_Printf ("FLAC: decoder error %i\n", status); +} + +static FLAC__StreamDecoderReadStatus +flac_read_func (const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], + FLAC_SIZE_T *bytes, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + if (*bytes > 0) + { + *bytes = FS_fread(buffer, 1, *bytes, ff->file); + if (FS_ferror(ff->file)) + return FLAC__STREAM_DECODER_READ_STATUS_ABORT; + if (*bytes == 0) + return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + } + return FLAC__STREAM_DECODER_READ_STATUS_ABORT; +} + +static FLAC__StreamDecoderSeekStatus +flac_seek_func (const FLAC__StreamDecoder *decoder, + FLAC__uint64 absolute_byte_offset, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + if (FS_fseek(ff->file, (long)absolute_byte_offset, SEEK_SET) < 0) + return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + return FLAC__STREAM_DECODER_SEEK_STATUS_OK; +} + +static FLAC__StreamDecoderTellStatus +flac_tell_func (const FLAC__StreamDecoder *decoder, + FLAC__uint64 *absolute_byte_offset, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + long pos = FS_ftell (ff->file); + if (pos < 0) return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; + *absolute_byte_offset = (FLAC__uint64) pos; + return FLAC__STREAM_DECODER_TELL_STATUS_OK; +} + +static FLAC__StreamDecoderLengthStatus +flac_length_func (const FLAC__StreamDecoder *decoder, + FLAC__uint64 *stream_length, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + *stream_length = (FLAC__uint64) FS_filelength (ff->file); + return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; +} + +static FLAC__bool +flac_eof_func (const FLAC__StreamDecoder *decoder, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + if (FS_feof (ff->file)) return true; + return false; +} + +static FLAC__StreamDecoderWriteStatus +flac_write_func (const FLAC__StreamDecoder *decoder, + const FLAC__Frame *frame, const FLAC__int32 * const buffer[], + void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + + if (!ff->buffer) { + ff->buffer = (byte *) malloc (ff->info->blocksize * ff->info->channels * ff->info->width); + if (!ff->buffer) { + ff->error = -1; /* needn't set this here, but... */ + Con_Printf("Insufficient memory for fLaC audio\n"); + return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; + } + } + + if (ff->info->channels == 1) + { + unsigned i; + const FLAC__int32 *in = buffer[0]; + + if (ff->info->bits == 8) + { + byte *out = ff->buffer; + for (i = 0; i < frame->header.blocksize; i++) + *out++ = *in++ + 128; + } + else + { + short *out = (short *) ff->buffer; + for (i = 0; i < frame->header.blocksize; i++) + *out++ = *in++; + } + } + else + { + unsigned i; + const FLAC__int32 *li = buffer[0]; + const FLAC__int32 *ri = buffer[1]; + + if (ff->info->bits == 8) + { + char *lo = (char *) ff->buffer + 0; + char *ro = (char *) ff->buffer + 1; + for (i = 0; i < frame->header.blocksize; i++, lo++, ro++) + { + *lo++ = *li++ + 128; + *ro++ = *ri++ + 128; + } + } + else + { + short *lo = (short *) ff->buffer + 0; + short *ro = (short *) ff->buffer + 1; + for (i = 0; i < frame->header.blocksize; i++, lo++, ro++) + { + *lo++ = *li++; + *ro++ = *ri++; + } + } + } + + ff->size = frame->header.blocksize * ff->info->width * ff->info->channels; + ff->pos = 0; + return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; +} + +static void +flac_meta_func (const FLAC__StreamDecoder *decoder, + const FLAC__StreamMetadata *metadata, void *client_data) +{ + flacfile_t *ff = (flacfile_t *) client_data; + if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) + { + ff->info->rate = metadata->data.stream_info.sample_rate; + ff->info->bits = metadata->data.stream_info.bits_per_sample; + ff->info->width = ff->info->bits / 8; + ff->info->channels = metadata->data.stream_info.channels; + ff->info->blocksize = metadata->data.stream_info.max_blocksize; + ff->info->dataofs = 0; /* got the STREAMINFO metadata */ + } +} + + +static qboolean S_FLAC_CodecInitialize (void) +{ + return true; +} + +static void S_FLAC_CodecShutdown (void) +{ +} + +static qboolean S_FLAC_CodecOpenStream (snd_stream_t *stream) +{ + flacfile_t *ff; + int rc; + + ff = (flacfile_t *) Z_Malloc(sizeof(flacfile_t)); + + ff->decoder = FLAC__stream_decoder_new (); + if (ff->decoder == NULL) + { + Con_Printf("Unable to create fLaC decoder\n"); + goto _fail; + } + + stream->priv = ff; + ff->info = & stream->info; + ff->file = & stream->fh; + ff->info->dataofs = -1; /* check for STREAMINFO metadata existence */ + +#ifdef LEGACY_FLAC + FLAC__seekable_stream_decoder_set_error_callback (ff->decoder, flac_error_func); + FLAC__seekable_stream_decoder_set_read_callback (ff->decoder, flac_read_func); + FLAC__seekable_stream_decoder_set_seek_callback (ff->decoder, flac_seek_func); + FLAC__seekable_stream_decoder_set_tell_callback (ff->decoder, flac_tell_func); + FLAC__seekable_stream_decoder_set_length_callback (ff->decoder, flac_length_func); + FLAC__seekable_stream_decoder_set_eof_callback (ff->decoder, flac_eof_func); + FLAC__seekable_stream_decoder_set_write_callback (ff->decoder, flac_write_func); + FLAC__seekable_stream_decoder_set_metadata_callback (ff->decoder, flac_meta_func); + FLAC__seekable_stream_decoder_set_client_data (ff->decoder, ff); + rc = FLAC__seekable_stream_decoder_init (ff->decoder); +#else + rc = FLAC__stream_decoder_init_stream(ff->decoder, + flac_read_func, + flac_seek_func, + flac_tell_func, + flac_length_func, + flac_eof_func, + flac_write_func, + flac_meta_func, + flac_error_func, + ff); +#endif + if (rc != FLAC__STREAM_DECODER_INIT_STATUS_OK) /* unlikely */ + { + Con_Printf ("FLAC: decoder init error %i\n", rc); + goto _fail; + } + + rc = FLAC__stream_decoder_process_until_end_of_metadata (ff->decoder); + if (rc == false || ff->error) + { + rc = FLAC__stream_decoder_get_state(ff->decoder); + Con_Printf("%s not a valid flac file? (decoder state %i)\n", + stream->name, rc); + goto _fail; + } + + if (ff->info->dataofs < 0) + { + Con_Printf("%s has no STREAMINFO\n", stream->name); + goto _fail; + } + if (ff->info->bits != 8 && ff->info->bits != 16) + { + Con_Printf("%s is not 8 or 16 bit\n", stream->name); + goto _fail; + } + if (ff->info->channels != 1 && ff->info->channels != 2) + { + Con_Printf("Unsupported number of channels %d in %s\n", + ff->info->channels, stream->name); + goto _fail; + } + + return true; + +_fail: + if (ff->decoder) + { + FLAC__stream_decoder_finish (ff->decoder); + FLAC__stream_decoder_delete (ff->decoder); + } + Z_Free(ff); + return false; +} + +static int S_FLAC_CodecReadStream (snd_stream_t *stream, int len, void *buffer) +{ + flacfile_t *ff = (flacfile_t *) stream->priv; + byte *buf = (byte *) buffer; + int count = 0; + + while (len) { + int res = 0; + if (ff->size == ff->pos) + FLAC__stream_decoder_process_single (ff->decoder); + if (ff->error) return -1; + res = ff->size - ff->pos; + if (res > len) + res = len; + if (res > 0) { + memcpy (buf, ff->buffer + ff->pos, res); + count += res; + len -= res; + buf += res; + ff->pos += res; + } else if (res < 0) { /* error */ + return -1; + } else { + Con_DPrintf ("FLAC: EOF\n"); + break; + } + } + return count; +} + +static void S_FLAC_CodecCloseStream (snd_stream_t *stream) +{ + flacfile_t *ff = (flacfile_t *) stream->priv; + + FLAC__stream_decoder_finish (ff->decoder); + FLAC__stream_decoder_delete (ff->decoder); + + if (ff->buffer) free(ff->buffer); + Z_Free(ff); + + S_CodecUtilClose(&stream); +} + +static int S_FLAC_CodecRewindStream (snd_stream_t *stream) +{ + flacfile_t *ff = (flacfile_t *) stream->priv; + + ff->pos = ff->size = 0; + if (FLAC__stream_decoder_seek_absolute(ff->decoder, 0)) return 0; + return -1; +} + +snd_codec_t flac_codec = +{ + CODECTYPE_FLAC, + true, /* always available. */ + "flac", + S_FLAC_CodecInitialize, + S_FLAC_CodecShutdown, + S_FLAC_CodecOpenStream, + S_FLAC_CodecReadStream, + S_FLAC_CodecRewindStream, + NULL, /* jump */ + S_FLAC_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_FLAC */ + diff --git a/Quake/snd_flac.h b/Quake/snd_flac.h new file mode 100644 index 0000000..4cedf82 --- /dev/null +++ b/Quake/snd_flac.h @@ -0,0 +1,13 @@ +/* fLaC streaming music support. */ + +#if !defined(_SND_FLAC_H_) +#define _SND_FLAC_H_ 1 + +#if defined(USE_CODEC_FLAC) + +extern snd_codec_t flac_codec; + +#endif /* USE_CODEC_FLAC */ + +#endif /* ! _SND_FLAC_H_ */ + diff --git a/Quake/snd_mem.c b/Quake/snd_mem.c new file mode 100644 index 0000000..6579a68 --- /dev/null +++ b/Quake/snd_mem.c @@ -0,0 +1,364 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2011 O. Sezer <sezero@users.sourceforge.net> + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +// snd_mem.c: sound caching + +#include "quakedef.h" + +/* +================ +ResampleSfx +================ +*/ +static void ResampleSfx (sfx_t *sfx, int inrate, int inwidth, byte *data) +{ + int outcount; + int srcsample; + float stepscale; + int i; + int sample, fracstep; + sfxcache_t *sc; + + sc = (sfxcache_t *) Cache_Check (&sfx->cache); + if (!sc) + return; + + stepscale = (float)inrate / shm->speed; // this is usually 0.5, 1, or 2 + + outcount = sc->length / stepscale; + sc->length = outcount; + if (sc->loopstart != -1) + sc->loopstart = sc->loopstart / stepscale; + + sc->speed = shm->speed; + if (loadas8bit.value) + sc->width = 1; + else + sc->width = inwidth; + sc->stereo = 0; + +// resample / decimate to the current source rate + + if (stepscale == 1 && inwidth == 1 && sc->width == 1) + { +// fast special case + for (i = 0; i < outcount; i++) + ((signed char *)sc->data)[i] = (int)( (unsigned char)(data[i]) - 128); + } + else + { +// general case + // samplefrac can overflow 2**31 with very big sounds, see below. + int64_t samplefrac = 0; + fracstep = (int)(stepscale * 256); + for (i = 0; i < outcount; i++) + { + srcsample = (int)(samplefrac >> 8); + samplefrac += fracstep; // need int64_t here to prevent overflow... + if (inwidth == 2) + sample = LittleShort ( ((short *)data)[srcsample] ); + else + sample = (int)( (unsigned char)(data[srcsample]) - 128) << 8; + if (sc->width == 2) + ((short *)sc->data)[i] = sample; + else + ((signed char *)sc->data)[i] = sample >> 8; + } + } +} + +//============================================================================= + +/* +============== +S_LoadSound +============== +*/ +sfxcache_t *S_LoadSound (sfx_t *s) +{ + char namebuffer[256]; + byte *data; + wavinfo_t info; + int len; + float stepscale; + sfxcache_t *sc; + byte stackbuf[1*1024]; // avoid dirtying the cache heap + +// see if still in memory + sc = (sfxcache_t *) Cache_Check (&s->cache); + if (sc) + return sc; + +// Con_Printf ("S_LoadSound: %x\n", (int)stackbuf); + +// load it in + q_strlcpy(namebuffer, "sound/", sizeof(namebuffer)); + q_strlcat(namebuffer, s->name, sizeof(namebuffer)); + +// Con_Printf ("loading %s\n",namebuffer); + + data = COM_LoadStackFile(namebuffer, stackbuf, sizeof(stackbuf), NULL); + + if (!data) + { + Con_Printf ("Couldn't load %s\n", namebuffer); + return NULL; + } + + info = GetWavinfo (s->name, data, com_filesize); + if (info.channels != 1) + { + Con_Printf ("%s is a stereo sample\n",s->name); + return NULL; + } + + if (info.width != 1 && info.width != 2) + { + Con_Printf("%s is not 8 or 16 bit\n", s->name); + return NULL; + } + + stepscale = (float)info.rate / shm->speed; + len = info.samples / stepscale; + + len = len * info.width * info.channels; + + if (info.samples == 0 || len == 0) + { + Con_Printf("%s has zero samples\n", s->name); + return NULL; + } + + sc = (sfxcache_t *) Cache_Alloc ( &s->cache, len + sizeof(sfxcache_t), s->name); + if (!sc) + return NULL; + + sc->length = info.samples; + sc->loopstart = info.loopstart; + sc->speed = info.rate; + sc->width = info.width; + sc->stereo = info.channels; + + ResampleSfx (s, sc->speed, sc->width, data + info.dataofs); + + return sc; +} + + + +/* +=============================================================================== + +WAV loading + +=============================================================================== +*/ + +static byte *data_p; +static byte *iff_end; +static byte *last_chunk; +static byte *iff_data; +static int iff_chunk_len; + +static short GetLittleShort (void) +{ + short val = 0; + val = *data_p; + val = val + (*(data_p+1)<<8); + data_p += 2; + return val; +} + +static int GetLittleLong (void) +{ + int val = 0; + val = *data_p; + val = val + (*(data_p+1)<<8); + val = val + (*(data_p+2)<<16); + val = val + (*(data_p+3)<<24); + data_p += 4; + return val; +} + +static void FindNextChunk (const char *name) +{ + while (1) + { + // Need at least 8 bytes for a chunk + if (last_chunk + 8 >= iff_end) + { + data_p = NULL; + return; + } + + data_p = last_chunk + 4; + iff_chunk_len = GetLittleLong(); + if (iff_chunk_len < 0 || iff_chunk_len > iff_end - data_p) + { + data_p = NULL; + Con_DPrintf2("bad \"%s\" chunk length (%d)\n", name, iff_chunk_len); + return; + } + last_chunk = data_p + ((iff_chunk_len + 1) & ~1); + data_p -= 8; + if (!strncmp((char *)data_p, name, 4)) + return; + } +} + +static void FindChunk (const char *name) +{ + last_chunk = iff_data; + FindNextChunk (name); +} + +#if 0 +static void DumpChunks (void) +{ + char str[5]; + + str[4] = 0; + data_p = iff_data; + do + { + memcpy (str, data_p, 4); + data_p += 4; + iff_chunk_len = GetLittleLong(); + Con_Printf ("0x%x : %s (%d)\n", (int)(data_p - 4), str, iff_chunk_len); + data_p += (iff_chunk_len + 1) & ~1; + } while (data_p < iff_end); +} +#endif + +/* +============ +GetWavinfo +============ +*/ +wavinfo_t GetWavinfo (const char *name, byte *wav, int wavlength) +{ + wavinfo_t info; + int i; + int format; + int samples; + + memset (&info, 0, sizeof(info)); + + if (!wav) + return info; + + iff_data = wav; + iff_end = wav + wavlength; + +// find "RIFF" chunk + FindChunk("RIFF"); + if (!(data_p && !strncmp((char *)data_p + 8, "WAVE", 4))) + { + Con_Printf("%s missing RIFF/WAVE chunks\n", name); + return info; + } + +// get "fmt " chunk + iff_data = data_p + 12; +#if 0 + DumpChunks (); +#endif + + FindChunk("fmt "); + if (!data_p) + { + Con_Printf("%s is missing fmt chunk\n", name); + return info; + } + data_p += 8; + format = GetLittleShort(); + if (format != WAV_FORMAT_PCM) + { + Con_Printf("%s is not Microsoft PCM format\n", name); + return info; + } + + info.channels = GetLittleShort(); + info.rate = GetLittleLong(); + data_p += 4 + 2; + i = GetLittleShort(); + if (i != 8 && i != 16) + return info; + info.width = i / 8; + +// get cue chunk + FindChunk("cue "); + if (data_p) + { + data_p += 32; + info.loopstart = GetLittleLong(); + // Con_Printf("loopstart=%d\n", sfx->loopstart); + + // if the next chunk is a LIST chunk, look for a cue length marker + FindNextChunk ("LIST"); + if (data_p) + { + if (iff_chunk_len >= 32) + { + if (!strncmp((char *)data_p + 28, "mark", 4)) + { + // this is not a proper parse, but it works with cooledit... + data_p += 24; + i = GetLittleLong(); // samples in loop + info.samples = info.loopstart + i; +// Con_Printf("looped length: %i\n", i); + } + } + } + } + else + info.loopstart = -1; + +// find data chunk + FindChunk("data"); + if (!data_p) + { + Con_Printf("%s is missing data chunk\n", name); + return info; + } + + data_p += 4; + samples = GetLittleLong() / info.width; + + if (info.samples) + { + if (samples < info.samples) + Sys_Error ("%s has a bad loop length", name); + } + else + info.samples = samples; + + if (info.loopstart >= info.samples) + { + Con_Warning ("%s has loop start >= end\n", name); + info.loopstart = -1; + info.samples = samples; + } + + info.dataofs = data_p - wav; + + return info; +} diff --git a/Quake/snd_mikmod.c b/Quake/snd_mikmod.c new file mode 100644 index 0000000..bc0859b --- /dev/null +++ b/Quake/snd_mikmod.c @@ -0,0 +1,221 @@ +/* + * tracker music (module file) decoding support using libmikmod + * Copyright (C) 2013 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_MIKMOD) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_mikmod.h" +#include <mikmod.h> + +#if ((LIBMIKMOD_VERSION+0) < 0x030105) +#error libmikmod version is way too old and unusable. +#endif +#if (LIBMIKMOD_VERSION < 0x030107) /* ancient libmikmod */ +#define S_MIKMOD_initlib(c) MikMod_Init() +#else +#define S_MIKMOD_initlib(c) MikMod_Init(c) +#endif + +#ifndef DMODE_NOISEREDUCTION +#define DMODE_NOISEREDUCTION 0x1000 /* Low pass filtering */ +#endif +#ifndef DMODE_SIMDMIXER +#define DMODE_SIMDMIXER 0x0800 /* enable SIMD mixing */ +#endif + +typedef struct _mik_priv { + /* MREADER core members in libmikmod2/3: */ + int (*Seek)(struct MREADER*, long, int); + long (*Tell)(struct MREADER*); + BOOL (*Read)(struct MREADER*, void*, size_t); + int (*Get)(struct MREADER*); + BOOL (*Eof)(struct MREADER*); + /* no iobase members in libmikmod <= 3.2.0-beta2 */ + long iobase, prev_iobase; + + fshandle_t *fh; + MODULE *module; +} mik_priv_t; + +static int MIK_Seek (MREADER *r, long ofs, int whence) +{ + return FS_fseek(((mik_priv_t *)r)->fh, ofs, whence); +} + +static long MIK_Tell (MREADER *r) +{ + return FS_ftell(((mik_priv_t *)r)->fh); +} + +static BOOL MIK_Read (MREADER *r, void *ptr, size_t siz) +{ + return !!FS_fread(ptr, siz, 1, ((mik_priv_t *)r)->fh); +} + +static int MIK_Get (MREADER *r) +{ + return FS_fgetc(((mik_priv_t *)r)->fh); +} + +static BOOL MIK_Eof (MREADER *r) +{ + return FS_feof(((mik_priv_t *)r)->fh); +} + +static qboolean S_MIKMOD_CodecInitialize (void) +{ + if (mikmod_codec.initialized) + return true; + + /* set mode flags to only we like: */ + md_mode = 0; + if ((shm->samplebits / 8) == 2) + md_mode |= DMODE_16BITS; + if (shm->channels == 2) + md_mode |= DMODE_STEREO; + md_mode |= DMODE_SOFT_MUSIC; /* this is a software-only mixer */ + + /* md_mixfreq is UWORD, so something like 96000 isn't OK */ + md_mixfreq = (shm->speed < 65536)? shm->speed : 48000; + + /* keeping md_device as 0 which is default (auto-detect: we + * only register drv_nos, and it will be the only one found.) + * md_pansep (stereo channels separation) default 128 is OK. + * no reverbation (md_reverb 0 (up to 15)) is OK. + * md_musicvolume and md_sndfxvolume defaults are 128: OK. */ + /* just tone down overall volume md_volume from 128 to 96? */ + md_volume = 96; + + MikMod_RegisterDriver(&drv_nos); /* only need the "nosound" driver, none else */ + MikMod_RegisterAllLoaders(); + if (S_MIKMOD_initlib(NULL)) + { + Con_DPrintf("Could not initialize MikMod: %s\n", MikMod_strerror(MikMod_errno)); + return false; + } + + /* this can't get set with drv_nos, but whatever, be safe: */ + md_mode &= ~DMODE_SIMDMIXER; /* SIMD mixer is buggy when combined with HQMIXER */ + + mikmod_codec.initialized = true; + return true; +} + +static void S_MIKMOD_CodecShutdown (void) +{ + if (mikmod_codec.initialized) + { + mikmod_codec.initialized = false; + MikMod_Exit(); + } +} + +static qboolean S_MIKMOD_CodecOpenStream (snd_stream_t *stream) +{ + mik_priv_t *priv; + + stream->priv = Z_Malloc(sizeof(mik_priv_t)); + priv = (mik_priv_t *) stream->priv; + priv->Seek = MIK_Seek; + priv->Tell = MIK_Tell; + priv->Read = MIK_Read; + priv->Get = MIK_Get; + priv->Eof = MIK_Eof; + priv->fh = &stream->fh; + + priv->module = Player_LoadGeneric((MREADER *)stream->priv, 64, 0); + if (!priv->module) + { + Con_DPrintf("Could not load module: %s\n", MikMod_strerror(MikMod_errno)); + Z_Free(stream->priv); + return false; + } + + /* default values of module options set by Player_Init(): + * fadeout (0): don't fade out volume during when last position of the + * module is being played, + * extspd (1): process Protracker extended speed effect, + * panflag (1): process panning effects, + * wrap (0): don't wrap to restart position when module is finished, + * loop (1): process all in-module loops -- possible backward loops + * would make the module to loop endlessly. + */ + priv->module->wrap = stream->loop; + Player_Start(priv->module); + + stream->info.rate = md_mixfreq; + stream->info.bits = (md_mode & DMODE_16BITS)? 16: 8; + stream->info.width = stream->info.bits / 8; + stream->info.channels = (md_mode & DMODE_STEREO)? 2 : 1; +/* Con_DPrintf("Playing %s (%d chn)\n", priv->module->songname, priv->module->numchn);*/ + + return true; +} + +static int S_MIKMOD_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + if (!Player_Active()) + return 0; + + /* handle possible loop setting change: */ + ((mik_priv_t *)stream->priv)->module->wrap = stream->loop; + + return (int) VC_WriteBytes((SBYTE *)buffer, bytes); +} + +static void S_MIKMOD_CodecCloseStream (snd_stream_t *stream) +{ + Player_Stop(); + Player_Free(((mik_priv_t *)stream->priv)->module); + Z_Free(stream->priv); + S_CodecUtilClose(&stream); +} + +static int S_MIKMOD_CodecJumpToOrder (snd_stream_t *stream, int to) +{ + Player_SetPosition ((UWORD)to); + return 0; +} + +static int S_MIKMOD_CodecRewindStream (snd_stream_t *stream) +{ + Player_SetPosition (0); /* FIXME: WRONG: THIS IS NOT A TIME SEEK */ + return 0; +} + +snd_codec_t mikmod_codec = +{ + CODECTYPE_MOD, + false, + "s3m", + S_MIKMOD_CodecInitialize, + S_MIKMOD_CodecShutdown, + S_MIKMOD_CodecOpenStream, + S_MIKMOD_CodecReadStream, + S_MIKMOD_CodecRewindStream, + S_MIKMOD_CodecJumpToOrder, + S_MIKMOD_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_MIKMOD */ + diff --git a/Quake/snd_mikmod.h b/Quake/snd_mikmod.h new file mode 100644 index 0000000..9f0338b --- /dev/null +++ b/Quake/snd_mikmod.h @@ -0,0 +1,13 @@ +/* module tracker decoding support using libmikmod */ + +#if !defined(_SND_MIKMOD_H_) +#define _SND_MIKMOD_H_ + +#if defined(USE_CODEC_MIKMOD) + +extern snd_codec_t mikmod_codec; + +#endif /* USE_CODEC_MIKMOD */ + +#endif /* ! _SND_MIKMOD_H_ */ + diff --git a/Quake/snd_mix.c b/Quake/snd_mix.c new file mode 100644 index 0000000..8dc3e02 --- /dev/null +++ b/Quake/snd_mix.c @@ -0,0 +1,527 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2011 O. Sezer <sezero@users.sourceforge.net> +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// snd_mix.c -- portable code to mix sounds for snd_dma.c + +#include "quakedef.h" + +#define PAINTBUFFER_SIZE 2048 +portable_samplepair_t paintbuffer[PAINTBUFFER_SIZE]; +int snd_scaletable[32][256]; +int *snd_p, snd_linear_count; +short *snd_out; + +static int snd_vol; + +static void Snd_WriteLinearBlastStereo16 (void) +{ + int i; + int val; + + for (i = 0; i < snd_linear_count; i += 2) + { + val = snd_p[i] / 256; + if (val > 0x7fff) + snd_out[i] = 0x7fff; + else if (val < (short)0x8000) + snd_out[i] = (short)0x8000; + else + snd_out[i] = val; + + val = snd_p[i+1] / 256; + if (val > 0x7fff) + snd_out[i+1] = 0x7fff; + else if (val < (short)0x8000) + snd_out[i+1] = (short)0x8000; + else + snd_out[i+1] = val; + } +} + +static void S_TransferStereo16 (int endtime) +{ + int lpos; + int lpaintedtime; + + snd_p = (int *) paintbuffer; + lpaintedtime = paintedtime; + + while (lpaintedtime < endtime) + { + // handle recirculating buffer issues + lpos = lpaintedtime & ((shm->samples >> 1) - 1); + + snd_out = (short *)shm->buffer + (lpos << 1); + + snd_linear_count = (shm->samples >> 1) - lpos; + if (lpaintedtime + snd_linear_count > endtime) + snd_linear_count = endtime - lpaintedtime; + + snd_linear_count <<= 1; + + // write a linear blast of samples + Snd_WriteLinearBlastStereo16 (); + + snd_p += snd_linear_count; + lpaintedtime += (snd_linear_count >> 1); + } +} + +static void S_TransferPaintBuffer (int endtime) +{ + int out_idx, out_mask; + int count, step, val; + int *p; + + if (shm->samplebits == 16 && shm->channels == 2) + { + S_TransferStereo16 (endtime); + return; + } + + p = (int *) paintbuffer; + count = (endtime - paintedtime) * shm->channels; + out_mask = shm->samples - 1; + out_idx = paintedtime * shm->channels & out_mask; + step = 3 - shm->channels; + + if (shm->samplebits == 16) + { + short *out = (short *)shm->buffer; + while (count--) + { + val = *p / 256; + p+= step; + if (val > 0x7fff) + val = 0x7fff; + else if (val < (short)0x8000) + val = (short)0x8000; + out[out_idx] = val; + out_idx = (out_idx + 1) & out_mask; + } + } + else if (shm->samplebits == 8 && !shm->signed8) + { + unsigned char *out = shm->buffer; + while (count--) + { + val = *p / 256; + p+= step; + if (val > 0x7fff) + val = 0x7fff; + else if (val < (short)0x8000) + val = (short)0x8000; + out[out_idx] = (val / 256) + 128; + out_idx = (out_idx + 1) & out_mask; + } + } + else if (shm->samplebits == 8) /* S8 format, e.g. with Amiga AHI */ + { + signed char *out = (signed char *) shm->buffer; + while (count--) + { + val = *p / 256; + p+= step; + if (val > 0x7fff) + val = 0x7fff; + else if (val < (short)0x8000) + val = (short)0x8000; + out[out_idx] = (val / 256); + out_idx = (out_idx + 1) & out_mask; + } + } +} + +/* +============== +S_MakeBlackmanWindowKernel + +Makes a lowpass filter kernel, from equation 16-4 in +"The Scientist and Engineer's Guide to Digital Signal Processing" + +M is the kernel size (not counting the center point), must be even +kernel has room for M+1 floats +f_c is the filter cutoff frequency, as a fraction of the samplerate +============== +*/ +static void S_MakeBlackmanWindowKernel(float *kernel, int M, float f_c) +{ + int i; + for (i = 0; i <= M; i++) + { + if (i == M/2) + { + kernel[i] = 2 * M_PI * f_c; + } + else + { + kernel[i] = ( sin(2 * M_PI * f_c * (i - M/2.0)) / (i - (M/2.0)) ) + * (0.42 - 0.5*cos(2 * M_PI * i / (double)M) + + 0.08*cos(4 * M_PI * i / (double)M) ); + } + } + +// normalize the kernel so all of the values sum to 1 + { + float sum = 0; + for (i = 0; i <= M; i++) + { + sum += kernel[i]; + } + + for (i = 0; i <= M; i++) + { + kernel[i] /= sum; + } + } +} + +typedef struct { + float *memory; // kernelsize floats + float *kernel; // kernelsize floats + int kernelsize; // M+1, rounded up to be a multiple of 16 + int M; // M value used to make kernel, even + int parity; // 0-3 + float f_c; // cutoff frequency, [0..1], fraction of sample rate +} filter_t; + +static void S_UpdateFilter(filter_t *filter, int M, float f_c) +{ + if (filter->f_c != f_c || filter->M != M) + { + if (filter->memory != NULL) free(filter->memory); + if (filter->kernel != NULL) free(filter->kernel); + + filter->M = M; + filter->f_c = f_c; + + filter->parity = 0; + // M + 1 rounded up to the next multiple of 16 + filter->kernelsize = (M + 1) + 16 - ((M + 1) % 16); + filter->memory = (float *) calloc(filter->kernelsize, sizeof(float)); + filter->kernel = (float *) calloc(filter->kernelsize, sizeof(float)); + + S_MakeBlackmanWindowKernel(filter->kernel, M, f_c); + } +} + +/* +============== +S_ApplyFilter + +Lowpass-filter the given buffer containing 44100Hz audio. + +As an optimization, it decimates the audio to 11025Hz (setting every sample +position that's not a multiple of 4 to 0), then convoluting with the filter +kernel is 4x faster, because we can skip 3/4 of the input samples that are +known to be 0 and skip 3/4 of the filter kernel. +============== +*/ +static void S_ApplyFilter(filter_t *filter, int *data, int stride, int count) +{ + int i, j; + float *input; + const int kernelsize = filter->kernelsize; + const float *kernel = filter->kernel; + int parity; + + input = (float *) malloc(sizeof(float) * (filter->kernelsize + count)); + +// set up the input buffer +// memory holds the previous filter->kernelsize samples of input. + memcpy(input, filter->memory, filter->kernelsize * sizeof(float)); + + for (i=0; i<count; i++) + { + input[filter->kernelsize+i] = data[i * stride] / (32768.0 * 256.0); + } + +// copy out the last filter->kernelsize samples to 'memory' for next time + memcpy(filter->memory, input + count, filter->kernelsize * sizeof(float)); + +// apply the filter + parity = filter->parity; + + for (i=0; i<count; i++) + { + const float *input_plus_i = input + i; + float val[4] = {0, 0, 0, 0}; + + for (j = (4 - parity) % 4; j < kernelsize; j+=16) + { + val[0] += kernel[j] * input_plus_i[j]; + val[1] += kernel[j+4] * input_plus_i[j+4]; + val[2] += kernel[j+8] * input_plus_i[j+8]; + val[3] += kernel[j+12] * input_plus_i[j+12]; + } + + // 4.0 factor is to increase volume by 12 dB; this is to make up the + // volume drop caused by the zero-filling this filter does. + data[i * stride] = (val[0] + val[1] + val[2] + val[3]) + * (32768.0 * 256.0 * 4.0); + + parity = (parity + 1) % 4; + } + + filter->parity = parity; + + free(input); +} + +/* +============== +S_LowpassFilter + +lowpass filters 24-bit integer samples in 'data' (stored in 32-bit ints). +assumes 44100Hz sample rate, and lowpasses at around 5kHz +memory should be a zero-filled filter_t struct +============== +*/ +static void S_LowpassFilter(int *data, int stride, int count, + filter_t *memory) +{ + int M; + float bw, f_c; + + switch ((int)snd_filterquality.value) + { + case 1: + M = 126; bw = 0.900; break; + case 2: + M = 150; bw = 0.915; break; + case 3: + M = 174; bw = 0.930; break; + case 4: + M = 198; bw = 0.945; break; + case 5: + default: + M = 222; bw = 0.960; break; + } + + f_c = (bw * 11025 / 2.0) / 44100.0; + + S_UpdateFilter(memory, M, f_c); + S_ApplyFilter(memory, data, stride, count); +} + +/* +=============================================================================== + +CHANNEL MIXING + +=============================================================================== +*/ + +static void SND_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int endtime, int paintbufferstart); +static void SND_PaintChannelFrom16 (channel_t *ch, sfxcache_t *sc, int endtime, int paintbufferstart); + +void S_PaintChannels (int endtime) +{ + int i; + int end, ltime, count; + channel_t *ch; + sfxcache_t *sc; + + snd_vol = sfxvolume.value * 256; + + while (paintedtime < endtime) + { + // if paintbuffer is smaller than DMA buffer + end = endtime; + if (endtime - paintedtime > PAINTBUFFER_SIZE) + end = paintedtime + PAINTBUFFER_SIZE; + + // clear the paint buffer + memset(paintbuffer, 0, (end - paintedtime) * sizeof(portable_samplepair_t)); + + // paint in the channels. + ch = snd_channels; + for (i = 0; i < total_channels; i++, ch++) + { + if (!ch->sfx) + continue; + if (!ch->leftvol && !ch->rightvol) + continue; + sc = S_LoadSound (ch->sfx); + if (!sc) + continue; + + ltime = paintedtime; + + while (ltime < end) + { // paint up to end + if (ch->end < end) + count = ch->end - ltime; + else + count = end - ltime; + + if (count > 0) + { + // the last param to SND_PaintChannelFrom is the index + // to start painting to in the paintbuffer, usually 0. + if (sc->width == 1) + SND_PaintChannelFrom8(ch, sc, count, ltime - paintedtime); + else + SND_PaintChannelFrom16(ch, sc, count, ltime - paintedtime); + + ltime += count; + } + + // if at end of loop, restart + if (ltime >= ch->end) + { + if (sc->loopstart >= 0) + { + ch->pos = sc->loopstart; + ch->end = ltime + sc->length - ch->pos; + } + else + { // channel just stopped + ch->sfx = NULL; + break; + } + } + } + } + + // clip each sample to 0dB, then reduce by 6dB (to leave some headroom for + // the lowpass filter and the music). the lowpass will smooth out the + // clipping + for (i=0; i<end-paintedtime; i++) + { + paintbuffer[i].left = CLAMP(-32768 * 256, paintbuffer[i].left, 32767 * 256) / 2; + paintbuffer[i].right = CLAMP(-32768 * 256, paintbuffer[i].right, 32767 * 256) / 2; + } + + // apply a lowpass filter + if (sndspeed.value == 11025 && shm->speed == 44100) + { + static filter_t memory_l, memory_r; + S_LowpassFilter((int *)paintbuffer, 2, end - paintedtime, &memory_l); + S_LowpassFilter(((int *)paintbuffer) + 1, 2, end - paintedtime, &memory_r); + } + + // paint in the music + if (s_rawend >= paintedtime) + { // copy from the streaming sound source + int s; + int stop; + + stop = (end < s_rawend) ? end : s_rawend; + + for (i = paintedtime; i < stop; i++) + { + s = i & (MAX_RAW_SAMPLES - 1); + // lower music by 6db to match sfx + paintbuffer[i - paintedtime].left += s_rawsamples[s].left / 2; + paintbuffer[i - paintedtime].right += s_rawsamples[s].right / 2; + } + // if (i != end) + // Con_Printf ("partial stream\n"); + // else + // Con_Printf ("full stream\n"); + } + + // transfer out according to DMA format + S_TransferPaintBuffer(end); + paintedtime = end; + } +} + +void SND_InitScaletable (void) +{ + int i, j; + int scale; + + for (i = 0; i < 32; i++) + { + scale = i * 8 * 256 * sfxvolume.value; + for (j = 0; j < 256; j++) + { + /* When compiling with gcc-4.1.0 at optimisations O1 and + higher, the tricky signed char type conversion is not + guaranteed. Therefore we explicity calculate the signed + value from the index as required. From Kevin Shanahan. + See: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26719 + */ + // snd_scaletable[i][j] = ((signed char)j) * scale; + snd_scaletable[i][j] = ((j < 128) ? j : j - 256) * scale; + } + } +} + + +static void SND_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int count, int paintbufferstart) +{ + int data; + int *lscale, *rscale; + unsigned char *sfx; + int i; + + if (ch->leftvol > 255) + ch->leftvol = 255; + if (ch->rightvol > 255) + ch->rightvol = 255; + + lscale = snd_scaletable[ch->leftvol >> 3]; + rscale = snd_scaletable[ch->rightvol >> 3]; + sfx = (unsigned char *)sc->data + ch->pos; + + for (i = 0; i < count; i++) + { + data = sfx[i]; + paintbuffer[paintbufferstart + i].left += lscale[data]; + paintbuffer[paintbufferstart + i].right += rscale[data]; + } + + ch->pos += count; +} + +static void SND_PaintChannelFrom16 (channel_t *ch, sfxcache_t *sc, int count, int paintbufferstart) +{ + int data; + int left, right; + int leftvol, rightvol; + signed short *sfx; + int i; + + leftvol = ch->leftvol * snd_vol; + rightvol = ch->rightvol * snd_vol; + leftvol /= 256; + rightvol /= 256; + sfx = (signed short *)sc->data + ch->pos; + + for (i = 0; i < count; i++) + { + data = sfx[i]; + // this was causing integer overflow as observed in quakespasm + // with the warpspasm mod moved >>8 to left/right volume above. + // left = (data * leftvol) >> 8; + // right = (data * rightvol) >> 8; + left = data * leftvol; + right = data * rightvol; + paintbuffer[paintbufferstart + i].left += left; + paintbuffer[paintbufferstart + i].right += right; + } + + ch->pos += count; +} + diff --git a/Quake/snd_modplug.c b/Quake/snd_modplug.c new file mode 100644 index 0000000..806c09a --- /dev/null +++ b/Quake/snd_modplug.c @@ -0,0 +1,125 @@ +/* + * tracker music (module file) decoding support using libmodplug + * + * Copyright (C) 2013 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_MODPLUG) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_modplug.h" +#include <libmodplug/modplug.h> + +static void S_MODPLUG_SetSettings (snd_stream_t *stream) +{ + ModPlug_Settings settings; + + ModPlug_GetSettings(&settings); + settings.mFlags = MODPLUG_ENABLE_OVERSAMPLING; + settings.mChannels = shm->channels; + settings.mBits = shm->samplebits; + settings.mFrequency = shm->speed; + settings.mResamplingMode = MODPLUG_RESAMPLE_SPLINE;/*MODPLUG_RESAMPLE_FIR*/ + settings.mLoopCount = -1; /* to enable module internal loops */ + ModPlug_SetSettings(&settings); + + if (stream) { + stream->info.rate = shm->speed; + stream->info.bits = shm->samplebits; + stream->info.width = stream->info.bits / 8; + stream->info.channels = shm->channels; + } +} + +static qboolean S_MODPLUG_CodecInitialize (void) +{ + return true; +} + +static void S_MODPLUG_CodecShutdown (void) +{ +} + +static qboolean S_MODPLUG_CodecOpenStream (snd_stream_t *stream) +{ +/* need to load the whole file into memory and pass it to libmodplug */ + byte *moddata; + long len; + int mark; + + len = FS_filelength (&stream->fh); + mark = Hunk_LowMark(); + moddata = (byte *) Hunk_Alloc(len); + FS_fread(moddata, 1, len, &stream->fh); + + S_MODPLUG_SetSettings(stream); + stream->priv = ModPlug_Load(moddata, len); + Hunk_FreeToLowMark(mark); /* free original file data */ + if (!stream->priv) + { + Con_DPrintf("Could not load module %s\n", stream->name); + return false; + } + + ModPlug_Seek((ModPlugFile*)stream->priv, 0); + /* default volume (128) sounds rather low? */ + ModPlug_SetMasterVolume((ModPlugFile*)stream->priv, 384); /* 0-512 */ + return true; +} + +static int S_MODPLUG_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + return ModPlug_Read((ModPlugFile*)stream->priv, buffer, bytes); +} + +static void S_MODPLUG_CodecCloseStream (snd_stream_t *stream) +{ + ModPlug_Unload((ModPlugFile*)stream->priv); + S_CodecUtilClose(&stream); +} + +static int S_MODPLUG_CodecJumpToOrder (snd_stream_t *stream, int to) +{ + ModPlug_SeekOrder((ModPlugFile*)stream->priv, to); + return 0; +} + +static int S_MODPLUG_CodecRewindStream (snd_stream_t *stream) +{ + ModPlug_Seek((ModPlugFile*)stream->priv, 0); + return 0; +} + +snd_codec_t modplug_codec = +{ + CODECTYPE_MOD, + true, /* always available. */ + "s3m", + S_MODPLUG_CodecInitialize, + S_MODPLUG_CodecShutdown, + S_MODPLUG_CodecOpenStream, + S_MODPLUG_CodecReadStream, + S_MODPLUG_CodecRewindStream, + S_MODPLUG_CodecJumpToOrder, + S_MODPLUG_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_MODPLUG */ diff --git a/Quake/snd_modplug.h b/Quake/snd_modplug.h new file mode 100644 index 0000000..40f6397 --- /dev/null +++ b/Quake/snd_modplug.h @@ -0,0 +1,12 @@ +/* module tracker decoding support using libmodplug */ +#if !defined(_SND_MODPLUG_H_) +#define _SND_MODPLUG_H_ + +#if defined(USE_CODEC_MODPLUG) + +extern snd_codec_t modplug_codec; + +#endif /* USE_CODEC_MODPLUG */ + +#endif /* ! _SND_MODPLUG_H_ */ + diff --git a/Quake/snd_mp3.c b/Quake/snd_mp3.c new file mode 100644 index 0000000..b3bf9a1 --- /dev/null +++ b/Quake/snd_mp3.c @@ -0,0 +1,461 @@ +/* + * MP3 decoding support using libmad: Adapted from the SoX library at + * http://sourceforge.net/projects/sox/, LGPLv2, Copyright (c) 2007-2009 + * SoX contributors, written by Fabrizio Gennari <fabrizio.ge@tiscali.it>, + * with the decoding part based on the decoder tutorial program madlld + * written by Bertrand Petit <madlld@phoe.fmug.org> (BSD license, see at + * http://www.bsd-dk.dk/~elrond/audio/madlld/). + * Adapted for use in Quake and Hexen II game engines by O.Sezer: + * Copyright (C) 2010-2019 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_MP3) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_mp3.h" +#include <mad.h> + +/* Under Windows, importing data from DLLs is a dicey proposition. This is true + * when using dlopen, but also true if linking directly against the DLL if the + * header does not mark the data as __declspec(dllexport), which mad.h does not. + * Sidestep the issue by defining our own mad_timer_zero. This is needed because + * mad_timer_zero is used in some of the mad.h macros. + */ +#define mad_timer_zero mad_timer_zero_stub +static mad_timer_t const mad_timer_zero_stub = {0, 0}; + +/* MAD returns values with MAD_F_FRACBITS (28) bits of precision, though it's + not certain that all of them are meaningful. Default to 16 bits to + align with most users expectation of output file should be 16 bits. */ +#define MP3_MAD_SAMPLEBITS 16 +#define MP3_MAD_SAMPLEWIDTH 2 +#define MP3_BUFFER_SIZE (5 * 8192) + +/* Private data */ +typedef struct _mp3_priv_t +{ + unsigned char mp3_buffer[MP3_BUFFER_SIZE]; + struct mad_stream Stream; + struct mad_frame Frame; + struct mad_synth Synth; + mad_timer_t Timer; + ptrdiff_t cursamp; + size_t FrameCount; +} mp3_priv_t; + + +/* (Re)fill the stream buffer that is to be decoded. If any data + * still exists in the buffer then they are first shifted to be + * front of the stream buffer. */ +static int mp3_inputdata(snd_stream_t *stream) +{ + mp3_priv_t *p = (mp3_priv_t *) stream->priv; + size_t bytes_read; + size_t remaining; + + remaining = p->Stream.bufend - p->Stream.next_frame; + + /* libmad does not consume all the buffer it's given. Some + * data, part of a truncated frame, is left unused at the + * end of the buffer. That data must be put back at the + * beginning of the buffer and taken in account for + * refilling the buffer. This means that the input buffer + * must be large enough to hold a complete frame at the + * highest observable bit-rate (currently 448 kb/s). + * TODO: Is 2016 bytes the size of the largest frame? + * (448000*(1152/32000))/8 + */ + memmove(p->mp3_buffer, p->Stream.next_frame, remaining); + + bytes_read = FS_fread(p->mp3_buffer + remaining, 1, + MP3_BUFFER_SIZE - remaining, &stream->fh); + if (bytes_read == 0) + return -1; + + mad_stream_buffer(&p->Stream, p->mp3_buffer, bytes_read+remaining); + p->Stream.error = MAD_ERROR_NONE; + + return 0; +} + +static int mp3_startread(snd_stream_t *stream) +{ + mp3_priv_t *p = (mp3_priv_t *) stream->priv; + size_t ReadSize; + + mad_stream_init(&p->Stream); + mad_frame_init(&p->Frame); + mad_synth_init(&p->Synth); + mad_timer_reset(&p->Timer); + + /* Decode at least one valid frame to find out the input + * format. The decoded frame will be saved off so that it + * can be processed later. + */ + ReadSize = FS_fread(p->mp3_buffer, 1, MP3_BUFFER_SIZE, &stream->fh); + if (!ReadSize || FS_ferror(&stream->fh)) + return -1; + + mad_stream_buffer(&p->Stream, p->mp3_buffer, ReadSize); + + /* Find a valid frame before starting up. This makes sure + * that we have a valid MP3. + */ + p->Stream.error = MAD_ERROR_NONE; + while (mad_frame_decode(&p->Frame,&p->Stream)) + { + /* check whether input buffer needs a refill */ + if (p->Stream.error == MAD_ERROR_BUFLEN) + { + if (mp3_inputdata(stream) == -1) + return -1;/* EOF with no valid data */ + + continue; + } + + /* We know that a valid frame hasn't been found yet + * so help libmad out and go back into frame seek mode. + */ + mad_stream_sync(&p->Stream); + p->Stream.error = MAD_ERROR_NONE; + } + + if (p->Stream.error) + { + Con_Printf("MP3: No valid MP3 frame found\n"); + return -1; + } + + switch(p->Frame.header.mode) + { + case MAD_MODE_SINGLE_CHANNEL: + case MAD_MODE_DUAL_CHANNEL: + case MAD_MODE_JOINT_STEREO: + case MAD_MODE_STEREO: + stream->info.channels = MAD_NCHANNELS(&p->Frame.header); + break; + default: + Con_Printf("MP3: Cannot determine number of channels\n"); + return -1; + } + + p->FrameCount = 1; + + mad_timer_add(&p->Timer,p->Frame.header.duration); + mad_synth_frame(&p->Synth,&p->Frame); + stream->info.rate = p->Synth.pcm.samplerate; + stream->info.bits = MP3_MAD_SAMPLEBITS; + stream->info.width = MP3_MAD_SAMPLEWIDTH; + + p->cursamp = 0; + + return 0; +} + +/* Read up to len samples from p->Synth + * If needed, read some more MP3 data, decode them and synth them + * Place in buf[]. + * Return number of samples read. */ +static int mp3_decode(snd_stream_t *stream, byte *buf, int len) +{ + mp3_priv_t *p = (mp3_priv_t *) stream->priv; + int donow, i, done = 0; + mad_fixed_t sample; + int chan, x; + + do + { + x = (p->Synth.pcm.length - p->cursamp) * stream->info.channels; + donow = q_min(len, x); + i = 0; + while (i < donow) + { + for (chan = 0; chan < stream->info.channels; chan++) + { + sample = p->Synth.pcm.samples[chan][p->cursamp]; + /* convert from fixed to short, + * write in host-endian format. */ + if (sample <= -MAD_F_ONE) + sample = -0x7FFF; + else if (sample >= MAD_F_ONE) + sample = 0x7FFF; + else + sample >>= (MAD_F_FRACBITS + 1 - 16); + if (host_bigendian) + { + *buf++ = (sample >> 8) & 0xFF; + *buf++ = sample & 0xFF; + } + else /* assumed LITTLE_ENDIAN. */ + { + *buf++ = sample & 0xFF; + *buf++ = (sample >> 8) & 0xFF; + } + i++; + } + p->cursamp++; + } + + len -= donow; + done += donow; + + if (len == 0) + break; + + /* check whether input buffer needs a refill */ + if (p->Stream.error == MAD_ERROR_BUFLEN) + { + if (mp3_inputdata(stream) == -1) + { + /* check feof() ?? */ + Con_DPrintf("mp3 EOF\n"); + break; + } + } + + if (mad_frame_decode(&p->Frame, &p->Stream)) + { + if (MAD_RECOVERABLE(p->Stream.error)) + { + mad_stream_sync(&p->Stream); /* to frame seek mode */ + continue; + } + else + { + if (p->Stream.error == MAD_ERROR_BUFLEN) + continue; + else + { + Con_Printf("MP3: unrecoverable frame level error (%s)\n", + mad_stream_errorstr(&p->Stream)); + break; + } + } + } + p->FrameCount++; + mad_timer_add(&p->Timer, p->Frame.header.duration); + mad_synth_frame(&p->Synth, &p->Frame); + p->cursamp = 0; + } while (1); + + return done; +} + +static int mp3_stopread(snd_stream_t *stream) +{ + mp3_priv_t *p = (mp3_priv_t*) stream->priv; + + mad_synth_finish(&p->Synth); + mad_frame_finish(&p->Frame); + mad_stream_finish(&p->Stream); + + return 0; +} + +static int mp3_madseek(snd_stream_t *stream, unsigned long offset) +{ + mp3_priv_t *p = (mp3_priv_t *) stream->priv; + size_t initial_bitrate = p->Frame.header.bitrate; + size_t consumed = 0; + int vbr = 0; /* Variable Bit Rate, bool */ + qboolean depadded = false; + unsigned long to_skip_samples = 0; + + /* Reset all */ + FS_rewind(&stream->fh); + mad_timer_reset(&p->Timer); + p->FrameCount = 0; + + /* They where opened in startread */ + mad_synth_finish(&p->Synth); + mad_frame_finish(&p->Frame); + mad_stream_finish(&p->Stream); + + mad_stream_init(&p->Stream); + mad_frame_init(&p->Frame); + mad_synth_init(&p->Synth); + + offset /= stream->info.channels; + to_skip_samples = offset; + + while (1) /* Read data from the MP3 file */ + { + int bytes_read, padding = 0; + size_t leftover = p->Stream.bufend - p->Stream.next_frame; + + memcpy(p->mp3_buffer, p->Stream.this_frame, leftover); + bytes_read = FS_fread(p->mp3_buffer + leftover, (size_t) 1, + MP3_BUFFER_SIZE - leftover, &stream->fh); + if (bytes_read <= 0) + { + Con_DPrintf("seek failure. unexpected EOF (frames=%lu leftover=%lu)\n", + (unsigned long)p->FrameCount, (unsigned long)leftover); + break; + } + for ( ; !depadded && padding < bytes_read && !p->mp3_buffer[padding]; ++padding) + ; + depadded = true; + mad_stream_buffer(&p->Stream, p->mp3_buffer + padding, leftover + bytes_read - padding); + + while (1) /* Decode frame headers */ + { + static unsigned short samples; + p->Stream.error = MAD_ERROR_NONE; + + /* Not an audio frame */ + if (mad_header_decode(&p->Frame.header, &p->Stream) == -1) + { + if (p->Stream.error == MAD_ERROR_BUFLEN) + break; /* Normal behaviour; get some more data from the file */ + if (!MAD_RECOVERABLE(p->Stream.error)) + { + Con_DPrintf("unrecoverable MAD error\n"); + break; + } + if (p->Stream.error == MAD_ERROR_LOSTSYNC) + { + Con_DPrintf("MAD lost sync\n"); + } + else + { + Con_DPrintf("recoverable MAD error\n"); + } + continue; + } + + consumed += p->Stream.next_frame - p->Stream.this_frame; + vbr |= (p->Frame.header.bitrate != initial_bitrate); + + samples = 32 * MAD_NSBSAMPLES(&p->Frame.header); + + p->FrameCount++; + mad_timer_add(&p->Timer, p->Frame.header.duration); + + if (to_skip_samples <= samples) + { + mad_frame_decode(&p->Frame,&p->Stream); + mad_synth_frame(&p->Synth, &p->Frame); + p->cursamp = to_skip_samples; + return 0; + } + else to_skip_samples -= samples; + + /* If not VBR, we can extrapolate frame size */ + if (p->FrameCount == 64 && !vbr) + { + p->FrameCount = offset / samples; + to_skip_samples = offset % samples; + if (0 != FS_fseek(&stream->fh, (p->FrameCount * consumed / 64), SEEK_SET)) + return -1; + + /* Reset Stream for refilling buffer */ + mad_stream_finish(&p->Stream); + mad_stream_init(&p->Stream); + break; + } + } + } + + return -1; +} + +static qboolean S_MP3_CodecInitialize (void) +{ + return true; +} + +static void S_MP3_CodecShutdown (void) +{ +} + +static qboolean S_MP3_CodecOpenStream (snd_stream_t *stream) +{ + int err; + + if (mp3_skiptags(stream) < 0) + { + Con_Printf("Corrupt mp3 file (bad tags.)\n"); + return false; + } + + stream->priv = calloc(1, sizeof(mp3_priv_t)); + if (!stream->priv) + { + Con_Printf("Insufficient memory for MP3 audio\n"); + return false; + } + err = mp3_startread(stream); + if (err != 0) + { + Con_Printf("%s is not a valid mp3 file\n", stream->name); + } + else if (stream->info.channels != 1 && stream->info.channels != 2) + { + Con_Printf("Unsupported number of channels %d in %s\n", + stream->info.channels, stream->name); + } + else + { + return true; + } + free(stream->priv); + return false; +} + +static int S_MP3_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + int res = mp3_decode(stream, (byte *)buffer, bytes / stream->info.width); + return res * stream->info.width; +} + +static void S_MP3_CodecCloseStream (snd_stream_t *stream) +{ + mp3_stopread(stream); + free(stream->priv); + S_CodecUtilClose(&stream); +} + +static int S_MP3_CodecRewindStream (snd_stream_t *stream) +{ + /* + mp3_stopread(stream); + FS_rewind(&stream->fh); + return mp3_startread(stream); + */ + return mp3_madseek(stream, 0); +} + +snd_codec_t mp3_codec = +{ + CODECTYPE_MP3, + true, /* always available. */ + "mp3", + S_MP3_CodecInitialize, + S_MP3_CodecShutdown, + S_MP3_CodecOpenStream, + S_MP3_CodecReadStream, + S_MP3_CodecRewindStream, + NULL, /* jump */ + S_MP3_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_MP3 */ + diff --git a/Quake/snd_mp3.h b/Quake/snd_mp3.h new file mode 100644 index 0000000..b519a9d --- /dev/null +++ b/Quake/snd_mp3.h @@ -0,0 +1,14 @@ +/* MP3 decoding support using libmad or libmpg123. */ + +#if !defined(_SND_MP3_H_) +#define _SND_MP3_H_ + +#if defined(USE_CODEC_MP3) + +extern snd_codec_t mp3_codec; +int mp3_skiptags(snd_stream_t *); + +#endif /* USE_CODEC_MP3 */ + +#endif /* ! _SND_MP3_H_ */ + diff --git a/Quake/snd_mp3tag.c b/Quake/snd_mp3tag.c new file mode 100644 index 0000000..d778d10 --- /dev/null +++ b/Quake/snd_mp3tag.c @@ -0,0 +1,405 @@ +/* MP3 TAGS STUFF -- put together using public specs. + * Copyright (C) 2018-2019 O. Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_MP3) +#include "snd_codec.h" +#include "q_ctype.h" + +static inline qboolean is_id3v1(const unsigned char *data, long length) { + /* http://id3.org/ID3v1 : 3 bytes "TAG" identifier and 125 bytes tag data */ + if (length < 128 || memcmp(data,"TAG",3) != 0) { + return false; + } + return true; +} +static qboolean is_id3v2(const unsigned char *data, size_t length) { + /* ID3v2 header is 10 bytes: http://id3.org/id3v2.4.0-structure */ + /* bytes 0-2: "ID3" identifier */ + if (length < 10 || memcmp(data,"ID3",3) != 0) { + return false; + } + /* bytes 3-4: version num (major,revision), each byte always less than 0xff. */ + if (data[3] == 0xff || data[4] == 0xff) { + return false; + } + /* bytes 6-9 are the ID3v2 tag size: a 32 bit 'synchsafe' integer, i.e. the + * highest bit 7 in each byte zeroed. i.e.: 7 bit information in each byte -> + * effectively a 28 bit value. */ + if (data[6] >= 0x80 || data[7] >= 0x80 || data[8] >= 0x80 || data[9] >= 0x80) { + return false; + } + return true; +} +static long get_id3v2_len(const unsigned char *data, long length) { + /* size is a 'synchsafe' integer (see above) */ + long size = (long)((data[6]<<21) + (data[7]<<14) + (data[8]<<7) + data[9]); + size += 10; /* header size */ + /* ID3v2 header[5] is flags (bits 4-7 only, 0-3 are zero). + * bit 4 set: footer is present (a copy of the header but + * with "3DI" as ident.) */ + if (data[5] & 0x10) { + size += 10; /* footer size */ + } + /* optional padding (always zeroes) */ + while (size < length && data[size] == 0) { + ++size; + } + return size; +} +static qboolean is_apetag(const unsigned char *data, size_t length) { + /* http://wiki.hydrogenaud.io/index.php?title=APEv2_specification + * Header/footer is 32 bytes: bytes 0-7 ident, bytes 8-11 version, + * bytes 12-17 size. bytes 24-31 are reserved: must be all zeroes. */ + unsigned int v; + + if (length < 32 || memcmp(data,"APETAGEX",8) != 0) { + return false; + } + v = (unsigned)((data[11]<<24) | (data[10]<<16) | (data[9]<<8) | data[8]); /* version */ + if (v != 2000U && v != 1000U) { + return false; + } + v = 0; /* reserved bits : */ + if (memcmp(&data[24],&v,4) != 0 || memcmp(&data[28],&v,4) != 0) { + return false; + } + return true; +} +static long get_ape_len(const unsigned char *data) { + unsigned int flags, version; + long size = (long)((data[15]<<24) | (data[14]<<16) | (data[13]<<8) | data[12]); + version = (unsigned)((data[11]<<24) | (data[10]<<16) | (data[9]<<8) | data[8]); + flags = (unsigned)((data[23]<<24) | (data[22]<<16) | (data[21]<<8) | data[20]); + if (version == 2000U && (flags & (1U<<31))) size += 32; /* header present. */ + return size; +} +static inline int is_lyrics3tag(const unsigned char *data, long length) { + /* http://id3.org/Lyrics3 + * http://id3.org/Lyrics3v2 */ + if (length < 15) return 0; + if (memcmp(data+6,"LYRICS200",9) == 0) return 2; /* v2 */ + if (memcmp(data+6,"LYRICSEND",9) == 0) return 1; /* v1 */ + return 0; +} +static long get_lyrics3v1_len(snd_stream_t *stream) { + const char *p; long i, len; + char buf[5104]; + /* needs manual search: http://id3.org/Lyrics3 */ + if (stream->fh.length < 20) return -1; + len = (stream->fh.length > 5109)? 5109 : stream->fh.length; + FS_fseek(&stream->fh, -len, SEEK_END); + FS_fread(buf, 1, (len -= 9), &stream->fh); /* exclude footer */ + /* strstr() won't work here. */ + for (i = len - 11, p = buf; i >= 0; --i, ++p) { + if (memcmp(p, "LYRICSBEGIN", 11) == 0) + break; + } + if (i < 0) return -1; + return len - (long)(p - buf) + 9 /* footer */; +} +static inline long get_lyrics3v2_len(const unsigned char *data, long length) { + /* 6 bytes before the end marker is size in decimal format - + * does not include the 9 bytes end marker and size field. */ + if (length != 6) return 0; + return strtol((const char *)data, NULL, 10) + 15; +} +static inline qboolean verify_lyrics3v2(const unsigned char *data, long length) { + if (length < 11) return false; + if (memcmp(data,"LYRICSBEGIN",11) == 0) return true; + return false; +} +#define MMTAG_PARANOID +static qboolean is_musicmatch(const unsigned char *data, long length) { + /* From docs/musicmatch.txt in id3lib: https://sourceforge.net/projects/id3lib/ + Overall tag structure: + + +-----------------------------+ + | Header | + | (256 bytes, OPTIONAL) | + +-----------------------------+ + | Image extension (4 bytes) | + +-----------------------------+ + | Image binary | + | (var. length >= 4 bytes) | + +-----------------------------+ + | Unused (4 bytes) | + +-----------------------------+ + | Version info (256 bytes) | + +-----------------------------+ + | Audio meta-data | + | (var. length >= 7868 bytes) | + +-----------------------------+ + | Data offsets (20 bytes) | + +-----------------------------+ + | Footer (48 bytes) | + +-----------------------------+ + */ + if (length < 48) return false; + /* sig: 19 bytes company name + 13 bytes space */ + if (memcmp(data,"Brava Software Inc. ",32) != 0) { + return false; + } + /* 4 bytes version: x.xx */ + if (!q_isdigit(data[32]) || data[33] != '.' || + !q_isdigit(data[34]) ||!q_isdigit(data[35])) { + return false; + } + #ifdef MMTAG_PARANOID + /* [36..47]: 12 bytes trailing space */ + for (length = 36; length < 48; ++length) { + if (data[length] != ' ') return false; + } + #endif + return true; +} +static long get_musicmatch_len(snd_stream_t *stream) { + const int metasizes[4] = { 7868, 7936, 8004, 8132 }; + const unsigned char syncstr[10] = {'1','8','2','7','3','6','4','5',0,0}; + unsigned char buf[256]; + int i, j, imgext_ofs, version_ofs; + long len; + + FS_fseek(&stream->fh, -68, SEEK_END); + FS_fread(buf, 1, 20, &stream->fh); + imgext_ofs = (int)((buf[3] <<24) | (buf[2] <<16) | (buf[1] <<8) | buf[0] ); + version_ofs = (int)((buf[15]<<24) | (buf[14]<<16) | (buf[13]<<8) | buf[12]); + if (version_ofs <= imgext_ofs) return -1; + if (version_ofs <= 0 || imgext_ofs <= 0) return -1; + /* Try finding the version info section: + * Because metadata section comes after it, and because metadata section + * has different sizes across versions (format ver. <= 3.00: always 7868 + * bytes), we can _not_ directly calculate using deltas from the offsets + * section. */ + for (i = 0; i < 4; ++i) { + /* 48: footer, 20: offsets, 256: version info */ + len = metasizes[i] + 48 + 20 + 256; + if (stream->fh.length < len) return -1; + FS_fseek(&stream->fh, -len, SEEK_END); + FS_fread(buf, 1, 256, &stream->fh); + /* [0..9]: sync string, [30..255]: 0x20 */ + #ifdef MMTAG_PARANOID + for (j = 30; j < 256; ++j) { + if (buf[j] != ' ') break; + } + if (j < 256) continue; + #endif + if (memcmp(buf, syncstr, 10) == 0) { + break; + } + } + if (i == 4) return -1; /* no luck. */ + #ifdef MMTAG_PARANOID + /* unused section: (4 bytes of 0x00) */ + FS_fseek(&stream->fh, -(len + 4), SEEK_END); + FS_fread(buf, 1, 4, &stream->fh); j = 0; + if (memcmp(buf, &j, 4) != 0) return -1; + #endif + len += (version_ofs - imgext_ofs); + if (stream->fh.length < len) return -1; + FS_fseek(&stream->fh, -len, SEEK_END); + FS_fread(buf, 1, 8, &stream->fh); + j = (int)((buf[7] <<24) | (buf[6] <<16) | (buf[5] <<8) | buf[4]); + if (j < 0) return -1; + /* verify image size: */ + /* without this, we may land at a wrong place. */ + if (j + 12 != version_ofs - imgext_ofs) return -1; + /* try finding the optional header */ + if (stream->fh.length < len + 256) return len; + FS_fseek(&stream->fh, -(len + 256), SEEK_END); + FS_fread(buf, 1, 256, &stream->fh); + /* [0..9]: sync string, [30..255]: 0x20 */ + if (memcmp(buf, syncstr, 10) != 0) { + return len; + } + #ifdef MMTAG_PARANOID + for (j = 30; j < 256; ++j) { + if (buf[j] != ' ') return len; + } + #endif + return len + 256; /* header is present. */ +} + +static int probe_id3v1(snd_stream_t *stream, unsigned char *buf, int atend) { + if (stream->fh.length >= 128) { + FS_fseek(&stream->fh, -128, SEEK_END); + if (FS_fread(buf, 1, 128, &stream->fh) != 128) + return -1; + if (is_id3v1(buf, 128)) { + if (!atend) { /* possible false positive? */ + if (is_musicmatch(buf + 128 - 48, 48) || + is_apetag (buf + 128 - 32, 32) || + is_lyrics3tag(buf + 128 - 15, 15)) { + return 0; + } + } + stream->fh.length -= 128; + Con_DPrintf("MP3: skipped %ld bytes ID3v1 tag\n", 128L); + return 1; + /* FIXME: handle possible double-ID3v1 tags? */ + } + } + return 0; +} +static int probe_mmtag(snd_stream_t *stream, unsigned char *buf) { + long len; + if (stream->fh.length >= 68) { + FS_fseek(&stream->fh, -48, SEEK_END); + if (FS_fread(buf, 1, 48, &stream->fh) != 48) + return -1; + if (is_musicmatch(buf, 48)) { + len = get_musicmatch_len(stream); + if (len < 0) return -1; + if (len >= stream->fh.length) return -1; + stream->fh.length -= len; + Con_DPrintf("MP3: skipped %ld bytes MusicMatch tag\n", len); + return 1; + } + } + return 0; +} +static int probe_apetag(snd_stream_t *stream, unsigned char *buf) { + long len; + if (stream->fh.length >= 32) { + FS_fseek(&stream->fh, -32, SEEK_END); + if (FS_fread(buf, 1, 32, &stream->fh) != 32) + return -1; + if (is_apetag(buf, 32)) { + len = get_ape_len(buf); + if (len >= stream->fh.length) return -1; + stream->fh.length -= len; + Con_DPrintf("MP3: skipped %ld bytes APE tag\n", len); + return 1; + } + } + return 0; +} +static int probe_lyrics3(snd_stream_t *stream, unsigned char *buf) { + long len; + if (stream->fh.length >= 15) { + FS_fseek(&stream->fh, -15, SEEK_END); + if (FS_fread(buf, 1, 15, &stream->fh) != 15) + return -1; + len = is_lyrics3tag(buf, 15); + if (len == 2) { + len = get_lyrics3v2_len(buf, 6); + if (len >= stream->fh.length) return -1; + if (len < 15) return -1; + FS_fseek(&stream->fh, -len, SEEK_END); + if (FS_fread(buf, 1, 11, &stream->fh) != 11) + return -1; + if (!verify_lyrics3v2(buf, 11)) return -1; + stream->fh.length -= len; + Con_DPrintf("MP3: skipped %ld bytes Lyrics3 tag\n", len); + return 1; + } + else if (len == 1) { + len = get_lyrics3v1_len(stream); + if (len < 0) return -1; + stream->fh.length -= len; + Con_DPrintf("MP3: skipped %ld bytes Lyrics3 tag\n", len); + return 1; + } + } + return 0; +} + +int mp3_skiptags(snd_stream_t *stream) +{ + unsigned char buf[128]; + long len; size_t readsize; + int c_id3, c_ape, c_lyr, c_mm; + int rc = -1; + /* failsafe */ + long oldlength = stream->fh.length; + long oldstart = stream->fh.start; + + /* MP3 standard has no metadata format, so everyone invented + * their own thing, even with extensions, until ID3v2 became + * dominant: Hence the impossible mess here. + * + * Note: I don't yet care about freaky broken mp3 files with + * double tags. -- O.S. + */ + + readsize = FS_fread(buf, 1, 128, &stream->fh); + if (!readsize || FS_ferror(&stream->fh)) goto fail; + + /* ID3v2 tag is at the start */ + if (is_id3v2(buf, readsize)) { + len = get_id3v2_len(buf, (long)readsize); + if (len >= stream->fh.length) goto fail; + stream->fh.start += len; + stream->fh.length -= len; + Con_DPrintf("MP3: skipped %ld bytes ID3v2 tag\n", len); + } + /* APE tag _might_ be at the start (discouraged + * but not forbidden, either.) read the header. */ + else if (is_apetag(buf, readsize)) { + len = get_ape_len(buf); + if (len >= stream->fh.length) goto fail; + stream->fh.start += len; + stream->fh.length -= len; + Con_DPrintf("MP3: skipped %ld bytes APE tag\n", len); + } + + /* it's not impossible that _old_ MusicMatch tag + * placing itself after ID3v1. */ + if ((c_mm = probe_mmtag(stream, buf)) < 0) { + goto fail; + } + /* ID3v1 tag is at the end */ + if ((c_id3 = probe_id3v1(stream, buf, !c_mm)) < 0) { + goto fail; + } + /* we do not know the order of ape or lyrics3 + * or musicmatch tags, hence the loop here.. */ + c_ape = 0; + c_lyr = 0; + for (;;) { + if (!c_lyr) { + /* care about mp3s with double Lyrics3 tags? */ + if ((c_lyr = probe_lyrics3(stream, buf)) < 0) + goto fail; + if (c_lyr) continue; + } + if (!c_mm) { + if ((c_mm = probe_mmtag(stream, buf)) < 0) + goto fail; + if (c_mm) continue; + } + if (!c_ape) { + if ((c_ape = probe_apetag(stream, buf)) < 0) + goto fail; + if (c_ape) continue; + } + break; + } /* for (;;) */ + + rc = (stream->fh.length > 0)? 0 : -1; + fail: + if (rc < 0) { + stream->fh.start = oldstart; + stream->fh.length = oldlength; + } + FS_rewind(&stream->fh); + return rc; +} +#endif /* USE_CODEC_MP3 */ diff --git a/Quake/snd_mpg123.c b/Quake/snd_mpg123.c new file mode 100644 index 0000000..87d319f --- /dev/null +++ b/Quake/snd_mpg123.c @@ -0,0 +1,263 @@ +/* MP3 decoding support using libmpg123 + * Copyright (C) 2011-2019 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_MP3) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_mp3.h" +#include <errno.h> +#include <limits.h> + +#define MPG123_DEF_SSIZE_T /* we do define ssize_t in our stdinc.h */ +#include <mpg123.h> + +#if !defined(MPG123_API_VERSION) || (MPG123_API_VERSION < 24) +#error minimum required libmpg123 version is 1.12.0 (api version 24) +#endif + +/* Private data */ +typedef struct _mp3_priv_t +{ + mpg123_handle* handle; + int handle_open; +} mp3_priv_t; + +/* CALLBACKS: libmpg123 expects POSIX read/lseek() behavior! */ +#if (MPG123_API_VERSION >= 49) +static int mp3_read (void *f, void *buf, size_t size, size_t *bytes) +{ + *bytes = FS_fread(buf, 1, size, (fshandle_t *)f); + if (*bytes == 0 && errno != 0) + return -1; + return 0; +} +static int64_t mp3_seek (void *f, int64_t offset, int whence) +{ + #if (LONG_MAX <= 2147483647L) + if (offset > LONG_MAX) return -1; + #endif + if (f == NULL) return -1; + if (FS_fseek((fshandle_t *)f, (long) offset, whence) < 0) + return -1; + return (int64_t) FS_ftell((fshandle_t *)f); +} +#else +static ssize_t mp3_read (void *f, void *buf, size_t size) +{ + ssize_t ret = (ssize_t) FS_fread(buf, 1, size, (fshandle_t *)f); + if (ret == 0 && errno != 0) + return -1; + return ret; +} +static off_t mp3_seek (void *f, off_t offset, int whence) +{ + #if (LONG_MAX <= 2147483647L) + if (offset > LONG_MAX) return -1; + #endif + if (f == NULL) return -1; + if (FS_fseek((fshandle_t *)f, (long) offset, whence) < 0) + return (off_t)-1; + return (off_t) FS_ftell((fshandle_t *)f); +} +#endif +static void mp3_close (void *f) +{ + /* we close elsewhere. */ +} + +static qboolean S_MP3_CodecInitialize (void) +{ + if (!mp3_codec.initialized) + { + if (mpg123_init() != MPG123_OK) + { + Con_Printf ("Could not initialize mpg123\n"); + return false; + } + mp3_codec.initialized = true; + } + return true; +} + +static void S_MP3_CodecShutdown (void) +{ + if (mp3_codec.initialized) + { + mp3_codec.initialized = false; + mpg123_exit(); + } +} + +static qboolean S_MP3_CodecOpenStream (snd_stream_t *stream) +{ + long rate = 0; + int encoding = 0, channels = 0; + mp3_priv_t *priv = NULL; + + if (mp3_skiptags(stream) < 0) + { + Con_Printf("Corrupt mp3 file (bad tags.)\n"); + return false; + } + + stream->priv = Z_Malloc(sizeof(mp3_priv_t)); + priv = (mp3_priv_t *) stream->priv; + priv->handle = mpg123_new(NULL, NULL); + if (priv->handle == NULL) + { + Con_Printf("Unable to allocate mpg123 handle\n"); + goto _fail; + } + + #if (MPG123_API_VERSION >= 49) + if (mpg123_reader64(priv->handle, mp3_read, mp3_seek, mp3_close) != MPG123_OK || + mpg123_open_handle64(priv->handle, &stream->fh) != MPG123_OK) + { + Con_Printf("Unable to open mpg123 handle\n"); + goto _fail; + } + #else + if (mpg123_replace_reader_handle(priv->handle, mp3_read, mp3_seek, mp3_close) != MPG123_OK || + mpg123_open_handle(priv->handle, &stream->fh) != MPG123_OK) + { + Con_Printf("Unable to open mpg123 handle\n"); + goto _fail; + } + #endif + priv->handle_open = 1; + + if (mpg123_getformat(priv->handle, &rate, &channels, &encoding) != MPG123_OK) + { + Con_Printf("Unable to retrieve mpg123 format for %s\n", stream->name); + goto _fail; + } + + switch (channels) { + case MPG123_MONO: + stream->info.channels = 1; + break; + case MPG123_STEREO: + stream->info.channels = 2; + break; + default: + Con_Printf("Unsupported number of channels %d in %s\n", channels, stream->name); + goto _fail; + } + + stream->info.rate = rate; + + switch (encoding) { + case MPG123_ENC_UNSIGNED_8: + stream->info.bits = 8; + stream->info.width = 1; + break; + case MPG123_ENC_SIGNED_8: + /* unsupported: force mpg123 to convert */ + stream->info.bits = 8; + stream->info.width = 1; + encoding = MPG123_ENC_UNSIGNED_8; + break; + case MPG123_ENC_SIGNED_16: + stream->info.bits = 16; + stream->info.width = 2; + break; + case MPG123_ENC_UNSIGNED_16: + default: + /* unsupported: force mpg123 to convert */ + stream->info.bits = 16; + stream->info.width = 2; + encoding = MPG123_ENC_SIGNED_16; + break; + } + if (mpg123_format_support(priv->handle, rate, encoding) == 0) + { + Con_Printf("Unsupported format for %s\n", stream->name); + goto _fail; + } + mpg123_format_none(priv->handle); + mpg123_format(priv->handle, rate, channels, encoding); + + return true; +_fail: + if (priv) + { + if (priv->handle) + { + if (priv->handle_open) + mpg123_close(priv->handle); + mpg123_delete(priv->handle); + } + Z_Free(priv); + } + return false; +} + +static int S_MP3_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + mp3_priv_t *priv = (mp3_priv_t *) stream->priv; + size_t bytes_read = 0; + int res = mpg123_read (priv->handle, (unsigned char *)buffer, (size_t)bytes, &bytes_read); + switch (res) { + case MPG123_DONE: + Con_DPrintf("mp3 EOF\n"); + case MPG123_OK: + return (int)bytes_read; + } + return -1; /* error */ +} + +static void S_MP3_CodecCloseStream (snd_stream_t *stream) +{ + mp3_priv_t *priv = (mp3_priv_t *) stream->priv; + mpg123_close(priv->handle); + mpg123_delete(priv->handle); + Z_Free(stream->priv); + S_CodecUtilClose(&stream); +} + +static int S_MP3_CodecRewindStream (snd_stream_t *stream) +{ + mp3_priv_t *priv = (mp3_priv_t *) stream->priv; + #if (MPG123_API_VERSION >= 49) + int64_t res = mpg123_seek64(priv->handle, 0, SEEK_SET); + #else + off_t res = mpg123_seek(priv->handle, 0, SEEK_SET); + #endif + if (res >= 0) return 0; + return (int) res; +} + +snd_codec_t mp3_codec = +{ + CODECTYPE_MP3, + false, + "mp3", + S_MP3_CodecInitialize, + S_MP3_CodecShutdown, + S_MP3_CodecOpenStream, + S_MP3_CodecReadStream, + S_MP3_CodecRewindStream, + NULL, /* jump */ + S_MP3_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_MP3 */ diff --git a/Quake/snd_opus.c b/Quake/snd_opus.c new file mode 100644 index 0000000..ea5e4f2 --- /dev/null +++ b/Quake/snd_opus.c @@ -0,0 +1,211 @@ +/* + * Ogg/Opus streaming music support, loosely based on several open source + * Quake engine based projects with many modifications. + * + * Copyright (C) 2012-2013 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_OPUS) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_opus.h" + +#include <errno.h> +#include <opusfile.h> + + +/* CALLBACK FUNCTIONS: */ + +static int opc_fclose (void *f) +{ + return 0; /* we fclose() elsewhere. */ +} + +static int opc_fread (void *f, unsigned char *buf, int size) +{ + int ret; + + if (size < 0) + { + errno = EINVAL; + return -1; + } + + ret = (int) FS_fread(buf, 1, (size_t)size, (fshandle_t *)f); + if (ret == 0 && errno != 0) + ret = -1; + return ret; +} + +static int opc_fseek (void *f, opus_int64 off, int whence) +{ + if (f == NULL) return (-1); + return FS_fseek((fshandle_t *)f, (long) off, whence); +} + +static opus_int64 opc_ftell (void *f) +{ + return (opus_int64) FS_ftell((fshandle_t *)f); +} + +static const OpusFileCallbacks opc_qfs = +{ + (int (*)(void *, unsigned char *, int)) opc_fread, + (int (*)(void *, opus_int64, int)) opc_fseek, + (opus_int64 (*)(void *)) opc_ftell, + (int (*)(void *)) opc_fclose +}; + +static qboolean S_OPUS_CodecInitialize (void) +{ + return true; +} + +static void S_OPUS_CodecShutdown (void) +{ +} + +static qboolean S_OPUS_CodecOpenStream (snd_stream_t *stream) +{ + OggOpusFile *opFile; + const OpusHead *op_info; + long numstreams; + int res; + + opFile = op_open_callbacks(&stream->fh, &opc_qfs, NULL, 0, &res); + if (!opFile) + { + Con_Printf("%s is not a valid Opus file (error %i).\n", + stream->name, res); + goto _fail; + } + + stream->priv = opFile; + + if (!op_seekable(opFile)) + { + Con_Printf("Opus stream %s not seekable.\n", stream->name); + goto _fail; + } + + op_info = op_head(opFile, -1); + if (!op_info) + { + Con_Printf("Unable to get stream information for %s.\n", stream->name); + goto _fail; + } + + /* FIXME: handle section changes */ + numstreams = op_info->stream_count; + if (numstreams != 1) + { + Con_Printf("More than one (%ld) stream in %s\n", + (long)op_info->stream_count, stream->name); + goto _fail; + } + + if (op_info->channel_count != 1 && op_info->channel_count != 2) + { + Con_Printf("Unsupported number of channels %d in %s\n", + op_info->channel_count, stream->name); + goto _fail; + } + + /* All Opus audio is coded at 48 kHz, and should also be decoded + * at 48 kHz for playback: info->input_sample_rate only tells us + * the sampling rate of the original input before opus encoding. + * S_RawSamples() shall already downsample this, as necessary. */ + stream->info.rate = 48000; + stream->info.channels = op_info->channel_count; + /* op_read() yields 16-bit output using native endian ordering: */ + stream->info.bits = 16; + stream->info.width = 2; + + return true; +_fail: + if (opFile) + op_free(opFile); + return false; +} + +static int S_OPUS_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + int section; /* FIXME: handle section changes */ + int cnt, res, rem; + opus_int16 * ptr; + + rem = bytes / stream->info.width; + if (rem / stream->info.channels <= 0) + return 0; + + cnt = 0; + ptr = (opus_int16 *) buffer; + while (1) + { + /* op_read() yields 16-bit output using native endian ordering. returns + * the number of samples read per channel on success, or a negative value + * on failure. */ + res = op_read((OggOpusFile *)stream->priv, ptr, rem, §ion); + if (res <= 0) + break; + cnt += res; + res *= stream->info.channels; + rem -= res; + if (rem <= 0) + break; + ptr += res; + } + + if (res < 0) + return res; + + cnt *= (stream->info.channels * stream->info.width); + return cnt; +} + +static void S_OPUS_CodecCloseStream (snd_stream_t *stream) +{ + op_free((OggOpusFile *)stream->priv); + S_CodecUtilClose(&stream); +} + +static int S_OPUS_CodecRewindStream (snd_stream_t *stream) +{ + return op_pcm_seek ((OggOpusFile *)stream->priv, 0); +} + +snd_codec_t opus_codec = +{ + CODECTYPE_OPUS, + true, /* always available. */ + "opus", + S_OPUS_CodecInitialize, + S_OPUS_CodecShutdown, + S_OPUS_CodecOpenStream, + S_OPUS_CodecReadStream, + S_OPUS_CodecRewindStream, + NULL, /* jump */ + S_OPUS_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_OPUS */ + diff --git a/Quake/snd_opus.h b/Quake/snd_opus.h new file mode 100644 index 0000000..4c2a25f --- /dev/null +++ b/Quake/snd_opus.h @@ -0,0 +1,13 @@ +/* Ogg/Opus streaming music support. */ + +#if !defined(_SND_OPUS_H_) +#define _SND_OPUS_H_ 1 + +#if defined(USE_CODEC_OPUS) + +extern snd_codec_t opus_codec; + +#endif /* USE_CODEC_OPUS */ + +#endif /* ! _SND_OPUS_H_ */ + diff --git a/Quake/snd_sdl.c b/Quake/snd_sdl.c new file mode 100644 index 0000000..6e0791b --- /dev/null +++ b/Quake/snd_sdl.c @@ -0,0 +1,212 @@ +/* + * snd_sdl.c - SDL audio driver for Hexen II: Hammer of Thyrion (uHexen2) + * based on implementations found in the quakeforge and ioquake3 projects. + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2005-2012 O.Sezer <sezero@users.sourceforge.net> + * Copyright (C) 2010-2014 QuakeSpasm developers + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + +static int buffersize; + + +static void SDLCALL paint_audio (void *unused, Uint8 *stream, int len) +{ + int pos, tobufend; + int len1, len2; + + if (!shm) + { /* shouldn't happen, but just in case */ + memset(stream, 0, len); + return; + } + + pos = (shm->samplepos * (shm->samplebits / 8)); + if (pos >= buffersize) + shm->samplepos = pos = 0; + + tobufend = buffersize - pos; /* bytes to buffer's end. */ + len1 = len; + len2 = 0; + + if (len1 > tobufend) + { + len1 = tobufend; + len2 = len - len1; + } + + memcpy(stream, shm->buffer + pos, len1); + + if (len2 <= 0) + { + shm->samplepos += (len1 / (shm->samplebits / 8)); + } + else + { /* wraparound? */ + memcpy(stream + len1, shm->buffer, len2); + shm->samplepos = (len2 / (shm->samplebits / 8)); + } + + if (shm->samplepos >= buffersize) + shm->samplepos = 0; +} + +qboolean SNDDMA_Init (dma_t *dma) +{ + SDL_AudioSpec desired; + int tmp, val; + char drivername[128]; + + if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) + { + Con_Printf("Couldn't init SDL audio: %s\n", SDL_GetError()); + return false; + } + + /* Set up the desired format */ + desired.freq = snd_mixspeed.value; + desired.format = (loadas8bit.value) ? AUDIO_U8 : AUDIO_S16SYS; + desired.channels = 2; /* = desired_channels; */ + if (desired.freq <= 11025) + desired.samples = 256; + else if (desired.freq <= 22050) + desired.samples = 512; + else if (desired.freq <= 44100) + desired.samples = 1024; + else if (desired.freq <= 56000) + desired.samples = 2048; /* for 48 kHz */ + else + desired.samples = 4096; /* for 96 kHz */ + desired.callback = paint_audio; + desired.userdata = NULL; + + /* Open the audio device */ + if (SDL_OpenAudio(&desired, NULL) == -1) + { + Con_Printf("Couldn't open SDL audio: %s\n", SDL_GetError()); + SDL_QuitSubSystem(SDL_INIT_AUDIO); + return false; + } + + memset ((void *) dma, 0, sizeof(dma_t)); + shm = dma; + + /* Fill the audio DMA information block */ + /* Since we passed NULL as the 'obtained' spec to SDL_OpenAudio(), + * SDL will convert to hardware format for us if needed, hence we + * directly use the desired values here. */ + shm->samplebits = (desired.format & 0xFF); /* first byte of format is bits */ + shm->signed8 = (desired.format == AUDIO_S8); + shm->speed = desired.freq; + shm->channels = desired.channels; + tmp = (desired.samples * desired.channels) * 10; + if (tmp & (tmp - 1)) + { /* make it a power of two */ + val = 1; + while (val < tmp) + val <<= 1; + + tmp = val; + } + shm->samples = tmp; + shm->samplepos = 0; + shm->submission_chunk = 1; + + Con_Printf ("SDL audio spec : %d Hz, %d samples, %d channels\n", + desired.freq, desired.samples, desired.channels); +#if defined(USE_SDL2) + { + const char *driver = SDL_GetCurrentAudioDriver(); + const char *device = SDL_GetAudioDeviceName(0, SDL_FALSE); + q_snprintf(drivername, sizeof(drivername), "%s - %s", + driver != NULL ? driver : "(UNKNOWN)", + device != NULL ? device : "(UNKNOWN)"); + } +#else + if (SDL_AudioDriverName(drivername, sizeof(drivername)) == NULL) + strcpy(drivername, "(UNKNOWN)"); +#endif + buffersize = shm->samples * (shm->samplebits / 8); + Con_Printf ("SDL audio driver: %s, %d bytes buffer\n", drivername, buffersize); + + shm->buffer = (unsigned char *) calloc (1, buffersize); + if (!shm->buffer) + { + SDL_CloseAudio(); + SDL_QuitSubSystem(SDL_INIT_AUDIO); + shm = NULL; + Con_Printf ("Failed allocating memory for SDL audio\n"); + return false; + } + + SDL_PauseAudio(0); + + return true; +} + +int SNDDMA_GetDMAPos (void) +{ + return shm->samplepos; +} + +void SNDDMA_Shutdown (void) +{ + if (shm) + { + Con_Printf ("Shutting down SDL sound\n"); + SDL_CloseAudio(); + SDL_QuitSubSystem(SDL_INIT_AUDIO); + if (shm->buffer) + free (shm->buffer); + shm->buffer = NULL; + shm = NULL; + } +} + +void SNDDMA_LockBuffer (void) +{ + SDL_LockAudio (); +} + +void SNDDMA_Submit (void) +{ + SDL_UnlockAudio(); +} + +void SNDDMA_BlockSound (void) +{ + SDL_PauseAudio(1); +} + +void SNDDMA_UnblockSound (void) +{ + SDL_PauseAudio(0); +} + diff --git a/Quake/snd_umx.c b/Quake/snd_umx.c new file mode 100644 index 0000000..11bfbcd --- /dev/null +++ b/Quake/snd_umx.c @@ -0,0 +1,413 @@ +/** + * Unreal UMX container support. + * UPKG parsing partially based on Unreal Media Ripper (UMR) v0.3 + * by Andy Ward <wardwh@swbell.net>, with additional updates + * by O. Sezer - see git repo at https://github.com/sezero/umr.git + * + * Copyright (C) 2013-2021 O. Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_UMX) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_umx.h" + +typedef int32_t fci_t; /* FCompactIndex */ + +#define UPKG_HDR_TAG 0x9e2a83c1 + +struct _genhist { /* for upkg versions >= 68 */ + int32_t export_count; + int32_t name_count; +}; + +struct upkg_hdr { + uint32_t tag; /* UPKG_HDR_TAG */ + int32_t file_version; + uint32_t pkg_flags; + int32_t name_count; /* number of names in name table (>= 0) */ + int32_t name_offset; /* offset to name table (>= 0) */ + int32_t export_count; /* num. exports in export table (>= 0) */ + int32_t export_offset; /* offset to export table (>= 0) */ + int32_t import_count; /* num. imports in export table (>= 0) */ + int32_t import_offset; /* offset to import table (>= 0) */ + + /* number of GUIDs in heritage table (>= 1) and table's offset: + * only with versions < 68. */ + int32_t heritage_count; + int32_t heritage_offset; + /* with versions >= 68: a GUID, a dword for generation count + * and export_count and name_count dwords for each generation: */ + uint32_t guid[4]; + int32_t generation_count; +#define UPKG_HDR_SIZE 64 /* 64 bytes up until here */ + struct _genhist *gen; +}; +COMPILE_TIME_ASSERT(upkg_hdr, offsetof(struct upkg_hdr, gen) == UPKG_HDR_SIZE); + +#define UMUSIC_IT 0 +#define UMUSIC_S3M 1 +#define UMUSIC_XM 2 +#define UMUSIC_MOD 3 +#define UMUSIC_WAV 4 +#define UMUSIC_MP2 5 + +static const char *mustype[] = { + "IT", "S3M", "XM", "MOD", + "WAV", "MP2", NULL +}; + +/* decode an FCompactIndex. + * original documentation by Tim Sweeney was at + * http://unreal.epicgames.com/Packages.htm + * also see Unreal Wiki: + * http://wiki.beyondunreal.com/Legacy:Package_File_Format/Data_Details + */ +static fci_t get_fci (const char *in, int *pos) +{ + int32_t a; + int size; + + size = 1; + a = in[0] & 0x3f; + + if (in[0] & 0x40) { + size++; + a |= (in[1] & 0x7f) << 6; + + if (in[1] & 0x80) { + size++; + a |= (in[2] & 0x7f) << 13; + + if (in[2] & 0x80) { + size++; + a |= (in[3] & 0x7f) << 20; + + if (in[3] & 0x80) { + size++; + a |= (in[4] & 0x3f) << 27; + } + } + } + } + + if (in[0] & 0x80) + a = -a; + + *pos += size; + + return a; +} + +static int get_objtype (fshandle_t *f, int32_t ofs, int type) +{ + char sig[16]; +_retry: + memset(sig, 0, sizeof(sig)); + FS_fseek(f, ofs, SEEK_SET); + FS_fread(sig, 16, 1, f); + if (type == UMUSIC_IT) { + if (memcmp(sig, "IMPM", 4) == 0) + return UMUSIC_IT; + return -1; + } + if (type == UMUSIC_XM) { + if (memcmp(sig, "Extended Module:", 16) != 0) + return -1; + FS_fread(sig, 16, 1, f); + if (sig[0] != ' ') return -1; + FS_fread(sig, 16, 1, f); + if (sig[5] != 0x1a) return -1; + return UMUSIC_XM; + } + if (type == UMUSIC_MP2) { + unsigned char *p = (unsigned char *)sig; + uint16_t u = ((p[0] << 8) | p[1]) & 0xFFFE; + if (u == 0xFFFC || u == 0xFFF4) + return UMUSIC_MP2; + return -1; + } + if (type == UMUSIC_WAV) { + if (memcmp(sig, "RIFF", 4) == 0 && memcmp(&sig[8], "WAVE", 4) == 0) + return UMUSIC_WAV; + return -1; + } + + FS_fseek(f, ofs + 44, SEEK_SET); + FS_fread(sig, 4, 1, f); + if (type == UMUSIC_S3M) { + if (memcmp(sig, "SCRM", 4) == 0) + return UMUSIC_S3M; + /*return -1;*/ + /* SpaceMarines.umx and Starseek.umx from Return to NaPali + * report as "s3m" whereas the actual music format is "it" */ + type = UMUSIC_IT; + goto _retry; + } + + FS_fseek(f, ofs + 1080, SEEK_SET); + FS_fread(sig, 4, 1, f); + if (type == UMUSIC_MOD) { + if (memcmp(sig, "M.K.", 4) == 0 || memcmp(sig, "M!K!", 4) == 0) + return UMUSIC_MOD; + return -1; + } + + return -1; +} + +static int read_export (fshandle_t *f, const struct upkg_hdr *hdr, + int32_t *ofs, int32_t *objsize) +{ + char buf[40]; + int idx = 0, t; + + FS_fseek(f, *ofs, SEEK_SET); + if (FS_fread(buf, 4, 10, f) < 10) + return -1; + + if (hdr->file_version < 40) idx += 8; /* 00 00 00 00 00 00 00 00 */ + if (hdr->file_version < 60) idx += 16; /* 81 00 00 00 00 00 FF FF FF FF FF FF FF FF 00 00 */ + get_fci(&buf[idx], &idx); /* skip junk */ + t = get_fci(&buf[idx], &idx); /* type_name */ + if (hdr->file_version > 61) idx += 4; /* skip export size */ + *objsize = get_fci(&buf[idx], &idx); + *ofs += idx; /* offset for real data */ + + return t; /* return type_name index */ +} + +static int read_typname(fshandle_t *f, const struct upkg_hdr *hdr, + int idx, char *out) +{ + int i, s; + long l; + char buf[64]; + + if (idx >= hdr->name_count) return -1; + memset(buf, 0, 64); + for (i = 0, l = 0; i <= idx; i++) { + if (FS_fseek(f, hdr->name_offset + l, SEEK_SET) < 0) return -1; + if (!FS_fread(buf, 1, 63, f)) return -1; + if (hdr->file_version >= 64) { + s = *(signed char *)buf; /* numchars *including* terminator */ + if (s <= 0) return -1; + l += s + 5; /* 1 for buf[0], 4 for int32_t name_flags */ + } else { + l += (long)strlen(buf); + l += 5; /* 1 for terminator, 4 for int32_t name_flags */ + } + } + + strcpy(out, (hdr->file_version >= 64)? &buf[1] : buf); + return 0; +} + +static int probe_umx (fshandle_t *f, const struct upkg_hdr *hdr, + int32_t *ofs, int32_t *objsize) +{ + int i, idx, t; + int32_t s, pos; + long fsiz; + char buf[64]; + + idx = 0; + fsiz = FS_filelength (f); + + if (hdr->name_offset >= fsiz || + hdr->export_offset >= fsiz || + hdr->import_offset >= fsiz) { + Con_DPrintf("Illegal values in header.\n"); + return -1; + } + + /* Find the offset and size of the first IT, S3M or XM + * by parsing the exports table. The umx files should + * have only one export. Kran32.umx from Unreal has two, + * but both pointing to the same music. */ + if (hdr->export_offset >= fsiz) return -1; + memset(buf, 0, 64); + FS_fseek(f, hdr->export_offset, SEEK_SET); + FS_fread(buf, 1, 64, f); + + get_fci(&buf[idx], &idx); /* skip class_index */ + get_fci(&buf[idx], &idx); /* skip super_index */ + if (hdr->file_version >= 60) idx += 4; /* skip int32 package_index */ + get_fci(&buf[idx], &idx); /* skip object_name */ + idx += 4; /* skip int32 object_flags */ + + s = get_fci(&buf[idx], &idx); /* get serial_size */ + if (s <= 0) return -1; + pos = get_fci(&buf[idx],&idx); /* get serial_offset */ + if (pos < 0 || pos > fsiz - 40) return -1; + + if ((t = read_export(f, hdr, &pos, &s)) < 0) return -1; + if (s <= 0 || s > fsiz - pos) return -1; + + if (read_typname(f, hdr, t, buf) < 0) return -1; + for (i = 0; mustype[i] != NULL; i++) { + if (!q_strcasecmp(buf, mustype[i])) { + t = i; + break; + } + } + if (mustype[i] == NULL) return -1; + if ((t = get_objtype(f, pos, t)) < 0) return -1; + + *ofs = pos; + *objsize = s; + return t; +} + +static int32_t probe_header (fshandle_t *f, struct upkg_hdr *hdr) +{ + if (FS_fread(hdr, 1, UPKG_HDR_SIZE, f) < UPKG_HDR_SIZE) + return -1; + /* byte swap the header - all members are 32 bit LE values */ + hdr->tag = (uint32_t) LittleLong(hdr->tag); + hdr->file_version = LittleLong(hdr->file_version); + hdr->pkg_flags = (uint32_t) LittleLong(hdr->pkg_flags); + hdr->name_count = LittleLong(hdr->name_count); + hdr->name_offset = LittleLong(hdr->name_offset); + hdr->export_count = LittleLong(hdr->export_count); + hdr->export_offset = LittleLong(hdr->export_offset); + hdr->import_count = LittleLong(hdr->import_count); + hdr->import_offset = LittleLong(hdr->import_offset); + + if (hdr->tag != UPKG_HDR_TAG) { + Con_DPrintf("Unknown header tag 0x%x\n", hdr->tag); + return -1; + } + if (hdr->name_count < 0 || + hdr->export_count < 0 || + hdr->import_count < 0 || + hdr->name_offset < 36 || + hdr->export_offset < 36 || + hdr->import_offset < 36) { + Con_DPrintf("Illegal values in header.\n"); + return -1; + } + +#if 1 /* no need being overzealous */ + return 0; +#else + switch (hdr->file_version) { + case 35: case 37: /* Unreal beta - */ + case 40: case 41: /* 1998 */ + case 61:/* Unreal */ + case 62:/* Unreal Tournament */ + case 63:/* Return to NaPali */ + case 64:/* Unreal Tournament */ + case 66:/* Unreal Tournament */ + case 68:/* Unreal Tournament */ + case 69:/* Tactical Ops */ + case 75:/* Harry Potter and the Philosopher's Stone */ + case 76: /* mpeg layer II data */ + case 83:/* Mobile Forces */ + return 0; + } + + Con_DPrintf("Unknown upkg version %d\n", hdr->file_version); + return -1; +#endif /* #if 0 */ +} + +static int process_upkg (fshandle_t *f, int32_t *ofs, int32_t *objsize) +{ + struct upkg_hdr header; + + memset(&header, 0, sizeof(header)); + if (probe_header(f, &header) < 0) + return -1; + + return probe_umx(f, &header, ofs, objsize); +} + +static qboolean S_UMX_CodecInitialize (void) +{ + return true; +} + +static void S_UMX_CodecShutdown (void) +{ +} + +static qboolean S_UMX_CodecOpenStream (snd_stream_t *stream) +{ + int type; + int32_t ofs = 0, size = 0; + + type = process_upkg(&stream->fh, &ofs, &size); + if (type < 0) { + Con_DPrintf("%s: unrecognized umx\n", stream->name); + return false; + } + + Con_DPrintf("%s: %s data @ 0x%x, %d bytes\n", stream->name, mustype[type], ofs, size); + /* hack the fshandle_t start pos and length members so + * that only the relevant data is accessed from now on */ + stream->fh.start += ofs; + stream->fh.length = size; + FS_fseek(&stream->fh, 0, SEEK_SET); + + switch (type) { + case UMUSIC_IT: + case UMUSIC_S3M: + case UMUSIC_XM: + case UMUSIC_MOD: return S_CodecForwardStream(stream, CODECTYPE_MOD); + case UMUSIC_WAV: return S_CodecForwardStream(stream, CODECTYPE_WAV); + case UMUSIC_MP2: return S_CodecForwardStream(stream, CODECTYPE_MP3); + } + + return false; +} + +static int S_UMX_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + return -1; +} + +static void S_UMX_CodecCloseStream (snd_stream_t *stream) +{ + S_CodecUtilClose(&stream); +} + +static int S_UMX_CodecRewindStream (snd_stream_t *stream) +{ + return -1; +} + +snd_codec_t umx_codec = +{ + CODECTYPE_UMX, + true, /* always available. */ + "umx", + S_UMX_CodecInitialize, + S_UMX_CodecShutdown, + S_UMX_CodecOpenStream, + S_UMX_CodecReadStream, + S_UMX_CodecRewindStream, + NULL, /* jump */ + S_UMX_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_UMX */ + diff --git a/Quake/snd_umx.h b/Quake/snd_umx.h new file mode 100644 index 0000000..da3107d --- /dev/null +++ b/Quake/snd_umx.h @@ -0,0 +1,12 @@ +/* Unreal UMX format support */ +#if !defined(_SND_UMX_H_) +#define _SND_UMX_H_ + +#if defined(USE_CODEC_UMX) + +extern snd_codec_t umx_codec; + +#endif /* USE_CODEC_UMX */ + +#endif /* ! _SND_UMX_H_ */ + diff --git a/Quake/snd_vorbis.c b/Quake/snd_vorbis.c new file mode 100644 index 0000000..7ea02bd --- /dev/null +++ b/Quake/snd_vorbis.c @@ -0,0 +1,205 @@ +/* + * Ogg/Vorbis streaming music support, loosely based on several open source + * Quake engine based projects with many modifications. + * + * Copyright (C) 2010-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_VORBIS) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_vorbis.h" + +#define OV_EXCLUDE_STATIC_CALLBACKS +#if defined(VORBIS_USE_TREMOR) +/* for Tremor / Vorbisfile api differences, + * see doc/diff.html in the Tremor package. */ +#include <tremor/ivorbisfile.h> +#else +#include <vorbis/vorbisfile.h> +#endif + +/* Vorbis codec can return the samples in a number of different + * formats, we use the standard signed short format. */ +#define VORBIS_SAMPLEBITS 16 +#define VORBIS_SAMPLEWIDTH 2 +#define VORBIS_SIGNED_DATA 1 + +/* CALLBACK FUNCTIONS: */ + +static int ovc_fclose (void *f) +{ + return 0; /* we fclose() elsewhere. */ +} + +static int ovc_fseek (void *f, ogg_int64_t off, int whence) +{ + if (f == NULL) return (-1); + return FS_fseek((fshandle_t *)f, (long) off, whence); +} + +static ov_callbacks ovc_qfs = +{ + (size_t (*)(void *, size_t, size_t, void *)) FS_fread, + (int (*)(void *, ogg_int64_t, int)) ovc_fseek, + (int (*)(void *)) ovc_fclose, + (long (*)(void *)) FS_ftell +}; + +static qboolean S_VORBIS_CodecInitialize (void) +{ + return true; +} + +static void S_VORBIS_CodecShutdown (void) +{ +} + +static qboolean S_VORBIS_CodecOpenStream (snd_stream_t *stream) +{ + OggVorbis_File *ovFile; + vorbis_info *ovf_info; + long numstreams; + int res; + + ovFile = (OggVorbis_File *) Z_Malloc(sizeof(OggVorbis_File)); + stream->priv = ovFile; + res = ov_open_callbacks(&stream->fh, ovFile, NULL, 0, ovc_qfs); + if (res != 0) + { + Con_Printf("%s is not a valid Ogg Vorbis file (error %i).\n", + stream->name, res); + goto _fail; + } + + if (!ov_seekable(ovFile)) + { + Con_Printf("Stream %s not seekable.\n", stream->name); + goto _fail; + } + + ovf_info = ov_info(ovFile, 0); + if (!ovf_info) + { + Con_Printf("Unable to get stream info for %s.\n", stream->name); + goto _fail; + } + + /* FIXME: handle section changes */ + numstreams = ov_streams(ovFile); + if (numstreams != 1) + { + Con_Printf("More than one (%ld) stream in %s.\n", + numstreams, stream->name); + goto _fail; + } + + if (ovf_info->channels != 1 && ovf_info->channels != 2) + { + Con_Printf("Unsupported number of channels %d in %s\n", + ovf_info->channels, stream->name); + goto _fail; + } + + stream->info.rate = ovf_info->rate; + stream->info.channels = ovf_info->channels; + stream->info.bits = VORBIS_SAMPLEBITS; + stream->info.width = VORBIS_SAMPLEWIDTH; + + return true; +_fail: + if (res == 0) + ov_clear(ovFile); + Z_Free(ovFile); + return false; +} + +static int S_VORBIS_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + int section; /* FIXME: handle section changes */ + int cnt, res, rem; + char * ptr; + + cnt = 0; rem = bytes; + ptr = (char *) buffer; + while (1) + { + /* # ov_read() from libvorbisfile returns the decoded PCM audio + * in requested endianness, signedness and word size. + * # ov_read() from Tremor (libvorbisidec) returns decoded audio + * always in host-endian, signed 16 bit PCM format. + * # For both of the libraries, if the audio is multichannel, + * the channels are interleaved in the output buffer. + */ + res = ov_read( (OggVorbis_File *)stream->priv, ptr, rem, +#ifndef VORBIS_USE_TREMOR + host_bigendian, + VORBIS_SAMPLEWIDTH, + VORBIS_SIGNED_DATA, +#endif + §ion ); + if (res <= 0) + break; + rem -= res; + cnt += res; + if (rem <= 0) + break; + ptr += res; + } + + if (res < 0) + return res; + return cnt; +} + +static void S_VORBIS_CodecCloseStream (snd_stream_t *stream) +{ + ov_clear((OggVorbis_File *)stream->priv); + Z_Free(stream->priv); + S_CodecUtilClose(&stream); +} + +static int S_VORBIS_CodecRewindStream (snd_stream_t *stream) +{ +/* for libvorbisfile, the ov_time_seek() position argument + * is seconds as doubles, whereas for Tremor libvorbisidec + * it is milliseconds as 64 bit integers. + */ + return ov_time_seek ((OggVorbis_File *)stream->priv, 0); +} + +snd_codec_t vorbis_codec = +{ + CODECTYPE_VORBIS, + true, /* always available. */ + "ogg", + S_VORBIS_CodecInitialize, + S_VORBIS_CodecShutdown, + S_VORBIS_CodecOpenStream, + S_VORBIS_CodecReadStream, + S_VORBIS_CodecRewindStream, + NULL, /* jump */ + S_VORBIS_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_VORBIS */ + diff --git a/Quake/snd_vorbis.h b/Quake/snd_vorbis.h new file mode 100644 index 0000000..0f1cc9e --- /dev/null +++ b/Quake/snd_vorbis.h @@ -0,0 +1,13 @@ +/* Ogg/Vorbis streaming music support. */ + +#if !defined(_SND_VORBIS_H_) +#define _SND_VORBIS_H_ 1 + +#if defined(USE_CODEC_VORBIS) + +extern snd_codec_t vorbis_codec; + +#endif /* USE_CODEC_VORBIS */ + +#endif /* ! _SND_VORBIS_H_ */ + diff --git a/Quake/snd_wave.c b/Quake/snd_wave.c new file mode 100644 index 0000000..35e3ccf --- /dev/null +++ b/Quake/snd_wave.c @@ -0,0 +1,275 @@ +/* + * WAV streaming music support. Adapted from ioquake3 with changes. + * + * Copyright (C) 1999-2005 Id Software, Inc. + * Copyright (C) 2005 Stuart Dalton <badcdev@gmail.com> + * Copyright (C) 2010-2012 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_WAVE) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_wave.h" + +/* +================= +FGetLittleLong +================= +*/ +static int FGetLittleLong (FILE *f) +{ + int v; + if (!fread(&v, sizeof(v), 1, f)) + return -1; + return LittleLong(v); +} + +/* +================= +FGetLittleShort +================= +*/ +static short FGetLittleShort(FILE *f) +{ + short v; + if (!fread(&v, sizeof(v), 1, f)) + return -1; + return LittleShort(v); +} + +/* +================= +WAV_ReadChunkInfo +================= +*/ +static int WAV_ReadChunkInfo(FILE *f, char *name) +{ + int len; + + name[4] = 0; + + if (!fread(name, 4, 1, f)) + return -1; + + len = FGetLittleLong(f); + if (len < 0) + { + Con_Printf("WAV: Negative chunk length\n"); + return -1; + } + + return len; +} + +/* +================= +WAV_FindRIFFChunk + +Returns the length of the data in the chunk, or -1 if not found +================= +*/ +static int WAV_FindRIFFChunk(FILE *f, const char *chunk) +{ + char name[5]; + int len; + + while ((len = WAV_ReadChunkInfo(f, name)) >= 0) + { + /* If this is the right chunk, return */ + if (!strncmp(name, chunk, 4)) + return len; + len = ((len + 1) & ~1); /* pad by 2 . */ + + /* Not the right chunk - skip it */ + fseek(f, len, SEEK_CUR); + } + + return -1; +} + +/* +================= +WAV_ReadRIFFHeader +================= +*/ +static qboolean WAV_ReadRIFFHeader(const char *name, FILE *file, snd_info_t *info) +{ + char dump[16]; + int wav_format; + int fmtlen = 0; + + if (fread(dump, 1, 12, file) < 12 || + strncmp(dump, "RIFF", 4) != 0 || + strncmp(&dump[8], "WAVE", 4) != 0) + { + Con_Printf("%s is missing RIFF/WAVE chunks\n", name); + return false; + } + + /* Scan for the format chunk */ + if ((fmtlen = WAV_FindRIFFChunk(file, "fmt ")) < 0) + { + Con_Printf("%s is missing fmt chunk\n", name); + return false; + } + + /* Save the parameters */ + wav_format = FGetLittleShort(file); + if (wav_format != WAV_FORMAT_PCM) + { + Con_Printf("%s is not Microsoft PCM format\n", name); + return false; + } + + info->channels = FGetLittleShort(file); + info->rate = FGetLittleLong(file); + FGetLittleLong(file); + FGetLittleShort(file); + info->bits = FGetLittleShort(file); + + if (info->bits != 8 && info->bits != 16) + { + Con_Printf("%s is not 8 or 16 bit\n", name); + return false; + } + + info->width = info->bits / 8; + info->dataofs = 0; + + /* Skip the rest of the format chunk if required */ + if (fmtlen > 16) + { + fmtlen -= 16; + fseek(file, fmtlen, SEEK_CUR); + } + + /* Scan for the data chunk */ + if ((info->size = WAV_FindRIFFChunk(file, "data")) < 0) + { + Con_Printf("%s is missing data chunk\n", name); + return false; + } + + if (info->channels != 1 && info->channels != 2) + { + Con_Printf("Unsupported number of channels %d in %s\n", + info->channels, name); + return false; + } + info->samples = (info->size / info->width) / info->channels; + if (info->samples == 0) + { + Con_Printf("%s has zero samples\n", name); + return false; + } + + return true; +} + +/* +================= +S_WAV_CodecOpenStream +================= +*/ +static qboolean S_WAV_CodecOpenStream(snd_stream_t *stream) +{ + long start = stream->fh.start; + + /* Read the RIFF header */ + /* The file reads are sequential, therefore no need + * for the FS_*() functions: We will manipulate the + * file by ourselves from now on. */ + if (!WAV_ReadRIFFHeader(stream->name, stream->fh.file, &stream->info)) + return false; + + stream->fh.start = ftell(stream->fh.file); /* reset to data position */ + if (stream->fh.start - start + stream->info.size > stream->fh.length) + { + Con_Printf("%s data size mismatch\n", stream->name); + return false; + } + + return true; +} + +/* +================= +S_WAV_CodecReadStream +================= +*/ +int S_WAV_CodecReadStream(snd_stream_t *stream, int bytes, void *buffer) +{ + int remaining = stream->info.size - stream->fh.pos; + int i, samples; + + if (remaining <= 0) + return 0; + if (bytes > remaining) + bytes = remaining; + stream->fh.pos += bytes; + if (!fread(buffer, bytes, 1, stream->fh.file)) + return -1; + if (stream->info.width == 2) + { + samples = bytes / 2; + for (i = 0; i < samples; i++) + ((short *)buffer)[i] = LittleShort( ((short *)buffer)[i] ); + } + return bytes; +} + +static void S_WAV_CodecCloseStream (snd_stream_t *stream) +{ + S_CodecUtilClose(&stream); +} + +static int S_WAV_CodecRewindStream (snd_stream_t *stream) +{ + FS_rewind(&stream->fh); + return 0; +} + +static qboolean S_WAV_CodecInitialize (void) +{ + return true; +} + +static void S_WAV_CodecShutdown (void) +{ +} + +snd_codec_t wav_codec = +{ + CODECTYPE_WAVE, + true, /* always available. */ + "wav", + S_WAV_CodecInitialize, + S_WAV_CodecShutdown, + S_WAV_CodecOpenStream, + S_WAV_CodecReadStream, + S_WAV_CodecRewindStream, + NULL, /* jump */ + S_WAV_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_WAVE */ + diff --git a/Quake/snd_wave.h b/Quake/snd_wave.h new file mode 100644 index 0000000..7f7f50b --- /dev/null +++ b/Quake/snd_wave.h @@ -0,0 +1,13 @@ +/* WAV streaming music support. */ + +#if !defined(_SND_WAVE_H_) +#define _SND_WAVE_H_ + +#if defined(USE_CODEC_WAVE) + +extern snd_codec_t wav_codec; + +#endif /* USE_CODEC_WAVE */ + +#endif /* ! _SND_WAVE_H_ */ + diff --git a/Quake/snd_xmp.c b/Quake/snd_xmp.c new file mode 100644 index 0000000..f5d5651 --- /dev/null +++ b/Quake/snd_xmp.c @@ -0,0 +1,193 @@ +/* tracker music (module file) decoding support using libxmp >= v4.2.0 + * https://sourceforge.net/projects/xmp/ + * https://github.com/libxmp/libxmp.git + * + * Copyright (C) 2016 O.Sezer <sezero@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "quakedef.h" + +#if defined(USE_CODEC_XMP) +#include "snd_codec.h" +#include "snd_codeci.h" +#include "snd_xmp.h" +#if defined(_WIN32) && defined(LIBXMP_STATIC) +#define BUILDING_STATIC +#endif +#include <xmp.h> +#if ((XMP_VERCODE+0) < 0x040200) +#error libxmp version 4.2 or newer is required +#endif + +static qboolean S_XMP_CodecInitialize (void) +{ + return true; +} + +static void S_XMP_CodecShutdown (void) +{ +} + +#if (XMP_VERCODE >= 0x040500) +static unsigned long xmp_fread(void *dest, unsigned long len, unsigned long nmemb, void *f) +{ + return FS_fread(dest, len, nmemb, (fshandle_t *)f); +} +static int xmp_fseek(void *f, long offset, int whence) +{ + return FS_fseek((fshandle_t *)f, offset, whence); +} +static long xmp_ftell(void *f) +{ + return FS_ftell((fshandle_t *)f); +} +#endif + +static qboolean S_XMP_CodecOpenStream (snd_stream_t *stream) +{ +/* need to load the whole file into memory and pass it to libxmp + * using xmp_load_module_from_memory() which requires libxmp >= 4.2. + * libxmp-4.0/4.1 only have xmp_load_module() which accepts a file + * name which isn't good with files in containers like paks, etc. + * On the other hand, libxmp >= 4.5 introduces file callbacks: use + * if available. */ + xmp_context c; +#if (XMP_VERCODE >= 0x040500) + struct xmp_callbacks file_callbacks = { + xmp_fread, xmp_fseek, xmp_ftell, NULL + }; +#else + byte *moddata; + long len; + int mark; +#endif + int fmt; + + c = xmp_create_context(); + if (c == NULL) + return false; + +#if (XMP_VERCODE >= 0x040500) + if (xmp_load_module_from_callbacks(c, &stream->fh, file_callbacks) < 0) { + Con_DPrintf("Could not load module %s\n", stream->name); + goto err1; + } +#else + len = FS_filelength (&stream->fh); + mark = Hunk_LowMark(); + moddata = (byte *) Hunk_Alloc(len); + FS_fread(moddata, 1, len, &stream->fh); + if (xmp_load_module_from_memory(c, moddata, len) < 0) { + Hunk_FreeToLowMark(mark); + Con_DPrintf("Could not load module %s\n", stream->name); + goto err1; + } + Hunk_FreeToLowMark(mark); /* free original file data */ +#endif + + stream->priv = c; + if (shm->speed > XMP_MAX_SRATE) + stream->info.rate = 44100; + else if (shm->speed < XMP_MIN_SRATE) + stream->info.rate = 11025; + else stream->info.rate = shm->speed; + stream->info.bits = shm->samplebits; + stream->info.width = stream->info.bits / 8; + stream->info.channels = shm->channels; + + fmt = 0; + if (stream->info.channels == 1) + fmt |= XMP_FORMAT_MONO; + if (stream->info.width == 1) + fmt |= XMP_FORMAT_8BIT|XMP_FORMAT_UNSIGNED; + if (xmp_start_player(c, stream->info.rate, fmt) < 0) + goto err2; + + /* interpolation type, default is XMP_INTERP_LINEAR */ + xmp_set_player(c, XMP_PLAYER_INTERP, XMP_INTERP_SPLINE); + + return true; + +err2: xmp_release_module(c); +err1: xmp_free_context(c); + return false; +} + +static int S_XMP_CodecReadStream (snd_stream_t *stream, int bytes, void *buffer) +{ + int r; + /* xmp_play_buffer() requires libxmp >= 4.1. it will write + * native-endian pcm data to the buffer. if the data write + * is partial, the rest of the buffer will be zero-filled. + * the last param is the max number that the current sequence + * of song will be looped, or 0 to disable loop checking. */ + r = xmp_play_buffer((xmp_context)stream->priv, buffer, bytes, !stream->loop); + if (r == 0) { + return bytes; + } + if (r == -XMP_END) { + Con_DPrintf("XMP EOF\n"); + return 0; + } + return -1; +} + +static void S_XMP_CodecCloseStream (snd_stream_t *stream) +{ + xmp_context c = (xmp_context)stream->priv; + xmp_end_player(c); + xmp_release_module(c); + xmp_free_context(c); + S_CodecUtilClose(&stream); +} + +static int S_XMP_CodecJumpToOrder (snd_stream_t *stream, int to) +{ + const int err = xmp_set_position((xmp_context)stream->priv, to); + switch (err) { + case -XMP_ERROR_STATE: + case -XMP_ERROR_INVALID: + return -1; + } + return 0; +} + +static int S_XMP_CodecRewindStream (snd_stream_t *stream) +{ + int ret = xmp_seek_time((xmp_context)stream->priv, 0); + if (ret < 0) return ret; + xmp_play_buffer((xmp_context)stream->priv, NULL, 0, 0); /* reset internal state */ + return 0; +} + +snd_codec_t xmp_codec = +{ + CODECTYPE_MOD, + true, /* always available. */ + "s3m", + S_XMP_CodecInitialize, + S_XMP_CodecShutdown, + S_XMP_CodecOpenStream, + S_XMP_CodecReadStream, + S_XMP_CodecRewindStream, + S_XMP_CodecJumpToOrder, + S_XMP_CodecCloseStream, + NULL +}; + +#endif /* USE_CODEC_XMP */ diff --git a/Quake/snd_xmp.h b/Quake/snd_xmp.h new file mode 100644 index 0000000..9516a49 --- /dev/null +++ b/Quake/snd_xmp.h @@ -0,0 +1,12 @@ +/* module tracker decoding support using libxmp */ +#if !defined(_SND_XMP_H_) +#define _SND_XMP_H_ + +#if defined(USE_CODEC_XMP) + +extern snd_codec_t xmp_codec; + +#endif /* USE_CODEC_XMP */ + +#endif /* ! _SND_XMP_H_ */ + diff --git a/Quake/spritegn.h b/Quake/spritegn.h new file mode 100644 index 0000000..8174842 --- /dev/null +++ b/Quake/spritegn.h @@ -0,0 +1,117 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __SPRITEGEN_H +#define __SPRITEGEN_H + +// +// spritegn.h: header file for sprite generation program +// + +// ********************************************************** +// * This file must be identical in the spritegen directory * +// * and in the Quake directory, because it's used to * +// * pass data from one to the other via .spr files. * +// ********************************************************** + +//------------------------------------------------------- +// This program generates .spr sprite package files. +// The format of the files is as follows: +// +// dsprite_t file header structure +// <repeat dsprite_t.numframes times> +// <if spritegroup, repeat dspritegroup_t.numframes times> +// dspriteframe_t frame header structure +// sprite bitmap +// <else (single sprite frame)> +// dspriteframe_t frame header structure +// sprite bitmap +// <endrepeat> +//------------------------------------------------------- + +#ifdef INCLUDELIBS + +#include <stdlib.h> +#include <stdio.h> +#include <math.h> +#include <string.h> + +#include "cmdlib.h" +#include "scriplib.h" +#include "dictlib.h" +#include "trilib.h" +#include "lbmlib.h" +#include "mathlib.h" + +#endif + +#define SPRITE_VERSION 1 + +// must match definition in modelgen.h +#ifndef SYNCTYPE_T +#define SYNCTYPE_T +typedef enum {ST_SYNC=0, ST_RAND } synctype_t; +#endif + +// TODO: shorten these? +typedef struct { + int ident; + int version; + int type; + float boundingradius; + int width; + int height; + int numframes; + float beamlength; + synctype_t synctype; +} dsprite_t; + +#define SPR_VP_PARALLEL_UPRIGHT 0 +#define SPR_FACING_UPRIGHT 1 +#define SPR_VP_PARALLEL 2 +#define SPR_ORIENTED 3 +#define SPR_VP_PARALLEL_ORIENTED 4 + +typedef struct { + int origin[2]; + int width; + int height; +} dspriteframe_t; + +typedef struct { + int numframes; +} dspritegroup_t; + +typedef struct { + float interval; +} dspriteinterval_t; + +typedef enum { SPR_SINGLE=0, SPR_GROUP, SPR_ANGLED } spriteframetype_t; + +typedef struct { + spriteframetype_t type; +} dspriteframetype_t; + +#define IDSPRITEHEADER (('P'<<24)+('S'<<16)+('D'<<8)+'I') + // little-endian "IDSP" + +#endif /* __SPRITEGEN_H */ + diff --git a/Quake/stb_image_write.h b/Quake/stb_image_write.h new file mode 100644 index 0000000..260b0b4 --- /dev/null +++ b/Quake/stb_image_write.h @@ -0,0 +1,684 @@ +/* QuakeSpasm: kept only the jpg writer, the only thing we use, and removed all others. */ + +/* stb_image_write - v1.07 - public domain - http://nothings.org/stb/stb_image_write.h + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio. It could be + adapted to write to memory or a general streaming interface; let me know. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation. This library is designed + for source code compactness and simplicity, not optimal image file size + or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can define STBIW_MEMMOVE() to replace memmove() + +USAGE: + + There are four functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const float *data); + + There are also four equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + PNG/BMP/TGA + Sean Barrett + HDR + Baldur Karlsson + TGA monochrome: + Jean-Sebastien Guay + misc enhancements: + Tim Kelsey + TGA RLE + Alan Hickman + initial file IO callback implementation + Emmanuel Julien + JPEG + Jon Olick (original jo_jpeg.cpp code) + Daniel Gibson + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#define STBIWDEF extern +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +#if 0 /* not used in QuakeSpasm */ +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); +#endif + +#ifdef __cplusplus +} +#endif + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include <stdio.h> +#endif // STBI_WRITE_NO_STDIO + +#include <stdarg.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include <assert.h> +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +typedef struct +{ + stbi_write_func *func; + void *context; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<<bits[1])-1); +} + +static int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt, float *CDU, float *fdtbl, int DC, const unsigned short HTDC[256][2], const unsigned short HTAC[256][2]) { + unsigned short EOB[2]; + unsigned short M16zeroes[2]; + int dataOff, i, diff, end0pos; + int DU[64]; + + EOB[0] = HTAC[0x00][0]; + EOB[1] = HTAC[0x00][1]; + M16zeroes[0] = HTAC[0xF0][0]; + M16zeroes[1] = HTAC[0xF0][1]; + + // DCT rows + for(dataOff=0; dataOff<64; dataOff+=8) { + stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+1], &CDU[dataOff+2], &CDU[dataOff+3], &CDU[dataOff+4], &CDU[dataOff+5], &CDU[dataOff+6], &CDU[dataOff+7]); + } + // DCT columns + for(dataOff=0; dataOff<8; ++dataOff) { + stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+8], &CDU[dataOff+16], &CDU[dataOff+24], &CDU[dataOff+32], &CDU[dataOff+40], &CDU[dataOff+48], &CDU[dataOff+56]); + } + // Quantize/descale/zigzag the coefficients + for(i=0; i<64; ++i) { + float v = CDU[i]*fdtbl[i]; + // DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? ceilf(v - 0.5f) : floorf(v + 0.5f)); + // ceilf() and floorf() are C99, not C89, but I /think/ they're not needed here anyway? + DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? v - 0.5f : v + 0.5f); + } + + // Encode DC + diff = DU[0] - DC; + if (diff == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[0]); + } else { + unsigned short bits[2]; + stbiw__jpg_calcBits(diff, bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + // Encode ACs + end0pos = 63; + for(; (end0pos>0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; i<=end0pos && DU[i]==0; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + unsigned char head1[] = { 0xFF,0xC0,0,0x11,8, /*[5]*/0,/*[6]*/0,/*[7]*/0,/*[8]*/0, + 3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + head1[5] = (unsigned char)(height>>8); + head1[6] = STBIW_UCHAR(height); + head1[7] = (unsigned char)(width>>8); + head1[8] = STBIW_UCHAR(width); + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + const unsigned char *imageData = (const unsigned char *)data; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + int x, y, pos; + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float YDU[64], UDU[64], VDU[64]; + for(row = y, pos = 0; row < y+8; ++row) { + for(col = x; col < x+8; ++col, ++pos) { + int p = row*width*comp + col*comp; + float r, g, b; + if(row >= height) { + p -= width*comp*(row+1 - height); + } + if(col >= width) { + p -= comp*(col+1 - width); + } + + r = imageData[p+0]; + g = imageData[p+ofsG]; + b = imageData[p+ofsB]; + YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128; + UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b; + VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +#if 0 /* not used in QuakeSpasm */ +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} +#endif + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/Quake/strl_fn.h b/Quake/strl_fn.h new file mode 100644 index 0000000..3be2a32 --- /dev/null +++ b/Quake/strl_fn.h @@ -0,0 +1,16 @@ +/* strl_fn.h - header file for BSD strlcat and strlcpy */ + +#ifndef __STRLFUNCS_H +#define __STRLFUNCS_H + +/* use our own copies of strlcpy and strlcat taken from OpenBSD */ +#ifdef __cplusplus +extern "C" { +#endif +extern size_t q_strlcpy (char *dst, const char *src, size_t size); +extern size_t q_strlcat (char *dst, const char *src, size_t size); +#ifdef __cplusplus +} +#endif + +#endif /* __STRLFUNCS_H */ diff --git a/Quake/strlcat.c b/Quake/strlcat.c new file mode 100644 index 0000000..48b91f6 --- /dev/null +++ b/Quake/strlcat.c @@ -0,0 +1,59 @@ +/* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */ + +/* + * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <string.h> + +#include "strl_fn.h" + +/* + * Appends src to string dst of size siz (unlike strncat, siz is the + * full size of dst, not space left). At most siz-1 characters + * will be copied. Always NUL terminates (unless siz <= strlen(dst)). + * Returns strlen(src) + MIN(siz, strlen(initial dst)). + * If retval >= siz, truncation occurred. + */ + +size_t +q_strlcat (char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + size_t dlen; + + /* Find the end of dst and adjust bytes left but don't go past end */ + while (n-- != 0 && *d != '\0') + d++; + dlen = d - dst; + n = siz - dlen; + + if (n == 0) + return(dlen + strlen(s)); + while (*s != '\0') { + if (n != 1) { + *d++ = *s; + n--; + } + s++; + } + *d = '\0'; + + return(dlen + (s - src)); /* count does not include NUL */ +} + diff --git a/Quake/strlcpy.c b/Quake/strlcpy.c new file mode 100644 index 0000000..754e70d --- /dev/null +++ b/Quake/strlcpy.c @@ -0,0 +1,55 @@ +/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ + +/* + * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <string.h> + +#include "strl_fn.h" + +/* + * Copy src to string dst of size siz. At most siz-1 characters + * will be copied. Always NUL terminates (unless siz == 0). + * Returns strlen(src); if retval >= siz, truncation occurred. + */ + +size_t +q_strlcpy (char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + + /* Copy as many bytes as will fit */ + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') + break; + } + } + + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + + return(s - src - 1); /* count does not include NUL */ +} + diff --git a/Quake/sv_main.c b/Quake/sv_main.c new file mode 100644 index 0000000..da8d48c --- /dev/null +++ b/Quake/sv_main.c @@ -0,0 +1,1625 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sv_main.c -- server main program + +#include "quakedef.h" + +server_t sv; +server_static_t svs; + +static char localmodels[MAX_MODELS][8]; // inline model names for precache + +int sv_protocol = PROTOCOL_FITZQUAKE; //johnfitz + +extern qboolean pr_alpha_supported; //johnfitz +extern int pr_effects_mask; + +extern cvar_t nomonsters; + +//============================================================================ + +/* +=============== +SV_Protocol_f +=============== +*/ +void SV_Protocol_f (void) +{ + int i; + + switch (Cmd_Argc()) + { + case 1: + Con_Printf ("\"sv_protocol\" is \"%i\"\n", sv_protocol); + break; + case 2: + i = atoi(Cmd_Argv(1)); + if (i != PROTOCOL_NETQUAKE && i != PROTOCOL_FITZQUAKE && i != PROTOCOL_RMQ) + Con_Printf ("sv_protocol must be %i or %i or %i\n", PROTOCOL_NETQUAKE, PROTOCOL_FITZQUAKE, PROTOCOL_RMQ); + else + { + sv_protocol = i; + if (sv.active) + Con_Printf ("changes will not take effect until the next level load.\n"); + } + break; + default: + Con_SafePrintf ("usage: sv_protocol <protocol>\n"); + break; + } +} + +/* +=============== +SV_Init +=============== +*/ +void SV_Init (void) +{ + int i; + const char *p; + extern cvar_t sv_maxvelocity; + extern cvar_t sv_gravity; + extern cvar_t sv_nostep; + extern cvar_t sv_freezenonclients; + extern cvar_t sv_friction; + extern cvar_t sv_edgefriction; + extern cvar_t sv_stopspeed; + extern cvar_t sv_maxspeed; + extern cvar_t sv_accelerate; + extern cvar_t sv_idealpitchscale; + extern cvar_t sv_aim; + extern cvar_t sv_altnoclip; //johnfitz + + sv.edicts = NULL; // ericw -- sv.edicts switched to use malloc() + + Cvar_RegisterVariable (&sv_maxvelocity); + Cvar_RegisterVariable (&sv_gravity); + Cvar_RegisterVariable (&sv_friction); + Cvar_SetCallback (&sv_gravity, Host_Callback_Notify); + Cvar_SetCallback (&sv_friction, Host_Callback_Notify); + Cvar_RegisterVariable (&sv_edgefriction); + Cvar_RegisterVariable (&sv_stopspeed); + Cvar_RegisterVariable (&sv_maxspeed); + Cvar_SetCallback (&sv_maxspeed, Host_Callback_Notify); + Cvar_RegisterVariable (&sv_accelerate); + Cvar_RegisterVariable (&sv_idealpitchscale); + Cvar_RegisterVariable (&sv_aim); + Cvar_RegisterVariable (&sv_nostep); + Cvar_RegisterVariable (&sv_freezenonclients); + Cvar_RegisterVariable (&sv_altnoclip); //johnfitz + + Cmd_AddCommand ("sv_protocol", &SV_Protocol_f); //johnfitz + + for (i=0 ; i<MAX_MODELS ; i++) + sprintf (localmodels[i], "*%i", i); + + i = COM_CheckParm ("-protocol"); + if (i && i < com_argc - 1) + sv_protocol = atoi (com_argv[i + 1]); + switch (sv_protocol) + { + case PROTOCOL_NETQUAKE: + p = "NetQuake"; + break; + case PROTOCOL_FITZQUAKE: + p = "FitzQuake"; + break; + case PROTOCOL_RMQ: + p = "RMQ"; + break; + default: + Sys_Error ("Bad protocol version request %i. Accepted values: %i, %i, %i.", + sv_protocol, PROTOCOL_NETQUAKE, PROTOCOL_FITZQUAKE, PROTOCOL_RMQ); + return; /* silence compiler */ + } + Sys_Printf ("Server using protocol %i (%s)\n", sv_protocol, p); +} + +/* +============================================================================= + +EVENT MESSAGES + +============================================================================= +*/ + +/* +================== +SV_StartParticle + +Make sure the event gets sent to all clients +================== +*/ +void SV_StartParticle (vec3_t org, vec3_t dir, int color, int count) +{ + int i, v; + + if (sv.datagram.cursize > MAX_DATAGRAM-18) + return; + MSG_WriteByte (&sv.datagram, svc_particle); + MSG_WriteCoord (&sv.datagram, org[0], sv.protocolflags); + MSG_WriteCoord (&sv.datagram, org[1], sv.protocolflags); + MSG_WriteCoord (&sv.datagram, org[2], sv.protocolflags); + for (i=0 ; i<3 ; i++) + { + v = dir[i]*16; + if (v > 127) + v = 127; + else if (v < -128) + v = -128; + MSG_WriteChar (&sv.datagram, v); + } + MSG_WriteByte (&sv.datagram, count); + MSG_WriteByte (&sv.datagram, color); +} + +/* +================== +SV_StartSound + +Each entity can have eight independant sound sources, like voice, +weapon, feet, etc. + +Channel 0 is an auto-allocate channel, the others override anything +already running on that entity/channel pair. + +An attenuation of 0 will play full volume everywhere in the level. +Larger attenuations will drop off. (max 4 attenuation) + +================== +*/ +void SV_StartSound (edict_t *entity, int channel, const char *sample, int volume, float attenuation) +{ + int sound_num, ent; + int i, field_mask; + + if (volume < 0 || volume > 255) + Host_Error ("SV_StartSound: volume = %i", volume); + + if (attenuation < 0 || attenuation > 4) + Host_Error ("SV_StartSound: attenuation = %f", attenuation); + + if (channel < 0 || channel > 7) + Host_Error ("SV_StartSound: channel = %i", channel); + + if (sv.datagram.cursize > MAX_DATAGRAM-21) + return; + +// find precache number for sound + for (sound_num = 1; sound_num < MAX_SOUNDS && sv.sound_precache[sound_num]; sound_num++) + { + if (!strcmp(sample, sv.sound_precache[sound_num])) + break; + } + + if (sound_num == MAX_SOUNDS || !sv.sound_precache[sound_num]) + { + Con_Printf ("SV_StartSound: %s not precached\n", sample); + return; + } + + ent = NUM_FOR_EDICT(entity); + + field_mask = 0; + if (volume != DEFAULT_SOUND_PACKET_VOLUME) + field_mask |= SND_VOLUME; + if (attenuation != DEFAULT_SOUND_PACKET_ATTENUATION) + field_mask |= SND_ATTENUATION; + + //johnfitz -- PROTOCOL_FITZQUAKE + if (ent >= 8192) + { + if (sv.protocol == PROTOCOL_NETQUAKE) + return; //don't send any info protocol can't support + field_mask |= SND_LARGEENTITY; + } + if (sound_num >= 256 || channel >= 8) + { + if (sv.protocol == PROTOCOL_NETQUAKE) + return; //don't send any info protocol can't support + field_mask |= SND_LARGESOUND; + } + //johnfitz + + if (sv.datagram.cursize > MAX_DATAGRAM-21) + return; + +// directed messages go only to the entity the are targeted on + MSG_WriteByte (&sv.datagram, svc_sound); + MSG_WriteByte (&sv.datagram, field_mask); + if (field_mask & SND_VOLUME) + MSG_WriteByte (&sv.datagram, volume); + if (field_mask & SND_ATTENUATION) + MSG_WriteByte (&sv.datagram, attenuation*64); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (field_mask & SND_LARGEENTITY) + { + MSG_WriteShort (&sv.datagram, ent); + MSG_WriteByte (&sv.datagram, channel); + } + else + MSG_WriteShort (&sv.datagram, (ent<<3) | channel); + if (field_mask & SND_LARGESOUND) + MSG_WriteShort (&sv.datagram, sound_num); + else + MSG_WriteByte (&sv.datagram, sound_num); + //johnfitz + + for (i = 0; i < 3; i++) + MSG_WriteCoord (&sv.datagram, entity->v.origin[i]+0.5*(entity->v.mins[i]+entity->v.maxs[i]), sv.protocolflags); +} + +/* +================== +SV_LocalSound - for 2021 rerelease +================== +*/ +void SV_LocalSound (client_t *client, const char *sample) +{ + int sound_num, field_mask; + + for (sound_num = 1; sound_num < MAX_SOUNDS && sv.sound_precache[sound_num]; sound_num++) + { + if (!strcmp(sample, sv.sound_precache[sound_num])) + break; + } + if (sound_num == MAX_SOUNDS || !sv.sound_precache[sound_num]) + { + Con_Printf ("SV_LocalSound: %s not precached\n", sample); + return; + } + + field_mask = 0; + if (sound_num >= 256) + { + if (sv.protocol == PROTOCOL_NETQUAKE) + return; + field_mask = SND_LARGESOUND; + } + + if (client->message.cursize > client->message.maxsize-4) + return; + + MSG_WriteByte (&client->message, svc_localsound); + MSG_WriteByte (&client->message, field_mask); + if (field_mask & SND_LARGESOUND) + MSG_WriteShort (&client->message, sound_num); + else + MSG_WriteByte (&client->message, sound_num); +} + +/* +============================================================================== + +CLIENT SPAWNING + +============================================================================== +*/ + +static qboolean SV_IsLocalClient (client_t *client) +{ + return Q_strcmp (NET_QSocketGetAddressString (client->netconnection), "LOCAL") == 0; +} + +/* +================ +SV_SendServerinfo + +Sends the first message from the server to a connected client. +This will be sent on the initial connection and upon each server load. +================ +*/ +void SV_SendServerinfo (client_t *client) +{ + const char **s; + char message[2048]; + int i; //johnfitz + + MSG_WriteByte (&client->message, svc_print); + sprintf (message, "%c\nFITZQUAKE %1.2f SERVER (%i CRC)\n", 2, FITZQUAKE_VERSION, pr_crc); //johnfitz -- include fitzquake version + MSG_WriteString (&client->message,message); + + MSG_WriteByte (&client->message, svc_serverinfo); + MSG_WriteLong (&client->message, sv.protocol); //johnfitz -- sv.protocol instead of PROTOCOL_VERSION + + if (sv.protocol == PROTOCOL_RMQ) + { + // mh - now send protocol flags so that the client knows the protocol features to expect + MSG_WriteLong (&client->message, sv.protocolflags); + } + + MSG_WriteByte (&client->message, svs.maxclients); + + if (!coop.value && deathmatch.value) + MSG_WriteByte (&client->message, GAME_DEATHMATCH); + else + MSG_WriteByte (&client->message, GAME_COOP); + + MSG_WriteString (&client->message, PR_GetString(sv.edicts->v.message)); + + //johnfitz -- only send the first 256 model and sound precaches if protocol is 15 + for (i = 1, s = sv.model_precache+1; *s; s++,i++) + if (sv.protocol != PROTOCOL_NETQUAKE || i < 256) + MSG_WriteString (&client->message, *s); + MSG_WriteByte (&client->message, 0); + + for (i = 1, s = sv.sound_precache+1; *s; s++, i++) + if (sv.protocol != PROTOCOL_NETQUAKE || i < 256) + MSG_WriteString (&client->message, *s); + MSG_WriteByte (&client->message, 0); + //johnfitz + +// send music + MSG_WriteByte (&client->message, svc_cdtrack); + MSG_WriteByte (&client->message, sv.edicts->v.sounds); + MSG_WriteByte (&client->message, sv.edicts->v.sounds); + +// set view + MSG_WriteByte (&client->message, svc_setview); + MSG_WriteShort (&client->message, NUM_FOR_EDICT(client->edict)); + + MSG_WriteByte (&client->message, svc_signonnum); + MSG_WriteByte (&client->message, 1); + + client->sendsignon = PRESPAWN_FLUSH; + client->spawned = false; // need prespawn, spawn, etc +} + +/* +================ +SV_ConnectClient + +Initializes a client_t for a new net connection. This will only be called +once for a player each game, not once for each level change. +================ +*/ +void SV_ConnectClient (int clientnum) +{ + edict_t *ent; + client_t *client; + int edictnum; + struct qsocket_s *netconnection; + int i; + float spawn_parms[NUM_SPAWN_PARMS]; + + client = svs.clients + clientnum; + + Con_DPrintf ("Client %s connected\n", NET_QSocketGetAddressString(client->netconnection)); + + edictnum = clientnum+1; + + ent = EDICT_NUM(edictnum); + +// set up the client_t + netconnection = client->netconnection; + + if (sv.loadgame) + memcpy (spawn_parms, client->spawn_parms, sizeof(spawn_parms)); + memset (client, 0, sizeof(*client)); + client->netconnection = netconnection; + + strcpy (client->name, "unconnected"); + client->active = true; + client->spawned = false; + client->edict = ent; + client->message.data = client->msgbuf; + client->message.maxsize = sizeof(client->msgbuf); + client->message.allowoverflow = true; // we can catch it + + if (sv.loadgame) + memcpy (client->spawn_parms, spawn_parms, sizeof(spawn_parms)); + else + { + // call the progs to get default spawn parms for the new client + PR_ExecuteProgram (pr_global_struct->SetNewParms); + for (i=0 ; i<NUM_SPAWN_PARMS ; i++) + client->spawn_parms[i] = (&pr_global_struct->parm1)[i]; + } + + SV_SendServerinfo (client); +} + + +/* +=================== +SV_CheckForNewClients + +=================== +*/ +void SV_CheckForNewClients (void) +{ + struct qsocket_s *ret; + int i; + +// +// check for new connections +// + while (1) + { + ret = NET_CheckNewConnections (); + if (!ret) + break; + + // + // init a new client structure + // + for (i=0 ; i<svs.maxclients ; i++) + if (!svs.clients[i].active) + break; + if (i == svs.maxclients) + Sys_Error ("Host_CheckForNewClients: no free clients"); + + svs.clients[i].netconnection = ret; + SV_ConnectClient (i); + + net_activeconnections++; + } +} + + +/* +=============================================================================== + +FRAME UPDATES + +=============================================================================== +*/ + +/* +================== +SV_ClearDatagram + +================== +*/ +void SV_ClearDatagram (void) +{ + SZ_Clear (&sv.datagram); +} + +/* +============================================================================= + +The PVS must include a small area around the client to allow head bobbing +or other small motion on the client side. Otherwise, a bob might cause an +entity that should be visible to not show up, especially when the bob +crosses a waterline. + +============================================================================= +*/ + +static int fatbytes; +static byte *fatpvs; +static int fatpvs_capacity; + +void SV_AddToFatPVS (vec3_t org, mnode_t *node, qmodel_t *worldmodel) //johnfitz -- added worldmodel as a parameter +{ + int i; + byte *pvs; + mplane_t *plane; + float d; + + while (1) + { + // if this is a leaf, accumulate the pvs bits + if (node->contents < 0) + { + if (node->contents != CONTENTS_SOLID) + { + pvs = Mod_LeafPVS ( (mleaf_t *)node, worldmodel); //johnfitz -- worldmodel as a parameter + for (i=0 ; i<fatbytes ; i++) + fatpvs[i] |= pvs[i]; + } + return; + } + + plane = node->plane; + d = DotProduct (org, plane->normal) - plane->dist; + if (d > 8) + node = node->children[0]; + else if (d < -8) + node = node->children[1]; + else + { // go down both + SV_AddToFatPVS (org, node->children[0], worldmodel); //johnfitz -- worldmodel as a parameter + node = node->children[1]; + } + } +} + +/* +============= +SV_FatPVS + +Calculates a PVS that is the inclusive or of all leafs within 8 pixels of the +given point. +============= +*/ +byte *SV_FatPVS (vec3_t org, qmodel_t *worldmodel) //johnfitz -- added worldmodel as a parameter +{ + fatbytes = (worldmodel->numleafs+7)>>3; // ericw -- was +31, assumed to be a bug/typo + if (fatpvs == NULL || fatbytes > fatpvs_capacity) + { + fatpvs_capacity = fatbytes; + fatpvs = (byte *) realloc (fatpvs, fatpvs_capacity); + if (!fatpvs) + Sys_Error ("SV_FatPVS: realloc() failed on %d bytes", fatpvs_capacity); + } + + Q_memset (fatpvs, 0, fatbytes); + SV_AddToFatPVS (org, worldmodel->nodes, worldmodel); //johnfitz -- worldmodel as a parameter + return fatpvs; +} + +/* +============= +SV_VisibleToClient -- johnfitz + +PVS test encapsulated in a nice function +============= +*/ +qboolean SV_VisibleToClient (edict_t *client, edict_t *test, qmodel_t *worldmodel) +{ + byte *pvs; + vec3_t org; + int i; + + VectorAdd (client->v.origin, client->v.view_ofs, org); + pvs = SV_FatPVS (org, worldmodel); + + for (i=0 ; i < test->num_leafs ; i++) + if (pvs[test->leafnums[i] >> 3] & (1 << (test->leafnums[i]&7) )) + return true; + + return false; +} + +//============================================================================= + +/* +============= +SV_WriteEntitiesToClient + +============= +*/ +void SV_WriteEntitiesToClient (edict_t *clent, sizebuf_t *msg) +{ + int e, i; + int bits; + byte *pvs; + vec3_t org; + float miss; + edict_t *ent; + eval_t *val; + +// find the client's PVS + VectorAdd (clent->v.origin, clent->v.view_ofs, org); + pvs = SV_FatPVS (org, sv.worldmodel); + +// send over all entities (excpet the client) that touch the pvs + ent = NEXT_EDICT(sv.edicts); + for (e=1 ; e<sv.num_edicts ; e++, ent = NEXT_EDICT(ent)) + { + + if (ent != clent) // clent is ALLWAYS sent + { + // ignore ents without visible models + if (!ent->v.modelindex || !PR_GetString(ent->v.model)[0]) + continue; + + //johnfitz -- don't send model>255 entities if protocol is 15 + if (sv.protocol == PROTOCOL_NETQUAKE && (int)ent->v.modelindex & 0xFF00) + continue; + + // ignore if not touching a PV leaf + for (i=0 ; i < ent->num_leafs ; i++) + if (pvs[ent->leafnums[i] >> 3] & (1 << (ent->leafnums[i]&7) )) + break; + + // ericw -- added ent->num_leafs < MAX_ENT_LEAFS condition. + // + // if ent->num_leafs == MAX_ENT_LEAFS, the ent is visible from too many leafs + // for us to say whether it's in the PVS, so don't try to vis cull it. + // this commonly happens with rotators, because they often have huge bboxes + // spanning the entire map, or really tall lifts, etc. + if (i == ent->num_leafs && ent->num_leafs < MAX_ENT_LEAFS) + continue; // not visible + } + + // johnfitz -- max size for protocol 15 is 18 bytes, not 16 as originally + // assumed here. And, for protocol 85 the max size is actually 24 bytes. + // For float coords and angles the limit is 40. + // FIXME: Use tighter limit according to protocol flags and send bits. + if (msg->cursize + 40 > msg->maxsize) + { + //johnfitz -- less spammy overflow message + if (!dev_overflows.packetsize || dev_overflows.packetsize + CONSOLE_RESPAM_TIME < realtime ) + { + Con_Printf ("Packet overflow!\n"); + dev_overflows.packetsize = realtime; + } + goto stats; + //johnfitz + } + +// send an update + bits = 0; + + for (i=0 ; i<3 ; i++) + { + miss = ent->v.origin[i] - ent->baseline.origin[i]; + if ( miss < -0.1 || miss > 0.1 ) + bits |= U_ORIGIN1<<i; + } + + if ( ent->v.angles[0] != ent->baseline.angles[0] ) + bits |= U_ANGLE1; + + if ( ent->v.angles[1] != ent->baseline.angles[1] ) + bits |= U_ANGLE2; + + if ( ent->v.angles[2] != ent->baseline.angles[2] ) + bits |= U_ANGLE3; + + if (ent->v.movetype == MOVETYPE_STEP) + bits |= U_STEP; // don't mess up the step animation + + if (ent->baseline.colormap != ent->v.colormap) + bits |= U_COLORMAP; + + if (ent->baseline.skin != ent->v.skin) + bits |= U_SKIN; + + if (ent->baseline.frame != ent->v.frame) + bits |= U_FRAME; + + if ((ent->baseline.effects ^ (int)ent->v.effects) & pr_effects_mask) + bits |= U_EFFECTS; + + if (ent->baseline.modelindex != ent->v.modelindex) + bits |= U_MODEL; + + //johnfitz -- alpha + if (pr_alpha_supported) + { + // TODO: find a cleaner place to put this code + val = GetEdictFieldValue(ent, "alpha"); + if (val) + ent->alpha = ENTALPHA_ENCODE(val->_float); + } + + //don't send invisible entities unless they have effects + if (ent->alpha == ENTALPHA_ZERO && !((int)ent->v.effects & pr_effects_mask)) + continue; + //johnfitz + + val = GetEdictFieldValue(ent, "scale"); + if (val) + ent->scale = ENTSCALE_ENCODE(val->_float); + else + ent->scale = ENTSCALE_DEFAULT; + + //johnfitz -- PROTOCOL_FITZQUAKE + if (sv.protocol != PROTOCOL_NETQUAKE) + { + + if (ent->baseline.alpha != ent->alpha) bits |= U_ALPHA; + if (ent->baseline.scale != ent->scale) bits |= U_SCALE; + if (bits & U_FRAME && (int)ent->v.frame & 0xFF00) bits |= U_FRAME2; + if (bits & U_MODEL && (int)ent->v.modelindex & 0xFF00) bits |= U_MODEL2; + if (ent->sendinterval) bits |= U_LERPFINISH; + if (bits >= 65536) bits |= U_EXTEND1; + if (bits >= 16777216) bits |= U_EXTEND2; + } + //johnfitz + + if (e >= 256) + bits |= U_LONGENTITY; + + if (bits >= 256) + bits |= U_MOREBITS; + + // + // write the message + // + MSG_WriteByte (msg, bits | U_SIGNAL); + + if (bits & U_MOREBITS) + MSG_WriteByte (msg, bits>>8); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & U_EXTEND1) + MSG_WriteByte(msg, bits>>16); + if (bits & U_EXTEND2) + MSG_WriteByte(msg, bits>>24); + //johnfitz + + if (bits & U_LONGENTITY) + MSG_WriteShort (msg,e); + else + MSG_WriteByte (msg,e); + + if (bits & U_MODEL) + MSG_WriteByte (msg, ent->v.modelindex); + if (bits & U_FRAME) + MSG_WriteByte (msg, ent->v.frame); + if (bits & U_COLORMAP) + MSG_WriteByte (msg, ent->v.colormap); + if (bits & U_SKIN) + MSG_WriteByte (msg, ent->v.skin); + if (bits & U_EFFECTS) + MSG_WriteByte (msg, (int)ent->v.effects & pr_effects_mask); + if (bits & U_ORIGIN1) + MSG_WriteCoord (msg, ent->v.origin[0], sv.protocolflags); + if (bits & U_ANGLE1) + MSG_WriteAngle(msg, ent->v.angles[0], sv.protocolflags); + if (bits & U_ORIGIN2) + MSG_WriteCoord (msg, ent->v.origin[1], sv.protocolflags); + if (bits & U_ANGLE2) + MSG_WriteAngle(msg, ent->v.angles[1], sv.protocolflags); + if (bits & U_ORIGIN3) + MSG_WriteCoord (msg, ent->v.origin[2], sv.protocolflags); + if (bits & U_ANGLE3) + MSG_WriteAngle(msg, ent->v.angles[2], sv.protocolflags); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & U_ALPHA) + MSG_WriteByte(msg, ent->alpha); + if (bits & U_SCALE) + MSG_WriteByte(msg, ent->scale); + if (bits & U_FRAME2) + MSG_WriteByte(msg, (int)ent->v.frame >> 8); + if (bits & U_MODEL2) + MSG_WriteByte(msg, (int)ent->v.modelindex >> 8); + if (bits & U_LERPFINISH) + MSG_WriteByte(msg, (byte)(Q_rint((ent->v.nextthink-sv.time)*255))); + //johnfitz + } + + //johnfitz -- devstats +stats: + if (msg->cursize > 1024 && dev_peakstats.packetsize <= 1024) + Con_DWarning ("%i byte packet exceeds standard limit of 1024 (max = %d).\n", msg->cursize, msg->maxsize); + dev_stats.packetsize = msg->cursize; + dev_peakstats.packetsize = q_max(msg->cursize, dev_peakstats.packetsize); + //johnfitz +} + +/* +============= +SV_CleanupEnts + +============= +*/ +void SV_CleanupEnts (void) +{ + int e; + edict_t *ent; + + ent = NEXT_EDICT(sv.edicts); + for (e=1 ; e<sv.num_edicts ; e++, ent = NEXT_EDICT(ent)) + { + ent->v.effects = (int)ent->v.effects & ~EF_MUZZLEFLASH; + } +} + +/* +================== +SV_WriteClientdataToMessage + +================== +*/ +void SV_WriteClientdataToMessage (edict_t *ent, sizebuf_t *msg) +{ + int bits; + int i; + edict_t *other; + int items; + eval_t *val; + +// +// send a damage message +// + if (ent->v.dmg_take || ent->v.dmg_save) + { + other = PROG_TO_EDICT(ent->v.dmg_inflictor); + MSG_WriteByte (msg, svc_damage); + MSG_WriteByte (msg, ent->v.dmg_save); + MSG_WriteByte (msg, ent->v.dmg_take); + for (i=0 ; i<3 ; i++) + MSG_WriteCoord (msg, other->v.origin[i] + 0.5*(other->v.mins[i] + other->v.maxs[i]), sv.protocolflags ); + + ent->v.dmg_take = 0; + ent->v.dmg_save = 0; + } + +// +// send the current viewpos offset from the view entity +// + SV_SetIdealPitch (); // how much to look up / down ideally + +// a fixangle might get lost in a dropped packet. Oh well. + if ( ent->v.fixangle ) + { + MSG_WriteByte (msg, svc_setangle); + for (i=0 ; i < 3 ; i++) + MSG_WriteAngle (msg, ent->v.angles[i], sv.protocolflags ); + ent->v.fixangle = 0; + } + + bits = 0; + + if (ent->v.view_ofs[2] != DEFAULT_VIEWHEIGHT) + bits |= SU_VIEWHEIGHT; + + if (ent->v.idealpitch) + bits |= SU_IDEALPITCH; + +// stuff the sigil bits into the high bits of items for sbar, or else +// mix in items2 + val = GetEdictFieldValue(ent, "items2"); + + if (val) + items = (int)ent->v.items | ((int)val->_float << 23); + else + items = (int)ent->v.items | ((int)pr_global_struct->serverflags << 28); + + bits |= SU_ITEMS; + + if ( (int)ent->v.flags & FL_ONGROUND) + bits |= SU_ONGROUND; + + if ( ent->v.waterlevel >= 2) + bits |= SU_INWATER; + + for (i=0 ; i<3 ; i++) + { + if (ent->v.punchangle[i]) + bits |= (SU_PUNCH1<<i); + if (ent->v.velocity[i]) + bits |= (SU_VELOCITY1<<i); + } + + if (ent->v.weaponframe) + bits |= SU_WEAPONFRAME; + + if (ent->v.armorvalue) + bits |= SU_ARMOR; + +// if (ent->v.weapon) + bits |= SU_WEAPON; + + //johnfitz -- PROTOCOL_FITZQUAKE + if (sv.protocol != PROTOCOL_NETQUAKE) + { + if (bits & SU_WEAPON && SV_ModelIndex(PR_GetString(ent->v.weaponmodel)) & 0xFF00) bits |= SU_WEAPON2; + if ((int)ent->v.armorvalue & 0xFF00) bits |= SU_ARMOR2; + if ((int)ent->v.currentammo & 0xFF00) bits |= SU_AMMO2; + if ((int)ent->v.ammo_shells & 0xFF00) bits |= SU_SHELLS2; + if ((int)ent->v.ammo_nails & 0xFF00) bits |= SU_NAILS2; + if ((int)ent->v.ammo_rockets & 0xFF00) bits |= SU_ROCKETS2; + if ((int)ent->v.ammo_cells & 0xFF00) bits |= SU_CELLS2; + if (bits & SU_WEAPONFRAME && (int)ent->v.weaponframe & 0xFF00) bits |= SU_WEAPONFRAME2; + if (bits & SU_WEAPON && ent->alpha != ENTALPHA_DEFAULT) bits |= SU_WEAPONALPHA; //for now, weaponalpha = client entity alpha + if (bits >= 65536) bits |= SU_EXTEND1; + if (bits >= 16777216) bits |= SU_EXTEND2; + } + //johnfitz + +// send the data + + MSG_WriteByte (msg, svc_clientdata); + MSG_WriteShort (msg, bits); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & SU_EXTEND1) MSG_WriteByte(msg, bits>>16); + if (bits & SU_EXTEND2) MSG_WriteByte(msg, bits>>24); + //johnfitz + + if (bits & SU_VIEWHEIGHT) + MSG_WriteChar (msg, ent->v.view_ofs[2]); + + if (bits & SU_IDEALPITCH) + MSG_WriteChar (msg, ent->v.idealpitch); + + for (i=0 ; i<3 ; i++) + { + if (bits & (SU_PUNCH1<<i)) + MSG_WriteChar (msg, ent->v.punchangle[i]); + if (bits & (SU_VELOCITY1<<i)) + MSG_WriteChar (msg, ent->v.velocity[i]/16); + } + +// [always sent] if (bits & SU_ITEMS) + MSG_WriteLong (msg, items); + + if (bits & SU_WEAPONFRAME) + MSG_WriteByte (msg, ent->v.weaponframe); + if (bits & SU_ARMOR) + MSG_WriteByte (msg, ent->v.armorvalue); + if (bits & SU_WEAPON) + MSG_WriteByte (msg, SV_ModelIndex(PR_GetString(ent->v.weaponmodel))); + + MSG_WriteShort (msg, ent->v.health); + MSG_WriteByte (msg, ent->v.currentammo); + MSG_WriteByte (msg, ent->v.ammo_shells); + MSG_WriteByte (msg, ent->v.ammo_nails); + MSG_WriteByte (msg, ent->v.ammo_rockets); + MSG_WriteByte (msg, ent->v.ammo_cells); + + if (standard_quake) + { + MSG_WriteByte (msg, ent->v.weapon); + } + else + { + int weapon = 0; + for(i=0;i<32;i++) + { + if ( ((int)ent->v.weapon) & (1<<i) ) + { + weapon = i; + break; + } + } + MSG_WriteByte (msg, weapon); + } + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & SU_WEAPON2) + MSG_WriteByte (msg, SV_ModelIndex(PR_GetString(ent->v.weaponmodel)) >> 8); + if (bits & SU_ARMOR2) + MSG_WriteByte (msg, (int)ent->v.armorvalue >> 8); + if (bits & SU_AMMO2) + MSG_WriteByte (msg, (int)ent->v.currentammo >> 8); + if (bits & SU_SHELLS2) + MSG_WriteByte (msg, (int)ent->v.ammo_shells >> 8); + if (bits & SU_NAILS2) + MSG_WriteByte (msg, (int)ent->v.ammo_nails >> 8); + if (bits & SU_ROCKETS2) + MSG_WriteByte (msg, (int)ent->v.ammo_rockets >> 8); + if (bits & SU_CELLS2) + MSG_WriteByte (msg, (int)ent->v.ammo_cells >> 8); + if (bits & SU_WEAPONFRAME2) + MSG_WriteByte (msg, (int)ent->v.weaponframe >> 8); + if (bits & SU_WEAPONALPHA) + MSG_WriteByte (msg, ent->alpha); //for now, weaponalpha = client entity alpha + //johnfitz +} + +/* +======================= +SV_SendClientDatagram +======================= +*/ +qboolean SV_SendClientDatagram (client_t *client) +{ + byte buf[MAX_DATAGRAM]; + sizebuf_t msg; + + msg.data = buf; + msg.maxsize = sizeof(buf); + msg.cursize = 0; + + //johnfitz -- if client is nonlocal, use smaller max size so packets aren't fragmented + if (Q_strcmp(NET_QSocketGetAddressString(client->netconnection), "LOCAL") != 0) + msg.maxsize = DATAGRAM_MTU; + //johnfitz + + MSG_WriteByte (&msg, svc_time); + MSG_WriteFloat (&msg, sv.time); + +// add the client specific data to the datagram + SV_WriteClientdataToMessage (client->edict, &msg); + + SV_WriteEntitiesToClient (client->edict, &msg); + +// copy the server datagram if there is space + if (msg.cursize + sv.datagram.cursize < msg.maxsize) + SZ_Write (&msg, sv.datagram.data, sv.datagram.cursize); + +// send the datagram + if (NET_SendUnreliableMessage (client->netconnection, &msg) == -1) + { + SV_DropClient (true);// if the message couldn't send, kick off + return false; + } + + return true; +} + +/* +======================= +SV_UpdateToReliableMessages +======================= +*/ +void SV_UpdateToReliableMessages (void) +{ + int i, j; + client_t *client; + +// check for changes to be sent over the reliable streams + for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) + { + if (host_client->old_frags != host_client->edict->v.frags) + { + for (j=0, client = svs.clients ; j<svs.maxclients ; j++, client++) + { + if (!client->active) + continue; + MSG_WriteByte (&client->message, svc_updatefrags); + MSG_WriteByte (&client->message, i); + MSG_WriteShort (&client->message, host_client->edict->v.frags); + } + + host_client->old_frags = host_client->edict->v.frags; + } + } + + for (j=0, client = svs.clients ; j<svs.maxclients ; j++, client++) + { + if (!client->active) + continue; + SZ_Write (&client->message, sv.reliable_datagram.data, sv.reliable_datagram.cursize); + } + + SZ_Clear (&sv.reliable_datagram); +} + + +/* +======================= +SV_SendNop + +Send a nop message without trashing or sending the accumulated client +message buffer +======================= +*/ +void SV_SendNop (client_t *client) +{ + sizebuf_t msg; + byte buf[4]; + + msg.data = buf; + msg.maxsize = sizeof(buf); + msg.cursize = 0; + + MSG_WriteChar (&msg, svc_nop); + + if (NET_SendUnreliableMessage (client->netconnection, &msg) == -1) + SV_DropClient (true); // if the message couldn't send, kick off + client->last_message = realtime; +} + +/* +======================= +SV_SendClientMessages +======================= +*/ +void SV_SendClientMessages (void) +{ + int i; + +// update frags, names, etc + SV_UpdateToReliableMessages (); + +// build individual updates + for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) + { + if (!host_client->active) + continue; + + if (host_client->spawned) + { + if (!SV_SendClientDatagram (host_client)) + continue; + } + else + { + // the player isn't totally in the game yet + // send small keepalive messages if too much time has passed + // send a full message when the next signon stage has been requested + // some other message data (name changes, etc) may accumulate + // between signon stages + if (!host_client->sendsignon) + { + if (realtime - host_client->last_message > 5) + SV_SendNop (host_client); + continue; // don't send out non-signon messages + } + if (host_client->sendsignon == PRESPAWN_SIGNONBUFS) + { + qboolean local = SV_IsLocalClient (host_client); + while (host_client->signonidx < sv.num_signon_buffers) + { + sizebuf_t *signon = sv.signon_buffers[host_client->signonidx]; + if (host_client->message.cursize + signon->cursize > host_client->message.maxsize) + break; + SZ_Write (&host_client->message, signon->data, signon->cursize); + host_client->signonidx++; + // only send multiple buffers at once when playing locally, + // otherwise we send one signon at a time to avoid overflowing + // the datagram buffer for clients using a lower limit (e.g. 32000 in QS) + if (!local) + break; + } + if (host_client->signonidx == sv.num_signon_buffers) + host_client->sendsignon = PRESPAWN_SIGNONMSG; + } + if (host_client->sendsignon == PRESPAWN_SIGNONMSG) + { + if (host_client->message.cursize + 2 < host_client->message.maxsize) + { + MSG_WriteByte (&host_client->message, svc_signonnum); + MSG_WriteByte (&host_client->message, 2); + host_client->sendsignon = PRESPAWN_FLUSH; + } + } + } + + // check for an overflowed message. Should only happen + // on a very fucked up connection that backs up a lot, then + // changes level + if (host_client->message.overflowed) + { + SV_DropClient (true); + host_client->message.overflowed = false; + continue; + } + + if (host_client->message.cursize || host_client->dropasap) + { + if (!NET_CanSendMessage (host_client->netconnection)) + { +// I_Printf ("can't write\n"); + continue; + } + + if (host_client->dropasap) + SV_DropClient (false); // went to another level + else + { + if (NET_SendMessage (host_client->netconnection + , &host_client->message) == -1) + SV_DropClient (true); // if the message couldn't send, kick off + SZ_Clear (&host_client->message); + host_client->last_message = realtime; + if (host_client->sendsignon == PRESPAWN_FLUSH) + host_client->sendsignon = PRESPAWN_DONE; + } + } + } + + +// clear muzzle flashes + SV_CleanupEnts (); +} + + +/* +============================================================================== + +SERVER SPAWNING + +============================================================================== +*/ + +#define SIGNON_SIZE 31500 // QS has a MAX_DATAGRAM of 32000, try to play nice + +/* +================ +SV_AddSignonBuffer +================ +*/ +static void SV_AddSignonBuffer (void) +{ + sizebuf_t *sb; + if (sv.num_signon_buffers >= MAX_SIGNON_BUFFERS) + Host_Error ("SV_AddSignonBuffer overflow\n"); + + sb = (sizebuf_t *) Hunk_AllocName (sizeof (sizebuf_t) + SIGNON_SIZE, "signon"); + sb->data = (byte *)(sb + 1); + sb->maxsize = SIGNON_SIZE; + sv.signon_buffers[sv.num_signon_buffers++] = sb; + sv.signon = sb; +} + +/* +================ +SV_ReserveSignonSpace +================ +*/ +void SV_ReserveSignonSpace (int numbytes) +{ + if (sv.signon->cursize + numbytes > sv.signon->maxsize) + SV_AddSignonBuffer (); +} + +/* +================ +SV_ModelIndex + +================ +*/ +int SV_ModelIndex (const char *name) +{ + int i; + + if (!name || !name[0]) + return 0; + + for (i=0 ; i<MAX_MODELS && sv.model_precache[i] ; i++) + if (!strcmp(sv.model_precache[i], name)) + return i; + if (i==MAX_MODELS || !sv.model_precache[i]) + Sys_Error ("SV_ModelIndex: model %s not precached", name); + return i; +} + +/* +================ +SV_CreateBaseline +================ +*/ +void SV_CreateBaseline (void) +{ + int i; + edict_t *svent; + int entnum; + int bits; //johnfitz -- PROTOCOL_FITZQUAKE + + for (entnum = 0; entnum < sv.num_edicts ; entnum++) + { + // get the current server version + svent = EDICT_NUM(entnum); + if (svent->free) + continue; + if (entnum > svs.maxclients && !svent->v.modelindex) + continue; + + // + // create entity baseline + // + VectorCopy (svent->v.origin, svent->baseline.origin); + VectorCopy (svent->v.angles, svent->baseline.angles); + svent->baseline.frame = svent->v.frame; + svent->baseline.skin = svent->v.skin; + if (entnum > 0 && entnum <= svs.maxclients) + { + svent->baseline.colormap = entnum; + svent->baseline.modelindex = SV_ModelIndex("progs/player.mdl"); + svent->baseline.alpha = ENTALPHA_DEFAULT; //johnfitz -- alpha support + svent->baseline.scale = ENTSCALE_DEFAULT; + } + else + { + svent->baseline.colormap = 0; + svent->baseline.modelindex = SV_ModelIndex(PR_GetString(svent->v.model)); + svent->baseline.alpha = svent->alpha; //johnfitz -- alpha support + svent->baseline.scale = ENTSCALE_DEFAULT; + if (sv.protocol == PROTOCOL_RMQ) + { + eval_t* val; + val = GetEdictFieldValue(svent, "scale"); + if (val) + svent->baseline.scale = ENTSCALE_ENCODE(val->_float); + } + } + + //johnfitz -- PROTOCOL_FITZQUAKE + bits = 0; + if (sv.protocol == PROTOCOL_NETQUAKE) //still want to send baseline in PROTOCOL_NETQUAKE, so reset these values + { + if (svent->baseline.modelindex & 0xFF00) + svent->baseline.modelindex = 0; + if (svent->baseline.frame & 0xFF00) + svent->baseline.frame = 0; + svent->baseline.alpha = ENTALPHA_DEFAULT; + svent->baseline.scale = ENTSCALE_DEFAULT; + } + else //decide which extra data needs to be sent + { + if (svent->baseline.modelindex & 0xFF00) + bits |= B_LARGEMODEL; + if (svent->baseline.frame & 0xFF00) + bits |= B_LARGEFRAME; + if (svent->baseline.alpha != ENTALPHA_DEFAULT) + bits |= B_ALPHA; + if (svent->baseline.scale != ENTSCALE_DEFAULT) + bits |= B_SCALE; + } + //johnfitz + + // + // add to the message + // + SV_ReserveSignonSpace (35); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits) + MSG_WriteByte (sv.signon, svc_spawnbaseline2); + else + MSG_WriteByte (sv.signon, svc_spawnbaseline); + //johnfitz + + MSG_WriteShort (sv.signon,entnum); + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits) + MSG_WriteByte (sv.signon, bits); + + if (bits & B_LARGEMODEL) + MSG_WriteShort (sv.signon, svent->baseline.modelindex); + else + MSG_WriteByte (sv.signon, svent->baseline.modelindex); + + if (bits & B_LARGEFRAME) + MSG_WriteShort (sv.signon, svent->baseline.frame); + else + MSG_WriteByte (sv.signon, svent->baseline.frame); + //johnfitz + + MSG_WriteByte (sv.signon, svent->baseline.colormap); + MSG_WriteByte (sv.signon, svent->baseline.skin); + for (i=0 ; i<3 ; i++) + { + MSG_WriteCoord(sv.signon, svent->baseline.origin[i], sv.protocolflags); + MSG_WriteAngle(sv.signon, svent->baseline.angles[i], sv.protocolflags); + } + + //johnfitz -- PROTOCOL_FITZQUAKE + if (bits & B_ALPHA) + MSG_WriteByte (sv.signon, svent->baseline.alpha); + //johnfitz + + if (bits & B_SCALE) + MSG_WriteByte (sv.signon, svent->baseline.scale); + } +} + + +/* +================ +SV_SendReconnect + +Tell all the clients that the server is changing levels +================ +*/ +void SV_SendReconnect (void) +{ + byte data[128]; + sizebuf_t msg; + + msg.data = data; + msg.cursize = 0; + msg.maxsize = sizeof(data); + + MSG_WriteChar (&msg, svc_stufftext); + MSG_WriteString (&msg, "reconnect\n"); + NET_SendToAll (&msg, 5.0); + + if (!isDedicated) + Cmd_ExecuteString ("reconnect\n", src_command); +} + + +/* +================ +SV_SaveSpawnparms + +Grabs the current state of each client for saving across the +transition to another level +================ +*/ +void SV_SaveSpawnparms (void) +{ + int i, j; + + svs.serverflags = pr_global_struct->serverflags; + + for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) + { + if (!host_client->active) + continue; + + // call the progs to get default spawn parms for the new client + pr_global_struct->self = EDICT_TO_PROG(host_client->edict); + PR_ExecuteProgram (pr_global_struct->SetChangeParms); + for (j=0 ; j<NUM_SPAWN_PARMS ; j++) + host_client->spawn_parms[j] = (&pr_global_struct->parm1)[j]; + } +} + + +/* +================ +SV_SpawnServer + +This is called at the start of each level +================ +*/ +extern float scr_centertime_off; +void SV_SpawnServer (const char *server) +{ + static char dummy[8] = { 0,0,0,0,0,0,0,0 }; + edict_t *ent; + int i, signonsize; + + // let's not have any servers with no name + if (hostname.string[0] == 0) + Cvar_Set ("hostname", "UNNAMED"); + scr_centertime_off = 0; + + Con_DPrintf ("SpawnServer: %s\n",server); + svs.changelevel_issued = false; // now safe to issue another + +// +// tell all connected clients that we are going to a new level +// + if (sv.active) + { + SV_SendReconnect (); + } + +// +// make cvars consistant +// + if (coop.value) + Cvar_Set ("deathmatch", "0"); + current_skill = (int)(skill.value + 0.5); + if (current_skill < 0) + current_skill = 0; + if (current_skill > 3) + current_skill = 3; + + Cvar_SetValue ("skill", (float)current_skill); + +// +// set up the new server +// + //memset (&sv, 0, sizeof(sv)); + Host_ClearMemory (); + + q_strlcpy (sv.name, server, sizeof(sv.name)); + + sv.protocol = sv_protocol; // johnfitz + + if (sv.protocol == PROTOCOL_RMQ) + { + // set up the protocol flags used by this server + // (note - these could be cvar-ised so that server admins could choose the protocol features used by their servers) + sv.protocolflags = PRFL_INT32COORD | PRFL_SHORTANGLE; + } + else sv.protocolflags = 0; + +// load progs to get entity field count + PR_LoadProgs (); + +// allocate server memory + /* Host_ClearMemory() called above already cleared the whole sv structure */ + sv.max_edicts = CLAMP (MIN_EDICTS,(int)max_edicts.value,MAX_EDICTS); //johnfitz -- max_edicts cvar + sv.edicts = (edict_t *) malloc (sv.max_edicts*pr_edict_size); // ericw -- sv.edicts switched to use malloc() + + sv.datagram.maxsize = sizeof(sv.datagram_buf); + sv.datagram.cursize = 0; + sv.datagram.data = sv.datagram_buf; + + sv.reliable_datagram.maxsize = sizeof(sv.reliable_datagram_buf); + sv.reliable_datagram.cursize = 0; + sv.reliable_datagram.data = sv.reliable_datagram_buf; + + SV_AddSignonBuffer (); + +// leave slots at start for clients only + sv.num_edicts = svs.maxclients+1; + memset(sv.edicts, 0, sv.num_edicts*pr_edict_size); // ericw -- sv.edicts switched to use malloc() + for (i=0 ; i<svs.maxclients ; i++) + { + ent = EDICT_NUM(i+1); + svs.clients[i].edict = ent; + } + + sv.state = ss_loading; + sv.paused = false; + sv.nomonsters = (nomonsters.value != 0.f); + + sv.time = 1.0; + + q_strlcpy (sv.name, server, sizeof(sv.name)); + q_snprintf (sv.modelname, sizeof(sv.modelname), "maps/%s.bsp", server); + sv.worldmodel = Mod_ForName (sv.modelname, false); + if (!sv.worldmodel) + { + Con_Printf ("Couldn't spawn server %s\n", sv.modelname); + sv.active = false; + return; + } + sv.models[1] = sv.worldmodel; + +// +// clear world interaction links +// + SV_ClearWorld (); + + sv.sound_precache[0] = dummy; + sv.model_precache[0] = dummy; + sv.model_precache[1] = sv.modelname; + for (i=1 ; i<sv.worldmodel->numsubmodels ; i++) + { + sv.model_precache[1+i] = localmodels[i]; + sv.models[i+1] = Mod_ForName (localmodels[i], false); + } + +// +// load the rest of the entities +// + ent = EDICT_NUM(0); + memset (&ent->v, 0, progs->entityfields * 4); + ent->free = false; + ent->v.model = PR_SetEngineString(sv.worldmodel->name); + ent->v.modelindex = 1; // world model + ent->v.solid = SOLID_BSP; + ent->v.movetype = MOVETYPE_PUSH; + + if (coop.value) + pr_global_struct->coop = coop.value; + else + pr_global_struct->deathmatch = deathmatch.value; + + pr_global_struct->mapname = PR_SetEngineString(sv.name); + +// serverflags are for cross level information (sigils) + pr_global_struct->serverflags = svs.serverflags; + + ED_LoadFromFile (sv.worldmodel->entities); + + sv.active = true; + +// all setup is completed, any further precache statements are errors + sv.state = ss_active; + +// run two frames to allow everything to settle + host_frametime = 0.1; + SV_Physics (); + SV_Physics (); + +// create a baseline for more efficient communications + SV_CreateBaseline (); + + //johnfitz -- warn if signon buffer larger than standard server can handle + for (i = 0, signonsize = 0; i < sv.num_signon_buffers; i++) + signonsize += sv.signon_buffers[i]->cursize; + if (signonsize > 64000-2) + Con_DWarning ("%i byte signon buffer exceeds QS limit of 63998.\n", signonsize); + else if (signonsize > 8000-2) //max size that will fit into 8000-sized client->message buffer with 2 extra bytes on the end + Con_DWarning ("%i byte signon buffer exceeds standard limit of 7998.\n", signonsize); + //johnfitz + +// send serverinfo to all connected clients + for (i=0,host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) + if (host_client->active) + SV_SendServerinfo (host_client); + + Con_DPrintf ("Server spawned.\n"); +} + diff --git a/Quake/sv_move.c b/Quake/sv_move.c new file mode 100644 index 0000000..78817e1 --- /dev/null +++ b/Quake/sv_move.c @@ -0,0 +1,419 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sv_move.c -- monster movement + +#include "quakedef.h" + +#define STEPSIZE 18 + +/* +============= +SV_CheckBottom + +Returns false if any part of the bottom of the entity is off an edge that +is not a staircase. + +============= +*/ +int c_yes, c_no; + +qboolean SV_CheckBottom (edict_t *ent) +{ + vec3_t mins, maxs, start, stop; + trace_t trace; + int x, y; + float mid, bottom; + + VectorAdd (ent->v.origin, ent->v.mins, mins); + VectorAdd (ent->v.origin, ent->v.maxs, maxs); + +// if all of the points under the corners are solid world, don't bother +// with the tougher checks +// the corners must be within 16 of the midpoint + start[2] = mins[2] - 1; + for (x=0 ; x<=1 ; x++) + for (y=0 ; y<=1 ; y++) + { + start[0] = x ? maxs[0] : mins[0]; + start[1] = y ? maxs[1] : mins[1]; + if (SV_PointContents (start) != CONTENTS_SOLID) + goto realcheck; + } + + c_yes++; + return true; // we got out easy + +realcheck: + c_no++; +// +// check it for real... +// + start[2] = mins[2]; + +// the midpoint must be within 16 of the bottom + start[0] = stop[0] = (mins[0] + maxs[0])*0.5; + start[1] = stop[1] = (mins[1] + maxs[1])*0.5; + stop[2] = start[2] - 2*STEPSIZE; + trace = SV_Move (start, vec3_origin, vec3_origin, stop, true, ent); + + if (trace.fraction == 1.0) + return false; + mid = bottom = trace.endpos[2]; + +// the corners must be within 16 of the midpoint + for (x=0 ; x<=1 ; x++) + for (y=0 ; y<=1 ; y++) + { + start[0] = stop[0] = x ? maxs[0] : mins[0]; + start[1] = stop[1] = y ? maxs[1] : mins[1]; + + trace = SV_Move (start, vec3_origin, vec3_origin, stop, true, ent); + + if (trace.fraction != 1.0 && trace.endpos[2] > bottom) + bottom = trace.endpos[2]; + if (trace.fraction == 1.0 || mid - trace.endpos[2] > STEPSIZE) + return false; + } + + c_yes++; + return true; +} + + +/* +============= +SV_movestep + +Called by monster program code. +The move will be adjusted for slopes and stairs, but if the move isn't +possible, no move is done, false is returned, and +pr_global_struct->trace_normal is set to the normal of the blocking wall +============= +*/ +qboolean SV_movestep (edict_t *ent, vec3_t move, qboolean relink) +{ + float dz; + vec3_t oldorg, neworg, end; + trace_t trace; + int i; + edict_t *enemy; + +// try the move + VectorCopy (ent->v.origin, oldorg); + VectorAdd (ent->v.origin, move, neworg); + +// flying monsters don't step up + if ( (int)ent->v.flags & (FL_SWIM | FL_FLY) ) + { + // try one move with vertical motion, then one without + for (i=0 ; i<2 ; i++) + { + VectorAdd (ent->v.origin, move, neworg); + enemy = PROG_TO_EDICT(ent->v.enemy); + if (i == 0 && enemy != sv.edicts) + { + dz = ent->v.origin[2] - PROG_TO_EDICT(ent->v.enemy)->v.origin[2]; + if (dz > 40) + neworg[2] -= 8; + if (dz < 30) + neworg[2] += 8; + } + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, neworg, false, ent); + + if (trace.fraction == 1) + { + if ( ((int)ent->v.flags & FL_SWIM) && SV_PointContents(trace.endpos) == CONTENTS_EMPTY ) + return false; // swim monster left water + + VectorCopy (trace.endpos, ent->v.origin); + if (relink) + SV_LinkEdict (ent, true); + return true; + } + + if (enemy == sv.edicts) + break; + } + + return false; + } + +// push down from a step height above the wished position + neworg[2] += STEPSIZE; + VectorCopy (neworg, end); + end[2] -= STEPSIZE*2; + + trace = SV_Move (neworg, ent->v.mins, ent->v.maxs, end, false, ent); + + if (trace.allsolid) + return false; + + if (trace.startsolid) + { + neworg[2] -= STEPSIZE; + trace = SV_Move (neworg, ent->v.mins, ent->v.maxs, end, false, ent); + if (trace.allsolid || trace.startsolid) + return false; + } + if (trace.fraction == 1) + { + // if monster had the ground pulled out, go ahead and fall + if ( (int)ent->v.flags & FL_PARTIALGROUND ) + { + VectorAdd (ent->v.origin, move, ent->v.origin); + if (relink) + SV_LinkEdict (ent, true); + ent->v.flags = (int)ent->v.flags & ~FL_ONGROUND; + // Con_Printf ("fall down\n"); + return true; + } + + return false; // walked off an edge + } + +// check point traces down for dangling corners + VectorCopy (trace.endpos, ent->v.origin); + + if (!SV_CheckBottom (ent)) + { + if ( (int)ent->v.flags & FL_PARTIALGROUND ) + { // entity had floor mostly pulled out from underneath it + // and is trying to correct + if (relink) + SV_LinkEdict (ent, true); + return true; + } + VectorCopy (oldorg, ent->v.origin); + return false; + } + + if ( (int)ent->v.flags & FL_PARTIALGROUND ) + { + // Con_Printf ("back on ground\n"); + ent->v.flags = (int)ent->v.flags & ~FL_PARTIALGROUND; + } + ent->v.groundentity = EDICT_TO_PROG(trace.ent); + +// the move is ok + if (relink) + SV_LinkEdict (ent, true); + return true; +} + + +//============================================================================ + +/* +====================== +SV_StepDirection + +Turns to the movement direction, and walks the current distance if +facing it. + +====================== +*/ +void PF_changeyaw (void); +qboolean SV_StepDirection (edict_t *ent, float yaw, float dist) +{ + vec3_t move, oldorigin; + float delta; + + ent->v.ideal_yaw = yaw; + PF_changeyaw(); + + yaw = yaw*M_PI*2 / 360; + move[0] = cos(yaw)*dist; + move[1] = sin(yaw)*dist; + move[2] = 0; + + VectorCopy (ent->v.origin, oldorigin); + if (SV_movestep (ent, move, false)) + { + delta = ent->v.angles[YAW] - ent->v.ideal_yaw; + if (delta > 45 && delta < 315) + { // not turned far enough, so don't take the step + VectorCopy (oldorigin, ent->v.origin); + } + SV_LinkEdict (ent, true); + return true; + } + SV_LinkEdict (ent, true); + + return false; +} + +/* +====================== +SV_FixCheckBottom + +====================== +*/ +void SV_FixCheckBottom (edict_t *ent) +{ +// Con_Printf ("SV_FixCheckBottom\n"); + ent->v.flags = (int)ent->v.flags | FL_PARTIALGROUND; +} + + +/* +================ +SV_NewChaseDir + +================ +*/ +#define DI_NODIR -1 +void SV_NewChaseDir (edict_t *actor, edict_t *enemy, float dist) +{ + float deltax,deltay; + float d[3]; + float tdir, olddir, turnaround; + + olddir = anglemod( (int)(actor->v.ideal_yaw/45)*45 ); + turnaround = anglemod(olddir - 180); + + deltax = enemy->v.origin[0] - actor->v.origin[0]; + deltay = enemy->v.origin[1] - actor->v.origin[1]; + if (deltax>10) + d[1]= 0; + else if (deltax<-10) + d[1]= 180; + else + d[1]= DI_NODIR; + if (deltay<-10) + d[2]= 270; + else if (deltay>10) + d[2]= 90; + else + d[2]= DI_NODIR; + +// try direct route + if (d[1] != DI_NODIR && d[2] != DI_NODIR) + { + if (d[1] == 0) + tdir = d[2] == 90 ? 45 : 315; + else + tdir = d[2] == 90 ? 135 : 215; + + if (tdir != turnaround && SV_StepDirection(actor, tdir, dist)) + return; + } + +// try other directions + if ( ((rand()&3) & 1) || abs((int)deltay)>abs((int)deltax)) // ericw -- explicit int cast to suppress clang suggestion to use fabsf + { + tdir=d[1]; + d[1]=d[2]; + d[2]=tdir; + } + + if (d[1]!=DI_NODIR && d[1]!=turnaround + && SV_StepDirection(actor, d[1], dist)) + return; + + if (d[2]!=DI_NODIR && d[2]!=turnaround + && SV_StepDirection(actor, d[2], dist)) + return; + +/* there is no direct path to the player, so pick another direction */ + + if (olddir!=DI_NODIR && SV_StepDirection(actor, olddir, dist)) + return; + + if (rand()&1) /*randomly determine direction of search*/ + { + for (tdir=0 ; tdir<=315 ; tdir += 45) + if (tdir!=turnaround && SV_StepDirection(actor, tdir, dist) ) + return; + } + else + { + for (tdir=315 ; tdir >=0 ; tdir -= 45) + if (tdir!=turnaround && SV_StepDirection(actor, tdir, dist) ) + return; + } + + if (turnaround != DI_NODIR && SV_StepDirection(actor, turnaround, dist) ) + return; + + actor->v.ideal_yaw = olddir; // can't move + +// if a bridge was pulled out from underneath a monster, it may not have +// a valid standing position at all + + if (!SV_CheckBottom (actor)) + SV_FixCheckBottom (actor); + +} + +/* +====================== +SV_CloseEnough + +====================== +*/ +qboolean SV_CloseEnough (edict_t *ent, edict_t *goal, float dist) +{ + int i; + + for (i=0 ; i<3 ; i++) + { + if (goal->v.absmin[i] > ent->v.absmax[i] + dist) + return false; + if (goal->v.absmax[i] < ent->v.absmin[i] - dist) + return false; + } + return true; +} + +/* +====================== +SV_MoveToGoal + +====================== +*/ +void SV_MoveToGoal (void) +{ + edict_t *ent, *goal; + float dist; + + ent = PROG_TO_EDICT(pr_global_struct->self); + goal = PROG_TO_EDICT(ent->v.goalentity); + dist = G_FLOAT(OFS_PARM0); + + if ( !( (int)ent->v.flags & (FL_ONGROUND|FL_FLY|FL_SWIM) ) ) + { + G_FLOAT(OFS_RETURN) = 0; + return; + } + +// if the next step hits the enemy, return immediately + if ( PROG_TO_EDICT(ent->v.enemy) != sv.edicts && SV_CloseEnough (ent, goal, dist) ) + return; + +// bump around... + if ( (rand()&3)==1 || + !SV_StepDirection (ent, ent->v.ideal_yaw, dist)) + { + SV_NewChaseDir (ent, goal, dist); + } +} + diff --git a/Quake/sv_phys.c b/Quake/sv_phys.c new file mode 100644 index 0000000..a9fb3f3 --- /dev/null +++ b/Quake/sv_phys.c @@ -0,0 +1,1241 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sv_phys.c + +#include "quakedef.h" + +/* + + +pushmove objects do not obey gravity, and do not interact with each other or trigger fields, but block normal movement and push normal objects when they move. + +onground is set for toss objects when they come to a complete rest. it is set for steping or walking objects + +doors, plats, etc are SOLID_BSP, and MOVETYPE_PUSH +bonus items are SOLID_TRIGGER touch, and MOVETYPE_TOSS +corpses are SOLID_NOT and MOVETYPE_TOSS +crates are SOLID_BBOX and MOVETYPE_TOSS +walking monsters are SOLID_SLIDEBOX and MOVETYPE_STEP +flying/floating monsters are SOLID_SLIDEBOX and MOVETYPE_FLY + +solid_edge items only clip against bsp models. + +*/ + +cvar_t sv_friction = {"sv_friction","4",CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t sv_stopspeed = {"sv_stopspeed","100",CVAR_NONE}; +cvar_t sv_gravity = {"sv_gravity","800",CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t sv_maxvelocity = {"sv_maxvelocity","2000",CVAR_NONE}; +cvar_t sv_nostep = {"sv_nostep","0",CVAR_NONE}; +cvar_t sv_freezenonclients = {"sv_freezenonclients","0",CVAR_NONE}; + + +#define MOVE_EPSILON 0.01 + +void SV_Physics_Toss (edict_t *ent); + +/* +================ +SV_CheckAllEnts +================ +*/ +void SV_CheckAllEnts (void) +{ + int e; + edict_t *check; + +// see if any solid entities are inside the final position + check = NEXT_EDICT(sv.edicts); + for (e=1 ; e<sv.num_edicts ; e++, check = NEXT_EDICT(check)) + { + if (check->free) + continue; + if (check->v.movetype == MOVETYPE_PUSH + || check->v.movetype == MOVETYPE_NONE + || check->v.movetype == MOVETYPE_NOCLIP) + continue; + + if (SV_TestEntityPosition (check)) + Con_Printf ("entity in invalid position\n"); + } +} + +/* +================ +SV_CheckVelocity +================ +*/ +void SV_CheckVelocity (edict_t *ent) +{ + int i; + +// +// bound velocity +// + for (i=0 ; i<3 ; i++) + { + if (IS_NAN(ent->v.velocity[i])) + { + Con_Printf ("Got a NaN velocity on %s\n", PR_GetString(ent->v.classname)); + ent->v.velocity[i] = 0; + } + if (IS_NAN(ent->v.origin[i])) + { + Con_Printf ("Got a NaN origin on %s\n", PR_GetString(ent->v.classname)); + ent->v.origin[i] = 0; + } + if (ent->v.velocity[i] > sv_maxvelocity.value) + ent->v.velocity[i] = sv_maxvelocity.value; + else if (ent->v.velocity[i] < -sv_maxvelocity.value) + ent->v.velocity[i] = -sv_maxvelocity.value; + } +} + +/* +============= +SV_RunThink + +Runs thinking code if time. There is some play in the exact time the think +function will be called, because it is called before any movement is done +in a frame. Not used for pushmove objects, because they must be exact. +Returns false if the entity removed itself. +============= +*/ +qboolean SV_RunThink (edict_t *ent) +{ + float thinktime; + + thinktime = ent->v.nextthink; + if (thinktime <= 0 || thinktime > sv.time + host_frametime) + return true; + + if (thinktime < sv.time) + thinktime = sv.time; // don't let things stay in the past. + // it is possible to start that way + // by a trigger with a local time. + + ent->oldthinktime = thinktime; + ent->oldframe = ent->v.frame; //johnfitz + + ent->v.nextthink = 0; + pr_global_struct->time = thinktime; + pr_global_struct->self = EDICT_TO_PROG(ent); + pr_global_struct->other = EDICT_TO_PROG(sv.edicts); + PR_ExecuteProgram (ent->v.think); + + return !ent->free; +} + +/* +================== +SV_Impact + +Two entities have touched, so run their touch functions +================== +*/ +void SV_Impact (edict_t *e1, edict_t *e2) +{ + int old_self, old_other; + + old_self = pr_global_struct->self; + old_other = pr_global_struct->other; + + pr_global_struct->time = sv.time; + if (e1->v.touch && e1->v.solid != SOLID_NOT) + { + pr_global_struct->self = EDICT_TO_PROG(e1); + pr_global_struct->other = EDICT_TO_PROG(e2); + PR_ExecuteProgram (e1->v.touch); + } + + if (e2->v.touch && e2->v.solid != SOLID_NOT) + { + pr_global_struct->self = EDICT_TO_PROG(e2); + pr_global_struct->other = EDICT_TO_PROG(e1); + PR_ExecuteProgram (e2->v.touch); + } + + pr_global_struct->self = old_self; + pr_global_struct->other = old_other; +} + + +/* +================== +ClipVelocity + +Slide off of the impacting object +returns the blocked flags (1 = floor, 2 = step / wall) +================== +*/ +#define STOP_EPSILON 0.1 + +int ClipVelocity (vec3_t in, vec3_t normal, vec3_t out, float overbounce) +{ + float backoff; + float change; + int i, blocked; + + blocked = 0; + if (normal[2] > 0) + blocked |= 1; // floor + if (!normal[2]) + blocked |= 2; // step + + backoff = DotProduct (in, normal) * overbounce; + + for (i=0 ; i<3 ; i++) + { + change = normal[i]*backoff; + out[i] = in[i] - change; + if (out[i] > -STOP_EPSILON && out[i] < STOP_EPSILON) + out[i] = 0; + } + + return blocked; +} + + +/* +============ +SV_FlyMove + +The basic solid body movement clip that slides along multiple planes +Returns the clipflags if the velocity was modified (hit something solid) +1 = floor +2 = wall / step +4 = dead stop +If steptrace is not NULL, the trace of any vertical wall hit will be stored +============ +*/ +#define MAX_CLIP_PLANES 5 +int SV_FlyMove (edict_t *ent, float time, trace_t *steptrace) +{ + int bumpcount, numbumps; + vec3_t dir; + float d; + int numplanes; + vec3_t planes[MAX_CLIP_PLANES]; + vec3_t primal_velocity, original_velocity, new_velocity; + int i, j; + trace_t trace; + vec3_t end; + float time_left; + int blocked; + + numbumps = 4; + + blocked = 0; + VectorCopy (ent->v.velocity, original_velocity); + VectorCopy (ent->v.velocity, primal_velocity); + numplanes = 0; + + time_left = time; + + for (bumpcount=0 ; bumpcount<numbumps ; bumpcount++) + { + if (!ent->v.velocity[0] && !ent->v.velocity[1] && !ent->v.velocity[2]) + break; + + for (i=0 ; i<3 ; i++) + end[i] = ent->v.origin[i] + time_left * ent->v.velocity[i]; + + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, end, false, ent); + + if (trace.allsolid) + { // entity is trapped in another solid + VectorCopy (vec3_origin, ent->v.velocity); + return 3; + } + + if (trace.fraction > 0) + { // actually covered some distance + VectorCopy (trace.endpos, ent->v.origin); + VectorCopy (ent->v.velocity, original_velocity); + numplanes = 0; + } + + if (trace.fraction == 1) + break; // moved the entire distance + + if (!trace.ent) + Sys_Error ("SV_FlyMove: !trace.ent"); + + if (trace.plane.normal[2] > 0.7) + { + blocked |= 1; // floor + if (trace.ent->v.solid == SOLID_BSP) + { + ent->v.flags = (int)ent->v.flags | FL_ONGROUND; + ent->v.groundentity = EDICT_TO_PROG(trace.ent); + } + } + if (!trace.plane.normal[2]) + { + blocked |= 2; // step + if (steptrace) + *steptrace = trace; // save for player extrafriction + } + +// +// run the impact function +// + SV_Impact (ent, trace.ent); + if (ent->free) + break; // removed by the impact function + + + time_left -= time_left * trace.fraction; + + // cliped to another plane + if (numplanes >= MAX_CLIP_PLANES) + { // this shouldn't really happen + VectorCopy (vec3_origin, ent->v.velocity); + return 3; + } + + VectorCopy (trace.plane.normal, planes[numplanes]); + numplanes++; + +// +// modify original_velocity so it parallels all of the clip planes +// + for (i=0 ; i<numplanes ; i++) + { + ClipVelocity (original_velocity, planes[i], new_velocity, 1); + for (j=0 ; j<numplanes ; j++) + if (j != i) + { + if (DotProduct (new_velocity, planes[j]) < 0) + break; // not ok + } + if (j == numplanes) + break; + } + + if (i != numplanes) + { // go along this plane + VectorCopy (new_velocity, ent->v.velocity); + } + else + { // go along the crease + if (numplanes != 2) + { +// Con_Printf ("clip velocity, numplanes == %i\n",numplanes); + VectorCopy (vec3_origin, ent->v.velocity); + return 7; + } + CrossProduct (planes[0], planes[1], dir); + d = DotProduct (dir, ent->v.velocity); + VectorScale (dir, d, ent->v.velocity); + } + +// +// if original velocity is against the original velocity, stop dead +// to avoid tiny occilations in sloping corners +// + if (DotProduct (ent->v.velocity, primal_velocity) <= 0) + { + VectorCopy (vec3_origin, ent->v.velocity); + return blocked; + } + } + + return blocked; +} + + +/* +============ +SV_AddGravity + +============ +*/ +void SV_AddGravity (edict_t *ent) +{ + float ent_gravity; + eval_t *val; + + val = GetEdictFieldValue(ent, "gravity"); + if (val && val->_float) + ent_gravity = val->_float; + else + ent_gravity = 1.0; + + ent->v.velocity[2] -= ent_gravity * sv_gravity.value * host_frametime; +} + + +/* +=============================================================================== + +PUSHMOVE + +=============================================================================== +*/ + +/* +============ +SV_PushEntity + +Does not change the entities velocity at all +============ +*/ +trace_t SV_PushEntity (edict_t *ent, vec3_t push) +{ + trace_t trace; + vec3_t end; + + VectorAdd (ent->v.origin, push, end); + + if (ent->v.movetype == MOVETYPE_FLYMISSILE) + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, end, MOVE_MISSILE, ent); + else if (ent->v.solid == SOLID_TRIGGER || ent->v.solid == SOLID_NOT) + // only clip against bmodels + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, end, MOVE_NOMONSTERS, ent); + else + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, end, MOVE_NORMAL, ent); + + VectorCopy (trace.endpos, ent->v.origin); + SV_LinkEdict (ent, true); + + if (trace.ent) + SV_Impact (ent, trace.ent); + + return trace; +} + + +/* +============ +SV_PushMove +============ +*/ +void SV_PushMove (edict_t *pusher, float movetime) +{ + int i, e; + edict_t *check, *block; + vec3_t mins, maxs, move; + vec3_t entorig, pushorig; + float solid_backup; + int num_moved; + edict_t **moved_edict; //johnfitz -- dynamically allocate + vec3_t *moved_from; //johnfitz -- dynamically allocate + int mark; //johnfitz + + if (!pusher->v.velocity[0] && !pusher->v.velocity[1] && !pusher->v.velocity[2]) + { + pusher->v.ltime += movetime; + return; + } + + for (i=0 ; i<3 ; i++) + { + move[i] = pusher->v.velocity[i] * movetime; + mins[i] = pusher->v.absmin[i] + move[i]; + maxs[i] = pusher->v.absmax[i] + move[i]; + } + + VectorCopy (pusher->v.origin, pushorig); + +// move the pusher to it's final position + + VectorAdd (pusher->v.origin, move, pusher->v.origin); + pusher->v.ltime += movetime; + SV_LinkEdict (pusher, false); + + //johnfitz -- dynamically allocate + mark = Hunk_LowMark (); + moved_edict = (edict_t **) Hunk_Alloc (sv.num_edicts*sizeof(edict_t *)); + moved_from = (vec3_t *) Hunk_Alloc (sv.num_edicts*sizeof(vec3_t)); + //johnfitz + +// see if any solid entities are inside the final position + num_moved = 0; + check = NEXT_EDICT(sv.edicts); + for (e=1 ; e<sv.num_edicts ; e++, check = NEXT_EDICT(check)) + { + if (check->free) + continue; + if (check->v.movetype == MOVETYPE_PUSH + || check->v.movetype == MOVETYPE_NONE + || check->v.movetype == MOVETYPE_NOCLIP) + continue; + + // if the entity is standing on the pusher, it will definately be moved + if ( ! ( ((int)check->v.flags & FL_ONGROUND) + && PROG_TO_EDICT(check->v.groundentity) == pusher) ) + { + if ( check->v.absmin[0] >= maxs[0] + || check->v.absmin[1] >= maxs[1] + || check->v.absmin[2] >= maxs[2] + || check->v.absmax[0] <= mins[0] + || check->v.absmax[1] <= mins[1] + || check->v.absmax[2] <= mins[2] ) + continue; + + // see if the ent's bbox is inside the pusher's final position + if (!SV_TestEntityPosition (check)) + continue; + } + + // remove the onground flag for non-players + if (check->v.movetype != MOVETYPE_WALK) + check->v.flags = (int)check->v.flags & ~FL_ONGROUND; + + VectorCopy (check->v.origin, entorig); + VectorCopy (check->v.origin, moved_from[num_moved]); + moved_edict[num_moved] = check; + num_moved++; + + // try moving the contacted entity + // https://www.quake-info-pool.net/q1/qfix.htm#movetype_push + solid_backup = pusher->v.solid; + if (solid_backup == SOLID_BSP || + solid_backup == SOLID_BBOX || + solid_backup == SOLID_SLIDEBOX) + { + pusher->v.solid = SOLID_NOT; + SV_PushEntity (check, move); + pusher->v.solid = solid_backup; + } + + // if it is still inside the pusher, block + block = SV_TestEntityPosition (check); + if (block) + { // fail the move + if (check->v.mins[0] == check->v.maxs[0]) + continue; + if (check->v.solid == SOLID_NOT || check->v.solid == SOLID_TRIGGER) + { // corpse + check->v.mins[0] = check->v.mins[1] = 0; + VectorCopy (check->v.mins, check->v.maxs); + continue; + } + + VectorCopy (entorig, check->v.origin); + SV_LinkEdict (check, true); + + VectorCopy (pushorig, pusher->v.origin); + SV_LinkEdict (pusher, false); + pusher->v.ltime -= movetime; + + // if the pusher has a "blocked" function, call it + // otherwise, just stay in place until the obstacle is gone + if (pusher->v.blocked) + { + pr_global_struct->self = EDICT_TO_PROG(pusher); + pr_global_struct->other = EDICT_TO_PROG(check); + PR_ExecuteProgram (pusher->v.blocked); + } + + // move back any entities we already moved + for (i=0 ; i<num_moved ; i++) + { + VectorCopy (moved_from[i], moved_edict[i]->v.origin); + SV_LinkEdict (moved_edict[i], false); + } + Hunk_FreeToLowMark (mark); //johnfitz + return; + } + } + + Hunk_FreeToLowMark (mark); //johnfitz + +} + +/* +================ +SV_Physics_Pusher + +================ +*/ +void SV_Physics_Pusher (edict_t *ent) +{ + float thinktime; + float oldltime; + float movetime; + + oldltime = ent->v.ltime; + + thinktime = ent->v.nextthink; + if (thinktime < ent->v.ltime + host_frametime) + { + movetime = thinktime - ent->v.ltime; + if (movetime < 0) + movetime = 0; + } + else + movetime = host_frametime; + + if (movetime) + { + SV_PushMove (ent, movetime); // advances ent->v.ltime if not blocked + } + + if (thinktime > oldltime && thinktime <= ent->v.ltime) + { + ent->v.nextthink = 0; + pr_global_struct->time = sv.time; + pr_global_struct->self = EDICT_TO_PROG(ent); + pr_global_struct->other = EDICT_TO_PROG(sv.edicts); + PR_ExecuteProgram (ent->v.think); + if (ent->free) + return; + } + +} + + +/* +=============================================================================== + +CLIENT MOVEMENT + +=============================================================================== +*/ + +/* +============= +SV_CheckStuck + +This is a big hack to try and fix the rare case of getting stuck in the world +clipping hull. +============= +*/ +void SV_CheckStuck (edict_t *ent) +{ + int i, j; + int z; + vec3_t org; + + if (!SV_TestEntityPosition(ent)) + { + VectorCopy (ent->v.origin, ent->v.oldorigin); + return; + } + + VectorCopy (ent->v.origin, org); + VectorCopy (ent->v.oldorigin, ent->v.origin); + if (!SV_TestEntityPosition(ent)) + { + Con_DPrintf ("Unstuck.\n"); + SV_LinkEdict (ent, true); + return; + } + + for (z=0 ; z< 18 ; z++) + for (i=-1 ; i <= 1 ; i++) + for (j=-1 ; j <= 1 ; j++) + { + ent->v.origin[0] = org[0] + i; + ent->v.origin[1] = org[1] + j; + ent->v.origin[2] = org[2] + z; + if (!SV_TestEntityPosition(ent)) + { + Con_DPrintf ("Unstuck.\n"); + SV_LinkEdict (ent, true); + return; + } + } + + VectorCopy (org, ent->v.origin); + Con_DPrintf ("player is stuck.\n"); +} + + +/* +============= +SV_CheckWater +============= +*/ +qboolean SV_CheckWater (edict_t *ent) +{ + vec3_t point; + int cont; + + point[0] = ent->v.origin[0]; + point[1] = ent->v.origin[1]; + point[2] = ent->v.origin[2] + ent->v.mins[2] + 1; + + ent->v.waterlevel = 0; + ent->v.watertype = CONTENTS_EMPTY; + cont = SV_PointContents (point); + if (cont <= CONTENTS_WATER) + { + ent->v.watertype = cont; + ent->v.waterlevel = 1; + point[2] = ent->v.origin[2] + (ent->v.mins[2] + ent->v.maxs[2])*0.5; + cont = SV_PointContents (point); + if (cont <= CONTENTS_WATER) + { + ent->v.waterlevel = 2; + point[2] = ent->v.origin[2] + ent->v.view_ofs[2]; + cont = SV_PointContents (point); + if (cont <= CONTENTS_WATER) + ent->v.waterlevel = 3; + } + } + + return ent->v.waterlevel > 1; +} + +/* +============ +SV_WallFriction + +============ +*/ +void SV_WallFriction (edict_t *ent, trace_t *trace) +{ + vec3_t forward, right, up; + float d, i; + vec3_t into, side; + + AngleVectors (ent->v.v_angle, forward, right, up); + d = DotProduct (trace->plane.normal, forward); + + d += 0.5; + if (d >= 0) + return; + +// cut the tangential velocity + i = DotProduct (trace->plane.normal, ent->v.velocity); + VectorScale (trace->plane.normal, i, into); + VectorSubtract (ent->v.velocity, into, side); + + ent->v.velocity[0] = side[0] * (1 + d); + ent->v.velocity[1] = side[1] * (1 + d); +} + +/* +===================== +SV_TryUnstick + +Player has come to a dead stop, possibly due to the problem with limited +float precision at some angle joins in the BSP hull. + +Try fixing by pushing one pixel in each direction. + +This is a hack, but in the interest of good gameplay... +====================== +*/ +int SV_TryUnstick (edict_t *ent, vec3_t oldvel) +{ + int i; + vec3_t oldorg; + vec3_t dir; + int clip; + trace_t steptrace; + + VectorCopy (ent->v.origin, oldorg); + VectorCopy (vec3_origin, dir); + + for (i=0 ; i<8 ; i++) + { +// try pushing a little in an axial direction + switch (i) + { + case 0: dir[0] = 2; dir[1] = 0; break; + case 1: dir[0] = 0; dir[1] = 2; break; + case 2: dir[0] = -2; dir[1] = 0; break; + case 3: dir[0] = 0; dir[1] = -2; break; + case 4: dir[0] = 2; dir[1] = 2; break; + case 5: dir[0] = -2; dir[1] = 2; break; + case 6: dir[0] = 2; dir[1] = -2; break; + case 7: dir[0] = -2; dir[1] = -2; break; + } + + SV_PushEntity (ent, dir); + +// retry the original move + ent->v.velocity[0] = oldvel[0]; + ent->v. velocity[1] = oldvel[1]; + ent->v. velocity[2] = 0; + clip = SV_FlyMove (ent, 0.1, &steptrace); + + if ( fabs(oldorg[1] - ent->v.origin[1]) > 4 + || fabs(oldorg[0] - ent->v.origin[0]) > 4 ) + { + // Con_DPrintf ("unstuck!\n"); + return clip; + } + +// go back to the original pos and try again + VectorCopy (oldorg, ent->v.origin); + } + + VectorCopy (vec3_origin, ent->v.velocity); + return 7; // still not moving +} + +/* +===================== +SV_WalkMove + +Only used by players +====================== +*/ +#define STEPSIZE 18 +void SV_WalkMove (edict_t *ent) +{ + vec3_t upmove, downmove; + vec3_t oldorg, oldvel; + vec3_t nosteporg, nostepvel; + int clip; + int oldonground; + trace_t steptrace, downtrace; + +// +// do a regular slide move unless it looks like you ran into a step +// + oldonground = (int)ent->v.flags & FL_ONGROUND; + ent->v.flags = (int)ent->v.flags & ~FL_ONGROUND; + + VectorCopy (ent->v.origin, oldorg); + VectorCopy (ent->v.velocity, oldvel); + + clip = SV_FlyMove (ent, host_frametime, &steptrace); + + if ( !(clip & 2) ) + return; // move didn't block on a step + + if (!oldonground && ent->v.waterlevel == 0) + return; // don't stair up while jumping + + if (ent->v.movetype != MOVETYPE_WALK) + return; // gibbed by a trigger + + if (sv_nostep.value) + return; + + if ( (int)sv_player->v.flags & FL_WATERJUMP ) + return; + + VectorCopy (ent->v.origin, nosteporg); + VectorCopy (ent->v.velocity, nostepvel); + +// +// try moving up and forward to go up a step +// + VectorCopy (oldorg, ent->v.origin); // back to start pos + + VectorCopy (vec3_origin, upmove); + VectorCopy (vec3_origin, downmove); + upmove[2] = STEPSIZE; + downmove[2] = -STEPSIZE + oldvel[2]*host_frametime; + +// move up + SV_PushEntity (ent, upmove); // FIXME: don't link? + +// move forward + ent->v.velocity[0] = oldvel[0]; + ent->v. velocity[1] = oldvel[1]; + ent->v. velocity[2] = 0; + clip = SV_FlyMove (ent, host_frametime, &steptrace); + +// check for stuckness, possibly due to the limited precision of floats +// in the clipping hulls + if (clip) + { + if ( fabs(oldorg[1] - ent->v.origin[1]) < 0.03125 + && fabs(oldorg[0] - ent->v.origin[0]) < 0.03125 ) + { // stepping up didn't make any progress + clip = SV_TryUnstick (ent, oldvel); + } + } + +// extra friction based on view angle + if ( clip & 2 ) + SV_WallFriction (ent, &steptrace); + +// move down + downtrace = SV_PushEntity (ent, downmove); // FIXME: don't link? + + if (downtrace.plane.normal[2] > 0.7) + { + if (ent->v.solid == SOLID_BSP) + { + ent->v.flags = (int)ent->v.flags | FL_ONGROUND; + ent->v.groundentity = EDICT_TO_PROG(downtrace.ent); + } + } + else + { +// if the push down didn't end up on good ground, use the move without +// the step up. This happens near wall / slope combinations, and can +// cause the player to hop up higher on a slope too steep to climb + VectorCopy (nosteporg, ent->v.origin); + VectorCopy (nostepvel, ent->v.velocity); + } +} + + +/* +================ +SV_Physics_Client + +Player character actions +================ +*/ +void SV_Physics_Client (edict_t *ent, int num) +{ + if ( ! svs.clients[num-1].active ) + return; // unconnected slot + +// +// call standard client pre-think +// + pr_global_struct->time = sv.time; + pr_global_struct->self = EDICT_TO_PROG(ent); + PR_ExecuteProgram (pr_global_struct->PlayerPreThink); + +// +// do a move +// + SV_CheckVelocity (ent); + +// +// decide which move function to call +// + switch ((int)ent->v.movetype) + { + case MOVETYPE_NONE: + if (!SV_RunThink (ent)) + return; + break; + + case MOVETYPE_WALK: + if (!SV_RunThink (ent)) + return; + if (!SV_CheckWater (ent) && ! ((int)ent->v.flags & FL_WATERJUMP) ) + SV_AddGravity (ent); + SV_CheckStuck (ent); + SV_WalkMove (ent); + break; + + case MOVETYPE_TOSS: + case MOVETYPE_BOUNCE: + case MOVETYPE_GIB: + SV_Physics_Toss (ent); + break; + + case MOVETYPE_FLY: + if (!SV_RunThink (ent)) + return; + SV_FlyMove (ent, host_frametime, NULL); + break; + + case MOVETYPE_NOCLIP: + if (!SV_RunThink (ent)) + return; + VectorMA (ent->v.origin, host_frametime, ent->v.velocity, ent->v.origin); + break; + + default: + Sys_Error ("SV_Physics_client: bad movetype %i", (int)ent->v.movetype); + } + +// +// call standard player post-think +// + SV_LinkEdict (ent, true); + + pr_global_struct->time = sv.time; + pr_global_struct->self = EDICT_TO_PROG(ent); + PR_ExecuteProgram (pr_global_struct->PlayerPostThink); +} + +//============================================================================ + +/* +============= +SV_Physics_None + +Non moving objects can only think +============= +*/ +void SV_Physics_None (edict_t *ent) +{ +// regular thinking + SV_RunThink (ent); +} + +/* +============= +SV_Physics_Noclip + +A moving object that doesn't obey physics +============= +*/ +void SV_Physics_Noclip (edict_t *ent) +{ +// regular thinking + if (!SV_RunThink (ent)) + return; + + VectorMA (ent->v.angles, host_frametime, ent->v.avelocity, ent->v.angles); + VectorMA (ent->v.origin, host_frametime, ent->v.velocity, ent->v.origin); + + SV_LinkEdict (ent, false); +} + +/* +============================================================================== + +TOSS / BOUNCE + +============================================================================== +*/ + +/* +============= +SV_CheckWaterTransition + +============= +*/ +void SV_CheckWaterTransition (edict_t *ent) +{ + int cont; + + cont = SV_PointContents (ent->v.origin); + + if (!ent->v.watertype) + { // just spawned here + ent->v.watertype = cont; + ent->v.waterlevel = 1; + return; + } + + if (cont <= CONTENTS_WATER) + { + if (ent->v.watertype == CONTENTS_EMPTY) + { // just crossed into water + SV_StartSound (ent, 0, "misc/h2ohit1.wav", 255, 1); + } + ent->v.watertype = cont; + ent->v.waterlevel = 1; + } + else + { + if (ent->v.watertype != CONTENTS_EMPTY) + { // just crossed into water + SV_StartSound (ent, 0, "misc/h2ohit1.wav", 255, 1); + } + ent->v.watertype = CONTENTS_EMPTY; + ent->v.waterlevel = cont; + } +} + +/* +============= +SV_Physics_Toss + +Toss, bounce, and fly movement. When onground, do nothing. +============= +*/ +void SV_Physics_Toss (edict_t *ent) +{ + trace_t trace; + vec3_t move; + float backoff; + + // regular thinking + if (!SV_RunThink (ent)) + return; + +// if onground, return without moving + if ( ((int)ent->v.flags & FL_ONGROUND) ) + return; + + SV_CheckVelocity (ent); + +// add gravity + if (ent->v.movetype != MOVETYPE_FLY + && ent->v.movetype != MOVETYPE_FLYMISSILE) + SV_AddGravity (ent); + +// move angles + VectorMA (ent->v.angles, host_frametime, ent->v.avelocity, ent->v.angles); + +// move origin + VectorScale (ent->v.velocity, host_frametime, move); + trace = SV_PushEntity (ent, move); + if (trace.fraction == 1) + return; + if (ent->free) + return; + + if (ent->v.movetype == MOVETYPE_BOUNCE) + backoff = 1.5; + else + backoff = 1; + + ClipVelocity (ent->v.velocity, trace.plane.normal, ent->v.velocity, backoff); + +// stop if on ground + if (trace.plane.normal[2] > 0.7) + { + if (ent->v.velocity[2] < 60 || ent->v.movetype != MOVETYPE_BOUNCE) + { + ent->v.flags = (int)ent->v.flags | FL_ONGROUND; + ent->v.groundentity = EDICT_TO_PROG(trace.ent); + VectorCopy (vec3_origin, ent->v.velocity); + VectorCopy (vec3_origin, ent->v.avelocity); + } + } + +// check for in water + SV_CheckWaterTransition (ent); +} + +/* +=============================================================================== + +STEPPING MOVEMENT + +=============================================================================== +*/ + +/* +============= +SV_Physics_Step + +Monsters freefall when they don't have a ground entity, otherwise +all movement is done with discrete steps. + +This is also used for objects that have become still on the ground, but +will fall if the floor is pulled out from under them. +============= +*/ +void SV_Physics_Step (edict_t *ent) +{ + qboolean hitsound; + +// freefall if not onground + if ( ! ((int)ent->v.flags & (FL_ONGROUND | FL_FLY | FL_SWIM) ) ) + { + if (ent->v.velocity[2] < sv_gravity.value*-0.1) + hitsound = true; + else + hitsound = false; + + SV_AddGravity (ent); + SV_CheckVelocity (ent); + SV_FlyMove (ent, host_frametime, NULL); + SV_LinkEdict (ent, true); + + if ( (int)ent->v.flags & FL_ONGROUND ) // just hit ground + { + if (hitsound) + SV_StartSound (ent, 0, "demon/dland2.wav", 255, 1); + } + } + +// regular thinking + SV_RunThink (ent); + + SV_CheckWaterTransition (ent); +} + + +//============================================================================ + +/* +================ +SV_Physics + +================ +*/ +void SV_Physics (void) +{ + int i; + int entity_cap; // For sv_freezenonclients + edict_t *ent; + +// let the progs know that a new frame has started + pr_global_struct->self = EDICT_TO_PROG(sv.edicts); + pr_global_struct->other = EDICT_TO_PROG(sv.edicts); + pr_global_struct->time = sv.time; + PR_ExecuteProgram (pr_global_struct->StartFrame); + +//SV_CheckAllEnts (); + +// +// treat each object in turn +// + ent = sv.edicts; + + if (sv_freezenonclients.value) + entity_cap = svs.maxclients + 1; // Only run physics on clients and the world + else + entity_cap = sv.num_edicts; + + //for (i=0 ; i<sv.num_edicts ; i++, ent = NEXT_EDICT(ent)) + for (i=0 ; i<entity_cap ; i++, ent = NEXT_EDICT(ent)) + { + if (ent->free) + continue; + + if (pr_global_struct->force_retouch) + { + SV_LinkEdict (ent, true); // force retouch even for stationary + } + + if (i > 0 && i <= svs.maxclients) + SV_Physics_Client (ent, i); + else if (ent->v.movetype == MOVETYPE_PUSH) + SV_Physics_Pusher (ent); + else if (ent->v.movetype == MOVETYPE_NONE) + SV_Physics_None (ent); + else if (ent->v.movetype == MOVETYPE_NOCLIP) + SV_Physics_Noclip (ent); + else if (ent->v.movetype == MOVETYPE_STEP) + SV_Physics_Step (ent); + else if (ent->v.movetype == MOVETYPE_TOSS + || ent->v.movetype == MOVETYPE_GIB + || ent->v.movetype == MOVETYPE_BOUNCE + || ent->v.movetype == MOVETYPE_FLY + || ent->v.movetype == MOVETYPE_FLYMISSILE) + SV_Physics_Toss (ent); + else + Sys_Error ("SV_Physics: bad movetype %i", (int)ent->v.movetype); + + //johnfitz -- PROTOCOL_FITZQUAKE + //capture interval to nextthink here and send it to client for better + //lerp timing, but only if interval is not 0.1 (which client assumes) + ent->sendinterval = false; + if (!ent->free && ent->v.nextthink > sv.time && (ent->v.movetype == MOVETYPE_STEP || ent->v.movetype == MOVETYPE_WALK || ent->v.frame != ent->oldframe)) + { + int j = Q_rint((ent->v.nextthink-ent->oldthinktime)*255); + if (j >= 0 && j < 256 && j != 25 && j != 26) //25 and 26 are close enough to 0.1 to not send + ent->sendinterval = true; + } + //johnfitz + } + + if (pr_global_struct->force_retouch) + pr_global_struct->force_retouch--; + + if (!sv_freezenonclients.value) + sv.time += host_frametime; +} diff --git a/Quake/sv_user.c b/Quake/sv_user.c new file mode 100644 index 0000000..a2e530c --- /dev/null +++ b/Quake/sv_user.c @@ -0,0 +1,627 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// sv_user.c -- server code for moving users + +#include "quakedef.h" + +edict_t *sv_player; + +extern cvar_t sv_friction; +cvar_t sv_edgefriction = {"edgefriction", "2", CVAR_NONE}; +extern cvar_t sv_stopspeed; + +static vec3_t forward, right, up; + +// world +float *angles; +float *origin; +float *velocity; + +qboolean onground; + +usercmd_t cmd; + +cvar_t sv_idealpitchscale = {"sv_idealpitchscale","0.8",CVAR_NONE}; +cvar_t sv_altnoclip = {"sv_altnoclip","1",CVAR_ARCHIVE}; //johnfitz + +/* +=============== +SV_SetIdealPitch +=============== +*/ +#define MAX_FORWARD 6 +void SV_SetIdealPitch (void) +{ + float angleval, sinval, cosval; + trace_t tr; + vec3_t top, bottom; + float z[MAX_FORWARD]; + int i, j; + int step, dir, steps; + + if (!((int)sv_player->v.flags & FL_ONGROUND)) + return; + + angleval = sv_player->v.angles[YAW] * M_PI*2 / 360; + sinval = sin(angleval); + cosval = cos(angleval); + + for (i=0 ; i<MAX_FORWARD ; i++) + { + top[0] = sv_player->v.origin[0] + cosval*(i+3)*12; + top[1] = sv_player->v.origin[1] + sinval*(i+3)*12; + top[2] = sv_player->v.origin[2] + sv_player->v.view_ofs[2]; + + bottom[0] = top[0]; + bottom[1] = top[1]; + bottom[2] = top[2] - 160; + + tr = SV_Move (top, vec3_origin, vec3_origin, bottom, 1, sv_player); + if (tr.allsolid) + return; // looking at a wall, leave ideal the way is was + + if (tr.fraction == 1) + return; // near a dropoff + + z[i] = top[2] + tr.fraction*(bottom[2]-top[2]); + } + + dir = 0; + steps = 0; + for (j=1 ; j<i ; j++) + { + step = z[j] - z[j-1]; + if (step > -ON_EPSILON && step < ON_EPSILON) + continue; + + if (dir && ( step-dir > ON_EPSILON || step-dir < -ON_EPSILON ) ) + return; // mixed changes + + steps++; + dir = step; + } + + if (!dir) + { + sv_player->v.idealpitch = 0; + return; + } + + if (steps < 2) + return; + sv_player->v.idealpitch = -dir * sv_idealpitchscale.value; +} + + +/* +================== +SV_UserFriction + +================== +*/ +void SV_UserFriction (void) +{ + float *vel; + float speed, newspeed, control; + vec3_t start, stop; + float friction; + trace_t trace; + + vel = velocity; + + speed = sqrt(vel[0]*vel[0] +vel[1]*vel[1]); + if (!speed) + return; + +// if the leading edge is over a dropoff, increase friction + start[0] = stop[0] = origin[0] + vel[0]/speed*16; + start[1] = stop[1] = origin[1] + vel[1]/speed*16; + start[2] = origin[2] + sv_player->v.mins[2]; + stop[2] = start[2] - 34; + + trace = SV_Move (start, vec3_origin, vec3_origin, stop, true, sv_player); + + if (trace.fraction == 1.0) + friction = sv_friction.value*sv_edgefriction.value; + else + friction = sv_friction.value; + +// apply friction + control = speed < sv_stopspeed.value ? sv_stopspeed.value : speed; + newspeed = speed - host_frametime*control*friction; + + if (newspeed < 0) + newspeed = 0; + newspeed /= speed; + + vel[0] = vel[0] * newspeed; + vel[1] = vel[1] * newspeed; + vel[2] = vel[2] * newspeed; +} + +/* +============== +SV_Accelerate +============== +*/ +cvar_t sv_maxspeed = {"sv_maxspeed", "320", CVAR_NOTIFY|CVAR_SERVERINFO}; +cvar_t sv_accelerate = {"sv_accelerate", "10", CVAR_NONE}; +void SV_Accelerate (float wishspeed, const vec3_t wishdir) +{ + int i; + float addspeed, accelspeed, currentspeed; + + currentspeed = DotProduct (velocity, wishdir); + addspeed = wishspeed - currentspeed; + if (addspeed <= 0) + return; + accelspeed = sv_accelerate.value*host_frametime*wishspeed; + if (accelspeed > addspeed) + accelspeed = addspeed; + + for (i=0 ; i<3 ; i++) + velocity[i] += accelspeed*wishdir[i]; +} + +void SV_AirAccelerate (float wishspeed, vec3_t wishveloc) +{ + int i; + float addspeed, wishspd, accelspeed, currentspeed; + + wishspd = VectorNormalize (wishveloc); + if (wishspd > 30) + wishspd = 30; + currentspeed = DotProduct (velocity, wishveloc); + addspeed = wishspd - currentspeed; + if (addspeed <= 0) + return; +// accelspeed = sv_accelerate.value * host_frametime; + accelspeed = sv_accelerate.value*wishspeed * host_frametime; + if (accelspeed > addspeed) + accelspeed = addspeed; + + for (i=0 ; i<3 ; i++) + velocity[i] += accelspeed*wishveloc[i]; +} + + +void DropPunchAngle (void) +{ + float len; + + len = VectorNormalize (sv_player->v.punchangle); + + len -= 10*host_frametime; + if (len < 0) + len = 0; + VectorScale (sv_player->v.punchangle, len, sv_player->v.punchangle); +} + +/* +=================== +SV_WaterMove + +=================== +*/ +void SV_WaterMove (void) +{ + int i; + vec3_t wishvel; + float speed, newspeed, wishspeed, addspeed, accelspeed; + +// +// user intentions +// + AngleVectors (sv_player->v.v_angle, forward, right, up); + + for (i=0 ; i<3 ; i++) + wishvel[i] = forward[i]*cmd.forwardmove + right[i]*cmd.sidemove; + + if (!cmd.forwardmove && !cmd.sidemove && !cmd.upmove) + wishvel[2] -= 60; // drift towards bottom + else + wishvel[2] += cmd.upmove; + + wishspeed = VectorLength(wishvel); + if (wishspeed > sv_maxspeed.value) + { + VectorScale (wishvel, sv_maxspeed.value/wishspeed, wishvel); + wishspeed = sv_maxspeed.value; + } + wishspeed *= 0.7; + +// +// water friction +// + speed = VectorLength (velocity); + if (speed) + { + newspeed = speed - host_frametime * speed * sv_friction.value; + if (newspeed < 0) + newspeed = 0; + VectorScale (velocity, newspeed/speed, velocity); + } + else + newspeed = 0; + +// +// water acceleration +// + if (!wishspeed) + return; + + addspeed = wishspeed - newspeed; + if (addspeed <= 0) + return; + + VectorNormalize (wishvel); + accelspeed = sv_accelerate.value * wishspeed * host_frametime; + if (accelspeed > addspeed) + accelspeed = addspeed; + + for (i=0 ; i<3 ; i++) + velocity[i] += accelspeed * wishvel[i]; +} + +void SV_WaterJump (void) +{ + if (sv.time > sv_player->v.teleport_time + || !sv_player->v.waterlevel) + { + sv_player->v.flags = (int)sv_player->v.flags & ~FL_WATERJUMP; + sv_player->v.teleport_time = 0; + } + sv_player->v.velocity[0] = sv_player->v.movedir[0]; + sv_player->v.velocity[1] = sv_player->v.movedir[1]; +} + +/* +=================== +SV_NoclipMove -- johnfitz + +new, alternate noclip. old noclip is still handled in SV_AirMove +=================== +*/ +void SV_NoclipMove (void) +{ + AngleVectors (sv_player->v.v_angle, forward, right, up); + + velocity[0] = forward[0]*cmd.forwardmove + right[0]*cmd.sidemove; + velocity[1] = forward[1]*cmd.forwardmove + right[1]*cmd.sidemove; + velocity[2] = forward[2]*cmd.forwardmove + right[2]*cmd.sidemove; + velocity[2] += cmd.upmove*2; //doubled to match running speed + + if (VectorLength (velocity) > sv_maxspeed.value) + { + VectorNormalize (velocity); + VectorScale (velocity, sv_maxspeed.value, velocity); + } +} + +/* +=================== +SV_AirMove +=================== +*/ +void SV_AirMove (void) +{ + int i; + vec3_t wishvel, wishdir; + float wishspeed; + float fmove, smove; + + AngleVectors (sv_player->v.angles, forward, right, up); + + fmove = cmd.forwardmove; + smove = cmd.sidemove; + +// hack to not let you back into teleporter + if (sv.time < sv_player->v.teleport_time && fmove < 0) + fmove = 0; + + for (i=0 ; i<3 ; i++) + wishvel[i] = forward[i]*fmove + right[i]*smove; + + if ( (int)sv_player->v.movetype != MOVETYPE_WALK) + wishvel[2] = cmd.upmove; + else + wishvel[2] = 0; + + VectorCopy (wishvel, wishdir); + wishspeed = VectorNormalize(wishdir); + if (wishspeed > sv_maxspeed.value) + { + VectorScale (wishvel, sv_maxspeed.value/wishspeed, wishvel); + wishspeed = sv_maxspeed.value; + } + + if ( sv_player->v.movetype == MOVETYPE_NOCLIP) + { // noclip + VectorCopy (wishvel, velocity); + } + else if ( onground ) + { + SV_UserFriction (); + SV_Accelerate (wishspeed, wishdir); + } + else + { // not on ground, so little effect on velocity + SV_AirAccelerate (wishspeed, wishvel); + } +} + +/* +=================== +SV_ClientThink + +the move fields specify an intended velocity in pix/sec +the angle fields specify an exact angular motion in degrees +=================== +*/ +void SV_ClientThink (void) +{ + vec3_t v_angle; + + if (sv_player->v.movetype == MOVETYPE_NONE) + return; + + onground = (int)sv_player->v.flags & FL_ONGROUND; + + origin = sv_player->v.origin; + velocity = sv_player->v.velocity; + + DropPunchAngle (); + +// +// if dead, behave differently +// + if (sv_player->v.health <= 0) + return; + +// +// angles +// show 1/3 the pitch angle and all the roll angle + cmd = host_client->cmd; + angles = sv_player->v.angles; + + VectorAdd (sv_player->v.v_angle, sv_player->v.punchangle, v_angle); + angles[ROLL] = V_CalcRoll (sv_player->v.angles, sv_player->v.velocity)*4; + if (!sv_player->v.fixangle) + { + angles[PITCH] = -v_angle[PITCH]/3; + angles[YAW] = v_angle[YAW]; + } + + if ( (int)sv_player->v.flags & FL_WATERJUMP ) + { + SV_WaterJump (); + return; + } +// +// walk +// + //johnfitz -- alternate noclip + if (sv_player->v.movetype == MOVETYPE_NOCLIP && sv_altnoclip.value) + SV_NoclipMove (); + else if (sv_player->v.waterlevel >= 2 && sv_player->v.movetype != MOVETYPE_NOCLIP) + SV_WaterMove (); + else + SV_AirMove (); + //johnfitz +} + + +/* +=================== +SV_ReadClientMove +=================== +*/ +void SV_ReadClientMove (usercmd_t *move) +{ + int i; + vec3_t angle; + int bits; + +// read ping time + host_client->ping_times[host_client->num_pings%NUM_PING_TIMES] + = sv.time - MSG_ReadFloat (); + host_client->num_pings++; + +// read current angles + for (i=0 ; i<3 ; i++) + //johnfitz -- 16-bit angles for PROTOCOL_FITZQUAKE + if (sv.protocol == PROTOCOL_NETQUAKE) + angle[i] = MSG_ReadAngle (sv.protocolflags); + else + angle[i] = MSG_ReadAngle16 (sv.protocolflags); + //johnfitz + + VectorCopy (angle, host_client->edict->v.v_angle); + +// read movement + move->forwardmove = MSG_ReadShort (); + move->sidemove = MSG_ReadShort (); + move->upmove = MSG_ReadShort (); + +// read buttons + bits = MSG_ReadByte (); + host_client->edict->v.button0 = bits & 1; + host_client->edict->v.button2 = (bits & 2)>>1; + + i = MSG_ReadByte (); + if (i) + host_client->edict->v.impulse = i; +} + +/* +=================== +SV_ReadClientMessage + +Returns false if the client should be killed +=================== +*/ +qboolean SV_ReadClientMessage (void) +{ + int ret; + int ccmd; + const char *s; + + do + { +nextmsg: + ret = NET_GetMessage (host_client->netconnection); + if (ret == -1) + { + Sys_Printf ("SV_ReadClientMessage: NET_GetMessage failed\n"); + return false; + } + if (!ret) + return true; + + MSG_BeginReading (); + + while (1) + { + if (!host_client->active) + return false; // a command caused an error + + if (msg_badread) + { + Sys_Printf ("SV_ReadClientMessage: badread\n"); + return false; + } + + ccmd = MSG_ReadChar (); + + switch (ccmd) + { + case -1: + goto nextmsg; // end of message + + default: + Sys_Printf ("SV_ReadClientMessage: unknown command char\n"); + return false; + + case clc_nop: +// Sys_Printf ("clc_nop\n"); + break; + + case clc_stringcmd: + s = MSG_ReadString (); + ret = 0; + if (q_strncasecmp(s, "status", 6) == 0) + ret = 1; + else if (q_strncasecmp(s, "god", 3) == 0) + ret = 1; + else if (q_strncasecmp(s, "notarget", 8) == 0) + ret = 1; + else if (q_strncasecmp(s, "fly", 3) == 0) + ret = 1; + else if (q_strncasecmp(s, "name", 4) == 0) + ret = 1; + else if (q_strncasecmp(s, "noclip", 6) == 0) + ret = 1; + else if (q_strncasecmp(s, "setpos", 6) == 0) + ret = 1; + else if (q_strncasecmp(s, "say", 3) == 0) + ret = 1; + else if (q_strncasecmp(s, "say_team", 8) == 0) + ret = 1; + else if (q_strncasecmp(s, "tell", 4) == 0) + ret = 1; + else if (q_strncasecmp(s, "color", 5) == 0) + ret = 1; + else if (q_strncasecmp(s, "kill", 4) == 0) + ret = 1; + else if (q_strncasecmp(s, "pause", 5) == 0) + ret = 1; + else if (q_strncasecmp(s, "spawn", 5) == 0) + ret = 1; + else if (q_strncasecmp(s, "begin", 5) == 0) + ret = 1; + else if (q_strncasecmp(s, "prespawn", 8) == 0) + ret = 1; + else if (q_strncasecmp(s, "kick", 4) == 0) + ret = 1; + else if (q_strncasecmp(s, "ping", 4) == 0) + ret = 1; + else if (q_strncasecmp(s, "give", 4) == 0) + ret = 1; + else if (q_strncasecmp(s, "ban", 3) == 0) + ret = 1; + + if (ret == 1) + Cmd_ExecuteString (s, src_client); + else + Con_DPrintf("%s tried to %s\n", host_client->name, s); + break; + + case clc_disconnect: + // Sys_Printf ("SV_ReadClientMessage: client disconnected\n"); + return false; + + case clc_move: + SV_ReadClientMove (&host_client->cmd); + break; + } + } + } while (ret == 1); + + return true; +} + + +/* +================== +SV_RunClients +================== +*/ +void SV_RunClients (void) +{ + int i; + + for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) + { + if (!host_client->active) + continue; + + sv_player = host_client->edict; + + if (!SV_ReadClientMessage ()) + { + SV_DropClient (false); // client misbehaved... + continue; + } + + if (!host_client->spawned) + { + // clear client movement until a new packet is received + memset (&host_client->cmd, 0, sizeof(host_client->cmd)); + continue; + } + +// always pause in single player if in console or menus + if (!sv.paused && (svs.maxclients > 1 || key_dest == key_game) ) + SV_ClientThink (); + } +} + diff --git a/Quake/sys.h b/Quake/sys.h new file mode 100644 index 0000000..05d1055 --- /dev/null +++ b/Quake/sys.h @@ -0,0 +1,73 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_SYS_H +#define _QUAKE_SYS_H + +// sys.h -- non-portable functions + +void Sys_Init (void); + +// +// file IO +// + +// returns the file size or -1 if file is not present. +// the file should be in BINARY mode for stupid OSs that care +int Sys_FileOpenRead (const char *path, int *hndl); + +int Sys_FileOpenWrite (const char *path); +void Sys_FileClose (int handle); +void Sys_FileSeek (int handle, int position); +int Sys_FileRead (int handle, void *dest, int count); +int Sys_FileWrite (int handle,const void *data, int count); +void Sys_mkdir (const char *path); + +int Sys_FileType (const char *path); +/* returns an FS entity type, i.e. FS_ENT_FILE or FS_ENT_DIRECTORY. + * returns FS_ENT_NONE (0) if no such file or directory is present. */ + +// +// system IO +// +FUNC_NORETURN void Sys_Quit (void); +FUNC_NORETURN void Sys_Error (const char *error, ...) FUNC_PRINTF(1,2); +// an error will cause the entire program to exit +#ifdef __WATCOMC__ +#pragma aux Sys_Error aborts; +#pragma aux Sys_Quit aborts; +#endif + +void Sys_Printf (const char *fmt, ...) FUNC_PRINTF(1,2); +// send text to the console + +double Sys_DoubleTime (void); + +const char *Sys_ConsoleInput (void); + +void Sys_Sleep (unsigned long msecs); +// yield for about 'msecs' milliseconds. + +void Sys_SendKeyEvents (void); +// Perform Key_Event () callbacks until the input que is empty + +#endif /* _QUAKE_SYS_H */ + diff --git a/Quake/sys_sdl_unix.c b/Quake/sys_sdl_unix.c new file mode 100644 index 0000000..127cb87 --- /dev/null +++ b/Quake/sys_sdl_unix.c @@ -0,0 +1,565 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "arch_def.h" +#include "quakedef.h" + +#include <sys/types.h> +#include <errno.h> +#include <unistd.h> +#if defined(PLATFORM_OSX) || defined(PLATFORM_HAIKU) +#include <libgen.h> /* dirname() and basename() */ +#endif +#include <sys/stat.h> +#include <sys/time.h> +#include <fcntl.h> +#ifdef DO_USERDIRS +#include <pwd.h> +#endif + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + + +qboolean isDedicated; +cvar_t sys_throttle = {"sys_throttle", "0.02", CVAR_ARCHIVE}; + +#define MAX_HANDLES 32 /* johnfitz -- was 10 */ +static FILE *sys_handles[MAX_HANDLES]; +static qboolean stdinIsATTY; /* from ioquake3 source */ + + +static int findhandle (void) +{ + int i; + + for (i = 1; i < MAX_HANDLES; i++) + { + if (!sys_handles[i]) + return i; + } + Sys_Error ("out of handles"); + return -1; +} + +long Sys_filelength (FILE *f) +{ + long pos, end; + + pos = ftell (f); + fseek (f, 0, SEEK_END); + end = ftell (f); + fseek (f, pos, SEEK_SET); + + return end; +} + +int Sys_FileOpenRead (const char *path, int *hndl) +{ + FILE *f; + int i, retval; + + i = findhandle (); + f = fopen(path, "rb"); + + if (!f) + { + *hndl = -1; + retval = -1; + } + else + { + sys_handles[i] = f; + *hndl = i; + retval = Sys_filelength(f); + } + + return retval; +} + +int Sys_FileOpenWrite (const char *path) +{ + FILE *f; + int i; + + i = findhandle (); + f = fopen(path, "wb"); + + if (!f) + Sys_Error ("Error opening %s: %s", path, strerror(errno)); + + sys_handles[i] = f; + return i; +} + +void Sys_FileClose (int handle) +{ + fclose (sys_handles[handle]); + sys_handles[handle] = NULL; +} + +void Sys_FileSeek (int handle, int position) +{ + fseek (sys_handles[handle], position, SEEK_SET); +} + +int Sys_FileRead (int handle, void *dest, int count) +{ + return fread (dest, 1, count, sys_handles[handle]); +} + +int Sys_FileWrite (int handle, const void *data, int count) +{ + return fwrite (data, 1, count, sys_handles[handle]); +} + +int Sys_FileType (const char *path) +{ + /* + if (access(path, R_OK) == -1) + return 0; + */ + struct stat st; + + if (stat(path, &st) != 0) + return FS_ENT_NONE; + if (S_ISDIR(st.st_mode)) + return FS_ENT_DIRECTORY; + if (S_ISREG(st.st_mode)) + return FS_ENT_FILE; + + return FS_ENT_NONE; +} + + +#if defined(__linux__) || defined(__sun) || defined(sun) || defined(_AIX) +static int Sys_NumCPUs (void) +{ + int numcpus = sysconf(_SC_NPROCESSORS_ONLN); + return (numcpus < 1) ? 1 : numcpus; +} + +#elif defined(PLATFORM_OSX) +#include <sys/sysctl.h> +#if !defined(HW_AVAILCPU) /* using an ancient SDK? */ +#define HW_AVAILCPU 25 /* needs >= 10.2 */ +#endif +static int Sys_NumCPUs (void) +{ + int numcpus; + int mib[2]; + size_t len; + +#if defined(_SC_NPROCESSORS_ONLN) /* needs >= 10.5 */ + numcpus = sysconf(_SC_NPROCESSORS_ONLN); + if (numcpus != -1) + return (numcpus < 1) ? 1 : numcpus; +#endif + len = sizeof(numcpus); + mib[0] = CTL_HW; + mib[1] = HW_AVAILCPU; + sysctl(mib, 2, &numcpus, &len, NULL, 0); + if (sysctl(mib, 2, &numcpus, &len, NULL, 0) == -1) + { + mib[1] = HW_NCPU; + if (sysctl(mib, 2, &numcpus, &len, NULL, 0) == -1) + return 1; + } + return (numcpus < 1) ? 1 : numcpus; +} + +#elif defined(__sgi) || defined(sgi) || defined(__sgi__) /* IRIX */ +static int Sys_NumCPUs (void) +{ + int numcpus = sysconf(_SC_NPROC_ONLN); + if (numcpus < 1) + numcpus = 1; + return numcpus; +} + +#elif defined(PLATFORM_BSD) +#include <sys/sysctl.h> +static int Sys_NumCPUs (void) +{ + int numcpus; + int mib[2]; + size_t len; + +#if defined(_SC_NPROCESSORS_ONLN) + numcpus = sysconf(_SC_NPROCESSORS_ONLN); + if (numcpus != -1) + return (numcpus < 1) ? 1 : numcpus; +#endif + len = sizeof(numcpus); + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + if (sysctl(mib, 2, &numcpus, &len, NULL, 0) == -1) + return 1; + return (numcpus < 1) ? 1 : numcpus; +} + +#elif defined(__hpux) || defined(__hpux__) || defined(_hpux) +#include <sys/mpctl.h> +static int Sys_NumCPUs (void) +{ + int numcpus = mpctl(MPC_GETNUMSPUS, NULL, NULL); + return numcpus; +} + +#else /* unknown OS */ +static int Sys_NumCPUs (void) +{ + return -2; +} +#endif + +static char cwd[MAX_OSPATH]; +#ifdef DO_USERDIRS +static char userdir[MAX_OSPATH]; +#ifdef PLATFORM_OSX +#define SYS_USERDIR "Library/Application Support/QuakeSpasm" +#elif defined(PLATFORM_HAIKU) +#define SYS_USERDIR "QuakeSpasm" +#else +#define SYS_USERDIR ".quakespasm" +#endif + +static qboolean Sys_GetUserdirArgs (int argc, char **argv, char *dst, size_t dstsize) +{ + int i = 1; + for (; i < argc - 1; ++i) + { + if (strcmp(argv[i], "-userdir") == 0) + { + char *p = dst; + const char * arg = argv[i + 1]; + const int n = (int)strlen(arg); + if (n < 1) Sys_Error("Bad argument to -userdir"); + if (q_strlcpy(dst, arg, dstsize) >= dstsize) + Sys_Error ("Insufficient array size for userspace directory"); + if (dst[n - 1] == '/') dst[n - 1] = 0; + if (*p == '/') p++; + for (; *p; p++) { + const char c = *p; + if (c == '/') { + *p = 0; + Sys_mkdir (dst); + *p = c; + } + } + return true; + } + } + return false; +} + +#ifdef PLATFORM_HAIKU +#include <FindDirectory.h> +#include <fs_info.h> + +static void Sys_GetUserdir (int argc, char **argv, char *dst, size_t dstsize) +{ + dev_t volume = dev_for_path("/boot"); + char buffer[B_PATH_NAME_LENGTH]; + status_t result; + + if (Sys_GetUserdirArgs(argc, argv, dst, dstsize)) + return; + + result = find_directory(B_USER_NONPACKAGED_DATA_DIRECTORY, volume, false, buffer, sizeof(buffer)); + if (result != B_OK) + Sys_Error ("Couldn't determine userspace directory"); + + q_snprintf (dst, dstsize, "%s/%s", buffer, SYS_USERDIR); +} +#else +static void Sys_GetUserdir (int argc, char **argv, char *dst, size_t dstsize) +{ + size_t n; + const char *home_dir = NULL; + struct passwd *pwent; + + if (Sys_GetUserdirArgs(argc, argv, dst, dstsize)) + return; + + pwent = getpwuid( getuid() ); + if (pwent == NULL) + perror("getpwuid"); + else + home_dir = pwent->pw_dir; + if (home_dir == NULL) + home_dir = getenv("HOME"); + if (home_dir == NULL) + Sys_Error ("Couldn't determine userspace directory"); + +/* what would be a maximum path for a file in the user's directory... + * $HOME/SYS_USERDIR/game_dir/dirname1/dirname2/dirname3/filename.ext + * still fits in the MAX_OSPATH == 256 definition, but just in case : + */ + n = strlen(home_dir) + strlen(SYS_USERDIR) + 50; + if (n >= dstsize) + Sys_Error ("Insufficient array size for userspace directory"); + + q_snprintf (dst, dstsize, "%s/%s", home_dir, SYS_USERDIR); +} +#endif /* PLATFORM_HAIKU */ +#endif /* DO_USERDIRS */ + +#ifdef PLATFORM_OSX +static char *OSX_StripAppBundle (char *dir) +{ /* based on the ioquake3 project at icculus.org. */ + static char osx_path[MAX_OSPATH]; + + q_strlcpy (osx_path, dir, sizeof(osx_path)); + if (strcmp(basename(osx_path), "MacOS")) + return dir; + q_strlcpy (osx_path, dirname(osx_path), sizeof(osx_path)); + if (strcmp(basename(osx_path), "Contents")) + return dir; + q_strlcpy (osx_path, dirname(osx_path), sizeof(osx_path)); + if (!strstr(basename(osx_path), ".app")) + return dir; + q_strlcpy (osx_path, dirname(osx_path), sizeof(osx_path)); + return osx_path; +} + +static void Sys_GetBasedir (char *argv0, char *dst, size_t dstsize) +{ + char *tmp; + + if (realpath(argv0, dst) == NULL) + { + perror("realpath"); + if (getcwd(dst, dstsize - 1) == NULL) + _fail: Sys_Error ("Couldn't determine current directory"); + } + else + { + /* strip off the binary name */ + if (! (tmp = strdup (dst))) goto _fail; + q_strlcpy (dst, dirname(tmp), dstsize); + free (tmp); + } + + tmp = OSX_StripAppBundle(dst); + if (tmp != dst) + q_strlcpy (dst, tmp, dstsize); +} +#else +static void Sys_GetBasedir (char *argv0, char *dst, size_t dstsize) +{ + char *tmp; + + #ifdef PLATFORM_HAIKU + if (realpath(argv0, dst) == NULL) + { + perror("realpath"); + if (getcwd(dst, dstsize - 1) == NULL) + _fail: Sys_Error ("Couldn't determine current directory"); + } + else + { + /* strip off the binary name */ + if (! (tmp = strdup (dst))) goto _fail; + q_strlcpy (dst, dirname(tmp), dstsize); + free (tmp); + } + #else + if (getcwd(dst, dstsize - 1) == NULL) + Sys_Error ("Couldn't determine current directory"); + + tmp = dst; + while (*tmp != 0) + tmp++; + while (*tmp == 0 && tmp != dst) + { + --tmp; + if (tmp != dst && *tmp == '/') + *tmp = 0; + } + #endif +} +#endif + +void Sys_Init (void) +{ + const char* term = getenv("TERM"); + stdinIsATTY = isatty(STDIN_FILENO) && + !(term && (!strcmp(term, "raw") || !strcmp(term, "dumb"))); + if (!stdinIsATTY) + Sys_Printf("Terminal input not available.\n"); + + memset (cwd, 0, sizeof(cwd)); + Sys_GetBasedir(host_parms->argv[0], cwd, sizeof(cwd)); + host_parms->basedir = cwd; +#ifndef DO_USERDIRS + host_parms->userdir = host_parms->basedir; /* code elsewhere relies on this ! */ +#else + memset (userdir, 0, sizeof(userdir)); + Sys_GetUserdir (host_parms->argc, host_parms->argv, userdir, sizeof(userdir)); + Sys_mkdir (userdir); + host_parms->userdir = userdir; +#endif + host_parms->numcpus = Sys_NumCPUs (); + Sys_Printf("Detected %d CPUs.\n", host_parms->numcpus); +} + +void Sys_mkdir (const char *path) +{ + int rc = mkdir (path, 0777); + if (rc != 0 && errno == EEXIST) + { + struct stat st; + if (stat(path, &st) == 0 && S_ISDIR(st.st_mode)) + rc = 0; + } + if (rc != 0) + { + rc = errno; + Sys_Error("Unable to create directory %s: %s", path, strerror(rc)); + } +} + +static const char errortxt1[] = "\nERROR-OUT BEGIN\n\n"; +static const char errortxt2[] = "\nQUAKE ERROR: "; + +void Sys_Error (const char *error, ...) +{ + va_list argptr; + char text[1024]; + + host_parms->errstate++; + + va_start (argptr, error); + q_vsnprintf (text, sizeof(text), error, argptr); + va_end (argptr); + + fputs (errortxt1, stderr); + Host_Shutdown (); + fputs (errortxt2, stderr); + fputs (text, stderr); + fputs ("\n\n", stderr); + if (!isDedicated) + PL_ErrorDialog(text); + + exit (1); +} + +void Sys_Printf (const char *fmt, ...) +{ + va_list argptr; + + va_start(argptr, fmt); + vprintf(fmt, argptr); + va_end(argptr); +} + +void Sys_Quit (void) +{ + Host_Shutdown(); + + exit (0); +} + +double Sys_DoubleTime (void) +{ + return SDL_GetTicks() / 1000.0; +} + +const char *Sys_ConsoleInput (void) +{ + static qboolean con_eof = false; + static char con_text[256]; + static int textlen; + char c; + fd_set set; + struct timeval timeout; + + if (!stdinIsATTY || con_eof) + return NULL; + + FD_ZERO (&set); + FD_SET (0, &set); // stdin + timeout.tv_sec = 0; + timeout.tv_usec = 0; + + while (select (1, &set, NULL, NULL, &timeout)) + { + if (read(0, &c, 1) <= 0) + { + // Finish processing whatever is already in the + // buffer (if anything), then stop reading + con_eof = true; + c = '\n'; + } + if (c == '\n' || c == '\r') + { + con_text[textlen] = '\0'; + textlen = 0; + return con_text; + } + else if (c == 8) + { + if (textlen) + { + textlen--; + con_text[textlen] = '\0'; + } + continue; + } + con_text[textlen] = c; + textlen++; + if (textlen < (int) sizeof(con_text)) + con_text[textlen] = '\0'; + else + { + // buffer is full + textlen = 0; + con_text[0] = '\0'; + Sys_Printf("\nConsole input too long!\n"); + break; + } + } + + return NULL; +} + +void Sys_Sleep (unsigned long msecs) +{ +/* usleep (msecs * 1000);*/ + SDL_Delay (msecs); +} + +void Sys_SendKeyEvents (void) +{ + IN_Commands(); //ericw -- allow joysticks to add keys so they can be used to confirm SCR_ModalMessage + IN_SendKeyEvents(); +} + diff --git a/Quake/sys_sdl_win.c b/Quake/sys_sdl_win.c new file mode 100644 index 0000000..2f6f736 --- /dev/null +++ b/Quake/sys_sdl_win.c @@ -0,0 +1,443 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2005 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include <windows.h> +#include <mmsystem.h> + +#include "quakedef.h" + +#include <sys/types.h> +#include <errno.h> +#include <io.h> +#include <direct.h> + +#if defined(SDL_FRAMEWORK) || defined(NO_SDL_CONFIG) +#if defined(USE_SDL2) +#include <SDL2/SDL.h> +#else +#include <SDL/SDL.h> +#endif +#else +#include "SDL.h" +#endif + + +qboolean isDedicated; +qboolean Win95, Win95old, WinNT, WinVista; +cvar_t sys_throttle = {"sys_throttle", "0.02", CVAR_ARCHIVE}; + +static HANDLE hinput, houtput; + +#define MAX_HANDLES 32 /* johnfitz -- was 10 */ +static FILE *sys_handles[MAX_HANDLES]; + + +static int findhandle (void) +{ + int i; + + for (i = 1; i < MAX_HANDLES; i++) + { + if (!sys_handles[i]) + return i; + } + Sys_Error ("out of handles"); + return -1; +} + +long Sys_filelength (FILE *f) +{ + long pos, end; + + pos = ftell (f); + fseek (f, 0, SEEK_END); + end = ftell (f); + fseek (f, pos, SEEK_SET); + + return end; +} + +int Sys_FileOpenRead (const char *path, int *hndl) +{ + FILE *f; + int i, retval; + + i = findhandle (); + f = fopen(path, "rb"); + + if (!f) + { + *hndl = -1; + retval = -1; + } + else + { + sys_handles[i] = f; + *hndl = i; + retval = Sys_filelength(f); + } + + return retval; +} + +int Sys_FileOpenWrite (const char *path) +{ + FILE *f; + int i; + + i = findhandle (); + f = fopen(path, "wb"); + + if (!f) + Sys_Error ("Error opening %s: %s", path, strerror(errno)); + + sys_handles[i] = f; + return i; +} + +void Sys_FileClose (int handle) +{ + fclose (sys_handles[handle]); + sys_handles[handle] = NULL; +} + +void Sys_FileSeek (int handle, int position) +{ + fseek (sys_handles[handle], position, SEEK_SET); +} + +int Sys_FileRead (int handle, void *dest, int count) +{ + return fread (dest, 1, count, sys_handles[handle]); +} + +int Sys_FileWrite (int handle, const void *data, int count) +{ + return fwrite (data, 1, count, sys_handles[handle]); +} + +#ifndef INVALID_FILE_ATTRIBUTES +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif +int Sys_FileType (const char *path) +{ + DWORD result = GetFileAttributes(path); + + if (result == INVALID_FILE_ATTRIBUTES) + return FS_ENT_NONE; + if (result & FILE_ATTRIBUTE_DIRECTORY) + return FS_ENT_DIRECTORY; + + return FS_ENT_FILE; +} + +static char cwd[1024]; + +static void Sys_GetBasedir (char *argv0, char *dst, size_t dstsize) +{ + char *tmp; + size_t rc; + + rc = GetCurrentDirectory(dstsize, dst); + if (rc == 0 || rc > dstsize) + Sys_Error ("Couldn't determine current directory"); + + tmp = dst; + while (*tmp != 0) + tmp++; + while (*tmp == 0 && tmp != dst) + { + --tmp; + if (tmp != dst && (*tmp == '/' || *tmp == '\\')) + *tmp = 0; + } +} + +typedef enum { dpi_unaware = 0, dpi_system_aware = 1, dpi_monitor_aware = 2 } dpi_awareness; +typedef BOOL (WINAPI *SetProcessDPIAwareFunc)(); +typedef HRESULT (WINAPI *SetProcessDPIAwarenessFunc)(dpi_awareness value); + +static void Sys_SetDPIAware (void) +{ + HMODULE hUser32, hShcore; + SetProcessDPIAwarenessFunc setDPIAwareness; + SetProcessDPIAwareFunc setDPIAware; + + /* Neither SDL 1.2 nor SDL 2.0.3 can handle the OS scaling our window. + (e.g. https://bugzilla.libsdl.org/show_bug.cgi?id=2713) + Call SetProcessDpiAwareness/SetProcessDPIAware to opt out of scaling. + */ + + hShcore = LoadLibraryA ("Shcore.dll"); + hUser32 = LoadLibraryA ("user32.dll"); + setDPIAwareness = (SetProcessDPIAwarenessFunc) (hShcore ? GetProcAddress (hShcore, "SetProcessDpiAwareness") : NULL); + setDPIAware = (SetProcessDPIAwareFunc) (hUser32 ? GetProcAddress (hUser32, "SetProcessDPIAware") : NULL); + + if (setDPIAwareness) /* Windows 8.1+ */ + setDPIAwareness (dpi_monitor_aware); + else if (setDPIAware) /* Windows Vista-8.0 */ + setDPIAware (); + + if (hShcore) + FreeLibrary (hShcore); + if (hUser32) + FreeLibrary (hUser32); +} + +static void Sys_SetTimerResolution(void) +{ + /* Set OS timer resolution to 1ms. + Works around buffer underruns with directsound and SDL2, but also + will make Sleep()/SDL_Dleay() accurate to 1ms which should help framerate + stability. + */ + timeBeginPeriod (1); +} + +void Sys_Init (void) +{ + OSVERSIONINFO vinfo; + + Sys_SetTimerResolution (); + Sys_SetDPIAware (); + + memset (cwd, 0, sizeof(cwd)); + Sys_GetBasedir(NULL, cwd, sizeof(cwd)); + host_parms->basedir = cwd; + + /* userdirs not really necessary for windows guys. + * can be done if necessary, though... */ + host_parms->userdir = host_parms->basedir; /* code elsewhere relies on this ! */ + + vinfo.dwOSVersionInfoSize = sizeof(vinfo); + + if (!GetVersionEx (&vinfo)) + Sys_Error ("Couldn't get OS info"); + + if ((vinfo.dwMajorVersion < 4) || + (vinfo.dwPlatformId == VER_PLATFORM_WIN32s)) + { + Sys_Error ("QuakeSpasm requires at least Win95 or NT 4.0"); + } + + if (vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT) + { + SYSTEM_INFO info; + WinNT = true; + if (vinfo.dwMajorVersion >= 6) + WinVista = true; + GetSystemInfo(&info); + host_parms->numcpus = info.dwNumberOfProcessors; + if (host_parms->numcpus < 1) + host_parms->numcpus = 1; + } + else + { + WinNT = false; /* Win9x or WinME */ + host_parms->numcpus = 1; + if ((vinfo.dwMajorVersion == 4) && (vinfo.dwMinorVersion == 0)) + { + Win95 = true; + /* Win95-gold or Win95A can't switch bpp automatically */ + if (vinfo.szCSDVersion[1] != 'C' && vinfo.szCSDVersion[1] != 'B') + Win95old = true; + } + } + Sys_Printf("Detected %d CPUs.\n", host_parms->numcpus); + + if (isDedicated) + { + if (!AllocConsole ()) + { + isDedicated = false; /* so that we have a graphical error dialog */ + Sys_Error ("Couldn't create dedicated server console"); + } + + hinput = GetStdHandle (STD_INPUT_HANDLE); + houtput = GetStdHandle (STD_OUTPUT_HANDLE); + } +} + +void Sys_mkdir (const char *path) +{ + if (CreateDirectory(path, NULL) != 0) + return; + if (GetLastError() != ERROR_ALREADY_EXISTS) + Sys_Error("Unable to create directory %s", path); +} + +static const char errortxt1[] = "\nERROR-OUT BEGIN\n\n"; +static const char errortxt2[] = "\nQUAKE ERROR: "; + +void Sys_Error (const char *error, ...) +{ + va_list argptr; + char text[1024]; + DWORD dummy; + + host_parms->errstate++; + + va_start (argptr, error); + q_vsnprintf (text, sizeof(text), error, argptr); + va_end (argptr); + + if (isDedicated) + WriteFile (houtput, errortxt1, strlen(errortxt1), &dummy, NULL); + /* SDL will put these into its own stderr log, + so print to stderr even in graphical mode. */ + fputs (errortxt1, stderr); + Host_Shutdown (); + fputs (errortxt2, stderr); + fputs (text, stderr); + fputs ("\n\n", stderr); + if (!isDedicated) + PL_ErrorDialog(text); + else + { + WriteFile (houtput, errortxt2, strlen(errortxt2), &dummy, NULL); + WriteFile (houtput, text, strlen(text), &dummy, NULL); + WriteFile (houtput, "\r\n", 2, &dummy, NULL); + SDL_Delay (3000); /* show the console 3 more seconds */ + } + + exit (1); +} + +void Sys_Printf (const char *fmt, ...) +{ + va_list argptr; + char text[1024]; + DWORD dummy; + + va_start (argptr,fmt); + q_vsnprintf (text, sizeof(text), fmt, argptr); + va_end (argptr); + + if (isDedicated) + { + WriteFile(houtput, text, strlen(text), &dummy, NULL); + } + else + { + /* SDL will put these into its own stdout log, + so print to stdout even in graphical mode. */ + fputs (text, stdout); + } +} + +void Sys_Quit (void) +{ + Host_Shutdown(); + + if (isDedicated) + FreeConsole (); + + exit (0); +} + +double Sys_DoubleTime (void) +{ + return SDL_GetTicks() / 1000.0; +} + +const char *Sys_ConsoleInput (void) +{ + static char con_text[256]; + static int textlen; + INPUT_RECORD recs[1024]; + int ch; + DWORD dummy, numread, numevents; + + for ( ;; ) + { + if (GetNumberOfConsoleInputEvents(hinput, &numevents) == 0) + Sys_Error ("Error getting # of console events"); + + if (! numevents) + break; + + if (ReadConsoleInput(hinput, recs, 1, &numread) == 0) + Sys_Error ("Error reading console input"); + + if (numread != 1) + Sys_Error ("Couldn't read console input"); + + if (recs[0].EventType == KEY_EVENT) + { + if (recs[0].Event.KeyEvent.bKeyDown == FALSE) + { + ch = recs[0].Event.KeyEvent.uChar.AsciiChar; + + switch (ch) + { + case '\r': + WriteFile(houtput, "\r\n", 2, &dummy, NULL); + + if (textlen != 0) + { + con_text[textlen] = 0; + textlen = 0; + return con_text; + } + + break; + + case '\b': + WriteFile(houtput, "\b \b", 3, &dummy, NULL); + if (textlen != 0) + textlen--; + + break; + + default: + if (ch >= ' ') + { + WriteFile(houtput, &ch, 1, &dummy, NULL); + con_text[textlen] = ch; + textlen = (textlen + 1) & 0xff; + } + + break; + } + } + } + } + + return NULL; +} + +void Sys_Sleep (unsigned long msecs) +{ +/* Sleep (msecs);*/ + SDL_Delay (msecs); +} + +void Sys_SendKeyEvents (void) +{ + IN_Commands(); //ericw -- allow joysticks to add keys so they can be used to confirm SCR_ModalMessage + IN_SendKeyEvents(); +} + diff --git a/Quake/vid.h b/Quake/vid.h new file mode 100644 index 0000000..46ae8d6 --- /dev/null +++ b/Quake/vid.h @@ -0,0 +1,93 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __VID_DEFS_H +#define __VID_DEFS_H + +// vid.h -- video driver defs + +#define VID_CBITS 6 +#define VID_GRADES (1 << VID_CBITS) + +#define GAMMA_MAX 3.0 + +// moved here for global use -- kristian +typedef enum { MS_UNINIT, MS_WINDOWED, MS_FULLSCREEN } modestate_t; + +extern modestate_t modestate; + +// a pixel can be one, two, or four bytes +typedef byte pixel_t; + +typedef struct vrect_s +{ + int x, y, width, height; + struct vrect_s *pnext; +} vrect_t; + +typedef struct +{ + pixel_t *buffer; // invisible buffer + pixel_t *colormap; // 256 * VID_GRADES size + unsigned short *colormap16; // 256 * VID_GRADES size + int fullbright; // index of first fullbright color + int rowbytes; // may be > width if displayed in a window + int width; + int height; + float aspect; // width / height -- < 0 is taller than wide + int numpages; + int recalc_refdef; // if true, recalc vid-based stuff + pixel_t *conbuffer; + int conrowbytes; + int conwidth; + int conheight; + int maxwarpwidth; + int maxwarpheight; + pixel_t *direct; // direct drawing to framebuffer, if not NULL +} viddef_t; + +extern viddef_t vid; // global video state + +extern void (*vid_menudrawfn)(void); +extern void (*vid_menukeyfn)(int key); +extern void (*vid_menucmdfn)(void); //johnfitz + +void VID_Init (void); //johnfitz -- removed palette from argument list + +void VID_Shutdown (void); +// Called at shutdown + +void VID_Update (vrect_t *rects); +// flushes the given rectangles from the view buffer to the screen + +void VID_SyncCvars (void); + +void VID_Toggle (void); + +void *VID_GetWindow (void); +qboolean VID_HasMouseOrInputFocus (void); +qboolean VID_IsMinimized (void); +void VID_Lock (void); + +#endif /* __VID_DEFS_H */ + diff --git a/Quake/view.c b/Quake/view.c new file mode 100644 index 0000000..503d06e --- /dev/null +++ b/Quake/view.c @@ -0,0 +1,975 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// view.c -- player eye positioning + +#include "quakedef.h" + +/* + +The view is allowed to move slightly from it's true position for bobbing, +but if it exceeds 8 pixels linear distance (spherical, not box), the list of +entities sent from the server may not include everything in the pvs, especially +when crossing a water boudnary. + +*/ + +cvar_t scr_ofsx = {"scr_ofsx","0", CVAR_NONE}; +cvar_t scr_ofsy = {"scr_ofsy","0", CVAR_NONE}; +cvar_t scr_ofsz = {"scr_ofsz","0", CVAR_NONE}; + +cvar_t cl_rollspeed = {"cl_rollspeed", "200", CVAR_NONE}; +cvar_t cl_rollangle = {"cl_rollangle", "2.0", CVAR_NONE}; + +cvar_t cl_bob = {"cl_bob","0.02", CVAR_NONE}; +cvar_t cl_bobcycle = {"cl_bobcycle","0.6", CVAR_NONE}; +cvar_t cl_bobup = {"cl_bobup","0.5", CVAR_NONE}; + +cvar_t v_kicktime = {"v_kicktime", "0.5", CVAR_NONE}; +cvar_t v_kickroll = {"v_kickroll", "0.6", CVAR_NONE}; +cvar_t v_kickpitch = {"v_kickpitch", "0.6", CVAR_NONE}; +cvar_t v_gunkick = {"v_gunkick", "1", CVAR_NONE}; //johnfitz + +cvar_t v_iyaw_cycle = {"v_iyaw_cycle", "2", CVAR_NONE}; +cvar_t v_iroll_cycle = {"v_iroll_cycle", "0.5", CVAR_NONE}; +cvar_t v_ipitch_cycle = {"v_ipitch_cycle", "1", CVAR_NONE}; +cvar_t v_iyaw_level = {"v_iyaw_level", "0.3", CVAR_NONE}; +cvar_t v_iroll_level = {"v_iroll_level", "0.1", CVAR_NONE}; +cvar_t v_ipitch_level = {"v_ipitch_level", "0.3", CVAR_NONE}; + +cvar_t v_idlescale = {"v_idlescale", "0", CVAR_NONE}; + +cvar_t crosshair = {"crosshair", "0", CVAR_ARCHIVE}; + +cvar_t gl_cshiftpercent = {"gl_cshiftpercent", "100", CVAR_NONE}; +cvar_t gl_cshiftpercent_contents = {"gl_cshiftpercent_contents", "100", CVAR_NONE}; // QuakeSpasm +cvar_t gl_cshiftpercent_damage = {"gl_cshiftpercent_damage", "100", CVAR_NONE}; // QuakeSpasm +cvar_t gl_cshiftpercent_bonus = {"gl_cshiftpercent_bonus", "100", CVAR_NONE}; // QuakeSpasm +cvar_t gl_cshiftpercent_powerup = {"gl_cshiftpercent_powerup", "100", CVAR_NONE}; // QuakeSpasm + +cvar_t r_viewmodel_quake = {"r_viewmodel_quake", "0", CVAR_ARCHIVE}; + +vec3_t v_punchangles[2]; //johnfitz -- copied from cl.punchangle. 0 is current, 1 is previous value. never the same unless map just loaded + +/* +=============== +V_CalcRoll + +Used by view and sv_user +=============== +*/ +float V_CalcRoll (vec3_t angles, vec3_t velocity) +{ + vec3_t forward, right, up; + float sign; + float side; + float value; + + AngleVectors (angles, forward, right, up); + side = DotProduct (velocity, right); + sign = side < 0 ? -1 : 1; + side = fabs(side); + + value = cl_rollangle.value; +// if (cl.inwater) +// value *= 6; + + if (side < cl_rollspeed.value) + side = side * value / cl_rollspeed.value; + else + side = value; + + return side*sign; +} + + +/* +=============== +V_CalcBob + +=============== +*/ +float V_CalcBob (void) +{ + float bob; + float cycle; + + if (!cl_bobcycle.value) /* Avoid divide-by-zero, don't bob */ + return 0.0f; + + cycle = cl.time - (int)(cl.time/cl_bobcycle.value)*cl_bobcycle.value; + cycle /= cl_bobcycle.value; + if (cycle < cl_bobup.value) + cycle = M_PI * cycle / cl_bobup.value; + else + cycle = M_PI + M_PI*(cycle-cl_bobup.value)/(1.0 - cl_bobup.value); + +// bob is proportional to velocity in the xy plane +// (don't count Z, or jumping messes it up) + + bob = sqrt(cl.velocity[0]*cl.velocity[0] + cl.velocity[1]*cl.velocity[1]) * cl_bob.value; +//Con_Printf ("speed: %5.1f\n", VectorLength(cl.velocity)); + bob = bob*0.3 + bob*0.7*sin(cycle); + if (bob > 4) + bob = 4; + else if (bob < -7) + bob = -7; + return bob; +} + + +//============================================================================= + + +cvar_t v_centermove = {"v_centermove", "0.15", CVAR_NONE}; +cvar_t v_centerspeed = {"v_centerspeed","500", CVAR_NONE}; + + +void V_StartPitchDrift (void) +{ +#if 1 + if (cl.laststop == cl.time) + { + return; // something else is keeping it from drifting + } +#endif + if (cl.nodrift || !cl.pitchvel) + { + cl.pitchvel = v_centerspeed.value; + cl.nodrift = false; + cl.driftmove = 0; + } +} + +void V_StopPitchDrift (void) +{ + cl.laststop = cl.time; + cl.nodrift = true; + cl.pitchvel = 0; +} + +/* +=============== +V_DriftPitch + +Moves the client pitch angle towards cl.idealpitch sent by the server. + +If the user is adjusting pitch manually, either with lookup/lookdown, +mlook and mouse, or klook and keyboard, pitch drifting is constantly stopped. + +Drifting is enabled when the center view key is hit, mlook is released and +lookspring is non 0, or when +=============== +*/ +void V_DriftPitch (void) +{ + float delta, move; + + if (noclip_anglehack || !cl.onground || cls.demoplayback ) + //FIXME: noclip_anglehack is set on the server, so in a nonlocal game this won't work. + { + cl.driftmove = 0; + cl.pitchvel = 0; + return; + } + +// don't count small mouse motion + if (cl.nodrift) + { + if ( fabs(cl.cmd.forwardmove) < cl_forwardspeed.value) + cl.driftmove = 0; + else + cl.driftmove += host_frametime; + + if ( cl.driftmove > v_centermove.value) + { + if (lookspring.value) + V_StartPitchDrift (); + } + return; + } + + delta = cl.idealpitch - cl.viewangles[PITCH]; + + if (!delta) + { + cl.pitchvel = 0; + return; + } + + move = host_frametime * cl.pitchvel; + cl.pitchvel += host_frametime * v_centerspeed.value; + +//Con_Printf ("move: %f (%f)\n", move, host_frametime); + + if (delta > 0) + { + if (move > delta) + { + cl.pitchvel = 0; + move = delta; + } + cl.viewangles[PITCH] += move; + } + else if (delta < 0) + { + if (move > -delta) + { + cl.pitchvel = 0; + move = -delta; + } + cl.viewangles[PITCH] -= move; + } +} + +/* +============================================================================== + + VIEW BLENDING + +============================================================================== +*/ + +static cshift_t cshift_empty = { {130,80,50}, 0 }; +static cshift_t cshift_water = { {130,80,50}, 128 }; +static cshift_t cshift_slime = { {0,25,5}, 150 }; +static cshift_t cshift_lava = { {255,80,0}, 150 }; + +static float v_dmg_time, v_dmg_roll, v_dmg_pitch; + +float v_blend[4]; // rgba 0.0 - 1.0 + +//johnfitz -- deleted BuildGammaTable(), V_CheckGamma(), gammatable[], and ramps[][] + +/* +=============== +V_ParseDamage +=============== +*/ +void V_ParseDamage (void) +{ + int armor, blood; + vec3_t from; + int i; + vec3_t forward, right, up; + entity_t *ent; + float side; + float count; + + armor = MSG_ReadByte (); + blood = MSG_ReadByte (); + for (i=0 ; i<3 ; i++) + from[i] = MSG_ReadCoord (cl.protocolflags); + + count = blood*0.5 + armor*0.5; + if (count < 10) + count = 10; + + cl.faceanimtime = cl.time + 0.2; // but sbar face into pain frame + + cl.cshifts[CSHIFT_DAMAGE].percent += 3*count; + if (cl.cshifts[CSHIFT_DAMAGE].percent < 0) + cl.cshifts[CSHIFT_DAMAGE].percent = 0; + if (cl.cshifts[CSHIFT_DAMAGE].percent > 150) + cl.cshifts[CSHIFT_DAMAGE].percent = 150; + + if (armor > blood) + { + cl.cshifts[CSHIFT_DAMAGE].destcolor[0] = 200; + cl.cshifts[CSHIFT_DAMAGE].destcolor[1] = 100; + cl.cshifts[CSHIFT_DAMAGE].destcolor[2] = 100; + } + else if (armor) + { + cl.cshifts[CSHIFT_DAMAGE].destcolor[0] = 220; + cl.cshifts[CSHIFT_DAMAGE].destcolor[1] = 50; + cl.cshifts[CSHIFT_DAMAGE].destcolor[2] = 50; + } + else + { + cl.cshifts[CSHIFT_DAMAGE].destcolor[0] = 255; + cl.cshifts[CSHIFT_DAMAGE].destcolor[1] = 0; + cl.cshifts[CSHIFT_DAMAGE].destcolor[2] = 0; + } + +// +// calculate view angle kicks +// + ent = &cl_entities[cl.viewentity]; + + VectorSubtract (from, ent->origin, from); + VectorNormalize (from); + + AngleVectors (ent->angles, forward, right, up); + + side = DotProduct (from, right); + v_dmg_roll = count*side*v_kickroll.value; + + side = DotProduct (from, forward); + v_dmg_pitch = count*side*v_kickpitch.value; + + v_dmg_time = v_kicktime.value; +} + + +/* +================== +V_cshift_f +================== +*/ +void V_cshift_f (void) +{ + cshift_empty.destcolor[0] = atoi(Cmd_Argv(1)); + cshift_empty.destcolor[1] = atoi(Cmd_Argv(2)); + cshift_empty.destcolor[2] = atoi(Cmd_Argv(3)); + cshift_empty.percent = atoi(Cmd_Argv(4)); +} + + +/* +================== +V_BonusFlash_f + +When you run over an item, the server sends this command +================== +*/ +void V_BonusFlash_f (void) +{ + cl.cshifts[CSHIFT_BONUS].destcolor[0] = 215; + cl.cshifts[CSHIFT_BONUS].destcolor[1] = 186; + cl.cshifts[CSHIFT_BONUS].destcolor[2] = 69; + cl.cshifts[CSHIFT_BONUS].percent = 50; +} + +/* +============= +V_SetContentsColor + +Underwater, lava, etc each has a color shift +============= +*/ +void V_SetContentsColor (int contents) +{ + switch (contents) + { + case CONTENTS_EMPTY: + case CONTENTS_SOLID: + case CONTENTS_SKY: //johnfitz -- no blend in sky + cl.cshifts[CSHIFT_CONTENTS] = cshift_empty; + break; + case CONTENTS_LAVA: + cl.cshifts[CSHIFT_CONTENTS] = cshift_lava; + break; + case CONTENTS_SLIME: + cl.cshifts[CSHIFT_CONTENTS] = cshift_slime; + break; + default: + cl.cshifts[CSHIFT_CONTENTS] = cshift_water; + } +} + +/* +============= +V_CalcPowerupCshift +============= +*/ +void V_CalcPowerupCshift (void) +{ + if (cl.items & IT_QUAD) + { + cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 0; + cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 0; + cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 255; + cl.cshifts[CSHIFT_POWERUP].percent = 30; + } + else if (cl.items & IT_SUIT) + { + cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 0; + cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 255; + cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 0; + cl.cshifts[CSHIFT_POWERUP].percent = 20; + } + else if (cl.items & IT_INVISIBILITY) + { + cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 100; + cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 100; + cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 100; + cl.cshifts[CSHIFT_POWERUP].percent = 100; + } + else if (cl.items & IT_INVULNERABILITY) + { + cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 255; + cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 255; + cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 0; + cl.cshifts[CSHIFT_POWERUP].percent = 30; + } + else + cl.cshifts[CSHIFT_POWERUP].percent = 0; +} + +/* +============= +V_CalcBlend +============= +*/ +void V_CalcBlend (void) +{ + float r, g, b, a, a2; + int j; + cvar_t *cshiftpercent_cvars[NUM_CSHIFTS] = { + &gl_cshiftpercent_contents, + &gl_cshiftpercent_damage, + &gl_cshiftpercent_bonus, + &gl_cshiftpercent_powerup + }; + + r = 0; + g = 0; + b = 0; + a = 0; + + for (j=0 ; j<NUM_CSHIFTS ; j++) + { + if (!gl_cshiftpercent.value) + continue; + + //johnfitz -- only apply leaf contents color shifts during intermission + if (cl.intermission && j != CSHIFT_CONTENTS) + continue; + //johnfitz + + a2 = ((cl.cshifts[j].percent * gl_cshiftpercent.value) / 100.0) / 255.0; + // QuakeSpasm -- also scale by the specific gl_cshiftpercent_* cvar + a2 *= (cshiftpercent_cvars[j]->value / 100.0); + // QuakeSpasm + if (!a2) + continue; + a = a + a2*(1-a); + a2 = a2/a; + r = r*(1-a2) + cl.cshifts[j].destcolor[0]*a2; + g = g*(1-a2) + cl.cshifts[j].destcolor[1]*a2; + b = b*(1-a2) + cl.cshifts[j].destcolor[2]*a2; + } + + v_blend[0] = r/255.0; + v_blend[1] = g/255.0; + v_blend[2] = b/255.0; + v_blend[3] = a; + if (v_blend[3] > 1) + v_blend[3] = 1; + if (v_blend[3] < 0) + v_blend[3] = 0; +} + +/* +============= +V_UpdateBlend -- johnfitz -- V_UpdatePalette cleaned up and renamed +============= +*/ +void V_UpdateBlend (void) +{ + int i, j; + qboolean blend_changed; + + V_CalcPowerupCshift (); + + blend_changed = false; + + for (i=0 ; i<NUM_CSHIFTS ; i++) + { + if (cl.cshifts[i].percent != cl.prev_cshifts[i].percent) + { + blend_changed = true; + cl.prev_cshifts[i].percent = cl.cshifts[i].percent; + } + for (j=0 ; j<3 ; j++) + if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j]) + { + blend_changed = true; + cl.prev_cshifts[i].destcolor[j] = cl.cshifts[i].destcolor[j]; + } + } + +// drop the damage value + cl.cshifts[CSHIFT_DAMAGE].percent -= host_frametime*150; + if (cl.cshifts[CSHIFT_DAMAGE].percent <= 0) + cl.cshifts[CSHIFT_DAMAGE].percent = 0; + +// drop the bonus value + cl.cshifts[CSHIFT_BONUS].percent -= host_frametime*100; + if (cl.cshifts[CSHIFT_BONUS].percent <= 0) + cl.cshifts[CSHIFT_BONUS].percent = 0; + + if (blend_changed) + V_CalcBlend (); +} + +/* +============ +V_PolyBlend -- johnfitz -- moved here from gl_rmain.c, and rewritten to use glOrtho +============ +*/ +void V_PolyBlend (void) +{ + if (!gl_polyblend.value || !v_blend[3]) + return; + + GL_DisableMultitexture(); + + glDisable (GL_ALPHA_TEST); + glDisable (GL_TEXTURE_2D); + glDisable (GL_DEPTH_TEST); + glEnable (GL_BLEND); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity (); + glOrtho (0, 1, 1, 0, -99999, 99999); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity (); + + glBegin (GL_QUADS); + + glColor4fv (v_blend); // inside glBegin / glEnd to workaround an AMD driver bug + + glVertex2f (0,0); + glVertex2f (1, 0); + glVertex2f (1, 1); + glVertex2f (0, 1); + glEnd (); + + glDisable (GL_BLEND); + glEnable (GL_DEPTH_TEST); + glEnable (GL_TEXTURE_2D); + glEnable (GL_ALPHA_TEST); +} + +/* +============================================================================== + + VIEW RENDERING + +============================================================================== +*/ + +float angledelta (float a) +{ + a = anglemod(a); + if (a > 180) + a -= 360; + return a; +} + +/* +================== +CalcGunAngle +================== +*/ +void CalcGunAngle (void) +{ + float yaw, pitch, move; + static float oldyaw = 0; + static float oldpitch = 0; + + yaw = r_refdef.viewangles[YAW]; + pitch = -r_refdef.viewangles[PITCH]; + + yaw = angledelta(yaw - r_refdef.viewangles[YAW]) * 0.4; + if (yaw > 10) + yaw = 10; + if (yaw < -10) + yaw = -10; + pitch = angledelta(-pitch - r_refdef.viewangles[PITCH]) * 0.4; + if (pitch > 10) + pitch = 10; + if (pitch < -10) + pitch = -10; + move = host_frametime*20; + if (yaw > oldyaw) + { + if (oldyaw + move < yaw) + yaw = oldyaw + move; + } + else + { + if (oldyaw - move > yaw) + yaw = oldyaw - move; + } + + if (pitch > oldpitch) + { + if (oldpitch + move < pitch) + pitch = oldpitch + move; + } + else + { + if (oldpitch - move > pitch) + pitch = oldpitch - move; + } + + oldyaw = yaw; + oldpitch = pitch; + + cl.viewent.angles[YAW] = r_refdef.viewangles[YAW] + yaw; + cl.viewent.angles[PITCH] = - (r_refdef.viewangles[PITCH] + pitch); + + cl.viewent.angles[ROLL] -= v_idlescale.value * sin(cl.time*v_iroll_cycle.value) * v_iroll_level.value; + cl.viewent.angles[PITCH] -= v_idlescale.value * sin(cl.time*v_ipitch_cycle.value) * v_ipitch_level.value; + cl.viewent.angles[YAW] -= v_idlescale.value * sin(cl.time*v_iyaw_cycle.value) * v_iyaw_level.value; +} + +/* +============== +V_BoundOffsets +============== +*/ +void V_BoundOffsets (void) +{ + entity_t *ent; + + ent = &cl_entities[cl.viewentity]; + +// absolutely bound refresh reletive to entity clipping hull +// so the view can never be inside a solid wall + + if (r_refdef.vieworg[0] < ent->origin[0] - 14) + r_refdef.vieworg[0] = ent->origin[0] - 14; + else if (r_refdef.vieworg[0] > ent->origin[0] + 14) + r_refdef.vieworg[0] = ent->origin[0] + 14; + if (r_refdef.vieworg[1] < ent->origin[1] - 14) + r_refdef.vieworg[1] = ent->origin[1] - 14; + else if (r_refdef.vieworg[1] > ent->origin[1] + 14) + r_refdef.vieworg[1] = ent->origin[1] + 14; + if (r_refdef.vieworg[2] < ent->origin[2] - 22) + r_refdef.vieworg[2] = ent->origin[2] - 22; + else if (r_refdef.vieworg[2] > ent->origin[2] + 30) + r_refdef.vieworg[2] = ent->origin[2] + 30; +} + +/* +============== +V_AddIdle + +Idle swaying +============== +*/ +void V_AddIdle (void) +{ + r_refdef.viewangles[ROLL] += v_idlescale.value * sin(cl.time*v_iroll_cycle.value) * v_iroll_level.value; + r_refdef.viewangles[PITCH] += v_idlescale.value * sin(cl.time*v_ipitch_cycle.value) * v_ipitch_level.value; + r_refdef.viewangles[YAW] += v_idlescale.value * sin(cl.time*v_iyaw_cycle.value) * v_iyaw_level.value; +} + + +/* +============== +V_CalcViewRoll + +Roll is induced by movement and damage +============== +*/ +void V_CalcViewRoll (void) +{ + float side; + + side = V_CalcRoll (cl_entities[cl.viewentity].angles, cl.velocity); + r_refdef.viewangles[ROLL] += side; + + if (v_dmg_time > 0) + { + r_refdef.viewangles[ROLL] += v_dmg_time/v_kicktime.value*v_dmg_roll; + r_refdef.viewangles[PITCH] += v_dmg_time/v_kicktime.value*v_dmg_pitch; + v_dmg_time -= host_frametime; + } + + if (cl.stats[STAT_HEALTH] <= 0) + { + r_refdef.viewangles[ROLL] = 80; // dead view angle + return; + } +} + +/* +================== +V_CalcIntermissionRefdef + +================== +*/ +void V_CalcIntermissionRefdef (void) +{ + entity_t *ent, *view; + float old; + +// ent is the player model (visible when out of body) + ent = &cl_entities[cl.viewentity]; +// view is the weapon model (only visible from inside body) + view = &cl.viewent; + + VectorCopy (ent->origin, r_refdef.vieworg); + VectorCopy (ent->angles, r_refdef.viewangles); + view->model = NULL; + +// allways idle in intermission + old = v_idlescale.value; + v_idlescale.value = 1; + V_AddIdle (); + v_idlescale.value = old; +} + +/* +================== +V_CalcRefdef +================== +*/ +void V_CalcRefdef (void) +{ + entity_t *ent, *view; + int i; + vec3_t forward, right, up; + vec3_t angles; + float bob; + static float oldz = 0; + static vec3_t punch = {0,0,0}; //johnfitz -- v_gunkick + float delta; //johnfitz -- v_gunkick + + V_DriftPitch (); + +// ent is the player model (visible when out of body) + ent = &cl_entities[cl.viewentity]; +// view is the weapon model (only visible from inside body) + view = &cl.viewent; + + +// transform the view offset by the model's matrix to get the offset from +// model origin for the view + ent->angles[YAW] = cl.viewangles[YAW]; // the model should face the view dir + ent->angles[PITCH] = -cl.viewangles[PITCH]; // the model should face the view dir + + bob = V_CalcBob (); + +// refresh position + VectorCopy (ent->origin, r_refdef.vieworg); + r_refdef.vieworg[2] += cl.viewheight + bob; + +// never let it sit exactly on a node line, because a water plane can +// dissapear when viewed with the eye exactly on it. +// the server protocol only specifies to 1/16 pixel, so add 1/32 in each axis + r_refdef.vieworg[0] += 1.0/32; + r_refdef.vieworg[1] += 1.0/32; + r_refdef.vieworg[2] += 1.0/32; + + VectorCopy (cl.viewangles, r_refdef.viewangles); + V_CalcViewRoll (); + V_AddIdle (); + +// offsets + angles[PITCH] = -ent->angles[PITCH]; // because entity pitches are actually backward + angles[YAW] = ent->angles[YAW]; + angles[ROLL] = ent->angles[ROLL]; + + AngleVectors (angles, forward, right, up); + + if (cl.maxclients <= 1) //johnfitz -- moved cheat-protection here from V_RenderView + for (i=0 ; i<3 ; i++) + r_refdef.vieworg[i] += scr_ofsx.value*forward[i] + scr_ofsy.value*right[i] + scr_ofsz.value*up[i]; + + V_BoundOffsets (); + +// set up gun position + VectorCopy (cl.viewangles, view->angles); + + CalcGunAngle (); + + VectorCopy (ent->origin, view->origin); + view->origin[2] += cl.viewheight; + + for (i=0 ; i<3 ; i++) + view->origin[i] += forward[i]*bob*0.4; + view->origin[2] += bob; + + //johnfitz -- removed all gun position fudging code (was used to keep gun from getting covered by sbar) + //MarkV -- restored this with r_viewmodel_quake cvar + if (r_viewmodel_quake.value) + { + if (scr_viewsize.value == 110) + view->origin[2] += 1; + else if (scr_viewsize.value == 100) + view->origin[2] += 2; + else if (scr_viewsize.value == 90) + view->origin[2] += 1; + else if (scr_viewsize.value == 80) + view->origin[2] += 0.5; + } + + if (ent->lerpflags & LERP_FINISH) + { + view->lerpflags |= LERP_FINISH; + view->lerpfinish = ent->lerpfinish; + } + else + view->lerpflags &= ~LERP_FINISH; + + view->model = cl.model_precache[cl.stats[STAT_WEAPON]]; + view->frame = cl.stats[STAT_WEAPONFRAME]; + view->colormap = vid.colormap; + view->scale = ENTSCALE_DEFAULT; + +//johnfitz -- v_gunkick + if (v_gunkick.value == 1) //original quake kick + VectorAdd (r_refdef.viewangles, cl.punchangle, r_refdef.viewangles); + if (v_gunkick.value == 2) //lerped kick + { + for (i=0; i<3; i++) + if (punch[i] != v_punchangles[0][i]) + { + //speed determined by how far we need to lerp in 1/10th of a second + delta = (v_punchangles[0][i]-v_punchangles[1][i]) * host_frametime * 10; + + if (delta > 0) + punch[i] = q_min(punch[i]+delta, v_punchangles[0][i]); + else if (delta < 0) + punch[i] = q_max(punch[i]+delta, v_punchangles[0][i]); + } + + VectorAdd (r_refdef.viewangles, punch, r_refdef.viewangles); + } +//johnfitz + +// smooth out stair step ups + if (!noclip_anglehack && cl.onground && ent->origin[2] - oldz > 0) //johnfitz -- added exception for noclip + //FIXME: noclip_anglehack is set on the server, so in a nonlocal game this won't work. + { + float steptime; + + steptime = cl.time - cl.oldtime; + if (steptime < 0) + //FIXME I_Error ("steptime < 0"); + steptime = 0; + + oldz += steptime * 80; + if (oldz > ent->origin[2]) + oldz = ent->origin[2]; + if (ent->origin[2] - oldz > 12) + oldz = ent->origin[2] - 12; + r_refdef.vieworg[2] += oldz - ent->origin[2]; + view->origin[2] += oldz - ent->origin[2]; + } + else + oldz = ent->origin[2]; + + if (chase_active.value) + Chase_UpdateForDrawing (); //johnfitz +} + +/* +================== +V_RestoreAngles + +Resets the viewentity angles to the last values received from the server +(undoing the manual adjustments performed by V_CalcRefdef) +================== +*/ +void V_RestoreAngles (void) +{ + entity_t *ent = &cl_entities[cl.viewentity]; + VectorCopy (ent->msg_angles[0], ent->angles); +} + +/* +================== +V_RenderView + +The player's clipping box goes from (-16 -16 -24) to (16 16 32) from +the entity origin, so any view position inside that will be valid +================== +*/ +extern vrect_t scr_vrect; + +void V_RenderView (void) +{ + if (con_forcedup) + return; + + if (cl.intermission) + V_CalcIntermissionRefdef (); + else if (!cl.paused /* && (cl.maxclients > 1 || key_dest == key_game) */) + V_CalcRefdef (); + + //johnfitz -- removed lcd code + + R_RenderView (); + + V_PolyBlend (); //johnfitz -- moved here from R_Renderview (); +} + +/* +============================================================================== + + INIT + +============================================================================== +*/ + +/* +============= +V_Init +============= +*/ +void V_Init (void) +{ + Cmd_AddCommand ("v_cshift", V_cshift_f); + Cmd_AddCommand ("bf", V_BonusFlash_f); + Cmd_AddCommand ("centerview", V_StartPitchDrift); + + Cvar_RegisterVariable (&v_centermove); + Cvar_RegisterVariable (&v_centerspeed); + + Cvar_RegisterVariable (&v_iyaw_cycle); + Cvar_RegisterVariable (&v_iroll_cycle); + Cvar_RegisterVariable (&v_ipitch_cycle); + Cvar_RegisterVariable (&v_iyaw_level); + Cvar_RegisterVariable (&v_iroll_level); + Cvar_RegisterVariable (&v_ipitch_level); + + Cvar_RegisterVariable (&v_idlescale); + Cvar_RegisterVariable (&crosshair); + Cvar_RegisterVariable (&gl_cshiftpercent); + Cvar_RegisterVariable (&gl_cshiftpercent_contents); // QuakeSpasm + Cvar_RegisterVariable (&gl_cshiftpercent_damage); // QuakeSpasm + Cvar_RegisterVariable (&gl_cshiftpercent_bonus); // QuakeSpasm + Cvar_RegisterVariable (&gl_cshiftpercent_powerup); // QuakeSpasm + + Cvar_RegisterVariable (&scr_ofsx); + Cvar_RegisterVariable (&scr_ofsy); + Cvar_RegisterVariable (&scr_ofsz); + Cvar_RegisterVariable (&cl_rollspeed); + Cvar_RegisterVariable (&cl_rollangle); + Cvar_RegisterVariable (&cl_bob); + Cvar_RegisterVariable (&cl_bobcycle); + Cvar_RegisterVariable (&cl_bobup); + + Cvar_RegisterVariable (&v_kicktime); + Cvar_RegisterVariable (&v_kickroll); + Cvar_RegisterVariable (&v_kickpitch); + Cvar_RegisterVariable (&v_gunkick); //johnfitz + + Cvar_RegisterVariable (&r_viewmodel_quake); //MarkV +} + diff --git a/Quake/view.h b/Quake/view.h new file mode 100644 index 0000000..32d683b --- /dev/null +++ b/Quake/view.h @@ -0,0 +1,40 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_VIEW_H +#define _QUAKE_VIEW_H + +extern cvar_t vid_gamma; +extern cvar_t vid_contrast; + +extern float v_blend[4]; + +void V_Init (void); +void V_RenderView (void); +void V_CalcBlend (void); +void V_UpdateBlend (void); +float V_CalcRoll (vec3_t angles, vec3_t velocity); +void V_RestoreAngles (void); +//void V_UpdatePalette (void); //johnfitz + +#endif /* _QUAKE_VIEW_H */ + diff --git a/Quake/wad.c b/Quake/wad.c new file mode 100644 index 0000000..9cc329b --- /dev/null +++ b/Quake/wad.c @@ -0,0 +1,370 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// wad.c + +#include "quakedef.h" + +int wad_numlumps; +lumpinfo_t *wad_lumps; +byte *wad_base = NULL; + +void SwapPic (qpic_t *pic); + +/* +================== +W_CleanupName + +Lowercases name and pads with spaces and a terminating 0 to the length of +lumpinfo_t->name. +Used so lumpname lookups can proceed rapidly by comparing 4 chars at a time +Space padding is so names can be printed nicely in tables. +Can safely be performed in place. +================== +*/ +void W_CleanupName (const char *in, char *out) +{ + int i; + int c; + + for (i=0 ; i<16 ; i++ ) + { + c = in[i]; + if (!c) + break; + + if (c >= 'A' && c <= 'Z') + c += ('a' - 'A'); + out[i] = c; + } + + for ( ; i< 16 ; i++ ) + out[i] = 0; +} + +/* +==================== +W_LoadWadFile +==================== +*/ +void W_LoadWadFile (void) //johnfitz -- filename is now hard-coded for honesty +{ + lumpinfo_t *lump_p; + wadinfo_t *header; + int i; + int infotableofs; + const char *filename = WADFILENAME; + + //johnfitz -- modified to use malloc + //TODO: use cache_alloc + if (wad_base) + free (wad_base); + wad_base = COM_LoadMallocFile (filename, NULL); + if (!wad_base) + Sys_Error ("W_LoadWadFile: couldn't load %s\n\n" + "Basedir is: %s\n\n" + "Check that this has an " GAMENAME " subdirectory containing pak0.pak and pak1.pak, " + "or use the -basedir command-line option to specify another directory.", + filename, com_basedir); + + header = (wadinfo_t *)wad_base; + + if (header->identification[0] != 'W' || header->identification[1] != 'A' + || header->identification[2] != 'D' || header->identification[3] != '2') + Sys_Error ("Wad file %s doesn't have WAD2 id\n",filename); + + wad_numlumps = LittleLong(header->numlumps); + infotableofs = LittleLong(header->infotableofs); + wad_lumps = (lumpinfo_t *)(wad_base + infotableofs); + + for (i=0, lump_p = wad_lumps ; i<wad_numlumps ; i++,lump_p++) + { + lump_p->filepos = LittleLong(lump_p->filepos); + lump_p->size = LittleLong(lump_p->size); + W_CleanupName (lump_p->name, lump_p->name); // CAUTION: in-place editing!!! + if (lump_p->type == TYP_QPIC) + SwapPic ( (qpic_t *)(wad_base + lump_p->filepos)); + } +} + + +/* +============= +W_GetLumpinfo +============= +*/ +static lumpinfo_t *W_GetLumpinfo (lumpinfo_t *lumps, int numlumps, const char *name) +{ + int i; + lumpinfo_t *lump_p; + char clean[16]; + + W_CleanupName (name, clean); + + for (lump_p=lumps, i=0 ; i<numlumps ; i++,lump_p++) + { + if (!strcmp(clean, lump_p->name)) + return lump_p; + } + + Con_SafePrintf ("W_GetLumpinfo: %s not found\n", name); //johnfitz -- was Sys_Error + return NULL; +} + +void *W_GetLumpName (const char *name) +{ + lumpinfo_t *lump; + + lump = W_GetLumpinfo (wad_lumps, wad_numlumps, name); + + if (!lump) return NULL; //johnfitz + + return (void *)(wad_base + lump->filepos); +} + +void *W_GetLumpNum (int num) +{ + lumpinfo_t *lump; + + if (num < 0 || num > wad_numlumps) + Sys_Error ("W_GetLumpNum: bad number: %i", num); + + lump = wad_lumps + num; + + return (void *)(wad_base + lump->filepos); +} + +/* +================= +W_OpenWadFile +================= +*/ +static qboolean W_OpenWadFile (const char *filename, fshandle_t *fh) +{ + FILE *f; + long length; + + length = (long)COM_FOpenFile (filename, &f, NULL); + if (length == -1) + return false; + + fh->file = f; + fh->start = ftell (f); + fh->pos = 0; + fh->length = length; + fh->pak = file_from_pak; + return true; +} + +/* +================= +W_AddWadFile +================= +*/ +static wad_t *W_AddWadFile (const char *name, fshandle_t *fh) +{ + int i, id, numlumps, infotableofs, disksize; + wadinfo_t header; + lumpinfo_t *lumps, *info; + wad_t *wad; + + FS_fread ((void *)&header, 1, sizeof (header), fh); + + id = LittleLong (header.identification[0] | (header.identification[1] << 8) + | (header.identification[2] << 16) | (header.identification[3] << 24)); + if (id != WADID && id != WADID_VALVE) + { + Con_Warning ("%s is not a valid WAD\n", name); + return NULL; + } + + numlumps = LittleLong (header.numlumps); + infotableofs = LittleLong (header.infotableofs); + + if (numlumps < 0 || infotableofs < 0) + { + Con_Warning ("%s is not a valid WAD (%i lumps, %i info table offset)\n", name, numlumps, infotableofs); + return NULL; + } + if (!numlumps) + { + Con_DPrintf2 ("WAD file %s has no lumps, ignored\n", name); + return NULL; + } + + lumps = (lumpinfo_t *)malloc (numlumps * sizeof (lumpinfo_t)); + + FS_fseek (fh, infotableofs, SEEK_SET); + FS_fread (lumps, 1, numlumps * sizeof (lumpinfo_t), fh); + + // parse the directory + for (i = 0, info = lumps; i < numlumps; i++, info++) + { + W_CleanupName (info->name, info->name); + info->filepos = LittleLong (info->filepos); + info->size = LittleLong (info->size); + disksize = LittleLong (info->disksize); + + if (info->filepos + info->size > fh->length && !(info->filepos + disksize > fh->length)) + info->size = disksize; + + // ensure lump sanity + if (info->filepos < 0 || info->size < 0 || info->filepos + info->size > fh->length) + { + if (info->filepos > fh->length || info->size < 0) + { + Con_Warning ("WAD file %s lump \"%.16s\" begins %li bytes beyond end of WAD\n", name, info->name, info->filepos - fh->length); + + info->filepos = 0; + info->size = q_max (0, info->size - info->filepos); + } + else + { + Con_Warning ( + "WAD file %s lump \"%.16s\" extends %li bytes beyond end of WAD (lump size is %i)\n", name, info->name, + (info->filepos + info->size) - fh->length, info->size); + + info->size = q_max (0, info->size - info->filepos); + } + } + } + + wad = (wad_t *)malloc (sizeof (wad_t)); + q_strlcpy (wad->name, name, sizeof (wad->name)); + wad->id = id; + wad->fh = *fh; + wad->numlumps = numlumps; + wad->lumps = lumps; + + Con_DPrintf ("%s\n", name); + return wad; +} + +/* +================= +W_LoadWadList +================= +*/ +wad_t *W_LoadWadList (const char *names) +{ + char *newnames = q_strdup (names); + char *name, *e; + wad_t *wad, *wads = NULL; + char filename[MAX_QPATH]; + fshandle_t fh; + + for (name = newnames; name && *name;) + { + e = strchr (name, ';'); + if (e) + *e++ = 0; + + // remove all of the leading garbage left by the map editor + COM_FileBase (name, filename, sizeof (filename)); + COM_AddExtension (filename, ".wad", sizeof (filename)); + + if (!W_OpenWadFile (filename, &fh)) + { + // try the "gfx" directory + memmove (filename + 4, filename, sizeof (filename) - 4); + memcpy (filename, "gfx/", 4); + filename[sizeof (filename) - 1] = 0; + + if (!W_OpenWadFile (filename, &fh)) + { + name = e; + continue; + } + } + + wad = W_AddWadFile (filename, &fh); + if (wad) + { + wad->next = wads; + wads = wad; + } + else + FS_fclose (&fh); + + name = e; + } + free (newnames); + + return wads; +} + +/* +================= +W_FreeWadList +================= +*/ +void W_FreeWadList (wad_t *wads) +{ + wad_t *next; + + while (wads) + { + FS_fclose (&wads->fh); + free (wads->lumps); + + next = wads->next; + free (wads); + wads = next; + } +} + +/* +================= +W_GetLumpinfoList +================= +*/ +lumpinfo_t *W_GetLumpinfoList (wad_t *wads, const char *name, wad_t **out_wad) +{ + lumpinfo_t *info; + + while (wads) + { + info = W_GetLumpinfo (wads->lumps, wads->numlumps, name); + if (info) + { + *out_wad = wads; + return info; + } + + wads = wads->next; + } + + return NULL; +} + +/* +============================================================================= + +automatic byte swapping + +============================================================================= +*/ + +void SwapPic (qpic_t *pic) +{ + pic->width = LittleLong(pic->width); + pic->height = LittleLong(pic->height); +} diff --git a/Quake/wad.h b/Quake/wad.h new file mode 100644 index 0000000..856d34c --- /dev/null +++ b/Quake/wad.h @@ -0,0 +1,99 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_WAD_H +#define _QUAKE_WAD_H + +//=============== +// TYPES +//=============== + +#define CMP_NONE 0 +#define CMP_LZSS 1 + +#define TYP_NONE 0 +#define TYP_LABEL 1 + +#define TYP_LUMPY 64 // 64 + grab command number +#define TYP_PALETTE 64 +#define TYP_QTEX 65 +#define TYP_QPIC 66 +#define TYP_SOUND 67 +#define TYP_MIPTEX_PALETTE 67 +#define TYP_MIPTEX 68 + +#define WADID ('W' | ('A' << 8) | ('D' << 16) | ('2' << 24)) +#define WADID_VALVE ('W' | ('A' << 8) | ('D' << 16) | ('3' << 24)) + +#define WADFILENAME "gfx.wad" //johnfitz -- filename is now hard-coded for honesty + +typedef struct +{ + int width, height; + byte data[4]; // variably sized +} qpic_t; + +typedef struct +{ + char identification[4]; // should be WAD2 or 2DAW + int numlumps; + int infotableofs; +} wadinfo_t; + +typedef struct +{ + int filepos; + int disksize; + int size; // uncompressed + char type; + char compression; + char pad1, pad2; + char name[16]; // must be null terminated +} lumpinfo_t; + +typedef struct wad_s +{ + char name[MAX_QPATH]; + int id; + fshandle_t fh; + int numlumps; + lumpinfo_t *lumps; + struct wad_s *next; +} wad_t; + +extern int wad_numlumps; +extern lumpinfo_t *wad_lumps; +extern byte *wad_base; + +void W_LoadWadFile (void); //johnfitz -- filename is now hard-coded for honesty +void W_CleanupName (const char *in, char *out); +void *W_GetLumpName (const char *name); +void *W_GetLumpNum (int num); + +wad_t *W_LoadWadList (const char *names); +void W_FreeWadList (wad_t *wads); +lumpinfo_t *W_GetLumpinfoList (wad_t *wads, const char *name, wad_t **out_wad); + +void SwapPic (qpic_t *pic); + +#endif /* _QUAKE_WAD_H */ + diff --git a/Quake/world.c b/Quake/world.c new file mode 100644 index 0000000..2f0e173 --- /dev/null +++ b/Quake/world.c @@ -0,0 +1,937 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2007-2008 Kristian Duske +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// world.c -- world query functions + +#include "quakedef.h" + +/* + +entities never clip against themselves, or their owner + +line of sight checks trace->crosscontent, but bullets don't + +*/ + + +typedef struct +{ + vec3_t boxmins, boxmaxs;// enclose the test object along entire move + float *mins, *maxs; // size of the moving object + vec3_t mins2, maxs2; // size when clipping against mosnters + float *start, *end; + trace_t trace; + int type; + edict_t *passedict; +} moveclip_t; + + +int SV_HullPointContents (hull_t *hull, int num, vec3_t p); + +/* +=============================================================================== + +HULL BOXES + +=============================================================================== +*/ + + +static hull_t box_hull; +static mclipnode_t box_clipnodes[6]; //johnfitz -- was dclipnode_t +static mplane_t box_planes[6]; + +/* +=================== +SV_InitBoxHull + +Set up the planes and clipnodes so that the six floats of a bounding box +can just be stored out and get a proper hull_t structure. +=================== +*/ +void SV_InitBoxHull (void) +{ + int i; + int side; + + box_hull.clipnodes = box_clipnodes; + box_hull.planes = box_planes; + box_hull.firstclipnode = 0; + box_hull.lastclipnode = 5; + + for (i=0 ; i<6 ; i++) + { + box_clipnodes[i].planenum = i; + + side = i&1; + + box_clipnodes[i].children[side] = CONTENTS_EMPTY; + if (i != 5) + box_clipnodes[i].children[side^1] = i + 1; + else + box_clipnodes[i].children[side^1] = CONTENTS_SOLID; + + box_planes[i].type = i>>1; + box_planes[i].normal[i>>1] = 1; + } + +} + + +/* +=================== +SV_HullForBox + +To keep everything totally uniform, bounding boxes are turned into small +BSP trees instead of being compared directly. +=================== +*/ +hull_t *SV_HullForBox (vec3_t mins, vec3_t maxs) +{ + box_planes[0].dist = maxs[0]; + box_planes[1].dist = mins[0]; + box_planes[2].dist = maxs[1]; + box_planes[3].dist = mins[1]; + box_planes[4].dist = maxs[2]; + box_planes[5].dist = mins[2]; + + return &box_hull; +} + + + +/* +================ +SV_HullForEntity + +Returns a hull that can be used for testing or clipping an object of mins/maxs +size. +Offset is filled in to contain the adjustment that must be added to the +testing object's origin to get a point to use with the returned hull. +================ +*/ +hull_t *SV_HullForEntity (edict_t *ent, vec3_t mins, vec3_t maxs, vec3_t offset) +{ + qmodel_t *model; + vec3_t size; + vec3_t hullmins, hullmaxs; + hull_t *hull; + +// decide which clipping hull to use, based on the size + if (ent->v.solid == SOLID_BSP) + { // explicit hulls in the BSP model + if (ent->v.movetype != MOVETYPE_PUSH) + Host_Error ("SOLID_BSP without MOVETYPE_PUSH (%s at %f %f %f)", + PR_GetString(ent->v.classname), ent->v.origin[0], ent->v.origin[1], ent->v.origin[2]); + + model = sv.models[ (int)ent->v.modelindex ]; + + if (!model || model->type != mod_brush) + Host_Error ("SOLID_BSP with a non bsp model (%s at %f %f %f)", + PR_GetString(ent->v.classname), ent->v.origin[0], ent->v.origin[1], ent->v.origin[2]); + + VectorSubtract (maxs, mins, size); + if (size[0] < 3) + hull = &model->hulls[0]; + else if (size[0] <= 32) + hull = &model->hulls[1]; + else + hull = &model->hulls[2]; + +// calculate an offset value to center the origin + VectorSubtract (hull->clip_mins, mins, offset); + VectorAdd (offset, ent->v.origin, offset); + } + else + { // create a temp hull from bounding box sizes + + VectorSubtract (ent->v.mins, maxs, hullmins); + VectorSubtract (ent->v.maxs, mins, hullmaxs); + hull = SV_HullForBox (hullmins, hullmaxs); + + VectorCopy (ent->v.origin, offset); + } + + + return hull; +} + +/* +=============================================================================== + +ENTITY AREA CHECKING + +=============================================================================== +*/ + +typedef struct areanode_s +{ + int axis; // -1 = leaf node + float dist; + struct areanode_s *children[2]; + link_t trigger_edicts; + link_t solid_edicts; +} areanode_t; + +#define AREA_DEPTH 4 +#define AREA_NODES 32 + +static areanode_t sv_areanodes[AREA_NODES]; +static int sv_numareanodes; + +/* +=============== +SV_CreateAreaNode + +=============== +*/ +areanode_t *SV_CreateAreaNode (int depth, vec3_t mins, vec3_t maxs) +{ + areanode_t *anode; + vec3_t size; + vec3_t mins1, maxs1, mins2, maxs2; + + anode = &sv_areanodes[sv_numareanodes]; + sv_numareanodes++; + + ClearLink (&anode->trigger_edicts); + ClearLink (&anode->solid_edicts); + + if (depth == AREA_DEPTH) + { + anode->axis = -1; + anode->children[0] = anode->children[1] = NULL; + return anode; + } + + VectorSubtract (maxs, mins, size); + if (size[0] > size[1]) + anode->axis = 0; + else + anode->axis = 1; + + anode->dist = 0.5 * (maxs[anode->axis] + mins[anode->axis]); + VectorCopy (mins, mins1); + VectorCopy (mins, mins2); + VectorCopy (maxs, maxs1); + VectorCopy (maxs, maxs2); + + maxs1[anode->axis] = mins2[anode->axis] = anode->dist; + + anode->children[0] = SV_CreateAreaNode (depth+1, mins2, maxs2); + anode->children[1] = SV_CreateAreaNode (depth+1, mins1, maxs1); + + return anode; +} + +/* +=============== +SV_ClearWorld + +=============== +*/ +void SV_ClearWorld (void) +{ + SV_InitBoxHull (); + + memset (sv_areanodes, 0, sizeof(sv_areanodes)); + sv_numareanodes = 0; + SV_CreateAreaNode (0, sv.worldmodel->mins, sv.worldmodel->maxs); +} + + +/* +=============== +SV_UnlinkEdict + +=============== +*/ +void SV_UnlinkEdict (edict_t *ent) +{ + if (!ent->area.prev) + return; // not linked in anywhere + RemoveLink (&ent->area); + ent->area.prev = ent->area.next = NULL; +} + + +/* +==================== +SV_AreaTriggerEdicts + +Spike -- just builds a list of entities within the area, rather than walking +them and risking the list getting corrupt. +==================== +*/ +static void +SV_AreaTriggerEdicts ( edict_t *ent, areanode_t *node, edict_t **list, int *listcount, const int listspace ) +{ + link_t *l, *next; + edict_t *touch; + +// touch linked edicts + for (l = node->trigger_edicts.next ; l != &node->trigger_edicts ; l = next) + { + next = l->next; + touch = EDICT_FROM_AREA(l); + if (touch == ent) + continue; + if (!touch->v.touch || touch->v.solid != SOLID_TRIGGER) + continue; + if (ent->v.absmin[0] > touch->v.absmax[0] + || ent->v.absmin[1] > touch->v.absmax[1] + || ent->v.absmin[2] > touch->v.absmax[2] + || ent->v.absmax[0] < touch->v.absmin[0] + || ent->v.absmax[1] < touch->v.absmin[1] + || ent->v.absmax[2] < touch->v.absmin[2] ) + continue; + + if (*listcount == listspace) + return; // should never happen + + list[*listcount] = touch; + (*listcount)++; + } + +// recurse down both sides + if (node->axis == -1) + return; + + if ( ent->v.absmax[node->axis] > node->dist ) + SV_AreaTriggerEdicts ( ent, node->children[0], list, listcount, listspace ); + if ( ent->v.absmin[node->axis] < node->dist ) + SV_AreaTriggerEdicts ( ent, node->children[1], list, listcount, listspace ); +} + +/* +==================== +SV_TouchLinks + +ericw -- copy the touching edicts to an array (on the hunk) so we can avoid +iteating the trigger_edicts linked list while calling PR_ExecuteProgram +which could potentially corrupt the list while it's being iterated. +Based on code from Spike. +==================== +*/ +void SV_TouchLinks (edict_t *ent) +{ + edict_t **list; + edict_t *touch; + int old_self, old_other; + int i, listcount; + int mark; + + mark = Hunk_LowMark (); + list = (edict_t **) Hunk_Alloc (sv.num_edicts*sizeof(edict_t *)); + + listcount = 0; + SV_AreaTriggerEdicts (ent, sv_areanodes, list, &listcount, sv.num_edicts); + + for (i = 0; i < listcount; i++) + { + touch = list[i]; + // re-validate in case of PR_ExecuteProgram having side effects that make + // edicts later in the list no longer touch + if (touch == ent) + continue; + if (!touch->v.touch || touch->v.solid != SOLID_TRIGGER) + continue; + if (ent->v.absmin[0] > touch->v.absmax[0] + || ent->v.absmin[1] > touch->v.absmax[1] + || ent->v.absmin[2] > touch->v.absmax[2] + || ent->v.absmax[0] < touch->v.absmin[0] + || ent->v.absmax[1] < touch->v.absmin[1] + || ent->v.absmax[2] < touch->v.absmin[2] ) + continue; + old_self = pr_global_struct->self; + old_other = pr_global_struct->other; + + pr_global_struct->self = EDICT_TO_PROG(touch); + pr_global_struct->other = EDICT_TO_PROG(ent); + pr_global_struct->time = sv.time; + PR_ExecuteProgram (touch->v.touch); + + pr_global_struct->self = old_self; + pr_global_struct->other = old_other; + } + +// free hunk-allocated edicts array + Hunk_FreeToLowMark (mark); +} + + +/* +=============== +SV_FindTouchedLeafs + +=============== +*/ +void SV_FindTouchedLeafs (edict_t *ent, mnode_t *node) +{ + mplane_t *splitplane; + mleaf_t *leaf; + int sides; + int leafnum; + + if (node->contents == CONTENTS_SOLID) + return; + + if (ent->num_leafs == MAX_ENT_LEAFS) + return; + +// add an efrag if the node is a leaf + + if ( node->contents < 0) + { + leaf = (mleaf_t *)node; + leafnum = leaf - sv.worldmodel->leafs - 1; + + ent->leafnums[ent->num_leafs] = leafnum; + ent->num_leafs++; + return; + } + +// NODE_MIXED + + splitplane = node->plane; + sides = BOX_ON_PLANE_SIDE(ent->v.absmin, ent->v.absmax, splitplane); + +// recurse down the contacted sides + if (sides & 1) + SV_FindTouchedLeafs (ent, node->children[0]); + + if (sides & 2) + SV_FindTouchedLeafs (ent, node->children[1]); +} + +/* +=============== +SV_LinkEdict + +=============== +*/ +void SV_LinkEdict (edict_t *ent, qboolean touch_triggers) +{ + areanode_t *node; + + if (ent->area.prev) + SV_UnlinkEdict (ent); // unlink from old position + + if (ent == sv.edicts) + return; // don't add the world + + if (ent->free) + return; + +// set the abs box + VectorAdd (ent->v.origin, ent->v.mins, ent->v.absmin); + VectorAdd (ent->v.origin, ent->v.maxs, ent->v.absmax); + +// +// to make items easier to pick up and allow them to be grabbed off +// of shelves, the abs sizes are expanded +// + if ((int)ent->v.flags & FL_ITEM) + { + ent->v.absmin[0] -= 15; + ent->v.absmin[1] -= 15; + ent->v.absmax[0] += 15; + ent->v.absmax[1] += 15; + } + else + { // because movement is clipped an epsilon away from an actual edge, + // we must fully check even when bounding boxes don't quite touch + ent->v.absmin[0] -= 1; + ent->v.absmin[1] -= 1; + ent->v.absmin[2] -= 1; + ent->v.absmax[0] += 1; + ent->v.absmax[1] += 1; + ent->v.absmax[2] += 1; + } + +// link to PVS leafs + ent->num_leafs = 0; + if (ent->v.modelindex) + SV_FindTouchedLeafs (ent, sv.worldmodel->nodes); + + if (ent->v.solid == SOLID_NOT) + return; + +// find the first node that the ent's box crosses + node = sv_areanodes; + while (1) + { + if (node->axis == -1) + break; + if (ent->v.absmin[node->axis] > node->dist) + node = node->children[0]; + else if (ent->v.absmax[node->axis] < node->dist) + node = node->children[1]; + else + break; // crosses the node + } + +// link it in + + if (ent->v.solid == SOLID_TRIGGER) + InsertLinkBefore (&ent->area, &node->trigger_edicts); + else + InsertLinkBefore (&ent->area, &node->solid_edicts); + +// if touch_triggers, touch all entities at this node and decend for more + if (touch_triggers) + SV_TouchLinks ( ent ); +} + + + +/* +=============================================================================== + +POINT TESTING IN HULLS + +=============================================================================== +*/ + +/* +================== +SV_HullPointContents + +================== +*/ +int SV_HullPointContents (hull_t *hull, int num, vec3_t p) +{ + float d; + mclipnode_t *node; //johnfitz -- was dclipnode_t + mplane_t *plane; + + while (num >= 0) + { + if (num < hull->firstclipnode || num > hull->lastclipnode) + Sys_Error ("SV_HullPointContents: bad node number"); + + node = hull->clipnodes + num; + plane = hull->planes + node->planenum; + + if (plane->type < 3) + d = p[plane->type] - plane->dist; + else + d = DoublePrecisionDotProduct (plane->normal, p) - plane->dist; + if (d < 0) + num = node->children[1]; + else + num = node->children[0]; + } + + return num; +} + + +/* +================== +SV_PointContents + +================== +*/ +int SV_PointContents (vec3_t p) +{ + int cont; + + cont = SV_HullPointContents (&sv.worldmodel->hulls[0], 0, p); + if (cont <= CONTENTS_CURRENT_0 && cont >= CONTENTS_CURRENT_DOWN) + cont = CONTENTS_WATER; + return cont; +} + +int SV_TruePointContents (vec3_t p) +{ + return SV_HullPointContents (&sv.worldmodel->hulls[0], 0, p); +} + +//=========================================================================== + +/* +============ +SV_TestEntityPosition + +This could be a lot more efficient... +============ +*/ +edict_t *SV_TestEntityPosition (edict_t *ent) +{ + trace_t trace; + + trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, ent->v.origin, 0, ent); + + if (trace.startsolid) + return sv.edicts; + + return NULL; +} + + +/* +=============================================================================== + +LINE TESTING IN HULLS + +=============================================================================== +*/ + +/* +================== +SV_RecursiveHullCheck + +================== +*/ +qboolean SV_RecursiveHullCheck (hull_t *hull, int num, float p1f, float p2f, vec3_t p1, vec3_t p2, trace_t *trace) +{ + mclipnode_t *node; //johnfitz -- was dclipnode_t + mplane_t *plane; + float t1, t2; + float frac; + int i; + vec3_t mid; + int side; + float midf; + +// check for empty + if (num < 0) + { + if (num != CONTENTS_SOLID) + { + trace->allsolid = false; + if (num == CONTENTS_EMPTY) + trace->inopen = true; + else + trace->inwater = true; + } + else + trace->startsolid = true; + return true; // empty + } + + if (num < hull->firstclipnode || num > hull->lastclipnode) + Sys_Error ("SV_RecursiveHullCheck: bad node number"); + +// +// find the point distances +// + node = hull->clipnodes + num; + plane = hull->planes + node->planenum; + + if (plane->type < 3) + { + t1 = p1[plane->type] - plane->dist; + t2 = p2[plane->type] - plane->dist; + } + else + { + t1 = DoublePrecisionDotProduct (plane->normal, p1) - plane->dist; + t2 = DoublePrecisionDotProduct (plane->normal, p2) - plane->dist; + } + +#if 1 + if (t1 >= 0 && t2 >= 0) + return SV_RecursiveHullCheck (hull, node->children[0], p1f, p2f, p1, p2, trace); + if (t1 < 0 && t2 < 0) + return SV_RecursiveHullCheck (hull, node->children[1], p1f, p2f, p1, p2, trace); +#else + if ( (t1 >= DIST_EPSILON && t2 >= DIST_EPSILON) || (t2 > t1 && t1 >= 0) ) + return SV_RecursiveHullCheck (hull, node->children[0], p1f, p2f, p1, p2, trace); + if ( (t1 <= -DIST_EPSILON && t2 <= -DIST_EPSILON) || (t2 < t1 && t1 <= 0) ) + return SV_RecursiveHullCheck (hull, node->children[1], p1f, p2f, p1, p2, trace); +#endif + +// put the crosspoint DIST_EPSILON pixels on the near side + if (t1 < 0) + frac = (t1 + DIST_EPSILON)/(t1-t2); + else + frac = (t1 - DIST_EPSILON)/(t1-t2); + if (frac < 0) + frac = 0; + if (frac > 1) + frac = 1; + + midf = p1f + (p2f - p1f)*frac; + for (i=0 ; i<3 ; i++) + mid[i] = p1[i] + frac*(p2[i] - p1[i]); + + side = (t1 < 0); + +// move up to the node + if (!SV_RecursiveHullCheck (hull, node->children[side], p1f, midf, p1, mid, trace) ) + return false; + +#ifdef PARANOID + if (SV_HullPointContents (sv_hullmodel, mid, node->children[side]) + == CONTENTS_SOLID) + { + Con_Printf ("mid PointInHullSolid\n"); + return false; + } +#endif + + if (SV_HullPointContents (hull, node->children[side^1], mid) + != CONTENTS_SOLID) +// go past the node + return SV_RecursiveHullCheck (hull, node->children[side^1], midf, p2f, mid, p2, trace); + + if (trace->allsolid) + return false; // never got out of the solid area + +//================== +// the other side of the node is solid, this is the impact point +//================== + if (!side) + { + VectorCopy (plane->normal, trace->plane.normal); + trace->plane.dist = plane->dist; + } + else + { + VectorSubtract (vec3_origin, plane->normal, trace->plane.normal); + trace->plane.dist = -plane->dist; + } + + while (SV_HullPointContents (hull, hull->firstclipnode, mid) + == CONTENTS_SOLID) + { // shouldn't really happen, but does occasionally + frac -= 0.1; + if (frac < 0) + { + trace->fraction = midf; + VectorCopy (mid, trace->endpos); + Con_DPrintf ("backup past 0\n"); + return false; + } + midf = p1f + (p2f - p1f)*frac; + for (i=0 ; i<3 ; i++) + mid[i] = p1[i] + frac*(p2[i] - p1[i]); + } + + trace->fraction = midf; + VectorCopy (mid, trace->endpos); + + return false; +} + + +/* +================== +SV_ClipMoveToEntity + +Handles selection or creation of a clipping hull, and offseting (and +eventually rotation) of the end points +================== +*/ +trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end) +{ + trace_t trace; + vec3_t offset; + vec3_t start_l, end_l; + hull_t *hull; + +// fill in a default trace + memset (&trace, 0, sizeof(trace_t)); + trace.fraction = 1; + trace.allsolid = true; + VectorCopy (end, trace.endpos); + +// get the clipping hull + hull = SV_HullForEntity (ent, mins, maxs, offset); + + VectorSubtract (start, offset, start_l); + VectorSubtract (end, offset, end_l); + +// trace a line through the apropriate clipping hull + SV_RecursiveHullCheck (hull, hull->firstclipnode, 0, 1, start_l, end_l, &trace); + +// fix trace up by the offset + if (trace.fraction != 1) + VectorAdd (trace.endpos, offset, trace.endpos); + +// did we clip the move? + if (trace.fraction < 1 || trace.startsolid ) + trace.ent = ent; + + return trace; +} + +//=========================================================================== + +/* +==================== +SV_ClipToLinks + +Mins and maxs enclose the entire area swept by the move +==================== +*/ +void SV_ClipToLinks ( areanode_t *node, moveclip_t *clip ) +{ + link_t *l, *next; + edict_t *touch; + trace_t trace; + +// touch linked edicts + for (l = node->solid_edicts.next ; l != &node->solid_edicts ; l = next) + { + next = l->next; + touch = EDICT_FROM_AREA(l); + if (touch->v.solid == SOLID_NOT) + continue; + if (touch == clip->passedict) + continue; + if (touch->v.solid == SOLID_TRIGGER) + Sys_Error ("Trigger in clipping list"); + + if (clip->type == MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP) + continue; + + if (clip->boxmins[0] > touch->v.absmax[0] + || clip->boxmins[1] > touch->v.absmax[1] + || clip->boxmins[2] > touch->v.absmax[2] + || clip->boxmaxs[0] < touch->v.absmin[0] + || clip->boxmaxs[1] < touch->v.absmin[1] + || clip->boxmaxs[2] < touch->v.absmin[2] ) + continue; + + if (clip->passedict && clip->passedict->v.size[0] && !touch->v.size[0]) + continue; // points never interact + + // might intersect, so do an exact clip + if (clip->trace.allsolid) + return; + if (clip->passedict) + { + if (PROG_TO_EDICT(touch->v.owner) == clip->passedict) + continue; // don't clip against own missiles + if (PROG_TO_EDICT(clip->passedict->v.owner) == touch) + continue; // don't clip against owner + } + + if ((int)touch->v.flags & FL_MONSTER) + trace = SV_ClipMoveToEntity (touch, clip->start, clip->mins2, clip->maxs2, clip->end); + else + trace = SV_ClipMoveToEntity (touch, clip->start, clip->mins, clip->maxs, clip->end); + if (trace.allsolid || trace.startsolid || + trace.fraction < clip->trace.fraction) + { + trace.ent = touch; + if (clip->trace.startsolid) + { + clip->trace = trace; + clip->trace.startsolid = true; + } + else + clip->trace = trace; + } + else if (trace.startsolid) + clip->trace.startsolid = true; + } + +// recurse down both sides + if (node->axis == -1) + return; + + if ( clip->boxmaxs[node->axis] > node->dist ) + SV_ClipToLinks ( node->children[0], clip ); + if ( clip->boxmins[node->axis] < node->dist ) + SV_ClipToLinks ( node->children[1], clip ); +} + + +/* +================== +SV_MoveBounds +================== +*/ +void SV_MoveBounds (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, vec3_t boxmins, vec3_t boxmaxs) +{ +#if 0 +// debug to test against everything +boxmins[0] = boxmins[1] = boxmins[2] = -9999; +boxmaxs[0] = boxmaxs[1] = boxmaxs[2] = 9999; +#else + int i; + + for (i=0 ; i<3 ; i++) + { + if (end[i] > start[i]) + { + boxmins[i] = start[i] + mins[i] - 1; + boxmaxs[i] = end[i] + maxs[i] + 1; + } + else + { + boxmins[i] = end[i] + mins[i] - 1; + boxmaxs[i] = start[i] + maxs[i] + 1; + } + } +#endif +} + +/* +================== +SV_Move +================== +*/ +trace_t SV_Move (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int type, edict_t *passedict) +{ + moveclip_t clip; + int i; + + memset ( &clip, 0, sizeof ( moveclip_t ) ); + +// clip to world + clip.trace = SV_ClipMoveToEntity ( sv.edicts, start, mins, maxs, end ); + + clip.start = start; + clip.end = end; + clip.mins = mins; + clip.maxs = maxs; + clip.type = type; + clip.passedict = passedict; + + if (type == MOVE_MISSILE) + { + for (i=0 ; i<3 ; i++) + { + clip.mins2[i] = -15; + clip.maxs2[i] = 15; + } + } + else + { + VectorCopy (mins, clip.mins2); + VectorCopy (maxs, clip.maxs2); + } + +// create the bounding box of the entire move + SV_MoveBounds ( start, clip.mins2, clip.maxs2, end, clip.boxmins, clip.boxmaxs ); + +// clip to entities + SV_ClipToLinks ( sv_areanodes, &clip ); + + return clip.trace; +} + diff --git a/Quake/world.h b/Quake/world.h new file mode 100644 index 0000000..fed90b0 --- /dev/null +++ b/Quake/world.h @@ -0,0 +1,87 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef _QUAKE_WORLD_H +#define _QUAKE_WORLD_H + +typedef struct +{ + vec3_t normal; + float dist; +} plane_t; + +typedef struct +{ + qboolean allsolid; // if true, plane is not valid + qboolean startsolid; // if true, the initial point was in a solid area + qboolean inopen, inwater; + float fraction; // time completed, 1.0 = didn't hit anything + vec3_t endpos; // final position + plane_t plane; // surface normal at impact + edict_t *ent; // entity the surface is on +} trace_t; + + +#define MOVE_NORMAL 0 +#define MOVE_NOMONSTERS 1 +#define MOVE_MISSILE 2 + + +void SV_ClearWorld (void); +// called after the world model has been loaded, before linking any entities + +void SV_UnlinkEdict (edict_t *ent); +// call before removing an entity, and before trying to move one, +// so it doesn't clip against itself +// flags ent->v.modified + +void SV_LinkEdict (edict_t *ent, qboolean touch_triggers); +// Needs to be called any time an entity changes origin, mins, maxs, or solid +// flags ent->v.modified +// sets ent->v.absmin and ent->v.absmax +// if touchtriggers, calls prog functions for the intersected triggers + +int SV_PointContents (vec3_t p); +int SV_TruePointContents (vec3_t p); +// returns the CONTENTS_* value from the world at the given point. +// does not check any entities at all +// the non-true version remaps the water current contents to content_water + +edict_t *SV_TestEntityPosition (edict_t *ent); + +trace_t SV_Move (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int type, edict_t *passedict); +// mins and maxs are reletive + +// if the entire move stays in a solid volume, trace.allsolid will be set + +// if the starting point is in a solid, it will be allowed to move out +// to an open area + +// nomonsters is used for line of sight or edge testing, where mosnters +// shouldn't be considered solid objects + +// passedict is explicitly excluded from clipping checks (normally NULL) + +qboolean SV_RecursiveHullCheck (hull_t *hull, int num, float p1f, float p2f, vec3_t p1, vec3_t p2, trace_t *trace); + +#endif /* _QUAKE_WORLD_H */ + diff --git a/Quake/wsaerror.h b/Quake/wsaerror.h new file mode 100644 index 0000000..b41a98e --- /dev/null +++ b/Quake/wsaerror.h @@ -0,0 +1,91 @@ + +/* strings for winsock error codes. + * from online references, such as + * http://aluigi.org/mytoolz/winerr.h + * http://www.winsock-error.com or + * http://www.sockets.com/err_lst1.htm + */ + +#ifndef __wsaerr_static +#define __wsaerr_static static +#endif /* static */ + +__wsaerr_static const char *__WSAE_StrError (int err) +{ + switch (err) + { + case 0: return "No error"; + case WSAEINTR: return "Interrupted system call"; /* 10004 */ + case WSAEBADF: return "Bad file number"; /* 10009 */ + case WSAEACCES: return "Permission denied"; /* 10013 */ + case WSAEFAULT: return "Bad address"; /* 10014 */ + case WSAEINVAL: return "Invalid argument (not bind)"; /* 10022 */ + case WSAEMFILE: return "Too many open files"; /* 10024 */ + case WSAEWOULDBLOCK: return "Operation would block"; /* 10035 */ + case WSAEINPROGRESS: return "Operation now in progress"; /* 10036 */ + case WSAEALREADY: return "Operation already in progress"; /* 10037 */ + case WSAENOTSOCK: return "Socket operation on non-socket"; /* 10038 */ + case WSAEDESTADDRREQ: return "Destination address required"; /* 10039 */ + case WSAEMSGSIZE: return "Message too long"; /* 10040 */ + case WSAEPROTOTYPE: return "Protocol wrong type for socket"; /* 10041 */ + case WSAENOPROTOOPT: return "Bad protocol option"; /* 10042 */ + case WSAEPROTONOSUPPORT: return "Protocol not supported"; /* 10043 */ + case WSAESOCKTNOSUPPORT: return "Socket type not supported"; /* 10044 */ + case WSAEOPNOTSUPP: return "Operation not supported on socket"; /* 10045 */ + case WSAEPFNOSUPPORT: return "Protocol family not supported"; /* 10046 */ + case WSAEAFNOSUPPORT: return "Address family not supported by protocol family"; /* 10047 */ + case WSAEADDRINUSE: return "Address already in use"; /* 10048 */ + case WSAEADDRNOTAVAIL: return "Can't assign requested address"; /* 10049 */ + case WSAENETDOWN: return "Network is down"; /* 10050 */ + case WSAENETUNREACH: return "Network is unreachable"; /* 10051 */ + case WSAENETRESET: return "Net dropped connection or reset"; /* 10052 */ + case WSAECONNABORTED: return "Software caused connection abort"; /* 10053 */ + case WSAECONNRESET: return "Connection reset by peer"; /* 10054 */ + case WSAENOBUFS: return "No buffer space available"; /* 10055 */ + case WSAEISCONN: return "Socket is already connected"; /* 10056 */ + case WSAENOTCONN: return "Socket is not connected"; /* 10057 */ + case WSAESHUTDOWN: return "Can't send after socket shutdown"; /* 10058 */ + case WSAETOOMANYREFS: return "Too many references, can't splice"; /* 10059 */ + case WSAETIMEDOUT: return "Connection timed out"; /* 10060 */ + case WSAECONNREFUSED: return "Connection refused"; /* 10061 */ + case WSAELOOP: return "Too many levels of symbolic links"; /* 10062 */ + case WSAENAMETOOLONG: return "File name too long"; /* 10063 */ + case WSAEHOSTDOWN: return "Host is down"; /* 10064 */ + case WSAEHOSTUNREACH: return "No Route to Host"; /* 10065 */ + case WSAENOTEMPTY: return "Directory not empty"; /* 10066 */ + case WSAEPROCLIM: return "Too many processes"; /* 10067 */ + case WSAEUSERS: return "Too many users"; /* 10068 */ + case WSAEDQUOT: return "Disc Quota Exceeded"; /* 10069 */ + case WSAESTALE: return "Stale NFS file handle"; /* 10070 */ + case WSAEREMOTE: return "Too many levels of remote in path"; /* 10071 */ + case WSAEDISCON: return "Graceful shutdown in progress"; /* 10101 */ + + case WSASYSNOTREADY: return "Network SubSystem is unavailable"; /* 10091 */ + case WSAVERNOTSUPPORTED: return "WINSOCK DLL Version out of range"; /* 10092 */ + case WSANOTINITIALISED: return "Successful WSASTARTUP not yet performed"; /* 10093 */ + case WSAHOST_NOT_FOUND: return "Authoritative answer: Host not found"; /* 11001 */ + case WSATRY_AGAIN: return "Non-Authoritative: Host not found or SERVERFAIL"; /* 11002 */ + case WSANO_RECOVERY: return "Non-Recoverable errors, FORMERR, REFUSED, NOTIMP"; /* 11003 */ + case WSANO_DATA: return "Valid name, no data record of requested type"; /* 11004 */ + + case WSAENOMORE: return "10102: No more results"; /* 10102 */ + case WSAECANCELLED: return "10103: Call has been canceled"; /* 10103 */ + case WSAEINVALIDPROCTABLE: return "Procedure call table is invalid"; /* 10104 */ + case WSAEINVALIDPROVIDER: return "Service provider is invalid"; /* 10105 */ + case WSAEPROVIDERFAILEDINIT: return "Service provider failed to initialize"; /* 10106 */ + case WSASYSCALLFAILURE: return "System call failure"; /* 10107 */ + case WSASERVICE_NOT_FOUND: return "Service not found"; /* 10108 */ + case WSATYPE_NOT_FOUND: return "Class type not found"; /* 10109 */ + case WSA_E_NO_MORE: return "10110: No more results"; /* 10110 */ + case WSA_E_CANCELLED: return "10111: Call was canceled"; /* 10111 */ + case WSAEREFUSED: return "Database query was refused"; /* 10112 */ + + default: + { + static char _err_unknown[64]; + sprintf(_err_unknown, "Unknown WSAE error (%d)", err); + return _err_unknown; + } + } +} + diff --git a/Quake/zone.c b/Quake/zone.c new file mode 100644 index 0000000..f94a291 --- /dev/null +++ b/Quake/zone.c @@ -0,0 +1,989 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +// zone.c + +#include "quakedef.h" + +#define DYNAMIC_SIZE (4 * 1024 * 1024) // ericw -- was 512KB (64-bit) / 384KB (32-bit) + +#define ZONEID 0x1d4a11 +#define MINFRAGMENT 64 + +typedef struct memblock_s +{ + int size; // including the header and possibly tiny fragments + int tag; // a tag of 0 is a free block + int id; // should be ZONEID + int pad; // pad to 64 bit boundary + struct memblock_s *next, *prev; +} memblock_t; + +typedef struct +{ + int size; // total bytes malloced, including header + memblock_t blocklist; // start / end cap for linked list + memblock_t *rover; +} memzone_t; + +void Cache_FreeLow (int new_low_hunk); +void Cache_FreeHigh (int new_high_hunk); + + +/* +============================================================================== + + ZONE MEMORY ALLOCATION + +There is never any space between memblocks, and there will never be two +contiguous free memblocks. + +The rover can be left pointing at a non-empty block + +The zone calls are pretty much only used for small strings and structures, +all big things are allocated on the hunk. +============================================================================== +*/ + +static memzone_t *mainzone; + + +/* +======================== +Z_Free +======================== +*/ +void Z_Free (void *ptr) +{ + memblock_t *block, *other; + + if (!ptr) + Sys_Error ("Z_Free: NULL pointer"); + + block = (memblock_t *) ( (byte *)ptr - sizeof(memblock_t)); + if (block->id != ZONEID) + Sys_Error ("Z_Free: freed a pointer without ZONEID"); + if (block->tag == 0) + Sys_Error ("Z_Free: freed a freed pointer"); + + block->tag = 0; // mark as free + + other = block->prev; + if (!other->tag) + { // merge with previous free block + other->size += block->size; + other->next = block->next; + other->next->prev = other; + if (block == mainzone->rover) + mainzone->rover = other; + block = other; + } + + other = block->next; + if (!other->tag) + { // merge the next free block onto the end + block->size += other->size; + block->next = other->next; + block->next->prev = block; + if (other == mainzone->rover) + mainzone->rover = block; + } +} + + +static void *Z_TagMalloc (int size, int tag) +{ + int extra; + memblock_t *start, *rover, *newblock, *base; + + if (!tag) + Sys_Error ("Z_TagMalloc: tried to use a 0 tag"); + +// +// scan through the block list looking for the first free block +// of sufficient size +// + size += sizeof(memblock_t); // account for size of block header + size += 4; // space for memory trash tester + size = (size + 7) & ~7; // align to 8-byte boundary + + base = rover = mainzone->rover; + start = base->prev; + + do + { + if (rover == start) // scaned all the way around the list + return NULL; + if (rover->tag) + base = rover = rover->next; + else + rover = rover->next; + } while (base->tag || base->size < size); + +// +// found a block big enough +// + extra = base->size - size; + if (extra > MINFRAGMENT) + { // there will be a free fragment after the allocated block + newblock = (memblock_t *) ((byte *)base + size ); + newblock->size = extra; + newblock->tag = 0; // free block + newblock->prev = base; + newblock->id = ZONEID; + newblock->next = base->next; + newblock->next->prev = newblock; + base->next = newblock; + base->size = size; + } + + base->tag = tag; // no longer a free block + + mainzone->rover = base->next; // next allocation will start looking here + + base->id = ZONEID; + +// marker for memory trash testing + *(int *)((byte *)base + base->size - 4) = ZONEID; + + return (void *) ((byte *)base + sizeof(memblock_t)); +} + +/* +======================== +Z_CheckHeap +======================== +*/ +static void Z_CheckHeap (void) +{ + memblock_t *block; + + for (block = mainzone->blocklist.next ; ; block = block->next) + { + if (block->next == &mainzone->blocklist) + break; // all blocks have been hit + if ( (byte *)block + block->size != (byte *)block->next) + Sys_Error ("Z_CheckHeap: block size does not touch the next block"); + if ( block->next->prev != block) + Sys_Error ("Z_CheckHeap: next block doesn't have proper back link"); + if (!block->tag && !block->next->tag) + Sys_Error ("Z_CheckHeap: two consecutive free blocks"); + } +} + + +/* +======================== +Z_Malloc +======================== +*/ +void *Z_Malloc (int size) +{ + void *buf; + + Z_CheckHeap (); // DEBUG + buf = Z_TagMalloc (size, 1); + if (!buf) + Sys_Error ("Z_Malloc: failed on allocation of %i bytes",size); + Q_memset (buf, 0, size); + + return buf; +} + +/* +======================== +Z_Realloc +======================== +*/ +void *Z_Realloc(void *ptr, int size) +{ + int old_size; + void *old_ptr; + memblock_t *block; + + if (!ptr) + return Z_Malloc (size); + + block = (memblock_t *) ((byte *) ptr - sizeof (memblock_t)); + if (block->id != ZONEID) + Sys_Error ("Z_Realloc: realloced a pointer without ZONEID"); + if (block->tag == 0) + Sys_Error ("Z_Realloc: realloced a freed pointer"); + + old_size = block->size; + old_size -= (4 + (int)sizeof(memblock_t)); /* see Z_TagMalloc() */ + old_ptr = ptr; + + Z_Free (ptr); + ptr = Z_TagMalloc (size, 1); + if (!ptr) + Sys_Error ("Z_Realloc: failed on allocation of %i bytes", size); + + if (ptr != old_ptr) + memmove (ptr, old_ptr, q_min(old_size, size)); + if (old_size < size) + memset ((byte *)ptr + old_size, 0, size - old_size); + + return ptr; +} + +char *Z_Strdup (const char *s) +{ + size_t sz = strlen(s) + 1; + char *ptr = (char *) Z_Malloc (sz); + memcpy (ptr, s, sz); + return ptr; +} + + +/* +======================== +Z_Print +======================== +*/ +void Z_Print (memzone_t *zone) +{ + memblock_t *block; + + Con_Printf ("zone size: %i location: %p\n",mainzone->size,mainzone); + + for (block = zone->blocklist.next ; ; block = block->next) + { + Con_Printf ("block:%p size:%7i tag:%3i\n", + block, block->size, block->tag); + + if (block->next == &zone->blocklist) + break; // all blocks have been hit + if ( (byte *)block + block->size != (byte *)block->next) + Con_Printf ("ERROR: block size does not touch the next block\n"); + if ( block->next->prev != block) + Con_Printf ("ERROR: next block doesn't have proper back link\n"); + if (!block->tag && !block->next->tag) + Con_Printf ("ERROR: two consecutive free blocks\n"); + } +} + + +//============================================================================ + +#define HUNK_SENTINEL 0x1df001ed + +#define HUNKNAME_LEN 24 +typedef struct +{ + int sentinel; + int size; // including sizeof(hunk_t), -1 = not allocated + char name[HUNKNAME_LEN]; +} hunk_t; + +byte *hunk_base; +int hunk_size; + +int hunk_low_used; +int hunk_high_used; + +qboolean hunk_tempactive; +int hunk_tempmark; + +/* +============== +Hunk_Check + +Run consistancy and sentinel trahing checks +============== +*/ +void Hunk_Check (void) +{ + hunk_t *h; + + for (h = (hunk_t *)hunk_base ; (byte *)h != hunk_base + hunk_low_used ; ) + { + if (h->sentinel != HUNK_SENTINEL) + Sys_Error ("Hunk_Check: trashed sentinel"); + if (h->size < (int) sizeof(hunk_t) || h->size + (byte *)h - hunk_base > hunk_size) + Sys_Error ("Hunk_Check: bad size"); + h = (hunk_t *)((byte *)h+h->size); + } +} + +/* +============== +Hunk_Print + +If "all" is specified, every single allocation is printed. +Otherwise, allocations with the same name will be totaled up before printing. +============== +*/ +void Hunk_Print (qboolean all) +{ + hunk_t *h, *next, *endlow, *starthigh, *endhigh; + int count, sum; + int totalblocks; + char name[HUNKNAME_LEN]; + + count = 0; + sum = 0; + totalblocks = 0; + + h = (hunk_t *)hunk_base; + endlow = (hunk_t *)(hunk_base + hunk_low_used); + starthigh = (hunk_t *)(hunk_base + hunk_size - hunk_high_used); + endhigh = (hunk_t *)(hunk_base + hunk_size); + + Con_Printf (" :%8i total hunk size\n", hunk_size); + Con_Printf ("-------------------------\n"); + + while (1) + { + // + // skip to the high hunk if done with low hunk + // + if ( h == endlow ) + { + Con_Printf ("-------------------------\n"); + Con_Printf (" :%8i REMAINING\n", hunk_size - hunk_low_used - hunk_high_used); + Con_Printf ("-------------------------\n"); + h = starthigh; + } + + // + // if totally done, break + // + if ( h == endhigh ) + break; + + // + // run consistancy checks + // + if (h->sentinel != HUNK_SENTINEL) + Sys_Error ("Hunk_Check: trashed sentinel"); + if (h->size < (int) sizeof(hunk_t) || h->size + (byte *)h - hunk_base > hunk_size) + Sys_Error ("Hunk_Check: bad size"); + + next = (hunk_t *)((byte *)h+h->size); + count++; + totalblocks++; + sum += h->size; + + // + // print the single block + // + memcpy (name, h->name, HUNKNAME_LEN); + if (all) + Con_Printf ("%8p :%8i %8s\n",h, h->size, name); + + // + // print the total + // + if (next == endlow || next == endhigh || + strncmp (h->name, next->name, HUNKNAME_LEN - 1)) + { + if (!all) + Con_Printf (" :%8i %8s (TOTAL)\n",sum, name); + count = 0; + sum = 0; + } + + h = next; + } + + Con_Printf ("-------------------------\n"); + Con_Printf ("%8i total blocks\n", totalblocks); + +} + +/* +=================== +Hunk_Print_f -- johnfitz -- console command to call hunk_print +=================== +*/ +void Hunk_Print_f (void) +{ + Hunk_Print (false); +} + +/* +=================== +Hunk_AllocName +=================== +*/ +void *Hunk_AllocName (int size, const char *name) +{ + hunk_t *h; + +#ifdef PARANOID + Hunk_Check (); +#endif + + if (size < 0) + Sys_Error ("Hunk_Alloc: bad size: %i", size); + + size = sizeof(hunk_t) + ((size+15)&~15); + + if (hunk_size - hunk_low_used - hunk_high_used < size) + Sys_Error ("Hunk_Alloc: failed on %i bytes",size); + + h = (hunk_t *)(hunk_base + hunk_low_used); + hunk_low_used += size; + + Cache_FreeLow (hunk_low_used); + + memset (h, 0, size); + + h->size = size; + h->sentinel = HUNK_SENTINEL; + q_strlcpy (h->name, name, HUNKNAME_LEN); + + return (void *)(h+1); +} + +/* +=================== +Hunk_Alloc +=================== +*/ +void *Hunk_Alloc (int size) +{ + return Hunk_AllocName (size, "unknown"); +} + +int Hunk_LowMark (void) +{ + return hunk_low_used; +} + +void Hunk_FreeToLowMark (int mark) +{ + if (mark < 0 || mark > hunk_low_used) + Sys_Error ("Hunk_FreeToLowMark: bad mark %i", mark); + memset (hunk_base + mark, 0, hunk_low_used - mark); + hunk_low_used = mark; +} + +int Hunk_HighMark (void) +{ + if (hunk_tempactive) + { + hunk_tempactive = false; + Hunk_FreeToHighMark (hunk_tempmark); + } + + return hunk_high_used; +} + +void Hunk_FreeToHighMark (int mark) +{ + if (hunk_tempactive) + { + hunk_tempactive = false; + Hunk_FreeToHighMark (hunk_tempmark); + } + if (mark < 0 || mark > hunk_high_used) + Sys_Error ("Hunk_FreeToHighMark: bad mark %i", mark); + memset (hunk_base + hunk_size - hunk_high_used, 0, hunk_high_used - mark); + hunk_high_used = mark; +} + + +/* +=================== +Hunk_HighAllocName +=================== +*/ +void *Hunk_HighAllocName (int size, const char *name) +{ + hunk_t *h; + + if (size < 0) + Sys_Error ("Hunk_HighAllocName: bad size: %i", size); + + if (hunk_tempactive) + { + Hunk_FreeToHighMark (hunk_tempmark); + hunk_tempactive = false; + } + +#ifdef PARANOID + Hunk_Check (); +#endif + + size = sizeof(hunk_t) + ((size+15)&~15); + + if (hunk_size - hunk_low_used - hunk_high_used < size) + { + Con_Printf ("Hunk_HighAlloc: failed on %i bytes\n",size); + return NULL; + } + + hunk_high_used += size; + Cache_FreeHigh (hunk_high_used); + + h = (hunk_t *)(hunk_base + hunk_size - hunk_high_used); + + memset (h, 0, size); + h->size = size; + h->sentinel = HUNK_SENTINEL; + q_strlcpy (h->name, name, HUNKNAME_LEN); + + return (void *)(h+1); +} + + +/* +================= +Hunk_TempAlloc + +Return space from the top of the hunk +================= +*/ +void *Hunk_TempAlloc (int size) +{ + void *buf; + + size = (size+15)&~15; + + if (hunk_tempactive) + { + Hunk_FreeToHighMark (hunk_tempmark); + hunk_tempactive = false; + } + + hunk_tempmark = Hunk_HighMark (); + + buf = Hunk_HighAllocName (size, "temp"); + + hunk_tempactive = true; + + return buf; +} + +char *Hunk_Strdup (const char *s, const char *name) +{ + size_t sz = strlen(s) + 1; + char *ptr = (char *) Hunk_AllocName (sz, name); + memcpy (ptr, s, sz); + return ptr; +} + +/* +=============================================================================== + +CACHE MEMORY + +=============================================================================== +*/ + +#define CACHENAME_LEN 32 +typedef struct cache_system_s +{ + int size; // including this header + cache_user_t *user; + char name[CACHENAME_LEN]; + struct cache_system_s *prev, *next; + struct cache_system_s *lru_prev, *lru_next; // for LRU flushing +} cache_system_t; + +cache_system_t *Cache_TryAlloc (int size, qboolean nobottom); + +cache_system_t cache_head; + +/* +=========== +Cache_Move +=========== +*/ +void Cache_Move ( cache_system_t *c) +{ + cache_system_t *new_cs; + +// we are clearing up space at the bottom, so only allocate it late + new_cs = Cache_TryAlloc (c->size, true); + if (new_cs) + { +// Con_Printf ("cache_move ok\n"); + + Q_memcpy ( new_cs+1, c+1, c->size - sizeof(cache_system_t) ); + new_cs->user = c->user; + Q_memcpy (new_cs->name, c->name, sizeof(new_cs->name)); + Cache_Free (c->user, false); //johnfitz -- added second argument + new_cs->user->data = (void *)(new_cs+1); + } + else + { +// Con_Printf ("cache_move failed\n"); + + Cache_Free (c->user, true); // tough luck... //johnfitz -- added second argument + } +} + +/* +============ +Cache_FreeLow + +Throw things out until the hunk can be expanded to the given point +============ +*/ +void Cache_FreeLow (int new_low_hunk) +{ + cache_system_t *c; + + while (1) + { + c = cache_head.next; + if (c == &cache_head) + return; // nothing in cache at all + if ((byte *)c >= hunk_base + new_low_hunk) + return; // there is space to grow the hunk + Cache_Move ( c ); // reclaim the space + } +} + +/* +============ +Cache_FreeHigh + +Throw things out until the hunk can be expanded to the given point +============ +*/ +void Cache_FreeHigh (int new_high_hunk) +{ + cache_system_t *c, *prev; + + prev = NULL; + while (1) + { + c = cache_head.prev; + if (c == &cache_head) + return; // nothing in cache at all + if ( (byte *)c + c->size <= hunk_base + hunk_size - new_high_hunk) + return; // there is space to grow the hunk + if (c == prev) + Cache_Free (c->user, true); // didn't move out of the way //johnfitz -- added second argument + else + { + Cache_Move (c); // try to move it + prev = c; + } + } +} + +void Cache_UnlinkLRU (cache_system_t *cs) +{ + if (!cs->lru_next || !cs->lru_prev) + Sys_Error ("Cache_UnlinkLRU: NULL link"); + + cs->lru_next->lru_prev = cs->lru_prev; + cs->lru_prev->lru_next = cs->lru_next; + + cs->lru_prev = cs->lru_next = NULL; +} + +void Cache_MakeLRU (cache_system_t *cs) +{ + if (cs->lru_next || cs->lru_prev) + Sys_Error ("Cache_MakeLRU: active link"); + + cache_head.lru_next->lru_prev = cs; + cs->lru_next = cache_head.lru_next; + cs->lru_prev = &cache_head; + cache_head.lru_next = cs; +} + +/* +============ +Cache_TryAlloc + +Looks for a free block of memory between the high and low hunk marks +Size should already include the header and padding +============ +*/ +cache_system_t *Cache_TryAlloc (int size, qboolean nobottom) +{ + cache_system_t *cs, *new_cs; + +// is the cache completely empty? + + if (!nobottom && cache_head.prev == &cache_head) + { + if (hunk_size - hunk_high_used - hunk_low_used < size) + Sys_Error ("Cache_TryAlloc: %i is greater then free hunk", size); + + new_cs = (cache_system_t *) (hunk_base + hunk_low_used); + memset (new_cs, 0, sizeof(*new_cs)); + new_cs->size = size; + + cache_head.prev = cache_head.next = new_cs; + new_cs->prev = new_cs->next = &cache_head; + + Cache_MakeLRU (new_cs); + return new_cs; + } + +// search from the bottom up for space + + new_cs = (cache_system_t *) (hunk_base + hunk_low_used); + cs = cache_head.next; + + do + { + if (!nobottom || cs != cache_head.next) + { + if ( (byte *)cs - (byte *)new_cs >= size) + { // found space + memset (new_cs, 0, sizeof(*new_cs)); + new_cs->size = size; + + new_cs->next = cs; + new_cs->prev = cs->prev; + cs->prev->next = new_cs; + cs->prev = new_cs; + + Cache_MakeLRU (new_cs); + + return new_cs; + } + } + + // continue looking + new_cs = (cache_system_t *)((byte *)cs + cs->size); + cs = cs->next; + + } while (cs != &cache_head); + +// try to allocate one at the very end + if ( hunk_base + hunk_size - hunk_high_used - (byte *)new_cs >= size) + { + memset (new_cs, 0, sizeof(*new_cs)); + new_cs->size = size; + + new_cs->next = &cache_head; + new_cs->prev = cache_head.prev; + cache_head.prev->next = new_cs; + cache_head.prev = new_cs; + + Cache_MakeLRU (new_cs); + + return new_cs; + } + + return NULL; // couldn't allocate +} + +/* +============ +Cache_Flush + +Throw everything out, so new data will be demand cached +============ +*/ +void Cache_Flush (void) +{ + while (cache_head.next != &cache_head) + Cache_Free ( cache_head.next->user, true); // reclaim the space //johnfitz -- added second argument +} + +/* +============ +Cache_Print + +============ +*/ +void Cache_Print (void) +{ + cache_system_t *cd; + + for (cd = cache_head.next ; cd != &cache_head ; cd = cd->next) + { + Con_Printf ("%8i : %s\n", cd->size, cd->name); + } +} + +/* +============ +Cache_Report + +============ +*/ +void Cache_Report (void) +{ + Con_DPrintf ("%4.1f megabyte data cache\n", (hunk_size - hunk_high_used - hunk_low_used) / (float)(1024*1024) ); +} + +/* +============ +Cache_Init + +============ +*/ +void Cache_Init (void) +{ + cache_head.next = cache_head.prev = &cache_head; + cache_head.lru_next = cache_head.lru_prev = &cache_head; + + Cmd_AddCommand ("flush", Cache_Flush); +} + +/* +============== +Cache_Free + +Frees the memory and removes it from the LRU list +============== +*/ +void Cache_Free (cache_user_t *c, qboolean freetextures) //johnfitz -- added second argument +{ + cache_system_t *cs; + + if (!c->data) + Sys_Error ("Cache_Free: not allocated"); + + cs = ((cache_system_t *)c->data) - 1; + + cs->prev->next = cs->next; + cs->next->prev = cs->prev; + cs->next = cs->prev = NULL; + + c->data = NULL; + + Cache_UnlinkLRU (cs); + + //johnfitz -- if a model becomes uncached, free the gltextures. This only works + //becuase the cache_user_t is the last component of the qmodel_t struct. Should + //fail harmlessly if *c is actually part of an sfx_t struct. I FEEL DIRTY + if (freetextures) + TexMgr_FreeTexturesForOwner ((qmodel_t *)(c + 1) - 1); +} + + + +/* +============== +Cache_Check +============== +*/ +void *Cache_Check (cache_user_t *c) +{ + cache_system_t *cs; + + if (!c->data) + return NULL; + + cs = ((cache_system_t *)c->data) - 1; + +// move to head of LRU + Cache_UnlinkLRU (cs); + Cache_MakeLRU (cs); + + return c->data; +} + + +/* +============== +Cache_Alloc +============== +*/ +void *Cache_Alloc (cache_user_t *c, int size, const char *name) +{ + cache_system_t *cs; + + if (c->data) + Sys_Error ("Cache_Alloc: already allocated"); + + if (size <= 0) + Sys_Error ("Cache_Alloc: size %i", size); + + size = (size + sizeof(cache_system_t) + 15) & ~15; + +// find memory for it + while (1) + { + cs = Cache_TryAlloc (size, false); + if (cs) + { + q_strlcpy (cs->name, name, CACHENAME_LEN); + c->data = (void *)(cs+1); + cs->user = c; + break; + } + + // free the least recently used cahedat + if (cache_head.lru_prev == &cache_head) + Sys_Error ("Cache_Alloc: out of memory"); // not enough memory at all + + Cache_Free (cache_head.lru_prev->user, true); //johnfitz -- added second argument + } + + return Cache_Check (c); +} + +//============================================================================ + + +static void Memory_InitZone (memzone_t *zone, int size) +{ + memblock_t *block; + +// set the entire zone to one free block + + zone->blocklist.next = zone->blocklist.prev = block = + (memblock_t *)( (byte *)zone + sizeof(memzone_t) ); + zone->blocklist.tag = 1; // in use block + zone->blocklist.id = 0; + zone->blocklist.size = 0; + zone->rover = block; + + block->prev = block->next = &zone->blocklist; + block->tag = 0; // free block + block->id = ZONEID; + block->size = size - sizeof(memzone_t); +} + +/* +======================== +Memory_Init +======================== +*/ +void Memory_Init (void *buf, int size) +{ + int p; + int zonesize = DYNAMIC_SIZE; + + hunk_base = (byte *) buf; + hunk_size = size; + hunk_low_used = 0; + hunk_high_used = 0; + + Cache_Init (); + p = COM_CheckParm ("-zone"); + if (p) + { + if (p < com_argc-1) + zonesize = Q_atoi (com_argv[p+1]) * 1024; + else + Sys_Error ("Memory_Init: you must specify a size in KB after -zone"); + } + mainzone = (memzone_t *) Hunk_AllocName (zonesize, "zone" ); + Memory_InitZone (mainzone, zonesize); + + Cmd_AddCommand ("hunk_print", Hunk_Print_f); //johnfitz +} + diff --git a/Quake/zone.h b/Quake/zone.h new file mode 100644 index 0000000..74da9c7 --- /dev/null +++ b/Quake/zone.h @@ -0,0 +1,140 @@ +/* +Copyright (C) 1996-2001 Id Software, Inc. +Copyright (C) 2002-2009 John Fitzgibbons and others +Copyright (C) 2010-2014 QuakeSpasm developers + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#ifndef __ZZONE_H +#define __ZZONE_H + +/* + memory allocation + + +H_??? The hunk manages the entire memory block given to quake. It must be +contiguous. Memory can be allocated from either the low or high end in a +stack fashion. The only way memory is released is by resetting one of the +pointers. + +Hunk allocations should be given a name, so the Hunk_Print () function +can display usage. + +Hunk allocations are guaranteed to be 16 byte aligned. + +The video buffers are allocated high to avoid leaving a hole underneath +server allocations when changing to a higher video mode. + + +Z_??? Zone memory functions used for small, dynamic allocations like text +strings from command input. There is only about 48K for it, allocated at +the very bottom of the hunk. + +Cache_??? Cache memory is for objects that can be dynamically loaded and +can usefully stay persistant between levels. The size of the cache +fluctuates from level to level. + +To allocate a cachable object + + +Temp_??? Temp memory is used for file loading and surface caching. The size +of the cache memory is adjusted so that there is a minimum of 512k remaining +for temp memory. + + +------ Top of Memory ------- + +high hunk allocations + +<--- high hunk reset point held by vid + +video buffer + +z buffer + +surface cache + +<--- high hunk used + +cachable memory + +<--- low hunk used + +client and server low hunk allocations + +<-- low hunk reset point held by host + +startup hunk allocations + +Zone block + +----- Bottom of Memory ----- + + + +*/ + +void Memory_Init (void *buf, int size); + +#ifdef __cplusplus +extern "C" { +#endif +void Z_Free (void *ptr); +void *Z_Malloc (int size); // returns 0 filled memory +void *Z_Realloc (void *ptr, int size); +char *Z_Strdup (const char *s); +#ifdef __cplusplus +} +#endif + +void *Hunk_Alloc (int size); // returns 0 filled memory +void *Hunk_AllocName (int size, const char *name); +void *Hunk_HighAllocName (int size, const char *name); +char *Hunk_Strdup (const char *s, const char *name); + +int Hunk_LowMark (void); +void Hunk_FreeToLowMark (int mark); + +int Hunk_HighMark (void); +void Hunk_FreeToHighMark (int mark); + +void *Hunk_TempAlloc (int size); + +void Hunk_Check (void); + +typedef struct cache_user_s +{ + void *data; +} cache_user_t; + +void Cache_Flush (void); + +void *Cache_Check (cache_user_t *c); +// returns the cached data, and moves to the head of the LRU list +// if present, otherwise returns NULL + +void Cache_Free (cache_user_t *c, qboolean freetextures); //johnfitz -- added second argument + +void *Cache_Alloc (cache_user_t *c, int size, const char *name); +// Returns NULL if all purgable data was tossed and there still +// wasn't enough room. + +void Cache_Report (void); + +#endif /* __ZZONE_H */ + diff --git a/Quakespasm-Music.txt b/Quakespasm-Music.txt new file mode 100644 index 0000000..e188d8d --- /dev/null +++ b/Quakespasm-Music.txt @@ -0,0 +1,93 @@ +QuakeSpasm supports ogg, mp3 and wav external music files to be played +instead of cd music. What you should do is simple: + +1. Use your favorite cd-ripper application and rip your quake cdrom + audio tracks, convert them to ogg or mp3 so they occupy less space, + like track02.ogg, track03.ogg, etc. + + Note #1: There is no such thing as track01: the first tracks of + original Quake and the mission pack cdroms are always data + tracks. + + Note #2: Since the Quake cdrom audio tracks are pre-emphasized, you + should de-emphasize them during or after ripping to make + them sound right. (thanks to Sander van Dijk for this note) + +2. Go into your quake installation directory and create a new directory + id1/music (for windows users id1\music). + +3. If you have the Scourge of Armagon mission pack, then create another + directory hipnotic/music . If you have the Dissolution of Eternity + then create another directory rogue/music . + +4. Take the ripped music files from step1, place them under id1/music. + If you have the mission packs, repeat step1 for the mission packs, + too, and place the ripped music files under hipnotic/music for the + first mission pack or under rogue/music for the second mission pack. + +5. All are ready to go: When a level starts, the engine will first try + playing the necessary cdaudio track and if it doesn't find the cdrom + it will use the ripped music files instead. + + +New console commands: +--------------------- +- music <filename> + Start playing the requested music file. + Example: music mymusic1 + + Notice that you don't have to type the file extension: The requested + music will be searched with ogg, mp3, and then with a wav extension, + automatically. + + If you do specify the file extension, like "music mymusic1.wav", then + it will honor your wish and try only the given type: this is good for + testing/comparing the same music in different formats. + +- music_stop + Stops the playing music + +- music_pause + Pauses the playing music + +- music_resume + Resumes playing the music if it was paused + +- music_loop 1 + Makes the background music to loop (default behavior) + +- music_loop 0 + Makes the background music to play once and then stop + +- music_jump + Jump to a given order in music (only for module (tracker) music) + +New cvars: +------------------------- +- bgm_extmusic (0 or 1): Disable or enable playback of external music + files instead of cdaudio. default is 1 (enabled). + +New command line options: +------------------------- +- -noextmusic: Disables the playback of external music files instead of + cdaudio. + +Music files in PAK files: +------------------------- +PAK-contained music files are fully supported. + +Music file directories: +------------------------- +- The music files are always searched under the "music" subdirectory of + a game. + +Music file search order: +------------------------- +The engine can handle multiple audio formats. The map-dictated music, +i.e. the ripped cd music, is always searched by the order of searchpath +priority: the file from the searchpath with the highest priority is +chosen, because it is most likely the one from our own game directory +itself. This way, if a mod has track02 as a mp3 or wav, which is below +track02.ogg in the music_handler order, the mp3 or wav will still have +priority over track02.ogg from the id1 game directory. + diff --git a/Quakespasm.html b/Quakespasm.html new file mode 100644 index 0000000..334edff --- /dev/null +++ b/Quakespasm.html @@ -0,0 +1,926 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<HTML> +<HEAD> + <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65"> + <TITLE>QuakeSpasm + + + + +

QuakeSpasm

+ +

Page last edited: February 2026.

+ +

+

1. About

+

+

2. Downloads

+

+

3. Hints

+ +

+

4. Compiling and Installation

+ +

+

5. Changes

+ +

+

6. Copyright

+

+

7. Contact

+

+

8. Links

+ + +
+

1. About

+ +

QuakeSpasm is a modern cross-platform Quake engine based on FitzQuake.

+

It includes support for 64 bit CPUs and custom music playback, a new +sound driver, some graphical niceities, and numerous bug-fixes and other improvements.

+

Quakespasm utilizes SDL-1.2 or SDL2 frameworks, choose one which works best for you. +SDL2 has nicer features, smoother mouse input and better support for newer operating systems, +but no CD-ROM support.

+ +

2. Downloads

+

+

+

+ +

3. Hints

+

Visit the +FitzQuake homepage for a full run-down of the engine's commands and variables. +

    +
  • To disable some changes, use "quakespasm -fitz"
  • +
  • Quakespasm's custom data is stored in "quakespasm.pak". Install this file alongside your id1 directory to enable the custom console background and other minor features.
  • +
  • For different sound backend drivers use :
    +"SDL_AUDIODRIVER=DRIVER ./quakespasm"
    +where DRIVER may be alsa, dsp, pulse, esd ...
  • +
  • Shift+Escape draws the Console.
  • +
  • From the console, use UP to browse the command line history and +TAB to autocomplete command and map names.
  • +
  • There is currently no CD Music volume support and SDL2 doesn't support CD audio. cd_sdl.c needs replacing with cd_linux.c, cd_bsd.c etc..
  • +
  • In windows, alternative CD drives are accessible by
    +"quakespasm -cddev F" (for example)
  • +
  • Quakespasm allows loading new games (mods) on the fly with
    +"game GAMENAME {-quoth/hipnotic/rogue}"
  • +
  • Use "quakespasm -condebug" to save console log to "qconsole.log". SDL2 builds no longer generate stdout.txt/stderr.txt.
  • +
+

+

3.1 Music Playback +

+

Quakespasm can play various external music formats, including MP3, OGG and FLAC. +

    +
  • Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music".
  • +
  • Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG.
  • +
  • Use the "-noextmusic" option to disable this feature.
  • +
  • As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed".
  • +
  • See +Quakespasm-Music.txt for more details.
  • +
+

+ +

3.2 Controller Support +

+

The SDL2 variant of Quakespasm supports Xbox 360 style game controllers.

+

The default configuration uses the left analog stick for movement and the right for looking.

+

If your controller doesn't work you can try placing +this file in your Quake directory, it is a community-maintained database that adds support for more controllers to SDL2.

+ +

Cvars

+

+

    +
  • joy_deadzone_look - Fraction of look stick travel to be deadzone, between 0 and 1. Default is 0.175.
  • +
  • joy_deadzone_move - Same as above, but for the move stick. Default is 0.175.
  • +
  • joy_deadzone_trigger - Fraction of trigger range required to register a button press on the analog triggers, between 0 and 1. Default 0.2.
  • +
  • joy_outer_threshold_look - Outer deadzone for the look stick, between 0 and 1. Default 0.02.
  • +
  • joy_outer_threshold_move - Outer deadzone for the move stick, between 0 and 1. Default 0.02.
  • +
  • joy_sensitivity_yaw/pitch - Max angular speed in degrees/second when looking. Defaults are 240 for yaw (turning left/right) and 130 for pitch (up/down).
  • +
  • joy_exponent - For the look stick, the stick displacement (between 0 and 1) is raised to this power. Default is 2. A value of 1 would give a linear relationship between stick displacement and fraction of the maximum angular speed.
  • +
  • joy_exponent_move - Same as joy_exponent but for the move stick. Default is 2.
  • +
  • joy_invert - Set to 1 to invert the vertical axis of the look stick.
  • +
  • joy_swapmovelook - Set to 1 to swap the left and right analog stick functions. Default is 0, move on the left stick, look on the right stick.
  • +
  • joy_enable - Set to 0 to disable controller support. Default is 1.
  • +
+

+

Buttons

+

Some of the controller buttons are hardcoded to allow navigating the menu:

+

+

    +
  • Back - alias for TAB
  • +
  • Start - alias for ESC
  • +
  • DPad, analog sticks - mapped to arrow keys
  • +
  • A Button - alias for ENTER in menus
  • +
  • B Button - alias for ESC in menus
  • +
+

+

These buttons can be bound normally:

+

+

    +
  • LTRIGGER - Left trigger
  • +
  • RTRIGGER - Right trigger
  • +
  • LSHOULDER - Left shoulder button
  • +
  • RSHOULDER - Right shoulder button
  • +
  • LTHUMB - Clicking the left thumbstick
  • +
  • RTHUMB - Clicking the right thumbstick
  • +
  • ABUTTON
  • +
  • BBUTTON
  • +
  • XBUTTON
  • +
  • YBUTTON
  • +
+

+ +

quakespasm.pak contains a default.cfg which has been updated to give some default bindings. L/R shoulder buttons are bound to weapon switching, and L/R triggers are jump and attack.

+

The controller support started as Jeremiah Sypult's implementation in Quakespasm-Rift, and also uses ideas/code from LordHavoc's DarkPlaces.

+ + +

4. Compiling and Installation

+

See the Downloads section to get the sourcecode, then below for platform specific instructions. +Quakespasm can also be built with the cross-platform Codeblocks.
+Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.

+ +

4.1 Linux/Unix +

+

After extracting the source tarball, "cd Quake" and edit the Makefile for music options.

+

Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.

+

Then type "make" to compile the program, and copy the "quakespasm" binary (and "quakespasm.pak") to your Quake game directory.
+Compile time options include +

    +
  • make DO_USERDIRS=1 to include user directories support
  • +
  • make DEBUG=1 for debugging
  • +
  • make SDL_CONFIG=/PATH/TO/sdl-config for unusual SDL installations
  • +
  • make USE_SDL2=1 to compile against SDL2 instead of SDL-1.2
  • +
+

+ +

4.2 Windows +

+

QuakeSpasm developers cross-compile windows binaries using +MinGW-w64 and +MinGW. +The project can also be built using Microsoft Visual Studio 2005 and newer versions.

+ +

4.3 Mac OS X +

+

A Quakespasm App (including program launcher and update framework) can be made using the Xcode template found in the MacOSX directory. +Alternatively, have a look at Makefile.darwin for more instructions on building from a console.

+ +

4.4 Escripten +

+

Use Makefile.escripten to build. Build depends on third party library +gl4es. +See +https://github.com/ololoken/ems-runner-quakespasm for a launcher.

+

4.5 Quake '2021 re-release' +

+ +

QuakeSpasm 0.94 has support for playing the 2021 re-release content: Copy the quakespasm binary to your rerelease installation and run as you normally do.

+ + +

5. Changes

+ +

5.1 Changes in 0.97.0 +

+

+

    +
  • Valve BSP, WAD, and external texture support.
  • +
  • The maps console command now takes an optional ModName, e.g.: maps ad or maps id1
  • +
  • New maps_mod console command to list maps only from the active mod.
  • +
  • Add support for -userdir cmdline arg to override the hardcoded user directory.
  • +
  • Reset r_skyfog between maps.
  • +
  • Bump MAX_MODELS/MAX_MOD_KNOWN from 2048 to 4096 (needed by qbj3_hcm from Quake Brutalist Jam 3.)
  • +
  • Support for type 3 (uncompressed grayscale) TGA files (needed by qbj3_rabbit from Quake Brutalist Jam 3.)
  • +
  • Fixes to type 1 (paletted) TGA files support. +
  • SV_PushMove: preserve pusher solid field instead of overwriting with SOLID_BSP.
  • +
  • Fix svc_clientdata weapon byte potentially not being written for mission packs.
  • +
  • Don't spawn monsters when starting map with nomonsters 1.
  • +
  • Disable EXT_packed_pixels support on big endian systems.
  • +
  • Allow any supported music type to be considered as cdrip.
  • +
  • snd_mpg123 now uses 64 bit-only libmpg123 api if built against mpg123 >= 1.33.0
  • +
  • Initial escripten wasm port.
  • +
  • Code cleanups, minor fixes, updates to third party code.
  • +
  • Thanks to Andrei Drexler, Alexey Lysiuk, Roman Turchin, Justin, Jesse Elliott and Alexander Tsoy for patches.
  • +
+

+ +

5.2 Changes in 0.96.3 +

+

+

    +
  • Fix potential infinite loop when playing sounds with loop start >= end (e.g. misc/forcefield.wav from Madfox's kaptlog.zip)
  • +
  • Fix possible overflow when resampling very big sounds (e.g. gram1.wav from the 'A day like no other' mod.)
  • +
  • Change Sky_ClipPoly to allocate on the heap in if MAX_CLIP_VERTS limit is reached (e.g. with lim_daviddg from Liminal Spaces Jam)
  • +
  • Minor code cleanups. Updates to third party code.
  • +
  • Thanks to Andrei Drexler, Vincent Sonnier, Alexey Lysiuk, and Jaycie Ewald for patches.
  • +
+

+ +

5.3 Changes in 0.96.2 +

+

+

    +
  • Fix stack buffer overrun Mod_PolyForUnlitSurface: fixes crash when loading lim_daviddg.bsp from Liminal Spaces Jam.
  • +
  • Fix potential buffer overflow in progs global string functions.
  • +
  • Fix potential buffer overflow in Mod_LoadAliasFrame()
  • +
  • Optimize BoxOnPlaneSide()
  • +
  • Reserve enough space in PF_makestatic() for worst case scenarios.
  • +
  • Improve handling of huge entities in SV_FindTouchedLeafs()
  • +
  • Warn about bad maps with only 1 or 2 edges per face (e.g.: mj4m?, alk_dancing, ej3_bizz, rotj_entsoy...)
  • +
  • Apply FOV gun scaling for r_showtris
  • +
  • Sliders with visible values in options menu.
  • +
  • game command now refuses setting a non-existing game directory
  • +
  • Fix build in C23 mode.
  • +
  • Minor code cleanups. Updated third party code, e.g. SDL, music codecs, etc.
  • +
  • Thanks to Andrei Drexler, Alexey Lysiuk, Diordany van Hemert, and Jaime Moreira for patches.
  • +
+

+ +

5.4 Changes in 0.96.1 +

+

+

    +
  • Fix demo recording as client-only after connection to server (was broken by signon changes in 0.96.0. Thanks to Jozsef Szalontai for issue report.)
  • +
  • Fix potential buffer overflow in COM_Parse(), e.g. with maps with oversized 'wad' fields. (Thanks to Andrei Drexler.)
  • +
  • Minor code cleanups.
  • +
+

+ +

5.5 Changes in 0.96.0 +

+

+

    +
  • Adjustments to joystick defaults and behaviour. See the "Controller support / Cvars" section above.
  • +
  • Fix for a mouse grabbing issue on macOS.
  • +
  • Add missing support for -ip command line option on unix / macOS.
  • +
  • Backport angled sprites code from FTEQW (spriteframetype: 2, must have 8 frames per group.)
  • +
  • Bump the progs execution runaway loop limit to 16M.
  • +
  • Add signon buffer fragmentation to fix SZ_GetSpace errors on certain maps when using protocol 999.
  • +
  • Increased MAX_DATAGRAM to 64000 to overcome packet overflows.
  • +
  • Bump the MAXALIASFRAMES limit to 1024.
  • +
  • Fix arrays to have proper sizes in gl mesh code, reflecting MAXALIASTRIS and MAXALIASVERTS correctly. (fixes SIGSEGV in mj4m4/mj4m5.)
  • +
  • Increased default value of gl_farclip to 65536.
  • +
  • Increase chase cam target trace distance to allow for chasecam to function in large open maps (useful e.g. for the func_vehicle mod.)
  • +
  • Raised default maximum number of particles to 16384 (can be set up to 32768 with -particles on the command line.)
  • +
  • Fix on-screen keyboard showing up suddenly on Steam Deck when starting a map.
  • +
  • Fix viewmodel interpolation with >10Hz animations.
  • +
  • Fix a memory leak when exiting game in SDL2 builds.
  • +
  • Fix a possible crash when handling clipboard data on macOS.
  • +
  • Fix a potential crash after loading of saved game.
  • +
  • Fix possible out-of-bound reads when handling progs type sizes.
  • +
  • Fix Dutch angle VP_PARALLEL_UPRIGHT sprites.
  • +
  • Fix an issue with lights blending by using 10 bit color depth for lightmaps. (For GLSL mode only.) Disable with "-nopackedpixels", if necessary.
  • +
  • No relative motions when the window is not focused.
  • +
  • Status bar and intermission screen tweaks.
  • +
  • Properly display monster counts > 3 digits.
  • +
  • Fix console animation with scr_conspeed <= 0.
  • +
  • Fix mouselook not working upon game quickload during a demo play.
  • +
  • Haiku operating system support.
  • +
  • Fix console when server is run noninteractively with stdin redirected from /dev/null.
  • +
  • Updated Visual Studio project files.
  • +
  • Minor code cleanups. Updated third party code, e.g. SDL, music codecs, etc.
  • +
  • Thanks to Andrei Drexler, Alexey Lysiuk, Andrey Budko, Boris I. Bendovsky, Chris Cowan, Maciej OlÄ™dzki, Simon McVittie, OscarL, Eric Wasylishen, Jaycie Ewald and Spike for patches.
  • +
+

+ +

5.6 Changes in 0.95.1 +

+

+

    +
  • Allow mixing lit and unlit textures in the same map.
  • +
  • Water texture mipmapping support - fixes glistening effect on distant water.
  • +
  • Fix screen flashes in some maps with AMD's new drivers.
  • +
  • Defend against zero-sized textures, e.g. __TB_empty in qbj_grue.bsp
  • +
  • Fix possible file pointer leak in game load code.
  • +
  • Minor code cleanups. Updated third party code, e.g. SDL, music codecs, etc.
  • +
  • Thanks to 'temx' for his patches.
  • +
+

+ +

5.7 Changes in 0.95.0 +

+

+

    +
  • Add support for lit water (patch contributed by Josiah Jack, with fixes from Eric Wasylishen.)
  • +
  • Add model scale support -- requires protocol 999. (Original patch contributed by Josiah Jack with fixes from temx and Andrei Drexler. Thanks to Eric Wasylishen, MH and Spike for useful discussions.)
  • +
  • Add sv_cheats cvar for 2021 rerelease (patch from Andrei Drexler).
  • +
  • Clear the startdemo list on game change (patch by Andrei Drexler).
  • +
  • Try light trace from entity origin first (patch by Andrei Drexler).
  • +
  • Backport a few fixes to the bundled SDL2-2.0.22 version.
  • +
+

+ +

5.8 Changes in 0.94.7 +

+

+

    +
  • Fix console history buffer wrapping.
  • +
  • Fix wrong external texture use after vid_restart.
  • +
  • Update lodepng from mainstream git.
  • +
  • Miscellaneous source code cleanups.
  • +
+

+ +

5.9 Changes in 0.94.6 +

+

+

    +
  • Server protocol size check fixes for sounds and particles.
  • +
  • An invalid memory access fix in the jpg screenshot writer.
  • +
  • Basic dependency tracking in Makefiles.
  • +
  • Backported a few fixes to the bundled SDL2-2.0.22 version.
  • +
  • Minor build fix for C++ compilers.
  • +
  • Other small improvements elsewhere in the code.
  • +
+

+ +

5.10 Changes in 0.94.5 +

+

+

    +
  • Compatibility with new SDL2 versioning scheme.
  • +
  • Revised min/max/clamp macros' usage.
  • +
  • Fixed a potential undefined behavior in R_DrawAliasModel.
  • +
  • Fixed parsing of the time argument of svc_fog server message. (it has been broken for more than 20 years and has never seem to have been used.)
  • +
  • image: support for type 1 (paletted) TGA files.
  • +
  • Other small improvements elsewhere in the code.
  • +
  • Backported a few fixes to the bundled SDL2-2.0.22 version.
  • +
+

+ +

5.11 Changes in 0.94.4 +

+

+

    +
  • Fixed getting stuck with loading plaque upon attempting to load a bad save from the menu
  • +
  • Fixed SZ_GetSpace server crashes, e.g. in ad_magna or ad_mountain
  • +
  • Fixed intermission camera angles during demo playback
  • +
  • Don't reset onground flag on every new server message
  • +
  • Re-enabled title demos by default (turn off with cl_startdemos 0)
  • +
  • Don't autoplay next demo after a timedemo
  • +
  • Fixed bad parsing of cdtrack in hipdemo1 from Scourge of Armagon
  • +
  • Fixed serverinfo off-by-one nummodels/numsounds for protocol 15
  • +
  • Support for Quake 2021 update 3
  • +
  • Implemented quad/pentagram dlights for Quake 2021 rerelease
  • +
  • Implemented 2021 rerelease localsound builtin & svc_localsound (56)
  • +
  • Several other improvements to Quake 2021 rerelease support
  • +
  • Several other small fixes and improvements all over the code
  • +
  • Updated third party code (SDL, lodepng, miniz, some of the codecs, etc.)
  • +
  • Thanks to Andrei Drexler, 'atsb' and 'temx' for their several patches.
  • +
+

+ +

5.12 Changes in 0.94.3 +

+

+

    +
  • Handle sky textures with non-standard sizes and warn about them (e.g. ad_tears)
  • +
  • Allow loading textures not aligned to 16 pixels and warn about them (eg. the horde2 map of Dimension of the Machine from 2021 rerelease update/2.)
  • +
  • Updated included SDL2 to latest version 2.0.18.
  • +
+

+ +

5.13 Changes in 0.94.2 +

+

+

    +
  • 2021 rerelease: Support for playing the latest update.
  • +
  • 2021 rerelease: Fix pitch black models in lit areas in DOTM.
  • +
  • 2021 rerelease: Fix black candles in the DOTM start map.
  • +
  • 2021 rerelease: Look for QuakeEX.kpf under userdir, too.
  • +
+

+ +

5.14 Changes in 0.94.1 +

+

+

    +
  • Fix lightmap issues after vkQuake surface mark/cull optimizations merge (sf.net bug/50)
  • +
+

+ +

5.15 Changes in 0.94.0 +

+

+

    +
  • Initial support for playing the 'Quake 2021 re-release' content (thanks to Andrei Drexler for bulk of the work, Guillaume Plourde for Q64 bsp format support.)
  • +
  • Fix rendering bug when cl_bobcycle was set to zero (sf.net bug/41)
  • +
  • Fixed buffer overflow with large char skybox names (sf.net bug/38)
  • +
  • Fixed a missing MAXALIASFRAMES bounds check (sf.net bug/37)
  • +
  • OpenGL: workaround Intel UHD 600 driver bug (sf.net bug/39)
  • +
  • OpenGL: merged surface mark & cull optimizations from vkQuake.
  • +
  • Compensate viewmodel distortion at fov > 90 (based on code from Qrack, thanks to Andrei Drexler for the patch.)
  • +
  • Raised MAX_GLTEXTURES limit from 2048 to 4096 for now.
  • +
  • Changed 'model has a skin taller than 480' error into a warning
  • +
  • Reject lit files if they're the wrong size (eg hipnotic/start.bsp vs id1/start.lit or just a bsp that no longer has any coloured lits, etc)
  • +
  • External ent files are now versioned using 4 digit crc of the original map's ents, like e1m1@c49d.ent, which is much safer. The old method (e.g. e1m1.ent) still works but isn't recommended.
  • +
  • Support for external vis files.
  • +
  • Save: remove CR/LFs from level name to avoids broken saves, e.g. with autumn_sp map.
  • +
  • Music: improvements to mp3 tag detection / skipping.
  • +
  • Music: umx loader fix for malformed / crafted files.
  • +
  • New console command music_jump: Jump to given order in music, like Unreal's music change - only for module (tracker) music.
  • +
  • Updated third-party libraries (music codecs, SDL, etc.) Other minor fixes, tidy-ups and protability tweaks.
  • +
  • Source repository moved to git.
  • +
+

+ +

5.16 Changes in 0.93.2 +

+

+

    +
  • Lightmaps are now dynamically allocated (from QSS), and BLOCK_WIDTH/HEIGHT raised from 128 to 256.
  • +
  • Fixed several uncheked limits that would crash the Slayer's Testaments mod (sf.net bug #33).
  • +
  • Raised MAXALIASTRIS from 2048 to 4096, so that the Slayer's Testaments mod works.
  • +
  • Fixed 'pants' and 'shirt' types so that those textures load correctly on platforms where char type is unsigned by default (sf.net bug #28).
  • +
  • Windows audio: WASAPI-enabled SDL2 dlls function properly now.
  • +
  • Update the third-party libraries. Other fixes/cleanups.
  • +
+

+ +

5.17 Changes in 0.93.1 +

+

+

    +
  • Fixed a fog regression which was introduced in 0.93.0.
  • +
  • Fixed a crash (buffer overflow) with invalid vis data.
  • +
  • Fixed buttons crushing players in 64-bit builds.
  • +
  • Change controller movement to use cubic easing by default; added "joy_exponent_move" cvar.
  • +
  • config.cfg is no longer written in case of a Sys_Error.
  • +
  • Fixed Opus encoded cd tracks not being recognized as ripped tracks.
  • +
  • Update the third-party libraries. Other fixes/cleanups.
  • +
+

+ +

5.18 Changes in 0.93.0 +

+

+

    +
  • Raise default "joy_deadzone_trigger" cvar to 0.2.
  • +
  • Raise console buffer size to 1MB.
  • +
  • Raise MAX_STATIC_ENTITIES from 512 to 4096.
  • +
  • Raise MAX_STACK_DEPTH from 32 to 64.
  • +
  • Raise command buffer size from 8K to 256K to support large configs.
  • +
  • Remove MAX_EFRAGS and MAX_MAP_LEAFS limits.
  • +
  • Remove "Loadgame buffer overflow" limit, which could happen when loading DP or QSS saves.
  • +
  • Adjust "exceeds standard limit of" debug warnings to include the actual QS limit.
  • +
  • Change "game" command to now exec quake.rc.
  • +
  • Change "games" / "mods" commands to list all subdirectories.
  • +
  • Restore vid_refreshrate from fitzquake-0.85 for SDL2 builds.
  • +
  • Alpha-masked model support. (MF_HOLEY: 0x4000).
  • +
  • Invalid skin index now draws skin 0 (WinQuake behaviour) instead of blue checkerboard.
  • +
  • Change default screenshot format to png. The 'screenshot' command now supports optional format (tga, png or jpg) and quality (1-100) arguments.
  • +
  • Revert "always run" changes from 0.85.9 and move the QuakeSpasm customizations to a new "cl_alwaysrun" cvar: Set to 1 in order to scale forward/side/up speed by "cl_movespeedkey" (usually 2), and to make "speedkey" act as "slowkey".
  • +
  • Change the "always run" menu option to offer three choices: +
    +off        (cl_alwaysrun 0, cl_forwardspeed 200, cl_backspeed 200)
    +vanilla    (cl_alwaysrun 0, cl_forwardspeed 400, cl_backspeed 400)
    +quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
    +
    +
  • +
  • New "r_scale" cvar. Set to 2, 3, or 4 to render the view at 1/2, 1/3, or 1/4 resolution.
  • +
  • New "r_viewmodel_quake" cvar. Set to 1 for WinQuake gun position (from MarkV).
  • +
  • New "find" / "apropos" command, searches for commands/cvar names for the given substring (from Spike).
  • +
  • New "randmap" command for loading a random map.
  • +
  • New "gl_cshiftpercent_contents", "gl_cshiftpercent_damage", "gl_cshiftpercent_bonus", "gl_cshiftpercent_powerup" cvars for tuning the strength of specic view blends.
  • +
  • GL2 renderer: use a GLSL shader for world faces. Fixes reports of integrated+discrete GPU laptops having inconsistent fog rendering.
  • +
  • Fix macOS startup delay (avoid calling gethostbyname() for ".local" hostnames).
  • +
  • Fix memory corruption in PF_lightstyle with out of bounds lightstyles.
  • +
  • Fix crash in BoundPoly with polygons extending beyond +/-9999.
  • +
  • Fix QS window to stay on the current monitor when changing video modes (SDL2 only).
  • +
  • Fix possible freeze in SV_TouchLinks regardless of what QC does in the touch function.
  • +
  • Fix for maps with empty strings for vector keys (e.g. "origin"); don't read uninitialized memory.
  • +
  • Support for Open Watcom compiler.
  • +
  • Update the third-party libraries.
  • +
+

+ +

5.19 Changes in 0.92.1 +

+

+

    +
  • Fixed large menu scale factors (was broken in 0.92.0).
  • +
  • Fixed PAUSE key (was broken in 0.92.0).
  • +
  • Updated some of the third-party libraries.
  • +
+

+ +

5.20 Changes in 0.92.0 +

+

+

    +
  • SDL2 Game Controller support.
  • +
  • Contrast support with new "contrast" cvar, behaving the same as MarkV. It may be a useful alternative to the existing gamma control for laptops in a bright environment, etc. Raising contrast gives less of a gray/washed out look than raising gamma, but at a disadvantage: colors near white get clipped to white.
  • +
  • RMQ protocol (999) support, adapted from RMQEngine.
  • +
  • New "-protocol x" command line option. Accepted values for 'x' are 15 (NetQuake), 666 (FitzQuake, default), and 999 (RMQ).
  • +
  • New "setpos" console command.
  • +
  • New "vid_borderless" cvar for getting a borderless window.
  • +
  • Increased MAX_MAP_LEAFS from 65535 to 70000 and MAX_LIGHTMAPS from 256 to 512 in order to handle the oms3 map pack.
  • +
  • Server edicts are now allocated using malloc instead of allocating on the hunk.
  • +
  • gl_clear now defaults to 1.
  • +
  • Fix items falling out of the world on oms3.bsp on SSE builds.
  • +
  • Worked around an OSX 10.6 driver bug when using FSAA, which was leading to an unplayable HOM effect on the rest of the screen.
  • +
  • Fix wrong trace endpoint from the tracepos console command.
  • +
  • Updated some of the third-party libraries. Other fixes/clean-ups.
  • +
+

+ +

5.21 Changes in 0.91.0 +

+

Bugfixes

+

+

    +
  • Fix unwanted fog mode change upon video restart.
  • +
  • Work around Intel 855 bug in status bar drawing with "r_oldwater 0" and "scr_sbaralpha 0".
  • +
  • Fix an obscure GLSL bug where changing gamma would result in the screen turning to noise.
  • +
  • Fix GLSL gamma causing the tiled screen border to turn white when "sizedown" is used.
  • +
  • Fix an alias model VBO renderer bug where a model not precached during map start wouldn't be drawn.
  • +
  • Fix the order of OpenGL context creation and window creation in SDL2 video.
  • +
  • Fix a calling convention issue in windows DPI awareness function pointers.
  • +
  • Fix a random texture recoloring after video mode change.
  • +
  • Fix a liquid turning to garbage after several video mode changes and "r_oldwater 0".
  • +
  • Fix a wrong alpha-sorting bug introduced in 0.90.1.
  • +
  • Fix "flush" command not reloading mdl's from disk (bug introduced in 0.90.1).
  • +
  • Prevent a possible buffer overflow in Cbuf_Execute (old Q1/Q2 bug).
  • +
  • Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug).
  • +
+

+

Visual improvements

+

+

    +
  • New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning specific liquid opacities (from DirectQ/RMQEngine, non-archived, default to 0), and new worldspawn keys _wateralpha, _lavaalpha, _slimealpha, _telealpha, _skyfog (unique to Quakespasm, similar to the behaviour of the "fog" worldspawn key).
  • +
  • GLSL gamma is now supported on older hardware without NPOT extension.
  • +
+

+

Interface improvements

+

+

    +
  • New r_pos command to show player position.
  • +
  • NaN detection in traceline with "developer 1" set now warns instead of errors.
  • +
+

+

Code cleanup / Other

+

+

    +
  • Update third-party libraries.
  • +
+

+

Raised limits

+

+

    +
  • Default max_edicts 8192 (was 2048) and no longer saved to config.cfg.
  • +
  • Default heapsize 256 MB (was 64 MB).
  • +
  • Default zone 4 MB (was 384 KB).
  • +
  • Raised MAX_SFX to 1024 (was 512).
  • +
+

+ +

5.22 Changes in 0.90.1 +

+

Bugfixes

+

+

    +
  • Fix dynamic light artifact where changing lightmap are rendered one frame late (bug introduced in 0.90.0).
  • +
  • Fix texture memory leak when changing video modes with SDL2.
  • +
  • Fix a rare incorrect mdl lighting on 64-bit builds. +(details here.)
  • +
  • Fix fullbrights turning black after "kill" command (bug introduced in 0.90.0).
  • +
  • Clear all fog values on map change to prevent colored fog carrying over to jam3_tronyn.bsp.
  • +
  • Allow loading saves with } character in quoted strings, fixes issue with retrojam1_skacky.bsp.
  • +
  • Fix viewmodel not lerping on extended-limit maps.
  • +
  • Fix crash on out-of-bounds skin number.
  • +
+

+

Performance

+

+

    +
  • Use multithreaded OpenGL on OS X for better performance.
  • +
  • New, faster mdl renderer using GLSL. Disable with "-noglslalias".
  • +
+

+

Visual improvements

+

+

    +
  • New gamma correction implementation using GLSL. Fixes all known gamma issues (affecting the full display, persisting after quitting, or darkening the screen on OS X). Disable with "-noglslgamma".
  • +
  • Use high-quality water by default (r_oldwater 0).
  • +
  • Shadows use stencil buffer to avoid overlapping artifacts (from MarkV.)
  • +
  • r_noshadow_list cvar added (from MarkV.)
  • +
+

+

Interface improvements

+

+

    +
  • Support pausing demo playback with the "pause" command.
  • +
  • Autocompletion for "game", "record", "playdemo".
  • +
  • Experimental windowed fullscreen mode available with vid_desktopfullscreen 1 (only in SDL2 builds, takes effect upon entering fullscreen mode the next time.)
  • +
  • Silence "exceeded standard limit" messages unless developer cvar is >= 1.
  • +
  • Some spam moved from developer 1 to 2: "can't find tga/lit/ent", "trying to load ent", "bad chunk length", "meshing", "PR_AlocStringSlots: realloc'ing"
  • +
+

+

Code cleanup

+

+

    +
  • Clean up IDE project files to build on fresh systems.
  • +
  • Update 3rd-party libraries.
  • +
+

+ +

5.23 Changes in 0.90.0 +

+

+

    +
  • Fix issues on Windows systems with DPI scaling.
  • +
  • Unix/Mac user directories support. Disabled by default,
    +'make DO_USERDIRS=1' to enable it.
  • +
  • SDL2 support. Disabled by default, 'make USE_SDL2=1' to enable it.
  • +
  • Revised keyboard input code.
  • +
  • Revised/improved the 'game' command, i.e. on-the-fly mod changing. It now accepts an optional second argument for mission packs or quoth support i.e. -hipnotic, -rogue, or -quoth. For example, for WarpSpasm: "game warp -quoth"
  • +
  • Command line: "-game {quoth/hipnotic/rogue}" is now treated the same as -quoth, -hipnotic, or -rogue.
  • +
  • Console speed now resolution-independent.
  • +
  • Disabled gl_zfix, which caused glitches and is undesirable for new maps. Replacement .ent files to fix z-fighting for several id1 maps added to quakespasm.pak.
  • +
  • PF_VarString buffer bumped to 1024, avoids truncated centerprints from the 'In The Shadows' mod.
  • +
  • Support for opengl non-power-of-two-textures extension (disable with command line: "-notexturenpot".)
  • +
  • Support for OpenGL vertex buffer objects (VBO, OpenGL 1.5 or newer) for world and brush models (disable with command line: "-novbo".)
  • +
  • Antialiasing (FSAA) support (command line: -fsaa x, where x can be 0, 2, 4, 8).
  • +
  • Fence textures support.
  • +
  • Dynamic light speedup. Speedup loading of tga and pcx external images.
  • +
  • Brush model drawing speedup.
  • +
  • Support for BSP2 and 2PSB map formats.
  • +
  • Support for Opus, FLAC, and tracker music (S3M, IT, UMX, etc.), as compile-time options.
  • +
  • Music and sfx now mixed at 44100 Hz to avoid downsampling music. Low-pass filter applied to the sfx if -sndspeed is 11025 (the default), to preserve the same sound quality as 0.85.9. New -mixspeed option sets the rate for mixing sfx and music, and output to the OS (default 44100), setting it to 11025 reverts to 0.85.9 behaviour. New snd_filterquality cvar, value can be between 1 (emulate OS X resampler) and 5 (emulate Windows resampler), controls the sound of the low-pass filter.
  • +
  • Better Hor+ field of view (FOV) scaling behavior.
  • +
  • Better cross-map demo playback support.
  • +
  • Fix screenshots when screen width isn't a multiple of 4.
  • +
  • Fix a lighting glitch due to floating point precision.
  • +
  • Fix a looping sounds glitch.
  • +
  • Fix a vulnerability in file extension handling. Tighten path handling safety.
  • +
  • Initialize opengl with 24-bit depth buffer at 32 bpp.
  • +
  • Reset all models upon gamedir changes. (Fixes failures with mods using custom content.)
  • +
  • Fix broken behavior upon gamedir changes if -basedir is specified on the command line.
  • +
  • NET_MAXMESSAGE and MAX_MSGLEN limits bumped to 64000.
  • +
  • MAX_EFRAGS bumped to 4096, and MAX_CHANNELS to 1024.
  • +
  • MAX_ENT_LEAFS bumped from 16 to 32 to work around disappearing or flickering brush models in some situations. Also, if an entity is visible from MAX_ENT_LEAFS or more leafs, we now always send it to the client.
  • +
  • Fix cvar cycle command not working sometimes.
  • +
  • Host_Error upon missing models. (Prevents segmentation faults.)
  • +
  • Change sv_aim default value to 1 (i.e. turn off autoaim)
  • +
  • Add 'prev' and 'next' keywords to the 'cd' command.
  • +
  • Work around a linux cdrom issue (playback might not start for a while after a stop).
  • +
  • Quakespasm content customization moved from engine-embedded into a new optional quakespasm.pak file.
  • +
  • Version bumped to 0.90.0 (because Quakespasm has a decent life of it's own)
  • +
  • Other fixes and clean-ups.
  • +
+

+ +

5.24 Changes in 0.85.9 +

+

+

    +
  • Fixes for several undefined behaviors in C code (gcc-4.8 support.)
  • +
  • Implemented Hor+ style field of view (FOV) scaling, useful for widescreen resolutions. Configured by new cvar fov_adapt: set it to 1 and your fov will be scaled automatically according to the resolution. Enabled by default.
  • +
  • Adjusted string buffers for PR_ValueString and friends to fix crashes with excessively long global strings seen in some rude mods.
  • +
  • Toned down warning messages from PF_VarString() a bit.
  • +
  • Fixed Fitzquake's map existence check in changelevel (used to leak file handles which would end up in a Sys_Error() due to consuming all free handles if many maps reside not in pak files.)
  • +
  • Fixes/cleanups in chat mode handling. Client no longer gets stuck in chat mode upon disconnect.
  • +
  • Mouse grab/key_dest fixes and key cleanups.
  • +
  • The "speedkey" now acts as "slowkey" when "always run" is on.
  • +
  • Support for demo recording after connection to server. (thanks to Baker for a patch)
  • +
  • Corner case fixes in COM_Parse() for quoted strings and support for C-style /*..*/ comments.
  • +
  • Changed lightmaps to GL_RGBA instead of GL_RGB.
  • +
  • Better parse for opengl extensions list (from quakeforge.)
  • +
  • Vsync saving/loading fixes.
  • +
  • Fixed pointfile loading.
  • +
  • Multiple cleanups in gl_vidsdl.c.
  • +
  • Opus music decoding support (as an optional patch only.)
  • +
  • Several other minor fixes/cleanups.
  • +
+

+ +

5.25 Changes in 0.85.8 +

+

+

    +
  • Made Quake shareware 1.00 and 1.01 versions to be recognized properly.
  • +
  • Fixed control-character handling in unicode mode. Keyboard input tweaks.
  • +
  • Made the keypad keys to send separate key events in game mode.
  • +
  • Text pasting support from OS clipboard to console. (windows and macosx.)
  • +
  • Support for the Apple (Command) key on macosx.
  • +
  • Fixed increased (more than 32) dynamic lights.
  • +
  • Music playback: Made sure that the file's channels count is supported.
  • +
  • Support for Solaris.
  • +
  • Switched to using libmad instead of libmpg123 for MP3 playback on Mac OS X.
  • +
  • Better support for building the Mac OS X version using a makefile, support for cross-compiling on Linux.
  • +
  • Fixed a minor intermissions glitch.
  • +
  • Increased string buffer size from 256 to 384 for PF_VarString to work around broken mods such as UQC.
  • +
  • Restored original behavior for Quake registered version detection.
  • +
  • Minor demo recording/playback tweaks.
  • +
  • Minor tweaks to the scale menu option.
  • +
  • unbindall before loading stored bindings (configurable by new cvar cfg_unbindall, enabled by default.)
  • +
  • New icon.
  • +
  • Miscellaneous source code cleanups.
  • +
+

+ +

5.26 Changes in 0.85.7 +

+

+

    +
  • Added support for cross-level demo playback
  • +
  • gl_texturemode is reimplemented as a cvar with a callback and the setting is automatically saved to the config
  • +
  • Fixed execution of external files without a newline at the end
  • +
  • Reduced memory usage during reloading of textures
  • +
  • Fixed compilation on GNU/kFreeBSD (Debian bug #657793)
  • +
  • Fixed backspace key on Mac OS X
  • +
  • Disable mouse acceleration in Mac OS X
  • +
  • Worked around recursive calling of the anisotropic filter callback
  • +
  • Console word wrap and long input line fixes
  • +
  • Verified correct compilation by clang (using v3.0)
  • +
  • Several other small changes mostly invisible to the end-user
  • +
+

+ +

5.27 Changes in 0.85.6 +

+

+

    +
  • More work for string buffer safety
  • +
  • Reverted v0.85.5 change of not allowing deathmatch and coop cvars to be set at the same time (was reported for possibility of causing compatibility issues with mods)
  • +
  • Several cleanups/changes in the cvar layer
  • +
  • Minor SDL video fixes.
  • +
+

+ +

5.28 Changes in 0.85.5 +

+

+

    +
  • SDL input driver updated adding native keymap and dead key support to the console
  • +
  • Fixed a crash in net play in maps with extended limits
  • +
  • Verified successful compilation using gcc-4.6.x
  • +
  • Added workaround against GL texture flicker (z fighting), controlled by new cvar 'gl_zfix'
  • +
  • Read video variables early so that a vid_restart isn't necessary after init
  • +
  • mlook and lookspring fixes
  • +
  • Added support for loading external entity files, controlled by new cvar 'external_ents'
  • +
  • Made mp3 playback to allocate system memory instead of zone
  • +
  • Some updates to the progs interpreter code
  • +
  • Fixed r_nolerp_list parsing code of fitzquake
  • +
  • Made sure that deathmatch and coop are not set at the same time
  • +
  • Several code updates from uHexen2 project, several code cleanups.
  • +
+

+ +

5.29 Changes in 0.85.4 +

+

+

    +
  • Implement music (OGG, MP3, WAV) playback
  • +
  • A better fix for the infamous SV_TouchLinks problem, no more hard lockups with maps such as "whiteroom"
  • +
  • Add support for mouse buttons 4 and 5
  • +
  • Fix the "unalias" console command
  • +
  • Restore the "screen size" menu item
  • +
  • Fixed an erroneous protocol check in the server code
  • +
  • Raised the default zone memory size to 384 kb
  • +
  • Raised the default max_edicts from 1024 to 2048
  • +
  • Revised lit file loading, the lit file must be from the same game directory as the map itself or from a searchpath with a higher priority
  • +
  • Fixed rest of the compiler warnings
  • +
  • Other minor sound and cdaudio updates
  • +
+

+ +

5.30 Changes in 0.85.3 +

+

+

    +
  • Fix the "-dedicated" option (thanks Oz) and add platform specific networking code (default) rather than SDL_net
  • +
  • Much needed OSX framework stuff from Kristian
  • +
  • Add a persistent history feature (thanks Baker)
  • +
  • Add a slider for scr_sbaralpha, which now defaults to 0.95 (slightly transparent, allowing for a nicer status bar)
  • +
  • Allow player messages longer than 32 characters
  • +
  • Sockaddr fix for FreeBSD/OSX/etc networking
  • +
  • Connect status bar size to the scale slider
  • +
  • Include an ISNAN (is not-a-number) fix to catch the occassional quake C bug giving traceline problems
  • +
  • Enumerate options menus
  • +
  • Add a "prev weapon" menu item (from Sander)
  • +
  • Small fix to Sound Block/Unblock on win32
  • +
  • Lots of code fixes (some from uhexen2)
  • +
  • Sys_Error calls Host_Shutdown
  • +
  • Added MS Visual Studio support
  • +
  • Add a "-cd" option to let the CD Player work in dedicated mode, and some other CD tweaks.
  • +
+

+ +

5.31 Changes in 0.85.2 +

+

+

    +
  • Replace the old "Screen size" slider with a "Scale" slider
  • +
  • Don't constantly open and close condebug log
  • +
  • Heap of C clean-ups
  • +
  • Fix mapname sorting
  • +
  • Alias the "mods" command to "games"
  • +
  • Block/Unblock sound upon focus loss/gain
  • +
  • NAT (networking protocol) fix
  • +
  • SDLNet_ResolveHost bug-fix allowing connection to ports other than 26000
  • +
  • Bumped array size of sv_main.c::localmodels from 5 to 6 fixing an old fitzquake-0.85 bug which used to cause segfaults depending on the compiler.
  • +
  • Accept commandline options like "+connect ip:port"
  • +
+

+ +

5.32 Changes in 0.85.1 +

+

+

    +
  • 64 bit CPU support
  • +
  • Restructured SDL sound driver
  • +
  • Custom conback
  • +
  • Tweaked the command line completion and added a map/changelevel autocompletion function
  • +
  • Alt+Enter toggles fullscreen
  • +
  • Disable Draw_BeginDisc which causes core dumps when called excessively
  • +
  • Show helpful info on start-up
  • +
  • Include real map name (sv.name) and skill in the status bar
  • +
  • Remove confirm quit dialog
  • +
  • Don't spam the console with PackFile seek requests
  • +
  • Default to window mode
  • +
  • Withdraw console when playing demos
  • +
  • Don't play demos on program init
  • +
  • Default heapsize is 64 MB.
  • +
  • Changes to default console alpha, speed
  • +
  • Changes to cvar persistence gl_flashblend (default 0), r_shadow, r_wateralpha, r_dynamic, r_novis.
  • +
+

+ + +

6. Copyright

+

+

+

+ +

7. Contact

+

+

+

+ +

8. Links

+

+

+

+ + + diff --git a/Quakespasm.txt b/Quakespasm.txt new file mode 100644 index 0000000..d73f670 --- /dev/null +++ b/Quakespasm.txt @@ -0,0 +1,1346 @@ + QuakeSpasm + + ______________________________________________________________________ + + + Page last edited: February 2026. + + + 1. About + + QuakeSpasm is a modern cross-platform Quake engine based on FitzQuake. + + It includes support for 64 bit CPUs and custom music playback, a new + sound driver, some graphical niceities, and numerous bug-fixes and + other improvements. + + Quakespasm utilizes SDL-1.2 or SDL2 frameworks, choose one which works + best for you. SDL2 has nicer features, smoother mouse input and better + support for newer operating systems, but no CD-ROM support. + + + 2. Downloads + + - Project Downloads: http://quakespasm.sourceforge.net/download.htm + + - Latest code repository: + https://sourceforge.net/p/quakespasm/quakespasm/ci/master/tree/ + + - Github mirror: + https://github.com/sezero/quakespasm + + + 3. Hints + + Visit the FitzQuake homepage for a + full run-down of the engine's commands and variables. + + - To disable some changes, use "quakespasm -fitz" + + - Quakespasm's custom data is stored in "quakespasm.pak". Install + this file alongside your id1 directory to enable the custom console + background and other minor features. + + - For different sound backend drivers use : + "SDL_AUDIODRIVER=DRIVER ./quakespasm" + where DRIVER may be alsa, dsp, pulse, esd ... + + - Shift+Escape draws the Console. + + - From the console, use UP to browse the command line history and TAB + to autocomplete command and map names. + + - There is currently no CD Music volume support and SDL2 doesn't + support CD audio. cd_sdl.c needs replacing with cd_linux.c, + cd_bsd.c etc.. + + - In windows, alternative CD drives are accessible by + "quakespasm -cddev F" (for example) + + - Quakespasm allows loading new games (mods) on the fly with + "game GAMENAME {-quoth/hipnotic/rogue}" + + - Use "quakespasm -condebug" to save console log to "qconsole.log". + SDL2 builds no longer generate stdout.txt/stderr.txt. + + + Music Playback: + + Quakespasm can play various external music formats, including MP3, OGG + and FLAC. + + - Tracks should be named like "track02.ogg", "track03.ogg" ... (there + is no track01) and placed into "Quake/id1/music". + + - Unix users may need some extra libraries installed: "libmad" or + "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG. + + - Use the "-noextmusic" option to disable this feature. + + - As of 0.90.0, music is played back at 44100 Hz by default with no + need to adjust "-sndspeed". + + - See Quakespasm-Music.txt for more details. + + + Controller Support: + + The SDL2 variant of Quakespasm supports Xbox 360 style game + controllers. + + The default configuration uses the left analog stick for movement and + the right for looking. + + If your controller doesn't work you can try placing this file + https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt + in your Quake directory, it is a community-maintained database that + adds support for more controllers to SDL2. + + Controller Support - Cvars: + + - joy_deadzone_look - Fraction of look stick travel to be deadzone, + between 0 and 1. Default is 0.175. + + - joy_deadzone_move - Same as above, but for the move stick. Default + is 0.175. + + - joy_deadzone_trigger - Fraction of trigger range required to + register a button press on the analog triggers, between 0 and 1. + Default 0.2. + + - joy_outer_threshold_look - Outer deadzone for the look stick, + between 0 and 1. Default 0.02. + + - joy_outer_threshold_move - Outer deadzone for the move stick, + between 0 and 1. Default 0.02. + + - joy_sensitivity_yaw/pitch - Max angular speed in degrees/second + when looking. Defaults are 240 for yaw (turning left/right) and 130 + for pitch (up/down). + + - joy_exponent - For the look stick, the stick displacement (between + 0 and 1) is raised to this power. Default is 2. A value of 1 would + give a linear relationship between stick displacement and fraction + of the maximum angular speed. + + - joy_exponent_move - Same as joy_exponent but for the move stick. + Default is 2. + + - joy_invert - Set to 1 to invert the vertical axis of the look + stick. + + - joy_swapmovelook - Set to 1 to swap the left and right analog stick + functions. Default is 0, move on the left stick, look on the right + stick. + + - joy_enable - Set to 0 to disable controller support. Default is 1. + + Controller Support - Buttons: + + Some of the controller buttons are hardcoded to allow navigating the + menu: + + - Back - alias for TAB + - Start - alias for ESC + - DPad, analog sticks - mapped to arrow keys + - A Button - alias for ENTER in menus + - B Button - alias for ESC in menus + + These buttons can be bound normally: + + - LTRIGGER - Left trigger + - RTRIGGER - Right trigger + - LSHOULDER - Left shoulder button + - RSHOULDER - Right shoulder button + - LTHUMB - Clicking the left thumbstick + - RTHUMB - Clicking the right thumbstick + - ABUTTON + - BBUTTON + - XBUTTON + - YBUTTON + + quakespasm.pak contains a default.cfg which has been updated to give + some default bindings. L/R shoulder buttons are bound to weapon + switching, and L/R triggers are jump and attack. + + The controller support started as Jeremiah Sypult's implementation in + Quakespasm-Rift, and also uses ideas/code from LordHavoc's DarkPlaces. + + + 4. Compiling and Installation + + See the Downloads section to get the sourcecode, then below for + platform specific instructions. Quakespasm can also be built with the + cross-platform Codeblocks. + Quakespasm's (optional) custom data is now stored in the file + quakespasm.pak. This file should be placed alongside your quakespasm + binary and id1 directory. + + Compiling for Linux/Unix: + + After extracting the source tarball, "cd Quake" and edit the Makefile + for music options. + + Streaming music playback requires "libmad" or "libmpg123" for MP3, and + "libogg" and "libvorbis" for OGG files. + + Then type "make" to compile the program, and copy the "quakespasm" + binary (and "quakespasm.pak") to your Quake game directory. + Compile time options include + + - make DO_USERDIRS=1 to include user directories support + + - make DEBUG=1 for debugging + + - make SDL_CONFIG=/PATH/TO/sdl-config for unusual SDL installations + + - make USE_SDL2=1 to compile against SDL2 instead of SDL-1.2 + + Compiling for Windows: + + QuakeSpasm developers cross-compile windows binaries using MinGW-w64 + and MinGW . The + project can also be built using Microsoft Visual Studio 2005 and newer + versions. + + Compiling for Mac OS X: + + A Quakespasm App (including program launcher and update framework) can + be made using the Xcode template found in the MacOSX directory. + + Alternatively, have a look at Makefile.darwin for more instructions on + building from a console. + + Compiling for Escripten: + + Use Makefile.escripten to build. Depends on third party library gl4es: + https://github.com/ptitSeb/gl4es + See: https://github.com/ololoken/ems-runner-quakespasm for a launcher. + + + Quake '2021 re-release': + + QuakeSpasm 0.94 has support for playing the 2021 re-release content: + Copy the quakespasm binary to your rerelease installation and run as + you normally do. + + + 5. Changes + + Changes in 0.97.0: + + - Valve BSP, WAD, and external texture support. + + - The maps console command now takes an optional ModName, e.g.: + 'maps ad' or 'maps id1' + + - New maps_mod console command to list maps only from the active mod. + + - Add support for -userdir cmdline arg to override the hardcoded + user directory. + + - Reset r_skyfog between maps. + + - Bump MAX_MODELS/MAX_MOD_KNOWN from 2048 to 4096 (needed by qbj3_hcm + from Quake Brutalist Jam 3.) + + - Support for type 3 (uncompressed grayscale) TGA files (needed by + qbj3_rabbit from Quake Brutalist Jam 3.) + + - Fixes to type 1 (paletted) TGA files support. + + - SV_PushMove: preserve pusher solid field instead of overwriting + with SOLID_BSP. + + - Fix svc_clientdata weapon byte potentially not being written for + mission packs. + + - Don't spawn monsters when starting map with nomonsters 1. + + - Disable EXT_packed_pixels support on big endian systems. + + - Allow any supported music type to be considered as cdrip. + + - snd_mpg123 now uses 64 bit-only libmpg123 api if built against + mpg123 >= 1.33.0 + + - Initial escripten wasm port. + + - Code cleanups, minor fixes, updates to third party code. + + - Thanks to Andrei Drexler, Alexey Lysiuk, Roman Turchin, Justin, + Jesse Elliott and Alexander Tsoy for patches. + + + Changes in 0.96.3: + + - Fix potential infinite loop when playing sounds with loop start >= + end (e.g. misc/forcefield.wav from Madfox's kaptlog.zip) + + - Fix possible overflow when resampling very big sounds (e.g. + gram1.wav from the 'A day like no other' mod.) + + - Change Sky_ClipPoly to allocate on the heap in if MAX_CLIP_VERTS + limit is reached (e.g. with lim_daviddg from Liminal Spaces Jam) + + - Minor code cleanups. Updates to third party code. + + - Thanks to Andrei Drexler, Vincent Sonnier, Alexey Lysiuk, and + Jaycie Ewald for patches. + + + Changes in 0.96.2: + + - Fix stack buffer overrun Mod_PolyForUnlitSurface: fixes crash when + loading lim_daviddg.bsp from Liminal Spaces Jam. + + - Fix potential buffer overflow in progs global string functions. + + - Fix potential buffer overflow in Mod_LoadAliasFrame() + + - Optimize BoxOnPlaneSide() + + - Reserve enough space in PF_makestatic() for worst case scenarios. + + - Improve handling of huge entities in SV_FindTouchedLeafs() + + - Warn about bad maps with only 1 or 2 edges per face (e.g.: mj4m?, + alk_dancing, ej3_bizz, rotj_entsoy...) + + - Apply FOV gun scaling for r_showtris + + - Sliders with visible values in options menu. + + - game command now refuses setting a non-existing game directory + + - Fix build in C23 mode. + + - Minor code cleanups. Updated third party code, e.g. SDL, music + codecs, etc. + + - Thanks to Andrei Drexler, Alexey Lysiuk, Diordany van Hemert, and + Jaime Moreira for patches. + + + Changes in 0.96.1: + + - Fix demo recording as client-only after connection to server (was + broken by signon changes in 0.96.0. Thanks to Jozsef Szalontai for + issue report.) + + - Fix potential buffer overflow in COM_Parse(), e.g. with maps with + oversized 'wad' fields. (Thanks to Andrei Drexler.) + + - Minor code cleanups. + + + Changes in 0.96.0: + + - Adjustments to joystick defaults and behaviour. See the + "Controller support / Cvars" section above. + + - Fix for a mouse grabbing issue on macOS. + + - Add missing support for -ip command line option on unix / macOS. + + - Backport angled sprites code from FTEQW (spriteframetype: 2, must + have 8 frames per group.) + + - Bump the progs execution runaway loop limit to 16M. + + - Add signon buffer fragmentation to fix SZ_GetSpace errors on + certain maps when using protocol 999. + + - Increased MAX_DATAGRAM to 64000 to overcome packet overflows. + + - Bump the MAXALIASFRAMES limit to 1024. + + - Fix arrays to have proper sizes in gl mesh code, reflecting + MAXALIASTRIS and MAXALIASVERTS correctly. (fixes SIGSEGV in + mj4m4/mj4m5.) + + - Increased default value of gl_farclip to 65536. + + - Increase chase cam target trace distance to allow for chasecam to + function in large open maps (useful e.g. for the func_vehicle mod.) + + - Raised default maximum number of particles to 16384 (can be set + up to 32768 with -particles on the command line.) + + - Fix on-screen keyboard showing up suddenly on Steam Deck when + starting a map. + + - Fix viewmodel interpolation with >10Hz animations. + + - Fix a memory leak when exiting game in SDL2 builds. + + - Fix a possible crash when handling clipboard data on macOS. + + - Fix a potential crash after loading of saved game. + + - Fix possible out-of-bound reads when handling progs type sizes. + + - Fix Dutch angle VP_PARALLEL_UPRIGHT sprites. + + - Fix an issue with lights blending by using 10 bit color depth for + lightmaps. (For GLSL mode only.) Disable with "-nopackedpixels", + if necessary. + + - No relative motions when the window is not focused. + + - Status bar and intermission screen tweaks. + + - Properly display monster counts > 3 digits. + + - Fix console animation with scr_conspeed <= 0. + + - Fix mouselook not working upon game quickload during a demo play. + + - Haiku operating system support. + + - Fix console when server is run noninteractively with stdin + redirected from /dev/null. + + - Updated Visual Studio project files. + + - Minor code cleanups. Updated third party code, e.g. SDL, music + codecs, etc. + + - Thanks to Andrei Drexler, Alexey Lysiuk, Andrey Budko, Boris I. + Bendovsky, Chris Cowan, Maciej Olędzki, Simon McVittie, OscarL, + Eric Wasylishen, Jaycie Ewald and Spike for patches. + + + Changes in 0.95.1: + + - Allow mixing lit and unlit textures in the same map. + + - Water texture mipmapping support - fixes glistening effect on + distant water. + + - Fix screen flashes in some maps with AMD's new drivers. + + - Defend against zero-sized textures, e.g. __TB_empty in qbj_grue.bsp + + - Fix possible file pointer leak in game load code. + + - Minor code cleanups. Updated third party code, e.g. SDL, music + codecs, etc. + + - Thanks to 'temx' for his patches. + + + Changes in 0.95.0: + + - Add support for lit water (patch contributed by Josiah Jack, with + fixes from Eric Wasylishen.) + + - Add model scale support -- requires protocol 999. (Original patch + contributed by Josiah Jack with fixes from temx and Andrei Drexler. + Thanks to Eric Wasylishen, MH and Spike for useful discussions.) + + - Add sv_cheats cvar for 2021 rerelease (patch from Andrei Drexler). + + - Clear the startdemo list on game change (patch by Andrei Drexler). + + - Try light trace from entity origin first (patch by Andrei Drexler). + + - Backport a few fixes to the bundled SDL2-2.0.22 version. + + + Changes in 0.94.7: + + - Fix console history buffer wrapping. + + - Fix wrong external texture use after vid_restart. + + - Update lodepng from mainstream git. + + - Miscellaneous source code cleanups. + + + Changes in 0.94.6: + + - Server protocol size check fixes for sounds and particles. + + - An invalid memory access fix in the jpg screenshot writer. + + - Basic dependency tracking in Makefiles. + + - Backported a few fixes to the bundled SDL2-2.0.22 version. + + - Minor build fix for C++ compilers. + + - Other small improvements elsewhere in the code. + + + Changes in 0.94.5: + + - Compatibility with new SDL2 versioning scheme. + + - Revised min/max/clamp macros' usage. + + - Fixed a potential undefined behavior in R_DrawAliasModel. + + - Fixed parsing of the time argument of svc_fog server message. (it + has been broken for more than 20 years and has never seem to have + been used.) + + - image: support for type 1 (paletted) TGA files. + + - Other small improvements elsewhere in the code. + + - Backported a few fixes to the bundled SDL2-2.0.22 version. + + + Changes in 0.94.4: + + - Fixed getting stuck with loading plaque upon attempting to load a + bad save from the menu + + - Fixed SZ_GetSpace server crashes, e.g. in ad_magna or ad_mountain + + - Fixed intermission camera angles during demo playback + + - Don't reset onground flag on every new server message + + - Re-enabled title demos by default (turn off with cl_startdemos 0) + + - Don't autoplay next demo after a timedemo + + - Fixed bad parsing of cdtrack in hipdemo1 from Scourge of Armagon + + - Fixed serverinfo off-by-one nummodels/numsounds for protocol 15 + + - Support for Quake 2021 update 3 + + - Implemented quad/pentagram dlights for Quake 2021 rerelease + + - Implemented 2021 rerelease localsound builtin & svc_localsound (56) + + - Several other improvements to Quake 2021 rerelease support + + - Several other small fixes and improvements all over the code + + - Updated third party code (SDL, lodepng, miniz, some of the codecs, + etc.) + + - Thanks to Andrei Drexler, 'atsb' and 'temx' for their several + patches. + + + Changes in 0.94.3: + + - Handle sky textures with non-standard sizes and warn about them + (e.g. ad_tears) + + - Allow loading textures not aligned to 16 pixels and warn about them + (eg. the horde2 map of Dimension of the Machine from 2021 rerelease + update/2.) + + - Updated included SDL2 to latest version 2.0.18. + + + Changes in 0.94.2: + + - 2021 rerelease: Support for playing the latest update. + + - 2021 rerelease: Fix pitch black models in lit areas in DOTM. + + - 2021 rerelease: Fix black candles in the DOTM start map. + + - 2021 rerelease: Look for QuakeEX.kpf under userdir, too. + + + Changes in 0.94.1: + + - Fix lightmap issues after vkQuake surface mark/cull optimizations + merge (sf.net bug/50) + + + Changes in 0.94.0: + + - Initial support for playing the 'Quake 2021 re-release' content + (thanks to Andrei Drexler for bulk of the work, Guillaume Plourde + for Q64 bsp format support.) + + - Fix rendering bug when cl_bobcycle was set to zero (sf.net bug/41) + + - Fixed buffer overflow with large char skybox names (sf.net bug/38) + + - Fixed a missing MAXALIASFRAMES bounds check (sf.net bug/37) + + - OpenGL: workaround Intel UHD 600 driver bug (sf.net bug/39) + + - OpenGL: merged surface mark & cull optimizations from vkQuake. + + - Compensate viewmodel distortion at fov > 90 (based on code from + Qrack, thanks to Andrei Drexler for the patch.) + + - Raised MAX_GLTEXTURES limit from 2048 to 4096 for now. + + - Changed 'model has a skin taller than 480' error into a warning + + - Reject lit files if they're the wrong size (eg hipnotic/start.bsp + vs id1/start.lit or just a bsp that no longer has any coloured + lits, etc) + + - External ent files are now versioned using 4 digit crc of the + original map's ents, like e1m1@c49d.ent, which is much safer. The + old method (e.g. e1m1.ent) still works but isn't recommended. + + - Support for external vis files. + + - Save: remove CR/LFs from level name to avoids broken saves, e.g. + with autumn_sp map. + + - Music: improvements to mp3 tag detection / skipping. + + - Music: umx loader fix for malformed / crafted files. + + - New console command music_jump: Jump to given order in music, like + Unreal's music change - only for module (tracker) music. + + - Updated third-party libraries (music codecs, SDL, etc.) Other minor + fixes, tidy-ups and protability tweaks. + + - Source repository moved to git. + + + Changes in 0.93.2: + + - Lightmaps are now dynamically allocated (from QSS), and + BLOCK_WIDTH/HEIGHT raised from 128 to 256. + + - Fixed several uncheked limits that would crash the Slayer's + Testaments mod (sf.net bug #33). + + - Raised MAXALIASTRIS from 2048 to 4096, so that the Slayer's + Testaments mod works. + + - Fixed 'pants' and 'shirt' types so that those textures load + correctly on platforms where char type is unsigned by default + (sf.net bug #28). + + - Windows audio: WASAPI-enabled SDL2 dlls function properly now. + + - Update the third-party libraries. Other fixes/cleanups. + + + Changes in 0.93.1: + + - Fixed a fog regression which was introduced in 0.93.0. + + - Fixed a crash (buffer overflow) with invalid vis data. + + - Fixed buttons crushing players in 64-bit builds. + + - Change controller movement to use cubic easing by default; added + "joy_exponent_move" cvar. + + - config.cfg is no longer written in case of a Sys_Error. + + - Fixed Opus encoded cd tracks not being recognized as ripped tracks. + + - Update the third-party libraries. Other fixes/cleanups. + + + Changes in 0.93.0: + + - Raise default "joy_deadzone_trigger" cvar to 0.2. + + - Raise console buffer size to 1MB. + + - Raise MAX_STATIC_ENTITIES from 512 to 4096. + + - Raise MAX_STACK_DEPTH from 32 to 64. + + - Raise command buffer size from 8K to 256K to support large configs. + + - Remove MAX_EFRAGS and MAX_MAP_LEAFS limits. + + - Remove "Loadgame buffer overflow" limit, which could happen when + loading DP or QSS saves. + + - Adjust "exceeds standard limit of" debug warnings to include the + actual QS limit. + + - Change "game" command to now exec quake.rc. + + - Change "games" / "mods" commands to list all subdirectories. + + - Restore vid_refreshrate from fitzquake-0.85 for SDL2 builds. + + - Alpha-masked model support. (MF_HOLEY: 0x4000). + + - Invalid skin index now draws skin 0 (WinQuake behaviour) instead of + blue checkerboard. + + - Change default screenshot format to png. The 'screenshot' command + now supports optional format (tga, png or jpg) and quality (1-100) + arguments. + + - Revert "always run" changes from 0.85.9 and move the QuakeSpasm + customizations to a new "cl_alwaysrun" cvar: Set to 1 in order to + scale forward/side/up speed by "cl_movespeedkey" (usually 2), and + to make "speedkey" act as "slowkey". + + - Change the "always run" menu option to offer three choices: + off (cl_alwaysrun 0, cl_forwardspeed 200, cl_backspeed 200) + vanilla (cl_alwaysrun 0, cl_forwardspeed 400, cl_backspeed 400) + quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200) + + - New "r_scale" cvar. Set to 2, 3, or 4 to render the view at 1/2, + 1/3, or 1/4 resolution. + + - New "r_viewmodel_quake" cvar. Set to 1 for WinQuake gun position + (from MarkV). + + - New "find" / "apropos" command, searches for commands/cvar names + for the given substring (from Spike). + + - New "randmap" command for loading a random map. + + - New "gl_cshiftpercent_contents", "gl_cshiftpercent_damage", + "gl_cshiftpercent_bonus", "gl_cshiftpercent_powerup" cvars for + tuning the strength of specic view blends. + + - GL2 renderer: use a GLSL shader for world faces. Fixes reports of + integrated+discrete GPU laptops having inconsistent fog rendering. + + - Fix macOS startup delay (avoid calling gethostbyname() for ".local" + hostnames). + + - Fix memory corruption in PF_lightstyle with out of bounds + lightstyles. + + - Fix crash in BoundPoly with polygons extending beyond +/-9999. + + - Fix QS window to stay on the current monitor when changing video + modes (SDL2 only). + + - Fix possible freeze in SV_TouchLinks regardless of what QC does in + the touch function. + + - Fix for maps with empty strings for vector keys (e.g. "origin"); + don't read uninitialized memory. + + - Support for Open Watcom compiler. + + - Update the third-party libraries. + + + Changes in 0.92.1: + + - Fixed large menu scale factors (was broken in 0.92.0). + + - Fixed PAUSE key (was broken in 0.92.0). + + - Updated some of the third-party libraries. + + + Changes in 0.92.0: + + - SDL2 Game Controller support. + + - Contrast support with new "contrast" cvar, behaving the same as + MarkV. It may be a useful alternative to the existing gamma control + for laptops in a bright environment, etc. Raising contrast gives + less of a gray/washed out look than raising gamma, but at a + disadvantage: colors near white get clipped to white. + + - RMQ protocol (999) support, adapted from RMQEngine. + + - New "-protocol x" command line option. Accepted values for 'x' are + 15 (NetQuake), 666 (FitzQuake, default), and 999 (RMQ). + + - New "setpos" console command. + + - New "vid_borderless" cvar for getting a borderless window. + + - Increased MAX_MAP_LEAFS from 65535 to 70000 and MAX_LIGHTMAPS from + 256 to 512 in order to handle the oms3 map pack. + + - Server edicts are now allocated using malloc instead of allocating + on the hunk. + + - gl_clear now defaults to 1. + + - Fix items falling out of the world on oms3.bsp on SSE builds. + + - Worked around an OSX 10.6 driver bug when using FSAA, which was + leading to an unplayable HOM effect on the rest of the screen. + + - Fix wrong trace endpoint from the tracepos console command. + + - Updated some of the third-party libraries. Other fixes/clean-ups. + + + Changes in 0.91.0: + + Bugfixes: + + - Fix unwanted fog mode change upon video restart. + + - Work around Intel 855 bug in status bar drawing with "r_oldwater 0" + and "scr_sbaralpha 0". + + - Fix an obscure GLSL bug where changing gamma would result in the + screen turning to noise. + + - Fix GLSL gamma causing the tiled screen border to turn white when + "sizedown" is used. + + - Fix an alias model VBO renderer bug where a model not precached + during map start wouldn't be drawn. + + - Fix the order of OpenGL context creation and window creation in + SDL2 video. + + - Fix a calling convention issue in windows DPI awareness function + pointers. + + - Fix a random texture recoloring after video mode change. + + - Fix a liquid turning to garbage after several video mode changes + and "r_oldwater 0". + + - Fix a wrong alpha-sorting bug introduced in 0.90.1. + + - Fix "flush" command not reloading mdl's from disk (bug introduced + in 0.90.1). + + - Prevent a possible buffer overflow in Cbuf_Execute (old Q1/Q2 bug). + + - Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug). + + Visual improvements: + + - New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning + specific liquid opacities (from DirectQ/RMQEngine, non-archived, + default to 0), and new worldspawn keys _wateralpha, _lavaalpha, + _slimealpha, _telealpha, _skyfog (unique to Quakespasm, similar to + the behaviour of the "fog" worldspawn key). + + - GLSL gamma is now supported on older hardware without NPOT + extension. + + Interface improvements: + + - New r_pos command to show player position. + + - NaN detection in traceline with "developer 1" set now warns instead + of errors. + + Code cleanup / Other: + + - Update third-party libraries. + + Raised limits: + + - Default max_edicts 8192 (was 2048) and no longer saved to + config.cfg. + + - Default heapsize 256 MB (was 64 MB). + + - Default zone 4 MB (was 384 KB). + + - Raised MAX_SFX to 1024 (was 512). + + + Changes in 0.90.1: + + Bugfixes: + + - Fix dynamic light artifact where changing lightmap are rendered one + frame late (bug introduced in 0.90.0). + + - Fix texture memory leak when changing video modes with SDL2. + + - Fix a rare incorrect mdl lighting on 64-bit builds. (details here: + https://forums.insideqc.com/viewtopic.php?f=3&t=5620) + + - Fix fullbrights turning black after "kill" command (bug introduced + in 0.90.0). + + - Clear all fog values on map change to prevent colored fog carrying + over to jam3_tronyn.bsp. + + - Allow loading saves with } character in quoted strings, fixes issue + with retrojam1_skacky.bsp. + + - Fix viewmodel not lerping on extended-limit maps. + + - Fix crash on out-of-bounds skin number. + + Performance: + + - Use multithreaded OpenGL on OS X for better performance. + + - New, faster mdl renderer using GLSL. Disable with "-noglslalias". + + Visual improvements: + + - New gamma correction implementation using GLSL. Fixes all known + gamma issues (affecting the full display, persisting after + quitting, or darkening the screen on OS X). Disable with + "-noglslgamma". + + - Use high-quality water by default (r_oldwater 0). + + - Shadows use stencil buffer to avoid overlapping artifacts (from + MarkV.) + + - r_noshadow_list cvar added (from MarkV.) + + Interface improvements: + + - Support pausing demo playback with the "pause" command. + + - Autocompletion for "game", "record", "playdemo". + + - Experimental windowed fullscreen mode available with + vid_desktopfullscreen 1 (only in SDL2 builds, takes effect upon + entering fullscreen mode the next time.) + + - Silence "exceeded standard limit" messages unless developer cvar is + >= 1. + + - Some spam moved from developer 1 to 2: "can't find tga/lit/ent", + "trying to load ent", "bad chunk length", "meshing", + "PR_AlocStringSlots: realloc'ing" + + Code cleanup: + + - Clean up IDE project files to build on fresh systems. + + - Update 3rd-party libraries. + + + Changes in 0.90.0: + + - Fix issues on Windows systems with DPI scaling. + + - Unix/Mac user directories support. Disabled by default, + 'make DO_USERDIRS=1' to enable it. + + - SDL2 support. Disabled by default, 'make USE_SDL2=1' to enable it. + + - Revised keyboard input code. + + - Revised/improved the 'game' command, i.e. on-the-fly mod changing. + It now accepts an optional second argument for mission packs or + quoth support i.e. -hipnotic, -rogue, or -quoth. For example, for + WarpSpasm: "game warp -quoth" + + - Command line: "-game {quoth/hipnotic/rogue}" is now treated the + same as -quoth, -hipnotic, or -rogue. + + - Console speed now resolution-independent. + + - Disabled gl_zfix, which caused glitches and is undesirable for new + maps. Replacement .ent files to fix z-fighting for several id1 maps + added to quakespasm.pak. + + - PF_VarString buffer bumped to 1024, avoids truncated centerprints + from the 'In The Shadows' mod. + + - Support for opengl non-power-of-two-textures extension (disable + with command line: "-notexturenpot".) + + - Support for OpenGL vertex buffer objects (VBO, OpenGL 1.5 or newer) + for world and brush models (disable with command line: "-novbo".) + + - Antialiasing (FSAA) support (command line: -fsaa x, where x can be + 0, 2, 4, 8). + + - Fence textures support. + + - Dynamic light speedup. Speedup loading of tga and pcx external + images. + + - Brush model drawing speedup. + + - Support for BSP2 and 2PSB map formats. + + - Support for Opus, FLAC, and tracker music (S3M, IT, UMX, etc.), as + compile-time options. + + - Music and sfx now mixed at 44100 Hz to avoid downsampling music. + Low-pass filter applied to the sfx if -sndspeed is 11025 (the + default), to preserve the same sound quality as 0.85.9. New + -mixspeed option sets the rate for mixing sfx and music, and output + to the OS (default 44100), setting it to 11025 reverts to 0.85.9 + behaviour. New snd_filterquality cvar, value can be between 1 + (emulate OS X resampler) and 5 (emulate Windows resampler), + controls the sound of the low-pass filter. + + - Better Hor+ field of view (FOV) scaling behavior. + + - Better cross-map demo playback support. + + - Fix screenshots when screen width isn't a multiple of 4. + + - Fix a lighting glitch due to floating point precision. + + - Fix a looping sounds glitch. + + - Fix a vulnerability in file extension handling. Tighten path + handling safety. + + - Initialize opengl with 24-bit depth buffer at 32 bpp. + + - Reset all models upon gamedir changes. (Fixes failures with mods + using custom content.) + + - Fix broken behavior upon gamedir changes if -basedir is specified + on the command line. + + - NET_MAXMESSAGE and MAX_MSGLEN limits bumped to 64000. + + - MAX_EFRAGS bumped to 4096, and MAX_CHANNELS to 1024. + + - MAX_ENT_LEAFS bumped from 16 to 32 to work around disappearing or + flickering brush models in some situations. Also, if an entity is + visible from MAX_ENT_LEAFS or more leafs, we now always send it to + the client. + + - Fix cvar cycle command not working sometimes. + + - Host_Error upon missing models. (Prevents segmentation faults.) + + - Change sv_aim default value to 1 (i.e. turn off autoaim) + + - Add 'prev' and 'next' keywords to the 'cd' command. + + - Work around a linux cdrom issue (playback might not start for a + while after a stop). + + - Quakespasm content customization moved from engine-embedded into a + new optional quakespasm.pak file. + + - Version bumped to 0.90.0 (because Quakespasm has a decent life of + it's own) + + - Other fixes and clean-ups. + + + Changes in 0.85.9: + + - Fixes for several undefined behaviors in C code (gcc-4.8 support.) + + - Implemented Hor+ style field of view (FOV) scaling, useful for + widescreen resolutions. Configured by new cvar fov_adapt: set it to + 1 and your fov will be scaled automatically according to the + resolution. Enabled by default. + + - Adjusted string buffers for PR_ValueString and friends to fix + crashes with excessively long global strings seen in some rude + mods. + + - Toned down warning messages from PF_VarString() a bit. + + - Fixed Fitzquake's map existence check in changelevel (used to leak + file handles which would end up in a Sys_Error() due to consuming + all free handles if many maps reside not in pak files.) + + - Fixes/cleanups in chat mode handling. Client no longer gets stuck + in chat mode upon disconnect. + + - Mouse grab/key_dest fixes and key cleanups. + + - The "speedkey" now acts as "slowkey" when "always run" is on. + + - Support for demo recording after connection to server. (thanks to + Baker for a patch) + + - Corner case fixes in COM_Parse() for quoted strings and support for + C-style /*..*/ comments. + + - Changed lightmaps to GL_RGBA instead of GL_RGB. + + - Better parse for opengl extensions list (from quakeforge.) + + - Vsync saving/loading fixes. + + - Fixed pointfile loading. + + - Multiple cleanups in gl_vidsdl.c. + + - Opus music decoding support (as an optional patch only.) + + - Several other minor fixes/cleanups. + + + Changes in 0.85.8: + + - Made Quake shareware 1.00 and 1.01 versions to be recognized + properly. + + - Fixed control-character handling in unicode mode. Keyboard input + tweaks. + + - Made the keypad keys to send separate key events in game mode. + + - Text pasting support from OS clipboard to console. (windows and + macosx.) + + - Support for the Apple (Command) key on macosx. + + - Fixed increased (more than 32) dynamic lights. + + - Music playback: Made sure that the file's channels count is + supported. + + - Support for Solaris. + + - Switched to using libmad instead of libmpg123 for MP3 playback on + Mac OS X. + + - Better support for building the Mac OS X version using a makefile, + support for cross-compiling on Linux. + + - Fixed a minor intermissions glitch. + + - Increased string buffer size from 256 to 384 for PF_VarString to + work around broken mods such as UQC. + + - Restored original behavior for Quake registered version detection. + + - Minor demo recording/playback tweaks. + + - Minor tweaks to the scale menu option. + + - unbindall before loading stored bindings (configurable by new cvar + cfg_unbindall, enabled by default.) + + - New icon. + + - Miscellaneous source code cleanups. + + + Changes in 0.85.7: + + - Added support for cross-level demo playback + + - gl_texturemode is reimplemented as a cvar with a callback and the + setting is automatically saved to the config + + - Fixed execution of external files without a newline at the end + + - Reduced memory usage during reloading of textures + + - Fixed compilation on GNU/kFreeBSD (Debian bug #657793) + + - Fixed backspace key on Mac OS X + + - Disable mouse acceleration in Mac OS X + + - Worked around recursive calling of the anisotropic filter callback + + - Console word wrap and long input line fixes + + - Verified correct compilation by clang (using v3.0) + + - Several other small changes mostly invisible to the end-user + + + Changes in 0.85.6: + + - More work for string buffer safety + + - Reverted v0.85.5 change of not allowing deathmatch and coop cvars + to be set at the same time (was reported for possibility of causing + compatibility issues with mods) + + - Several cleanups/changes in the cvar layer + + - Minor SDL video fixes. + + + Changes in 0.85.5: + + - SDL input driver updated adding native keymap and dead key support + to the console + + - Fixed a crash in net play in maps with extended limits + + - Verified successful compilation using gcc-4.6.x + + - Added workaround against GL texture flicker (z fighting), + controlled by new cvar 'gl_zfix' + + - Read video variables early so that a vid_restart isn't necessary + after init + + - mlook and lookspring fixes + + - Added support for loading external entity files, controlled by new + cvar 'external_ents' + + - Made mp3 playback to allocate system memory instead of zone + + - Some updates to the progs interpreter code + + - Fixed r_nolerp_list parsing code of fitzquake + + - Made sure that deathmatch and coop are not set at the same time + + - Several code updates from uHexen2 project, several code cleanups. + + + Changes in 0.85.4: + + - Implement music (OGG, MP3, WAV) playback + + - A better fix for the infamous SV_TouchLinks problem, no more hard + lockups with maps such as "whiteroom" + + - Add support for mouse buttons 4 and 5 + + - Fix the "unalias" console command + + - Restore the "screen size" menu item + + - Fixed an erroneous protocol check in the server code + + - Raised the default zone memory size to 384 kb + + - Raised the default max_edicts from 1024 to 2048 + + - Revised lit file loading, the lit file must be from the same game + directory as the map itself or from a searchpath with a higher + priority + + - Fixed rest of the compiler warnings + + - Other minor sound and cdaudio updates + + + Changes in 0.85.3: + + - Fix the "-dedicated" option (thanks Oz) and add platform specific + networking code (default) rather than SDL_net + + - Much needed OSX framework stuff from Kristian + + - Add a persistent history feature (thanks Baker) + + - Add a slider for scr_sbaralpha, which now defaults to 0.95 + (slightly transparent, allowing for a nicer status bar) + + - Allow player messages longer than 32 characters + + - Sockaddr fix for FreeBSD/OSX/etc networking + + - Connect status bar size to the scale slider + + - Include an ISNAN (is not-a-number) fix to catch the occassional + quake C bug giving traceline problems + + - Enumerate options menus + + - Add a "prev weapon" menu item (from Sander) + + - Small fix to Sound Block/Unblock on win32 + + - Lots of code fixes (some from uhexen2) + + - Sys_Error calls Host_Shutdown + + - Added MS Visual Studio support + + - Add a "-cd" option to let the CD Player work in dedicated mode, and + some other CD tweaks. + + + Changes in 0.85.2: + + - Replace the old "Screen size" slider with a "Scale" slider + + - Don't constantly open and close condebug log + + - Heap of C clean-ups + + - Fix mapname sorting + + - Alias the "mods" command to "games" + + - Block/Unblock sound upon focus loss/gain + + - NAT (networking protocol) fix + + - SDLNet_ResolveHost bug-fix allowing connection to ports other than + 26000 + + - Bumped array size of sv_main.c::localmodels from 5 to 6 fixing an + old fitzquake-0.85 bug which used to cause segfaults depending on + the compiler. + + - Accept commandline options like "+connect ip:port" + + + Changes in 0.85.1: + + - 64 bit CPU support + + - Restructured SDL sound driver + + - Custom conback + + - Tweaked the command line completion and added a map/changelevel + autocompletion function + + - Alt+Enter toggles fullscreen + + - Disable Draw_BeginDisc which causes core dumps when called + excessively + + - Show helpful info on start-up + + - Include real map name (sv.name) and skill in the status bar + + - Remove confirm quit dialog + + - Don't spam the console with PackFile seek requests + + - Default to window mode + + - Withdraw console when playing demos + + - Don't play demos on program init + + - Default heapsize is 64 MB. + + - Changes to default console alpha, speed + + - Changes to cvar persistence gl_flashblend (default 0), r_shadow, + r_wateralpha, r_dynamic, r_novis. + + + 6. Copyright + + - Quake and Quakespasm are released under the GNU GENERAL PUBLIC + LICENSE Version 2: http://www.gnu.org/licenses/gpl-2.0.html + - Quakespasm console background image by AAS, released under the + CREATIVE COMMONS PUBLIC LICENSE: + http://creativecommons.org/licenses/by/3.0/legalcode + + + 7. Contact + + - QuakeSpasm Project page: + https://sourceforge.net/projects/quakespasm/ + - Bug reports: + https://sourceforge.net/p/quakespasm/bugs/ + + + 8. Links + + - QuakeSpasm Homepage: http://quakespasm.sourceforge.net + - Downloads: http://quakespasm.sourceforge.net/download.htm + - FitzQuake Homepage: https://celephais.net/fitzquake/ + - Func Quakespasm forum: + https://celephais.net/board/view_thread.php?id=60452 + - Inside3D forums: https://forums.insideqc.com + diff --git a/Windows/CodeBlocks/QuakeSpasm-SDL2.cbp b/Windows/CodeBlocks/QuakeSpasm-SDL2.cbp new file mode 100644 index 0000000..0cc03e4 --- /dev/null +++ b/Windows/CodeBlocks/QuakeSpasm-SDL2.cbp @@ -0,0 +1,379 @@ + + + + + + diff --git a/Windows/CodeBlocks/QuakeSpasm.cbp b/Windows/CodeBlocks/QuakeSpasm.cbp new file mode 100644 index 0000000..f63829e --- /dev/null +++ b/Windows/CodeBlocks/QuakeSpasm.cbp @@ -0,0 +1,378 @@ + + + + + + diff --git a/Windows/QuakeSpasm-old.ico b/Windows/QuakeSpasm-old.ico new file mode 100644 index 0000000000000000000000000000000000000000..52e2fa1531ab412142a99e0f69ec337b31a0592c GIT binary patch literal 3262 zcmcha>vGyi5QW()iJBR70f9l7I|zY9;#A%skGqe#Uv~?H@%nEPo0>4A)2F*npHT*b zfB3uK5BMwx|0aXMd@vYX`Q@v@AAaTg@BV}k;yC8>%VHM7F^&u8uHK*GIP?CRB!uv}Ujh#E(39n!kMS!!|M^OsGdR;G<1pS1d%vaP(xz&&doKNss z#If^!uY@z_cC0z?9EIIz3Z%Rx3b8=g@2l;W>^>pzh}9RyAa;NQ zy#pU`78(Wcts&HPdpfl*2)e~#5|`3FI!g%Z@4aLJNmT*@fbhl$-yhtWHq!KXxwQNw z$<4H32%07ps89b*5uIz>SKKrwP>bm%|+CrDLm`# z!f@Ho*X-^U`$=fi4-r|I0>O-;kv0@5S_-}1-rhEc1C{B(34xHxvPx4K)#qtaY4HuY z08Xz7*R@Xz^)ln_dW~Q%l;y$vdBOLa4W`jgllBF0s}Cda3-u~t%3{UuYM!PIQZzJV zS=SAp_RsVA_8hUQ2!V}!vK`8WP}P5E4Vc#AuI5>G1_ZRazExE_9xv%;mi77>4vX2W zJs!J=$77QuZ=VZwC6^Ft+G>WNGb=SulKOm>2O&A1OYWwYB$@LKUGN@j{b3a@OUfsQ zq48WOj929Zc2d9yhJ zvRWB1}7dmVQl^A9qS@y#sEBsV%OC!!en{gi+Noe9ZX& zdkeSKgBw>H&q9C_Y2pklRZTRVPBzR795x%wN7|=i{>lCLy|+LhF>c^&x8Rc$dcYP+ zEgk&3_R*}#q=9@Yhp{Jr9x_WT<{ZGObVT$#qsoUHRQPvNYlCX zNXvL;&G`_1Yp1xbv01r>Fnrw-Y3X8Y1|ARX<~7^oTEQZ^_Jx2CP#;){%ruIOfcH1> z!3=?m9-B47c3bt=)?^}srn&IANJ~@xZS6B9>~`11qL;T01&>(D6mzNIxQ)eyNiVIU zcvpPkrhSq33JU8Sf@Ic23A0&^ymbs;yc8M8P+%#FNebtOIL+J`fl+qTsxlqCcaZ`u zqsy2~VM-Vdb8J(cM8W~3_37W2n0jObpr+8D38CSRP_f~ha#iVD0nI|F=#7Y-5@xez zvEYTF7vA&xl7@S@aeoGJVzYPOGv+9n`Qi-=Ra5g`30y0AjsUEWFK;{42difb*>se$ ztSL);xEmZT3mPMeh|Nazp;9;?q}6Jd=O#|{!^m_^r~dc2^ie3K>1DB?lFw&g4mjBn zluO?bdL`&I9Tto0bc#obeza?*+de5MA!cOr<%~He?>r*~hbLWQFrQywBwU)xwWVh| hFV(V~HC%&V>AQ+O1RxBl+`1%K=N{{RB{*M0y1 literal 0 HcmV?d00001 diff --git a/Windows/QuakeSpasm.ico b/Windows/QuakeSpasm.ico new file mode 100644 index 0000000000000000000000000000000000000000..e9915c32dbfea6b0516611f0580beb77f0f232e4 GIT binary patch literal 41468 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 Ka=oI}$NvGY + +icon ICON "QuakeSpasm.ico" + diff --git a/Windows/SDL/BUGS b/Windows/SDL/BUGS new file mode 100644 index 0000000..d7058f6 --- /dev/null +++ b/Windows/SDL/BUGS @@ -0,0 +1,18 @@ + +Bugs are now managed in the SDL bug tracker, here: + + http://bugzilla.libsdl.org/ + +You may report bugs there, and search to see if a given issue has already + been reported, discussed, and maybe even fixed. + + + +You may also find help at the SDL mailing list. Subscription information: + + http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org + +Bug reports are welcome here, but we really appreciate if you use Bugzilla, as + bugs discussed on the mailing list may be forgotten or missed. + + diff --git a/Windows/SDL/COPYING b/Windows/SDL/COPYING new file mode 100644 index 0000000..8904ea4 --- /dev/null +++ b/Windows/SDL/COPYING @@ -0,0 +1,458 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/Windows/SDL/README-SDL.txt b/Windows/SDL/README-SDL.txt new file mode 100644 index 0000000..1669736 --- /dev/null +++ b/Windows/SDL/README-SDL.txt @@ -0,0 +1,13 @@ + +Please distribute this file with the SDL runtime environment: + +The Simple DirectMedia Layer (SDL for short) is a cross-platfrom library +designed to make it easy to write multi-media software, such as games and +emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the GNU LGPL license: +http://www.gnu.org/copyleft/lesser.html + diff --git a/Windows/SDL/bin/sdl-config b/Windows/SDL/bin/sdl-config new file mode 100755 index 0000000..d810749 --- /dev/null +++ b/Windows/SDL/bin/sdl-config @@ -0,0 +1,58 @@ +#!/bin/sh + +prefix=/opt/cross_sdl12 +exec_prefix=${prefix} +exec_prefix_set=no +lib_suffix= + +usage="\ +Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--lib-suffix=SUFFIX] [--version] [--cflags] [--libs]" + +if test $# -eq 0; then + echo "${usage}" 1>&2 + exit 1 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | LC_ALL="C" sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo $exec_prefix + ;; + --lib-suffix=*) + lib_suffix=$optarg + ;; + --version) + echo 1.2.16 + ;; + --cflags) + echo -I${prefix}/include -Dmain=SDL_main + ;; + --libs) + echo -L${exec_prefix}/lib${lib_suffix} -lmingw32 -lSDLmain -lSDL -mwindows + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift +done + diff --git a/Windows/SDL/include/SDL.h b/Windows/SDL/include/SDL.h new file mode 100644 index 0000000..6087b7c --- /dev/null +++ b/Windows/SDL/include/SDL.h @@ -0,0 +1,101 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL.h + * Main include header for the SDL library + */ + +#ifndef _SDL_H +#define _SDL_H + +#include "SDL_main.h" +#include "SDL_stdinc.h" +#include "SDL_audio.h" +#include "SDL_cdrom.h" +#include "SDL_cpuinfo.h" +#include "SDL_endian.h" +#include "SDL_error.h" +#include "SDL_events.h" +#include "SDL_loadso.h" +#include "SDL_mutex.h" +#include "SDL_rwops.h" +#include "SDL_thread.h" +#include "SDL_timer.h" +#include "SDL_video.h" +#include "SDL_version.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL.h + * @note As of version 0.5, SDL is loaded dynamically into the application + */ + +/** @name SDL_INIT Flags + * These are the flags which may be passed to SDL_Init() -- you should + * specify the subsystems which you will be using in your application. + */ +/*@{*/ +#define SDL_INIT_TIMER 0x00000001 +#define SDL_INIT_AUDIO 0x00000010 +#define SDL_INIT_VIDEO 0x00000020 +#define SDL_INIT_CDROM 0x00000100 +#define SDL_INIT_JOYSTICK 0x00000200 +#define SDL_INIT_NOPARACHUTE 0x00100000 /**< Don't catch fatal signals */ +#define SDL_INIT_EVENTTHREAD 0x01000000 /**< Not supported on all OS's */ +#define SDL_INIT_EVERYTHING 0x0000FFFF +/*@}*/ + +/** This function loads the SDL dynamically linked library and initializes + * the subsystems specified by 'flags' (and those satisfying dependencies) + * Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup + * signal handlers for some commonly ignored fatal signals (like SIGSEGV) + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** This function initializes specific SDL subsystems */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** This function cleans up specific SDL subsystems */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** This function returns mask of the specified subsystems which have + * been initialized. + * If 'flags' is 0, it returns a mask of all initialized subsystems. + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** This function cleans up all initialized subsystems and unloads the + * dynamically linked library. You should call it upon all exit conditions. + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_H */ diff --git a/Windows/SDL/include/SDL_active.h b/Windows/SDL/include/SDL_active.h new file mode 100644 index 0000000..cd854e8 --- /dev/null +++ b/Windows/SDL/include/SDL_active.h @@ -0,0 +1,63 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_active.h + * Include file for SDL application focus event handling + */ + +#ifndef _SDL_active_h +#define _SDL_active_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name The available application states */ +/*@{*/ +#define SDL_APPMOUSEFOCUS 0x01 /**< The app has mouse coverage */ +#define SDL_APPINPUTFOCUS 0x02 /**< The app has input focus */ +#define SDL_APPACTIVE 0x04 /**< The application is active */ +/*@}*/ + +/* Function prototypes */ +/** + * This function returns the current state of the application, which is a + * bitwise combination of SDL_APPMOUSEFOCUS, SDL_APPINPUTFOCUS, and + * SDL_APPACTIVE. If SDL_APPACTIVE is set, then the user is able to + * see your application, otherwise it has been iconified or disabled. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetAppState(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_active_h */ diff --git a/Windows/SDL/include/SDL_audio.h b/Windows/SDL/include/SDL_audio.h new file mode 100644 index 0000000..e879c98 --- /dev/null +++ b/Windows/SDL/include/SDL_audio.h @@ -0,0 +1,284 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_audio.h + * Access to the raw audio mixing buffer for the SDL library + */ + +#ifndef _SDL_audio_h +#define _SDL_audio_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_endian.h" +#include "SDL_mutex.h" +#include "SDL_thread.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * When filling in the desired audio spec structure, + * - 'desired->freq' should be the desired audio frequency in samples-per-second. + * - 'desired->format' should be the desired audio format. + * - 'desired->samples' is the desired size of the audio buffer, in samples. + * This number should be a power of two, and may be adjusted by the audio + * driver to a value more suitable for the hardware. Good values seem to + * range between 512 and 8096 inclusive, depending on the application and + * CPU speed. Smaller values yield faster response time, but can lead + * to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. A stereo sample consists of both right + * and left channels in LR ordering. + * Note that the number of samples is directly related to time by the + * following formula: ms = (samples*1000)/freq + * - 'desired->size' is the size in bytes of the audio buffer, and is + * calculated by SDL_OpenAudio(). + * - 'desired->silence' is the value used to set the buffer to silence, + * and is calculated by SDL_OpenAudio(). + * - 'desired->callback' should be set to a function that will be called + * when the audio device is ready for more data. It is passed a pointer + * to the audio buffer, and the length in bytes of the audio buffer. + * This function usually runs in a separate thread, and so you should + * protect data structures that it accesses by calling SDL_LockAudio() + * and SDL_UnlockAudio() in your code. + * - 'desired->userdata' is passed as the first parameter to your callback + * function. + * + * @note The calculated values in this structure are calculated by SDL_OpenAudio() + * + */ +typedef struct SDL_AudioSpec { + int freq; /**< DSP frequency -- samples per second */ + Uint16 format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in samples (power of 2) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + /** + * This function is called when the audio device needs more data. + * + * @param[out] stream A pointer to the audio data buffer + * @param[in] len The length of the audio buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + */ + void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len); + void *userdata; +} SDL_AudioSpec; + +/** + * @name Audio format flags + * defaults to LSB byte order + */ +/*@{*/ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB + +/** + * @name Native audio byte ordering + */ +/*@{*/ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#endif +/*@}*/ + +/*@}*/ + + +/** A structure to hold a set of audio conversion filters and buffers */ +typedef struct SDL_AudioCVT { + int needed; /**< Set to 1 if conversion possible */ + Uint16 src_format; /**< Source audio format */ + Uint16 dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + void (SDLCALL *filters[10])(struct SDL_AudioCVT *cvt, Uint16 format); + int filter_index; /**< Current audio conversion function */ +} SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * @name Audio Init and Quit + * These functions are used internally, and should not be used unless you + * have a specific need to specify the audio driver you want to use. + * You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/*@{*/ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/*@}*/ + +/** + * This function fills the given character buffer with the name of the + * current audio driver, and returns a pointer to it if the audio driver has + * been initialized. It returns NULL if no driver has been initialized. + */ +extern DECLSPEC char * SDLCALL SDL_AudioDriverName(char *namebuf, int maxlen); + +/** + * This function opens the audio device with the desired parameters, and + * returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by 'obtained'. If 'obtained' is NULL, the audio + * data passed to the callback function will be guaranteed to be in the + * requested format, and will be automatically converted to the hardware + * audio format if necessary. This function returns -1 if it failed + * to open the audio device, or couldn't set up the audio thread. + * + * The audio device starts out playing silence when it's opened, and should + * be enabled for playing by calling SDL_PauseAudio(0) when you are ready + * for your audio callback function to be called. Since the audio driver + * may modify the requested size of the audio buffer, you should allocate + * any local mixing buffers after you open the audio device. + * + * @sa SDL_AudioSpec + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); + +typedef enum { + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_audiostatus; + +/** Get the current audio state */ +extern DECLSPEC SDL_audiostatus SDLCALL SDL_GetAudioStatus(void); + +/** + * This function pauses and unpauses the audio callback processing. + * It should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * This function loads a WAVE from the data source, automatically freeing + * that source if 'freesrc' is non-zero. For example, to load a WAVE file, + * you could do: + * @code SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...); @endcode + * + * If this function succeeds, it returns the given SDL_AudioSpec, + * filled with the audio data format of the wave data, and sets + * 'audio_buf' to a malloc()'d buffer containing the audio data, + * and sets 'audio_len' to the length of that audio buffer, in bytes. + * You need to free the audio buffer with SDL_FreeWAV() when you are + * done with it. + * + * This function returns NULL and sets the SDL error message if the + * wave file cannot be opened, uses an unknown data format, or is + * corrupt. Currently raw and MS-ADPCM WAVE files are supported. + */ +extern DECLSPEC SDL_AudioSpec * SDLCALL SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); + +/** Compatibility convenience function -- loads a WAV from a file */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * This function frees data previously allocated with SDL_LoadWAV_RW() + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 *audio_buf); + +/** + * This function takes a source format and rate and a destination format + * and rate, and initializes the 'cvt' structure with information needed + * by SDL_ConvertAudio() to convert a buffer of audio data from one format + * to the other. + * + * @return This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT *cvt, + Uint16 src_format, Uint8 src_channels, int src_rate, + Uint16 dst_format, Uint8 dst_channels, int dst_rate); + +/** + * Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(), + * created an audio buffer cvt->buf, and filled it with cvt->len bytes of + * audio data in the source format, this function will convert it in-place + * to the desired format. + * The data conversion may expand the size of the audio data, so the buffer + * cvt->buf should be allocated after the cvt structure is initialized by + * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long. + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT *cvt); + + +#define SDL_MIX_MAXVOLUME 128 +/** + * This takes two audio buffers of the playing audio format and mixes + * them, performing addition, volume adjustment, and overflow clipping. + * The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume. Note this does not change hardware volume. + * This is provided for convenience -- you can mix your own audio data. + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume); + +/** + * @name Audio Locks + * The lock manipulated by these functions protects the callback function. + * During a LockAudio/UnlockAudio pair, you can be guaranteed that the + * callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); +/*@}*/ + +/** + * This function shuts down audio processing and closes the audio device. + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_audio_h */ diff --git a/Windows/SDL/include/SDL_byteorder.h b/Windows/SDL/include/SDL_byteorder.h new file mode 100644 index 0000000..47332c3 --- /dev/null +++ b/Windows/SDL/include/SDL_byteorder.h @@ -0,0 +1,29 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_byteorder.h + * @deprecated Use SDL_endian.h instead + */ + +/* DEPRECATED */ +#include "SDL_endian.h" diff --git a/Windows/SDL/include/SDL_cdrom.h b/Windows/SDL/include/SDL_cdrom.h new file mode 100644 index 0000000..febb19d --- /dev/null +++ b/Windows/SDL/include/SDL_cdrom.h @@ -0,0 +1,202 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_cdrom.h + * This is the CD-audio control API for Simple DirectMedia Layer + */ + +#ifndef _SDL_cdrom_h +#define _SDL_cdrom_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file SDL_cdrom.h + * In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_CDROM flag. This causes SDL to scan the system + * for CD-ROM drives, and load appropriate drivers. + */ + +/** The maximum number of CD-ROM tracks on a disk */ +#define SDL_MAX_TRACKS 99 + +/** @name Track Types + * The types of CD-ROM track possible + */ +/*@{*/ +#define SDL_AUDIO_TRACK 0x00 +#define SDL_DATA_TRACK 0x04 +/*@}*/ + +/** The possible states which a CD-ROM drive can be in. */ +typedef enum { + CD_TRAYEMPTY, + CD_STOPPED, + CD_PLAYING, + CD_PAUSED, + CD_ERROR = -1 +} CDstatus; + +/** Given a status, returns true if there's a disk in the drive */ +#define CD_INDRIVE(status) ((int)(status) > 0) + +typedef struct SDL_CDtrack { + Uint8 id; /**< Track number */ + Uint8 type; /**< Data or audio track */ + Uint16 unused; + Uint32 length; /**< Length, in frames, of this track */ + Uint32 offset; /**< Offset, in frames, from start of disk */ +} SDL_CDtrack; + +/** This structure is only current as of the last call to SDL_CDStatus() */ +typedef struct SDL_CD { + int id; /**< Private drive identifier */ + CDstatus status; /**< Current drive status */ + + /** The rest of this structure is only valid if there's a CD in drive */ + /*@{*/ + int numtracks; /**< Number of tracks on disk */ + int cur_track; /**< Current track position */ + int cur_frame; /**< Current frame offset within current track */ + SDL_CDtrack track[SDL_MAX_TRACKS+1]; + /*@}*/ +} SDL_CD; + +/** @name Frames / MSF Conversion Functions + * Conversion functions from frames to Minute/Second/Frames and vice versa + */ +/*@{*/ +#define CD_FPS 75 +#define FRAMES_TO_MSF(f, M,S,F) { \ + int value = f; \ + *(F) = value%CD_FPS; \ + value /= CD_FPS; \ + *(S) = value%60; \ + value /= 60; \ + *(M) = value; \ +} +#define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) +/*@}*/ + +/* CD-audio API functions: */ + +/** + * Returns the number of CD-ROM drives on the system, or -1 if + * SDL_Init() has not been called with the SDL_INIT_CDROM flag. + */ +extern DECLSPEC int SDLCALL SDL_CDNumDrives(void); + +/** + * Returns a human-readable, system-dependent identifier for the CD-ROM. + * Example: + * - "/dev/cdrom" + * - "E:" + * - "/dev/disk/ide/1/master" + */ +extern DECLSPEC const char * SDLCALL SDL_CDName(int drive); + +/** + * Opens a CD-ROM drive for access. It returns a drive handle on success, + * or NULL if the drive was invalid or busy. This newly opened CD-ROM + * becomes the default CD used when other CD functions are passed a NULL + * CD-ROM handle. + * Drives are numbered starting with 0. Drive 0 is the system default CD-ROM. + */ +extern DECLSPEC SDL_CD * SDLCALL SDL_CDOpen(int drive); + +/** + * This function returns the current status of the given drive. + * If the drive has a CD in it, the table of contents of the CD and current + * play position of the CD will be stored in the SDL_CD structure. + */ +extern DECLSPEC CDstatus SDLCALL SDL_CDStatus(SDL_CD *cdrom); + +/** + * Play the given CD starting at 'start_track' and 'start_frame' for 'ntracks' + * tracks and 'nframes' frames. If both 'ntrack' and 'nframe' are 0, play + * until the end of the CD. This function will skip data tracks. + * This function should only be called after calling SDL_CDStatus() to + * get track information about the CD. + * For example: + * @code + * // Play entire CD: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) + * SDL_CDPlayTracks(cdrom, 0, 0, 0, 0); + * // Play last track: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) { + * SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0); + * } + * // Play first and second track and 10 seconds of third track: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) + * SDL_CDPlayTracks(cdrom, 0, 0, 2, 10); + * @endcode + * + * @return This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_CDPlayTracks(SDL_CD *cdrom, + int start_track, int start_frame, int ntracks, int nframes); + +/** + * Play the given CD starting at 'start' frame for 'length' frames. + * @return It returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_CDPlay(SDL_CD *cdrom, int start, int length); + +/** Pause play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDPause(SDL_CD *cdrom); + +/** Resume play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDResume(SDL_CD *cdrom); + +/** Stop play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDStop(SDL_CD *cdrom); + +/** Eject CD-ROM + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDEject(SDL_CD *cdrom); + +/** Closes the handle for the CD-ROM drive */ +extern DECLSPEC void SDLCALL SDL_CDClose(SDL_CD *cdrom); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_video_h */ diff --git a/Windows/SDL/include/SDL_config.h b/Windows/SDL/include/SDL_config.h new file mode 100644 index 0000000..09ba38a --- /dev/null +++ b/Windows/SDL/include/SDL_config.h @@ -0,0 +1,45 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_h +#define _SDL_config_h + +#include "SDL_platform.h" + +/* Add any platform that doesn't build using the configure system */ +#if defined(__DREAMCAST__) +#include "SDL_config_dreamcast.h" +#elif defined(__MACOS__) +#include "SDL_config_macos.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__SYMBIAN32__) +#include "SDL_config_symbian.h" /* must be before win32! */ +#elif defined(__WIN32__) +#include "SDL_config_win32.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" +#else +#include "SDL_config_minimal.h" +#endif /* platform config */ + +#endif /* _SDL_config_h */ diff --git a/Windows/SDL/include/SDL_config_win32.h b/Windows/SDL/include/SDL_config_win32.h new file mode 100644 index 0000000..6d2ae2d --- /dev/null +++ b/Windows/SDL/include/SDL_config_win32.h @@ -0,0 +1,193 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_win32_h +#define _SDL_config_win32_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#define SDL_HAS_64BIT_TYPE 1 + +/* Enabled for SDL 1.2 (binary compatibility) */ +#define HAVE_LIBC 1 +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#ifndef _WIN32_WCE +#define HAVE_SIGNAL_H 1 +#endif + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRDUP 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE__I64TOA 1 +#define HAVE__UI64TOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#if defined(__MINGW32__) || defined(__WATCOMC__) +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#endif +#if defined(__WATCOMC__) || (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(_WIN64) +#define HAVE__STRTOI64 1 +#define HAVE__STRTOUI64 1 +#endif +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +/* Enable various audio drivers */ +#ifndef _WIN32_WCE +#define SDL_AUDIO_DRIVER_DSOUND 1 +#endif +#define SDL_AUDIO_DRIVER_WAVEOUT 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#ifdef _WIN32_WCE +#define SDL_CDROM_DISABLED 1 +#else +#define SDL_CDROM_WIN32 1 +#endif + +/* Enable various input drivers */ +#ifdef _WIN32_WCE +#define SDL_JOYSTICK_DISABLED 1 +#else +#define SDL_JOYSTICK_WINMM 1 +#endif + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_WIN32 1 + +/* Enable various threading systems */ +#define SDL_THREAD_WIN32 1 + +/* Enable various timer systems */ +#ifdef _WIN32_WCE +#define SDL_TIMER_WINCE 1 +#else +#define SDL_TIMER_WIN32 1 +#endif + +/* Enable various video drivers */ +#ifdef _WIN32_WCE +#define SDL_VIDEO_DRIVER_GAPI 1 +#endif +#ifndef _WIN32_WCE +#define SDL_VIDEO_DRIVER_DDRAW 1 +#endif +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_WINDIB 1 + +/* Enable OpenGL support */ +#ifndef _WIN32_WCE +#define SDL_VIDEO_OPENGL 1 +#define SDL_VIDEO_OPENGL_WGL 1 +#endif + +/* Disable screensaver */ +#define SDL_VIDEO_DISABLE_SCREENSAVER 1 + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_win32_h */ diff --git a/Windows/SDL/include/SDL_copying.h b/Windows/SDL/include/SDL_copying.h new file mode 100644 index 0000000..b5b64f2 --- /dev/null +++ b/Windows/SDL/include/SDL_copying.h @@ -0,0 +1,22 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + diff --git a/Windows/SDL/include/SDL_cpuinfo.h b/Windows/SDL/include/SDL_cpuinfo.h new file mode 100644 index 0000000..4200d6d --- /dev/null +++ b/Windows/SDL/include/SDL_cpuinfo.h @@ -0,0 +1,69 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_cpuinfo.h + * CPU feature detection for SDL + */ + +#ifndef _SDL_cpuinfo_h +#define _SDL_cpuinfo_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This function returns true if the CPU has the RDTSC instruction */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** This function returns true if the CPU has MMX features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** This function returns true if the CPU has MMX Ext. features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMXExt(void); + +/** This function returns true if the CPU has 3DNow features */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** This function returns true if the CPU has 3DNow! Ext. features */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNowExt(void); + +/** This function returns true if the CPU has SSE features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** This function returns true if the CPU has SSE2 features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** This function returns true if the CPU has AltiVec features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_cpuinfo_h */ diff --git a/Windows/SDL/include/SDL_endian.h b/Windows/SDL/include/SDL_endian.h new file mode 100644 index 0000000..4a99d0e --- /dev/null +++ b/Windows/SDL/include/SDL_endian.h @@ -0,0 +1,264 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_endian.h + * Functions for reading and writing endian-specific values + */ + +#ifndef _SDL_endian_h +#define _SDL_endian_h + +#include "SDL_stdinc.h" + +/** @name SDL_ENDIANs + * The two types of endianness + */ +/*@{*/ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/*@}*/ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name SDL_Swap Functions + * Use inline functions for compilers that support them, and static + * functions for those that do not. Because these functions become + * static for compilers that do not support inline functions, this + * header should only be included in files that actually use them. + */ +/*@{*/ +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0" : "=Q" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x)); + return (Uint16)result; +} +#elif defined(__GNUC__) && defined(__aarch64__) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + return __builtin_bswap16(x); +} +#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__)) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +static __inline__ Uint16 SDL_Swap16(Uint16 x) { + return SDL_static_cast(Uint16, ((x<<8)|(x>>8))); +} +#endif + +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23" : "=&r" (result) : "0" (x>>24), "r" (x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r" (result) : "0" (result), "r" (x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x)); + return result; +} +#elif defined(__GNUC__) && defined(__aarch64__) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + return __builtin_bswap32(x); +} +#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__)) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +static __inline__ Uint32 SDL_Swap32(Uint32 x) { + return SDL_static_cast(Uint32, ((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24))); +} +#endif + +#ifdef SDL_HAS_64BIT_TYPE /**/ +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + union { + struct { Uint32 a,b; } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r" (v.s.a), "=r" (v.s.b) + : "0" (v.s.a), "1" (v.s.b)); + return v.u; +} +#elif defined(__GNUC__) && defined(__aarch64__) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + return __builtin_bswap64(x); +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif +#else /* SDL_HAS_64BIT_TYPE */ +/* This is mainly to keep compilers from complaining in SDL code. + * If there is no real 64-bit datatype, then compilers will complain about + * the fake 64-bit datatype that SDL provides when it compiles user code. + */ +#define SDL_Swap64(X) (X) +#endif /* SDL_HAS_64BIT_TYPE */ +/*@}*/ + +/** + * @name SDL_SwapLE and SDL_SwapBE Functions + * Byteswap item from the specified endianness to the native endianness + */ +/*@{*/ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#endif +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_endian_h */ diff --git a/Windows/SDL/include/SDL_error.h b/Windows/SDL/include/SDL_error.h new file mode 100644 index 0000000..4e1cce3 --- /dev/null +++ b/Windows/SDL/include/SDL_error.h @@ -0,0 +1,72 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_error.h + * Simple error message routines for SDL + */ + +#ifndef _SDL_error_h +#define _SDL_error_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Public functions + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_SetError(const char *fmt, ...); +extern DECLSPEC char * SDLCALL SDL_GetError(void); +extern DECLSPEC void SDLCALL SDL_ClearError(void); +/*@}*/ + +/** + * @name Private functions + * @internal Private error message function - used internally + */ +/*@{*/ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +typedef enum { + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +extern DECLSPEC void SDLCALL SDL_Error(SDL_errorcode code); +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_error_h */ diff --git a/Windows/SDL/include/SDL_events.h b/Windows/SDL/include/SDL_events.h new file mode 100644 index 0000000..94b4202 --- /dev/null +++ b/Windows/SDL/include/SDL_events.h @@ -0,0 +1,356 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_events.h + * Include file for SDL event handling + */ + +#ifndef _SDL_events_h +#define _SDL_events_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_active.h" +#include "SDL_keyboard.h" +#include "SDL_mouse.h" +#include "SDL_joystick.h" +#include "SDL_quit.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name General keyboard/mouse state definitions */ +/*@{*/ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 +/*@}*/ + +/** Event enumerations */ +typedef enum { + SDL_NOEVENT = 0, /**< Unused (do not remove) */ + SDL_ACTIVEEVENT, /**< Application loses/gains visibility */ + SDL_KEYDOWN, /**< Keys pressed */ + SDL_KEYUP, /**< Keys released */ + SDL_MOUSEMOTION, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_JOYAXISMOTION, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_QUIT, /**< User-requested quit */ + SDL_SYSWMEVENT, /**< System specific event */ + SDL_EVENT_RESERVEDA, /**< Reserved for future use.. */ + SDL_EVENT_RESERVEDB, /**< Reserved for future use.. */ + SDL_VIDEORESIZE, /**< User resized video mode */ + SDL_VIDEOEXPOSE, /**< Screen needs to be redrawn */ + SDL_EVENT_RESERVED2, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED3, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED4, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED5, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED6, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED7, /**< Reserved for future use.. */ + /** Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */ + SDL_USEREVENT = 24, + /** This last event is only for bounding internal arrays + * It is the number of bits in the event mask datatype -- Uint32 + */ + SDL_NUMEVENTS = 32 +} SDL_EventType; + +/** @name Predefined event masks */ +/*@{*/ +#define SDL_EVENTMASK(X) (1<<(X)) +typedef enum { + SDL_ACTIVEEVENTMASK = SDL_EVENTMASK(SDL_ACTIVEEVENT), + SDL_KEYDOWNMASK = SDL_EVENTMASK(SDL_KEYDOWN), + SDL_KEYUPMASK = SDL_EVENTMASK(SDL_KEYUP), + SDL_KEYEVENTMASK = SDL_EVENTMASK(SDL_KEYDOWN)| + SDL_EVENTMASK(SDL_KEYUP), + SDL_MOUSEMOTIONMASK = SDL_EVENTMASK(SDL_MOUSEMOTION), + SDL_MOUSEBUTTONDOWNMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN), + SDL_MOUSEBUTTONUPMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONUP), + SDL_MOUSEEVENTMASK = SDL_EVENTMASK(SDL_MOUSEMOTION)| + SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)| + SDL_EVENTMASK(SDL_MOUSEBUTTONUP), + SDL_JOYAXISMOTIONMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION), + SDL_JOYBALLMOTIONMASK = SDL_EVENTMASK(SDL_JOYBALLMOTION), + SDL_JOYHATMOTIONMASK = SDL_EVENTMASK(SDL_JOYHATMOTION), + SDL_JOYBUTTONDOWNMASK = SDL_EVENTMASK(SDL_JOYBUTTONDOWN), + SDL_JOYBUTTONUPMASK = SDL_EVENTMASK(SDL_JOYBUTTONUP), + SDL_JOYEVENTMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION)| + SDL_EVENTMASK(SDL_JOYBALLMOTION)| + SDL_EVENTMASK(SDL_JOYHATMOTION)| + SDL_EVENTMASK(SDL_JOYBUTTONDOWN)| + SDL_EVENTMASK(SDL_JOYBUTTONUP), + SDL_VIDEORESIZEMASK = SDL_EVENTMASK(SDL_VIDEORESIZE), + SDL_VIDEOEXPOSEMASK = SDL_EVENTMASK(SDL_VIDEOEXPOSE), + SDL_QUITMASK = SDL_EVENTMASK(SDL_QUIT), + SDL_SYSWMEVENTMASK = SDL_EVENTMASK(SDL_SYSWMEVENT) +} SDL_EventMask ; +#define SDL_ALLEVENTS 0xFFFFFFFF +/*@}*/ + +/** Application visibility event structure */ +typedef struct SDL_ActiveEvent { + Uint8 type; /**< SDL_ACTIVEEVENT */ + Uint8 gain; /**< Whether given states were gained or lost (1/0) */ + Uint8 state; /**< A mask of the focus states */ +} SDL_ActiveEvent; + +/** Keyboard event structure */ +typedef struct SDL_KeyboardEvent { + Uint8 type; /**< SDL_KEYDOWN or SDL_KEYUP */ + Uint8 which; /**< The keyboard device index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + SDL_keysym keysym; +} SDL_KeyboardEvent; + +/** Mouse motion event structure */ +typedef struct SDL_MouseMotionEvent { + Uint8 type; /**< SDL_MOUSEMOTION */ + Uint8 which; /**< The mouse device index */ + Uint8 state; /**< The current button state */ + Uint16 x, y; /**< The X/Y coordinates of the mouse */ + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** Mouse button event structure */ +typedef struct SDL_MouseButtonEvent { + Uint8 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */ + Uint8 which; /**< The mouse device index */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint16 x, y; /**< The X/Y coordinates of the mouse at press time */ +} SDL_MouseButtonEvent; + +/** Joystick axis motion event structure */ +typedef struct SDL_JoyAxisEvent { + Uint8 type; /**< SDL_JOYAXISMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 axis; /**< The joystick axis index */ + Sint16 value; /**< The axis value (range: -32768 to 32767) */ +} SDL_JoyAxisEvent; + +/** Joystick trackball motion event structure */ +typedef struct SDL_JoyBallEvent { + Uint8 type; /**< SDL_JOYBALLMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 ball; /**< The joystick trackball index */ + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** Joystick hat position change event structure */ +typedef struct SDL_JoyHatEvent { + Uint8 type; /**< SDL_JOYHATMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value: + * SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP + * SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT + * SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN + * Note that zero means the POV is centered. + */ +} SDL_JoyHatEvent; + +/** Joystick button event structure */ +typedef struct SDL_JoyButtonEvent { + Uint8 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */ + Uint8 which; /**< The joystick device index */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ +} SDL_JoyButtonEvent; + +/** The "window resized" event + * When you get this event, you are responsible for setting a new video + * mode with the new width and height. + */ +typedef struct SDL_ResizeEvent { + Uint8 type; /**< SDL_VIDEORESIZE */ + int w; /**< New width */ + int h; /**< New height */ +} SDL_ResizeEvent; + +/** The "screen redraw" event */ +typedef struct SDL_ExposeEvent { + Uint8 type; /**< SDL_VIDEOEXPOSE */ +} SDL_ExposeEvent; + +/** The "quit requested" event */ +typedef struct SDL_QuitEvent { + Uint8 type; /**< SDL_QUIT */ +} SDL_QuitEvent; + +/** A user-defined event type */ +typedef struct SDL_UserEvent { + Uint8 type; /**< SDL_USEREVENT through SDL_NUMEVENTS-1 */ + int code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + +/** If you want to use this event, you should include SDL_syswm.h */ +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; +typedef struct SDL_SysWMEvent { + Uint8 type; + SDL_SysWMmsg *msg; +} SDL_SysWMEvent; + +/** General event structure */ +typedef union SDL_Event { + Uint8 type; + SDL_ActiveEvent active; + SDL_KeyboardEvent key; + SDL_MouseMotionEvent motion; + SDL_MouseButtonEvent button; + SDL_JoyAxisEvent jaxis; + SDL_JoyBallEvent jball; + SDL_JoyHatEvent jhat; + SDL_JoyButtonEvent jbutton; + SDL_ResizeEvent resize; + SDL_ExposeEvent expose; + SDL_QuitEvent quit; + SDL_UserEvent user; + SDL_SysWMEvent syswm; +} SDL_Event; + + +/* Function prototypes */ + +/** Pumps the event loop, gathering events from the input devices. + * This function updates the event queue and internal input device state. + * This should only be run in the thread that sets the video mode. + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +typedef enum { + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Checks the event queue for messages and optionally returns them. + * + * If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to + * the back of the event queue. + * If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front + * of the event queue, matching 'mask', will be returned and will not + * be removed from the queue. + * If 'action' is SDL_GETEVENT, up to 'numevents' events at the front + * of the event queue, matching 'mask', will be returned and will be + * removed from the queue. + * + * @return + * This function returns the number of events actually stored, or -1 + * if there was an error. + * + * This function is thread-safe. + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event *events, int numevents, + SDL_eventaction action, Uint32 mask); + +/** Polls for currently pending events, and returns 1 if there are any pending + * events, or 0 if there are none available. If 'event' is not NULL, the next + * event is removed from the queue and stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event *event); + +/** Waits indefinitely for the next available event, returning 1, or 0 if there + * was an error while waiting for events. If 'event' is not NULL, the next + * event is removed from the queue and stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event *event); + +/** Add an event to the event queue. + * This function returns 0 on success, or -1 if the event queue was full + * or there was some other error. + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event *event); + +/** @name Event Filtering */ +/*@{*/ +typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); +/** + * This function sets up a filter to process all events before they + * change internal state and are posted to the internal event queue. + * + * The filter is protypted as: + * @code typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); @endcode + * + * If the filter returns 1, then the event will be added to the internal queue. + * If it returns 0, then the event will be dropped from the queue, but the + * internal state will still be updated. This allows selective filtering of + * dynamically arriving events. + * + * @warning Be very careful of what you do in the event filter function, as + * it may run in a different thread! + * + * There is one caveat when dealing with the SDL_QUITEVENT event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will + * be closed, otherwise the window will remain open if possible. + * If the quit event is generated by an interrupt signal, it will bypass the + * internal queue and be delivered to the application at the next event poll. + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter); + +/** + * Return the current event filter - can be used to "chain" filters. + * If there is no event filter set, this function returns NULL. + */ +extern DECLSPEC SDL_EventFilter SDLCALL SDL_GetEventFilter(void); +/*@}*/ + +/** @name Event State */ +/*@{*/ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 +/*@}*/ + +/** +* This function allows you to set the state of processing certain events. +* If 'state' is set to SDL_IGNORE, that event will be automatically dropped +* from the event queue and will not event be filtered. +* If 'state' is set to SDL_ENABLE, that event will be processed normally. +* If 'state' is set to SDL_QUERY, SDL_EventState() will return the +* current processing state of the specified event. +*/ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint8 type, int state); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_events_h */ diff --git a/Windows/SDL/include/SDL_getenv.h b/Windows/SDL/include/SDL_getenv.h new file mode 100644 index 0000000..bea6300 --- /dev/null +++ b/Windows/SDL/include/SDL_getenv.h @@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_getenv.h + * @deprecated Use SDL_stdinc.h instead + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/Windows/SDL/include/SDL_joystick.h b/Windows/SDL/include/SDL_joystick.h new file mode 100644 index 0000000..708d1a9 --- /dev/null +++ b/Windows/SDL/include/SDL_joystick.h @@ -0,0 +1,187 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_joystick.h + * Include file for SDL joystick event handling + */ + +#ifndef _SDL_joystick_h +#define _SDL_joystick_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL_joystick.h + * @note In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + */ + +/** The joystick structure used to identify an SDL joystick */ +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* Function prototypes */ +/** + * Count the number of joysticks attached to the system + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * If no name can be found, this function returns NULL. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickName(int device_index); + +/** + * Open a joystick for use. + * + * @param[in] device_index + * The index passed as an argument refers to + * the N'th joystick on the system. This index is the value which will + * identify this joystick in future joystick events. + * + * @return This function returns a joystick identifier, or NULL if an error occurred. + */ +extern DECLSPEC SDL_Joystick * SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Returns 1 if the joystick has been opened, or 0 if it has not. + */ +extern DECLSPEC int SDLCALL SDL_JoystickOpened(int device_index); + +/** + * Get the device index of an opened joystick. + */ +extern DECLSPEC int SDLCALL SDL_JoystickIndex(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick + * + * Joystick trackballs have only relative motion events associated + * with them and their state cannot be polled. + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick + * events are enabled. + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and check the state of the joystick when you want joystick + * information. + * + * @param[in] state The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE. + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +/** + * Get the current state of an axis control on a joystick + * + * @param[in] axis The axis indices start at index 0. + * + * @return The state is a value ranging from -32768 to 32767. + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis); + +/** + * @name Hat Positions + * The return value of SDL_JoystickGetHat() is one of the following positions: + */ +/*@{*/ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/*@}*/ + +/** + * Get the current state of a POV hat on a joystick + * + * @param[in] hat The hat indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, int hat); + +/** + * Get the ball axis change since the last poll + * + * @param[in] ball The ball indices start at index 0. + * + * @return This returns 0, or -1 if you passed it invalid parameters. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick + * + * @param[in] button The button indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, int button); + +/** + * Close a joystick previously opened with SDL_JoystickOpen() + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_joystick_h */ diff --git a/Windows/SDL/include/SDL_keyboard.h b/Windows/SDL/include/SDL_keyboard.h new file mode 100644 index 0000000..9d7129c --- /dev/null +++ b/Windows/SDL/include/SDL_keyboard.h @@ -0,0 +1,135 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_keyboard.h + * Include file for SDL keyboard event handling + */ + +#ifndef _SDL_keyboard_h +#define _SDL_keyboard_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_keysym.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** Keysym structure + * + * - The scancode is hardware dependent, and should not be used by general + * applications. If no hardware scancode is available, it will be 0. + * + * - The 'unicode' translated character is only available when character + * translation is enabled by the SDL_EnableUNICODE() API. If non-zero, + * this is a UNICODE character corresponding to the keypress. If the + * high 9 bits of the character are 0, then this maps to the equivalent + * ASCII character: + * @code + * char ch; + * if ( (keysym.unicode & 0xFF80) == 0 ) { + * ch = keysym.unicode & 0x7F; + * } else { + * An international character.. + * } + * @endcode + */ +typedef struct SDL_keysym { + Uint8 scancode; /**< hardware specific scancode */ + SDLKey sym; /**< SDL virtual keysym */ + SDLMod mod; /**< current key modifiers */ + Uint16 unicode; /**< translated character */ +} SDL_keysym; + +/** This is the mask which refers to all hotkey bindings */ +#define SDL_ALL_HOTKEYS 0xFFFFFFFF + +/* Function prototypes */ +/** + * Enable/Disable UNICODE translation of keyboard input. + * + * This translation has some overhead, so translation defaults off. + * + * @param[in] enable + * If 'enable' is 1, translation is enabled. + * If 'enable' is 0, translation is disabled. + * If 'enable' is -1, the translation state is not changed. + * + * @return It returns the previous state of keyboard translation. + */ +extern DECLSPEC int SDLCALL SDL_EnableUNICODE(int enable); + +#define SDL_DEFAULT_REPEAT_DELAY 500 +#define SDL_DEFAULT_REPEAT_INTERVAL 30 +/** + * Enable/Disable keyboard repeat. Keyboard repeat defaults to off. + * + * @param[in] delay + * 'delay' is the initial delay in ms between the time when a key is + * pressed, and keyboard repeat begins. + * + * @param[in] interval + * 'interval' is the time in ms between keyboard repeat events. + * + * If 'delay' is set to 0, keyboard repeat is disabled. + */ +extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval); +extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval); + +/** + * Get a snapshot of the current state of the keyboard. + * Returns an array of keystates, indexed by the SDLK_* syms. + * Usage: + * @code + * Uint8 *keystate = SDL_GetKeyState(NULL); + * if ( keystate[SDLK_RETURN] ) //... \ is pressed. + * @endcode + */ +extern DECLSPEC Uint8 * SDLCALL SDL_GetKeyState(int *numkeys); + +/** + * Get the current key modifier state + */ +extern DECLSPEC SDLMod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state. + * This does not change the keyboard state, only the key modifier flags. + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDLMod modstate); + +/** + * Get the name of an SDL virtual keysym + */ +extern DECLSPEC char * SDLCALL SDL_GetKeyName(SDLKey key); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_keyboard_h */ diff --git a/Windows/SDL/include/SDL_keysym.h b/Windows/SDL/include/SDL_keysym.h new file mode 100644 index 0000000..f2ad12b --- /dev/null +++ b/Windows/SDL/include/SDL_keysym.h @@ -0,0 +1,326 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_keysym_h +#define _SDL_keysym_h + +/** What we really want is a mapping of every raw key on the keyboard. + * To support international keyboards, we use the range 0xA1 - 0xFF + * as international virtual keycodes. We'll follow in the footsteps of X11... + * @brief The names of the keys + */ +typedef enum { + /** @name ASCII mapped keysyms + * The keyboard syms have been cleverly chosen to map to ASCII + */ + /*@{*/ + SDLK_UNKNOWN = 0, + SDLK_FIRST = 0, + SDLK_BACKSPACE = 8, + SDLK_TAB = 9, + SDLK_CLEAR = 12, + SDLK_RETURN = 13, + SDLK_PAUSE = 19, + SDLK_ESCAPE = 27, + SDLK_SPACE = 32, + SDLK_EXCLAIM = 33, + SDLK_QUOTEDBL = 34, + SDLK_HASH = 35, + SDLK_DOLLAR = 36, + SDLK_AMPERSAND = 38, + SDLK_QUOTE = 39, + SDLK_LEFTPAREN = 40, + SDLK_RIGHTPAREN = 41, + SDLK_ASTERISK = 42, + SDLK_PLUS = 43, + SDLK_COMMA = 44, + SDLK_MINUS = 45, + SDLK_PERIOD = 46, + SDLK_SLASH = 47, + SDLK_0 = 48, + SDLK_1 = 49, + SDLK_2 = 50, + SDLK_3 = 51, + SDLK_4 = 52, + SDLK_5 = 53, + SDLK_6 = 54, + SDLK_7 = 55, + SDLK_8 = 56, + SDLK_9 = 57, + SDLK_COLON = 58, + SDLK_SEMICOLON = 59, + SDLK_LESS = 60, + SDLK_EQUALS = 61, + SDLK_GREATER = 62, + SDLK_QUESTION = 63, + SDLK_AT = 64, + /* + Skip uppercase letters + */ + SDLK_LEFTBRACKET = 91, + SDLK_BACKSLASH = 92, + SDLK_RIGHTBRACKET = 93, + SDLK_CARET = 94, + SDLK_UNDERSCORE = 95, + SDLK_BACKQUOTE = 96, + SDLK_a = 97, + SDLK_b = 98, + SDLK_c = 99, + SDLK_d = 100, + SDLK_e = 101, + SDLK_f = 102, + SDLK_g = 103, + SDLK_h = 104, + SDLK_i = 105, + SDLK_j = 106, + SDLK_k = 107, + SDLK_l = 108, + SDLK_m = 109, + SDLK_n = 110, + SDLK_o = 111, + SDLK_p = 112, + SDLK_q = 113, + SDLK_r = 114, + SDLK_s = 115, + SDLK_t = 116, + SDLK_u = 117, + SDLK_v = 118, + SDLK_w = 119, + SDLK_x = 120, + SDLK_y = 121, + SDLK_z = 122, + SDLK_DELETE = 127, + /* End of ASCII mapped keysyms */ + /*@}*/ + + /** @name International keyboard syms */ + /*@{*/ + SDLK_WORLD_0 = 160, /* 0xA0 */ + SDLK_WORLD_1 = 161, + SDLK_WORLD_2 = 162, + SDLK_WORLD_3 = 163, + SDLK_WORLD_4 = 164, + SDLK_WORLD_5 = 165, + SDLK_WORLD_6 = 166, + SDLK_WORLD_7 = 167, + SDLK_WORLD_8 = 168, + SDLK_WORLD_9 = 169, + SDLK_WORLD_10 = 170, + SDLK_WORLD_11 = 171, + SDLK_WORLD_12 = 172, + SDLK_WORLD_13 = 173, + SDLK_WORLD_14 = 174, + SDLK_WORLD_15 = 175, + SDLK_WORLD_16 = 176, + SDLK_WORLD_17 = 177, + SDLK_WORLD_18 = 178, + SDLK_WORLD_19 = 179, + SDLK_WORLD_20 = 180, + SDLK_WORLD_21 = 181, + SDLK_WORLD_22 = 182, + SDLK_WORLD_23 = 183, + SDLK_WORLD_24 = 184, + SDLK_WORLD_25 = 185, + SDLK_WORLD_26 = 186, + SDLK_WORLD_27 = 187, + SDLK_WORLD_28 = 188, + SDLK_WORLD_29 = 189, + SDLK_WORLD_30 = 190, + SDLK_WORLD_31 = 191, + SDLK_WORLD_32 = 192, + SDLK_WORLD_33 = 193, + SDLK_WORLD_34 = 194, + SDLK_WORLD_35 = 195, + SDLK_WORLD_36 = 196, + SDLK_WORLD_37 = 197, + SDLK_WORLD_38 = 198, + SDLK_WORLD_39 = 199, + SDLK_WORLD_40 = 200, + SDLK_WORLD_41 = 201, + SDLK_WORLD_42 = 202, + SDLK_WORLD_43 = 203, + SDLK_WORLD_44 = 204, + SDLK_WORLD_45 = 205, + SDLK_WORLD_46 = 206, + SDLK_WORLD_47 = 207, + SDLK_WORLD_48 = 208, + SDLK_WORLD_49 = 209, + SDLK_WORLD_50 = 210, + SDLK_WORLD_51 = 211, + SDLK_WORLD_52 = 212, + SDLK_WORLD_53 = 213, + SDLK_WORLD_54 = 214, + SDLK_WORLD_55 = 215, + SDLK_WORLD_56 = 216, + SDLK_WORLD_57 = 217, + SDLK_WORLD_58 = 218, + SDLK_WORLD_59 = 219, + SDLK_WORLD_60 = 220, + SDLK_WORLD_61 = 221, + SDLK_WORLD_62 = 222, + SDLK_WORLD_63 = 223, + SDLK_WORLD_64 = 224, + SDLK_WORLD_65 = 225, + SDLK_WORLD_66 = 226, + SDLK_WORLD_67 = 227, + SDLK_WORLD_68 = 228, + SDLK_WORLD_69 = 229, + SDLK_WORLD_70 = 230, + SDLK_WORLD_71 = 231, + SDLK_WORLD_72 = 232, + SDLK_WORLD_73 = 233, + SDLK_WORLD_74 = 234, + SDLK_WORLD_75 = 235, + SDLK_WORLD_76 = 236, + SDLK_WORLD_77 = 237, + SDLK_WORLD_78 = 238, + SDLK_WORLD_79 = 239, + SDLK_WORLD_80 = 240, + SDLK_WORLD_81 = 241, + SDLK_WORLD_82 = 242, + SDLK_WORLD_83 = 243, + SDLK_WORLD_84 = 244, + SDLK_WORLD_85 = 245, + SDLK_WORLD_86 = 246, + SDLK_WORLD_87 = 247, + SDLK_WORLD_88 = 248, + SDLK_WORLD_89 = 249, + SDLK_WORLD_90 = 250, + SDLK_WORLD_91 = 251, + SDLK_WORLD_92 = 252, + SDLK_WORLD_93 = 253, + SDLK_WORLD_94 = 254, + SDLK_WORLD_95 = 255, /* 0xFF */ + /*@}*/ + + /** @name Numeric keypad */ + /*@{*/ + SDLK_KP0 = 256, + SDLK_KP1 = 257, + SDLK_KP2 = 258, + SDLK_KP3 = 259, + SDLK_KP4 = 260, + SDLK_KP5 = 261, + SDLK_KP6 = 262, + SDLK_KP7 = 263, + SDLK_KP8 = 264, + SDLK_KP9 = 265, + SDLK_KP_PERIOD = 266, + SDLK_KP_DIVIDE = 267, + SDLK_KP_MULTIPLY = 268, + SDLK_KP_MINUS = 269, + SDLK_KP_PLUS = 270, + SDLK_KP_ENTER = 271, + SDLK_KP_EQUALS = 272, + /*@}*/ + + /** @name Arrows + Home/End pad */ + /*@{*/ + SDLK_UP = 273, + SDLK_DOWN = 274, + SDLK_RIGHT = 275, + SDLK_LEFT = 276, + SDLK_INSERT = 277, + SDLK_HOME = 278, + SDLK_END = 279, + SDLK_PAGEUP = 280, + SDLK_PAGEDOWN = 281, + /*@}*/ + + /** @name Function keys */ + /*@{*/ + SDLK_F1 = 282, + SDLK_F2 = 283, + SDLK_F3 = 284, + SDLK_F4 = 285, + SDLK_F5 = 286, + SDLK_F6 = 287, + SDLK_F7 = 288, + SDLK_F8 = 289, + SDLK_F9 = 290, + SDLK_F10 = 291, + SDLK_F11 = 292, + SDLK_F12 = 293, + SDLK_F13 = 294, + SDLK_F14 = 295, + SDLK_F15 = 296, + /*@}*/ + + /** @name Key state modifier keys */ + /*@{*/ + SDLK_NUMLOCK = 300, + SDLK_CAPSLOCK = 301, + SDLK_SCROLLOCK = 302, + SDLK_RSHIFT = 303, + SDLK_LSHIFT = 304, + SDLK_RCTRL = 305, + SDLK_LCTRL = 306, + SDLK_RALT = 307, + SDLK_LALT = 308, + SDLK_RMETA = 309, + SDLK_LMETA = 310, + SDLK_LSUPER = 311, /**< Left "Windows" key */ + SDLK_RSUPER = 312, /**< Right "Windows" key */ + SDLK_MODE = 313, /**< "Alt Gr" key */ + SDLK_COMPOSE = 314, /**< Multi-key compose key */ + /*@}*/ + + /** @name Miscellaneous function keys */ + /*@{*/ + SDLK_HELP = 315, + SDLK_PRINT = 316, + SDLK_SYSREQ = 317, + SDLK_BREAK = 318, + SDLK_MENU = 319, + SDLK_POWER = 320, /**< Power Macintosh power key */ + SDLK_EURO = 321, /**< Some european keyboards */ + SDLK_UNDO = 322, /**< Atari keyboard has Undo */ + /*@}*/ + + /* Add any other keys here */ + + SDLK_LAST +} SDLKey; + +/** Enumeration of valid key mods (possibly OR'd together) */ +typedef enum { + KMOD_NONE = 0x0000, + KMOD_LSHIFT= 0x0001, + KMOD_RSHIFT= 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LMETA = 0x0400, + KMOD_RMETA = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_RESERVED = 0x8000 +} SDLMod; + +#define KMOD_CTRL (KMOD_LCTRL|KMOD_RCTRL) +#define KMOD_SHIFT (KMOD_LSHIFT|KMOD_RSHIFT) +#define KMOD_ALT (KMOD_LALT|KMOD_RALT) +#define KMOD_META (KMOD_LMETA|KMOD_RMETA) + +#endif /* _SDL_keysym_h */ diff --git a/Windows/SDL/include/SDL_loadso.h b/Windows/SDL/include/SDL_loadso.h new file mode 100644 index 0000000..0c5e536 --- /dev/null +++ b/Windows/SDL/include/SDL_loadso.h @@ -0,0 +1,78 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_loadso.h + * System dependent library loading routines + */ + +/** @file SDL_loadso.h + * Some things to keep in mind: + * - These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * - Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * - Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + + +#ifndef _SDL_loadso_h +#define _SDL_loadso_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This function dynamically loads a shared object and returns a pointer + * to the object handle (or NULL if there was an error). + * The 'sofile' parameter is a system dependent name of the object file. + */ +extern DECLSPEC void * SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Given an object handle, this function looks up the address of the + * named function in the shared object and returns it. This address + * is no longer valid after calling SDL_UnloadObject(). + */ +extern DECLSPEC void * SDLCALL SDL_LoadFunction(void *handle, const char *name); + +/** Unload a shared object from memory */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_loadso_h */ diff --git a/Windows/SDL/include/SDL_main.h b/Windows/SDL/include/SDL_main.h new file mode 100644 index 0000000..ab50ef1 --- /dev/null +++ b/Windows/SDL/include/SDL_main.h @@ -0,0 +1,106 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_main_h +#define _SDL_main_h + +#include "SDL_stdinc.h" + +/** @file SDL_main.h + * Redefine main() on Win32 and MacOS so that it is called by winmain.c + */ + +#if defined(__WIN32__) || \ + (defined(__MWERKS__) && !defined(__BEOS__)) || \ + defined(__MACOS__) || defined(__MACOSX__) || \ + defined(__SYMBIAN32__) || defined(QWS) + +#ifdef __cplusplus +#define C_LINKAGE "C" +#else +#define C_LINKAGE +#endif /* __cplusplus */ + +/** The application's main() function must be called with C linkage, + * and should be declared like this: + * @code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * @endcode + */ +#define main SDL_main + +/** The prototype for the application's main() function */ +extern C_LINKAGE int SDL_main(int argc, char *argv[]); + + +/** @name From the SDL library code -- needed for registering the app on Win32 */ +/*@{*/ +#ifdef __WIN32__ + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** This should be called from your WinMain() function, if any */ +extern DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst); +/** This can also be called, but is no longer necessary */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst); +/** This can also be called, but is no longer necessary (SDL_Quit calls it) */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); +#ifdef __cplusplus +} +#endif +#include "close_code.h" +#endif +/*@}*/ + +/** @name From the SDL library code -- needed for registering QuickDraw on MacOS */ +/*@{*/ +#if defined(__MACOS__) + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** Forward declaration so we don't need to include QuickDraw.h */ +struct QDGlobals; + +/** This should be called from your main() function, if any */ +extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); + +#ifdef __cplusplus +} +#endif +#include "close_code.h" +#endif +/*@}*/ + +#endif /* Need to redefine main()? */ + +#endif /* _SDL_main_h */ diff --git a/Windows/SDL/include/SDL_mouse.h b/Windows/SDL/include/SDL_mouse.h new file mode 100644 index 0000000..7c563b9 --- /dev/null +++ b/Windows/SDL/include/SDL_mouse.h @@ -0,0 +1,143 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_mouse.h + * Include file for SDL mouse event handling + */ + +#ifndef _SDL_mouse_h +#define _SDL_mouse_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct WMcursor WMcursor; /**< Implementation dependent */ +typedef struct SDL_Cursor { + SDL_Rect area; /**< The area of the mouse cursor */ + Sint16 hot_x, hot_y; /**< The "tip" of the cursor */ + Uint8 *data; /**< B/W cursor data */ + Uint8 *mask; /**< B/W cursor mask */ + Uint8 *save[2]; /**< Place to save cursor area */ + WMcursor *wm_cursor; /**< Window-manager cursor */ +} SDL_Cursor; + +/* Function prototypes */ +/** + * Retrieve the current state of the mouse. + * The current button state is returned as a button bitmask, which can + * be tested using the SDL_BUTTON(X) macros, and x and y are set to the + * current mouse cursor position. You can pass NULL for either x or y. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Retrieve the current state of the mouse. + * The current button state is returned as a button bitmask, which can + * be tested using the SDL_BUTTON(X) macros, and x and y are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState(). + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Set the position of the mouse cursor (generates a mouse motion event) + */ +extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y); + +/** + * Create a cursor using the specified data and mask (in MSB format). + * The cursor width must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * data mask resulting pixel on screen + * 0 1 White + * 1 1 Black + * 0 0 Transparent + * 1 0 Inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + */ +extern DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor + (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); + +/** + * Set the currently active cursor to the specified one. + * If the cursor is currently visible, the change will be immediately + * represented on the display. + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor *cursor); + +/** + * Returns the currently active cursor. + */ +extern DECLSPEC SDL_Cursor * SDLCALL SDL_GetCursor(void); + +/** + * Deallocates a cursor created with SDL_CreateCursor(). + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor *cursor); + +/** + * Toggle whether or not the cursor is shown on the screen. + * The cursor start off displayed, but can be turned off. + * SDL_ShowCursor() returns 1 if the cursor was being displayed + * before the call, or 0 if it was not. You can query the current + * state by passing a 'toggle' value of -1. + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/*@{*/ +/** Used as a mask when testing buttons in buttonstate + * Button 1: Left mouse button + * Button 2: Middle mouse button + * Button 3: Right mouse button + * Button 4: Mouse wheel up (may also be a real button) + * Button 5: Mouse wheel down (may also be a real button) + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_WHEELUP 4 +#define SDL_BUTTON_WHEELDOWN 5 +#define SDL_BUTTON_X1 6 +#define SDL_BUTTON_X2 7 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_mouse_h */ diff --git a/Windows/SDL/include/SDL_mutex.h b/Windows/SDL/include/SDL_mutex.h new file mode 100644 index 0000000..c8da9b1 --- /dev/null +++ b/Windows/SDL/include/SDL_mutex.h @@ -0,0 +1,177 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_mutex_h +#define _SDL_mutex_h + +/** @file SDL_mutex.h + * Functions to provide thread synchronization primitives + * + * @note These are independent of the other SDL routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** This is the timeout value which corresponds to never time out */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Mutex functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** The SDL mutex structure, defined in SDL_mutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** Create a mutex, initialized unlocked */ +extern DECLSPEC SDL_mutex * SDLCALL SDL_CreateMutex(void); + +#define SDL_LockMutex(m) SDL_mutexP(m) +/** Lock the mutex + * @return 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_mutexP(SDL_mutex *mutex); + +#define SDL_UnlockMutex(m) SDL_mutexV(m) +/** Unlock the mutex + * @return 0, or -1 on error + * + * It is an error to unlock a mutex that has not been locked by + * the current thread, and doing so results in undefined behavior. + */ +extern DECLSPEC int SDLCALL SDL_mutexV(SDL_mutex *mutex); + +/** Destroy a mutex */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex *mutex); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Semaphore functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** The SDL semaphore structure, defined in SDL_sem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** Create a semaphore, initialized with value, returns NULL on failure. */ +extern DECLSPEC SDL_sem * SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** Destroy a semaphore */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem *sem); + +/** + * This function suspends the calling thread until the semaphore pointed + * to by sem has a positive count. It then atomically decreases the semaphore + * count. + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem *sem); + +/** Non-blocking variant of SDL_SemWait(). + * @return 0 if the wait succeeds, + * SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem *sem); + +/** Variant of SDL_SemWait() with a timeout in milliseconds, returns 0 if + * the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait does not succeed in + * the allotted time, and -1 on error. + * + * On some platforms this function is implemented by looping with a delay + * of 1 ms, and so should be avoided if possible. + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 ms); + +/** Atomically increases the semaphore's count (not blocking). + * @return 0, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem *sem); + +/** Returns the current count of the semaphore */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem *sem); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Condition_variable_functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*@{*/ +/** The SDL condition variable structure, defined in SDL_cond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; +/*@}*/ + +/** Create a condition variable */ +extern DECLSPEC SDL_cond * SDLCALL SDL_CreateCond(void); + +/** Destroy a condition variable */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond *cond); + +/** Restart one of the threads that are waiting on the condition variable, + * @return 0 or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond *cond); + +/** Restart all threads that are waiting on the condition variable, + * @return 0 or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond *cond); + +/** Wait on the condition variable, unlocking the provided mutex. + * The mutex must be locked before entering this function! + * The mutex is re-locked once the condition variable is signaled. + * @return 0 when it is signaled, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond *cond, SDL_mutex *mut); + +/** Waits for at most 'ms' milliseconds, and returns 0 if the condition + * variable is signaled, SDL_MUTEX_TIMEDOUT if the condition is not + * signaled in the allotted time, and -1 on error. + * On some platforms this function is implemented by looping with a delay + * of 1 ms, and so should be avoided if possible. + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms); + +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_mutex_h */ + diff --git a/Windows/SDL/include/SDL_name.h b/Windows/SDL/include/SDL_name.h new file mode 100644 index 0000000..511619a --- /dev/null +++ b/Windows/SDL/include/SDL_name.h @@ -0,0 +1,11 @@ + +#ifndef _SDLname_h_ +#define _SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* _SDLname_h_ */ diff --git a/Windows/SDL/include/SDL_opengl.h b/Windows/SDL/include/SDL_opengl.h new file mode 100644 index 0000000..163872a --- /dev/null +++ b/Windows/SDL/include/SDL_opengl.h @@ -0,0 +1,7348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2021 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* This is a simple file to encapsulate the OpenGL API headers */ + +#include "SDL_config.h" + +#ifdef __WIN32__ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX +#define NOMINMAX /* Don't define min() and max() */ +#endif +#include +#endif +#ifndef NO_SDL_GLEXT +#define __glext_h_ /* Don't let gl.h include glext.h */ +#define __gl_glext_h_ /* Don't let gl.h include glext.h */ +#endif +#if defined(__MACOSX__) +#include /* Header File For The OpenGL Library */ +#include /* Header File For The GLU Library */ +#elif defined(__MACOS__) +#include /* Header File For The OpenGL Library */ +#include /* Header File For The GLU Library */ +#else +#include /* Header File For The OpenGL Library */ +#include /* Header File For The GLU Library */ +#endif +#ifndef NO_SDL_GLEXT +#undef __glext_h_ +#undef __gl_glext_h_ +#endif + +/** glext.h + * This is included here because glext.h is not available on some systems. + * If you don't want this version included, simply define "NO_SDL_GLEXT" + */ +#ifndef NO_SDL_GLEXT +#if !(defined(__glext_h_) || defined(__gl_glext_h_)) && !defined(GL_GLEXT_LEGACY) +#define __glext_h_ +#define __gl_glext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright (c) 2007 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/*************************************************************/ + +/* Header file version number, required by OpenGL ABI for Linux */ +/* glext.h last updated 2008/03/24 */ +/* Current version at http://www.opengl.org/registry/ */ +#define GL_GLEXT_VERSION 40 + +#ifndef GL_VERSION_1_2 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_RESCALE_NORMAL 0x803A +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#endif + +#ifndef GL_ARB_imaging +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_FUNC_ADD 0x8006 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BLEND_EQUATION 0x8009 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#endif + +#ifndef GL_VERSION_1_3 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#endif + +#ifndef GL_VERSION_1_4 +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#endif + +#ifndef GL_VERSION_1_5 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE +#define GL_FOG_COORD GL_FOG_COORDINATE +#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE +#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE +#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE +#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER +#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING +#define GL_SRC0_RGB GL_SOURCE0_RGB +#define GL_SRC1_RGB GL_SOURCE1_RGB +#define GL_SRC2_RGB GL_SOURCE2_RGB +#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA +#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA +#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA +#endif + +#ifndef GL_VERSION_2_0 +#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_COORDS 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#endif + +#ifndef GL_VERSION_2_1 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +#endif + +#ifndef GL_ARB_multitexture +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#endif + +#ifndef GL_ARB_transpose_matrix +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#endif + +#ifndef GL_ARB_multisample +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#endif + +#ifndef GL_ARB_texture_env_add +#endif + +#ifndef GL_ARB_texture_cube_map +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif + +#ifndef GL_ARB_texture_compression +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#endif + +#ifndef GL_ARB_texture_border_clamp +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif + +#ifndef GL_ARB_point_parameters +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#endif + +#ifndef GL_ARB_vertex_blend +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#endif + +#ifndef GL_ARB_matrix_palette +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#endif + +#ifndef GL_ARB_texture_env_combine +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif + +#ifndef GL_ARB_texture_env_crossbar +#endif + +#ifndef GL_ARB_texture_env_dot3 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#endif + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif + +#ifndef GL_ARB_depth_texture +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif + +#ifndef GL_ARB_shadow +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif + +#ifndef GL_ARB_shadow_ambient +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif + +#ifndef GL_ARB_window_pos +#endif + +#ifndef GL_ARB_vertex_program +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +#endif + +#ifndef GL_ARB_fragment_program +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#endif + +#ifndef GL_ARB_vertex_buffer_object +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +#endif + +#ifndef GL_ARB_occlusion_query +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +#endif + +#ifndef GL_ARB_shader_objects +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +#endif + +#ifndef GL_ARB_vertex_shader +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +#endif + +#ifndef GL_ARB_fragment_shader +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#endif + +#ifndef GL_ARB_shading_language_100 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#endif + +#ifndef GL_ARB_texture_non_power_of_two +#endif + +#ifndef GL_ARB_point_sprite +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif + +#ifndef GL_ARB_fragment_program_shadow +#endif + +#ifndef GL_ARB_draw_buffers +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +#endif + +#ifndef GL_ARB_texture_rectangle +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif + +#ifndef GL_ARB_color_buffer_float +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +#endif + +#ifndef GL_ARB_half_float_pixel +#define GL_HALF_FLOAT_ARB 0x140B +#endif + +#ifndef GL_ARB_texture_float +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#endif + +#ifndef GL_ARB_pixel_buffer_object +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif + +#ifndef GL_EXT_abgr +#define GL_ABGR_EXT 0x8000 +#endif + +#ifndef GL_EXT_blend_color +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +#endif + +#ifndef GL_EXT_polygon_offset +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#endif + +#ifndef GL_EXT_texture +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif + +#ifndef GL_EXT_texture3D +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#endif + +#ifndef GL_SGIS_texture_filter4 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#endif + +#ifndef GL_EXT_subtexture +#endif + +#ifndef GL_EXT_copy_texture +#endif + +#ifndef GL_EXT_histogram +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#endif + +#ifndef GL_EXT_convolution +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#endif + +#ifndef GL_SGI_color_matrix +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif + +#ifndef GL_SGI_color_table +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#endif + +#ifndef GL_SGIS_pixel_texture +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#endif + +#ifndef GL_SGIX_pixel_texture +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#endif + +#ifndef GL_SGIS_texture4D +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#endif + +#ifndef GL_SGI_texture_color_table +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif + +#ifndef GL_EXT_cmyka +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif + +#ifndef GL_EXT_texture_object +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#endif + +#ifndef GL_SGIS_detail_texture +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#endif + +#ifndef GL_SGIS_sharpen_texture +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#endif + +#ifndef GL_EXT_packed_pixels +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif + +#ifndef GL_SGIS_texture_lod +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif + +#ifndef GL_SGIS_multisample +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#endif + +#ifndef GL_EXT_rescale_normal +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif + +#ifndef GL_EXT_vertex_array +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#endif + +#ifndef GL_EXT_misc_attribute +#endif + +#ifndef GL_SGIS_generate_mipmap +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif + +#ifndef GL_SGIX_clipmap +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif + +#ifndef GL_SGIX_shadow +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif + +#ifndef GL_SGIS_texture_border_clamp +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#endif + +#ifndef GL_EXT_blend_minmax +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 +#endif + +#ifndef GL_EXT_blend_subtract +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif + +#ifndef GL_EXT_blend_logic_op +#endif + +#ifndef GL_SGIX_interlace +#define GL_INTERLACE_SGIX 0x8094 +#endif + +#ifndef GL_SGIX_pixel_tiles +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif + +#ifndef GL_SGIS_texture_select +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif + +#ifndef GL_SGIX_sprite +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#endif + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif + +#ifndef GL_EXT_point_parameters +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#endif + +#ifndef GL_SGIS_point_parameters +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#endif + +#ifndef GL_SGIX_instruments +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#endif + +#ifndef GL_SGIX_texture_scale_bias +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif + +#ifndef GL_SGIX_framezoom +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#endif + +#ifndef GL_SGIX_tag_sample_buffer +#endif + +#ifndef GL_FfdMaskSGIX +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#endif + +#ifndef GL_SGIX_polynomial_ffd +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#endif + +#ifndef GL_SGIX_reference_plane +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#endif + +#ifndef GL_SGIX_flush_raster +#endif + +#ifndef GL_SGIX_depth_texture +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif + +#ifndef GL_SGIS_fog_function +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#endif + +#ifndef GL_SGIX_fog_offset +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif + +#ifndef GL_HP_image_transform +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#endif + +#ifndef GL_HP_convolution_border_modes +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif + +#ifndef GL_INGR_palette_buffer +#endif + +#ifndef GL_SGIX_texture_add_env +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif + +#ifndef GL_EXT_color_subtable +#endif + +#ifndef GL_PGI_vertex_hints +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif + +#ifndef GL_PGI_misc_hints +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#endif + +#ifndef GL_EXT_paletted_texture +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#endif + +#ifndef GL_EXT_clip_volume_hint +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif + +#ifndef GL_SGIX_list_priority +#define GL_LIST_PRIORITY_SGIX 0x8182 +#endif + +#ifndef GL_SGIX_ir_instrument1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif + +#ifndef GL_SGIX_texture_lod_bias +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif + +#ifndef GL_SGIX_shadow_ambient +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif + +#ifndef GL_EXT_index_texture +#endif + +#ifndef GL_EXT_index_material +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#endif + +#ifndef GL_EXT_index_func +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#endif + +#ifndef GL_EXT_index_array_formats +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif + +#ifndef GL_EXT_compiled_vertex_array +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#endif + +#ifndef GL_EXT_cull_vertex +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#endif + +#ifndef GL_SGIX_ycrcb +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif + +#ifndef GL_SGIX_fragment_lighting +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#endif + +#ifndef GL_IBM_rasterpos_clip +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif + +#ifndef GL_HP_texture_lighting +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif + +#ifndef GL_EXT_draw_range_elements +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#endif + +#ifndef GL_WIN_phong_shading +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif + +#ifndef GL_WIN_specular_fog +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif + +#ifndef GL_EXT_light_texture +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +/* reuse GL_FRAGMENT_DEPTH_EXT */ +#endif + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif + +#ifndef GL_SGIX_impact_pixel_texture +#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 +#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 +#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 +#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 +#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 +#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 +#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A +#endif + +#ifndef GL_EXT_bgra +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif + +#ifndef GL_SGIX_async +#define GL_ASYNC_MARKER_SGIX 0x8329 +#endif + +#ifndef GL_SGIX_async_pixel +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif + +#ifndef GL_SGIX_async_histogram +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif + +#ifndef GL_INTEL_texture_scissor +#endif + +#ifndef GL_INTEL_parallel_arrays +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#endif + +#ifndef GL_HP_occlusion_test +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif + +#ifndef GL_EXT_pixel_transform +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#endif + +#ifndef GL_EXT_pixel_transform_color_table +#endif + +#ifndef GL_EXT_shared_texture_palette +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif + +#ifndef GL_EXT_separate_specular_color +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif + +#ifndef GL_EXT_secondary_color +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#endif + +#ifndef GL_EXT_texture_perturb_normal +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#endif + +#ifndef GL_EXT_multi_draw_arrays +#endif + +#ifndef GL_EXT_fog_coord +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#endif + +#ifndef GL_REND_screen_coordinates +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif + +#ifndef GL_EXT_coordinate_frame +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#endif + +#ifndef GL_EXT_texture_env_combine +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif + +#ifndef GL_APPLE_specular_vector +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif + +#ifndef GL_APPLE_transform_hint +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif + +#ifndef GL_SGIX_fog_scale +#define GL_FOG_SCALE_SGIX 0x81FC +#define GL_FOG_SCALE_VALUE_SGIX 0x81FD +#endif + +#ifndef GL_SUNX_constant_data +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#endif + +#ifndef GL_SUN_global_alpha +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#endif + +#ifndef GL_SUN_triangle_list +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#endif + +#ifndef GL_SUN_vertex +#endif + +#ifndef GL_EXT_blend_func_separate +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#endif + +#ifndef GL_INGR_color_clamp +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif + +#ifndef GL_INGR_interlace_read +#define GL_INTERLACE_READ_INGR 0x8568 +#endif + +#ifndef GL_EXT_stencil_wrap +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif + +#ifndef GL_EXT_422_pixels +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif + +#ifndef GL_NV_texgen_reflection +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif + +#ifndef GL_EXT_texture_cube_map +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif + +#ifndef GL_SUN_convolution_border_modes +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif + +#ifndef GL_EXT_texture_env_add +#endif + +#ifndef GL_EXT_texture_lod_bias +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +#ifndef GL_EXT_vertex_weighting +#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT GL_MODELVIEW +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#endif + +#ifndef GL_NV_light_max_exponent +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif + +#ifndef GL_NV_vertex_array_range +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#endif + +#ifndef GL_NV_register_combiners +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +/* reuse GL_TEXTURE0_ARB */ +/* reuse GL_TEXTURE1_ARB */ +/* reuse GL_ZERO */ +/* reuse GL_NONE */ +/* reuse GL_FOG */ +#endif + +#ifndef GL_NV_fog_distance +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +/* reuse GL_EYE_PLANE */ +#endif + +#ifndef GL_NV_texgen_emboss +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif + +#ifndef GL_NV_blend_square +#endif + +#ifndef GL_NV_texture_env_combine4 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif + +#ifndef GL_MESA_resize_buffers +#endif + +#ifndef GL_MESA_window_pos +#endif + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif + +#ifndef GL_IBM_cull_vertex +#define GL_CULL_VERTEX_IBM 103050 +#endif + +#ifndef GL_IBM_multimode_draw_arrays +#endif + +#ifndef GL_IBM_vertex_array_lists +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#endif + +#ifndef GL_SGIX_subsample +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif + +#ifndef GL_SGIX_ycrcb_subsample +#endif + +#ifndef GL_SGIX_ycrcba +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif + +#ifndef GL_SGI_depth_pass_instrument +#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 +#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 +#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 +#endif + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif + +#ifndef GL_3DFX_multisample +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif + +#ifndef GL_3DFX_tbuffer +#endif + +#ifndef GL_EXT_multisample +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#endif + +#ifndef GL_SGIX_vertex_preclip +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif + +#ifndef GL_SGIX_convolution_accuracy +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif + +#ifndef GL_SGIX_resample +#define GL_PACK_RESAMPLE_SGIX 0x842C +#define GL_UNPACK_RESAMPLE_SGIX 0x842D +#define GL_RESAMPLE_REPLICATE_SGIX 0x842E +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif + +#ifndef GL_SGIS_point_line_texgen +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif + +#ifndef GL_SGIS_texture_color_mask +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#endif + +#ifndef GL_EXT_texture_env_dot3 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#endif + +#ifndef GL_ATI_texture_mirror_once +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#endif + +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif + +#ifndef GL_NV_evaluators +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#endif + +#ifndef GL_NV_packed_depth_stencil +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif + +#ifndef GL_NV_register_combiners2 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#endif + +#ifndef GL_NV_texture_compression_vtc +#endif + +#ifndef GL_NV_texture_rectangle +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#endif + +#ifndef GL_NV_texture_shader +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV +#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV +#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif + +#ifndef GL_NV_texture_shader2 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif + +#ifndef GL_NV_vertex_array_range2 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif + +#ifndef GL_NV_vertex_program +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#endif + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif + +#ifndef GL_SGIX_scalebias_hint +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif + +#ifndef GL_OML_interlace +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif + +#ifndef GL_OML_subsample +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif + +#ifndef GL_OML_resample +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif + +#ifndef GL_NV_copy_depth_to_color +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif + +#ifndef GL_ATI_envmap_bumpmap +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +#endif + +#ifndef GL_ATI_fragment_shader +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#endif + +#ifndef GL_ATI_pn_triangles +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#endif + +#ifndef GL_ATI_vertex_array_object +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#endif + +#ifndef GL_EXT_vertex_shader +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#endif + +#ifndef GL_ATI_vertex_streams +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#endif + +#ifndef GL_ATI_element_array +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#endif + +#ifndef GL_SUN_mesh_array +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#endif + +#ifndef GL_SUN_slice_accum +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif + +#ifndef GL_NV_multisample_filter_hint +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif + +#ifndef GL_NV_depth_clamp +#define GL_DEPTH_CLAMP_NV 0x864F +#endif + +#ifndef GL_NV_occlusion_query +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#endif + +#ifndef GL_NV_point_sprite +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#endif + +#ifndef GL_NV_texture_shader3 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif + +#ifndef GL_NV_vertex_program1_1 +#endif + +#ifndef GL_EXT_shadow_funcs +#endif + +#ifndef GL_EXT_stencil_two_side +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#endif + +#ifndef GL_ATI_text_fragment_shader +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#endif + +#ifndef GL_APPLE_client_storage +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#endif + +#ifndef GL_APPLE_element_array +#define GL_ELEMENT_ARRAY_APPLE 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A +#endif + +#ifndef GL_APPLE_fence +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +#endif + +#ifndef GL_APPLE_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#endif + +#ifndef GL_APPLE_vertex_array_range +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +#endif + +#ifndef GL_APPLE_ycbcr_422 +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#endif + +#ifndef GL_S3_s3tc +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#endif + +#ifndef GL_ATI_draw_buffers +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +#endif + +#ifndef GL_ATI_pixel_format_float +#define GL_TYPE_RGBA_FLOAT_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#endif + +#ifndef GL_ATI_texture_env_combine3 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#endif + +#ifndef GL_ATI_texture_float +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif + +#ifndef GL_NV_float_buffer +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif + +#ifndef GL_NV_fragment_program +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#endif + +#ifndef GL_NV_half_float +#define GL_HALF_FLOAT_NV 0x140B +#endif + +#ifndef GL_NV_pixel_data_range +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +#endif + +#ifndef GL_NV_primitive_restart +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#endif + +#ifndef GL_NV_texture_expand_normal +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#endif + +#ifndef GL_NV_vertex_program2 +#endif + +#ifndef GL_ATI_map_object_buffer +#endif + +#ifndef GL_ATI_separate_stencil +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +#endif + +#ifndef GL_ATI_vertex_attrib_array_object +#endif + +#ifndef GL_OES_read_format +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif + +#ifndef GL_EXT_depth_bounds_test +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +#endif + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#endif + +#ifndef GL_EXT_blend_equation_separate +#define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#endif + +#ifndef GL_MESA_pack_invert +#define GL_PACK_INVERT_MESA 0x8758 +#endif + +#ifndef GL_MESA_ycbcr_texture +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#endif + +#ifndef GL_EXT_pixel_buffer_object +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#endif + +#ifndef GL_NV_fragment_program_option +#endif + +#ifndef GL_NV_fragment_program2 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#endif + +#ifndef GL_NV_vertex_program2_option +/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ +/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */ +#endif + +#ifndef GL_NV_vertex_program3 +/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ +#endif + +#ifndef GL_EXT_framebuffer_object +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#endif + +#ifndef GL_GREMEDY_string_marker +#endif + +#ifndef GL_EXT_packed_depth_stencil +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif + +#ifndef GL_EXT_stencil_clear_tag +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#endif + +#ifndef GL_EXT_texture_sRGB +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif + +#ifndef GL_EXT_framebuffer_blit +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#endif + +#ifndef GL_EXT_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#endif + +#ifndef GL_MESAX_texture_stack +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#endif + +#ifndef GL_EXT_timer_query +#define GL_TIME_ELAPSED_EXT 0x88BF +#endif + +#ifndef GL_EXT_gpu_program_parameters +#endif + +#ifndef GL_APPLE_flush_buffer_range +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#endif + +#ifndef GL_NV_gpu_program4 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +#endif + +#ifndef GL_NV_geometry_program4 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#endif + +#ifndef GL_EXT_geometry_shader4 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */ +/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */ +/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */ +/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */ +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +/* reuse GL_LINES_ADJACENCY_EXT */ +/* reuse GL_LINE_STRIP_ADJACENCY_EXT */ +/* reuse GL_TRIANGLES_ADJACENCY_EXT */ +/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */ +/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */ +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ +/* reuse GL_PROGRAM_POINT_SIZE_EXT */ +#endif + +#ifndef GL_NV_vertex_program4 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#endif + +#ifndef GL_EXT_gpu_shader4 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#endif + +#ifndef GL_EXT_draw_instanced +#endif + +#ifndef GL_EXT_packed_float +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#endif + +#ifndef GL_EXT_texture_array +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ +#endif + +#ifndef GL_EXT_texture_buffer_object +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#endif + +#ifndef GL_EXT_texture_compression_latc +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif + +#ifndef GL_EXT_texture_shared_exponent +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#endif + +#ifndef GL_NV_depth_buffer_float +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#endif + +#ifndef GL_NV_fragment_program4 +#endif + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#endif + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#endif + +#ifndef GL_NV_geometry_shader4 +#endif + +#ifndef GL_NV_parameter_buffer_object +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +#endif + +#ifndef GL_EXT_draw_buffers2 +#endif + +#ifndef GL_NV_transform_feedback +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#endif + +#ifndef GL_EXT_bindable_uniform +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#endif + +#ifndef GL_EXT_texture_integer +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#endif + +#ifndef GL_GREMEDY_frame_terminator +#endif + + +/*************************************************************/ + +#include +#ifndef GL_VERSION_2_0 +/* GL type for program/shader text */ +typedef char GLchar; /* native character */ +#endif + +#ifndef GL_VERSION_1_5 +/* GL types for handling large vertex buffer objects */ +#ifdef __APPLE__ +typedef long GLintptr; +typedef long GLsizeiptr; +#else +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +#endif +#endif + +#ifndef GL_ARB_vertex_buffer_object +/* GL types for handling large vertex buffer objects */ +#ifdef __APPLE__ +typedef long GLintptrARB; +typedef long GLsizeiptrARB; +#else +typedef ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; +#endif +#endif + +#ifndef GL_ARB_shader_objects +/* GL types for handling shader object handles and program/shader text */ +typedef char GLcharARB; /* native character */ +#if defined(__APPLE__) +typedef void *GLhandleARB; /* shader object handle */ +#else +typedef unsigned int GLhandleARB; /* shader object handle */ +#endif +#endif + +/* GL types for "half" precision (s10e5) float data in host memory */ +#ifndef GL_ARB_half_float_pixel +typedef unsigned short GLhalfARB; +#endif + +#ifndef GL_NV_half_float +typedef unsigned short GLhalfNV; +#endif + +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glxext.h, so must be protected */ +#define GLEXT_64_TYPES_DEFINED +/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ +/* (as used in the GL_EXT_timer_query extension). */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +#elif defined(__sun__) || defined(__digital__) +#include +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include +#elif defined(__SCO__) || defined(__USLC__) +#include +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && (defined(__GNUC__)||defined(__WATCOMC__)) +#include +#elif defined(_WIN32) +#if 0 /* handled by SDL_config_windows.h */ +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#endif /* */ +#elif defined(__MACOS__) /* handled by SDL_config_macos.h */ +#else +#include /* Fallback option */ +#endif +#endif + +#ifndef GL_EXT_timer_query +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); +GLAPI void APIENTRY glBlendEquation (GLenum); +GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); +GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); +GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogram (GLenum); +GLAPI void APIENTRY glResetMinmax (GLenum); +GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum); +GLAPI void APIENTRY glClientActiveTexture (GLenum); +GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); +#endif + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glFogCoordf (GLfloat); +GLAPI void APIENTRY glFogCoordfv (const GLfloat *); +GLAPI void APIENTRY glFogCoordd (GLdouble); +GLAPI void APIENTRY glFogCoorddv (const GLdouble *); +GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *); +GLAPI void APIENTRY glPointParameteri (GLenum, GLint); +GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *); +GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *); +GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *); +GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *); +GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *); +GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *); +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *); +GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *); +GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *); +GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *); +GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *); +GLAPI void APIENTRY glWindowPos2i (GLint, GLint); +GLAPI void APIENTRY glWindowPos2iv (const GLint *); +GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2sv (const GLshort *); +GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *); +GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *); +GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3iv (const GLint *); +GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3sv (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); +#endif + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsQuery (GLuint); +GLAPI void APIENTRY glBeginQuery (GLenum, GLuint); +GLAPI void APIENTRY glEndQuery (GLenum); +GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *); +GLAPI void APIENTRY glBindBuffer (GLenum, GLuint); +GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsBuffer (GLuint); +GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum); +GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *); +GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *); +GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum); +GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum); +GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); +typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); +#endif + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum); +GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *); +GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint); +GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint); +GLAPI void APIENTRY glAttachShader (GLuint, GLuint); +GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *); +GLAPI void APIENTRY glCompileShader (GLuint); +GLAPI GLuint APIENTRY glCreateProgram (void); +GLAPI GLuint APIENTRY glCreateShader (GLenum); +GLAPI void APIENTRY glDeleteProgram (GLuint); +GLAPI void APIENTRY glDeleteShader (GLuint); +GLAPI void APIENTRY glDetachShader (GLuint, GLuint); +GLAPI void APIENTRY glDisableVertexAttribArray (GLuint); +GLAPI void APIENTRY glEnableVertexAttribArray (GLuint); +GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *); +GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *); +GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *); +GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *); +GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *); +GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgram (GLuint); +GLAPI GLboolean APIENTRY glIsShader (GLuint); +GLAPI void APIENTRY glLinkProgram (GLuint); +GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *); +GLAPI void APIENTRY glUseProgram (GLuint); +GLAPI void APIENTRY glUniform1f (GLint, GLfloat); +GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform1i (GLint, GLint); +GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint); +GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glValidateProgram (GLuint); +GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTextureARB (GLenum); +GLAPI void APIENTRY glClientActiveTextureARB (GLenum); +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +#endif + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +#endif + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); +#endif + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#endif + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); +#endif + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#endif + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); +GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); +GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); +GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); +GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); +GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); +GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); +GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); +GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexBlendARB (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); +#endif + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); +GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); +GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); +GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#endif + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#endif + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#endif + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#endif + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#endif + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#endif + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); +GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); +GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); +GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); +GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); +GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); +GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); +GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +#endif + +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint); +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint); +GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *); +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *); +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *); +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *); +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *); +GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); +#endif + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */ +#endif + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint); +GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsBufferARB (GLuint); +GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); +GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); +GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); +GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum); +GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum); +GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); +typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); +#endif + +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsQueryARB (GLuint); +GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint); +GLAPI void APIENTRY glEndQueryARB (GLenum); +GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB); +GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum); +GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB); +GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum); +GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); +GLAPI void APIENTRY glCompileShaderARB (GLhandleARB); +GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); +GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB); +GLAPI void APIENTRY glLinkProgramARB (GLhandleARB); +GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB); +GLAPI void APIENTRY glValidateProgramARB (GLhandleARB); +GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat); +GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform1iARB (GLint, GLint); +GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint); +GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *); +GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *); +GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *); +GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); +GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); +GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *); +GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); +GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *); +GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *); +GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#endif + +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *); +GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); +GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +#endif + +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +#endif + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +#endif + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +#endif + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +#endif + +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +#endif + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#endif + +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClampColorARB (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +#endif + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +#endif + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +#endif + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#endif + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#endif + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +#endif + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +#endif + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#endif + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#endif + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogramEXT (GLenum); +GLAPI void APIENTRY glResetMinmaxEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); +#endif + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +#endif + +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +#endif + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +#endif + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +#endif + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +#endif + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#endif + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#endif + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); +GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#endif + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#endif + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#endif + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#endif + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#endif + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +#endif + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#endif + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glArrayElementEXT (GLint); +GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); +GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); +GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#endif + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#endif + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#endif + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#endif + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#endif + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#endif + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#endif + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#endif + +#ifndef GL_SGIX_texture_select +#define GL_SGIX_texture_select 1 +#endif + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +#endif + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#endif + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); +GLAPI void APIENTRY glStartInstrumentsSGIX (void); +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +#endif + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#endif + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameZoomSGIX (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +#endif + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTagSampleBufferSGIX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +#endif + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); +GLAPI void APIENTRY glDeformSGIX (GLbitfield); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +#endif + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +#endif + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushRasterSGIX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); +#endif + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#endif + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +#endif + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#endif + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#endif + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#endif + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#endif + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glHintPGI (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); +#endif + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#endif + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); +GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); +GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); +GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +#endif + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#endif + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#endif + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#endif + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#endif + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +#endif + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +#endif + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#endif + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); +GLAPI void APIENTRY glUnlockArraysEXT (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); +#endif + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +#endif + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#endif + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +#endif + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#endif + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#endif + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +#endif + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#endif + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#endif + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyTextureEXT (GLenum); +GLAPI void APIENTRY glTextureLightEXT (GLenum); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +#endif + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#endif + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#endif + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +#endif + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#endif + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#endif + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); +GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +#endif + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#endif + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#endif + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#endif + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureNormalEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogCoordfEXT (GLfloat); +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); +GLAPI void APIENTRY glFogCoorddEXT (GLdouble); +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#endif + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); +GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); +GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); +GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glTangent3ivEXT (const GLint *); +GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glTangent3svEXT (const GLshort *); +GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); +GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); +GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); +GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); +GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); +GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#endif + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#endif + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#endif + +#ifndef GL_SGIX_fog_scale +#define GL_SGIX_fog_scale 1 +#endif + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFinishTextureSUNX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); +#endif + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +#endif + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); +#endif + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#endif + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif + +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#endif + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#endif + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#endif + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#endif + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#endif + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#endif + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#endif + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#endif + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); +#endif + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); +GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); +GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); +GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); +GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +#endif + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#endif + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#endif + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#endif + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glResizeBuffersMESA (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); +#endif + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +#endif + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#endif + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); +#endif + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +#endif + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#endif + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#endif + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#endif + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#endif + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTbufferMask3DFX (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +#endif + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +#endif + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#endif + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#endif + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#endif + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#endif + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); +#endif + +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +#endif + +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +#endif + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); +GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glFinishFenceNV (GLuint); +GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); +GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); +GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +#endif + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#endif + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#endif + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#endif + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#endif + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#endif + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); +GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); +GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); +GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +#endif + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#endif + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#endif + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#endif + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#endif + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#endif + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#endif + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +#endif + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); +GLAPI void APIENTRY glBeginFragmentShaderATI (void); +GLAPI void APIENTRY glEndFragmentShaderATI (void); +GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); +GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +#endif + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +#endif + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glFreeObjectBufferATI (GLuint); +GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +#endif + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVertexShaderEXT (void); +GLAPI void APIENTRY glEndVertexShaderEXT (void); +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); +GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *); +GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); +GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); +GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); +GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); +GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); +GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); +GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *); +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +#endif + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); +GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); +GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); +GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); +GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); +GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); +GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +#endif + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#endif + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#endif + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#endif + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); +GLAPI void APIENTRY glEndOcclusionQueryNV (void); +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); +GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +#endif + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#endif + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +#endif + +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); +#endif + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +#endif + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +#endif + +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *); +GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei); +GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#endif + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *); +GLAPI void APIENTRY glSetFenceAPPLE (GLuint); +GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint); +GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint); +GLAPI void APIENTRY glFinishFenceAPPLE (GLuint); +GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint); +GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +#endif + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint); +GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); +#endif + +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +#endif + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +#endif + +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +#endif + +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); +#endif + +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +/* This is really a WGL extension, but defines some associated GL enums. + * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string. + */ +#endif + +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +#endif + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#endif + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#endif + +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */ +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *); +GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *); +GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +#endif + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *); +GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV); +GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +#endif + +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *); +GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +#endif + +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveRestartNV (void); +GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +#endif + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +#endif + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +#endif + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint); +GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); +#endif + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#endif + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); +#endif + +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#endif + +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); +#endif + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +#endif + +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); +#endif + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +#endif + +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +#endif + +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +#endif + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +#endif + +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +#endif + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +#endif + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +#endif + +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint); +GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *); +GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *); +GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint); +GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *); +GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum); +GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGenerateMipmapEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +#endif + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string); +#endif + +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +#endif + +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); +#endif + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#endif + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +#endif + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *); +GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); +#endif + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#endif + +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); +#endif + +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *); +GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); +GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *); +GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); +GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *); +GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); +GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *); +GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); +GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *); +GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *); +GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *); +GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +#endif + +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint); +GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +#endif + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint); +GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *); +GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *); +GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +#endif + +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *); +GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *); +GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *); +GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint); +GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint); +GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +#endif + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif + +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +#endif + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +#endif + +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#endif + +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +#endif + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#endif + +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +#endif + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble); +GLAPI void APIENTRY glClearDepthdNV (GLdouble); +GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +#endif + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +#endif + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +#endif + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +#endif + +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *); +GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +#endif + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *); +GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *); +GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint); +GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint); +GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); +#endif + +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum); +GLAPI void APIENTRY glEndTransformFeedbackNV (void); +GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum); +GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr); +GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint); +GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum); +GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *); +GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *); +GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +#endif + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint); +GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint); +GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +#endif + +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *); +GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *); +GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#endif + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* GL_GLEXT_LEGACY */ +#endif /* NO_SDL_GLEXT */ diff --git a/Windows/SDL/include/SDL_platform.h b/Windows/SDL/include/SDL_platform.h new file mode 100644 index 0000000..bcbd7b6 --- /dev/null +++ b/Windows/SDL/include/SDL_platform.h @@ -0,0 +1,110 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_platform.h + * Try to get a standard set of platform defines + */ + +#ifndef _SDL_platform_h +#define _SDL_platform_h + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__BEOS__) +#undef __BEOS__ +#define __BEOS__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if defined(linux) || defined(__linux) || defined(__linux__) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(__APPLE__) +#undef __MACOSX__ +#define __MACOSX__ 1 +#elif defined(macintosh) +#undef __MACOS__ +#define __MACOS__ 1 +#endif +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif +#if defined(WIN32) || defined(_WIN32) +#undef __WIN32__ +#define __WIN32__ 1 +#endif + +#endif /* _SDL_platform_h */ diff --git a/Windows/SDL/include/SDL_quit.h b/Windows/SDL/include/SDL_quit.h new file mode 100644 index 0000000..abd2ec6 --- /dev/null +++ b/Windows/SDL/include/SDL_quit.h @@ -0,0 +1,55 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_quit.h + * Include file for SDL quit event handling + */ + +#ifndef _SDL_quit_h +#define _SDL_quit_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/** @file SDL_quit.h + * An SDL_QUITEVENT is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate SDL_QUITEVENT events as well. There is no way + * to determine the cause of an SDL_QUITEVENT, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + */ + +/** @file SDL_quit.h + * There are no functions directly affecting the quit event + */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUITMASK)) + +#endif /* _SDL_quit_h */ diff --git a/Windows/SDL/include/SDL_rwops.h b/Windows/SDL/include/SDL_rwops.h new file mode 100644 index 0000000..98361d7 --- /dev/null +++ b/Windows/SDL/include/SDL_rwops.h @@ -0,0 +1,155 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_rwops.h + * This file provides a general interface for SDL to read and write + * data sources. It can easily be extended to files, memory, etc. + */ + +#ifndef _SDL_rwops_h +#define _SDL_rwops_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the read/write operation structure -- very basic */ + +typedef struct SDL_RWops { + /** Seek to 'offset' relative to whence, one of stdio's whence values: + * SEEK_SET, SEEK_CUR, SEEK_END + * Returns the final offset in the data source. + */ + int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence); + + /** Read up to 'maxnum' objects each of size 'size' from the data + * source to the area pointed at by 'ptr'. + * Returns the number of objects read, or -1 if the read failed. + */ + int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum); + + /** Write exactly 'num' objects each of size 'objsize' from the area + * pointed at by 'ptr' to data source. + * Returns 'num', or -1 if the write failed. + */ + int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num); + + /** Close and free an allocated SDL_FSops structure */ + int (SDLCALL *close)(struct SDL_RWops *context); + + Uint32 type; + union { +#if defined(__WIN32__) && !defined(__SYMBIAN32__) + struct { + int append; + void *h; + struct { + void *data; + int size; + int left; + } buffer; + } win32io; +#endif +#ifdef HAVE_STDIO_H + struct { + int autoclose; + FILE *fp; + } stdio; +#endif + struct { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct { + void *data1; + } unknown; + } hidden; + +} SDL_RWops; + + +/** @name Functions to create SDL_RWops structures from various data sources */ +/*@{*/ + +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode); + +#ifdef HAVE_STDIO_H +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose); +#endif + +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size); +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size); + +extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void); +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area); + +/*@}*/ + +/** @name Seek Reference Points */ +/*@{*/ +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ +/*@}*/ + +/** @name Macros to easily read and write from an SDL_RWops structure */ +/*@{*/ +#define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence) +#define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR) +#define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n) +#define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n) +#define SDL_RWclose(ctx) (ctx)->close(ctx) +/*@}*/ + +/** @name Read an item of the specified endianness and return in native format */ +/*@{*/ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src); +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src); +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src); +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src); +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src); +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src); +/*@}*/ + +/** @name Write an item of native format to the specified endianness */ +/*@{*/ +extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value); +extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value); +extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value); +extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value); +extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value); +extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value); +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_rwops_h */ diff --git a/Windows/SDL/include/SDL_stdinc.h b/Windows/SDL/include/SDL_stdinc.h new file mode 100644 index 0000000..e8e542f --- /dev/null +++ b/Windows/SDL/include/SDL_stdinc.h @@ -0,0 +1,626 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_stdinc.h + * This is a general header that includes C language support + */ + +#ifndef _SDL_stdinc_h +#define _SDL_stdinc_h + +#include "SDL_config.h" + + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) + #pragma alloca +# elif defined(__MRC__) + void *alloca (unsigned); +# else + void *alloca (size_t); +# endif +#endif + +/** The number of elements in an array */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/* Use proper C++ casts when compiled as C++ to be compatible with the option + -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above. */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#endif + +/** @name Basic data types */ +/*@{*/ +typedef enum { + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; + +typedef int8_t Sint8; +typedef uint8_t Uint8; +typedef int16_t Sint16; +typedef uint16_t Uint16; +typedef int32_t Sint32; +typedef uint32_t Uint32; + +#ifdef SDL_HAS_64BIT_TYPE +typedef int64_t Sint64; +#ifndef SYMBIAN32_GCCE +typedef uint64_t Uint64; +#endif +#else +/* This is really just a hack to prevent the compiler from complaining */ +typedef struct { + Uint32 hi; + Uint32 lo; +} Uint64, Sint64; +#endif + +/*@}*/ + +/** @name Make sure the types really have the right sizes */ +/*@{*/ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_dummy_ ## name[(x) * 2 - 1] + +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +/*@}*/ + +/** @name Enum Size Check + * Check to make sure enums are the size of ints, for structure packing. + * For both Watcom C/C++ and Borland C/C++ the compiler option that makes + * enums having the size of an int must be enabled. + * This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). + */ +/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ +#ifdef __MWERKS__ +#pragma enumsalwaysint on +#endif + +typedef enum { + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +#ifndef __NDS__ +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +/*@}*/ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_MALLOC +#define SDL_malloc malloc +#else +extern DECLSPEC void * SDLCALL SDL_malloc(size_t size); +#endif + +#ifdef HAVE_CALLOC +#define SDL_calloc calloc +#else +extern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size); +#endif + +#ifdef HAVE_REALLOC +#define SDL_realloc realloc +#else +extern DECLSPEC void * SDLCALL SDL_realloc(void *mem, size_t size); +#endif + +#ifdef HAVE_FREE +#define SDL_free free +#else +extern DECLSPEC void SDLCALL SDL_free(void *mem); +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +#ifdef HAVE_GETENV +#define SDL_getenv getenv +#else +extern DECLSPEC char * SDLCALL SDL_getenv(const char *name); +#endif + +#ifdef HAVE_PUTENV +#define SDL_putenv putenv +#else +extern DECLSPEC int SDLCALL SDL_putenv(const char *variable); +#endif + +#ifdef HAVE_QSORT +#define SDL_qsort qsort +#else +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, + int (*compare)(const void *, const void *)); +#endif + +#ifdef HAVE_ABS +#define SDL_abs abs +#else +#define SDL_abs(X) ((X) < 0 ? -(X) : (X)) +#endif + +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) + +#ifdef HAVE_CTYPE_H +#define SDL_isdigit(X) isdigit(X) +#define SDL_isspace(X) isspace(X) +#define SDL_toupper(X) toupper(X) +#define SDL_tolower(X) tolower(X) +#else +#define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9')) +#define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n')) +#define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X)) +#define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X)) +#endif + +#ifdef HAVE_MEMSET +#define SDL_memset memset +#else +extern DECLSPEC void * SDLCALL SDL_memset(void *dst, int c, size_t len); +#endif + +#if defined(__GNUC__) && defined(__i386__) +#define SDL_memset4(dst, val, len) \ +do { \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; stosl\n\t" \ + : "=&D" (u0), "=&a" (u1), "=&c" (u2) \ + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, len)) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memset4 +#define SDL_memset4(dst, val, len) \ +do { \ + unsigned _count = (len); \ + unsigned _n = (_count + 3) / 4; \ + Uint32 *_p = SDL_static_cast(Uint32 *, dst); \ + Uint32 _val = (val); \ + if (len == 0) break; \ + switch (_count % 4) { \ + case 0: do { *_p++ = _val; \ + case 3: *_p++ = _val; \ + case 2: *_p++ = _val; \ + case 1: *_p++ = _val; \ + } while ( --_n ); \ + } \ +} while(0) +#endif + +/* We can count on memcpy existing on Mac OS X and being well-tuned. */ +#if defined(__MACH__) && defined(__APPLE__) +#define SDL_memcpy(dst, src, len) memcpy(dst, src, len) +#elif defined(__GNUC__) && defined(__i386__) +#define SDL_memcpy(dst, src, len) \ +do { \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; movsl\n\t" \ + "testb $2,%b4\n\t" \ + "je 1f\n\t" \ + "movsw\n" \ + "1:\ttestb $1,%b4\n\t" \ + "je 2f\n\t" \ + "movsb\n" \ + "2:" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" (SDL_static_cast(unsigned, len)/4), "q" (len), "1" (dst),"2" (src) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memcpy +#ifdef HAVE_MEMCPY +#define SDL_memcpy memcpy +#elif defined(HAVE_BCOPY) +#define SDL_memcpy(d, s, n) bcopy((s), (d), (n)) +#else +extern DECLSPEC void * SDLCALL SDL_memcpy(void *dst, const void *src, size_t len); +#endif +#endif + +/* We can count on memcpy existing on Mac OS X and being well-tuned. */ +#if defined(__MACH__) && defined(__APPLE__) +#define SDL_memcpy4(dst, src, len) memcpy(dst, src, (len)*4) +#elif defined(__GNUC__) && defined(__i386__) +#define SDL_memcpy4(dst, src, len) \ +do { \ + int ecx, edi, esi; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; movsl" \ + : "=&c" (ecx), "=&D" (edi), "=&S" (esi) \ + : "0" (SDL_static_cast(unsigned, len)), "1" (dst), "2" (src) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memcpy4 +#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2) +#endif + +#if defined(__GNUC__) && defined(__i386__) +#define SDL_revcpy(dst, src, len) \ +do { \ + int u0, u1, u2; \ + char *dstp = SDL_static_cast(char *, dst); \ + char *srcp = SDL_static_cast(char *, src); \ + int n = (len); \ + if ( n >= 4 ) { \ + __asm__ __volatile__ ( \ + "std\n\t" \ + "rep ; movsl\n\t" \ + "cld\n\t" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" (n >> 2), \ + "1" (dstp+(n-4)), "2" (srcp+(n-4)) \ + : "memory" ); \ + } \ + switch (n & 3) { \ + case 3: dstp[2] = srcp[2]; \ + case 2: dstp[1] = srcp[1]; \ + case 1: dstp[0] = srcp[0]; \ + break; \ + default: \ + break; \ + } \ +} while(0) +#endif +#ifndef SDL_revcpy +extern DECLSPEC void * SDLCALL SDL_revcpy(void *dst, const void *src, size_t len); +#endif + +#ifdef HAVE_MEMMOVE +#define SDL_memmove memmove +#elif defined(HAVE_BCOPY) +#define SDL_memmove(d, s, n) bcopy((s), (d), (n)) +#else +#define SDL_memmove(dst, src, len) \ +do { \ + if ( dst < src ) { \ + SDL_memcpy(dst, src, len); \ + } else { \ + SDL_revcpy(dst, src, len); \ + } \ +} while(0) +#endif + +#ifdef HAVE_MEMCMP +#define SDL_memcmp memcmp +#else +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); +#endif + +#ifdef HAVE_STRLEN +#define SDL_strlen strlen +#else +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string); +#endif + +#ifdef HAVE_STRLCPY +#define SDL_strlcpy strlcpy +#else +extern DECLSPEC size_t SDLCALL SDL_strlcpy(char *dst, const char *src, size_t maxlen); +#endif + +#ifdef HAVE_STRLCAT +#define SDL_strlcat strlcat +#else +extern DECLSPEC size_t SDLCALL SDL_strlcat(char *dst, const char *src, size_t maxlen); +#endif + +#if defined(HAVE_STRDUP) && defined(_WIN32) +#define SDL_strdup _strdup +#elif defined(HAVE_STRDUP) +#define SDL_strdup strdup +#else +extern DECLSPEC char * SDLCALL SDL_strdup(const char *string); +#endif + +#ifdef HAVE__STRREV +#define SDL_strrev _strrev +#else +extern DECLSPEC char * SDLCALL SDL_strrev(char *string); +#endif + +#ifdef HAVE__STRUPR +#define SDL_strupr _strupr +#else +extern DECLSPEC char * SDLCALL SDL_strupr(char *string); +#endif + +#ifdef HAVE__STRLWR +#define SDL_strlwr _strlwr +#else +extern DECLSPEC char * SDLCALL SDL_strlwr(char *string); +#endif + +#ifdef HAVE_STRCHR +#define SDL_strchr strchr +#elif defined(HAVE_INDEX) +#define SDL_strchr index +#else +extern DECLSPEC char * SDLCALL SDL_strchr(const char *string, int c); +#endif + +#ifdef HAVE_STRRCHR +#define SDL_strrchr strrchr +#elif defined(HAVE_RINDEX) +#define SDL_strrchr rindex +#else +extern DECLSPEC char * SDLCALL SDL_strrchr(const char *string, int c); +#endif + +#ifdef HAVE_STRSTR +#define SDL_strstr strstr +#else +extern DECLSPEC char * SDLCALL SDL_strstr(const char *haystack, const char *needle); +#endif + +#ifdef HAVE_ITOA +#define SDL_itoa itoa +#else +#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix) +#endif + +#ifdef HAVE__LTOA +#define SDL_ltoa _ltoa +#else +extern DECLSPEC char * SDLCALL SDL_ltoa(long value, char *string, int radix); +#endif + +#ifdef HAVE__UITOA +#define SDL_uitoa _uitoa +#else +#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix) +#endif + +#ifdef HAVE__ULTOA +#define SDL_ultoa _ultoa +#else +extern DECLSPEC char * SDLCALL SDL_ultoa(unsigned long value, char *string, int radix); +#endif + +#ifdef HAVE_STRTOL +#define SDL_strtol strtol +#else +extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, int base); +#endif + +#ifdef HAVE_STRTOUL +#define SDL_strtoul strtoul +#else +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *string, char **endp, int base); +#endif + +#ifdef SDL_HAS_64BIT_TYPE + +#ifdef HAVE__I64TOA +#define SDL_lltoa _i64toa +#else +extern DECLSPEC char* SDLCALL SDL_lltoa(Sint64 value, char *string, int radix); +#endif + +#ifdef HAVE__UI64TOA +#define SDL_ulltoa _ui64toa +#else +extern DECLSPEC char* SDLCALL SDL_ulltoa(Uint64 value, char *string, int radix); +#endif + +#ifdef HAVE__STRTOI64 +#define SDL_strtoll _strtoi64 +#elif defined(HAVE_STRTOLL) +#define SDL_strtoll strtoll +#else +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int base); +#endif + +#ifdef HAVE__STRTOUI64 +#define SDL_strtoull _strtoui64 +#elif defined(HAVE_STRTOULL) +#define SDL_strtoull strtoull +#else +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *string, char **endp, int base); +#endif + +#endif /* SDL_HAS_64BIT_TYPE */ + +#ifdef HAVE_STRTOD +#define SDL_strtod strtod +#else +extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp); +#endif + +#ifdef HAVE_ATOI +#define SDL_atoi atoi +#else +#define SDL_atoi(X) SDL_strtol(X, NULL, 10) +#endif + +#ifdef HAVE_ATOF +#define SDL_atof atof +#else +#define SDL_atof(X) SDL_strtod(X, NULL) +#endif + +#ifdef HAVE_STRCMP +#define SDL_strcmp strcmp +#else +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +#endif + +#ifdef HAVE_STRNCMP +#define SDL_strncmp strncmp +#else +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +#endif + +#if defined(HAVE__STRICMP) +#define SDL_strcasecmp _stricmp +#elif defined(HAVE_STRCASECMP) +#define SDL_strcasecmp strcasecmp +#else +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +#endif + +#if defined(HAVE__STRNICMP) +#define SDL_strncasecmp _strnicmp +#elif defined(HAVE_STRNCASECMP) +#define SDL_strncasecmp strncasecmp +#else +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t maxlen); +#endif + +#ifdef HAVE_SSCANF +#define SDL_sscanf sscanf +#else +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...); +#endif + +#if defined(HAVE_SNPRINTF) && !(defined(__WATCOMC__) || defined(_WIN32)) +#define SDL_snprintf snprintf +#else +extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...); +#endif + +#if defined(HAVE_VSNPRINTF) && !(defined(__WATCOMC__) || defined(_WIN32)) +#define SDL_vsnprintf vsnprintf +#else +extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap); +#endif + +/** @name SDL_ICONV Error Codes + * The SDL implementation of iconv() returns these error codes + */ +/*@{*/ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 +/*@}*/ + +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +#define SDL_iconv_t iconv_t +#define SDL_iconv_open iconv_open +#define SDL_iconv_close iconv_close +#else +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +#endif +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +/** This function converts a string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + */ +extern DECLSPEC char * SDLCALL SDL_iconv_string(const char *tocode, const char *fromcode, const char *inbuf, size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_stdinc_h */ diff --git a/Windows/SDL/include/SDL_syswm.h b/Windows/SDL/include/SDL_syswm.h new file mode 100644 index 0000000..40845b6 --- /dev/null +++ b/Windows/SDL/include/SDL_syswm.h @@ -0,0 +1,232 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_syswm.h + * Include file for SDL custom system window manager hooks + */ + +#ifndef _SDL_syswm_h +#define _SDL_syswm_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_version.h" + +#ifndef SDL_PROTOTYPES_ONLY +# if defined(SDL_VIDEO_DRIVER_X11) +# if defined(__APPLE__) && defined(__MACH__) +# define Cursor X11Cursor /* conflicts with Quickdraw.h */ +# endif +# include +# include +# if defined(__APPLE__) && defined(__MACH__) +# undef Cursor +# endif +# elif defined(SDL_VIDEO_DRIVER_NANOX) +# include +# elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# include +# elif defined(SDL_VIDEO_DRIVER_PHOTON) +# include +# include +# endif +#endif + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL_syswm.h + * Your application has access to a special type of event 'SDL_SYSWMEVENT', + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState() + */ +struct SDL_SysWMinfo; +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + +#ifndef SDL_PROTOTYPES_ONLY + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) + +/** These are the various supported subsystems under UNIX */ +typedef enum { + SDL_SYSWM_X11 +} SDL_SYSWM_TYPE; + +/** The UNIX custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union { + XEvent xevent; + } event; +}; + +/** The UNIX custom window manager information structure. + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo { + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union { + struct { + Display *display; /**< The X11 display */ + Window window; /**< The X11 display window */ + /** These locking functions should be called around + * any X11 functions using the display variable, + * but not the gfxdisplay variable. + * They lock the event thread, so should not be + * called around event functions or from event filters. + */ + /*@{*/ + void (*lock_func)(void); + void (*unlock_func)(void); + /*@}*/ + + /** @name Introduced in SDL 1.0.2 */ + /*@{*/ + Window fswindow; /**< The X11 fullscreen window */ + Window wmwindow; /**< The X11 managed input window */ + /*@}*/ + + /** @name Introduced in SDL 1.2.12 */ + /*@{*/ + Display *gfxdisplay; /**< The X11 display to which rendering is done */ + /*@}*/ + } x11; + } info; +}; + +#elif defined(SDL_VIDEO_DRIVER_NANOX) + +/** The generic custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The windows custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version ; + GR_WINDOW_ID window ; /* The display window */ +}; + +#elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) + +/** The windows custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ +}; + +/** The windows custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + HWND window; /**< The Win32 display window */ + HGLRC hglrc; /**< The OpenGL context, if any */ +}; + +#elif defined(SDL_VIDEO_DRIVER_RISCOS) + +/** RISC OS custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int eventCode; /**< The window for the message */ + int pollBlock[64]; +}; + +/** The RISC OS custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + int wimpVersion; /**< Wimp version running under */ + int taskHandle; /**< The RISC OS task handle */ + int window; /**< The RISC OS display window */ +}; + +#elif defined(SDL_VIDEO_DRIVER_PHOTON) + +/** The QNX custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The QNX custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + int data; +}; + +#else + +/** The generic custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The generic custom window manager information structure */ +struct SDL_SysWMinfo { + SDL_version version; + int data; +}; + +#endif /* video driver type */ + +#endif /* SDL_PROTOTYPES_ONLY */ + +/* Function prototypes */ +/** + * This function gives you custom hooks into the window manager information. + * It fills the structure pointed to by 'info' with custom information and + * returns 0 if the function is not implemented, 1 if the function is + * implemented and no error occurred, and -1 if the version member of + * the 'info' structure is not filled in or not supported. + * + * You typically use this function like this: + * @code + * SDL_SysWMinfo info; + * SDL_VERSION(&info.version); + * if ( SDL_GetWMInfo(&info) ) { ... } + * @endcode + */ +extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_syswm_h */ diff --git a/Windows/SDL/include/SDL_thread.h b/Windows/SDL/include/SDL_thread.h new file mode 100644 index 0000000..b7d5a91 --- /dev/null +++ b/Windows/SDL/include/SDL_thread.h @@ -0,0 +1,118 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_thread_h +#define _SDL_thread_h + +/** @file SDL_thread.h + * Header for the SDL thread management routines + * + * @note These are independent of the other SDL routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/* Thread synchronization primitives */ +#include "SDL_mutex.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/** Create a thread */ +#if ((defined(__WIN32__) && !defined(HAVE_LIBC)) || defined(__OS2__)) && !defined(__SYMBIAN32__) +/** + * We compile SDL into a DLL on OS/2. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL.DLL will + * be initialized for those threads, and not the RTL of the calling application! + * To solve this, we make a little hack here. + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL.DLL which uses this API, + * then the RTL of SDL.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD +#ifndef _WIN32_WCE +#include /* This has _beginthread() and _endthread() defined! */ +#endif +#ifdef __EMX__ +#include +#endif + +#ifdef __OS2__ +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg); +typedef void (*pfnSDL_CurrentEndThread)(void); +#else +typedef uintptr_t (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, + unsigned (__stdcall *func)(void *), void *arg, + unsigned, unsigned *threadID); +typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); +#endif + +extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread); + +#ifdef __OS2__ +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthread, _endthread) +#elif defined(_WIN32_WCE) +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, NULL, NULL) +#else +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthreadex, _endthreadex) +#endif +#else +extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data); +#endif + +/** Get the 32-bit thread identifier for the current thread */ +extern DECLSPEC Uint32 SDLCALL SDL_ThreadID(void); + +/** Get the 32-bit thread identifier for the specified thread, + * equivalent to SDL_ThreadID() if the specified thread is NULL. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetThreadID(SDL_Thread *thread); + +/** Wait for a thread to finish. + * The return code for the thread function is placed in the area + * pointed to by 'status', if 'status' is not NULL. + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread *thread, int *status); + +/** Forcefully kill a thread without worrying about its state */ +extern DECLSPEC void SDLCALL SDL_KillThread(SDL_Thread *thread); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_thread_h */ diff --git a/Windows/SDL/include/SDL_timer.h b/Windows/SDL/include/SDL_timer.h new file mode 100644 index 0000000..d764d5f --- /dev/null +++ b/Windows/SDL/include/SDL_timer.h @@ -0,0 +1,125 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_timer_h +#define _SDL_timer_h + +/** @file SDL_timer.h + * Header for the SDL time management routines + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the OS scheduler timeslice, in milliseconds */ +#define SDL_TIMESLICE 10 + +/** This is the maximum resolution of the SDL timer on all platforms */ +#define TIMER_RESOLUTION 10 /**< Experimentally determined */ + +/** + * Get the number of milliseconds since the SDL library initialization. + * Note that this value wraps if the program runs for more than ~49 days. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** Wait a specified number of milliseconds before returning */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** Function prototype for the timer callback function */ +typedef Uint32 (SDLCALL *SDL_TimerCallback)(Uint32 interval); + +/** + * Set a callback to run after the specified number of milliseconds has + * elapsed. The callback function is passed the current timer interval + * and returns the next timer interval. If the returned value is the + * same as the one passed in, the periodic alarm continues, otherwise a + * new alarm is scheduled. If the callback returns 0, the periodic alarm + * is cancelled. + * + * To cancel a currently running timer, call SDL_SetTimer(0, NULL); + * + * The timer callback function may run in a different thread than your + * main code, and so shouldn't call any functions from within itself. + * + * The maximum resolution of this timer is 10 ms, which means that if + * you request a 16 ms timer, your callback will run approximately 20 ms + * later on an unloaded system. If you wanted to set a flag signaling + * a frame update at 30 frames per second (every 33 ms), you might set a + * timer for 30 ms: + * @code SDL_SetTimer((33/10)*10, flag_update); @endcode + * + * If you use this function, you need to pass SDL_INIT_TIMER to SDL_Init(). + * + * Under UNIX, you should not use raise or use SIGALRM and this function + * in the same program, as it is implemented using setitimer(). You also + * should not use this function in multi-threaded applications as signals + * to multi-threaded apps have undefined behavior in some implementations. + * + * This function returns 0 if successful, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback); + +/** @name New timer API + * New timer API, supports multiple timers + * Written by Stephane Peter + */ +/*@{*/ + +/** + * Function prototype for the new timer callback function. + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL *SDL_NewTimerCallback)(Uint32 interval, void *param); + +/** Definition of the timer ID type */ +typedef struct _SDL_TimerID *SDL_TimerID; + +/** Add a new timer to the pool of timers already running. + * Returns a timer ID, or NULL when an error occurs. + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param); + +/** + * Remove one of the multiple timers knowing its ID. + * Returns a boolean value indicating success. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID t); + +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_timer_h */ diff --git a/Windows/SDL/include/SDL_types.h b/Windows/SDL/include/SDL_types.h new file mode 100644 index 0000000..79d8b28 --- /dev/null +++ b/Windows/SDL/include/SDL_types.h @@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_types.h + * @deprecated Use SDL_stdinc.h instead. + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/Windows/SDL/include/SDL_version.h b/Windows/SDL/include/SDL_version.h new file mode 100644 index 0000000..4385ebf --- /dev/null +++ b/Windows/SDL/include/SDL_version.h @@ -0,0 +1,91 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_version.h + * This header defines the current SDL version + */ + +#ifndef _SDL_version_h +#define _SDL_version_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name Version Number + * Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL + */ +/*@{*/ +#define SDL_MAJOR_VERSION 1 +#define SDL_MINOR_VERSION 2 +#define SDL_PATCHLEVEL 16 +/*@}*/ + +typedef struct SDL_version { + Uint8 major; + Uint8 minor; + Uint8 patch; +} SDL_version; + +/** + * This macro can be used to fill a version structure with the compile-time + * version of the SDL library. + */ +#define SDL_VERSION(X) \ +{ \ + (X)->major = SDL_MAJOR_VERSION; \ + (X)->minor = SDL_MINOR_VERSION; \ + (X)->patch = SDL_PATCHLEVEL; \ +} + +/** This macro turns the version numbers into a numeric value: + * (1,2,3) -> (1203) + * This assumes that there will never be more than 100 patchlevels + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** This is the version number macro for the current SDL version */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) + +/** This macro will evaluate to true if compiled with SDL at least X.Y.Z */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +/** This function gets the version of the dynamically linked SDL library. + * it should NOT be used to fill a version structure, instead you should + * use the SDL_Version() macro. + */ +extern DECLSPEC const SDL_version * SDLCALL SDL_Linked_Version(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_version_h */ diff --git a/Windows/SDL/include/SDL_video.h b/Windows/SDL/include/SDL_video.h new file mode 100644 index 0000000..aa0459c --- /dev/null +++ b/Windows/SDL/include/SDL_video.h @@ -0,0 +1,952 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_video.h + * Header file for access to the SDL raw framebuffer window + */ + +#ifndef _SDL_video_h +#define _SDL_video_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name Transparency definitions + * These define alpha as the opacity of a surface + */ +/*@{*/ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/*@}*/ + +/** @name Useful data types */ +/*@{*/ +typedef struct SDL_Rect { + Sint16 x, y; + Uint16 w, h; +} SDL_Rect; + +typedef struct SDL_Color { + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 unused; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette { + int ncolors; + SDL_Color *colors; +} SDL_Palette; +/*@}*/ + +/** Everything in the pixel format structure is read-only */ +typedef struct SDL_PixelFormat { + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + + /** RGB color key information */ + Uint32 colorkey; + /** Alpha value information (per-surface alpha) */ + Uint8 alpha; +} SDL_PixelFormat; + +/** This structure should be treated as read-only, except for 'pixels', + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface { + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + Uint16 pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + int offset; /**< Private */ + + /** Hardware-specific surface info */ + struct private_hwdata *hwdata; + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + Uint32 unused1; /**< for binary compatibility */ + + /** Allow recursive locks */ + Uint32 locked; /**< Private */ + + /** info for fast blit mapping to other surfaces */ + struct SDL_BlitMap *map; /**< Private */ + + /** format version, bumped at every change to invalidate blit maps */ + unsigned int format_version; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** @name SDL_Surface Flags + * These are the currently supported flags for the SDL_surface + */ +/*@{*/ + +/** Available for SDL_CreateRGBSurface() or SDL_SetVideoMode() */ +/*@{*/ +#define SDL_SWSURFACE 0x00000000 /**< Surface is in system memory */ +#define SDL_HWSURFACE 0x00000001 /**< Surface is in video memory */ +#define SDL_ASYNCBLIT 0x00000004 /**< Use asynchronous blits if possible */ +/*@}*/ + +/** Available for SDL_SetVideoMode() */ +/*@{*/ +#define SDL_ANYFORMAT 0x10000000 /**< Allow any video depth/pixel-format */ +#define SDL_HWPALETTE 0x20000000 /**< Surface has exclusive palette */ +#define SDL_DOUBLEBUF 0x40000000 /**< Set up double-buffered video mode */ +#define SDL_TRIPLEBUF 0x40000100 /**< Set up triple-buffered video mode */ +#define SDL_FULLSCREEN 0x80000000 /**< Surface is a full screen display */ +#define SDL_OPENGL 0x00000002 /**< Create an OpenGL rendering context */ +#define SDL_OPENGLBLIT 0x0000000A /**< Create an OpenGL rendering context and use it for blitting */ +#define SDL_RESIZABLE 0x00000010 /**< This video mode may be resized */ +#define SDL_NOFRAME 0x00000020 /**< No window caption or edge frame */ +/*@}*/ + +/** Used internally (read-only) */ +/*@{*/ +#define SDL_HWACCEL 0x00000100 /**< Blit uses hardware acceleration */ +#define SDL_SRCCOLORKEY 0x00001000 /**< Blit uses a source color key */ +#define SDL_RLEACCELOK 0x00002000 /**< Private flag */ +#define SDL_RLEACCEL 0x00004000 /**< Surface is RLE encoded */ +#define SDL_SRCALPHA 0x00010000 /**< Blit uses source alpha blending */ +#define SDL_PREALLOC 0x01000000 /**< Surface uses preallocated memory */ +/*@}*/ + +/*@}*/ + +/** Evaluates to true if the surface needs to be locked before access */ +#define SDL_MUSTLOCK(surface) \ + (surface->offset || \ + ((surface->flags & (SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_RLEACCEL)) != 0)) + +/** typedef for private surface blitting functions */ +typedef int (*SDL_blit)(struct SDL_Surface *src, SDL_Rect *srcrect, + struct SDL_Surface *dst, SDL_Rect *dstrect); + + +/** Useful for determining the video hardware capabilities */ +typedef struct SDL_VideoInfo { + Uint32 hw_available :1; /**< Flag: Can you create hardware surfaces? */ + Uint32 wm_available :1; /**< Flag: Can you talk to a window manager? */ + Uint32 UnusedBits1 :6; + Uint32 UnusedBits2 :1; + Uint32 blit_hw :1; /**< Flag: Accelerated blits HW --> HW */ + Uint32 blit_hw_CC :1; /**< Flag: Accelerated blits with Colorkey */ + Uint32 blit_hw_A :1; /**< Flag: Accelerated blits with Alpha */ + Uint32 blit_sw :1; /**< Flag: Accelerated blits SW --> HW */ + Uint32 blit_sw_CC :1; /**< Flag: Accelerated blits with Colorkey */ + Uint32 blit_sw_A :1; /**< Flag: Accelerated blits with Alpha */ + Uint32 blit_fill :1; /**< Flag: Accelerated color fill */ + Uint32 UnusedBits3 :16; + Uint32 video_mem; /**< The total amount of video memory (in K) */ + SDL_PixelFormat *vfmt; /**< Value: The format of the video surface */ + int current_w; /**< Value: The current video mode width */ + int current_h; /**< Value: The current video mode height */ +} SDL_VideoInfo; + + +/** @name Overlay Formats + * The most common video overlay formats. + * For an explanation of these pixel formats, see: + * http://www.webartz.com/fourcc/indexyuv.htm + * + * For information on the relationship between color spaces, see: + * http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html + */ +/*@{*/ +#define SDL_YV12_OVERLAY 0x32315659 /**< Planar mode: Y + V + U (3 planes) */ +#define SDL_IYUV_OVERLAY 0x56555949 /**< Planar mode: Y + U + V (3 planes) */ +#define SDL_YUY2_OVERLAY 0x32595559 /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ +#define SDL_UYVY_OVERLAY 0x59565955 /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ +#define SDL_YVYU_OVERLAY 0x55595659 /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ +/*@}*/ + +/** The YUV hardware video overlay */ +typedef struct SDL_Overlay { + Uint32 format; /**< Read-only */ + int w, h; /**< Read-only */ + int planes; /**< Read-only */ + Uint16 *pitches; /**< Read-only */ + Uint8 **pixels; /**< Read-write */ + + /** @name Hardware-specific surface info */ + /*@{*/ + struct private_yuvhwfuncs *hwfuncs; + struct private_yuvhwdata *hwdata; + /*@{*/ + + /** @name Special flags */ + /*@{*/ + Uint32 hw_overlay :1; /**< Flag: This overlay hardware accelerated? */ + Uint32 UnusedBits :31; + /*@}*/ +} SDL_Overlay; + + +/** Public enumeration for setting the OpenGL window attributes. */ +typedef enum { + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_SWAP_CONTROL +} SDL_GLattr; + +/** @name flags for SDL_SetPalette() */ +/*@{*/ +#define SDL_LOGPAL 0x01 +#define SDL_PHYSPAL 0x02 +/*@}*/ + +/* Function prototypes */ + +/** + * @name Video Init and Quit + * These functions are used internally, and should not be used unless you + * have a specific need to specify the video driver you want to use. + * You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/*@{*/ +/** + * Initializes the video subsystem. Sets up a connection + * to the window manager, etc, and determines the current video mode and + * pixel format, but does not initialize a window or graphics mode. + * Note that event handling is activated by this routine. + * + * If you use both sound and video in your application, you need to call + * SDL_Init() before opening the sound device, otherwise under Win32 DirectX, + * you won't be able to set full-screen display modes. + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name, Uint32 flags); +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); +/*@}*/ + +/** + * This function fills the given character buffer with the name of the + * video driver, and returns a pointer to it if the video driver has + * been initialized. It returns NULL if no driver has been initialized. + */ +extern DECLSPEC char * SDLCALL SDL_VideoDriverName(char *namebuf, int maxlen); + +/** + * This function returns a pointer to the current display surface. + * If SDL is doing format conversion on the display surface, this + * function returns the publicly visible surface, not the real video + * surface. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetVideoSurface(void); + +/** + * This function returns a read-only pointer to information about the + * video hardware. If this is called before SDL_SetVideoMode(), the 'vfmt' + * member of the returned structure will contain the pixel format of the + * "best" video mode. + */ +extern DECLSPEC const SDL_VideoInfo * SDLCALL SDL_GetVideoInfo(void); + +/** + * Check to see if a particular video mode is supported. + * It returns 0 if the requested mode is not supported under any bit depth, + * or returns the bits-per-pixel of the closest available mode with the + * given width and height. If this bits-per-pixel is different from the + * one used when setting the video mode, SDL_SetVideoMode() will succeed, + * but will emulate the requested bits-per-pixel with a shadow surface. + * + * The arguments to SDL_VideoModeOK() are the same ones you would pass to + * SDL_SetVideoMode() + */ +extern DECLSPEC int SDLCALL SDL_VideoModeOK(int width, int height, int bpp, Uint32 flags); + +/** + * Return a pointer to an array of available screen dimensions for the + * given format and video flags, sorted largest to smallest. Returns + * NULL if there are no dimensions available for a particular format, + * or (SDL_Rect **)-1 if any dimension is okay for the given format. + * + * If 'format' is NULL, the mode list will be for the format given + * by SDL_GetVideoInfo()->vfmt + */ +extern DECLSPEC SDL_Rect ** SDLCALL SDL_ListModes(SDL_PixelFormat *format, Uint32 flags); + +/** + * Set up a video mode with the specified width, height and bits-per-pixel. + * + * If 'bpp' is 0, it is treated as the current display bits per pixel. + * + * If SDL_ANYFORMAT is set in 'flags', the SDL library will try to set the + * requested bits-per-pixel, but will return whatever video pixel format is + * available. The default is to emulate the requested pixel format if it + * is not natively available. + * + * If SDL_HWSURFACE is set in 'flags', the video surface will be placed in + * video memory, if possible, and you may have to call SDL_LockSurface() + * in order to access the raw framebuffer. Otherwise, the video surface + * will be created in system memory. + * + * If SDL_ASYNCBLIT is set in 'flags', SDL will try to perform rectangle + * updates asynchronously, but you must always lock before accessing pixels. + * SDL will wait for updates to complete before returning from the lock. + * + * If SDL_HWPALETTE is set in 'flags', the SDL library will guarantee + * that the colors set by SDL_SetColors() will be the colors you get. + * Otherwise, in 8-bit mode, SDL_SetColors() may not be able to set all + * of the colors exactly the way they are requested, and you should look + * at the video surface structure to determine the actual palette. + * If SDL cannot guarantee that the colors you request can be set, + * i.e. if the colormap is shared, then the video surface may be created + * under emulation in system memory, overriding the SDL_HWSURFACE flag. + * + * If SDL_FULLSCREEN is set in 'flags', the SDL library will try to set + * a fullscreen video mode. The default is to create a windowed mode + * if the current graphics system has a window manager. + * If the SDL library is able to set a fullscreen video mode, this flag + * will be set in the surface that is returned. + * + * If SDL_DOUBLEBUF is set in 'flags', the SDL library will try to set up + * two surfaces in video memory and swap between them when you call + * SDL_Flip(). This is usually slower than the normal single-buffering + * scheme, but prevents "tearing" artifacts caused by modifying video + * memory while the monitor is refreshing. It should only be used by + * applications that redraw the entire screen on every update. + * + * If SDL_RESIZABLE is set in 'flags', the SDL library will allow the + * window manager, if any, to resize the window at runtime. When this + * occurs, SDL will send a SDL_VIDEORESIZE event to you application, + * and you must respond to the event by re-calling SDL_SetVideoMode() + * with the requested size (or another size that suits the application). + * + * If SDL_NOFRAME is set in 'flags', the SDL library will create a window + * without any title bar or frame decoration. Fullscreen video modes have + * this flag set automatically. + * + * This function returns the video framebuffer surface, or NULL if it fails. + * + * If you rely on functionality provided by certain video flags, check the + * flags of the returned surface to make sure that functionality is available. + * SDL will fall back to reduced functionality if the exact flags you wanted + * are not available. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_SetVideoMode + (int width, int height, int bpp, Uint32 flags); + +/** @name SDL_Update Functions + * These functions should not be called while 'screen' is locked. + */ +/*@{*/ +/** + * Makes sure the given list of rectangles is updated on the given screen. + */ +extern DECLSPEC void SDLCALL SDL_UpdateRects + (SDL_Surface *screen, int numrects, SDL_Rect *rects); +/** + * If 'x', 'y', 'w' and 'h' are all 0, SDL_UpdateRect will update the entire + * screen. + */ +extern DECLSPEC void SDLCALL SDL_UpdateRect + (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h); +/*@}*/ + +/** + * On hardware that supports double-buffering, this function sets up a flip + * and returns. The hardware will wait for vertical retrace, and then swap + * video buffers before the next video surface blit or lock will return. + * On hardware that doesn not support double-buffering, this is equivalent + * to calling SDL_UpdateRect(screen, 0, 0, 0, 0); + * The SDL_DOUBLEBUF flag must have been passed to SDL_SetVideoMode() when + * setting the video mode for this function to perform hardware flipping. + * This function returns 0 if successful, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_Flip(SDL_Surface *screen); + +/** + * Set the gamma correction for each of the color channels. + * The gamma values range (approximately) between 0.1 and 10.0 + * + * If this function isn't supported directly by the hardware, it will + * be emulated using gamma ramps, if available. If successful, this + * function returns 0, otherwise it returns -1. + */ +extern DECLSPEC int SDLCALL SDL_SetGamma(float red, float green, float blue); + +/** + * Set the gamma translation table for the red, green, and blue channels + * of the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. + * The input is the index into the array, and the output is the 16-bit + * gamma value at that index, scaled to the output color precision. + * + * You may pass NULL for any of the channels to leave it unchanged. + * If the call succeeds, it will return 0. If the display driver or + * hardware does not support gamma translation, or otherwise fails, + * this function will return -1. + */ +extern DECLSPEC int SDLCALL SDL_SetGammaRamp(const Uint16 *red, const Uint16 *green, const Uint16 *blue); + +/** + * Retrieve the current values of the gamma translation tables. + * + * You must pass in valid pointers to arrays of 256 16-bit quantities. + * Any of the pointers may be NULL to ignore that channel. + * If the call succeeds, it will return 0. If the display driver or + * hardware does not support gamma translation, or otherwise fails, + * this function will return -1. + */ +extern DECLSPEC int SDLCALL SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue); + +/** + * Sets a portion of the colormap for the given 8-bit surface. If 'surface' + * is not a palettized surface, this function does nothing, returning 0. + * If all of the colors were set as passed to SDL_SetColors(), it will + * return 1. If not all the color entries were set exactly as given, + * it will return 0, and you should look at the surface palette to + * determine the actual color palette. + * + * When 'surface' is the surface associated with the current display, the + * display colormap will be updated with the requested colors. If + * SDL_HWPALETTE was set in SDL_SetVideoMode() flags, SDL_SetColors() + * will always return 1, and the palette is guaranteed to be set the way + * you desire, even if the window colormap has to be warped or run under + * emulation. + */ +extern DECLSPEC int SDLCALL SDL_SetColors(SDL_Surface *surface, + SDL_Color *colors, int firstcolor, int ncolors); + +/** + * Sets a portion of the colormap for a given 8-bit surface. + * 'flags' is one or both of: + * SDL_LOGPAL -- set logical palette, which controls how blits are mapped + * to/from the surface, + * SDL_PHYSPAL -- set physical palette, which controls how pixels look on + * the screen + * Only screens have physical palettes. Separate change of physical/logical + * palettes is only possible if the screen has SDL_HWPALETTE set. + * + * The return value is 1 if all colours could be set as requested, and 0 + * otherwise. + * + * SDL_SetColors() is equivalent to calling this function with + * flags = (SDL_LOGPAL|SDL_PHYSPAL). + */ +extern DECLSPEC int SDLCALL SDL_SetPalette(SDL_Surface *surface, int flags, + SDL_Color *colors, int firstcolor, + int ncolors); + +/** + * Maps an RGB triple to an opaque pixel value for a given pixel format + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB +(const SDL_PixelFormat * const format, + const Uint8 r, const Uint8 g, const Uint8 b); + +/** + * Maps an RGBA quadruple to a pixel value for a given pixel format + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA +(const SDL_PixelFormat * const format, + const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a); + +/** + * Maps a pixel value into the RGB components for a given pixel format + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * const fmt, + Uint8 *r, Uint8 *g, Uint8 *b); + +/** + * Maps a pixel value into the RGBA components for a given pixel format + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * const fmt, + Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); + +/** @sa SDL_CreateRGBSurface */ +#define SDL_AllocSurface SDL_CreateRGBSurface +/** + * Allocate and free an RGB surface (must be called after SDL_SetVideoMode) + * If the depth is 4 or 8 bits, an empty palette is allocated for the surface. + * If the depth is greater than 8 bits, the pixel format is set using the + * flags '[RGB]mask'. + * If the function runs out of memory, it will return NULL. + * + * The 'flags' tell what kind of surface to create. + * SDL_SWSURFACE means that the surface should be created in system memory. + * SDL_HWSURFACE means that the surface should be created in video memory, + * with the same format as the display surface. This is useful for surfaces + * that will not change much, to take advantage of hardware acceleration + * when being blitted to the display surface. + * SDL_ASYNCBLIT means that SDL will try to perform asynchronous blits with + * this surface, but you must always lock it before accessing the pixels. + * SDL will wait for current blits to finish before returning from the lock. + * SDL_SRCCOLORKEY indicates that the surface will be used for colorkey blits. + * If the hardware supports acceleration of colorkey blits between + * two surfaces in video memory, SDL will try to place the surface in + * video memory. If this isn't possible or if there is no hardware + * acceleration available, the surface will be placed in system memory. + * SDL_SRCALPHA means that the surface will be used for alpha blits and + * if the hardware supports hardware acceleration of alpha blits between + * two surfaces in video memory, to place the surface in video memory + * if possible, otherwise it will be placed in system memory. + * If the surface is created in video memory, blits will be _much_ faster, + * but the surface format must be identical to the video surface format, + * and the only way to access the pixels member of the surface is to use + * the SDL_LockSurface() and SDL_UnlockSurface() calls. + * If the requested surface actually resides in video memory, SDL_HWSURFACE + * will be set in the flags member of the returned surface. If for some + * reason the surface could not be placed in video memory, it will not have + * the SDL_HWSURFACE flag set, and will be created in system memory instead. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +/** @sa SDL_CreateRGBSurface */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, int height, int depth, int pitch, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface *surface); + +/** + * SDL_LockSurface() sets up a surface for directly accessing the pixels. + * Between calls to SDL_LockSurface()/SDL_UnlockSurface(), you can write + * to and read from 'surface->pixels', using the pixel format stored in + * 'surface->format'. Once you are done accessing the surface, you should + * use SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates + * to 0, then you can read and write to the surface at any time, and the + * pixel format of the surface will not change. In particular, if the + * SDL_HWSURFACE flag is not given when calling SDL_SetVideoMode(), you + * will not need to lock the display surface before accessing it. + * + * No operating system or library calls should be made between lock/unlock + * pairs, as critical system locks may be held during this time. + * + * SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked. + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface *surface); +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface); + +/** + * Load a surface from a seekable SDL data source (memory or file.) + * If 'freesrc' is non-zero, the source will be closed after being read. + * Returns the new surface, or NULL if there was an error. + * The new surface should be freed with SDL_FreeSurface(). + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, int freesrc); + +/** Convenience macro -- load a surface from a file */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data source (memory or file.) + * If 'freedst' is non-zero, the source will be closed after being written. + * Returns 0 if successful or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface *surface, SDL_RWops *dst, int freedst); + +/** Convenience macro -- save a surface to a file */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Sets the color key (transparent pixel) in a blittable surface. + * If 'flag' is SDL_SRCCOLORKEY (optionally OR'd with SDL_RLEACCEL), + * 'key' will be the transparent pixel in the source image of a blit. + * SDL_RLEACCEL requests RLE acceleration for the surface if present, + * and removes RLE acceleration if absent. + * If 'flag' is 0, this function clears any current color key. + * This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey + (SDL_Surface *surface, Uint32 flag, Uint32 key); + +/** + * This function sets the alpha value for the entire surface, as opposed to + * using the alpha component of each pixel. This value measures the range + * of transparency of the surface, 0 being completely transparent to 255 + * being completely opaque. An 'alpha' value of 255 causes blits to be + * opaque, the source pixels copied to the destination (the default). Note + * that per-surface alpha can be combined with colorkey transparency. + * + * If 'flag' is 0, alpha blending is disabled for the surface. + * If 'flag' is SDL_SRCALPHA, alpha blending is enabled for the surface. + * OR:ing the flag with SDL_RLEACCEL requests RLE acceleration for the + * surface; if SDL_RLEACCEL is not specified, the RLE accel will be removed. + * + * The 'alpha' parameter is ignored for surfaces that have an alpha channel. + */ +extern DECLSPEC int SDLCALL SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha); + +/** + * Sets the clipping rectangle for the destination surface in a blit. + * + * If the clip rectangle is NULL, clipping will be disabled. + * If the clip rectangle doesn't intersect the surface, the function will + * return SDL_FALSE and blits will be completely clipped. Otherwise the + * function returns SDL_TRUE and blits to the surface will be clipped to + * the intersection of the surface area and the clipping rectangle. + * + * Note that blits are automatically clipped to the edges of the source + * and destination surfaces. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface *surface, const SDL_Rect *rect); + +/** + * Gets the clipping rectangle for the destination surface in a blit. + * 'rect' must be a pointer to a valid rectangle which will be filled + * with the correct values. + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect); + +/** + * Creates a new surface of the specified format, and then copies and maps + * the given surface to it so the blit of the converted surface will be as + * fast as possible. If this function fails, it returns NULL. + * + * The 'flags' parameter is passed to SDL_CreateRGBSurface() and has those + * semantics. You can also pass SDL_RLEACCEL in the flags parameter and + * SDL will try to RLE accelerate colorkey and alpha blits in the resulting + * surface. + * + * This function is used internally by SDL_DisplayFormat(). + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_ConvertSurface + (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags); + +/** + * This performs a fast blit from the source surface to the destination + * surface. It assumes that the source and destination rectangles are + * the same size. If either 'srcrect' or 'dstrect' are NULL, the entire + * surface (src or dst) is copied. The final blit rectangles are saved + * in 'srcrect' and 'dstrect' after all clipping is performed. + * If the blit is successful, it returns 0, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without alpha and colorkey + * are defined as follows: + * + * RGBA->RGB: + * SDL_SRCALPHA set: + * alpha-blend (using alpha-channel). + * SDL_SRCCOLORKEY ignored. + * SDL_SRCALPHA not set: + * copy RGB. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source colour key, ignoring alpha in the + * comparison. + * + * RGB->RGBA: + * SDL_SRCALPHA set: + * alpha-blend (using the source per-surface alpha value); + * set destination alpha to opaque. + * SDL_SRCALPHA not set: + * copy RGB, set destination alpha to source per-surface alpha value. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source colour key. + * + * RGBA->RGBA: + * SDL_SRCALPHA set: + * alpha-blend (using the source alpha channel) the RGB values; + * leave destination alpha untouched. [Note: is this correct?] + * SDL_SRCCOLORKEY ignored. + * SDL_SRCALPHA not set: + * copy all of RGBA to the destination. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source colour key, ignoring alpha in the + * comparison. + * + * RGB->RGB: + * SDL_SRCALPHA set: + * alpha-blend (using the source per-surface alpha value). + * SDL_SRCALPHA not set: + * copy RGB. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source colour key. + * + * If either of the surfaces were in video memory, and the blit returns -2, + * the video memory was lost, so it should be reloaded with artwork and + * re-blitted: + * @code + * while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) { + * while ( SDL_LockSurface(image) < 0 ) + * Sleep(10); + * -- Write image pixels to image->pixels -- + * SDL_UnlockSurface(image); + * } + * @endcode + * + * This happens under DirectX 5.0 when the system switches away from your + * fullscreen application. The lock will also fail until you have access + * to the video memory again. + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** This is the public blit function, SDL_BlitSurface(), and it performs + * rectangle validation and clipping before passing it to SDL_LowerBlit() + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); +/** This is a semi-private blit function and it performs low-level surface + * blitting only. + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); + +/** + * This function performs a fast fill of the given rectangle with 'color' + * The given rectangle is clipped to the destination surface clip area + * and the final fill rectangle is saved in the passed in pointer. + * If 'dstrect' is NULL, the whole surface will be filled with 'color' + * The color should be a pixel of the format used by the surface, and + * can be generated by the SDL_MapRGB() function. + * This function returns 0 on success, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color); + +/** + * This function takes a surface and copies it to a new surface of the + * pixel format and colors of the video framebuffer, suitable for fast + * blitting onto the display surface. It calls SDL_ConvertSurface() + * + * If you want to take advantage of hardware colorkey or alpha blit + * acceleration, you should set the colorkey and alpha value before + * calling this function. + * + * If the conversion fails or runs out of memory, it returns NULL + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormat(SDL_Surface *surface); + +/** + * This function takes a surface and copies it to a new surface of the + * pixel format and colors of the video framebuffer (if possible), + * suitable for fast alpha blitting onto the display surface. + * The new surface will always have an alpha channel. + * + * If you want to take advantage of hardware colorkey or alpha blit + * acceleration, you should set the colorkey and alpha value before + * calling this function. + * + * If the conversion fails or runs out of memory, it returns NULL + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormatAlpha(SDL_Surface *surface); + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name YUV video surface overlay functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** This function creates a video output overlay + * Calling the returned surface an overlay is something of a misnomer because + * the contents of the display surface underneath the area where the overlay + * is shown is undefined - it may be overwritten with the converted YUV data. + */ +extern DECLSPEC SDL_Overlay * SDLCALL SDL_CreateYUVOverlay(int width, int height, + Uint32 format, SDL_Surface *display); + +/** Lock an overlay for direct access, and unlock it when you are done */ +extern DECLSPEC int SDLCALL SDL_LockYUVOverlay(SDL_Overlay *overlay); +extern DECLSPEC void SDLCALL SDL_UnlockYUVOverlay(SDL_Overlay *overlay); + +/** Blit a video overlay to the display surface. + * The contents of the video surface underneath the blit destination are + * not defined. + * The width and height of the destination rectangle may be different from + * that of the overlay, but currently only 2x scaling is supported. + */ +extern DECLSPEC int SDLCALL SDL_DisplayYUVOverlay(SDL_Overlay *overlay, SDL_Rect *dstrect); + +/** Free a video overlay */ +extern DECLSPEC void SDLCALL SDL_FreeYUVOverlay(SDL_Overlay *overlay); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name OpenGL support functions. */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Dynamically load an OpenGL library, or the default one if path is NULL + * + * If you do this, you need to retrieve all of the GL functions used in + * your program from the dynamic library using SDL_GL_GetProcAddress(). + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get the address of a GL function + */ +extern DECLSPEC void * SDLCALL SDL_GL_GetProcAddress(const char* proc); + +/** + * Set an attribute of the OpenGL subsystem before intialization. + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get an attribute of the OpenGL subsystem from the windowing + * interface, such as glX. This is of course different from getting + * the values from SDL's internal OpenGL subsystem, which only + * stores the values you request before initialization. + * + * Developers should track the values they pass into SDL_GL_SetAttribute + * themselves if they want to retrieve these values. + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int* value); + +/** + * Swap the OpenGL buffers, if double-buffering is supported. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapBuffers(void); + +/** @name OpenGL Internal Functions + * Internal functions that should not be called unless you have read + * and understood the source code for these functions. + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_GL_UpdateRects(int numrects, SDL_Rect* rects); +extern DECLSPEC void SDLCALL SDL_GL_Lock(void); +extern DECLSPEC void SDLCALL SDL_GL_Unlock(void); +/*@}*/ + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Window Manager Functions */ +/** These functions allow interaction with the window manager, if any. */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Sets the title and icon text of the display window (UTF-8 encoded) + */ +extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title, const char *icon); +/** + * Gets the title and icon text of the display window (UTF-8 encoded) + */ +extern DECLSPEC void SDLCALL SDL_WM_GetCaption(char **title, char **icon); + +/** + * Sets the icon for the display window. + * This function must be called before the first call to SDL_SetVideoMode(). + * It takes an icon surface, and a mask in MSB format. + * If 'mask' is NULL, the entire icon surface will be used as the icon. + */ +extern DECLSPEC void SDLCALL SDL_WM_SetIcon(SDL_Surface *icon, Uint8 *mask); + +/** + * This function iconifies the window, and returns 1 if it succeeded. + * If the function succeeds, it generates an SDL_APPACTIVE loss event. + * This function is a noop and returns 0 in non-windowed environments. + */ +extern DECLSPEC int SDLCALL SDL_WM_IconifyWindow(void); + +/** + * Toggle fullscreen mode without changing the contents of the screen. + * If the display surface does not require locking before accessing + * the pixel information, then the memory pointers will not change. + * + * If this function was able to toggle fullscreen mode (change from + * running in a window to fullscreen, or vice-versa), it will return 1. + * If it is not implemented, or fails, it returns 0. + * + * The next call to SDL_SetVideoMode() will set the mode fullscreen + * attribute based on the flags parameter - if SDL_FULLSCREEN is not + * set, then the display will be windowed by default where supported. + * + * This is currently only implemented in the X11 video driver. + */ +extern DECLSPEC int SDLCALL SDL_WM_ToggleFullScreen(SDL_Surface *surface); + +typedef enum { + SDL_GRAB_QUERY = -1, + SDL_GRAB_OFF = 0, + SDL_GRAB_ON = 1, + SDL_GRAB_FULLSCREEN /**< Used internally */ +} SDL_GrabMode; +/** + * This function allows you to set and query the input grab state of + * the application. It returns the new input grab state. + * + * Grabbing means that the mouse is confined to the application window, + * and nearly all keyboard input is passed directly to the application, + * and not interpreted by a window manager, if any. + */ +extern DECLSPEC SDL_GrabMode SDLCALL SDL_WM_GrabInput(SDL_GrabMode mode); + +/*@}*/ + +/** @internal Not in public API at the moment - do not use! */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_video_h */ diff --git a/Windows/SDL/include/begin_code.h b/Windows/SDL/include/begin_code.h new file mode 100644 index 0000000..1c8a2a0 --- /dev/null +++ b/Windows/SDL/include/begin_code.h @@ -0,0 +1,179 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file begin_code.h + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/** + * @file begin_code.h + * This shouldn't be nested -- included it around code only. + */ +#ifdef _begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define _begin_code_h + +/** + * @def DECLSPEC + * Some compilers use a special export keyword + */ +#ifndef DECLSPEC +# if defined(__BEOS__) || defined(__HAIKU__) +# if defined(__GNUC__) +# define DECLSPEC +# else +# define DECLSPEC __declspec(export) +# endif +# elif defined(__WIN32__) +# ifdef __BORLANDC__ +# ifdef BUILD_SDL +# define DECLSPEC +# else +# define DECLSPEC __declspec(dllimport) +# endif +# else +# define DECLSPEC __declspec(dllexport) +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/** + * @def SDLCALL + * By default SDL uses the C calling convention + */ +#ifndef SDLCALL +# if defined(__WIN32__) && !defined(__GNUC__) +# define SDLCALL __cdecl +# elif defined(__OS2__) + /* But on OS/2, we use the _System calling convention */ + /* to be compatible with every compiler */ +# if defined (__GNUC__) && !defined(_System) +# define _System /* For compatibility with old GCC/EMX */ +# endif +# define SDLCALL _System +# else +# define SDLCALL +# endif +#endif /* SDLCALL */ + +#ifdef __SYMBIAN32__ +#ifndef EKA2 +#undef DECLSPEC +#define DECLSPEC +#elif !defined(__WINS__) +#undef DECLSPEC +#define DECLSPEC __declspec(dllexport) +#endif /* !EKA2 */ +#endif /* __SYMBIAN32__ */ + +/** + * @file begin_code.h + * Force structure packing at 4 byte alignment. + * This is necessary if the header is included in code which has structure + * packing set to an alternate value, say for loading structures from disk. + * The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _M_X64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#elif (defined(__MWERKS__) && defined(__MACOS__)) +#pragma options align=mac68k4byte +#pragma enumsalwaysint on +#endif /* Compiler needs structure packing set */ + +/** + * @def SDL_INLINE_OKAY + * Set up compiler-specific options for inlining functions + */ +#ifndef SDL_INLINE_OKAY +#ifdef __GNUC__ +#define SDL_INLINE_OKAY +#else +/* Add any special compiler-specific cases here */ +#if defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__EABI__) +#ifndef __inline__ +#define __inline__ __inline +#endif +#define SDL_INLINE_OKAY +#else +#if !defined(__MRC__) && !defined(_SGI_SOURCE) +#ifndef __inline__ +#define __inline__ inline +#endif +#define SDL_INLINE_OKAY +#endif /* Not a funky compiler */ +#endif /* Visual C++ */ +#endif /* GNU C */ +#endif /* SDL_INLINE_OKAY */ + +/** + * @def __inline__ + * If inlining isn't supported, remove "__inline__", turning static + * inlined functions into static functions (resulting in code bloat + * in all files which include the offending header files) + */ +#ifndef SDL_INLINE_OKAY +#define __inline__ +#endif + +/** + * @def NULL + * Apparently this is needed by several Windows compilers + */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ diff --git a/Windows/SDL/include/close_code.h b/Windows/SDL/include/close_code.h new file mode 100644 index 0000000..7a97d88 --- /dev/null +++ b/Windows/SDL/include/close_code.h @@ -0,0 +1,45 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file close_code.h + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef _begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef _begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#if (defined(__MWERKS__) && defined(__MACOS__)) +#pragma options align=reset +#pragma enumsalwaysint reset +#else +#pragma pack(pop) +#endif +#endif /* Compiler needs structure packing set */ diff --git a/Windows/SDL/lib/SDL.dll b/Windows/SDL/lib/SDL.dll new file mode 100644 index 0000000000000000000000000000000000000000..7baa081559c5b6b887f0f85ac4124e89ef260b0e GIT binary patch literal 329728 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 z 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 z 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

xc;7Lk@5h=RA!t2brmp3}I~6pN3{>~wRX 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 B#9#mb literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib/SDL.lib b/Windows/SDL/lib/SDL.lib new file mode 100644 index 0000000000000000000000000000000000000000..317814bc0e66001e035939656dd182733f3a2695 GIT binary patch literal 42360 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib/SDLmain.lib b/Windows/SDL/lib/SDLmain.lib new file mode 100644 index 0000000000000000000000000000000000000000..e2e1426969ee0cc2683d69dc06186c820074ace2 GIT binary patch literal 8270 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 F{|_iQ1_uBD literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib/libSDL.dll.a b/Windows/SDL/lib/libSDL.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..c4a2b1fe42ecdea754105a25664eb5143258c8d4 GIT binary patch literal 125732 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 V5pR469(9HdGszVb6s@yK`F{%YoJarw literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib/libSDLmain.a b/Windows/SDL/lib/libSDLmain.a new file mode 100644 index 0000000000000000000000000000000000000000..ba7b8e28d47eedbf474fead462f0ad2999086b6e GIT binary patch literal 4702 zcmaJ_4QvzV8U9S%kY#C|R&L9-bhyk=V6A^3K-3201UrMt8I%C2O5BT+T)>lKXXiU0 zTba_uRyj`YGKsF;q^YVVP1AmaG@;Cew(`P6lvUa)gx0Z2Q>79q5uW5R)&Yu|J>UEJ z&gTSnlI`bv-uHXnpYOXrKiM8v29ND(^m}TL;Px%sc5H1627(?>fK2vpk7sL}>EGYT z7+Zx;fq$gIbSjfh%F;+Ykz!JBBGnBL3T|iqu-!YoJf_imL|rw5pp_ws(exCjQuRy(2v~~s@md2(PN4d zWeY-MEYKt4JDa(L);qq_1XuNh`4OcdeN-Hx-XW=Cfhu(1_8-1?lm68`A|Fe0lt{(L^ z=zU%%yb*?x_e7})r9C+Q?gQMTPp#Xd{hRv)ube(hRDp!B5cU{mrlzeBu$Nu2zRiQY z)6OkXuah?zDx!4kl;3h5f$aLcgX91O>ZYZ?i+h_VOT|k1e4Y3%p)jTcPS@-&Fr&aP zw87bnAu+p&W*}&TnNVdL5g)vQ&4o0r%~e1)%!n=i96xN9uP|So3ls^Sl}hwKxU&4L zGnnxxchoyQMu$`H^co!vdgn%?qe<_4+URK3I|D|CTkmW&I@ai&ZAM3n-r2rz7fm;d zT~-1Yey&D1M8aVb-b2Ds65db32TAw^67E}YU}j$3!1C`t#j~RGX`_B>(Kyv)L>lzi zEnT~9tkomsLLW~Wox}FD7U%om@-H|*z3<~@)hgGOeFem(zvV|AdaF4>4Z(x9mbp(+ z6JyO{F>}SS7%A)1g>Pc={MtpdD|RbbG?2q7I(;y-1`B@J5xU^#p>1oLOQ5KQqxhOM zlU-0T;tj+?n>(l3hM{2YbElb`{<7DJD~&a*Y=Zn0cdquU_b~1qP0)VPrh#+ii{`|M z5uek1lyUPc@F#eEvhUX8x}|ESuT%JpylgS#}jGIer&=2_4BOe5>U z?KL^nNm_MTqr8U*3;wj(+jbufkQRNY4 z<0cOnsD#4@I(mKKXq54%lAeR%z5ApCk?`IFk=+LwYekul;Zx5#@%=cVF$?_|NLYUZ zv=tvWTZgk!pbvof<-VR>1zJPsQ=l#6chj=ovCwAh4B^)X#IIRyw$tMFSX?*IBc#`B zp?(Xg78(N*8TzCM!8wR;@$%iD!9v5RIUOEl}~|$ z%1t1l@?RjKvc8Tne#>#Q!$87%1n6nv1}ttANW>Te`Z`(1Eo%-)^yQ4@_fw$FkwcNa&rj{LWi`?^%9-vHW&Cz!<+kx>=8fjsdMF?qwiR?`a?}aX$k38lg9V zLkwybHOuMqb=pf3~30)2_lYd{+a{RC(|p>sf@%2|uM3nXSZSDQ0jKw`$D z*ndHq>l;oaWgvchzQov3$Fg^iL19C~>A=!6{t=n+Uk9qM!x?(7gJ)HQjeN*q2foV| zBMm0ycuE`PSNy6^7(V=dP-PB+;rH%p^nUIGohp+A!-v&br$97g#W({w90ooibVe}t zcOXci3O_p34^%zu?>}7QUX|M4eJCHt%C{f;dk^nro#R9`hz-4A!y@NjuV5~$U@lt> zuT+Yw=|l~~2iI0Gb1RrzHH;*mOsF*sAMi&yahP3wXa&Qs@l_w>V^cC`?WpnL-jNyx zufEA-deE+uQI({eTE^gYUJ(@4o{`l7ZMeoqR*zd0`3x&^dejs$^VwGuoeT7>U=lTq zq~Oka+&p`P@=;keQ)Yr0Or|q-AFe!Jt1~>RBvNW6X)~WQ%Y3RCGg3YayM()VB7Hy} zN+|N68cD?mlJXFf_Q#csygNNI5>E|96DgTVJ;%}~#6y9Er-FUM-SkYr%=1seqrj-9 zk{;mxxO$8*o&W?^Dj_V#`~K}ANr{nB3CGBQG^i<9#gokBMhDfgQDjqbNu&pu^bJ|H zW!e!6AXz+TppSCuIFq^*S&k+Kl(;e$YGqP19Y;kp?BHYWD*kzaPIr1pOUiptbW*mg zJ+-`;0_RFMxWL{NwmC`h4K^6J4@So*MIqgVYvs4%BM=X65fh%*_*5y85taQ9&)NqV literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib64/SDL.dll b/Windows/SDL/lib64/SDL.dll new file mode 100644 index 0000000000000000000000000000000000000000..c2f5487c5479450e03f23eeef7aedd8a77a8129a GIT binary patch literal 331776 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

-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

-Q%{)h(6}@Y!9Ph{8)dog@ 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

>W>fdwru+|@ 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 z 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib64/SDLmain.lib b/Windows/SDL/lib64/SDLmain.lib new file mode 100644 index 0000000000000000000000000000000000000000..0c8e43a32a38a4c50bd12639d18de396facafa27 GIT binary patch literal 11526 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL/lib64/libSDLmain.a b/Windows/SDL/lib64/libSDLmain.a new file mode 100644 index 0000000000000000000000000000000000000000..a8136711aac7263f4f71206f5b491d6883f3161d GIT binary patch literal 4416 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 CQT*2c literal 0 HcmV?d00001 diff --git a/Windows/SDL/main/SDL_win32_main.c b/Windows/SDL/main/SDL_win32_main.c new file mode 100644 index 0000000..672b48c --- /dev/null +++ b/Windows/SDL/main/SDL_win32_main.c @@ -0,0 +1,402 @@ +/* + SDL_main.c, placed in the public domain by Sam Lantinga 4/13/98 + + The WinMain function -- calls your program's main() function +*/ + +#include +#include + +#define WIN32_LEAN_AND_MEAN +#include + +#ifdef _WIN32_WCE +# define DIR_SEPERATOR TEXT("\\") +# undef _getcwd +# define _getcwd(str,len) wcscpy(str,TEXT("")) +# define setbuf(f,b) +# define setvbuf(w,x,y,z) +# define fopen _wfopen +# define freopen _wfreopen +# define remove(x) DeleteFile(x) +#else +# define DIR_SEPERATOR TEXT("/") +# include +#endif + +/* Include the SDL main definition header */ +#include "SDL.h" +#include "SDL_main.h" + +#ifdef main +# ifndef _WIN32_WCE_EMULATION +# undef main +# endif /* _WIN32_WCE_EMULATION */ +#endif /* main */ + +/* The standard output files */ +#define STDOUT_FILE TEXT("stdout.txt") +#define STDERR_FILE TEXT("stderr.txt") + +/* Set a variable to tell if the stdio redirect has been enabled. */ +static int stdioRedirectEnabled = 0; + +#ifdef _WIN32_WCE + static wchar_t stdoutPath[MAX_PATH]; + static wchar_t stderrPath[MAX_PATH]; +#else + static char stdoutPath[MAX_PATH]; + static char stderrPath[MAX_PATH]; +#endif + +#if defined(_WIN32_WCE) && _WIN32_WCE < 300 +/* seems to be undefined in Win CE although in online help */ +#define isspace(a) (((CHAR)a == ' ') || ((CHAR)a == '\t')) +#endif /* _WIN32_WCE < 300 */ + +static void UnEscapeQuotes( char *arg ) +{ + char *last = NULL; + + while( *arg ) { + if( *arg == '"' && *last == '\\' ) { + char *c_curr = arg; + char *c_last = last; + + while( *c_curr ) { + *c_last = *c_curr; + c_last = c_curr; + c_curr++; + } + *c_last = '\0'; + } + last = arg; + arg++; + } +} + +/* Parse a command line buffer into arguments */ +static int ParseCommandLine(char *cmdline, char **argv) +{ + char *bufp; + char *lastp = NULL; + int argc, last_argc; + + argc = last_argc = 0; + for ( bufp = cmdline; *bufp; ) { + /* Skip leading whitespace */ + while ( isspace(*bufp) ) { + ++bufp; + } + /* Skip over argument */ + if ( *bufp == '"' ) { + ++bufp; + if ( *bufp ) { + if ( argv ) { + argv[argc] = bufp; + } + ++argc; + } + /* Skip over word */ + while ( *bufp && ( *bufp != '"' || (lastp && *lastp == '\\') ) ) { + lastp = bufp; + ++bufp; + } + } else { + if ( *bufp ) { + if ( argv ) { + argv[argc] = bufp; + } + ++argc; + } + /* Skip over word */ + while ( *bufp && ! isspace(*bufp) ) { + ++bufp; + } + } + if ( *bufp ) { + if ( argv ) { + *bufp = '\0'; + } + ++bufp; + } + + /* Strip out \ from \" sequences */ + if( argv && last_argc != argc ) { + UnEscapeQuotes( argv[last_argc] ); + } + last_argc = argc; + } + if ( argv ) { + argv[argc] = NULL; + } + return(argc); +} + +/* Show an error message */ +static void ShowError(const char *title, const char *message) +{ +/* If USE_MESSAGEBOX is defined, you need to link with user32.lib */ +#ifdef USE_MESSAGEBOX + MessageBox(NULL, message, title, MB_ICONEXCLAMATION|MB_OK); +#else + fprintf(stderr, "%s: %s\n", title, message); +#endif +} + +/* Pop up an out of memory message, returns to Windows */ +static BOOL OutOfMemory(void) +{ + ShowError("Fatal Error", "Out of memory - aborting"); + return FALSE; +} + +/* SDL_Quit() shouldn't be used with atexit() directly because + calling conventions may differ... */ +static void cleanup(void) +{ + SDL_Quit(); +} + +/* Remove the output files if there was no output written */ +static void cleanup_output(void) { + FILE *file; + int empty; + + /* Flush the output in case anything is queued */ + fclose(stdout); + fclose(stderr); + + /* Without redirection we're done */ + if (!stdioRedirectEnabled) { + return; + } + + /* See if the files have any output in them */ + if ( stdoutPath[0] ) { + file = fopen(stdoutPath, TEXT("rb")); + if ( file ) { + empty = (fgetc(file) == EOF) ? 1 : 0; + fclose(file); + if ( empty ) { + remove(stdoutPath); + } + } + } + if ( stderrPath[0] ) { + file = fopen(stderrPath, TEXT("rb")); + if ( file ) { + empty = (fgetc(file) == EOF) ? 1 : 0; + fclose(file); + if ( empty ) { + remove(stderrPath); + } + } + } +} + +/* Redirect the output (stdout and stderr) to a file */ +static void redirect_output(void) +{ + DWORD pathlen; +#ifdef _WIN32_WCE + wchar_t path[MAX_PATH]; +#else + char path[MAX_PATH]; +#endif + FILE *newfp; + + pathlen = GetModuleFileName(NULL, path, SDL_arraysize(path)); + while ( pathlen > 0 && path[pathlen] != '\\' ) { + --pathlen; + } + path[pathlen] = '\0'; + +#ifdef _WIN32_WCE + wcsncpy( stdoutPath, path, SDL_arraysize(stdoutPath) ); + wcsncat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) ); +#else + SDL_strlcpy( stdoutPath, path, SDL_arraysize(stdoutPath) ); + SDL_strlcat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) ); +#endif + + /* Redirect standard input and standard output */ + newfp = freopen(stdoutPath, TEXT("w"), stdout); + +#ifndef _WIN32_WCE + if ( newfp == NULL ) { /* This happens on NT */ +#if !defined(stdout) + stdout = fopen(stdoutPath, TEXT("w")); +#else + newfp = fopen(stdoutPath, TEXT("w")); + if ( newfp ) { + *stdout = *newfp; + } +#endif + } +#endif /* _WIN32_WCE */ + +#ifdef _WIN32_WCE + wcsncpy( stderrPath, path, SDL_arraysize(stdoutPath) ); + wcsncat( stderrPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) ); +#else + SDL_strlcpy( stderrPath, path, SDL_arraysize(stderrPath) ); + SDL_strlcat( stderrPath, DIR_SEPERATOR STDERR_FILE, SDL_arraysize(stderrPath) ); +#endif + + newfp = freopen(stderrPath, TEXT("w"), stderr); +#ifndef _WIN32_WCE + if ( newfp == NULL ) { /* This happens on NT */ +#if !defined(stderr) + stderr = fopen(stderrPath, TEXT("w")); +#else + newfp = fopen(stderrPath, TEXT("w")); + if ( newfp ) { + *stderr = *newfp; + } +#endif + } +#endif /* _WIN32_WCE */ + + setvbuf(stdout, NULL, _IOLBF, BUFSIZ); /* Line buffered */ + setbuf(stderr, NULL); /* No buffering */ + stdioRedirectEnabled = 1; +} + +#if defined(_MSC_VER) && !defined(_WIN32_WCE) +/* The VC++ compiler needs main defined */ +#define console_main main +#endif + +/* This is where execution begins [console apps] */ +int console_main(int argc, char *argv[]) +{ + size_t n; + char *bufp, *appname; + int status; + + /* Get the class name from argv[0] */ + appname = argv[0]; + if ( (bufp=SDL_strrchr(argv[0], '\\')) != NULL ) { + appname = bufp+1; + } else + if ( (bufp=SDL_strrchr(argv[0], '/')) != NULL ) { + appname = bufp+1; + } + + if ( (bufp=SDL_strrchr(appname, '.')) == NULL ) + n = SDL_strlen(appname); + else + n = (bufp-appname); + + bufp = SDL_stack_alloc(char, n+1); + if ( bufp == NULL ) { + return OutOfMemory(); + } + SDL_strlcpy(bufp, appname, n+1); + appname = bufp; + + /* Load SDL dynamic link library */ + if ( SDL_Init(SDL_INIT_NOPARACHUTE) < 0 ) { + ShowError("WinMain() error", SDL_GetError()); + return(FALSE); + } + atexit(cleanup_output); + atexit(cleanup); + + /* Sam: + We still need to pass in the application handle so that + DirectInput will initialize properly when SDL_RegisterApp() + is called later in the video initialization. + */ + SDL_SetModuleHandle(GetModuleHandle(NULL)); + + /* Run the application main() code */ + status = SDL_main(argc, argv); + + /* Exit cleanly, calling atexit() functions */ + exit(status); + + /* Hush little compiler, don't you cry... */ + return 0; +} + +/* This is where execution begins [windowed apps] */ +#ifdef _WIN32_WCE +int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw) +#else +int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) +#endif +{ + HMODULE handle; + char **argv; + int argc; + char *cmdline; + char *env_str; +#ifdef _WIN32_WCE + wchar_t *bufp; + int nLen; +#else + char *bufp; + size_t nLen; +#endif + + /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't + keep them open. This is a hack.. hopefully it will be fixed + someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded. + */ + handle = LoadLibrary(TEXT("DDRAW.DLL")); + if ( handle != NULL ) { + FreeLibrary(handle); + } + + /* Check for stdio redirect settings and do the redirection */ + if ((env_str = SDL_getenv("SDL_STDIO_REDIRECT"))) { + if (SDL_atoi(env_str)) { + redirect_output(); + } + } +#ifndef NO_STDIO_REDIRECT + else { + redirect_output(); + } +#endif + +#ifdef _WIN32_WCE + nLen = wcslen(szCmdLine)+128+1; + bufp = SDL_stack_alloc(wchar_t, nLen*2); + wcscpy (bufp, TEXT("\"")); + GetModuleFileName(NULL, bufp+1, 128-3); + wcscpy (bufp+wcslen(bufp), TEXT("\" ")); + wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); + nLen = wcslen(bufp)+1; + cmdline = SDL_stack_alloc(char, nLen); + if ( cmdline == NULL ) { + return OutOfMemory(); + } + WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL); +#else + /* Grab the command line */ + bufp = GetCommandLine(); + nLen = SDL_strlen(bufp)+1; + cmdline = SDL_stack_alloc(char, nLen); + if ( cmdline == NULL ) { + return OutOfMemory(); + } + SDL_strlcpy(cmdline, bufp, nLen); +#endif + + /* Parse it into argv and argc */ + argc = ParseCommandLine(cmdline, NULL); + argv = SDL_stack_alloc(char*, argc+1); + if ( argv == NULL ) { + return OutOfMemory(); + } + ParseCommandLine(cmdline, argv); + + /* Run the main program (after a little SDL initialization) */ + console_main(argc, argv); + + /* Hush little compiler, don't you cry... */ + return 0; +} diff --git a/Windows/SDL/watcom/SDL.def b/Windows/SDL/watcom/SDL.def new file mode 100644 index 0000000..a4c6c31 --- /dev/null +++ b/Windows/SDL/watcom/SDL.def @@ -0,0 +1,208 @@ +; lib /def:SDL.def /out:SDL.lib /machine:x86 +LIBRARY SDL.dll +EXPORTS +SDL_AddTimer +SDL_AllocRW +SDL_AudioDriverName +SDL_AudioInit +SDL_AudioQuit +SDL_BuildAudioCVT +SDL_CDClose +SDL_CDEject +SDL_CDName +SDL_CDNumDrives +SDL_CDOpen +SDL_CDPause +SDL_CDPlay +SDL_CDPlayTracks +SDL_CDResume +SDL_CDStatus +SDL_CDStop +SDL_ClearError +SDL_CloseAudio +SDL_CondBroadcast +SDL_CondSignal +SDL_CondWait +SDL_CondWaitTimeout +SDL_ConvertAudio +SDL_ConvertSurface +SDL_CreateCond +SDL_CreateCursor +SDL_CreateMutex +SDL_CreateRGBSurface +SDL_CreateRGBSurfaceFrom +SDL_CreateSemaphore +SDL_CreateThread +SDL_CreateYUVOverlay +SDL_Delay +SDL_DestroyCond +SDL_DestroyMutex +SDL_DestroySemaphore +SDL_DisplayFormat +SDL_DisplayFormatAlpha +SDL_DisplayYUVOverlay +SDL_EnableKeyRepeat +SDL_EnableUNICODE +SDL_Error +SDL_EventState +SDL_FillRect +SDL_Flip +SDL_FreeCursor +SDL_FreeRW +SDL_FreeSurface +SDL_FreeWAV +SDL_FreeYUVOverlay +SDL_GL_GetAttribute +SDL_GL_GetProcAddress +SDL_GL_LoadLibrary +SDL_GL_Lock +SDL_GL_SetAttribute +SDL_GL_SwapBuffers +SDL_GL_Unlock +SDL_GL_UpdateRects +SDL_GetAppState +SDL_GetAudioStatus +SDL_GetClipRect +SDL_GetCursor +SDL_GetError +SDL_GetEventFilter +SDL_GetGammaRamp +SDL_GetKeyName +SDL_GetKeyRepeat +SDL_GetKeyState +SDL_GetModState +SDL_GetMouseState +SDL_GetRGB +SDL_GetRGBA +SDL_GetRelativeMouseState +SDL_GetThreadID +SDL_GetTicks +SDL_GetVideoInfo +SDL_GetVideoSurface +SDL_GetWMInfo +SDL_Has3DNow +SDL_Has3DNowExt +SDL_HasAltiVec +SDL_HasMMX +SDL_HasMMXExt +SDL_HasRDTSC +SDL_HasSSE +SDL_HasSSE2 +SDL_Init +SDL_InitSubSystem +SDL_JoystickClose +SDL_JoystickEventState +SDL_JoystickGetAxis +SDL_JoystickGetBall +SDL_JoystickGetButton +SDL_JoystickGetHat +SDL_JoystickIndex +SDL_JoystickName +SDL_JoystickNumAxes +SDL_JoystickNumBalls +SDL_JoystickNumButtons +SDL_JoystickNumHats +SDL_JoystickOpen +SDL_JoystickOpened +SDL_JoystickUpdate +SDL_KillThread +SDL_Linked_Version +SDL_ListModes +SDL_LoadBMP_RW +SDL_LoadFunction +SDL_LoadObject +SDL_LoadWAV_RW +SDL_LockAudio +SDL_LockSurface +SDL_LockYUVOverlay +SDL_LowerBlit +SDL_MapRGB +SDL_MapRGBA +SDL_MixAudio +SDL_NumJoysticks +SDL_OpenAudio +SDL_PauseAudio +SDL_PeepEvents +SDL_PollEvent +SDL_PumpEvents +SDL_PushEvent +SDL_Quit +SDL_QuitSubSystem +SDL_RWFromConstMem +SDL_RWFromFP +SDL_RWFromFile +SDL_RWFromMem +SDL_ReadBE16 +SDL_ReadBE32 +SDL_ReadBE64 +SDL_ReadLE16 +SDL_ReadLE32 +SDL_ReadLE64 +SDL_RegisterApp +SDL_RemoveTimer +SDL_SaveBMP_RW +SDL_SemPost +SDL_SemTryWait +SDL_SemValue +SDL_SemWait +SDL_SemWaitTimeout +SDL_SetAlpha +SDL_SetClipRect +SDL_SetColorKey +SDL_SetColors +SDL_SetCursor +SDL_SetError +SDL_SetEventFilter +SDL_SetGamma +SDL_SetGammaRamp +SDL_SetModState +SDL_SetModuleHandle +SDL_SetPalette +SDL_SetTimer +SDL_SetVideoMode +SDL_ShowCursor +SDL_SoftStretch +SDL_ThreadID +SDL_UnloadObject +SDL_UnlockAudio +SDL_UnlockSurface +SDL_UnlockYUVOverlay +SDL_UnregisterApp +SDL_UpdateRect +SDL_UpdateRects +SDL_UpperBlit +SDL_VideoDriverName +SDL_VideoInit +SDL_VideoModeOK +SDL_VideoQuit +SDL_WM_GetCaption +SDL_WM_GrabInput +SDL_WM_IconifyWindow +SDL_WM_SetCaption +SDL_WM_SetIcon +SDL_WM_ToggleFullScreen +SDL_WaitEvent +SDL_WaitThread +SDL_WarpMouse +SDL_WasInit +SDL_WriteBE16 +SDL_WriteBE32 +SDL_WriteBE64 +SDL_WriteLE16 +SDL_WriteLE32 +SDL_WriteLE64 +SDL_getenv +SDL_iconv +SDL_iconv_close +SDL_iconv_open +SDL_iconv_string +SDL_mutexP +SDL_mutexV +SDL_putenv +SDL_revcpy +SDL_snprintf +SDL_strlcat +SDL_strlcpy +SDL_strtoll +SDL_strtoull +SDL_vsnprintf diff --git a/Windows/SDL/watcom/SDL.exp b/Windows/SDL/watcom/SDL.exp new file mode 100644 index 0000000..f79fe74 --- /dev/null +++ b/Windows/SDL/watcom/SDL.exp @@ -0,0 +1,205 @@ +++'_SDL_AddTimer'.'SDL.DLL'..'SDL_AddTimer' +++'_SDL_AllocRW'.'SDL.DLL'..'SDL_AllocRW' +++'_SDL_AudioDriverName'.'SDL.DLL'..'SDL_AudioDriverName' +++'_SDL_AudioInit'.'SDL.DLL'..'SDL_AudioInit' +++'_SDL_AudioQuit'.'SDL.DLL'..'SDL_AudioQuit' +++'_SDL_BuildAudioCVT'.'SDL.DLL'..'SDL_BuildAudioCVT' +++'_SDL_CDClose'.'SDL.DLL'..'SDL_CDClose' +++'_SDL_CDEject'.'SDL.DLL'..'SDL_CDEject' +++'_SDL_CDName'.'SDL.DLL'..'SDL_CDName' +++'_SDL_CDNumDrives'.'SDL.DLL'..'SDL_CDNumDrives' +++'_SDL_CDOpen'.'SDL.DLL'..'SDL_CDOpen' +++'_SDL_CDPause'.'SDL.DLL'..'SDL_CDPause' +++'_SDL_CDPlay'.'SDL.DLL'..'SDL_CDPlay' +++'_SDL_CDPlayTracks'.'SDL.DLL'..'SDL_CDPlayTracks' +++'_SDL_CDResume'.'SDL.DLL'..'SDL_CDResume' +++'_SDL_CDStatus'.'SDL.DLL'..'SDL_CDStatus' +++'_SDL_CDStop'.'SDL.DLL'..'SDL_CDStop' +++'_SDL_ClearError'.'SDL.DLL'..'SDL_ClearError' +++'_SDL_CloseAudio'.'SDL.DLL'..'SDL_CloseAudio' +++'_SDL_CondBroadcast'.'SDL.DLL'..'SDL_CondBroadcast' +++'_SDL_CondSignal'.'SDL.DLL'..'SDL_CondSignal' +++'_SDL_CondWait'.'SDL.DLL'..'SDL_CondWait' +++'_SDL_CondWaitTimeout'.'SDL.DLL'..'SDL_CondWaitTimeout' +++'_SDL_ConvertAudio'.'SDL.DLL'..'SDL_ConvertAudio' +++'_SDL_ConvertSurface'.'SDL.DLL'..'SDL_ConvertSurface' +++'_SDL_CreateCond'.'SDL.DLL'..'SDL_CreateCond' +++'_SDL_CreateCursor'.'SDL.DLL'..'SDL_CreateCursor' +++'_SDL_CreateMutex'.'SDL.DLL'..'SDL_CreateMutex' +++'_SDL_CreateRGBSurface'.'SDL.DLL'..'SDL_CreateRGBSurface' +++'_SDL_CreateRGBSurfaceFrom'.'SDL.DLL'..'SDL_CreateRGBSurfaceFrom' +++'_SDL_CreateSemaphore'.'SDL.DLL'..'SDL_CreateSemaphore' +++'_SDL_CreateThread'.'SDL.DLL'..'SDL_CreateThread' +++'_SDL_CreateYUVOverlay'.'SDL.DLL'..'SDL_CreateYUVOverlay' +++'_SDL_Delay'.'SDL.DLL'..'SDL_Delay' +++'_SDL_DestroyCond'.'SDL.DLL'..'SDL_DestroyCond' +++'_SDL_DestroyMutex'.'SDL.DLL'..'SDL_DestroyMutex' +++'_SDL_DestroySemaphore'.'SDL.DLL'..'SDL_DestroySemaphore' +++'_SDL_DisplayFormat'.'SDL.DLL'..'SDL_DisplayFormat' +++'_SDL_DisplayFormatAlpha'.'SDL.DLL'..'SDL_DisplayFormatAlpha' +++'_SDL_DisplayYUVOverlay'.'SDL.DLL'..'SDL_DisplayYUVOverlay' +++'_SDL_EnableKeyRepeat'.'SDL.DLL'..'SDL_EnableKeyRepeat' +++'_SDL_EnableUNICODE'.'SDL.DLL'..'SDL_EnableUNICODE' +++'_SDL_Error'.'SDL.DLL'..'SDL_Error' +++'_SDL_EventState'.'SDL.DLL'..'SDL_EventState' +++'_SDL_FillRect'.'SDL.DLL'..'SDL_FillRect' +++'_SDL_Flip'.'SDL.DLL'..'SDL_Flip' +++'_SDL_FreeCursor'.'SDL.DLL'..'SDL_FreeCursor' +++'_SDL_FreeRW'.'SDL.DLL'..'SDL_FreeRW' +++'_SDL_FreeSurface'.'SDL.DLL'..'SDL_FreeSurface' +++'_SDL_FreeWAV'.'SDL.DLL'..'SDL_FreeWAV' +++'_SDL_FreeYUVOverlay'.'SDL.DLL'..'SDL_FreeYUVOverlay' +++'_SDL_GL_GetAttribute'.'SDL.DLL'..'SDL_GL_GetAttribute' +++'_SDL_GL_GetProcAddress'.'SDL.DLL'..'SDL_GL_GetProcAddress' +++'_SDL_GL_LoadLibrary'.'SDL.DLL'..'SDL_GL_LoadLibrary' +++'_SDL_GL_Lock'.'SDL.DLL'..'SDL_GL_Lock' +++'_SDL_GL_SetAttribute'.'SDL.DLL'..'SDL_GL_SetAttribute' +++'_SDL_GL_SwapBuffers'.'SDL.DLL'..'SDL_GL_SwapBuffers' +++'_SDL_GL_Unlock'.'SDL.DLL'..'SDL_GL_Unlock' +++'_SDL_GL_UpdateRects'.'SDL.DLL'..'SDL_GL_UpdateRects' +++'_SDL_GetAppState'.'SDL.DLL'..'SDL_GetAppState' +++'_SDL_GetAudioStatus'.'SDL.DLL'..'SDL_GetAudioStatus' +++'_SDL_GetClipRect'.'SDL.DLL'..'SDL_GetClipRect' +++'_SDL_GetCursor'.'SDL.DLL'..'SDL_GetCursor' +++'_SDL_GetError'.'SDL.DLL'..'SDL_GetError' +++'_SDL_GetEventFilter'.'SDL.DLL'..'SDL_GetEventFilter' +++'_SDL_GetGammaRamp'.'SDL.DLL'..'SDL_GetGammaRamp' +++'_SDL_GetKeyName'.'SDL.DLL'..'SDL_GetKeyName' +++'_SDL_GetKeyRepeat'.'SDL.DLL'..'SDL_GetKeyRepeat' +++'_SDL_GetKeyState'.'SDL.DLL'..'SDL_GetKeyState' +++'_SDL_GetModState'.'SDL.DLL'..'SDL_GetModState' +++'_SDL_GetMouseState'.'SDL.DLL'..'SDL_GetMouseState' +++'_SDL_GetRGB'.'SDL.DLL'..'SDL_GetRGB' +++'_SDL_GetRGBA'.'SDL.DLL'..'SDL_GetRGBA' +++'_SDL_GetRelativeMouseState'.'SDL.DLL'..'SDL_GetRelativeMouseState' +++'_SDL_GetThreadID'.'SDL.DLL'..'SDL_GetThreadID' +++'_SDL_GetTicks'.'SDL.DLL'..'SDL_GetTicks' +++'_SDL_GetVideoInfo'.'SDL.DLL'..'SDL_GetVideoInfo' +++'_SDL_GetVideoSurface'.'SDL.DLL'..'SDL_GetVideoSurface' +++'_SDL_GetWMInfo'.'SDL.DLL'..'SDL_GetWMInfo' +++'_SDL_Has3DNow'.'SDL.DLL'..'SDL_Has3DNow' +++'_SDL_Has3DNowExt'.'SDL.DLL'..'SDL_Has3DNowExt' +++'_SDL_HasAltiVec'.'SDL.DLL'..'SDL_HasAltiVec' +++'_SDL_HasMMX'.'SDL.DLL'..'SDL_HasMMX' +++'_SDL_HasMMXExt'.'SDL.DLL'..'SDL_HasMMXExt' +++'_SDL_HasRDTSC'.'SDL.DLL'..'SDL_HasRDTSC' +++'_SDL_HasSSE'.'SDL.DLL'..'SDL_HasSSE' +++'_SDL_HasSSE2'.'SDL.DLL'..'SDL_HasSSE2' +++'_SDL_Init'.'SDL.DLL'..'SDL_Init' +++'_SDL_InitSubSystem'.'SDL.DLL'..'SDL_InitSubSystem' +++'_SDL_JoystickClose'.'SDL.DLL'..'SDL_JoystickClose' +++'_SDL_JoystickEventState'.'SDL.DLL'..'SDL_JoystickEventState' +++'_SDL_JoystickGetAxis'.'SDL.DLL'..'SDL_JoystickGetAxis' +++'_SDL_JoystickGetBall'.'SDL.DLL'..'SDL_JoystickGetBall' +++'_SDL_JoystickGetButton'.'SDL.DLL'..'SDL_JoystickGetButton' +++'_SDL_JoystickGetHat'.'SDL.DLL'..'SDL_JoystickGetHat' +++'_SDL_JoystickIndex'.'SDL.DLL'..'SDL_JoystickIndex' +++'_SDL_JoystickName'.'SDL.DLL'..'SDL_JoystickName' +++'_SDL_JoystickNumAxes'.'SDL.DLL'..'SDL_JoystickNumAxes' +++'_SDL_JoystickNumBalls'.'SDL.DLL'..'SDL_JoystickNumBalls' +++'_SDL_JoystickNumButtons'.'SDL.DLL'..'SDL_JoystickNumButtons' +++'_SDL_JoystickNumHats'.'SDL.DLL'..'SDL_JoystickNumHats' +++'_SDL_JoystickOpen'.'SDL.DLL'..'SDL_JoystickOpen' +++'_SDL_JoystickOpened'.'SDL.DLL'..'SDL_JoystickOpened' +++'_SDL_JoystickUpdate'.'SDL.DLL'..'SDL_JoystickUpdate' +++'_SDL_KillThread'.'SDL.DLL'..'SDL_KillThread' +++'_SDL_Linked_Version'.'SDL.DLL'..'SDL_Linked_Version' +++'_SDL_ListModes'.'SDL.DLL'..'SDL_ListModes' +++'_SDL_LoadBMP_RW'.'SDL.DLL'..'SDL_LoadBMP_RW' +++'_SDL_LoadFunction'.'SDL.DLL'..'SDL_LoadFunction' +++'_SDL_LoadObject'.'SDL.DLL'..'SDL_LoadObject' +++'_SDL_LoadWAV_RW'.'SDL.DLL'..'SDL_LoadWAV_RW' +++'_SDL_LockAudio'.'SDL.DLL'..'SDL_LockAudio' +++'_SDL_LockSurface'.'SDL.DLL'..'SDL_LockSurface' +++'_SDL_LockYUVOverlay'.'SDL.DLL'..'SDL_LockYUVOverlay' +++'_SDL_LowerBlit'.'SDL.DLL'..'SDL_LowerBlit' +++'_SDL_MapRGB'.'SDL.DLL'..'SDL_MapRGB' +++'_SDL_MapRGBA'.'SDL.DLL'..'SDL_MapRGBA' +++'_SDL_MixAudio'.'SDL.DLL'..'SDL_MixAudio' +++'_SDL_NumJoysticks'.'SDL.DLL'..'SDL_NumJoysticks' +++'_SDL_OpenAudio'.'SDL.DLL'..'SDL_OpenAudio' +++'_SDL_PauseAudio'.'SDL.DLL'..'SDL_PauseAudio' +++'_SDL_PeepEvents'.'SDL.DLL'..'SDL_PeepEvents' +++'_SDL_PollEvent'.'SDL.DLL'..'SDL_PollEvent' +++'_SDL_PumpEvents'.'SDL.DLL'..'SDL_PumpEvents' +++'_SDL_PushEvent'.'SDL.DLL'..'SDL_PushEvent' +++'_SDL_Quit'.'SDL.DLL'..'SDL_Quit' +++'_SDL_QuitSubSystem'.'SDL.DLL'..'SDL_QuitSubSystem' +++'_SDL_RWFromConstMem'.'SDL.DLL'..'SDL_RWFromConstMem' +++'_SDL_RWFromFP'.'SDL.DLL'..'SDL_RWFromFP' +++'_SDL_RWFromFile'.'SDL.DLL'..'SDL_RWFromFile' +++'_SDL_RWFromMem'.'SDL.DLL'..'SDL_RWFromMem' +++'_SDL_ReadBE16'.'SDL.DLL'..'SDL_ReadBE16' +++'_SDL_ReadBE32'.'SDL.DLL'..'SDL_ReadBE32' +++'_SDL_ReadBE64'.'SDL.DLL'..'SDL_ReadBE64' +++'_SDL_ReadLE16'.'SDL.DLL'..'SDL_ReadLE16' +++'_SDL_ReadLE32'.'SDL.DLL'..'SDL_ReadLE32' +++'_SDL_ReadLE64'.'SDL.DLL'..'SDL_ReadLE64' +++'_SDL_RegisterApp'.'SDL.DLL'..'SDL_RegisterApp' +++'_SDL_RemoveTimer'.'SDL.DLL'..'SDL_RemoveTimer' +++'_SDL_SaveBMP_RW'.'SDL.DLL'..'SDL_SaveBMP_RW' +++'_SDL_SemPost'.'SDL.DLL'..'SDL_SemPost' +++'_SDL_SemTryWait'.'SDL.DLL'..'SDL_SemTryWait' +++'_SDL_SemValue'.'SDL.DLL'..'SDL_SemValue' +++'_SDL_SemWait'.'SDL.DLL'..'SDL_SemWait' +++'_SDL_SemWaitTimeout'.'SDL.DLL'..'SDL_SemWaitTimeout' +++'_SDL_SetAlpha'.'SDL.DLL'..'SDL_SetAlpha' +++'_SDL_SetClipRect'.'SDL.DLL'..'SDL_SetClipRect' +++'_SDL_SetColorKey'.'SDL.DLL'..'SDL_SetColorKey' +++'_SDL_SetColors'.'SDL.DLL'..'SDL_SetColors' +++'_SDL_SetCursor'.'SDL.DLL'..'SDL_SetCursor' +++'_SDL_SetError'.'SDL.DLL'..'SDL_SetError' +++'_SDL_SetEventFilter'.'SDL.DLL'..'SDL_SetEventFilter' +++'_SDL_SetGamma'.'SDL.DLL'..'SDL_SetGamma' +++'_SDL_SetGammaRamp'.'SDL.DLL'..'SDL_SetGammaRamp' +++'_SDL_SetModState'.'SDL.DLL'..'SDL_SetModState' +++'_SDL_SetModuleHandle'.'SDL.DLL'..'SDL_SetModuleHandle' +++'_SDL_SetPalette'.'SDL.DLL'..'SDL_SetPalette' +++'_SDL_SetTimer'.'SDL.DLL'..'SDL_SetTimer' +++'_SDL_SetVideoMode'.'SDL.DLL'..'SDL_SetVideoMode' +++'_SDL_ShowCursor'.'SDL.DLL'..'SDL_ShowCursor' +++'_SDL_SoftStretch'.'SDL.DLL'..'SDL_SoftStretch' +++'_SDL_ThreadID'.'SDL.DLL'..'SDL_ThreadID' +++'_SDL_UnloadObject'.'SDL.DLL'..'SDL_UnloadObject' +++'_SDL_UnlockAudio'.'SDL.DLL'..'SDL_UnlockAudio' +++'_SDL_UnlockSurface'.'SDL.DLL'..'SDL_UnlockSurface' +++'_SDL_UnlockYUVOverlay'.'SDL.DLL'..'SDL_UnlockYUVOverlay' +++'_SDL_UnregisterApp'.'SDL.DLL'..'SDL_UnregisterApp' +++'_SDL_UpdateRect'.'SDL.DLL'..'SDL_UpdateRect' +++'_SDL_UpdateRects'.'SDL.DLL'..'SDL_UpdateRects' +++'_SDL_UpperBlit'.'SDL.DLL'..'SDL_UpperBlit' +++'_SDL_VideoDriverName'.'SDL.DLL'..'SDL_VideoDriverName' +++'_SDL_VideoInit'.'SDL.DLL'..'SDL_VideoInit' +++'_SDL_VideoModeOK'.'SDL.DLL'..'SDL_VideoModeOK' +++'_SDL_VideoQuit'.'SDL.DLL'..'SDL_VideoQuit' +++'_SDL_WM_GetCaption'.'SDL.DLL'..'SDL_WM_GetCaption' +++'_SDL_WM_GrabInput'.'SDL.DLL'..'SDL_WM_GrabInput' +++'_SDL_WM_IconifyWindow'.'SDL.DLL'..'SDL_WM_IconifyWindow' +++'_SDL_WM_SetCaption'.'SDL.DLL'..'SDL_WM_SetCaption' +++'_SDL_WM_SetIcon'.'SDL.DLL'..'SDL_WM_SetIcon' +++'_SDL_WM_ToggleFullScreen'.'SDL.DLL'..'SDL_WM_ToggleFullScreen' +++'_SDL_WaitEvent'.'SDL.DLL'..'SDL_WaitEvent' +++'_SDL_WaitThread'.'SDL.DLL'..'SDL_WaitThread' +++'_SDL_WarpMouse'.'SDL.DLL'..'SDL_WarpMouse' +++'_SDL_WasInit'.'SDL.DLL'..'SDL_WasInit' +++'_SDL_WriteBE16'.'SDL.DLL'..'SDL_WriteBE16' +++'_SDL_WriteBE32'.'SDL.DLL'..'SDL_WriteBE32' +++'_SDL_WriteBE64'.'SDL.DLL'..'SDL_WriteBE64' +++'_SDL_WriteLE16'.'SDL.DLL'..'SDL_WriteLE16' +++'_SDL_WriteLE32'.'SDL.DLL'..'SDL_WriteLE32' +++'_SDL_WriteLE64'.'SDL.DLL'..'SDL_WriteLE64' +++'_SDL_getenv'.'SDL.DLL'..'SDL_getenv' +++'_SDL_iconv'.'SDL.DLL'..'SDL_iconv' +++'_SDL_iconv_close'.'SDL.DLL'..'SDL_iconv_close' +++'_SDL_iconv_open'.'SDL.DLL'..'SDL_iconv_open' +++'_SDL_iconv_string'.'SDL.DLL'..'SDL_iconv_string' +++'_SDL_mutexP'.'SDL.DLL'..'SDL_mutexP' +++'_SDL_mutexV'.'SDL.DLL'..'SDL_mutexV' +++'_SDL_putenv'.'SDL.DLL'..'SDL_putenv' +++'_SDL_revcpy'.'SDL.DLL'..'SDL_revcpy' +++'_SDL_snprintf'.'SDL.DLL'..'SDL_snprintf' +++'_SDL_strlcat'.'SDL.DLL'..'SDL_strlcat' +++'_SDL_strlcpy'.'SDL.DLL'..'SDL_strlcpy' +++'_SDL_strtoll'.'SDL.DLL'..'SDL_strtoll' +++'_SDL_strtoull'.'SDL.DLL'..'SDL_strtoull' +++'_SDL_vsnprintf'.'SDL.DLL'..'SDL_vsnprintf' diff --git a/Windows/SDL/watcom/SDL.lib b/Windows/SDL/watcom/SDL.lib new file mode 100644 index 0000000000000000000000000000000000000000..ec009eff75dd781fe2a08e2d5a3213c2bec85c76 GIT binary patch literal 28672 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL/watcom/def2lbc.awk b/Windows/SDL/watcom/def2lbc.awk new file mode 100644 index 0000000..84767f6 --- /dev/null +++ b/Windows/SDL/watcom/def2lbc.awk @@ -0,0 +1,38 @@ +# get uppercased module name +/^[ \t]*LIBRARY/ { ModuleName = toupper( $2 ); next } + +# skip uninteresting lines +/^[ \t]*(EXPORTS|;)/ { next } + +# NB: Calling conventions essentially do not exist on non-x86 platforms, +# we simply strip the decoration unless 'cpu' equals 386. + +# process fastcall symbols "@symbol@size" +/^[ \t]*@[A-Za-z0-9_]+@[0-9]+/ { + split( $1, parts, "@" ) # split the import name on the at signs + if( cpu == "386" ) + printf( "++'%s'.'%s'..'%s'\n", $1, ModuleName, parts[2] ) + else + printf( "++'%s'.'%s'\n", parts[2], ModuleName ) + next +} + +# process stdcall symbols using "symbol@size" format +/^[ \t]*[A-Za-z0-9_]+@[0-9]+/ { + split( $1, parts, "@" ) # split the import name on the at sign + if( cpu == "386" ) + printf( "++'_%s'.'%s'..'%s'\n", $1, ModuleName, parts[1] ) + else + printf( "++'%s'.'%s'\n", parts[1], ModuleName ) + next +} + +# process cdecl symbols using plain "symbol" format +/^[ \t]*[A-Za-z0-9_]+/ { + split( $1, parts, "@" ) # split the import name on the at sign + if( cpu == "386" ) + printf( "++'_%s'.'%s'..'%s'\n", $1, ModuleName, $1 ) + else + printf( "++'%s'.'%s'\n", parts[1], ModuleName ) + next +} diff --git a/Windows/SDL/watcom/makefile b/Windows/SDL/watcom/makefile new file mode 100644 index 0000000..583e827 --- /dev/null +++ b/Windows/SDL/watcom/makefile @@ -0,0 +1,11 @@ +# Open Watcom makefile to generate SDL.lib +# def2lbc.awk (from OW source tree) requires 'awk' +# run 'wmake' + +all: SDL.lib + +SDL.exp: SDL.def def2lbc.awk + awk -v cpu=386 -f def2lbc.awk SDL.def > SDL.exp + +SDL.lib: SDL.exp + wlib -q -b -n -c -pa -s -t -zld -ii -io SDL.lib @SDL.exp diff --git a/Windows/SDL2/BUGS.txt b/Windows/SDL2/BUGS.txt new file mode 100644 index 0000000..eb973d5 --- /dev/null +++ b/Windows/SDL2/BUGS.txt @@ -0,0 +1,16 @@ + +Bugs are now managed in the SDL issue tracker, here: + + https://github.com/libsdl-org/SDL/issues + +You may report bugs there, and search to see if a given issue has already + been reported, discussed, and maybe even fixed. + + +You may also find help at the SDL forums/mailing list: + + https://discourse.libsdl.org/ + +Bug reports are welcome here, but we really appreciate if you use the issue + tracker, as bugs discussed on the mailing list may be forgotten or missed. + diff --git a/Windows/SDL2/LICENSE.txt b/Windows/SDL2/LICENSE.txt new file mode 100644 index 0000000..23abb73 --- /dev/null +++ b/Windows/SDL2/LICENSE.txt @@ -0,0 +1,18 @@ +Copyright (C) 1997-2025 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + diff --git a/Windows/SDL2/README-SDL.txt b/Windows/SDL2/README-SDL.txt new file mode 100644 index 0000000..2984b14 --- /dev/null +++ b/Windows/SDL2/README-SDL.txt @@ -0,0 +1,13 @@ + +Please distribute this file with the SDL runtime environment: + +The Simple DirectMedia Layer (SDL for short) is a cross-platform library +designed to make it easy to write multi-media software, such as games +and emulators. + +The Simple DirectMedia Layer library source code is available from: +https://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://www.zlib.net/zlib_license.html + diff --git a/Windows/SDL2/README.md b/Windows/SDL2/README.md new file mode 100644 index 0000000..fa7f7ba --- /dev/null +++ b/Windows/SDL2/README.md @@ -0,0 +1,17 @@ + +# Simple DirectMedia Layer (SDL) Version 2.0 + +https://www.libsdl.org/ + +Simple DirectMedia Layer is a cross-platform development library designed +to provide low level access to audio, keyboard, mouse, joystick, and graphics +hardware via OpenGL and Direct3D. It is used by video playback software, +emulators, and popular games including Valve's award winning catalog +and many Humble Bundle games. + +More extensive documentation is available in the docs directory, starting +with README.md + +Enjoy! + +Sam Lantinga (slouken@libsdl.org) diff --git a/Windows/SDL2/WhatsNew.txt b/Windows/SDL2/WhatsNew.txt new file mode 100644 index 0000000..90d9424 --- /dev/null +++ b/Windows/SDL2/WhatsNew.txt @@ -0,0 +1,889 @@ + +This is a list of major changes in SDL's version history. + +--------------------------------------------------------------------------- +2.30.0: +--------------------------------------------------------------------------- + +General: +* Added support for 2 bits-per-pixel indexed surface formats +* Added the function SDL_GameControllerGetSteamHandle() to get the Steam API handle for a controller, if available +* Added the event SDL_CONTROLLERSTEAMHANDLEUPDATED which is sent when the Steam API handle for a controller changes. This could also change the name, VID, and PID of the controller. +* Added the environment variable SDL_LOGGING to control default log output + +macOS: +* Added the hint SDL_HINT_JOYSTICK_IOKIT to control whether the IOKit controller driver should be used +* Added the hint SDL_HINT_JOYSTICK_MFI to control whether the GCController controller driver should be used +* Added the hint SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE to choose whether high or low power GPU should be used for rendering, in the case where there are multiple GPUs available + +Xbox: +* Added the function SDL_GDKGetDefaultUser() + +--------------------------------------------------------------------------- +2.28.2: +--------------------------------------------------------------------------- + +General: +* Added the hint SDL_HINT_JOYSTICK_WGI to control whether to use Windows.Gaming.Input for controllers + + +--------------------------------------------------------------------------- +2.28.0: +--------------------------------------------------------------------------- + +General: +* Added SDL_HasWindowSurface() and SDL_DestroyWindowSurface() to switch between the window surface and rendering APIs +* Added a display event SDL_DISPLAYEVENT_MOVED which is sent when the primary monitor changes or displays change position relative to each other +* Added the hint SDL_HINT_ENABLE_SCREEN_KEYBOARD to control whether the on-screen keyboard should be shown when text input is active + + +--------------------------------------------------------------------------- +2.26.0: +--------------------------------------------------------------------------- + +General: +* Updated OpenGL headers to the latest API from The Khronos Group Inc. +* Added SDL_GetWindowSizeInPixels() to get the window size in pixels, which may differ from the window coordinate size for windows with high-DPI support +* Added simulated vsync synchronization for the software renderer +* Added the mouse position to SDL_MouseWheelEvent +* Added SDL_ResetHints() to reset all hints to their default values +* Added SDL_GetJoystickGUIDInfo() to get device information encoded in a joystick GUID +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 to control whether the HIDAPI driver for XBox 360 controllers should be used +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED to control whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS to control whether the HIDAPI driver for XBox 360 wireless controllers should be used +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE to control whether the HIDAPI driver for XBox One controllers should be used +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED to control the brightness of the XBox One guide button LED +* Added support for PS3 controllers to the HIDAPI driver, enabled by default on macOS, controlled by the SDL_HINT_JOYSTICK_HIDAPI_PS3 hint +* Added support for Nintendo Wii controllers to the HIDAPI driver, not enabled by default, controlled by the SDL_HINT_JOYSTICK_HIDAPI_WII hint +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED to control whether the player LED should be lit on the Nintendo Wii controllers +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS to control whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver +* Added access to the individual left and right gyro sensors of the combined Joy-Cons controller +* Added a microsecond timestamp to SDL_SensorEvent and SDL_ControllerSensorEvent, when the hardware provides that information +* Added SDL_SensorGetDataWithTimestamp() and SDL_GameControllerGetSensorDataWithTimestamp() to retrieve the last sensor data with the associated microsecond timestamp +* Added the hint SDL_HINT_HIDAPI_IGNORE_DEVICES to have the SDL HID API ignore specific devices +* SDL_GetRevision() now includes more information about the SDL build, including the git commit hash if available + +Windows: +* Added the hint SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE to control whether the system mouse acceleration curve is used for relative mouse motion + +macOS: +* Implemented vsync synchronization on macOS 12 + +Linux: +* Added SDL_SetPrimarySelectionText(), SDL_GetPrimarySelectionText(), and SDL_HasPrimarySelectionText() to interact with the X11 primary selection clipboard +* Added the hint SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP to control whether mouse pointer warp emulation is enabled under Wayland + +Android: +* Enabled IME soft keyboard input +* Added version checking to make sure the SDL Java and C code are compatible + + +--------------------------------------------------------------------------- +2.24.0: +--------------------------------------------------------------------------- + +General: +* New version numbering scheme, similar to GLib and Flatpak. + * An even number in the minor version (second component) indicates a production-ready stable release such as 2.24.0, which would have been 2.0.24 under the old system. + * The patchlevel (micro version, third component) indicates a bugfix-only update: for example, 2.24.1 would be a bugfix-only release to fix bugs in 2.24.0, without adding new features. + * An odd number in the minor version indicates a prerelease such as 2.23.0. Stable distributions should not use these prereleases. + * The patchlevel indicates successive prereleases, for example 2.23.1 and 2.23.2 would be prereleases during development of the SDL 2.24.0 stable release. +* Added SDL_GetPointDisplayIndex() and SDL_GetRectDisplayIndex() to get the display associated with a point and rectangle in screen space +* Added SDL_bsearch(), SDL_crc16(), and SDL_utf8strnlen() to the stdlib routines +* Added SDL_CPUPauseInstruction() as a macro in SDL_atomic.h +* Added SDL_size_mul_overflow() and SDL_size_add_overflow() for better size overflow protection +* Added SDL_ResetHint() to reset a hint to the default value +* Added SDL_ResetKeyboard() to reset SDL's internal keyboard state, generating key up events for all currently pressed keys +* Added the hint SDL_HINT_MOUSE_RELATIVE_WARP_MOTION to control whether mouse warping generates motion events in relative mode. This hint defaults off. +* Added the hint SDL_HINT_TRACKPAD_IS_TOUCH_ONLY to control whether trackpads are treated as touch devices or mice. By default touchpads are treated as mouse input. +* The hint SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS now defaults on +* Added support for mini-gamepad mode for Nintendo Joy-Con controllers using the HIDAPI driver +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS to control whether Joy-Con controllers are automatically merged into a unified gamepad when using the HIDAPI driver. This hint defaults on. +* The hint SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED can be set to a floating point value to set the brightness of the Home LED on Nintendo Switch controllers +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED to set the Home LED brightness for the Nintendo Joy-Con controllers. By default the Home LED is not modified. +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED to control whether the player LED should be lit on the Nintendo Joy-Con controllers +* Added support for Nintendo Online classic controllers using the HIDAPI driver +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC to control whether the HIDAPI driver for Nintendo Online classic controllers should be used +* Added support for the NVIDIA Shield Controller to the HIDAPI driver, supporting rumble and battery status +* Added support for NVIDIA SHIELD controller to the HIDAPI driver, and a hint SDL_HINT_JOYSTICK_HIDAPI_SHIELD to control whether this is used +* Added functions to get the platform dependent name for a joystick or game controller: + * SDL_JoystickPathForIndex() + * SDL_JoystickPath() + * SDL_GameControllerPathForIndex() + * SDL_GameControllerPath() +* Added SDL_GameControllerGetFirmwareVersion() and SDL_JoystickGetFirmwareVersion(), currently implemented for DualSense(tm) Wireless Controllers using HIDAPI +* Added SDL_JoystickAttachVirtualEx() for extended virtual controller support +* Added joystick event SDL_JOYBATTERYUPDATED for when battery status changes +* Added SDL_GUIDToString() and SDL_GUIDFromString() to convert between SDL GUID and string +* Added SDL_HasLSX() and SDL_HasLASX() to detect LoongArch SIMD support +* Added SDL_GetOriginalMemoryFunctions() +* Added SDL_GetDefaultAudioInfo() to get the name and format of the default audio device, currently implemented for PipeWire, PulseAudio, WASAPI, and DirectSound +* Added HIDAPI driver for the NVIDIA SHIELD controller (2017 model) to enable support for battery status and rumble +* Added support for opening audio devices with 3 or 5 channels (2.1, 4.1). All channel counts from Mono to 7.1 are now supported. +* Rewrote audio channel converters used by SDL_AudioCVT, based on the channel matrix coefficients used as the default for FAudio voices +* SDL log messages are no longer limited to 4K and can be any length +* Fixed a long-standing calling convention issue with dynapi affecting OpenWatcom or OS/2 builds + +Windows: +* Added initial support for building for Windows and Xbox with Microsoft's Game Development Kit (GDK), see docs/README-gdk.md for details +* Added a D3D12 renderer implementation and SDL_RenderGetD3D12Device() to retrieve the D3D12 device associated with it +* Added the hint SDL_HINT_WINDOWS_DPI_AWARENESS to set whether the application is DPI-aware. This hint must be set before initializing the video subsystem +* Added the hint SDL_HINT_WINDOWS_DPI_SCALING to control whether the SDL coordinates are in DPI-scaled points or pixels +* Added the hint SDL_HINT_DIRECTINPUT_ENABLED to control whether the DirectInput driver should be used +* Added support for SDL_GetAudioDeviceSpec to the DirectSound backend + +Linux: +* Support for XVidMode has been removed, mode changes are only supported using the XRandR extension +* Added the hint SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION to control whether to expose a set of emulated modes in addition to the native resolution modes available on Wayland +* Added the hint SDL_HINT_KMSDRM_DEVICE_INDEX to specify which KMSDRM device to use if the default is not desired +* Added the hint SDL_HINT_LINUX_DIGITAL_HATS to control whether to treat hats as digital rather than checking to see if they may be analog +* Added the hint SDL_HINT_LINUX_HAT_DEADZONES to control whether to use deadzones on analog hats + +macOS: +* Bumped minimum OS deployment version to macOS 10.9 +* Added SDL_GL_FLOATBUFFERS to allow Cocoa GL contexts to use EDR +* Added the hint SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH to control whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing. This hint defaults to blocking, which is the safer option on modern macOS. + + +--------------------------------------------------------------------------- +2.0.22: +--------------------------------------------------------------------------- + +General: +* Added SDL_RenderGetWindow() to get the window associated with a renderer +* Added floating point rectangle functions: + * SDL_PointInFRect() + * SDL_FRectEmpty() + * SDL_FRectEquals() + * SDL_FRectEqualsEpsilon() + * SDL_HasIntersectionF() + * SDL_IntersectFRect() + * SDL_UnionFRect() + * SDL_EncloseFPoints() + * SDL_IntersectFRectAndLine() +* Added SDL_IsTextInputShown() which returns whether the IME window is currently shown +* Added SDL_ClearComposition() to dismiss the composition window without disabling IME input +* Added SDL_TEXTEDITING_EXT event for handling long composition text, and a hint SDL_HINT_IME_SUPPORT_EXTENDED_TEXT to enable it +* Added the hint SDL_HINT_MOUSE_RELATIVE_MODE_CENTER to control whether the mouse should be constrained to the whole window or the center of the window when relative mode is enabled +* The mouse is now automatically captured when mouse buttons are pressed, and the hint SDL_HINT_MOUSE_AUTO_CAPTURE allows you to control this behavior +* Added the hint SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL to let SDL know that a foreign window will be used with OpenGL +* Added the hint SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN to let SDL know that a foreign window will be used with Vulkan +* Added the hint SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE to specify whether an SDL_QUIT event will be delivered when the last application window is closed +* Added the hint SDL_HINT_JOYSTICK_ROG_CHAKRAM to control whether ROG Chakram mice show up as joysticks + +Windows: +* Added support for SDL_BLENDOPERATION_MINIMUM and SDL_BLENDOPERATION_MAXIMUM to the D3D9 renderer + +Linux: +* Compiling with Wayland support requires libwayland-client version 1.18.0 or later +* Added the hint SDL_HINT_X11_WINDOW_TYPE to specify the _NET_WM_WINDOW_TYPE of SDL windows +* Added the hint SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR to allow using libdecor with compositors that support xdg-decoration + +Android: +* Added SDL_AndroidSendMessage() to send a custom command to the SDL java activity + + +--------------------------------------------------------------------------- +2.0.20: +--------------------------------------------------------------------------- + +General: +* SDL_RenderGeometryRaw() takes a pointer to SDL_Color, not int. You can cast color data in SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 on little endian systems) for this parameter. +* Improved accuracy of horizontal and vertical line drawing when using OpenGL or OpenGLES +* Added the hint SDL_HINT_RENDER_LINE_METHOD to control the method of line drawing used, to select speed, correctness, and compatibility. + +Windows: +* Fixed size of custom cursors + +Linux: +* Fixed hotplug controller detection, broken in 2.0.18 + + +--------------------------------------------------------------------------- +2.0.18: +--------------------------------------------------------------------------- + +General: +* The SDL wiki documentation and development headers are automatically kept in sync +* Each function has information about in which version of SDL it was introduced +* SDL-specific CMake options are now prefixed with 'SDL_'. Be sure to update your CMake build scripts accordingly! +* Added the hint SDL_HINT_APP_NAME to let SDL know the name of your application for various places it might show up in system information +* Added SDL_RenderGeometry() and SDL_RenderGeometryRaw() to allow rendering of arbitrary shapes using the SDL 2D render API +* Added SDL_SetTextureUserData() and SDL_GetTextureUserData() to associate application data with an SDL texture +* Added SDL_RenderWindowToLogical() and SDL_RenderLogicalToWindow() to convert between window coordinates and logical render coordinates +* Added SDL_RenderSetVSync() to change whether a renderer present is synchronized with vblank at runtime +* Added SDL_PremultiplyAlpha() to premultiply alpha on a block of SDL_PIXELFORMAT_ARGB8888 pixels +* Added a window event SDL_WINDOWEVENT_DISPLAY_CHANGED which is sent when a window changes what display it's centered on +* Added SDL_GetWindowICCProfile() to query a window's ICC profile, and a window event SDL_WINDOWEVENT_ICCPROF_CHANGED that is sent when it changes +* Added the hint SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY to allow EGL windows to be transparent instead of opaque +* SDL_WaitEvent() has been redesigned to use less CPU in most cases +* Added SDL_SetWindowMouseRect() and SDL_GetWindowMouseRect() to confine the mouse cursor to an area of a window +* You can now read precise mouse wheel motion using 'preciseX' and 'preciseY' event fields +* Added SDL_GameControllerHasRumble() and SDL_GameControllerHasRumbleTriggers() to query whether a game controller supports rumble +* Added SDL_JoystickHasRumble() and SDL_JoystickHasRumbleTriggers() to query whether a joystick supports rumble +* SDL's hidapi implementation is now available as a public API in SDL_hidapi.h + +Windows: +* Improved relative mouse motion over Windows Remote Desktop +* Added the hint SDL_HINT_IME_SHOW_UI to show native UI components instead of hiding them (defaults off) + +Windows/UWP: +* WGI is used instead of XInput for better controller support in UWP apps + +Linux: +* Added the hint SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME to set the activity that's displayed by the system when the screensaver is disabled +* Added the hint SDL_HINT_LINUX_JOYSTICK_CLASSIC to control whether /dev/input/js* or /dev/input/event* are used as joystick devices +* Added the hint SDL_HINT_JOYSTICK_DEVICE to allow the user to specify devices that will be opened in addition to the normal joystick detection +* Added SDL_LinuxSetThreadPriorityAndPolicy() for more control over a thread priority on Linux + +Android: +* Added support for audio output and capture using AAudio on Android 8.1 and newer +* Steam Controller support is disabled by default, and can be enabled by setting the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM to "1" before calling SDL_Init() + +Apple Arcade: +* Added SDL_GameControllerGetAppleSFSymbolsNameForButton() and SDL_GameControllerGetAppleSFSymbolsNameForAxis() to support Apple Arcade titles + +iOS: +* Added documentation that the UIApplicationSupportsIndirectInputEvents key must be set to true in your application's Info.plist in order to get real Bluetooth mouse events. +* Steam Controller support is disabled by default, and can be enabled by setting the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM to "1" before calling SDL_Init() + + +--------------------------------------------------------------------------- +2.0.16: +--------------------------------------------------------------------------- +General: +* Added SDL_FlashWindow() to get a user's attention +* Added SDL_GetAudioDeviceSpec() to get the preferred audio format of a device +* Added SDL_SetWindowAlwaysOnTop() to dynamically change the SDL_WINDOW_ALWAYS_ON_TOP flag for a window +* Added SDL_SetWindowKeyboardGrab() to support grabbing the keyboard independently of the mouse +* Added SDL_SoftStretchLinear() to do bilinear scaling between 32-bit software surfaces +* Added SDL_UpdateNVTexture() to update streaming NV12/21 textures +* Added SDL_GameControllerSendEffect() and SDL_JoystickSendEffect() to allow sending custom trigger effects to the DualSense controller +* Added SDL_GameControllerGetSensorDataRate() to get the sensor data rate for PlayStation and Nintendo Switch controllers +* Added support for the Amazon Luna game controller +* Added rumble support for the Google Stadia controller using the HIDAPI driver +* Added SDL_GameControllerType constants for the Amazon Luna and Google Stadia controllers +* Added analog rumble for Nintendo Switch Pro controllers using the HIDAPI driver +* Reduced CPU usage when using SDL_WaitEvent() and SDL_WaitEventTimeout() + +Windows: +* Added SDL_SetWindowsMessageHook() to set a function that is called for all Windows messages +* Added SDL_RenderGetD3D11Device() to get the D3D11 device used by the SDL renderer + +Linux: +* Greatly improved Wayland support +* Added support for audio output and capture using Pipewire +* Added the hint SDL_HINT_AUDIO_INCLUDE_MONITORS to control whether PulseAudio recording should include monitor devices +* Added the hint SDL_HINT_AUDIO_DEVICE_STREAM_ROLE to describe the role of your application for audio control panels + +Android: +* Added SDL_AndroidShowToast() to show a lightweight notification + +iOS: +* Added support for mouse relative mode on iOS 14.1 and newer +* Added support for the Xbox Series X controller + +tvOS: +* Added support for the Xbox Series X controller + + +--------------------------------------------------------------------------- +2.0.14: +--------------------------------------------------------------------------- +General: +* Added support for PS5 DualSense and Xbox Series X controllers to the HIDAPI controller driver +* Added game controller button constants for paddles and new buttons +* Added game controller functions to get additional information: + * SDL_GameControllerGetSerial() + * SDL_GameControllerHasAxis() + * SDL_GameControllerHasButton() + * SDL_GameControllerGetNumTouchpads() + * SDL_GameControllerGetNumTouchpadFingers() + * SDL_GameControllerGetTouchpadFinger() + * SDL_GameControllerHasSensor() + * SDL_GameControllerSetSensorEnabled() + * SDL_GameControllerIsSensorEnabled() + * SDL_GameControllerGetSensorData() + * SDL_GameControllerRumbleTriggers() + * SDL_GameControllerHasLED() + * SDL_GameControllerSetLED() +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_PS5 to control whether the HIDAPI driver for PS5 controllers should be used. +* Added joystick functions to get additional information: + * SDL_JoystickGetSerial() + * SDL_JoystickRumbleTriggers() + * SDL_JoystickHasLED() + * SDL_JoystickSetLED() +* Added an API to allow the application to create virtual joysticks: + * SDL_JoystickAttachVirtual() + * SDL_JoystickDetachVirtual() + * SDL_JoystickIsVirtual() + * SDL_JoystickSetVirtualAxis() + * SDL_JoystickSetVirtualButton() + * SDL_JoystickSetVirtualHat() +* Added SDL_LockSensors() and SDL_UnlockSensors() to guarantee exclusive access to the sensor list +* Added SDL_HAPTIC_STEERING_AXIS to play an effect on the steering wheel +* Added the hint SDL_HINT_MOUSE_RELATIVE_SCALING to control whether relative motion is scaled by the screen DPI or renderer logical size +* The default value for SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS is now false for better compatibility with modern window managers +* Added SDL_GetPreferredLocales() to get the application's current locale setting +* Added the hint SDL_HINT_PREFERRED_LOCALES to override your application's default locale setting +* Added SDL_OpenURL() to open a URL in the system's default browser +* Added SDL_HasSurfaceRLE() to tell whether a surface is currently using RLE encoding +* Added SDL_SIMDRealloc() to reallocate memory obtained from SDL_SIMDAlloc() +* Added SDL_GetErrorMsg() to get the last error in a thread-safe way +* Added SDL_crc32(), SDL_wcscasecmp(), SDL_wcsncasecmp(), SDL_trunc(), SDL_truncf() +* Added clearer names for RGB pixel formats, e.g. SDL_PIXELFORMAT_XRGB8888, SDL_PIXELFORMAT_XBGR8888, etc. + +Windows: +* Added the RAWINPUT controller driver to support more than 4 Xbox controllers simultaneously +* Added the hint SDL_HINT_JOYSTICK_RAWINPUT to control whether the RAWINPUT driver should be used +* Added the hint SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT to control whether XInput and WGI should be used to for complete controller functionality with the RAWINPUT driver. + +macOS: +* Added the SDL_WINDOW_METAL flag to specify that a window should be created with a Metal view +* Added SDL_Metal_GetLayer() to get the CAMetalLayer backing a Metal view +* Added SDL_Metal_GetDrawableSize() to get the size of a window's drawable, in pixels + +Linux: +* Added the hint SDL_HINT_AUDIO_DEVICE_APP_NAME to specify the name that shows up in PulseAudio for your application +* Added the hint SDL_HINT_AUDIO_DEVICE_STREAM_NAME to specify the name that shows up in PulseAudio associated with your audio stream +* Added the hint SDL_HINT_LINUX_JOYSTICK_DEADZONES to control whether HID defined dead zones should be respected on Linux +* Added the hint SDL_HINT_THREAD_PRIORITY_POLICY to specify the thread scheduler policy +* Added the hint SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL to allow time critical threads to use a realtime scheduling policy + +Android: +* Added SDL_AndroidRequestPermission() to request a specific system permission +* Added the hint SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO to control whether audio will pause when the application goes intot he background + +OS/2: +* Added support for OS/2, see docs/README-os2.md for details + +Emscripten (running in a web browser): +* Added the hint SDL_HINT_EMSCRIPTEN_ASYNCIFY to control whether SDL should call emscripten_sleep internally + + +--------------------------------------------------------------------------- +2.0.12: +--------------------------------------------------------------------------- + +General: +* Added SDL_GetTextureScaleMode() and SDL_SetTextureScaleMode() to get and set the scaling mode used for a texture +* Added SDL_LockTextureToSurface(), similar to SDL_LockTexture() but the locked area is exposed as a SDL surface. +* Added new blend mode, SDL_BLENDMODE_MUL, which does a modulate and blend operation +* Added the hint SDL_HINT_DISPLAY_USABLE_BOUNDS to override the results of SDL_GetDisplayUsableBounds() for display index 0. +* Added the window underneath the finger to the SDL_TouchFingerEvent +* Added SDL_GameControllerTypeForIndex(), SDL_GameControllerGetType() to return the type of a game controller (Xbox 360, Xbox One, PS3, PS4, or Nintendo Switch Pro) +* Added the hint SDL_HINT_GAMECONTROLLERTYPE to override the automatic game controller type detection +* Added SDL_JoystickFromPlayerIndex() and SDL_GameControllerFromPlayerIndex() to get the device associated with a player index +* Added SDL_JoystickSetPlayerIndex() and SDL_GameControllerSetPlayerIndex() to set the player index associated with a device +* Added the hint SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS to specify whether Nintendo Switch Pro controllers should use the buttons as labeled or swapped to match positional layout. The default is to use the buttons as labeled. +* Added support for Nintendo GameCube controllers to the HIDAPI driver, and a hint SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE to control whether this is used. +* Improved support for Xbox 360 and Xbox One controllers when using the HIDAPI driver +* Added support for many game controllers, including: + * 8BitDo FC30 Pro + * 8BitDo M30 GamePad + * BDA PS4 Fightpad + * HORI Fighting Commander + * Hyperkin Duke + * Hyperkin X91 + * MOGA XP5-A Plus + * NACON GC-400ES + * NVIDIA Controller v01.04 + * PDP Versus Fighting Pad + * Razer Raion Fightpad for PS4 + * Razer Serval + * Stadia Controller + * SteelSeries Stratus Duo + * Victrix Pro Fight Stick for PS4 + * Xbox One Elite Series 2 +* Fixed blocking game controller rumble calls when using the HIDAPI driver +* Added SDL_zeroa() macro to zero an array of elements +* Added SDL_HasARMSIMD() which returns true if the CPU has ARM SIMD (ARMv6+) features + +Windows: +* Fixed crash when using the release SDL DLL with applications built with gcc +* Fixed performance regression in event handling introduced in 2.0.10 +* Added support for SDL_SetThreadPriority() for UWP applications + +Linux: +* Added the hint SDL_HINT_VIDEO_X11_WINDOW_VISUALID to specify the visual chosen for new X11 windows +* Added the hint SDL_HINT_VIDEO_X11_FORCE_EGL to specify whether X11 should use GLX or EGL by default + +iOS / tvOS / macOS: +* Added SDL_Metal_CreateView() and SDL_Metal_DestroyView() to create CAMetalLayer-backed NSView/UIView and attach it to the specified window. + +iOS/ tvOS: +* Added support for Bluetooth Steam Controllers as game controllers + +tvOS: +* Fixed support for surround sound on Apple TV + +Android: +* Added SDL_GetAndroidSDKVersion() to return the API level of the current device +* Added support for audio capture using OpenSL-ES +* Added support for Bluetooth Steam Controllers as game controllers +* Fixed rare crashes when the app goes into the background or terminates + + +--------------------------------------------------------------------------- +2.0.10: +--------------------------------------------------------------------------- + +General: +* The SDL_RW* macros have been turned into functions that are available only in 2.0.10 and onward +* Added SDL_SIMDGetAlignment(), SDL_SIMDAlloc(), and SDL_SIMDFree(), to allocate memory aligned for SIMD operations for the current CPU +* Added SDL_RenderDrawPointF(), SDL_RenderDrawPointsF(), SDL_RenderDrawLineF(), SDL_RenderDrawLinesF(), SDL_RenderDrawRectF(), SDL_RenderDrawRectsF(), SDL_RenderFillRectF(), SDL_RenderFillRectsF(), SDL_RenderCopyF(), SDL_RenderCopyExF(), to allow floating point precision in the SDL rendering API. +* Added SDL_GetTouchDeviceType() to get the type of a touch device, which can be a touch screen or a trackpad in relative or absolute coordinate mode. +* The SDL rendering API now uses batched rendering by default, for improved performance +* Added SDL_RenderFlush() to force batched render commands to execute, if you're going to mix SDL rendering with native rendering +* Added the hint SDL_HINT_RENDER_BATCHING to control whether batching should be used for the rendering API. This defaults to "1" if you don't specify what rendering driver to use when creating the renderer. +* Added the hint SDL_HINT_EVENT_LOGGING to enable logging of SDL events for debugging purposes +* Added the hint SDL_HINT_GAMECONTROLLERCONFIG_FILE to specify a file that will be loaded at joystick initialization with game controller bindings +* Added the hint SDL_HINT_MOUSE_TOUCH_EVENTS to control whether SDL will synthesize touch events from mouse events +* Improved handling of malformed WAVE and BMP files, fixing potential security exploits + +Linux: +* Removed the Mir video driver in favor of Wayland + +iOS / tvOS: +* Added support for Xbox and PS4 wireless controllers in iOS 13 and tvOS 13 +* Added support for text input using Bluetooth keyboards + +Android: +* Added low latency audio using OpenSL ES +* Removed SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH (replaced by SDL_HINT_MOUSE_TOUCH_EVENTS and SDL_HINT_TOUCH_MOUSE_EVENTS) + SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH=1, should be replaced by setting both previous hints to 0. + SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH=0, should be replaced by setting both previous hints to 1. +* Added the hint SDL_HINT_ANDROID_BLOCK_ON_PAUSE to set whether the event loop will block itself when the app is paused. + + +--------------------------------------------------------------------------- +2.0.9: +--------------------------------------------------------------------------- + +General: +* Added a new sensor API, initialized by passing SDL_INIT_SENSOR to SDL_Init(), and defined in SDL_sensor.h +* Added an event SDL_SENSORUPDATE which is sent when a sensor is updated +* Added SDL_GetDisplayOrientation() to return the current display orientation +* Added an event SDL_DISPLAYEVENT which is sent when the display orientation changes +* Added HIDAPI joystick drivers for more consistent support for Xbox, PS4 and Nintendo Switch Pro controller support across platforms. (Thanks to Valve for contributing the PS4 and Nintendo Switch Pro controller support) +* Added support for many other popular game controllers +* Added SDL_JoystickGetDevicePlayerIndex(), SDL_JoystickGetPlayerIndex(), and SDL_GameControllerGetPlayerIndex() to get the player index for a controller. For XInput controllers this returns the XInput index for the controller. +* Added SDL_GameControllerRumble() and SDL_JoystickRumble() which allow simple rumble without using the haptics API +* Added SDL_GameControllerMappingForDeviceIndex() to get the mapping for a controller before it's opened +* Added the hint SDL_HINT_MOUSE_DOUBLE_CLICK_TIME to control the mouse double-click time +* Added the hint SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS to control the mouse double-click radius, in pixels +* Added SDL_HasColorKey() to return whether a surface has a colorkey active +* Added SDL_HasAVX512F() to return whether the CPU has AVX-512F features +* Added SDL_IsTablet() to return whether the application is running on a tablet +* Added SDL_THREAD_PRIORITY_TIME_CRITICAL for threads that must run at the highest priority + +Mac OS X: +* Fixed black screen at start on Mac OS X Mojave + +Linux: +* Added SDL_LinuxSetThreadPriority() to allow adjusting the thread priority of native threads using RealtimeKit if available. + +iOS: +* Fixed Asian IME input + +Android: +* Updated required Android SDK to API 26, to match Google's new App Store requirements +* Added support for wired USB Xbox, PS4, and Nintendo Switch Pro controllers +* Added support for relative mouse mode on Android 7.0 and newer (except where it's broken, on Chromebooks and when in DeX mode with Samsung Experience 9.0) +* Added support for custom mouse cursors on Android 7.0 and newer +* Added the hint SDL_HINT_ANDROID_TRAP_BACK_BUTTON to control whether the back button will back out of the app (the default) or be passed to the application as SDL_SCANCODE_AC_BACK +* Added SDL_AndroidBackButton() to trigger the Android system back button behavior when handling the back button in the application +* Added SDL_IsChromebook() to return whether the app is running in the Chromebook Android runtime +* Added SDL_IsDeXMode() to return whether the app is running while docked in the Samsung DeX + + +--------------------------------------------------------------------------- +2.0.8: +--------------------------------------------------------------------------- + +General: +* Added SDL_fmod() and SDL_log10() +* Each of the SDL math functions now has the corresponding float version +* Added SDL_SetYUVConversionMode() and SDL_GetYUVConversionMode() to control the formula used when converting to and from YUV colorspace. The options are JPEG, BT.601, and BT.709 + +Windows: +* Implemented WASAPI support on Windows UWP and removed the deprecated XAudio2 implementation +* Added resampling support on WASAPI on Windows 7 and above + +Windows UWP: +* Added SDL_WinRTGetDeviceFamily() to find out what type of device your application is running on + +Mac OS X: +* Added support for the Vulkan SDK for Mac: + https://www.lunarg.com/lunarg-releases-vulkan-sdk-1-0-69-0-for-mac/ +* Added support for OpenGL ES using ANGLE when it's available + +Mac OS X / iOS / tvOS: +* Added a Metal 2D render implementation +* Added SDL_RenderGetMetalLayer() and SDL_RenderGetMetalCommandEncoder() to insert your own drawing into SDL rendering when using the Metal implementation + +iOS: +* Added the hint SDL_HINT_IOS_HIDE_HOME_INDICATOR to control whether the home indicator bar on iPhone X should be hidden. This defaults to dimming the indicator for fullscreen applications and showing the indicator for windowed applications. + +iOS / Android: +* Added the hint SDL_HINT_RETURN_KEY_HIDES_IME to control whether the return key on the software keyboard should hide the keyboard or send a key event (the default) + +Android: +* SDL now supports building with Android Studio and Gradle by default, and the old Ant project is available in android-project-ant +* SDL now requires the API 19 SDK to build, but can still target devices down to API 14 (Android 4.0.1) +* Added SDL_IsAndroidTV() to tell whether the application is running on Android TV + +Android / tvOS: +* Added the hint SDL_HINT_TV_REMOTE_AS_JOYSTICK to control whether TV remotes should be listed as joystick devices (the default) or send keyboard events. + +Linux: +* Added the hint SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR to control whether the X server should skip the compositor for the SDL application. This defaults to "1" +* Added the hint SDL_HINT_VIDEO_DOUBLE_BUFFER to control whether the Raspberry Pi and KMSDRM video drivers should use double or triple buffering (the default) + + +--------------------------------------------------------------------------- +2.0.7: +--------------------------------------------------------------------------- + +General: +* Added audio stream conversion functions: + SDL_NewAudioStream + SDL_AudioStreamPut + SDL_AudioStreamGet + SDL_AudioStreamAvailable + SDL_AudioStreamFlush + SDL_AudioStreamClear + SDL_FreeAudioStream +* Added functions to query and set the SDL memory allocation functions: + SDL_GetMemoryFunctions() + SDL_SetMemoryFunctions() + SDL_GetNumAllocations() +* Added locking functions for multi-threaded access to the joystick and game controller APIs: + SDL_LockJoysticks() + SDL_UnlockJoysticks() +* The following functions are now thread-safe: + SDL_SetEventFilter() + SDL_GetEventFilter() + SDL_AddEventWatch() + SDL_DelEventWatch() + + +General: +--------------------------------------------------------------------------- +2.0.6: +--------------------------------------------------------------------------- + +General: +* Added cross-platform Vulkan graphics support in SDL_vulkan.h + SDL_Vulkan_LoadLibrary() + SDL_Vulkan_GetVkGetInstanceProcAddr() + SDL_Vulkan_GetInstanceExtensions() + SDL_Vulkan_CreateSurface() + SDL_Vulkan_GetDrawableSize() + SDL_Vulkan_UnloadLibrary() + This is all the platform-specific code you need to bring up Vulkan on all SDL platforms. You can look at an example in test/testvulkan.c +* Added SDL_ComposeCustomBlendMode() to create custom blend modes for 2D rendering +* Added SDL_HasNEON() which returns whether the CPU has NEON instruction support +* Added support for many game controllers, including the Nintendo Switch Pro Controller +* Added support for inverted axes and separate axis directions in game controller mappings +* Added functions to return information about a joystick before it's opened: + SDL_JoystickGetDeviceVendor() + SDL_JoystickGetDeviceProduct() + SDL_JoystickGetDeviceProductVersion() + SDL_JoystickGetDeviceType() + SDL_JoystickGetDeviceInstanceID() +* Added functions to return information about an open joystick: + SDL_JoystickGetVendor() + SDL_JoystickGetProduct() + SDL_JoystickGetProductVersion() + SDL_JoystickGetType() + SDL_JoystickGetAxisInitialState() +* Added functions to return information about an open game controller: + SDL_GameControllerGetVendor() + SDL_GameControllerGetProduct() + SDL_GameControllerGetProductVersion() +* Added SDL_GameControllerNumMappings() and SDL_GameControllerMappingForIndex() to be able to enumerate the built-in game controller mappings +* Added SDL_LoadFile() and SDL_LoadFile_RW() to load a file into memory +* Added SDL_DuplicateSurface() to make a copy of a surface +* Added an experimental JACK audio driver +* Implemented non-power-of-two audio resampling, optionally using libsamplerate to perform the resampling +* Added the hint SDL_HINT_AUDIO_RESAMPLING_MODE to control the quality of resampling +* Added the hint SDL_HINT_RENDER_LOGICAL_SIZE_MODE to control the scaling policy for SDL_RenderSetLogicalSize(): + "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen (the default) + "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen +* Added the hints SDL_HINT_MOUSE_NORMAL_SPEED_SCALE and SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE to scale the mouse speed when being read from raw mouse input +* Added the hint SDL_HINT_TOUCH_MOUSE_EVENTS to control whether SDL will synthesize mouse events from touch events + +Windows: +* The new default audio driver on Windows is WASAPI and supports hot-plugging devices and changing the default audio device +* The old XAudio2 audio driver is deprecated and will be removed in the next release +* Added hints SDL_HINT_WINDOWS_INTRESOURCE_ICON and SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL to specify a custom icon resource ID for SDL windows +* The hint SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING is now on by default for compatibility with .NET languages and various Windows debuggers +* Updated the GUID format for game controller mappings, older mappings will be automatically converted on load +* Implemented the SDL_WINDOW_ALWAYS_ON_TOP flag on Windows + +Linux: +* Added an experimental KMS/DRM video driver for embedded development + +iOS: +* Added a hint SDL_HINT_AUDIO_CATEGORY to control the audio category, determining whether the phone mute switch affects the audio + +--------------------------------------------------------------------------- +2.0.5: +--------------------------------------------------------------------------- + +General: +* Implemented audio capture support for some platforms +* Added SDL_DequeueAudio() to retrieve audio when buffer queuing is turned on for audio capture +* Added events for dragging and dropping text +* Added events for dragging and dropping multiple items +* By default the click raising a window will not be delivered to the SDL application. You can set the hint SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH to "1" to allow that click through to the window. +* Saving a surface with an alpha channel as a BMP will use a newer BMP format that supports alpha information. You can set the hint SDL_HINT_BMP_SAVE_LEGACY_FORMAT to "1" to use the old format. +* Added SDL_GetHintBoolean() to get the boolean value of a hint +* Added SDL_RenderSetIntegerScale() to set whether to smoothly scale or use integral multiples of the viewport size when scaling the rendering output +* Added SDL_CreateRGBSurfaceWithFormat() and SDL_CreateRGBSurfaceWithFormatFrom() to create an SDL surface with a specific pixel format +* Added SDL_GetDisplayUsableBounds() which returns the area usable for windows. For example, on Mac OS X, this subtracts the area occupied by the menu bar and dock. +* Added SDL_GetWindowBordersSize() which returns the size of the window's borders around the client area +* Added a window event SDL_WINDOWEVENT_HIT_TEST when a window had a hit test that wasn't SDL_HITTEST_NORMAL (e.g. in the title bar or window frame) +* Added SDL_SetWindowResizable() to change whether a window is resizable +* Added SDL_SetWindowOpacity() and SDL_GetWindowOpacity() to affect the window transparency +* Added SDL_SetWindowModalFor() to set a window as modal for another window +* Added support for AUDIO_U16LSB and AUDIO_U16MSB to SDL_MixAudioFormat() +* Fixed flipped images when reading back from target textures when using the OpenGL renderer +* Fixed texture color modulation with SDL_BLENDMODE_NONE when using the OpenGL renderer +* Fixed bug where the alpha value of colorkeys was ignored when blitting in some cases + +Windows: +* Added a hint SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING to prevent SDL from raising a debugger exception to name threads. This exception can cause problems with .NET applications when running under a debugger. +* The hint SDL_HINT_THREAD_STACK_SIZE is now supported on Windows +* Fixed XBox controller triggers automatically being pulled at startup +* The first icon from the executable is used as the default window icon at runtime +* Fixed SDL log messages being printed twice if SDL was built with C library support +* Reset dead keys when the SDL window loses focus, so dead keys pressed in SDL applications don't affect text input into other applications. + +Mac OS X: +* Fixed selecting the dummy video driver +* The caps lock key now generates a pressed event when pressed and a released event when released, instead of a press/release event pair when pressed. +* Fixed mouse wheel events on Mac OS X 10.12 +* The audio driver has been updated to use AVFoundation for better compatibility with newer versions of Mac OS X + +Linux: +* Added support for the Fcitx IME +* Added a window event SDL_WINDOWEVENT_TAKE_FOCUS when a window manager asks the SDL window whether it wants to take focus. +* Refresh rates are now rounded instead of truncated, e.g. 59.94 Hz is rounded up to 60 Hz instead of 59. +* Added initial support for touchscreens on Raspberry Pi + +OpenBSD: +* SDL_GetBasePath() is now implemented on OpenBSD + +iOS: +* Added support for dynamically loaded objects on iOS 8 and newer + +tvOS: +* Added support for Apple TV +* Added a hint SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION to control whether he Apple TV remote's joystick axes will automatically match the rotation of the remote. + +Android: +* Fixed SDL not resizing window when Android screen resolution changes +* Corrected the joystick Z axis reporting for the accelerometer + +Emscripten (running in a web browser): +* Many bug fixes and improvements + + +--------------------------------------------------------------------------- +2.0.4: +--------------------------------------------------------------------------- + +General: +* Added support for web applications using Emscripten, see docs/README-emscripten.md for more information +* Added support for web applications using Native Client (NaCl), see docs/README-nacl.md for more information +* Added an API to queue audio instead of using the audio callback: + SDL_QueueAudio(), SDL_GetQueuedAudioSize(), SDL_ClearQueuedAudio() +* Added events for audio device hot plug support: + SDL_AUDIODEVICEADDED, SDL_AUDIODEVICEREMOVED +* Added SDL_PointInRect() +* Added SDL_HasAVX2() to detect CPUs with AVX2 support +* Added SDL_SetWindowHitTest() to let apps treat parts of their SDL window like traditional window decorations (drag areas, resize areas) +* Added SDL_GetGrabbedWindow() to get the window that currently has input grab, if any +* Added SDL_RenderIsClipEnabled() to tell whether clipping is currently enabled in a renderer +* Added SDL_CaptureMouse() to capture the mouse to get events while the mouse is not in your window +* Added SDL_WarpMouseGlobal() to warp the mouse cursor in global screen space +* Added SDL_GetGlobalMouseState() to get the current mouse state outside of an SDL window +* Added a direction field to mouse wheel events to tell whether they are flipped (natural) or not +* Added GL_CONTEXT_RELEASE_BEHAVIOR GL attribute (maps to [WGL|GLX]_ARB_context_flush_control extension) +* Added EGL_KHR_create_context support to allow OpenGL ES version selection on some platforms +* Added NV12 and NV21 YUV texture support for OpenGL and OpenGL ES 2.0 renderers +* Added a Vivante video driver that is used on various SoC platforms +* Added an event SDL_RENDER_DEVICE_RESET that is sent from the D3D renderers when the D3D device is lost, and from Android's event loop when the GLES context had to be recreated +* Added a hint SDL_HINT_NO_SIGNAL_HANDLERS to disable SDL's built in signal handling +* Added a hint SDL_HINT_THREAD_STACK_SIZE to set the stack size of SDL's threads +* Added SDL_sqrtf(), SDL_tan(), and SDL_tanf() to the stdlib routines +* Improved support for WAV and BMP files with unusual chunks in them +* Renamed SDL_assert_data to SDL_AssertData and SDL_assert_state to SDL_AssertState +* Added a hint SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN to prevent window interaction while cursor is hidden +* Added SDL_GetDisplayDPI() to get the DPI information for a display +* Added SDL_JoystickCurrentPowerLevel() to get the battery level of a joystick +* Added SDL_JoystickFromInstanceID(), as a helper function, to get the SDL_Joystick* that an event is referring to. +* Added SDL_GameControllerFromInstanceID(), as a helper function, to get the SDL_GameController* that an event is referring to. + +Windows: +* Added support for Windows Phone 8.1 and Windows 10/UWP (Universal Windows Platform) +* Timer resolution is now 1 ms by default, adjustable with the SDL_HINT_TIMER_RESOLUTION hint +* SDLmain no longer depends on the C runtime, so you can use the same .lib in both Debug and Release builds +* Added SDL_SetWindowsMessageHook() to set a function to be called for every windows message before TranslateMessage() +* Added a hint SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP to control whether SDL_PumpEvents() processes the Windows message loop +* You can distinguish between real mouse and touch events by looking for SDL_TOUCH_MOUSEID in the mouse event "which" field +* SDL_SysWMinfo now contains the window HDC +* Added support for Unicode command line options +* Prevent beeping when Alt-key combos are pressed +* SDL_SetTextInputRect() re-positions the OS-rendered IME +* Added a hint SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 to prevent generating SDL_WINDOWEVENT_CLOSE events when Alt-F4 is pressed +* Added a hint SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING to use the old axis and button mapping for XInput devices (deprecated) + +Mac OS X: +* Implemented drag-and-drop support +* Improved joystick hot-plug detection +* The SDL_WINDOWEVENT_EXPOSED window event is triggered in the appropriate situations +* Fixed relative mouse mode when the application loses/regains focus +* Fixed bugs related to transitioning to and from Spaces-aware fullscreen-desktop mode +* Fixed the refresh rate of display modes +* SDL_SysWMInfo is now ARC-compatible +* Added a hint SDL_HINT_MAC_BACKGROUND_APP to prevent forcing the application to become a foreground process + +Linux: +* Enabled building with Mir and Wayland support by default. +* Added IBus IME support +* Added a hint SDL_HINT_IME_INTERNAL_EDITING to control whether IBus should handle text editing internally instead of sending SDL_TEXTEDITING events +* Added a hint SDL_HINT_VIDEO_X11_NET_WM_PING to allow disabling _NET_WM_PING protocol handling in SDL_CreateWindow() +* Added support for multiple audio devices when using Pulseaudio +* Fixed duplicate mouse events when using relative mouse motion + +iOS: +* Added support for iOS 8 +* The SDL_WINDOW_ALLOW_HIGHDPI window flag now enables high-dpi support, and SDL_GL_GetDrawableSize() or SDL_GetRendererOutputSize() gets the window resolution in pixels +* SDL_GetWindowSize() and display mode sizes are in the "DPI-independent points" / "screen coordinates" coordinate space rather than pixels (matches OS X behavior) +* Added native resolution support for the iPhone 6 Plus +* Added support for MFi game controllers +* Added support for the hint SDL_HINT_ACCELEROMETER_AS_JOYSTICK +* Added sRGB OpenGL ES context support on iOS 7+ +* Added support for SDL_DisableScreenSaver(), SDL_EnableScreenSaver() and the hint SDL_HINT_VIDEO_ALLOW_SCREENSAVER +* SDL_SysWMinfo now contains the OpenGL ES framebuffer and color renderbuffer objects used by the window's active GLES view +* Fixed various rotation and orientation issues +* Fixed memory leaks + +Android: +* Added a hint SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH to prevent mouse events from being registered as touch events +* Added hints SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION and SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION +* Added support for SDL_DisableScreenSaver(), SDL_EnableScreenSaver() and the hint SDL_HINT_VIDEO_ALLOW_SCREENSAVER +* Added support for SDL_ShowMessageBox() and SDL_ShowSimpleMessageBox() + +Raspberry Pi: +* Added support for the Raspberry Pi 2 + + +--------------------------------------------------------------------------- +2.0.3: +--------------------------------------------------------------------------- + +Mac OS X: +* Fixed creating an OpenGL context by default on Mac OS X 10.6 + + +--------------------------------------------------------------------------- +2.0.2: +--------------------------------------------------------------------------- +General: +* Added SDL_GL_ResetAttributes() to reset OpenGL attributes to default values +* Added an API to load a database of game controller mappings from a file: + SDL_GameControllerAddMappingsFromFile(), SDL_GameControllerAddMappingsFromRW() +* Added game controller mappings for the PS4 and OUYA controllers +* Added SDL_GetDefaultAssertionHandler() and SDL_GetAssertionHandler() +* Added SDL_DetachThread() +* Added SDL_HasAVX() to determine if the CPU has AVX features +* Added SDL_vsscanf(), SDL_acos(), and SDL_asin() to the stdlib routines +* EGL can now create/manage OpenGL and OpenGL ES 1.x/2.x contexts, and share + them using SDL_GL_SHARE_WITH_CURRENT_CONTEXT +* Added a field "clicks" to the mouse button event which records whether the event is a single click, double click, etc. +* The screensaver is now disabled by default, and there is a hint SDL_HINT_VIDEO_ALLOW_SCREENSAVER that can change that behavior. +* Added a hint SDL_HINT_MOUSE_RELATIVE_MODE_WARP to specify whether mouse relative mode should be emulated using mouse warping. +* testgl2 does not need to link with libGL anymore +* Added testgles2 test program to demonstrate working with OpenGL ES 2.0 +* Added controllermap test program to visually map a game controller + +Windows: +* Support for OpenGL ES 2.x contexts using either WGL or EGL (natively via + the driver or emulated through ANGLE) +* Added a hint SDL_HINT_VIDEO_WIN_D3DCOMPILER to specify which D3D shader compiler to use for OpenGL ES 2 support through ANGLE +* Added a hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that is useful when creating multiple windows that should share the same OpenGL context. +* Added an event SDL_RENDER_TARGETS_RESET that is sent when D3D9 render targets are reset after the device has been restored. + +Mac OS X: +* Added a hint SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK to control whether Ctrl+click should be treated as a right click on Mac OS X. This is off by default. + +Linux: +* Fixed fullscreen and focused behavior when receiving NotifyGrab events +* Added experimental Wayland and Mir support, disabled by default + +Android: +* Joystick support (minimum SDK version required to build SDL is now 12, + the required runtime version remains at 10, but on such devices joystick + support won't be available). +* Hotplugging support for joysticks +* Added a hint SDL_HINT_ACCELEROMETER_AS_JOYSTICK to control whether the accelerometer should be listed as a 3 axis joystick, which it will by default. + + +--------------------------------------------------------------------------- +2.0.1: +--------------------------------------------------------------------------- + +General: +* Added an API to get common filesystem paths in SDL_filesystem.h: + SDL_GetBasePath(), SDL_GetPrefPath() +* Added an API to do optimized YV12 and IYUV texture updates: + SDL_UpdateYUVTexture() +* Added an API to get the amount of RAM on the system: + SDL_GetSystemRAM() +* Added a macro to perform timestamp comparisons with SDL_GetTicks(): + SDL_TICKS_PASSED() +* Dramatically improved OpenGL ES 2.0 rendering performance +* Added OpenGL attribute SDL_GL_FRAMEBUFFER_SRGB_CAPABLE + +Windows: +* Created a static library configuration for the Visual Studio 2010 project +* Added a hint to create the Direct3D device with support for multi-threading: + SDL_HINT_RENDER_DIRECT3D_THREADSAFE +* Added a function to get the D3D9 adapter index for a display: + SDL_Direct3D9GetAdapterIndex() +* Added a function to get the D3D9 device for a D3D9 renderer: + SDL_RenderGetD3D9Device() +* Fixed building SDL with the mingw32 toolchain (mingw-w64 is preferred) +* Fixed crash when using two XInput controllers at the same time +* Fixed detecting a mixture of XInput and DirectInput controllers +* Fixed clearing a D3D render target larger than the window +* Improved support for format specifiers in SDL_snprintf() + +Mac OS X: +* Added support for retina displays: + Create your window with the SDL_WINDOW_ALLOW_HIGHDPI flag, and then use SDL_GL_GetDrawableSize() to find the actual drawable size. You are responsible for scaling mouse and drawing coordinates appropriately. +* Fixed mouse warping in fullscreen mode +* Right mouse click is emulated by holding the Ctrl key while left clicking + +Linux: +* Fixed float audio support with the PulseAudio driver +* Fixed missing line endpoints in the OpenGL renderer on some drivers +* X11 symbols are no longer defined to avoid collisions when linking statically + +iOS: +* Fixed status bar visibility on iOS 7 +* Flipped the accelerometer Y axis to match expected values + +Android: +IMPORTANT: You MUST get the updated SDLActivity.java to match C code +* Moved EGL initialization to native code +* Fixed the accelerometer axis rotation relative to the device rotation +* Fixed race conditions when handling the EGL context on pause/resume +* Touch devices are available for enumeration immediately after init + +Raspberry Pi: +* Added support for the Raspberry Pi, see README-raspberrypi.txt for details diff --git a/Windows/SDL2/bin/sdl2-config b/Windows/SDL2/bin/sdl2-config new file mode 100755 index 0000000..085ff64 --- /dev/null +++ b/Windows/SDL2/bin/sdl2-config @@ -0,0 +1,56 @@ +#!/bin/sh + +prefix=/opt/cross_sdl2 +exec_prefix=${prefix} +exec_prefix_set=no +lib_suffix= +usage="\ +Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--lib-suffix=SUFFIX] [--libs]" + +if test $# -eq 0; then + echo "${usage}" 1>&2 + exit 1 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo $exec_prefix + ;; + --lib-suffix=*) + lib_suffix=$optarg + ;; + --version) + echo 2.32.8 + ;; + --cflags) + echo -I${prefix}/include -Dmain=SDL_main + ;; + --libs) + echo -L${exec_prefix}/lib${lib_suffix} -lmingw32 -lSDL2main -lSDL2 -mwindows + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift +done diff --git a/Windows/SDL2/include/SDL.h b/Windows/SDL2/include/SDL.h new file mode 100644 index 0000000..0fe0713 --- /dev/null +++ b/Windows/SDL2/include/SDL.h @@ -0,0 +1,234 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + +#ifndef SDL_h_ +#define SDL_h_ + +#include "SDL_main.h" +#include "SDL_stdinc.h" +#include "SDL_assert.h" +#include "SDL_atomic.h" +#include "SDL_audio.h" +#include "SDL_clipboard.h" +#include "SDL_cpuinfo.h" +#include "SDL_endian.h" +#include "SDL_error.h" +#include "SDL_events.h" +#include "SDL_filesystem.h" +#include "SDL_gamecontroller.h" +#include "SDL_guid.h" +#include "SDL_haptic.h" +#include "SDL_hidapi.h" +#include "SDL_hints.h" +#include "SDL_joystick.h" +#include "SDL_loadso.h" +#include "SDL_log.h" +#include "SDL_messagebox.h" +#include "SDL_metal.h" +#include "SDL_mutex.h" +#include "SDL_power.h" +#include "SDL_render.h" +#include "SDL_rwops.h" +#include "SDL_sensor.h" +#include "SDL_shape.h" +#include "SDL_system.h" +#include "SDL_thread.h" +#include "SDL_timer.h" +#include "SDL_version.h" +#include "SDL_video.h" +#include "SDL_locale.h" +#include "SDL_misc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* WIKI CATEGORY: Init */ + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_assert.h b/Windows/SDL2/include/SDL_assert.h new file mode 100644 index 0000000..fea3f90 --- /dev/null +++ b/Windows/SDL2/include/SDL_assert.h @@ -0,0 +1,324 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(_WIN32) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__arm64__) || defined(__aarch64__)) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #0xF000\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion. + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler(). + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler. + * \param userdata a pointer that is passed to `handler`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler(). + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_atomic.h b/Windows/SDL2/include/SDL_atomic.h new file mode 100644 index 0000000..226ec7c --- /dev/null +++ b/Windows/SDL2/include/SDL_atomic.h @@ -0,0 +1,408 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryAtomic + * + * Atomic operations. + * + * IMPORTANT: If you are not an expert in concurrent lockless programming, you + * should not be using any functions in this file. You should be protecting + * your data structures with full mutexes instead. + * + * ***Seriously, here be dragons!*** + * + * You can find out a little more about lockless programming and the subtle + * issues that can arise here: + * https://learn.microsoft.com/en-us/windows/win32/dxtecharts/lockless-programming + * + * There's also lots of good information here: + * + * - https://www.1024cores.net/home/lock-free-algorithms + * - https://preshing.com/ + * + * These operations may or may not actually be implemented using processor + * specific atomic operations. When possible they are implemented as true + * processor specific atomic operations. When that is not possible the are + * implemented using locks that *do* use the available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include "SDL_stdinc.h" +#include "SDL_platform.h" + +#include "begin_code.h" + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable. + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * A type representing an atomic integer value. + * + * It is a struct so people don't accidentally use numeric operations on it. + */ +typedef struct SDL_atomic_t { + int value; +} SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified. + * \param oldval the old value. + * \param newval the new value. + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified. + * \param v the desired value. + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable. + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified. + * \param v the desired value to add. + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer. + * \param oldval the old pointer value. + * \param newval the new pointer value. + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer. + * \param v the desired pointer value. + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer. + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include "close_code.h" + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_audio.h b/Windows/SDL2/include/SDL_audio.h new file mode 100644 index 0000000..cb76e93 --- /dev/null +++ b/Windows/SDL2/include/SDL_audio.h @@ -0,0 +1,1502 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * # CategoryAudio + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_endian.h" +#include "SDL_mutex.h" +#include "SDL_thread.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * ``` + * ++-----------------------sample is signed if set + * || + * || ++-----------sample is bigendian if set + * || || + * || || ++---sample is float if set + * || || || + * || || || +---sample bit size---+ + * || || || | | + * 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + * ``` + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in the + * SDL_AudioSpec structure. + * \param stream A pointer to the audio data buffer. + * \param len Length of **stream** in bytes. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * + * ``` + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + * ``` + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, one + * of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1. + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy SDL + * audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both for + * backwards compatibility and when you don't care about multiple, specific, + * or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices. + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1. + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1. + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 4096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback. + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information. + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information. + * \param allowed_changes 0, or one or more flags OR'd together. + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice(). + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice(). + * \param pause_on non-zero to pause, 0 to unpause. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data. + * \param freesrc If non-zero, SDL will _always_ free the data source. + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details. + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes. + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information. + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat. + * \param src_channels the number of channels in the source. + * \param src_rate the frequency (sample-frames-per-second) of the source. + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat. + * \param dst_channels the number of channels in the destination. + * \param dst_rate the frequency (sample-frames-per-second) of the + * destination. + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio. + * \param src_channels The number of channels of the source audio. + * \param src_rate The sampling rate of the source audio. + * \param dst_format The format of the desired audio output. + * \param dst_channels The number of channels of the desired audio output. + * \param dst_rate The sampling rate of the desired audio output. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to. + * \param buf A pointer to the audio data to add. + * \param len The number of bytes to write to the stream. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from. + * \param buf A buffer to fill with audio data. + * \param len The maximum number of bytes to fill. + * \returns the number of bytes read from the stream, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +/** + * Maximum volume allowed in calls to SDL_MixAudio and SDL_MixAudioFormat. + */ +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio. + * \param src the source audio buffer to be mixed. + * \param len the length of the audio buffer in bytes. + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio. + * \param src the source audio buffer to be mixed. + * \param format the SDL_AudioFormat structure representing the desired audio + * format. + * \param len the length of the audio buffer in bytes. + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio. + * \param data the data to queue to the device for later playback. + * \param len the number of bytes (not samples!) to which `data` points. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio. + * \param data a pointer into where audio data should be copied. + * \param len the number of bytes (not samples!) to which (data) points. + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size. + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_bits.h b/Windows/SDL2/include/SDL_bits.h new file mode 100644 index 0000000..747f556 --- /dev/null +++ b/Windows/SDL2/include/SDL_bits.h @@ -0,0 +1,132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryBits + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +/** + * Use this function to get the index of the most significant (set) bit in a + * + * \param x the number to find the MSB of. + * \returns the index of the most significant bit of x, or -1 if x is 0. + */ +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_blendmode.h b/Windows/SDL2/include/SDL_blendmode.h new file mode 100644 index 0000000..c0c6811 --- /dev/null +++ b/Windows/SDL2/include/SDL_blendmode.h @@ -0,0 +1,199 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryBlendmode + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum SDL_BlendMode +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * The blend operation used when combining source and destination pixel + * components + */ +typedef enum SDL_BlendOperation +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * The normalized factor used to multiply pixel components + */ +typedef enum SDL_BlendFactor +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels. + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels. + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels. + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels. + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels. + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels. + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_clipboard.h b/Windows/SDL2/include/SDL_clipboard.h new file mode 100644 index 0000000..2ae16a1 --- /dev/null +++ b/Windows/SDL2/include/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryClipboard + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_config.h b/Windows/SDL2/include/SDL_config.h new file mode 100644 index 0000000..eabd78b --- /dev/null +++ b/Windows/SDL2/include/SDL_config.h @@ -0,0 +1,59 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include "SDL_platform.h" + +/* WIKI CATEGORY: - */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include "SDL_config_windows.h" +#elif defined(__WINRT__) +#include "SDL_config_winrt.h" +#elif defined(__WINGDK__) +#include "SDL_config_wingdk.h" +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include "SDL_config_xbox.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__IPHONEOS__) +#include "SDL_config_iphoneos.h" +#elif defined(__ANDROID__) +#include "SDL_config_android.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" +#elif defined(__EMSCRIPTEN__) +#include "SDL_config_emscripten.h" +#elif defined(__NGAGE__) +#include "SDL_config_ngage.h" +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include "SDL_config_minimal.h" +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/Windows/SDL2/include/SDL_config_windows.h b/Windows/SDL2/include/SDL_config_windows.h new file mode 100644 index 0000000..77d2d74 --- /dev/null +++ b/Windows/SDL2/include/SDL_config_windows.h @@ -0,0 +1,333 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_windows_h_ +#define SDL_config_windows_h_ +#define SDL_config_h_ + +#include "SDL_platform.h" + +/* winsdkver.h defines _WIN32_MAXVER for SDK version detection. It is present since at least the Windows 7 SDK, + * but out of caution we'll only use it if the compiler supports __has_include() to confirm its presence. + * If your compiler doesn't support __has_include() but you have winsdkver.h, define HAVE_WINSDKVER_H. */ +#if !defined(HAVE_WINSDKVER_H) && defined(__has_include) +#if __has_include() +#define HAVE_WINSDKVER_H 1 +#endif +#endif + +#ifdef HAVE_WINSDKVER_H +#include +#endif + +/* sdkddkver.h defines more specific SDK version numbers. This is needed because older versions of the + * Windows 10 SDK have broken declarations for the C API for DirectX 12. */ +#if !defined(HAVE_SDKDDKVER_H) && defined(__has_include) +#if __has_include() +#define HAVE_SDKDDKVER_H 1 +#endif +#endif + +#ifdef HAVE_SDKDDKVER_H +#include +#endif + +/* This is a set of defines to configure the SDL features */ + +#if !defined(HAVE_STDINT_H) && !defined(_STDINT_H_) +/* Most everything except Visual Studio 2008 and earlier has stdint.h now */ +#if defined(_MSC_VER) && (_MSC_VER < 1600) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +#else +#define HAVE_STDINT_H 1 +#endif /* Visual Studio 2008 */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +#ifdef __clang__ +# define HAVE_GCC_ATOMICS 1 +#endif + +#define HAVE_DDRAW_H 1 +#define HAVE_DINPUT_H 1 +#define HAVE_DSOUND_H 1 +#ifndef __WATCOMC__ +#define HAVE_DXGI_H 1 +#define HAVE_XINPUT_H 1 +#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0A00 /* Windows 10 SDK */ +#define HAVE_WINDOWS_GAMING_INPUT_H 1 +#endif +#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0602 /* Windows 8 SDK */ +#define HAVE_D3D11_H 1 +#define HAVE_ROAPI_H 1 +#endif +#if defined(__has_include) +#if __has_include() && __has_include() +#define HAVE_D3D12_H 1 +#endif +#endif +#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0603 /* Windows 8.1 SDK */ +#define HAVE_SHELLSCALINGAPI_H 1 +#endif +#define HAVE_MMDEVICEAPI_H 1 +#define HAVE_AUDIOCLIENT_H 1 +#define HAVE_TPCSHRD_H 1 +#define HAVE_SENSORSAPI_H 1 +#endif +#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64)) && (defined(_MSC_VER) && _MSC_VER >= 1600) +#define HAVE_IMMINTRIN_H 1 +#elif defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#ifdef HAVE_LIBC +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +/* OpenWatcom requires specific calling conventions for qsort and bsearch */ +#ifndef __WATCOMC__ +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#endif +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +/* These functions have security warnings, so we won't use them */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +/* #undef HAVE_STRTOK_R */ +/* These functions have security warnings, so we won't use them */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__ULTOA */ +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE__WCSICMP 1 +#define HAVE__WCSNICMP 1 +#define HAVE__WCSDUP 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COS 1 +#define HAVE_EXP 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_FMOD 1 +#define HAVE_LOG 1 +#define HAVE_LOG10 1 +#define HAVE_POW 1 +#define HAVE_SIN 1 +#define HAVE_SQRT 1 +#define HAVE_TAN 1 +#ifndef __WATCOMC__ +#define HAVE_ACOSF 1 +#define HAVE_ASINF 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEILF 1 +#define HAVE__COPYSIGN 1 +#define HAVE_COSF 1 +#define HAVE_EXPF 1 +#define HAVE_FABSF 1 +#define HAVE_FLOORF 1 +#define HAVE_FMODF 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10F 1 +#define HAVE_POWF 1 +#define HAVE_SINF 1 +#define HAVE_SQRTF 1 +#define HAVE_TANF 1 +#endif +#if defined(_MSC_VER) +/* These functions were added with the VC++ 2013 C runtime library */ +#if _MSC_VER >= 1800 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_VSSCANF 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#endif +/* This function is available with at least the VC++ 2008 C runtime library */ +#if _MSC_VER >= 1400 +#define HAVE__FSEEKI64 1 +#endif +#ifdef _USE_MATH_DEFINES +#define HAVE_M_PI 1 +#endif +#elif defined(__WATCOMC__) +#define HAVE__FSEEKI64 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_VSSCANF 1 +#define HAVE_ROUND 1 +#define HAVE_SCALBN 1 +#define HAVE_TRUNC 1 +#else +#define HAVE_M_PI 1 +#endif +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +/* Enable various audio drivers */ +#if defined(HAVE_MMDEVICEAPI_H) && defined(HAVE_AUDIOCLIENT_H) +#define SDL_AUDIO_DRIVER_WASAPI 1 +#endif +#define SDL_AUDIO_DRIVER_DSOUND 1 +#define SDL_AUDIO_DRIVER_WINMM 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_DINPUT 1 +#define SDL_JOYSTICK_HIDAPI 1 +#ifndef __WINRT__ +#define SDL_JOYSTICK_RAWINPUT 1 +#endif +#define SDL_JOYSTICK_VIRTUAL 1 +#ifdef HAVE_WINDOWS_GAMING_INPUT_H +#define SDL_JOYSTICK_WGI 1 +#endif +#define SDL_JOYSTICK_XINPUT 1 +#define SDL_HAPTIC_DINPUT 1 +#define SDL_HAPTIC_XINPUT 1 + +/* Enable the sensor driver */ +#ifdef HAVE_SENSORSAPI_H +#define SDL_SENSOR_WINDOWS 1 +#else +#define SDL_SENSOR_DUMMY 1 +#endif + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_WINDOWS 1 + +/* Enable various threading systems */ +#define SDL_THREAD_GENERIC_COND_SUFFIX 1 +#define SDL_THREAD_WINDOWS 1 + +/* Enable various timer systems */ +#define SDL_TIMER_WINDOWS 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_WINDOWS 1 + +#ifndef SDL_VIDEO_RENDER_D3D +#define SDL_VIDEO_RENDER_D3D 1 +#endif +#if !defined(SDL_VIDEO_RENDER_D3D11) && defined(HAVE_D3D11_H) +#define SDL_VIDEO_RENDER_D3D11 1 +#endif +#if !defined(SDL_VIDEO_RENDER_D3D12) && defined(HAVE_D3D12_H) +#define SDL_VIDEO_RENDER_D3D12 1 +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_WGL +#define SDL_VIDEO_OPENGL_WGL 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif + +/* Enable Vulkan support */ +#define SDL_VIDEO_VULKAN 1 + +/* Enable system power support */ +#define SDL_POWER_WINDOWS 1 + +/* Enable filesystem support */ +#define SDL_FILESYSTEM_WINDOWS 1 + +#endif /* SDL_config_windows_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_cpuinfo.h b/Windows/SDL2/include/SDL_cpuinfo.h new file mode 100644 index 0000000..696a03b --- /dev/null +++ b/Windows/SDL2/include/SDL_cpuinfo.h @@ -0,0 +1,603 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: CPUInfo */ + +/** + * # CategoryCPUInfo + * + * CPU feature detection for SDL. + * + * These functions are largely concerned with reporting if the system has + * access to various SIMD instruction sets, but also has other important info + * to share, such as number of logical CPU cores. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include "SDL_stdinc.h" + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +/* +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +*/ +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) && \ + (defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_egl.h b/Windows/SDL2/include/SDL_egl.h new file mode 100644 index 0000000..31290ec --- /dev/null +++ b/Windows/SDL2/include/SDL_egl.h @@ -0,0 +1,2351 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + * This is a simple file to encapsulate the EGL API headers. + */ + +#if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#if defined(__vita__) || defined(__psp2__) +#include +#endif + +#include +#include + +#else /* _MSC_VER */ + +/* EGL headers for Visual Studio */ + +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ + + +#ifndef __eglplatform_h_ +#define __eglplatform_h_ + +/* +** Copyright 2007-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for egl.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by filing an issue or pull request on the public Khronos EGL Registry, at + * https://www.github.com/KhronosGroup/EGL-Registry/ + */ + +/*#include */ + +/* Macros used in EGL function prototype declarations. + * + * EGL functions should be prototyped as: + * + * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); + * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); + * + * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h + */ + +#ifndef EGLAPI +#define EGLAPI KHRONOS_APICALL +#endif + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY KHRONOS_APIENTRY +#endif +#define EGLAPIENTRYP EGLAPIENTRY* + +/* The types NativeDisplayType, NativeWindowType, and NativePixmapType + * are aliases of window-system-dependent types, such as X Display * or + * Windows Device Context. They must be defined in platform-specific + * code below. The EGL-prefixed versions of Native*Type are the same + * types, renamed in EGL 1.3 so all types in the API start with "EGL". + * + * Khronos STRONGLY RECOMMENDS that you use the default definitions + * provided below, since these changes affect both binary and source + * portability of applications using EGL running on different EGL + * implementations. + */ + +#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES) + +typedef void *EGLNativeDisplayType; +typedef void *EGLNativePixmapType; +typedef void *EGLNativeWindowType; + +#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include + +typedef HDC EGLNativeDisplayType; +typedef HBITMAP EGLNativePixmapType; +typedef HWND EGLNativeWindowType; + +#elif defined(__EMSCRIPTEN__) + +typedef int EGLNativeDisplayType; +typedef int EGLNativePixmapType; +typedef int EGLNativeWindowType; + +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ + +typedef int EGLNativeDisplayType; +typedef void *EGLNativePixmapType; +typedef void *EGLNativeWindowType; + +#elif defined(WL_EGL_PLATFORM) + +typedef struct wl_display *EGLNativeDisplayType; +typedef struct wl_egl_pixmap *EGLNativePixmapType; +typedef struct wl_egl_window *EGLNativeWindowType; + +#elif defined(__GBM__) + +typedef struct gbm_device *EGLNativeDisplayType; +typedef struct gbm_bo *EGLNativePixmapType; +typedef void *EGLNativeWindowType; + +#elif defined(__ANDROID__) || defined(ANDROID) + +struct ANativeWindow; +struct egl_native_pixmap_t; + +typedef void* EGLNativeDisplayType; +typedef struct egl_native_pixmap_t* EGLNativePixmapType; +typedef struct ANativeWindow* EGLNativeWindowType; + +#elif defined(USE_OZONE) + +typedef intptr_t EGLNativeDisplayType; +typedef intptr_t EGLNativePixmapType; +typedef intptr_t EGLNativeWindowType; + +#elif defined(USE_X11) + +/* X11 (tentative) */ +#include +#include + +typedef Display *EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; + +#elif defined(__unix__) + +typedef void *EGLNativeDisplayType; +typedef khronos_uintptr_t EGLNativePixmapType; +typedef khronos_uintptr_t EGLNativeWindowType; + +#elif defined(__APPLE__) + +typedef int EGLNativeDisplayType; +typedef void *EGLNativePixmapType; +typedef void *EGLNativeWindowType; + +#elif defined(__HAIKU__) + +#include + +typedef void *EGLNativeDisplayType; +typedef khronos_uintptr_t EGLNativePixmapType; +typedef khronos_uintptr_t EGLNativeWindowType; + +#elif defined(__Fuchsia__) + +typedef void *EGLNativeDisplayType; +typedef khronos_uintptr_t EGLNativePixmapType; +typedef khronos_uintptr_t EGLNativeWindowType; + +#else +#error "Platform not recognized" +#endif + +/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ +typedef EGLNativeDisplayType NativeDisplayType; +typedef EGLNativePixmapType NativePixmapType; +typedef EGLNativeWindowType NativeWindowType; + + +/* Define EGLint. This must be a signed integral type large enough to contain + * all legal attribute names and values passed into and out of EGL, whether + * their type is boolean, bitmask, enumerant (symbolic constant), integer, + * handle, or other. While in general a 32-bit integer will suffice, if + * handles are 64 bit types, then EGLint should be defined as a signed 64-bit + * integer type. + */ +typedef khronos_int32_t EGLint; + + +/* C++ / C typecast macros for special EGL handle values */ +#if defined(__cplusplus) +#define EGL_CAST(type, value) (static_cast(value)) +#else +#define EGL_CAST(type, value) ((type) (value)) +#endif + +#endif /* __eglplatform_h */ + + +#ifndef __egl_h_ +#define __egl_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +** +** This header is generated from the Khronos EGL XML API Registry. +** The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** http://www.khronos.org/registry/egl +** +** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $ +*/ + +/*#include */ + +#ifndef EGL_EGL_PROTOTYPES +#define EGL_EGL_PROTOTYPES 1 +#endif + +/* Generated on date 20220525 */ + +/* Generated C header for: + * API: egl + * Versions considered: .* + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef EGL_VERSION_1_0 +#define EGL_VERSION_1_0 1 +typedef unsigned int EGLBoolean; +typedef void *EGLDisplay; +/*#include */ +/*#include */ +typedef void *EGLConfig; +typedef void *EGLSurface; +typedef void *EGLContext; +typedef void (*__eglMustCastToProperFunctionPointerType)(void); +#define EGL_ALPHA_SIZE 0x3021 +#define EGL_BAD_ACCESS 0x3002 +#define EGL_BAD_ALLOC 0x3003 +#define EGL_BAD_ATTRIBUTE 0x3004 +#define EGL_BAD_CONFIG 0x3005 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_MATCH 0x3009 +#define EGL_BAD_NATIVE_PIXMAP 0x300A +#define EGL_BAD_NATIVE_WINDOW 0x300B +#define EGL_BAD_PARAMETER 0x300C +#define EGL_BAD_SURFACE 0x300D +#define EGL_BLUE_SIZE 0x3022 +#define EGL_BUFFER_SIZE 0x3020 +#define EGL_CONFIG_CAVEAT 0x3027 +#define EGL_CONFIG_ID 0x3028 +#define EGL_CORE_NATIVE_ENGINE 0x305B +#define EGL_DEPTH_SIZE 0x3025 +#define EGL_DONT_CARE EGL_CAST(EGLint,-1) +#define EGL_DRAW 0x3059 +#define EGL_EXTENSIONS 0x3055 +#define EGL_FALSE 0 +#define EGL_GREEN_SIZE 0x3023 +#define EGL_HEIGHT 0x3056 +#define EGL_LARGEST_PBUFFER 0x3058 +#define EGL_LEVEL 0x3029 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A +#define EGL_MAX_PBUFFER_PIXELS 0x302B +#define EGL_MAX_PBUFFER_WIDTH 0x302C +#define EGL_NATIVE_RENDERABLE 0x302D +#define EGL_NATIVE_VISUAL_ID 0x302E +#define EGL_NATIVE_VISUAL_TYPE 0x302F +#define EGL_NONE 0x3038 +#define EGL_NON_CONFORMANT_CONFIG 0x3051 +#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0) +#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0) +#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0) +#define EGL_PBUFFER_BIT 0x0001 +#define EGL_PIXMAP_BIT 0x0002 +#define EGL_READ 0x305A +#define EGL_RED_SIZE 0x3024 +#define EGL_SAMPLES 0x3031 +#define EGL_SAMPLE_BUFFERS 0x3032 +#define EGL_SLOW_CONFIG 0x3050 +#define EGL_STENCIL_SIZE 0x3026 +#define EGL_SUCCESS 0x3000 +#define EGL_SURFACE_TYPE 0x3033 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 +#define EGL_TRANSPARENT_RED_VALUE 0x3037 +#define EGL_TRANSPARENT_RGB 0x3052 +#define EGL_TRANSPARENT_TYPE 0x3034 +#define EGL_TRUE 1 +#define EGL_VENDOR 0x3053 +#define EGL_VERSION 0x3054 +#define EGL_WIDTH 0x3057 +#define EGL_WINDOW_BIT 0x0004 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); +typedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); +typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void); +typedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw); +typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id); +typedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void); +typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); +typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine); +#if EGL_EGL_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); +EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); +EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void); +EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw); +EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id); +EGLAPI EGLint EGLAPIENTRY eglGetError (void); +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname); +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor); +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); +EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name); +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy); +EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void); +EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine); +#endif +#endif /* EGL_VERSION_1_0 */ + +#ifndef EGL_VERSION_1_1 +#define EGL_VERSION_1_1 1 +#define EGL_BACK_BUFFER 0x3084 +#define EGL_BIND_TO_TEXTURE_RGB 0x3039 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A +#define EGL_CONTEXT_LOST 0x300E +#define EGL_MIN_SWAP_INTERVAL 0x303B +#define EGL_MAX_SWAP_INTERVAL 0x303C +#define EGL_MIPMAP_TEXTURE 0x3082 +#define EGL_MIPMAP_LEVEL 0x3083 +#define EGL_NO_TEXTURE 0x305C +#define EGL_TEXTURE_2D 0x305F +#define EGL_TEXTURE_FORMAT 0x3080 +#define EGL_TEXTURE_RGB 0x305D +#define EGL_TEXTURE_RGBA 0x305E +#define EGL_TEXTURE_TARGET 0x3081 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval); +#if EGL_EGL_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer); +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer); +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); +EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval); +#endif +#endif /* EGL_VERSION_1_1 */ + +#ifndef EGL_VERSION_1_2 +#define EGL_VERSION_1_2 1 +typedef unsigned int EGLenum; +typedef void *EGLClientBuffer; +#define EGL_ALPHA_FORMAT 0x3088 +#define EGL_ALPHA_FORMAT_NONPRE 0x308B +#define EGL_ALPHA_FORMAT_PRE 0x308C +#define EGL_ALPHA_MASK_SIZE 0x303E +#define EGL_BUFFER_PRESERVED 0x3094 +#define EGL_BUFFER_DESTROYED 0x3095 +#define EGL_CLIENT_APIS 0x308D +#define EGL_COLORSPACE 0x3087 +#define EGL_COLORSPACE_sRGB 0x3089 +#define EGL_COLORSPACE_LINEAR 0x308A +#define EGL_COLOR_BUFFER_TYPE 0x303F +#define EGL_CONTEXT_CLIENT_TYPE 0x3097 +#define EGL_DISPLAY_SCALING 10000 +#define EGL_HORIZONTAL_RESOLUTION 0x3090 +#define EGL_LUMINANCE_BUFFER 0x308F +#define EGL_LUMINANCE_SIZE 0x303D +#define EGL_OPENGL_ES_BIT 0x0001 +#define EGL_OPENVG_BIT 0x0002 +#define EGL_OPENGL_ES_API 0x30A0 +#define EGL_OPENVG_API 0x30A1 +#define EGL_OPENVG_IMAGE 0x3096 +#define EGL_PIXEL_ASPECT_RATIO 0x3092 +#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_RGB_BUFFER 0x308E +#define EGL_SINGLE_BUFFER 0x3085 +#define EGL_SWAP_BEHAVIOR 0x3093 +#define EGL_UNKNOWN EGL_CAST(EGLint,-1) +#define EGL_VERTICAL_RESOLUTION 0x3091 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api); +typedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void); +#if EGL_EGL_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api); +EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void); +EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void); +#endif +#endif /* EGL_VERSION_1_2 */ + +#ifndef EGL_VERSION_1_3 +#define EGL_VERSION_1_3 1 +#define EGL_CONFORMANT 0x3042 +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 +#define EGL_OPENGL_ES2_BIT 0x0004 +#define EGL_VG_ALPHA_FORMAT 0x3088 +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 +#define EGL_VG_COLORSPACE 0x3087 +#define EGL_VG_COLORSPACE_sRGB 0x3089 +#define EGL_VG_COLORSPACE_LINEAR 0x308A +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 +#endif /* EGL_VERSION_1_3 */ + +#ifndef EGL_VERSION_1_4 +#define EGL_VERSION_1_4 1 +#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0) +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 +#define EGL_MULTISAMPLE_RESOLVE 0x3099 +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A +#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B +#define EGL_OPENGL_API 0x30A2 +#define EGL_OPENGL_BIT 0x0008 +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 +typedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void); +#if EGL_EGL_PROTOTYPES +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void); +#endif +#endif /* EGL_VERSION_1_4 */ + +#ifndef EGL_VERSION_1_5 +#define EGL_VERSION_1_5 1 +typedef void *EGLSync; +typedef intptr_t EGLAttrib; +typedef khronos_utime_nanoseconds_t EGLTime; +typedef void *EGLImage; +#define EGL_CONTEXT_MAJOR_VERSION 0x3098 +#define EGL_CONTEXT_MINOR_VERSION 0x30FB +#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD +#define EGL_NO_RESET_NOTIFICATION 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF +#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001 +#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0 +#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1 +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2 +#define EGL_OPENGL_ES3_BIT 0x00000040 +#define EGL_CL_EVENT_HANDLE 0x309C +#define EGL_SYNC_CL_EVENT 0x30FE +#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0 +#define EGL_SYNC_TYPE 0x30F7 +#define EGL_SYNC_STATUS 0x30F1 +#define EGL_SYNC_CONDITION 0x30F8 +#define EGL_SIGNALED 0x30F2 +#define EGL_UNSIGNALED 0x30F3 +#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001 +#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull +#define EGL_TIMEOUT_EXPIRED 0x30F5 +#define EGL_CONDITION_SATISFIED 0x30F6 +#define EGL_NO_SYNC EGL_CAST(EGLSync,0) +#define EGL_SYNC_FENCE 0x30F9 +#define EGL_GL_COLORSPACE 0x309D +#define EGL_GL_COLORSPACE_SRGB 0x3089 +#define EGL_GL_COLORSPACE_LINEAR 0x308A +#define EGL_GL_RENDERBUFFER 0x30B9 +#define EGL_GL_TEXTURE_2D 0x30B1 +#define EGL_GL_TEXTURE_LEVEL 0x30BC +#define EGL_GL_TEXTURE_3D 0x30B2 +#define EGL_GL_TEXTURE_ZOFFSET 0x30BD +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3 +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5 +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7 +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8 +#define EGL_IMAGE_PRESERVED 0x30D2 +#define EGL_NO_IMAGE EGL_CAST(EGLImage,0) +typedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value); +typedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image); +typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags); +#if EGL_EGL_PROTOTYPES +EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value); +EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image); +EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags); +#endif +#endif /* EGL_VERSION_1_5 */ + +#ifdef __cplusplus +} +#endif + +#endif /* __egl_h_ */ + + +#ifndef __eglext_h_ +#define __eglext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +** +** This header is generated from the Khronos EGL XML API Registry. +** The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** http://www.khronos.org/registry/egl +** +** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $ +*/ + +/*#include */ + +#define EGL_EGLEXT_VERSION 20220525 + +/* Generated C header for: + * API: egl + * Versions considered: .* + * Versions emitted: _nomatch_^ + * Default extensions included: egl + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef EGL_KHR_cl_event +#define EGL_KHR_cl_event 1 +#define EGL_CL_EVENT_HANDLE_KHR 0x309C +#define EGL_SYNC_CL_EVENT_KHR 0x30FE +#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF +#endif /* EGL_KHR_cl_event */ + +#ifndef EGL_KHR_cl_event2 +#define EGL_KHR_cl_event2 1 +typedef void *EGLSyncKHR; +typedef intptr_t EGLAttribKHR; +typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list); +#endif +#endif /* EGL_KHR_cl_event2 */ + +#ifndef EGL_KHR_client_get_all_proc_addresses +#define EGL_KHR_client_get_all_proc_addresses 1 +#endif /* EGL_KHR_client_get_all_proc_addresses */ + +#ifndef EGL_KHR_config_attribs +#define EGL_KHR_config_attribs 1 +#define EGL_CONFORMANT_KHR 0x3042 +#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 +#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 +#endif /* EGL_KHR_config_attribs */ + +#ifndef EGL_KHR_context_flush_control +#define EGL_KHR_context_flush_control 1 +#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0 +#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097 +#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098 +#endif /* EGL_KHR_context_flush_control */ + +#ifndef EGL_KHR_create_context +#define EGL_KHR_create_context 1 +#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 +#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB +#define EGL_CONTEXT_FLAGS_KHR 0x30FC +#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD +#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF +#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 +#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 +#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 +#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 +#define EGL_OPENGL_ES3_BIT_KHR 0x00000040 +#endif /* EGL_KHR_create_context */ + +#ifndef EGL_KHR_create_context_no_error +#define EGL_KHR_create_context_no_error 1 +#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3 +#endif /* EGL_KHR_create_context_no_error */ + +#ifndef EGL_KHR_debug +#define EGL_KHR_debug 1 +typedef void *EGLLabelKHR; +typedef void *EGLObjectKHR; +typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message); +#define EGL_OBJECT_THREAD_KHR 0x33B0 +#define EGL_OBJECT_DISPLAY_KHR 0x33B1 +#define EGL_OBJECT_CONTEXT_KHR 0x33B2 +#define EGL_OBJECT_SURFACE_KHR 0x33B3 +#define EGL_OBJECT_IMAGE_KHR 0x33B4 +#define EGL_OBJECT_SYNC_KHR 0x33B5 +#define EGL_OBJECT_STREAM_KHR 0x33B6 +#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9 +#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA +#define EGL_DEBUG_MSG_WARN_KHR 0x33BB +#define EGL_DEBUG_MSG_INFO_KHR 0x33BC +#define EGL_DEBUG_CALLBACK_KHR 0x33B8 +typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value); +typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value); +EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label); +#endif +#endif /* EGL_KHR_debug */ + +#ifndef EGL_KHR_display_reference +#define EGL_KHR_display_reference 1 +#define EGL_TRACK_REFERENCES_KHR 0x3352 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value); +#endif +#endif /* EGL_KHR_display_reference */ + +#ifndef EGL_KHR_fence_sync +#define EGL_KHR_fence_sync 1 +typedef khronos_utime_nanoseconds_t EGLTimeKHR; +#ifdef KHRONOS_SUPPORT_INT64 +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 +#define EGL_SYNC_CONDITION_KHR 0x30F8 +#define EGL_SYNC_FENCE_KHR 0x30F9 +typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif +#endif /* KHRONOS_SUPPORT_INT64 */ +#endif /* EGL_KHR_fence_sync */ + +#ifndef EGL_KHR_get_all_proc_addresses +#define EGL_KHR_get_all_proc_addresses 1 +#endif /* EGL_KHR_get_all_proc_addresses */ + +#ifndef EGL_KHR_gl_colorspace +#define EGL_KHR_gl_colorspace 1 +#define EGL_GL_COLORSPACE_KHR 0x309D +#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089 +#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A +#endif /* EGL_KHR_gl_colorspace */ + +#ifndef EGL_KHR_gl_renderbuffer_image +#define EGL_KHR_gl_renderbuffer_image 1 +#define EGL_GL_RENDERBUFFER_KHR 0x30B9 +#endif /* EGL_KHR_gl_renderbuffer_image */ + +#ifndef EGL_KHR_gl_texture_2D_image +#define EGL_KHR_gl_texture_2D_image 1 +#define EGL_GL_TEXTURE_2D_KHR 0x30B1 +#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC +#endif /* EGL_KHR_gl_texture_2D_image */ + +#ifndef EGL_KHR_gl_texture_3D_image +#define EGL_KHR_gl_texture_3D_image 1 +#define EGL_GL_TEXTURE_3D_KHR 0x30B2 +#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD +#endif /* EGL_KHR_gl_texture_3D_image */ + +#ifndef EGL_KHR_gl_texture_cubemap_image +#define EGL_KHR_gl_texture_cubemap_image 1 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 +#endif /* EGL_KHR_gl_texture_cubemap_image */ + +#ifndef EGL_KHR_image +#define EGL_KHR_image 1 +typedef void *EGLImageKHR; +#define EGL_NATIVE_PIXMAP_KHR 0x30B0 +#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0) +typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); +#endif +#endif /* EGL_KHR_image */ + +#ifndef EGL_KHR_image_base +#define EGL_KHR_image_base 1 +#define EGL_IMAGE_PRESERVED_KHR 0x30D2 +#endif /* EGL_KHR_image_base */ + +#ifndef EGL_KHR_image_pixmap +#define EGL_KHR_image_pixmap 1 +#endif /* EGL_KHR_image_pixmap */ + +#ifndef EGL_KHR_lock_surface +#define EGL_KHR_lock_surface 1 +#define EGL_READ_SURFACE_BIT_KHR 0x0001 +#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 +#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 +#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 +#define EGL_MATCH_FORMAT_KHR 0x3043 +#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 +#define EGL_FORMAT_RGB_565_KHR 0x30C1 +#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 +#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 +#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 +#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 +#define EGL_BITMAP_POINTER_KHR 0x30C6 +#define EGL_BITMAP_PITCH_KHR 0x30C7 +#define EGL_BITMAP_ORIGIN_KHR 0x30C8 +#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 +#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA +#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB +#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC +#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD +#define EGL_LOWER_LEFT_KHR 0x30CE +#define EGL_UPPER_LEFT_KHR 0x30CF +typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface); +#endif +#endif /* EGL_KHR_lock_surface */ + +#ifndef EGL_KHR_lock_surface2 +#define EGL_KHR_lock_surface2 1 +#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 +#endif /* EGL_KHR_lock_surface2 */ + +#ifndef EGL_KHR_lock_surface3 +#define EGL_KHR_lock_surface3 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value); +#endif +#endif /* EGL_KHR_lock_surface3 */ + +#ifndef EGL_KHR_mutable_render_buffer +#define EGL_KHR_mutable_render_buffer 1 +#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000 +#endif /* EGL_KHR_mutable_render_buffer */ + +#ifndef EGL_KHR_no_config_context +#define EGL_KHR_no_config_context 1 +#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0) +#endif /* EGL_KHR_no_config_context */ + +#ifndef EGL_KHR_partial_update +#define EGL_KHR_partial_update 1 +#define EGL_BUFFER_AGE_KHR 0x313D +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#endif +#endif /* EGL_KHR_partial_update */ + +#ifndef EGL_KHR_platform_android +#define EGL_KHR_platform_android 1 +#define EGL_PLATFORM_ANDROID_KHR 0x3141 +#endif /* EGL_KHR_platform_android */ + +#ifndef EGL_KHR_platform_gbm +#define EGL_KHR_platform_gbm 1 +#define EGL_PLATFORM_GBM_KHR 0x31D7 +#endif /* EGL_KHR_platform_gbm */ + +#ifndef EGL_KHR_platform_wayland +#define EGL_KHR_platform_wayland 1 +#define EGL_PLATFORM_WAYLAND_KHR 0x31D8 +#endif /* EGL_KHR_platform_wayland */ + +#ifndef EGL_KHR_platform_x11 +#define EGL_KHR_platform_x11 1 +#define EGL_PLATFORM_X11_KHR 0x31D5 +#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6 +#endif /* EGL_KHR_platform_x11 */ + +#ifndef EGL_KHR_reusable_sync +#define EGL_KHR_reusable_sync 1 +#ifdef KHRONOS_SUPPORT_INT64 +#define EGL_SYNC_STATUS_KHR 0x30F1 +#define EGL_SIGNALED_KHR 0x30F2 +#define EGL_UNSIGNALED_KHR 0x30F3 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6 +#define EGL_SYNC_TYPE_KHR 0x30F7 +#define EGL_SYNC_REUSABLE_KHR 0x30FA +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull +#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0) +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +#endif +#endif /* KHRONOS_SUPPORT_INT64 */ +#endif /* EGL_KHR_reusable_sync */ + +#ifndef EGL_KHR_stream +#define EGL_KHR_stream 1 +typedef void *EGLStreamKHR; +typedef khronos_uint64_t EGLuint64KHR; +#ifdef KHRONOS_SUPPORT_INT64 +#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0) +#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 +#define EGL_PRODUCER_FRAME_KHR 0x3212 +#define EGL_CONSUMER_FRAME_KHR 0x3213 +#define EGL_STREAM_STATE_KHR 0x3214 +#define EGL_STREAM_STATE_CREATED_KHR 0x3215 +#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 +#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 +#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 +#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 +#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A +#define EGL_BAD_STREAM_KHR 0x321B +#define EGL_BAD_STATE_KHR 0x321C +typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); +#endif +#endif /* KHRONOS_SUPPORT_INT64 */ +#endif /* EGL_KHR_stream */ + +#ifndef EGL_KHR_stream_attrib +#define EGL_KHR_stream_attrib 1 +#ifdef KHRONOS_SUPPORT_INT64 +typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); +#endif +#endif /* KHRONOS_SUPPORT_INT64 */ +#endif /* EGL_KHR_stream_attrib */ + +#ifndef EGL_KHR_stream_consumer_gltexture +#define EGL_KHR_stream_consumer_gltexture 1 +#ifdef EGL_KHR_stream +#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream); +#endif +#endif /* EGL_KHR_stream */ +#endif /* EGL_KHR_stream_consumer_gltexture */ + +#ifndef EGL_KHR_stream_cross_process_fd +#define EGL_KHR_stream_cross_process_fd 1 +typedef int EGLNativeFileDescriptorKHR; +#ifdef EGL_KHR_stream +#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1) +typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); +#endif +#endif /* EGL_KHR_stream */ +#endif /* EGL_KHR_stream_cross_process_fd */ + +#ifndef EGL_KHR_stream_fifo +#define EGL_KHR_stream_fifo 1 +#ifdef EGL_KHR_stream +#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC +#define EGL_STREAM_TIME_NOW_KHR 0x31FD +#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE +#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); +#endif +#endif /* EGL_KHR_stream */ +#endif /* EGL_KHR_stream_fifo */ + +#ifndef EGL_KHR_stream_producer_aldatalocator +#define EGL_KHR_stream_producer_aldatalocator 1 +#ifdef EGL_KHR_stream +#endif /* EGL_KHR_stream */ +#endif /* EGL_KHR_stream_producer_aldatalocator */ + +#ifndef EGL_KHR_stream_producer_eglsurface +#define EGL_KHR_stream_producer_eglsurface 1 +#ifdef EGL_KHR_stream +#define EGL_STREAM_BIT_KHR 0x0800 +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); +#endif +#endif /* EGL_KHR_stream */ +#endif /* EGL_KHR_stream_producer_eglsurface */ + +#ifndef EGL_KHR_surfaceless_context +#define EGL_KHR_surfaceless_context 1 +#endif /* EGL_KHR_surfaceless_context */ + +#ifndef EGL_KHR_swap_buffers_with_damage +#define EGL_KHR_swap_buffers_with_damage 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects); +#endif +#endif /* EGL_KHR_swap_buffers_with_damage */ + +#ifndef EGL_KHR_vg_parent_image +#define EGL_KHR_vg_parent_image 1 +#define EGL_VG_PARENT_IMAGE_KHR 0x30BA +#endif /* EGL_KHR_vg_parent_image */ + +#ifndef EGL_KHR_wait_sync +#define EGL_KHR_wait_sync 1 +typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); +#endif +#endif /* EGL_KHR_wait_sync */ + +#ifndef EGL_ANDROID_GLES_layers +#define EGL_ANDROID_GLES_layers 1 +#endif /* EGL_ANDROID_GLES_layers */ + +#ifndef EGL_ANDROID_blob_cache +#define EGL_ANDROID_blob_cache 1 +typedef khronos_ssize_t EGLsizeiANDROID; +typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); +typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); +typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); +#endif +#endif /* EGL_ANDROID_blob_cache */ + +#ifndef EGL_ANDROID_create_native_client_buffer +#define EGL_ANDROID_create_native_client_buffer 1 +#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143 +#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001 +#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002 +#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004 +typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list); +#endif +#endif /* EGL_ANDROID_create_native_client_buffer */ + +#ifndef EGL_ANDROID_framebuffer_target +#define EGL_ANDROID_framebuffer_target 1 +#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 +#endif /* EGL_ANDROID_framebuffer_target */ + +#ifndef EGL_ANDROID_front_buffer_auto_refresh +#define EGL_ANDROID_front_buffer_auto_refresh 1 +#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C +#endif /* EGL_ANDROID_front_buffer_auto_refresh */ + +#ifndef EGL_ANDROID_get_frame_timestamps +#define EGL_ANDROID_get_frame_timestamps 1 +typedef khronos_stime_nanoseconds_t EGLnsecsANDROID; +#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2) +#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1) +#define EGL_TIMESTAMPS_ANDROID 0x3430 +#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431 +#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432 +#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433 +#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434 +#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435 +#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436 +#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437 +#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438 +#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439 +#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A +#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B +#define EGL_READS_DONE_TIME_ANDROID 0x343C +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name); +EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values); +EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId); +EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp); +EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values); +#endif +#endif /* EGL_ANDROID_get_frame_timestamps */ + +#ifndef EGL_ANDROID_get_native_client_buffer +#define EGL_ANDROID_get_native_client_buffer 1 +struct AHardwareBuffer; +typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer); +#endif +#endif /* EGL_ANDROID_get_native_client_buffer */ + +#ifndef EGL_ANDROID_image_native_buffer +#define EGL_ANDROID_image_native_buffer 1 +#define EGL_NATIVE_BUFFER_ANDROID 0x3140 +#endif /* EGL_ANDROID_image_native_buffer */ + +#ifndef EGL_ANDROID_native_fence_sync +#define EGL_ANDROID_native_fence_sync 1 +#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 +#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145 +#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146 +#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 +typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync); +#endif +#endif /* EGL_ANDROID_native_fence_sync */ + +#ifndef EGL_ANDROID_presentation_time +#define EGL_ANDROID_presentation_time 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time); +#endif +#endif /* EGL_ANDROID_presentation_time */ + +#ifndef EGL_ANDROID_recordable +#define EGL_ANDROID_recordable 1 +#define EGL_RECORDABLE_ANDROID 0x3142 +#endif /* EGL_ANDROID_recordable */ + +#ifndef EGL_ANGLE_d3d_share_handle_client_buffer +#define EGL_ANGLE_d3d_share_handle_client_buffer 1 +#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200 +#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */ + +#ifndef EGL_ANGLE_device_d3d +#define EGL_ANGLE_device_d3d 1 +#define EGL_D3D9_DEVICE_ANGLE 0x33A0 +#define EGL_D3D11_DEVICE_ANGLE 0x33A1 +#endif /* EGL_ANGLE_device_d3d */ + +#ifndef EGL_ANGLE_query_surface_pointer +#define EGL_ANGLE_query_surface_pointer 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +#endif +#endif /* EGL_ANGLE_query_surface_pointer */ + +#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle +#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 +#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ + +#ifndef EGL_ANGLE_sync_control_rate +#define EGL_ANGLE_sync_control_rate 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator); +#endif +#endif /* EGL_ANGLE_sync_control_rate */ + +#ifndef EGL_ANGLE_window_fixed_size +#define EGL_ANGLE_window_fixed_size 1 +#define EGL_FIXED_SIZE_ANGLE 0x3201 +#endif /* EGL_ANGLE_window_fixed_size */ + +#ifndef EGL_ARM_image_format +#define EGL_ARM_image_format 1 +#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287 +#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288 +#endif /* EGL_ARM_image_format */ + +#ifndef EGL_ARM_implicit_external_sync +#define EGL_ARM_implicit_external_sync 1 +#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A +#endif /* EGL_ARM_implicit_external_sync */ + +#ifndef EGL_ARM_pixmap_multisample_discard +#define EGL_ARM_pixmap_multisample_discard 1 +#define EGL_DISCARD_SAMPLES_ARM 0x3286 +#endif /* EGL_ARM_pixmap_multisample_discard */ + +#ifndef EGL_EXT_bind_to_front +#define EGL_EXT_bind_to_front 1 +#define EGL_FRONT_BUFFER_EXT 0x3464 +#endif /* EGL_EXT_bind_to_front */ + +#ifndef EGL_EXT_buffer_age +#define EGL_EXT_buffer_age 1 +#define EGL_BUFFER_AGE_EXT 0x313D +#endif /* EGL_EXT_buffer_age */ + +#ifndef EGL_EXT_client_extensions +#define EGL_EXT_client_extensions 1 +#endif /* EGL_EXT_client_extensions */ + +#ifndef EGL_EXT_client_sync +#define EGL_EXT_client_sync 1 +#define EGL_SYNC_CLIENT_EXT 0x3364 +#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list); +#endif +#endif /* EGL_EXT_client_sync */ + +#ifndef EGL_EXT_compositor +#define EGL_EXT_compositor 1 +#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460 +#define EGL_EXTERNAL_REF_ID_EXT 0x3461 +#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462 +#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries); +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries); +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries); +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries); +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id); +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height); +EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy); +#endif +#endif /* EGL_EXT_compositor */ + +#ifndef EGL_EXT_config_select_group +#define EGL_EXT_config_select_group 1 +#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0 +#endif /* EGL_EXT_config_select_group */ + +#ifndef EGL_EXT_create_context_robustness +#define EGL_EXT_create_context_robustness 1 +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 +#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF +#endif /* EGL_EXT_create_context_robustness */ + +#ifndef EGL_EXT_device_base +#define EGL_EXT_device_base 1 +typedef void *EGLDeviceEXT; +#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0) +#define EGL_BAD_DEVICE_EXT 0x322B +#define EGL_DEVICE_EXT 0x322C +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value); +typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value); +EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); +#endif +#endif /* EGL_EXT_device_base */ + +#ifndef EGL_EXT_device_drm +#define EGL_EXT_device_drm 1 +#define EGL_DRM_DEVICE_FILE_EXT 0x3233 +#define EGL_DRM_MASTER_FD_EXT 0x333C +#endif /* EGL_EXT_device_drm */ + +#ifndef EGL_EXT_device_drm_render_node +#define EGL_EXT_device_drm_render_node 1 +#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377 +#endif /* EGL_EXT_device_drm_render_node */ + +#ifndef EGL_EXT_device_enumeration +#define EGL_EXT_device_enumeration 1 +#endif /* EGL_EXT_device_enumeration */ + +#ifndef EGL_EXT_device_openwf +#define EGL_EXT_device_openwf 1 +#define EGL_OPENWF_DEVICE_ID_EXT 0x3237 +#define EGL_OPENWF_DEVICE_EXT 0x333D +#endif /* EGL_EXT_device_openwf */ + +#ifndef EGL_EXT_device_persistent_id +#define EGL_EXT_device_persistent_id 1 +#define EGL_DEVICE_UUID_EXT 0x335C +#define EGL_DRIVER_UUID_EXT 0x335D +#define EGL_DRIVER_NAME_EXT 0x335E +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size); +#endif +#endif /* EGL_EXT_device_persistent_id */ + +#ifndef EGL_EXT_device_query +#define EGL_EXT_device_query 1 +#endif /* EGL_EXT_device_query */ + +#ifndef EGL_EXT_device_query_name +#define EGL_EXT_device_query_name 1 +#define EGL_RENDERER_EXT 0x335F +#endif /* EGL_EXT_device_query_name */ + +#ifndef EGL_EXT_explicit_device +#define EGL_EXT_explicit_device 1 +#endif /* EGL_EXT_explicit_device */ + +#ifndef EGL_EXT_gl_colorspace_bt2020_linear +#define EGL_EXT_gl_colorspace_bt2020_linear 1 +#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F +#endif /* EGL_EXT_gl_colorspace_bt2020_linear */ + +#ifndef EGL_EXT_gl_colorspace_bt2020_pq +#define EGL_EXT_gl_colorspace_bt2020_pq 1 +#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340 +#endif /* EGL_EXT_gl_colorspace_bt2020_pq */ + +#ifndef EGL_EXT_gl_colorspace_display_p3 +#define EGL_EXT_gl_colorspace_display_p3 1 +#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363 +#endif /* EGL_EXT_gl_colorspace_display_p3 */ + +#ifndef EGL_EXT_gl_colorspace_display_p3_linear +#define EGL_EXT_gl_colorspace_display_p3_linear 1 +#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362 +#endif /* EGL_EXT_gl_colorspace_display_p3_linear */ + +#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough +#define EGL_EXT_gl_colorspace_display_p3_passthrough 1 +#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490 +#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */ + +#ifndef EGL_EXT_gl_colorspace_scrgb +#define EGL_EXT_gl_colorspace_scrgb 1 +#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351 +#endif /* EGL_EXT_gl_colorspace_scrgb */ + +#ifndef EGL_EXT_gl_colorspace_scrgb_linear +#define EGL_EXT_gl_colorspace_scrgb_linear 1 +#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350 +#endif /* EGL_EXT_gl_colorspace_scrgb_linear */ + +#ifndef EGL_EXT_image_dma_buf_import +#define EGL_EXT_image_dma_buf_import 1 +#define EGL_LINUX_DMA_BUF_EXT 0x3270 +#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 +#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 +#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 +#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 +#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 +#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 +#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 +#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 +#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 +#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A +#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B +#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C +#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D +#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E +#define EGL_ITU_REC601_EXT 0x327F +#define EGL_ITU_REC709_EXT 0x3280 +#define EGL_ITU_REC2020_EXT 0x3281 +#define EGL_YUV_FULL_RANGE_EXT 0x3282 +#define EGL_YUV_NARROW_RANGE_EXT 0x3283 +#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 +#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 +#endif /* EGL_EXT_image_dma_buf_import */ + +#ifndef EGL_EXT_image_dma_buf_import_modifiers +#define EGL_EXT_image_dma_buf_import_modifiers 1 +#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440 +#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441 +#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442 +#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443 +#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444 +#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445 +#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446 +#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447 +#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448 +#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449 +#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers); +#endif +#endif /* EGL_EXT_image_dma_buf_import_modifiers */ + +#ifndef EGL_EXT_image_gl_colorspace +#define EGL_EXT_image_gl_colorspace 1 +#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D +#endif /* EGL_EXT_image_gl_colorspace */ + +#ifndef EGL_EXT_image_implicit_sync_control +#define EGL_EXT_image_implicit_sync_control 1 +#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470 +#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471 +#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472 +#endif /* EGL_EXT_image_implicit_sync_control */ + +#ifndef EGL_EXT_multiview_window +#define EGL_EXT_multiview_window 1 +#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134 +#endif /* EGL_EXT_multiview_window */ + +#ifndef EGL_EXT_output_base +#define EGL_EXT_output_base 1 +typedef void *EGLOutputLayerEXT; +typedef void *EGLOutputPortEXT; +#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0) +#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0) +#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D +#define EGL_BAD_OUTPUT_PORT_EXT 0x322E +#define EGL_SWAP_INTERVAL_EXT 0x322F +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value); +typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value); +typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers); +EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports); +EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value); +EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name); +EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value); +EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name); +#endif +#endif /* EGL_EXT_output_base */ + +#ifndef EGL_EXT_output_drm +#define EGL_EXT_output_drm 1 +#define EGL_DRM_CRTC_EXT 0x3234 +#define EGL_DRM_PLANE_EXT 0x3235 +#define EGL_DRM_CONNECTOR_EXT 0x3236 +#endif /* EGL_EXT_output_drm */ + +#ifndef EGL_EXT_output_openwf +#define EGL_EXT_output_openwf 1 +#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238 +#define EGL_OPENWF_PORT_ID_EXT 0x3239 +#endif /* EGL_EXT_output_openwf */ + +#ifndef EGL_EXT_pixel_format_float +#define EGL_EXT_pixel_format_float 1 +#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339 +#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A +#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B +#endif /* EGL_EXT_pixel_format_float */ + +#ifndef EGL_EXT_platform_base +#define EGL_EXT_platform_base 1 +typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); +#endif +#endif /* EGL_EXT_platform_base */ + +#ifndef EGL_EXT_platform_device +#define EGL_EXT_platform_device 1 +#define EGL_PLATFORM_DEVICE_EXT 0x313F +#endif /* EGL_EXT_platform_device */ + +#ifndef EGL_EXT_platform_wayland +#define EGL_EXT_platform_wayland 1 +#define EGL_PLATFORM_WAYLAND_EXT 0x31D8 +#endif /* EGL_EXT_platform_wayland */ + +#ifndef EGL_EXT_platform_x11 +#define EGL_EXT_platform_x11 1 +#define EGL_PLATFORM_X11_EXT 0x31D5 +#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6 +#endif /* EGL_EXT_platform_x11 */ + +#ifndef EGL_EXT_platform_xcb +#define EGL_EXT_platform_xcb 1 +#define EGL_PLATFORM_XCB_EXT 0x31DC +#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE +#endif /* EGL_EXT_platform_xcb */ + +#ifndef EGL_EXT_present_opaque +#define EGL_EXT_present_opaque 1 +#define EGL_PRESENT_OPAQUE_EXT 0x31DF +#endif /* EGL_EXT_present_opaque */ + +#ifndef EGL_EXT_protected_content +#define EGL_EXT_protected_content 1 +#define EGL_PROTECTED_CONTENT_EXT 0x32C0 +#endif /* EGL_EXT_protected_content */ + +#ifndef EGL_EXT_protected_surface +#define EGL_EXT_protected_surface 1 +#endif /* EGL_EXT_protected_surface */ + +#ifndef EGL_EXT_stream_consumer_egloutput +#define EGL_EXT_stream_consumer_egloutput 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer); +#endif +#endif /* EGL_EXT_stream_consumer_egloutput */ + +#ifndef EGL_EXT_surface_CTA861_3_metadata +#define EGL_EXT_surface_CTA861_3_metadata 1 +#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360 +#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361 +#endif /* EGL_EXT_surface_CTA861_3_metadata */ + +#ifndef EGL_EXT_surface_SMPTE2086_metadata +#define EGL_EXT_surface_SMPTE2086_metadata 1 +#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341 +#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342 +#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343 +#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344 +#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345 +#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346 +#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347 +#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348 +#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349 +#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A +#define EGL_METADATA_SCALING_EXT 50000 +#endif /* EGL_EXT_surface_SMPTE2086_metadata */ + +#ifndef EGL_EXT_surface_compression +#define EGL_EXT_surface_compression 1 +#define EGL_SURFACE_COMPRESSION_EXT 0x34B0 +#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E +#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9 +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE +#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates); +#endif +#endif /* EGL_EXT_surface_compression */ + +#ifndef EGL_EXT_swap_buffers_with_damage +#define EGL_EXT_swap_buffers_with_damage 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects); +#endif +#endif /* EGL_EXT_swap_buffers_with_damage */ + +#ifndef EGL_EXT_sync_reuse +#define EGL_EXT_sync_reuse 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list); +#endif +#endif /* EGL_EXT_sync_reuse */ + +#ifndef EGL_EXT_yuv_surface +#define EGL_EXT_yuv_surface 1 +#define EGL_YUV_ORDER_EXT 0x3301 +#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311 +#define EGL_YUV_SUBSAMPLE_EXT 0x3312 +#define EGL_YUV_DEPTH_RANGE_EXT 0x3317 +#define EGL_YUV_CSC_STANDARD_EXT 0x330A +#define EGL_YUV_PLANE_BPP_EXT 0x331A +#define EGL_YUV_BUFFER_EXT 0x3300 +#define EGL_YUV_ORDER_YUV_EXT 0x3302 +#define EGL_YUV_ORDER_YVU_EXT 0x3303 +#define EGL_YUV_ORDER_YUYV_EXT 0x3304 +#define EGL_YUV_ORDER_UYVY_EXT 0x3305 +#define EGL_YUV_ORDER_YVYU_EXT 0x3306 +#define EGL_YUV_ORDER_VYUY_EXT 0x3307 +#define EGL_YUV_ORDER_AYUV_EXT 0x3308 +#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313 +#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314 +#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315 +#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318 +#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319 +#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B +#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C +#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D +#define EGL_YUV_PLANE_BPP_0_EXT 0x331B +#define EGL_YUV_PLANE_BPP_8_EXT 0x331C +#define EGL_YUV_PLANE_BPP_10_EXT 0x331D +#endif /* EGL_EXT_yuv_surface */ + +#ifndef EGL_HI_clientpixmap +#define EGL_HI_clientpixmap 1 +struct EGLClientPixmapHI { + void *pData; + EGLint iWidth; + EGLint iHeight; + EGLint iStride; +}; +#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 +typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); +#endif +#endif /* EGL_HI_clientpixmap */ + +#ifndef EGL_HI_colorformats +#define EGL_HI_colorformats 1 +#define EGL_COLOR_FORMAT_HI 0x8F70 +#define EGL_COLOR_RGB_HI 0x8F71 +#define EGL_COLOR_RGBA_HI 0x8F72 +#define EGL_COLOR_ARGB_HI 0x8F73 +#endif /* EGL_HI_colorformats */ + +#ifndef EGL_IMG_context_priority +#define EGL_IMG_context_priority 1 +#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 +#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 +#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 +#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 +#endif /* EGL_IMG_context_priority */ + +#ifndef EGL_IMG_image_plane_attribs +#define EGL_IMG_image_plane_attribs 1 +#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105 +#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106 +#endif /* EGL_IMG_image_plane_attribs */ + +#ifndef EGL_MESA_drm_image +#define EGL_MESA_drm_image 1 +#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 +#define EGL_DRM_BUFFER_USE_MESA 0x31D1 +#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 +#define EGL_DRM_BUFFER_MESA 0x31D3 +#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 +#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 +#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 +#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004 +typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif +#endif /* EGL_MESA_drm_image */ + +#ifndef EGL_MESA_image_dma_buf_export +#define EGL_MESA_image_dma_buf_export 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers); +EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets); +#endif +#endif /* EGL_MESA_image_dma_buf_export */ + +#ifndef EGL_MESA_platform_gbm +#define EGL_MESA_platform_gbm 1 +#define EGL_PLATFORM_GBM_MESA 0x31D7 +#endif /* EGL_MESA_platform_gbm */ + +#ifndef EGL_MESA_platform_surfaceless +#define EGL_MESA_platform_surfaceless 1 +#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD +#endif /* EGL_MESA_platform_surfaceless */ + +#ifndef EGL_MESA_query_driver +#define EGL_MESA_query_driver 1 +typedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy); +typedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy); +EGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy); +#endif +#endif /* EGL_MESA_query_driver */ + +#ifndef EGL_NOK_swap_region +#define EGL_NOK_swap_region 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); +#endif +#endif /* EGL_NOK_swap_region */ + +#ifndef EGL_NOK_swap_region2 +#define EGL_NOK_swap_region2 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); +#endif +#endif /* EGL_NOK_swap_region2 */ + +#ifndef EGL_NOK_texture_from_pixmap +#define EGL_NOK_texture_from_pixmap 1 +#define EGL_Y_INVERTED_NOK 0x307F +#endif /* EGL_NOK_texture_from_pixmap */ + +#ifndef EGL_NV_3dvision_surface +#define EGL_NV_3dvision_surface 1 +#define EGL_AUTO_STEREO_NV 0x3136 +#endif /* EGL_NV_3dvision_surface */ + +#ifndef EGL_NV_context_priority_realtime +#define EGL_NV_context_priority_realtime 1 +#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357 +#endif /* EGL_NV_context_priority_realtime */ + +#ifndef EGL_NV_coverage_sample +#define EGL_NV_coverage_sample 1 +#define EGL_COVERAGE_BUFFERS_NV 0x30E0 +#define EGL_COVERAGE_SAMPLES_NV 0x30E1 +#endif /* EGL_NV_coverage_sample */ + +#ifndef EGL_NV_coverage_sample_resolve +#define EGL_NV_coverage_sample_resolve 1 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 +#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 +#endif /* EGL_NV_coverage_sample_resolve */ + +#ifndef EGL_NV_cuda_event +#define EGL_NV_cuda_event 1 +#define EGL_CUDA_EVENT_HANDLE_NV 0x323B +#define EGL_SYNC_CUDA_EVENT_NV 0x323C +#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D +#endif /* EGL_NV_cuda_event */ + +#ifndef EGL_NV_depth_nonlinear +#define EGL_NV_depth_nonlinear 1 +#define EGL_DEPTH_ENCODING_NV 0x30E2 +#define EGL_DEPTH_ENCODING_NONE_NV 0 +#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 +#endif /* EGL_NV_depth_nonlinear */ + +#ifndef EGL_NV_device_cuda +#define EGL_NV_device_cuda 1 +#define EGL_CUDA_DEVICE_NV 0x323A +#endif /* EGL_NV_device_cuda */ + +#ifndef EGL_NV_native_query +#define EGL_NV_native_query 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); +#endif +#endif /* EGL_NV_native_query */ + +#ifndef EGL_NV_post_convert_rounding +#define EGL_NV_post_convert_rounding 1 +#endif /* EGL_NV_post_convert_rounding */ + +#ifndef EGL_NV_post_sub_buffer +#define EGL_NV_post_sub_buffer 1 +#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE +typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif +#endif /* EGL_NV_post_sub_buffer */ + +#ifndef EGL_NV_quadruple_buffer +#define EGL_NV_quadruple_buffer 1 +#define EGL_QUADRUPLE_BUFFER_NV 0x3231 +#endif /* EGL_NV_quadruple_buffer */ + +#ifndef EGL_NV_robustness_video_memory_purge +#define EGL_NV_robustness_video_memory_purge 1 +#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C +#endif /* EGL_NV_robustness_video_memory_purge */ + +#ifndef EGL_NV_stream_consumer_eglimage +#define EGL_NV_stream_consumer_eglimage 1 +#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373 +#define EGL_STREAM_IMAGE_ADD_NV 0x3374 +#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375 +#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list); +typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list); +EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync); +#endif +#endif /* EGL_NV_stream_consumer_eglimage */ + +#ifndef EGL_NV_stream_consumer_gltexture_yuv +#define EGL_NV_stream_consumer_gltexture_yuv 1 +#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C +#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D +#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); +#endif +#endif /* EGL_NV_stream_consumer_gltexture_yuv */ + +#ifndef EGL_NV_stream_cross_display +#define EGL_NV_stream_cross_display 1 +#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E +#endif /* EGL_NV_stream_cross_display */ + +#ifndef EGL_NV_stream_cross_object +#define EGL_NV_stream_cross_object 1 +#define EGL_STREAM_CROSS_OBJECT_NV 0x334D +#endif /* EGL_NV_stream_cross_object */ + +#ifndef EGL_NV_stream_cross_partition +#define EGL_NV_stream_cross_partition 1 +#define EGL_STREAM_CROSS_PARTITION_NV 0x323F +#endif /* EGL_NV_stream_cross_partition */ + +#ifndef EGL_NV_stream_cross_process +#define EGL_NV_stream_cross_process 1 +#define EGL_STREAM_CROSS_PROCESS_NV 0x3245 +#endif /* EGL_NV_stream_cross_process */ + +#ifndef EGL_NV_stream_cross_system +#define EGL_NV_stream_cross_system 1 +#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F +#endif /* EGL_NV_stream_cross_system */ + +#ifndef EGL_NV_stream_dma +#define EGL_NV_stream_dma 1 +#define EGL_STREAM_DMA_NV 0x3371 +#define EGL_STREAM_DMA_SERVER_NV 0x3372 +#endif /* EGL_NV_stream_dma */ + +#ifndef EGL_NV_stream_fifo_next +#define EGL_NV_stream_fifo_next 1 +#define EGL_PENDING_FRAME_NV 0x3329 +#define EGL_STREAM_TIME_PENDING_NV 0x332A +#endif /* EGL_NV_stream_fifo_next */ + +#ifndef EGL_NV_stream_fifo_synchronous +#define EGL_NV_stream_fifo_synchronous 1 +#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336 +#endif /* EGL_NV_stream_fifo_synchronous */ + +#ifndef EGL_NV_stream_flush +#define EGL_NV_stream_flush 1 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream); +#endif +#endif /* EGL_NV_stream_flush */ + +#ifndef EGL_NV_stream_frame_limits +#define EGL_NV_stream_frame_limits 1 +#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337 +#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338 +#endif /* EGL_NV_stream_frame_limits */ + +#ifndef EGL_NV_stream_metadata +#define EGL_NV_stream_metadata 1 +#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250 +#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251 +#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252 +#define EGL_PRODUCER_METADATA_NV 0x3253 +#define EGL_CONSUMER_METADATA_NV 0x3254 +#define EGL_PENDING_METADATA_NV 0x3328 +#define EGL_METADATA0_SIZE_NV 0x3255 +#define EGL_METADATA1_SIZE_NV 0x3256 +#define EGL_METADATA2_SIZE_NV 0x3257 +#define EGL_METADATA3_SIZE_NV 0x3258 +#define EGL_METADATA0_TYPE_NV 0x3259 +#define EGL_METADATA1_TYPE_NV 0x325A +#define EGL_METADATA2_TYPE_NV 0x325B +#define EGL_METADATA3_TYPE_NV 0x325C +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); +EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data); +#endif +#endif /* EGL_NV_stream_metadata */ + +#ifndef EGL_NV_stream_origin +#define EGL_NV_stream_origin 1 +#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366 +#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367 +#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368 +#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369 +#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A +#define EGL_LEFT_NV 0x336B +#define EGL_RIGHT_NV 0x336C +#define EGL_TOP_NV 0x336D +#define EGL_BOTTOM_NV 0x336E +#define EGL_X_AXIS_NV 0x336F +#define EGL_Y_AXIS_NV 0x3370 +#endif /* EGL_NV_stream_origin */ + +#ifndef EGL_NV_stream_remote +#define EGL_NV_stream_remote 1 +#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240 +#define EGL_STREAM_TYPE_NV 0x3241 +#define EGL_STREAM_PROTOCOL_NV 0x3242 +#define EGL_STREAM_ENDPOINT_NV 0x3243 +#define EGL_STREAM_LOCAL_NV 0x3244 +#define EGL_STREAM_PRODUCER_NV 0x3247 +#define EGL_STREAM_CONSUMER_NV 0x3248 +#define EGL_STREAM_PROTOCOL_FD_NV 0x3246 +#endif /* EGL_NV_stream_remote */ + +#ifndef EGL_NV_stream_reset +#define EGL_NV_stream_reset 1 +#define EGL_SUPPORT_RESET_NV 0x3334 +#define EGL_SUPPORT_REUSE_NV 0x3335 +typedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream); +#endif +#endif /* EGL_NV_stream_reset */ + +#ifndef EGL_NV_stream_socket +#define EGL_NV_stream_socket 1 +#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B +#define EGL_SOCKET_HANDLE_NV 0x324C +#define EGL_SOCKET_TYPE_NV 0x324D +#endif /* EGL_NV_stream_socket */ + +#ifndef EGL_NV_stream_socket_inet +#define EGL_NV_stream_socket_inet 1 +#define EGL_SOCKET_TYPE_INET_NV 0x324F +#endif /* EGL_NV_stream_socket_inet */ + +#ifndef EGL_NV_stream_socket_unix +#define EGL_NV_stream_socket_unix 1 +#define EGL_SOCKET_TYPE_UNIX_NV 0x324E +#endif /* EGL_NV_stream_socket_unix */ + +#ifndef EGL_NV_stream_sync +#define EGL_NV_stream_sync 1 +#define EGL_SYNC_NEW_FRAME_NV 0x321F +typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); +#endif +#endif /* EGL_NV_stream_sync */ + +#ifndef EGL_NV_sync +#define EGL_NV_sync 1 +typedef void *EGLSyncNV; +typedef khronos_utime_nanoseconds_t EGLTimeNV; +#ifdef KHRONOS_SUPPORT_INT64 +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 +#define EGL_SYNC_STATUS_NV 0x30E7 +#define EGL_SIGNALED_NV 0x30E8 +#define EGL_UNSIGNALED_NV 0x30E9 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 +#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull +#define EGL_ALREADY_SIGNALED_NV 0x30EA +#define EGL_TIMEOUT_EXPIRED_NV 0x30EB +#define EGL_CONDITION_SATISFIED_NV 0x30EC +#define EGL_SYNC_TYPE_NV 0x30ED +#define EGL_SYNC_CONDITION_NV 0x30EE +#define EGL_SYNC_FENCE_NV 0x30EF +#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0) +typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync); +EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif +#endif /* KHRONOS_SUPPORT_INT64 */ +#endif /* EGL_NV_sync */ + +#ifndef EGL_NV_system_time +#define EGL_NV_system_time 1 +typedef khronos_utime_nanoseconds_t EGLuint64NV; +#ifdef KHRONOS_SUPPORT_INT64 +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void); +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void); +#endif +#endif /* KHRONOS_SUPPORT_INT64 */ +#endif /* EGL_NV_system_time */ + +#ifndef EGL_NV_triple_buffer +#define EGL_NV_triple_buffer 1 +#define EGL_TRIPLE_BUFFER_NV 0x3230 +#endif /* EGL_NV_triple_buffer */ + +#ifndef EGL_TIZEN_image_native_buffer +#define EGL_TIZEN_image_native_buffer 1 +#define EGL_NATIVE_BUFFER_TIZEN 0x32A0 +#endif /* EGL_TIZEN_image_native_buffer */ + +#ifndef EGL_TIZEN_image_native_surface +#define EGL_TIZEN_image_native_surface 1 +#define EGL_NATIVE_SURFACE_TIZEN 0x32A1 +#endif /* EGL_TIZEN_image_native_surface */ + +#ifndef EGL_WL_bind_wayland_display +#define EGL_WL_bind_wayland_display 1 +#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC +#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC +#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC +struct wl_display; +struct wl_resource; +#define EGL_WAYLAND_BUFFER_WL 0x31D5 +#define EGL_WAYLAND_PLANE_WL 0x31D6 +#define EGL_TEXTURE_Y_U_V_WL 0x31D7 +#define EGL_TEXTURE_Y_UV_WL 0x31D8 +#define EGL_TEXTURE_Y_XUXV_WL 0x31D9 +#define EGL_TEXTURE_EXTERNAL_WL 0x31DA +#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB +typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display); +EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); +#endif +#endif /* EGL_WL_bind_wayland_display */ + +#ifndef EGL_WL_create_wayland_buffer_from_image +#define EGL_WL_create_wayland_buffer_from_image 1 +#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC +struct wl_buffer; +typedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image); +#endif +#endif /* EGL_WL_create_wayland_buffer_from_image */ + +#ifdef __cplusplus +} +#endif + +#endif /* __eglext_h_ */ + +#endif /* _MSC_VER */ diff --git a/Windows/SDL2/include/SDL_endian.h b/Windows/SDL2/include/SDL_endian.h new file mode 100644 index 0000000..5be66ea --- /dev/null +++ b/Windows/SDL2/include/SDL_endian.h @@ -0,0 +1,396 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryEndian + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include "SDL_stdinc.h" + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__sun) && defined(__SVR4) /* Solaris */ +#include +#if defined(_LITTLE_ENDIAN) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif defined(_BIG_ENDIAN) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) || defined(__sparc) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else + +/** + * Use this function to swap the byte order of a 16-bit value. + * + * \param x the value to be swapped. + * \returns the swapped value. + * + * \sa SDL_SwapBE16 + * \sa SDL_SwapLE16 + */ +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else + +/** + * Use this function to swap the byte order of a 32-bit value. + * + * \param x the value to be swapped. + * \returns the swapped value. + * + * \sa SDL_SwapBE32 + * \sa SDL_SwapLE32 + */ +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else + +/** + * Use this function to swap the byte order of a 64-bit value. + * + * \param x the value to be swapped. + * \returns the swapped value. + * + * \sa SDL_SwapBE64 + * \sa SDL_SwapLE64 + */ +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +/** + * Use this function to swap the byte order of a floating point value. + * + * \param x the value to be swapped. + * \returns the swapped value. + * + * \sa SDL_SwapFloatBE + * \sa SDL_SwapFloatLE + */ +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_error.h b/Windows/SDL2/include/SDL_error.h new file mode 100644 index 0000000..8d9cde0 --- /dev/null +++ b/Windows/SDL2/include/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryError + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string. + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any. + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread. + * \param maxlen The size of the buffer pointed to by the errstr parameter. + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_events.h b/Windows/SDL2/include/SDL_events.h new file mode 100644 index 0000000..b9596c0 --- /dev/null +++ b/Windows/SDL2/include/SDL_events.h @@ -0,0 +1,1196 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryEvents + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" +#include "SDL_keyboard.h" +#include "SDL_mouse.h" +#include "SDL_joystick.h" +#include "SDL_gamecontroller.h" +#include "SDL_quit.h" +#include "SDL_gesture.h" +#include "SDL_touch.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum SDL_EventType +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + SDL_CONTROLLERUPDATECOMPLETE_RESERVED_FOR_SDL3, + SDL_CONTROLLERSTEAMHANDLEUPDATED, /**< Game controller Steam handle has changed */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events SDL_USEREVENT through SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< SDL_KEYDOWN or SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) + +/** + * Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * Extended keyboard text editing event structure (event.editExt.*) when text + * would be truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +/** + * The maximum bytes of text that can be supplied in an SDL_TextInputEvent. + */ +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) + +/** + * Keyboard text input event structure (event.text.*) + * + * `text` is limited to SDL_TEXTINPUTEVENT_TEXT_SIZE bytes. If the incoming + * string is larger than this, SDL will split it and send it in pieces, across + * multiple events. The string is in UTF-8 format, and if split, SDL + * guarantees that it will not split in the middle of a UTF-8 sequence, so any + * event will only contain complete codepoints. However, if there are several + * codepoints that go together into a single glyph (like an emoji "thumbs up" + * followed by a skin color), they may be split between events. + * + * This event will never be delivered unless text input is enabled by calling + * SDL_StartTextInput(). Text input is enabled by default on desktop + * platforms, and disabled by default on mobile platforms! + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text; UTF-8 encoded. */ +} SDL_TextInputEvent; + +/** + * Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP + * \sa SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT + * \sa SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * Joystick device event structure (event.jdevice.*) + * + * SDL will send JOYSTICK_ADDED events for devices that are already plugged in + * during SDL_Init. + * + * \sa SDL_ControllerDeviceEvent + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< SDL_JOYDEVICEADDED or SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< SDL_CONTROLLERBUTTONDOWN or SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * Controller device event structure (event.cdevice.*) + * + * Joysticks that are supported game controllers receive both an + * SDL_JoyDeviceEvent and an SDL_ControllerDeviceEvent. + * + * SDL will send CONTROLLERDEVICEADDED events for joysticks that are already + * plugged in during SDL_Init() and are recognized as game controllers. + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< SDL_CONTROLLERDEVICEADDED, SDL_CONTROLLERDEVICEREMOVED, SDL_CONTROLLERDEVICEREMAPPED, or SDL_CONTROLLERSTEAMHANDLEUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< SDL_CONTROLLERTOUCHPADDOWN or SDL_CONTROLLERTOUCHPADMOTION or SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< SDL_AUDIODEVICEADDED, or SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< SDL_FINGERMOTION or SDL_FINGERDOWN or SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< SDL_DOLLARGESTURE or SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * An event used to request a file open by the system (event.drop.*) + * + * This event is enabled by default, you can disable it with SDL_EventState(). + * + * If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< SDL_DROPBEGIN or SDL_DROPFILE or SDL_DROPTEXT or SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< SDL_USEREVENT through SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * A video driver dependent system event (event.syswm.*) + * + * This event is disabled by default, you can enable it with SDL_EventState() + * + * If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * General event structure + * + * The SDL_Event structure is the core of all event handling in SDL. SDL_Event + * is a union of all event structures used in SDL. + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum SDL_eventaction +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events. + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve. + * \param action action to take; see [[#action|Remarks]] for details. + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice. + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice. + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details. + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details. + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details. + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details. + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL. + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL. + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL. + * \param timeout the maximum number of milliseconds to wait for the next + * available event. + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue. + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() or + * SDL_AddEventWatch, etc. + * \param event the event that triggered the callback. + * \returns 1 to permit event to be added to the queue, and 0 to disallow it. + * When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here. + * \param userdata the pointer that is passed to the current event filter will + * be stored here. + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch(). + * \param userdata the pointer originally passed to SDL_AddEventWatch(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details. + * \param state how to process the event. + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated. + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_filesystem.h b/Windows/SDL2/include/SDL_filesystem.h new file mode 100644 index 0000000..c72a616 --- /dev/null +++ b/Windows/SDL2/include/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryFilesystem + * + * Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization. + * \param app the name of your application. + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_gamecontroller.h b/Windows/SDL2/include/SDL_gamecontroller.h new file mode 100644 index 0000000..4d8bcce --- /dev/null +++ b/Windows/SDL2/include/SDL_gamecontroller.h @@ -0,0 +1,1110 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: GameController */ + +/** + * # CategoryGameController + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_rwops.h" +#include "SDL_sensor.h" +#include "SDL_joystick.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum SDL_GameControllerType +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR, + SDL_CONTROLLER_TYPE_MAX +} SDL_GameControllerType; + +typedef enum SDL_GameControllerBindType +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * If this function is called before SDL_Init, SDL will generate an + * SDL_CONTROLLERDEVICEADDED event for matching controllers that are plugged + * in at the time that SDL_Init is called. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added. + * \param freerw non-zero to close the stream after being read. + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + * \sa SDL_CONTROLLERDEVICEADDED + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current + * SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * If this function is called before SDL_Init, SDL will generate an + * SDL_CONTROLLERDEVICEADDED event for matching controllers that are plugged + * in at the time that SDL_Init is called. + * + * \param mappingString the mapping string. + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + * \sa SDL_CONTROLLERDEVICEADDED + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired. + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for. + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks(). + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1. + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1. + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1. + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks(). + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for. + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen(). + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen(). + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Get the Steam Input handle of an opened controller, if available. + * + * Returns an InputHandle_t for the controller that can be used with Steam + * Input API: https://partner.steamgames.com/doc/api/ISteamInput + * + * \param gamecontroller the game controller object to query. + * \returns the gamepad handle, or 0 if unavailable. + * + * \since This function is available since SDL 2.30.0. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GameControllerGetSteamHandle(SDL_GameController *gamecontroller); + + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen(). + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from. + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`. + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to + * SDL_JOYSTICK_AXIS_MAX, and are centered within ~8000 of zero, though + * advanced UI will allow users to set or autodetect the dead zone, which + * varies between controllers. + * + * Trigger axis values range from 0 (released) to SDL_JOYSTICK_AXIS_MAX (fully + * pressed) when reported by SDL_GameControllerGetAxis(). Note that this is + * not the same range that will be reported by the lower-level + * SDL_GetJoystickAxis(). + */ +typedef enum SDL_GameControllerAxis +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis. + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis. + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller. + * \param axis an axis enum value (one of the SDL_GameControllerAxis values). + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller. + * \param axis an axis enum value (an SDL_GameControllerAxis value). + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * For thumbsticks, the state is a value ranging from -32768 (up/left) to + * 32767 (down/right). + * + * Triggers range from 0 when released to 32767 when fully pressed, and never + * return a negative value. Note that this differs from the value reported by + * the lower-level SDL_JoystickGetAxis(), which normally uses the full range. + * + * \param gamecontroller a game controller. + * \param axis an axis index (one of the SDL_GameControllerAxis values). + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum SDL_GameControllerButton +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis. + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton. + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller. + * \param button an button enum value (an SDL_GameControllerButton value). + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller. + * \param button a button enum value (an SDL_GameControllerButton value). + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller. + * \param button a button index (one of the SDL_GameControllerButton values). + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query. + * \param type The type of sensor to query. + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update. + * \param type The type of sensor to enable/disable. + * \param enabled Whether data reporting should be enabled. + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query. + * \param type The type of sensor to query. + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query. + * \param type The type of sensor to query. + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query. + * \param type The type of sensor to query. + * \param data A pointer filled with the current sensor state. + * \param num_values The number of values to write to data. + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query. + * \param type The type of sensor to query. + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not. + * \param data A pointer filled with the current sensor state. + * \param num_values The number of values to write to data. + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate. + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF. + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF. + * \param duration_ms The duration of the rumble effect, in milliseconds. + * \returns 0, or -1 if rumble isn't supported on this controller. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate. + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF. + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF. + * \param duration_ms The duration of the rumble effect, in milliseconds. + * \returns 0, or -1 if trigger rumble isn't supported on this controller. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query. + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query. + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query. + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update. + * \param red The intensity of the red LED. + * \param green The intensity of the green LED. + * \param blue The intensity of the blue LED. + * \returns 0, or -1 if this controller does not have a modifiable LED. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect. + * \param data The data to send to the controller. + * \param size The size of the data to send to the controller. + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query. + * \param button a button on the game controller. + * \returns the sfSymbolsName or NULL if the name can't be found. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query. + * \param axis an axis on the game controller. + * \returns the sfSymbolsName or NULL if the name can't be found. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_gesture.h b/Windows/SDL2/include/SDL_gesture.h new file mode 100644 index 0000000..acfa56f --- /dev/null +++ b/Windows/SDL2/include/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryGesture + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "SDL_touch.h" + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices. + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to. + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id. + * \param dst a SDL_RWops to save to. + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id. + * \param src a SDL_RWops to load from. + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_guid.h b/Windows/SDL2/include/SDL_guid.h new file mode 100644 index 0000000..fd9a50e --- /dev/null +++ b/Windows/SDL2/include/SDL_guid.h @@ -0,0 +1,107 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: GUID */ + +/** + * # CategoryGUID + * + * A GUID is a 128-bit value that represents something that is uniquely + * identifiable by this value: "globally unique." + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier. + * + * This is an acronym for "Globally Unique ID." + * + * While a GUID can be used to assign a unique value to almost anything, in + * SDL these are largely used to identify input devices across runs of SDL + * programs on the same platform.If the device is detached and then + * re-attached to a different port, or if the base system is rebooted, the + * device should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to distinguish + * physically distinct but equivalent devices. For example, two game + * controllers from the same vendor with the same product ID and revision may + * have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report different + * GUIDs on different operating systems). + */ +typedef struct SDL_GUID { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_GUID you wish to convert to string. + * \param pszGUID buffer in which to write the ASCII string. + * \param cbGUID the size of pszGUID. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID. + * \returns a SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_haptic.h b/Windows/SDL2/include/SDL_haptic.h new file mode 100644 index 0000000..f679c57 --- /dev/null +++ b/Windows/SDL2/include/SDL_haptic.h @@ -0,0 +1,1354 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryHaptic + * + * SDL haptic subsystem allows you to control haptic (force feedback) devices. + * + * The basic usage is as follows: + * + * - Initialize the subsystem (SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * Simple rumble example: + * + * ```c + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * ``` + * + * Complete example: + * + * ```c + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * ``` + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_joystick.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * Use this value to play an effect on the steering wheel axis. + * + * This provides better compatibility across platforms and devices as SDL will + * guess the correct axis. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * Structure that represents a haptic direction. + * + * This is the direction where the force comes from, instead of the direction + * in which the force is exerted. + * + * Directions can be specified by: + * + * - SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning of + * the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * + * ``` + * .--. + * |__| .-------. + * |=.| |.-----.| + * |--| || || + * | | |'-----'| + * |__|~')_____(' + * [ COMPUTER ] + * + * + * North (0,-1) + * ^ + * | + * | + * (-1,0) West <----[ HAPTIC ]----> East (1,0) + * | + * | + * v + * South (0,1) + * + * + * [ USER ] + * \|||/ + * (o o) + * ---ooO-(_)-Ooo--- + * ``` + * + * If type is SDL_HAPTIC_POLAR, direction is encoded by hundredths of a degree + * starting north and turning clockwise. SDL_HAPTIC_POLAR only uses the first + * `dir` parameter. The cardinal directions would be: + * + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is SDL_HAPTIC_CARTESIAN, direction is encoded by three positions (X + * axis, Y axis and Z axis (with 3 axes)). SDL_HAPTIC_CARTESIAN uses the first + * three `dir` parameters. The cardinal directions would be: + * + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise it's + * unused. In cartesian encoding (1, 2) would be the same as (2, 4), you can + * use any multiple you want, only the direction matters. + * + * If type is SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. The + * first two `dir` parameters are used. The `dir` parameters are as follows + * (all values are in hundredths of degrees): + * + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * + * ```c + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * ``` + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * A structure containing a template for a Constant effect. + * + * This struct is exclusively for the SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction to + * the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * + * - SDL_HAPTIC_SINE + * - SDL_HAPTIC_SQUARE + * - SDL_HAPTIC_TRIANGLE + * - SDL_HAPTIC_SAWTOOTHUP + * - SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself over + * time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a + * value of 9000 will displace it 25% of its period. Here are sample values: + * + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * + * ``` + * SDL_HAPTIC_SINE + * __ __ __ __ + * / \ / \ / \ / + * / \__/ \__/ \__/ + * + * SDL_HAPTIC_SQUARE + * __ __ __ __ __ + * | | | | | | | | | | + * | |__| |__| |__| |__| | + * + * SDL_HAPTIC_TRIANGLE + * /\ /\ /\ /\ /\ + * / \ / \ / \ / \ / + * / \/ \/ \/ \/ + * + * SDL_HAPTIC_SAWTOOTHUP + * /| /| /| /| /| /| /| + * / | / | / | / | / | / | / | + * / |/ |/ |/ |/ |/ |/ | + * + * SDL_HAPTIC_SAWTOOTHDOWN + * \ |\ |\ |\ |\ |\ |\ | + * \ | \ | \ | \ | \ | \ | \ | + * \| \| \| \| \| \| \| + * ``` + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< SDL_HAPTIC_SINE, SDL_HAPTIC_LEFTRIGHT, + SDL_HAPTIC_TRIANGLE, SDL_HAPTIC_SAWTOOTHUP or + SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * + * - SDL_HAPTIC_SPRING: Effect based on axes position. + * - SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third refers + * to the Z axis. The right terms refer to the positive side of the axis and + * the left terms refer to the negative side of the axis. Please refer to the + * SDL_HapticDirection diagram for which side is positive and which is + * negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< SDL_HAPTIC_SPRING, SDL_HAPTIC_DAMPER, + SDL_HAPTIC_INERTIA or SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. It + * augments in linear fashion. If you use attack and fade with a ramp the + * effects get added to the ramp effect making the effect become quadratic + * instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * A structure containing a template for the SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the data + * yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. Time + * values unless specified otherwise are in milliseconds. + * + * You can also pass SDL_HAPTIC_INFINITY to length instead of a 0-32767 value. + * Neither delay, interval, attack_length nor fade_length support + * SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the SDL_HAPTIC_RAMP effect does not support a duration of + * SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like the + * joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * + * ```c + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * ``` + * + * Here we have an example of a constant effect evolution in time: + * + * ``` + * Strength + * ^ + * | + * | effect level --> _________________ + * | / \ + * | / \ + * | / \ + * | / \ + * | attack_level --> | \ + * | | | <--- fade_level + * | + * +--------------------------------------------------> Time + * [--] [---] + * attack_length fade_length + * + * [------------------][-----------------------] + * delay length + * ``` + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open. + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query. + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query. + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities. + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from. + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query. + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects. + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query. + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query. + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query. + * \param effect the desired effect to query. + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on. + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create. + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect. + * \param effect the identifier of the effect to update. + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on. + * \param effect the ID of the haptic effect to run. + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on. + * \param effect the ID of the haptic effect to stop. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on. + * \param effect the ID of the haptic effect to destroy. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on. + * \param effect the ID of the haptic effect to query its status. + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on. + * \param gain value to set the gain to, should be between 0 and 100 (0 - + * 100). + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on. + * \param autocenter value to set autocenter to (0-100). + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support. + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on. + * \param strength strength of the rumble to play as a 0-1 float value. + * \param length length of the rumble to play in milliseconds. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_hidapi.h b/Windows/SDL2/include/SDL_hidapi.h new file mode 100644 index 0000000..b14442a --- /dev/null +++ b/Windows/SDL2/include/SDL_hidapi.h @@ -0,0 +1,443 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: HIDAPI */ + +/** + * # CategoryHIDAPI + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, and + * includes source code licensed under the following license: + * + * ``` + * HIDAPI - Multi-Platform library for + * communication with HID devices. + * + * Copyright 2009, Alan Ott, Signal 11 Software. + * All Rights Reserved. + * + * This software may be used by anyone for any reason so + * long as the copyright notice in the source files + * remains intact. + * ``` + * + * (Note that this license is the same as item three of SDL's zlib license, so + * it adds no new requirements on the user.) + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for + * example on iOS or tvOS to avoid a dependency on the CoreBluetooth + * framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ + +/** + * Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open. + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_hints.h b/Windows/SDL2/include/SDL_hints.h new file mode 100644 index 0000000..6713d01 --- /dev/null +++ b/Windows/SDL2/include/SDL_hints.h @@ -0,0 +1,3303 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryHints + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, as well as + * listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is the + * environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be supported or + * applicable on any given platform, but they provide a way for an application + * or user to give the library a hint as to how they would like the library to + * work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * A variable controlling whether the Android / iOS built-in accelerometer + * should be listed as a joystick device. + * + * This variable can be set to the following values: + * + * - "0": The accelerometer is not listed as a joystick + * - "1": The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is + * grabbed and your window is full-screen. This prevents the user from getting + * stuck in your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * + * - "0": SDL will not handle Alt+Tab. Your application is responsible for + * handling Alt+Tab while the keyboard is grabbed. + * - "1": SDL will minimize your window when Alt+Tab is pressed (default) + */ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * If set to "0" then never set the top most bit on a SDL Window, even if the + * video mode expects it. + * + * This is a debugging aid for developers and not expected to be used by end + * users. The default is "1" + * + * This variable can be set to the following values: + * + * - "0": don't allow topmost + * - "1": allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * Android APK expansion main file version. + * + * Should be a string number like "1", "2" etc. + * + * Must be set together with + * SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and + * assets. + * + * By default this hint is not set and the APK expansion files are not + * searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * Android APK expansion patch file version. + * + * Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and + * assets. + * + * By default this hint is not set and the APK expansion files are not + * searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * A variable to control whether the event loop will block itself when the app + * is paused. + * + * The variable can be set to the following values: + * + * - "0": Non blocking. + * - "1": Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * A variable to control whether SDL will pause audio in background (Requires + * SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * + * - "0": Non paused. + * - "1": Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * A variable to control whether we trap the Android back button to handle it + * manually. + * + * This is necessary for the right mouse button to work on some Android + * devices, or to be able to trap the back button for use in your code + * reliably. If set to true, the back button will show up as an SDL_KEYDOWN / + * SDL_KEYUP pair with a keycode of SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * + * - "0": Back button will be handled as usual for system. (default) + * - "1": Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems where the + * right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any + * time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * A variable controlling whether controllers used with the Apple TV generate + * UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when + * the pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * + * - "0": Controller input does not generate UI events (the default). + * - "1": Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * A variable controlling whether the Apple TV remote's joystick axes will + * automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * + * - "0": Remote orientation does not affect joystick axes (the default). + * - "1": Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * - "ambient": Use the AVAudioSessionCategoryAmbient audio category, will be + * muted by the phone mute switch (default) + * - "playback": Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in a + * system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is + * available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * - "0" or "default": Use SDL's internal resampling (Default when not set - + * low quality, fast) + * - "1" or "fast": Use fast, slightly higher quality resampling, if available + * - "2" or "medium": Use medium quality resampling, if available + * - "3" or "best": Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * A variable controlling whether SDL updates joystick state when getting + * input events + * + * This variable can be set to the following values: + * + * - "0": You'll call SDL_JoystickUpdate() manually + * - "1": SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * A variable controlling whether SDL updates sensor state when getting input + * events + * + * This variable can be set to the following values: + * + * - "0": You'll call SDL_SensorUpdate() manually + * - "1": SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support + * and SDL will use it when required. Should this not be desired, this hint + * can force the use of the 40 byte header version which is supported + * everywhere. + * + * The variable can be set to the following values: + * + * - "0": Surfaces with a colorkey or an alpha channel are saved to a 32-bit + * BMP file with an alpha mask. SDL will use the bitmap header version 4 and + * set the alpha mask accordingly. + * - "1": Surfaces with a colorkey or an alpha channel are saved to a 32-bit + * BMP file without an alpha mask. The alpha channel data will be in the + * file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first is + * the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * Disable giving back control to the browser automatically when running with + * asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations such as + * refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * + * - "0": Disable emscripten_sleep calls (if you give back browser control + * manually or use asyncify for other purposes) + * - "1": Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform. + * + * The variable can be one of: + * + * - "#window": the javascript window object (this is the default) + * - "#document": the javascript document object + * - "#screen": the javascript window.screen object + * - "#canvas": the WebGL canvas element + * + * Any other string without a leading # sign applies to the element on the + * page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * A variable that controls whether the on-screen keyboard should be shown + * when text input is active + * + * The variable can be set to the following values: + * + * - "0": Do not show the on-screen keyboard + * - "1": Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is + * activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * A variable controlling verbosity of the logging of SDL events pushed onto + * the internal queue. + * + * This variable can be set to the following values, from least to most + * verbose: + * + * - "0": Don't log any events (default) + * - "1": Log most events (other than the really spammy ones). + * - "2": Include mouse and finger motion events. + * - "3": Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * A variable controlling whether raising the window should be done more + * forcefully + * + * This variable can be set to the following values: + * + * - "0": No forcing (the default) + * - "1": Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly + * impossible to programmatically move a window to the foreground, for + * "security" reasons. See http://stackoverflow.com/a/34414846 for a + * discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * A variable controlling how 3D acceleration is used to accelerate the SDL + * screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and how + * this is done. + * + * This variable can be set to the following values: + * + * - "0": Disable 3D acceleration + * - "1": Enable 3D acceleration, using the default renderer. + * - "X": Enable 3D acceleration, using X where X is one of the valid + * rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether to use + * acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config + * data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) You + * can update mappings after the system is initialized with + * SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * A variable that lets you provide a file with extra gamecontroller db + * entries. + * + * The file should contain lines of gamecontroller config data, see + * SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) You + * can update mappings after the system is initialized with + * SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: Xbox360 XboxOne PS3 PS4 PS5 SwitchPro + * + * This hint affects what driver is used, and must be set before calling + * SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * A variable containing a list of devices to skip when scanning for game + * controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * If set, all devices will be skipped when scanning for game controllers + * except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * If set, game controller face buttons report their values according to their + * labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * ``` + * (Y) + * (X) (B) + * (A) + * ``` + * + * but if this hint is set, you'll get: + * + * ``` + * (X) + * (Y) (A) + * (B) + * ``` + * + * The variable can be set to the following values: + * + * - "0": Report the face buttons by position, as though they were on an Xbox + * controller. + * - "1": Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * + * - "0": Grab will affect only the mouse + * - "1": Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, + * you might have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * + * - "0": Enable idle timer + * - "1": Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * A variable to control whether certain IMEs should handle text editing + * internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * + * - "0": SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and differentiate it + * somehow from committed text. (default) + * - "1": If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * A variable to control whether certain IMEs should show native UI components + * (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * + * - "0": Native UI components are not display. (default) + * - "1": Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * A variable to control if extended IME text support is enabled. + * + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be + * truncated otherwise. Additionally SDL_TextInputEvent will be dispatched + * multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * + * - "0": Legacy behavior. Text can be truncated, no heap allocations. + * (default) + * - "1": Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * A variable controlling whether the home indicator bar on iPhone X should be + * hidden. + * + * This variable can be set to the following values: + * + * - "0": The indicator bar is not hidden (default for windowed applications) + * - "1": The indicator bar is hidden and is shown when the screen is touched + * (useful for movie playback applications) + * - "2": The indicator bar is dim and the first swipe makes it visible and + * the second swipe performs the "home" action (default for fullscreen + * applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * A variable that lets you enable joystick (and gamecontroller) events even + * when your app is in the background. + * + * The variable can be set to the following values: + * + * - "0": Disable joystick & gamecontroller input events when the application + * is in the background. + * - "1": Enable joystick & gamecontroller input events when the application + * is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * A variable containing a list of arcade stick style controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES "SDL_JOYSTICK_ARCADESTICK_DEVICES" + +/** + * A variable containing a list of devices that are not arcade stick style + * controllers. + * + * This will override SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES and the built in + * device list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED" + +/** + * A variable containing a list of devices that should not be considerd + * joysticks. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES "SDL_JOYSTICK_BLACKLIST_DEVICES" + +/** + * A variable containing a list of devices that should be considered + * joysticks. + * + * This will override SDL_HINT_JOYSTICK_BLACKLIST_DEVICES and the built in + * device list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED "SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED" + +/** + * A variable containing a list of flightstick style controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES "SDL_JOYSTICK_FLIGHTSTICK_DEVICES" + +/** + * A variable containing a list of devices that are not flightstick style + * controllers. + * + * This will override SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES and the built in + * device list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED" + +/** + * A variable containing a list of devices known to have a GameCube form + * factor. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES "SDL_JOYSTICK_GAMECUBE_DEVICES" + +/** + * A variable containing a list of devices known not to have a GameCube form + * factor. + * + * This will override SDL_HINT_JOYSTICK_GAMECUBE_DEVICES and the built in + * device list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED "SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED" + +/** + * A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI drivers are not used + * - "1": HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the + * hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * A variable controlling whether the HIDAPI driver for Nintendo GameCube + * controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * A variable controlling whether "low_frequency_rumble" and + * "high_frequency_rumble" is used to implement the GameCube controller's 3 + * rumble modes, Stop(0), Rumble(1), and StopHard(2) this is useful for + * applications that need full compatibility for things like ADSR envelopes. + * + * Stop is implemented by setting "low_frequency_rumble" to "0" and + * "high_frequency_rumble" ">0" Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and + * "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * + * - "0": Normal rumble behavior is behavior is used (default) + * - "1": Proper GameCube controller rumble behavior is used + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * A variable controlling whether the HIDAPI driver for Nintendo Switch + * Joy-Cons should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * A variable controlling whether Nintendo Switch Joy-Con controllers will be + * combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * + * - "0": Left and right Joy-Con controllers will not be combined and each + * will be a mini-gamepad + * - "1": Left and right Joy-Con controllers will be combined into a single + * controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * A variable controlling whether Nintendo Switch Joy-Con controllers will be + * in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * + * - "0": Left and right Joy-Con controllers will not be in vertical mode (the + * default) + * - "1": Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * A variable controlling whether the HIDAPI driver for Amazon Luna + * controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * A variable controlling whether the HIDAPI driver for Nintendo Online + * classic controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * A variable controlling whether the HIDAPI driver for NVIDIA SHIELD + * controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * A variable controlling whether the HIDAPI driver for PS3 controllers should + * be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on + * other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the + * default drivers installed. See https://github.com/ViGEm/DsHidMini for an + * alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * A variable controlling whether the HIDAPI driver for PS4 controllers should + * be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * A variable controlling whether extended input reports should be used for + * PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * + * - "0": extended reports are not enabled (the default) + * - "1": extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but break + * DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without power + * cycling the controller. + * + * For compatibility with applications written for versions of SDL prior to + * the introduction of PS5 controller support, this value will also control + * the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * A variable controlling whether the HIDAPI driver for PS5 controllers should + * be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * A variable controlling whether the player LEDs should be lit to indicate + * which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * + * - "0": player LEDs are not enabled + * - "1": player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * A variable controlling whether extended input reports should be used for + * PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * + * - "0": extended reports are not enabled (the default) + * - "1": extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but break + * DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without power + * cycling the controller. + * + * For compatibility with applications written for versions of SDL prior to + * the introduction of PS5 controller support, this value defaults to the + * value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * A variable controlling whether the HIDAPI driver for Google Stadia + * controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * A variable controlling whether the HIDAPI driver for Bluetooth Steam + * Controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used for Steam Controllers, which requires + * Bluetooth access and may prompt the user for permission on iOS and + * Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * A variable controlling whether the HIDAPI driver for the Steam Deck builtin + * controller should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK "SDL_JOYSTICK_HIDAPI_STEAMDECK" + +/** + * A variable controlling whether the HIDAPI driver for Nintendo Switch + * controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * A variable controlling whether the Home button LED should be turned on when + * a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * + * - "0": home button LED is turned off + * - "1": home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be + * set to a floating point value between 0.0 and 1.0 which controls the + * brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * A variable controlling whether the Home button LED should be turned on when + * a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * + * - "0": home button LED is turned off + * - "1": home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be + * set to a floating point value between 0.0 and 1.0 which controls the + * brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * A variable controlling whether the player LEDs should be lit to indicate + * which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * + * - "0": player LEDs are not enabled + * - "1": player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U + * controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE + * for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * A variable controlling whether the player LEDs should be lit to indicate + * which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * + * - "0": player LEDs are not enabled + * - "1": player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * A variable controlling whether the HIDAPI driver for XBox controllers + * should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of + * SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * A variable controlling whether the HIDAPI driver for XBox 360 controllers + * should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * A variable controlling whether the player LEDs should be lit to indicate + * which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * + * - "0": player LEDs are not enabled + * - "1": player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * A variable controlling whether the HIDAPI driver for XBox 360 wireless + * controllers should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * A variable controlling whether the HIDAPI driver for XBox One controllers + * should be used. + * + * This variable can be set to the following values: + * + * - "0": HIDAPI driver is not used + * - "1": HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * A variable controlling whether the Home button LED should be turned on when + * an Xbox One controller is opened + * + * This variable can be set to the following values: + * + * - "0": home button LED is turned off + * - "1": home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be + * set to a floating point value between 0.0 and 1.0 which controls the + * brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * A variable controlling whether IOKit should be used for controller + * handling. + * + * This variable can be set to the following values: + * + * - "0": IOKit is not used + * - "1": IOKit is used (the default) + */ +#define SDL_HINT_JOYSTICK_IOKIT "SDL_JOYSTICK_IOKIT" + +/** + * A variable controlling whether GCController should be used for controller + * handling. + * + * This variable can be set to the following values: + * + * - "0": GCController is not used + * - "1": GCController is used (the default) + */ +#define SDL_HINT_JOYSTICK_MFI "SDL_JOYSTICK_MFI" + +/** + * A variable controlling whether the RAWINPUT joystick drivers should be used + * for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * + * - "0": RAWINPUT drivers are not used + * - "1": RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * A variable controlling whether the RAWINPUT driver should pull correlated + * data from XInput. + * + * This variable can be set to the following values: + * + * - "0": RAWINPUT driver will only use data from raw input APIs + * - "1": RAWINPUT driver will also pull data from XInput, providing better + * trigger axes, guide button presses, and rumble support for Xbox + * controllers + * + * The default is "1". This hint applies to any joysticks opened after setting + * the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * A variable controlling whether the ROG Chakram mice should show up as + * joysticks + * + * This variable can be set to the following values: + * + * - "0": ROG Chakram mice do not show up as joysticks (the default) + * - "1": ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * A variable controlling whether a separate thread should be used for + * handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * + * - "0": A separate thread is not used (the default) + * - "1": A separate thread is used for handling raw input messages + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * A variable containing a list of throttle style controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES "SDL_JOYSTICK_THROTTLE_DEVICES" + +/** + * A variable containing a list of devices that are not throttle style + * controllers. + * + * This will override SDL_HINT_JOYSTICK_THROTTLE_DEVICES and the built in + * device list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED "SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED" + +/** + * A variable controlling whether Windows.Gaming.Input should be used for + * controller handling. + * + * This variable can be set to the following values: + * + * - "0": WGI is not used + * - "1": WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * A variable containing a list of wheel style controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_WHEEL_DEVICES "SDL_JOYSTICK_WHEEL_DEVICES" + +/** + * A variable containing a list of devices that are not wheel style + * controllers. + * + * This will override SDL_HINT_JOYSTICK_WHEEL_DEVICES and the built in device + * list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED "SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED" + +/** + * A variable containing a list of devices known to have all axes centered at + * zero. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES "SDL_JOYSTICK_ZERO_CENTERED_DEVICES" + +/** + * Determines whether SDL enforces that DRM master is required in order to + * initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client + * that has the ability to set planes, set cursor, etc. When SDL is DRM + * master, it can draw to the screen using the SDL rendering APIs. Without DRM + * master, SDL is still able to process input and query attributes of attached + * displays, but it cannot change display state or draw to the screen + * directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it + * cannot be used for rendering. An app may want to use SDL for input + * processing while using another rendering API (such as an MMAL overlay on + * Raspberry Pi) or using its own code to render to DRM overlays that SDL + * doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * + * - "0": SDL will allow usage of the KMSDRM backend without DRM master + * - "1": SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + + +/** + * A variable containing a list of devices and their desired number of haptic + * (force feedback) enabled axis. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form plus the number of desired axes, e.g. + * + * `0xAAAA/0xBBBB/1,0xCCCC/0xDDDD/3` + * + * This hint supports a "wildcard" device that will set the number of haptic + * axes on all initialized haptic devices which were not defined explicitly in + * this hint. + * + * `0xFFFF/0xFFFF/1` + * + * This hint should be set before a controller is opened. The number of haptic + * axes won't exceed the number of real axes found on the device. + */ +#define SDL_HINT_JOYSTICK_HAPTIC_AXES "SDL_JOYSTICK_HAPTIC_AXES" + +/** + * A variable controlling whether joysticks on Linux will always treat 'hat' + * axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking + * whether they may be analog. + * + * This variable can be set to the following values: + * + * - "0": Only map hat axis inputs to digital hat outputs if the input axes + * appear to actually be digital (the default) + * - "1": Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as + * digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * A variable controlling whether digital hats on Linux will apply deadzones + * to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * + * - "0": Return digital hat values based on unfiltered input axis values + * - "1": Return digital hat values with deadzones on the input axes taken + * into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * A variable controlling whether to use the classic /dev/input/js* joystick + * interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * + * - "0": Use /dev/input/event* + * - "1": Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * A variable controlling whether joysticks on Linux adhere to their + * HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * + * - "0": Return unfiltered joystick axis values (the default) + * - "1": Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** + * A variable controlling the default SDL log levels. + * + * This variable is a comma separated set of category=level tokens that define + * the default logging levels for SDL applications. + * + * The category can be a numeric category, one of "app", "error", "assert", + * "system", "audio", "video", "render", "input", "test", or `*` for any + * unspecified category. + * + * The level can be a numeric level, one of "verbose", "debug", "info", + * "warn", "error", "critical", or "quiet" to disable that category. + * + * You can omit the category if you want to set the logging level for all + * categories. + * + * If this hint isn't set, the default log levels are equivalent to: + * "app=info,assert=warn,test=verbose,*=error" + */ +#define SDL_HINT_LOGGING "SDL_LOGGING" + +/** + * When set don't force the SDL app to become a foreground process + * + * This hint only applies to Mac OS X. + */ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * A variable that determines whether ctrl+click should generate a right-click + * event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * A variable controlling whether dispatching OpenGL context updates should + * block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * + * - "0": Dispatching OpenGL context updates will block the dispatching thread + * until the main thread finishes processing (default). + * - "1": Dispatching OpenGL context updates will allow the dispatching thread + * to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background + * thread on a Mac, and the main thread hangs because it's waiting for that + * background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * + * - "0": Ignore mouse clicks that activate a window + * - "1": Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * A variable setting the speed scale for mouse motion, in floating point, + * when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * A variable controlling whether relative mouse mode constrains the mouse to + * the center of the window + * + * This variable can be set to the following values: + * + * - "0": Relative mouse mode constrains the mouse to the window + * - "1": Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and + * when the application is running over RDP. Constraining to the whole window + * works better for 2D games and increases the chance that the mouse will be + * in the correct position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * A variable controlling whether relative mouse mode is implemented using + * mouse warping + * + * This variable can be set to the following values: + * + * - "0": Relative mouse mode uses raw input + * - "1": Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * A variable controlling whether relative mouse motion is affected by + * renderer scaling + * + * This variable can be set to the following values: + * + * - "0": Relative motion is unaffected by DPI or renderer's logical size + * - "1": Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * A variable setting the scale for mouse motion, in floating point, when the + * mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * A variable controlling whether the system mouse acceleration curve is used + * for relative mouse motion. + * + * This variable can be set to the following values: + * + * - "0": Relative mouse motion will be unscaled (the default) + * - "1": Relative mouse motion will be scaled using the system mouse + * acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the + * system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * A variable controlling whether a motion event should be generated for mouse + * warping in relative mode. + * + * This variable can be set to the following values: + * + * - "0": Warping the mouse will not generate a motion event in relative mode + * - "1": Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative + * mode. This avoids the application having to filter out large relative + * motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * A variable controlling whether the hardware cursor stays visible when + * relative mode is active. + * + * This variable can be set to the following values: "0" - The cursor will be + * hidden while relative mode is active (default) "1" - The cursor will remain + * visible while relative mode is active + * + * Note that for systems without raw hardware inputs, relative mode is + * implemented using warping, so the hardware cursor will visibly warp between + * frames if this is enabled on those systems. + */ +#define SDL_HINT_MOUSE_RELATIVE_CURSOR_VISIBLE "SDL_MOUSE_RELATIVE_CURSOR_VISIBLE" + +/** + * A variable controlling whether mouse events should generate synthetic touch + * events + * + * This variable can be set to the following values: + * + * - "0": Mouse events will not generate touch events (default for desktop + * platforms) + * - "1": Mouse events will generate touch events (default for mobile + * platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * A variable controlling whether the mouse is captured while mouse buttons + * are pressed + * + * This variable can be set to the following values: + * + * - "0": The mouse is not captured while mouse buttons are pressed + * - "1": The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the + * mouse is dragged outside the window, the application continues to receive + * mouse events until the button is released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before any + * calls to SDL_Init() + * + * The variable can be set to the following values: + * + * - "0": SDL will install a SIGINT and SIGTERM handler, and when it catches a + * signal, convert it into an SDL_QUIT event. + * - "1": SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an OpenGL ES + * library. + * + * Circumstances where this is useful include - Testing an app with a + * particular OpenGL ES implementation, e.g ANGLE, or emulator, e.g. those + * from ARM, Imagination or Qualcomm. - Resolving OpenGL ES function addresses + * at link time by linking with the OpenGL ES library instead of querying them + * at run time with SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function addresses at + * run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native or + * not supported. + * + * This variable can be set to the following values: + * + * - "0": Use ES profile of OpenGL, if available. (Default when not set.) + * - "1": Load OpenGL ES library using the default library names. + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * + * - "LandscapeLeft" + * - "LandscapeRight" + * - "Portrait" + * - "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * A variable controlling the use of a sentinel event when polling the event + * queue + * + * This variable can be set to the following values: + * + * - "0": Disable poll sentinels + * - "1": Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from + * devices. If a device keeps producing new events between calls to + * SDL_PumpEvents, a poll loop will become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate a + * SDL_LOCALECHANGED event (but if you can change the hint, you can push your + * own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its + * contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * + * - "primary" (default) + * - "portrait" + * - "landscape" + * - "inverted-portrait" + * - "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values + * above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * Flags to set on QtWayland windows to integrate with the native window + * manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe + * gestures. + * + * This variable is a space-separated list of the following values (empty = no + * flags): + * + * - "OverridesSystemGestures" + * - "StaysOnTop" + * - "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * A variable controlling whether the 2D render API is compatible or + * efficient. + * + * This variable can be set to the following values: + * + * - "0": Don't use batching to make rendering more efficient. + * - "1": Use batching, but might cause problems if app makes its own direct + * OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can be + * used to explicitly request batching in this instance. It is a contract that + * you will either never use the underlying graphics API directly, or if you + * do, you will call SDL_RenderFlush() before you do so any current batch goes + * to the GPU before your work begins. Not following this contract will result + * in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * + * - "0": Use the default line drawing method (Bresenham's line algorithm as + * of SDL 2.0.20) + * - "1": Use the driver point API using Bresenham's line algorithm (correct, + * draws many points) + * - "2": Use the driver line API (occasionally misses line endpoints based on + * hardware driver quirks, was the default before 2.0.20) + * - "3": Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * + * - "0": Disable Debug Layer use + * - "1": Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * A variable controlling whether the Direct3D device is initialized for + * thread-safe operations. + * + * This variable can be set to the following values: + * + * - "0": Thread-safety is not enabled (faster) + * - "1": Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * + * - "direct3d" + * - "direct3d11" + * - "direct3d12" + * - "opengl" + * - "opengles2" + * - "opengles" + * - "metal" + * - "software" + * + * The default varies by platform, but it's the first one in the list that is + * available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on + * screen "1" or "overscan" - Will zoom the rendering so it fills the entire + * screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * A variable controlling whether the OpenGL render driver uses shaders if + * they are available. + * + * This variable can be set to the following values: + * + * - "0": Disable shaders + * - "1": Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * A variable controlling the scaling quality + * + * This variable can be set to the following values: + * + * - "0" or "nearest": Nearest pixel sampling + * - "1" or "linear": Linear filtering (supported by OpenGL and Direct3D) + * - "2" or "best": Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * A variable controlling whether updates to the SDL screen surface should be + * synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * + * - "0": Disable vsync + * - "1": Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * A variable controlling whether the Metal render driver select low power + * device over default one + * + * This variable can be set to the following values: + * + * - "0": Use the prefered OS device + * - "1": Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * A variable containing a list of ROG gamepad capable mice. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_ROG_GAMEPAD_MICE "SDL_ROG_GAMEPAD_MICE" + +/** + * A variable containing a list of devices that are not ROG gamepad capable + * mice. + * + * This will override SDL_HINT_ROG_GAMEPAD_MICE and the built in device list. + * + * The format of the string is a comma separated list of USB VID/PID pairs in + * hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named file + * will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED "SDL_ROG_GAMEPAD_MICE_EXCLUDED" + +/** + * A variable controlling if VSYNC is automatically disable if doesn't reach + * the enough FPS + * + * This variable can be set to the following values: + * + * - "0": It will be using VSYNC as defined in the main flag. Default + * - "1": If VSYNC was previously enabled, then it will disable VSYNC if + * doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * A variable to control whether the return key on the soft keyboard should + * hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * + * - "0": The return key will be handled as a key event. This is the behaviour + * of SDL <= 2.0.3. (default) + * - "1": The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any + * time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as + * realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to + * restrictions that require special handling by the application. This hint + * exists to let SDL know that the app is prepared to handle said + * restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that + * becomes realtime: + * + * - The SCHED_RESET_ON_FORK bit will be set on the scheduling policy. + * - An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * - Exceeding this limit will result in the kernel sending SIGKILL to the + * app. + * + * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * + * - "0": default platform specific behaviour + * - "1": Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling + * policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** + * A string specifying additional information to use with + * SDL_SetThreadPriority. + * + * By default SDL_SetThreadPriority will make appropriate system changes in + * order to apply a thread priority. For example on systems using pthreads the + * scheduler policy is changed automatically to a policy that works well with + * a given priority. Code which has specific requirements can override SDL's + * default behavior with this hint. + * + * pthread hint values are "current", "other", "fifo" and "rr". Currently no + * other platform hint values are defined but may be in the future. + */ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** + * A string specifying SDL's threads stack size in bytes or "0" for the + * backend's default size + * + * Use this hint in case you need to set SDL's threads stack size to other + * than the default. This is specially useful if you build SDL against a non + * glibc libc library (such as musl) which provides a relatively small default + * thread stack size (a few kilobytes versus the default 8MB glibc uses). + * Support for this hint is currently available only in the pthread, Windows, + * and PSP backend. + * + * Instead of this hint, in 2.0.9 and later, you can use + * SDL_CreateThreadWithStackSize(). This hint only works with the classic + * SDL_CreateThread(). + */ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services timer + * interrupts, and the more precise delays are, but this takes up power and + * CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * A variable controlling whether touch events should generate synthetic mouse + * events + * + * This variable can be set to the following values: + * + * - "0": Touch events will not generate mouse events + * - "1": Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * A variable controlling which touchpad should generate synthetic mouse + * events + * + * This variable can be set to the following values: + * + * - "0": Only front touchpad should generate mouse events. Default + * - "1": Only back touchpad should generate mouse events. + * - "2": Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * A variable controlling whether the Android / tvOS remotes should be listed + * as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * + * - "0": Remotes send enter/escape/arrow key events + * - "1": Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * + * - "0": Disable screensaver + * - "1": Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. We do so by waiting for + * vsync immediately after issuing a flip, usually just after eglSwapBuffers + * call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - Wayland (wayland) + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * A variable controlling whether the EGL window is allowed to be composited + * as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by + * default SDL will try to enforce opaque composition. To override this + * behavior, you can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * + * - "0": SDL will manage graphics contexts that are attached to windows. + * - "1": Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For + * example, on Android the context will be automatically saved and restored + * when pausing the application. Additionally, some platforms will assume + * usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics + * context, such as an externally managed OpenGL context or attaching a Vulkan + * surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * If set to 1, then do not allow high-DPI windows. + * + * ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * + * - "0": Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" button on their + * titlebars). + * - "1": Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" button on their + * titlebars). + * + * The default value is "1". This hint must be set before any windows are + * created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * Minimize your SDL_Window if it loses key focus when in fullscreen mode. + * + * Defaults to false. + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * A variable controlling whether the libdecor Wayland backend is allowed to + * be used. + * + * This variable can be set to the following values: + * + * - "0": libdecor use is disabled. + * - "1": libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is + * unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * A variable controlling whether the libdecor Wayland backend is preferred + * over native decorations. + * + * When this hint is set, libdecor will be used to provide window decorations, + * even if xdg-decoration is available. (Note that, by default, libdecor will + * use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * + * - "0": libdecor is enabled only if server-side decorations are unavailable. + * - "1": libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is + * unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * A variable controlling whether video mode emulation is enabled under + * Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be + * exposed for use by the application. If it is disabled, the only modes + * exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * + * - "0": Video mode emulation is disabled. + * - "1": Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative + * mouse mode. This is required for some older games (such as Source engine + * games), which warp the mouse to the centre of the screen rather than using + * relative mouse motion. Note that relative mouse mode may have different + * mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * + * - "0": All mouse warps fail, as mouse warping is not available under + * wayland. + * - "1": Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses + * relative mouse mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** + * A variable that is the address of another SDL_Window* (as a hex string + * formatted with "%p"). + * + * If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is + * set to has SDL_WINDOW_OPENGL set (and running on WGL only, currently), then + * two things will occur on the newly created SDL_Window: + * + * 1. Its pixel format will be set to the same pixel format as this + * SDL_Window. This is needed for example when sharing an OpenGL context + * across multiple windows. + * + * 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be + * used for OpenGL rendering. + * + * This variable can be set to the following values: The address (as a string + * "%p") of the SDL_Window* that new windows created with + * SDL_CreateWindowFrom() should share a pixel format with. + */ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * When calling SDL_CreateWindowFrom(), make the window compatible with + * OpenGL. + * + * This variable can be set to the following values: + * + * - "0": Don't add any graphics flags to the SDL_WindowFlags + * - "1": Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * When calling SDL_CreateWindowFrom(), make the window compatible with + * Vulkan. + * + * This variable can be set to the following values: + * + * - "0": Don't add any graphics flags to the SDL_WindowFlags + * - "1": Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** + * A variable specifying which shader compiler to preload when using the + * Chrome ANGLE binaries + * + * SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It can + * use two different sets of binaries, those compiled by the user from source + * or those provided by the Chrome browser. In the later case, these binaries + * require that SDL loads a DLL providing the shader compiler. + * + * This variable can be set to the following values: + * + * - "d3dcompiler_46.dll: default, best for Vista or later. + * - "d3dcompiler_43.dll: for XP support. + * - "none": do not load any library, useful if you compiled ANGLE from source + * and included the compiler in your binaries. + */ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * + * - "0": Use GLX + * - "1": Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint + * should be used. + * + * This variable can be set to the following values: + * + * - "0": Disable _NET_WM_BYPASS_COMPOSITOR + * - "1": Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * A variable controlling whether the X11 _NET_WM_PING protocol should be + * supported. + * + * This variable can be set to the following values: + * + * - "0": Disable _NET_WM_PING + * - "1": Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they + * can turn it off to avoid the window manager thinking the app is hung. The + * hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * A variable forcing the visual ID chosen for new X11 windows + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * A no-longer-used variable controlling whether the X11 Xinerama extension + * should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support + * on X11. Now SDL never uses Xinerama, and does not check for this hint at + * all. The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * + * - "0": Disable XRandR + * - "1": Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * A no-longer-used variable controlling whether the X11 VidMode extension + * should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support + * on X11. Now SDL never uses XVidMode, and does not check for this hint at + * all. The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they + * produce multiple sample frames per block and truncating the block is not + * allowed. The fact chunk can exactly specify how many sample frames there + * should be in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * - "truncate": Use the number of samples to truncate the wave data if the + * fact chunk is present and valid + * - "strict": Like "truncate", but raise an error if the fact chunk is + * invalid, not present for non-PCM formats, or if the data chunk doesn't + * have that many samples + * - "ignorezero": Like "truncate", but ignore fact chunk if the number of + * samples is zero + * - "ignore": Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable + * boundary. By default, SDL stops after 10000 chunks to prevent wasting time. + * Use the environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * - "force": Always use the RIFF chunk size as a boundary for the chunk + * search + * - "ignorezero": Like "force", but a zero size searches up to 4 GiB + * (default) + * - "ignore": Ignore the RIFF chunk size and always search up to 4 GiB + * - "maximum": Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * - "verystrict": Raise an error if the file is truncated + * - "strict": Like "verystrict", but the size of the RIFF chunk is ignored + * - "dropframe": Decode until the first incomplete sample frame + * - "dropblock": Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, and the + * .NET runtime. Note that SDL 2.0.6 and later will still use the (safer) + * SetThreadDescription API, introduced in the Windows 10 Creators Update, if + * available. + * + * The variable can be set to the following values: + * + * - "0": SDL will raise the 0x406D1388 Exception to name threads. This is the + * default behavior of SDL <= 2.0.4. + * - "1": SDL will not raise this exception, and threads will be unnamed. + * (default) This is necessary with .NET languages or debuggers that aren't + * Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * Controls whether menus can be opened with their keyboard shortcut + * (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File + * menu). However, in case an invalid mnemonic is pressed, Windows makes an + * audible beep to convey that nothing happened. This is true even if the + * window has no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the + * Alt key for other purposes, SDL disables mnemonics (and the beeping) by + * default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * + * - "0": Alt+mnemonic does nothing, no beeping. (default) + * - "1": Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * + * - "0": The window message loop is not run + * - "1": The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * Force SDL to use Critical Sections for mutexes on Windows. + * + * On Windows 7 and newer, Slim Reader/Writer Locks are available. They offer + * better performance, allocate no kernel resources and use less memory. SDL + * will fall back to Critical Sections on older OS versions or if forced to by + * this hint. + * + * This variable can be set to the following values: + * + * - "0": Use SRW Locks when available. If not, fall back to Critical + * Sections. (default) + * - "1": Force the use of Critical Sections in all cases. + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * Force SDL to use Kernel Semaphores on Windows. + * + * Kernel Semaphores are inter-process and require a context switch on every + * interaction. On Windows 8 and newer, the WaitOnAddress API is available. + * Using that and atomics to implement semaphores increases performance. SDL + * will fall back to Kernel Objects on older OS versions or if forced to by + * this hint. + * + * This variable can be set to the following values: + * + * - "0": Use Atomics and WaitOnAddress API when available. If not, fall back + * to Kernel Objects. (default) + * - "1": Force the use of Kernel Objects in all cases. + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * A variable to specify custom icon resource id from RC file on Windows + * platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" + +/** + * A variable to specify custom icon resource id from RC file on Windows + * platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * + * - "0": SDL will generate a window-close event when it sees Alt+F4. + * - "1": SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may + * require some changes to your application to cope with the new behavior, so + * this is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: - + * https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - + * https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * + * - "0": Use the original Direct3D 9 API (default) + * - "1": Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex + * is unavailable) + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling + * of SDL windows on monitors with a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means + * (e.g. calling SetProcessDpiAwarenessContext) and does not cause SDL to use + * a virtualized coordinate system, so it will generally give you 1 SDL + * coordinate = 1 pixel even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * + * - "": Do not change the DPI awareness (default). + * - "unaware": Declare the process as DPI unaware. (Windows 8.1 and later). + * - "system": Request system DPI awareness. (Vista and later). + * - "permonitor": Request per-monitor DPI awareness. (Windows 8.1 and later). + * - "permonitorv2": Request per-monitor V2 DPI awareness. (Windows 10, + * version 1607 and later). The most visible difference from "permonitor" is + * that window title bar will be scaled to the visually correct size when + * dragging between monitors with different scale factors. This is the + * preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running + * OS, SDL will try to request the best available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, + * rather than pixels everywhere. This means windows will be appropriately + * sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling + * in Windows display settings, will create a window with an 800x600 client + * area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting + * SDL_WINDOWS_DPI_AWARENESS is unnecessary), and forces + * SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * + * - "0": SDL coordinates equal Windows coordinates. No automatic window + * resizing when dragging between monitors with different scale factors + * (unless this is performed by Windows itself, which is the case when the + * process is DPI unaware). + * - "1": SDL coordinates are in DPI-scaled points. Automatically resize + * windows as needed on displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * A variable controlling whether the window frame and title bar are + * interactive when the cursor is hidden + * + * This variable can be set to the following values: + * + * - "0": The window frame is not interactive when the cursor is hidden (no + * move, resize, etc) + * - "1": The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor + * is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** + * A variable controlling whether the window is activated when the + * SDL_ShowWindow function is called + * + * This variable can be set to the following values: + * + * - "0": The window is activated when the SDL_ShowWindow function is called + * - "1": The window is not activated when the SDL_ShowWindow function is + * called + * + * By default SDL will activate the window when the SDL_ShowWindow function is + * called + */ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be be + * available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the + * app's privacy policy. + * + * To setup a URL to an app's privacy policy, set + * SDL_HINT_WINRT_PRIVACY_POLICY_URL before calling any SDL_Init() functions. + * The contents of the hint should be a valid URL. For example, + * "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy + * policy link to the Settings charm. This hint should only be set during app + * init. + * + * The label text of an app's "Privacy Policy" link may be customized via + * another hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, + * SDL_HINT_WINRT_PRIVACY_POLICY_URL will not get used on that platform. + * Network-enabled phone apps should display their privacy policy through some + * other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop not + * working as expected. Override-redirect windows aren't noticed by the window + * manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * A variable that lets you disable the detection and use of Xinput gamepad + * devices + * + * The variable can be set to the following values: + * + * - "0": Disable XInput detection (only uses direct input) + * - "1": Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + +/** + * A variable that lets you disable the detection and use of DirectInput + * gamepad devices + * + * The variable can be set to the following values: + * + * - "0": Disable DirectInput detection (only uses XInput) + * - "1": Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * A variable that causes SDL to use the old axis and button mapping for + * XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL + * 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property to + * report to the window manager the type of window it wants to create. This + * might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set before + * the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * A variable that decides whether to send SDL_QUIT when closing the final + * window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window and + * it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most apps + * would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event when + * the final window is requesting to close. Note that in this case, there are + * still other legitimate reasons one might get an SDL_QUIT event: choosing + * "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get an + * SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable order + * until it finds one that can work, but this hint allows the app or user to + * force a specific target, such as "x11" if, say, you are on Wayland but want + * to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) but + * before 2.0.22 this was an environment variable only. In 2.0.22, it was + * upgraded to a full SDL hint, so you can set the environment variable as + * usual or programatically set the hint with SDL_SetHint, which won't + * propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out the + * best video backend on your behalf. This hint needs to be set before + * SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set the + * environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable order + * until it finds one that can work, but this hint allows the app or user to + * force a specific target, such as "alsa" if, say, you are on PulseAudio but + * want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) but + * before 2.0.22 this was an environment variable only. In 2.0.22, it was + * upgraded to a full SDL hint, so you can set the environment variable as + * usual or programatically set the hint with SDL_SetHint, which won't + * propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out the + * best audio backend on your behalf. This hint needs to be set before + * SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set the + * environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to access + * KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the app or + * user can set this hint to a number between 0 and 99 to force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users expect + * from this device; however, these are often actually full multitouch-capable + * touch devices, so it might be preferable to some apps to treat them as + * such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it only + * supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + +/** + * Cause SDL to call dbus_shutdown() on quit. + * + * This is useful as a debug tool to validate memory leaks, but shouldn't ever + * be set in production applications, as other libraries used by the + * application might use dbus under the hood and this cause cause crashes if + * they continue after SDL_Quit(). + * + * This variable can be set to the following values: + * + * - "0": SDL will not call dbus_shutdown() on quit (default) + * - "1": SDL will call dbus_shutdown() on quit + * + * This hint is available since SDL 2.30.0. + */ +#define SDL_HINT_SHUTDOWN_DBUS_ON_QUIT "SDL_SHUTDOWN_DBUS_ON_QUIT" + +/** + * Specify if SDL_RWFromFile should use the resource dir on Apple platforms. + * + * SDL2 has always done this on Apple platforms, but it can be surprising to + * try opening a path to discover that SDL adjusts the path to elsewhere, so + * this hint allows that behavior to be disabled. + * + * If running from a App Bundle, this will be MyApp.app/Contents/Resources. If + * running as a normal Unix-like process, this will be the directory where the + * running binary lives. Setting this hint to 0 avoids this and just uses the + * requested path as-is. + * + * This variable can be set to the following values: + * + * - "0": SDL will not use the app resource directory. + * - "1": SDL will use the app's resource directory (default). + * + * This hint is available since SDL 2.32.0. + */ +#define SDL_HINT_APPLE_RWFROMFILE_USE_RESOURCES "SDL_APPLE_RWFROMFILE_USE_RESOURCES" + + +/** + * An enumeration of hint priorities + */ +typedef enum SDL_HintPriority +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set. + * \param value the value of the hint variable. + * \param priority the SDL_HintPriority level for the hint. + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set. + * \param value the value of the hint variable. + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set. + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query. + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from. + * \param default_value the value to return if the hint does not exist. + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback(). + * \param name what was passed as `name` to SDL_AddHintCallback(). + * \param oldValue the previous hint value. + * \param newValue the new value hint is to be set to. + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch. + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes. + * \param userdata a pointer to pass to the callback function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched. + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes. + * \param userdata a pointer being passed to the callback function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_joystick.h b/Windows/SDL2/include/SDL_joystick.h new file mode 100644 index 0000000..668db5e --- /dev/null +++ b/Windows/SDL2/include/SDL_joystick.h @@ -0,0 +1,1088 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryJoystick + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices + * between 0 and SDL_NumJoysticks(), with the exact joystick behind a + * device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in + * the system, if the joystick is removed and then re-inserted then it will + * get a new instance_id, instance_id's are monotonically increasing + * identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. Many + * joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device + * that does not change over time, it identifies class of the device (a X360 + * wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_guid.h" +#include "SDL_mutex.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/** + * A structure that encodes the stable unique id for a joystick device. + * + * This is just a standard SDL_GUID by a different name. + */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the + * system, and is never reused for the lifetime of the application. + * + * If the joystick is disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an + * invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system). + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system). + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system. + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system. + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system. + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system. + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system. + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system. + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query. + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for. + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for. + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with + * `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to + * SDL_JoystickAttachVirtualEx() All other elements of this structure are + * optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual(). + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen(). + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string. + * \param pszGUID buffer in which to write the ASCII string. + * \param cbGUID the size of pszGUID. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID. + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about. + * \param vendor A pointer filled in with the device VID, or 0 if not + * available. + * \param product A pointer filled in with the device PID, or 0 if not + * available. + * \param version A pointer filled in with the device version, or 0 if not + * available. + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query. + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * While `param` is meant to be one of `SDL_QUERY`, `SDL_IGNORE`, or + * `SDL_ENABLE`, this function accepts any value, with any non-zero value that + * isn't `SDL_QUERY` being treated as `SDL_ENABLE`. + * + * If SDL was built with events disabled (extremely uncommon!), this will do + * nothing and always return `SDL_IGNORE`. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`. + * \returns If `state` is `SDL_QUERY` then the current state is returned, + * otherwise `state` is returned (even if it was not one of the + * allowed values). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +/* Limits for joystick axes... */ +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \param axis the axis to query; the axis indices start at index 0. + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \param axis the axis to query; the axis indices start at index 0. + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \param hat the hat index to get the state from; indices start at index 0. + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query. + * \param ball the ball index to query; ball indices start at index 0. + * \param dx stores the difference in the x axis position since the last poll. + * \param dy stores the difference in the y axis position since the last poll. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information. + * \param button the button index to get the state from; indices start at + * index 0. + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate. + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF. + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF. + * \param duration_ms The duration of the rumble effect, in milliseconds. + * \returns 0, or -1 if rumble isn't supported on this joystick. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate. + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF. + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF. + * \param duration_ms The duration of the rumble effect, in milliseconds. + * \returns 0, or -1 if trigger rumble isn't supported on this joystick. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query. + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query. + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query. + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update. + * \param red The intensity of the red LED. + * \param green The intensity of the green LED. + * \param blue The intensity of the blue LED. + * \returns 0 on success, -1 if this joystick does not have a modifiable LED. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect. + * \param data The data to send to the joystick. + * \param size The size of the data to send to the joystick. + * \returns 0, or -1 if this joystick or driver doesn't support effect + * packets. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query. + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_keyboard.h b/Windows/SDL2/include/SDL_keyboard.h new file mode 100644 index 0000000..62ac9f2 --- /dev/null +++ b/Windows/SDL2/include/SDL_keyboard.h @@ -0,0 +1,361 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryKeyboard + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_keycode.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The SDL keysym structure, used in key events. + * + * If you are looking for translated character input, see the SDL_TEXTINPUT + * event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array. + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query. + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query. + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query. + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name. + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query. + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name. + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * On desktop platforms, SDL_StartTextInput() is implicitly called on SDL + * video subsystem initialization which will cause SDL_TextInputEvent and + * SDL_TextEditingEvent to begin emitting. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * Native input methods will place a window with word suggestions near it, + * without covering the text being inputted. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried. + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_keycode.h b/Windows/SDL2/include/SDL_keycode.h new file mode 100644 index 0000000..eb1678e --- /dev/null +++ b/Windows/SDL2/include/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryKeycode + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include "SDL_stdinc.h" +#include "SDL_scancode.h" + +/** + * The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or an + * SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which map + * to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum SDL_KeyCode +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum SDL_Keymod +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_loadso.h b/Windows/SDL2/include/SDL_loadso.h new file mode 100644 index 0000000..1763b52 --- /dev/null +++ b/Windows/SDL2/include/SDL_loadso.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: LoadSO */ + +/** + * # CategoryLoadSO + * + * System-dependent library loading routines. + * + * Some things to keep in mind: + * + * - These functions only work on C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * - Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * - Avoid namespace collisions. If you load a symbol from the library, it is + * not defined whether or not it goes into the global symbol namespace for + * the application. If it does and it conflicts with symbols in your code or + * other shared libraries, you will not get the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file. + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject(). + * \param name the name of the function to look up. + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_locale.h b/Windows/SDL2/include/SDL_locale.h new file mode 100644 index 0000000..8126efc --- /dev/null +++ b/Windows/SDL2/include/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryLocale + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include "close_code.h" + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_log.h b/Windows/SDL2/include/SDL_log.h new file mode 100644 index 0000000..75833ba --- /dev/null +++ b/Windows/SDL2/include/SDL_log.h @@ -0,0 +1,405 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryLog + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * + * - Windows: debug output stream + * - Android: log output + * - Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * The predefined log categories + * + * By default the application category is enabled at the INFO level, the + * assert category is enabled at the WARN level, test is enabled at the + * VERBOSE level and all other categories are enabled at the ERROR level. + */ +typedef enum SDL_LogCategory +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * The predefined log priorities + */ +typedef enum SDL_LogPriority +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to. + * \param priority the SDL_LogPriority to assign. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query. + * \returns the SDL_LogPriority for the requested category. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message. + * \param priority the priority of the message. + * \param fmt a printf() style message format string. + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message. + * \param priority the priority of the message. + * \param fmt a printf() style message format string. + * \param ap a variable argument list. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to + * SDL_LogSetOutputFunction(). + * \param category the category of the message. + * \param priority the priority of the message. + * \param message the message being output. + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback. + * \param userdata a pointer filled in with the pointer that is passed to + * `callback`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default. + * \param userdata a pointer that is passed to `callback`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_main.h b/Windows/SDL2/include/SDL_main.h new file mode 100644 index 0000000..a1ef3e7 --- /dev/null +++ b/Windows/SDL2/include/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include "SDL_stdinc.h" + +/** + * # CategoryMain + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * ```c + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * ``` + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func. + * \param reserved reserved for future use; should be NULL. + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function. + * \param argv The argv parameter from the application's main() function. + * \param mainFunction The SDL app's C-style main(), an SDL_main_func. + * \return the return value from mainFunction. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func. + * \param reserved reserved for future use; should be NULL. + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_messagebox.h b/Windows/SDL2/include/SDL_messagebox.h new file mode 100644 index 0000000..725d412 --- /dev/null +++ b/Windows/SDL2/include/SDL_messagebox.h @@ -0,0 +1,196 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include "SDL_stdinc.h" +#include "SDL_video.h" /* For SDL_Window */ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. + * + * If supported will display warning icon, etc. + */ +typedef enum SDL_MessageBoxFlags +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum SDL_MessageBoxButtonFlags +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct SDL_MessageBoxButtonData +{ + Uint32 flags; /**< SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct SDL_MessageBoxColor +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum SDL_MessageBoxColorType +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct SDL_MessageBoxColorScheme +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct SDL_MessageBoxData +{ + Uint32 flags; /**< SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options. + * \param buttonid the pointer to which user id of hit button should be + * copied. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value. + * \param title UTF-8 title text. + * \param message UTF-8 message text. + * \param window the parent window, or NULL for no parent. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_metal.h b/Windows/SDL2/include/SDL_metal.h new file mode 100644 index 0000000..d3f21d5 --- /dev/null +++ b/Windows/SDL2/include/SDL_metal.h @@ -0,0 +1,114 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryMetal + * + * Header file for functions to creating Metal layers and views on SDL + * windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried. + * \param w Pointer to variable for storing the width in pixels, may be NULL. + * \param h Pointer to variable for storing the height in pixels, may be NULL. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_metal_h_ */ diff --git a/Windows/SDL2/include/SDL_misc.h b/Windows/SDL2/include/SDL_misc.h new file mode 100644 index 0000000..86a82bc --- /dev/null +++ b/Windows/SDL2/include/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryMisc + * + * Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_mouse.h b/Windows/SDL2/include/SDL_mouse.h new file mode 100644 index 0000000..628b7a2 --- /dev/null +++ b/Windows/SDL2/include/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryMouse + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum SDL_SystemCursor +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * Scroll direction types for the Scroll event + */ +typedef enum SDL_MouseWheelDirection +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window. + * \param y the y coordinate of the mouse cursor position relative to the + * focus window. + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL. + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL. + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse. + * \param y a pointer filled with the last recorded y coordinate of the mouse. + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus. + * \param x the x coordinate within the window. + * \param y the y coordinate within the window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate. + * \param y the y coordinate. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor. + * \param mask the mask value for each pixel of the cursor. + * \param w the width of the cursor. + * \param h the height of the cursor. + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position. + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position. + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image. + * \param hot_x the x position of the cursor hot spot. + * \param hot_y the y position of the cursor hot spot. + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value. + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_mutex.h b/Windows/SDL2/include/SDL_mutex.h new file mode 100644 index 0000000..0fe3eb5 --- /dev/null +++ b/Windows/SDL2/include/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * # CategoryMutex + * + * Functions to provide thread synchronization primitives. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value if they time + * out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock. + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock. + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore. + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on. + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on. + * \param timeout the length of the timeout, in milliseconds. + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query. + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on. + * \param mutex the mutex used to coordinate thread access. + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on. + * \param mutex the mutex used to coordinate thread access. + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely. + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_name.h b/Windows/SDL2/include/SDL_name.h new file mode 100644 index 0000000..0c48bcf --- /dev/null +++ b/Windows/SDL2/include/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_opengl.h b/Windows/SDL2/include/SDL_opengl.h new file mode 100644 index 0000000..c6250d1 --- /dev/null +++ b/Windows/SDL2/include/SDL_opengl.h @@ -0,0 +1,2126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + * This is a simple file to encapsulate the OpenGL API headers. + * + * Define NO_SDL_GLEXT if you have your own version of glext.h and want + * to disable the version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include "SDL_config.h" + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef __gl_h_ +#define __gl_h_ + +#if defined(USE_MGL_NAMESPACE) +#include "gl_mangle.h" +#endif + + +/********************************************************************** + * Begin system-specific stuff. + */ + +#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__) +#define __WIN32__ +#endif + +#if defined(__WIN32__) && !defined(__CYGWIN__) +# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ +# define GLAPI __declspec(dllexport) +# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */ +# define GLAPI __declspec(dllimport) +# else /* for use with static link lib build of Win32 edition only */ +# define GLAPI extern +# endif /* _STATIC_MESA support */ +# if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE) /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */ +# define GLAPIENTRY +# else +# define GLAPIENTRY __stdcall +# endif +#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */ +# define GLAPI extern +# define GLAPIENTRY __stdcall +#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define GLAPI __attribute__((visibility("default"))) +# define GLAPIENTRY +#endif /* WIN32 && !CYGWIN */ + +/* + * WINDOWS: Include windows.h here to define APIENTRY. + * It is also useful when applications include this file by + * including only glut.h, since glut.h depends on windows.h. + * Applications needing to include windows.h with parms other + * than "WIN32_LEAN_AND_MEAN" may include windows.h before + * glut.h or gl.h. + */ +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#ifndef GLAPI +#define GLAPI extern +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifndef APIENTRY +#define APIENTRY GLAPIENTRY +#endif + +/* "P" suffix to be used for a pointer to a function */ +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRYP +#define GLAPIENTRYP GLAPIENTRY * +#endif + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#endif + +/* + * End system-specific stuff. + **********************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define GL_VERSION_1_1 1 +#define GL_VERSION_1_2 1 +#define GL_VERSION_1_3 1 +#define GL_ARB_imaging 1 + + +/* + * Datatypes + */ +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef signed char GLbyte; /* 1-byte signed */ +typedef short GLshort; /* 2-byte signed */ +typedef int GLint; /* 4-byte signed */ +typedef unsigned char GLubyte; /* 1-byte unsigned */ +typedef unsigned short GLushort; /* 2-byte unsigned */ +typedef unsigned int GLuint; /* 4-byte unsigned */ +typedef int GLsizei; /* 4-byte signed */ +typedef float GLfloat; /* single precision float */ +typedef float GLclampf; /* single precision float in [0,1] */ +typedef double GLdouble; /* double precision float */ +typedef double GLclampd; /* double precision float in [0,1] */ + + + +/* + * Constants + */ + +/* Boolean values */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* Data types */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_DOUBLE 0x140A + +/* Primitives */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON 0x0009 + +/* Vertex Arrays */ +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D + +/* Matrix Mode */ +#define GL_MATRIX_MODE 0x0BA0 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +/* Points */ +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_RANGE 0x0B12 + +/* Lines */ +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 + +/* Polygons */ +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 + +/* Display Lists */ +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_LIST_MODE 0x0B30 + +/* Depth buffer */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_COMPONENT 0x1902 + +/* Lighting */ +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_SHININESS 0x1601 +#define GL_EMISSION 0x1600 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_SHADE_MODEL 0x0B54 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_NORMALIZE 0x0BA1 + +/* User clipping planes */ +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 + +/* Accumulation buffer */ +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_ACCUM 0x0100 +#define GL_ADD 0x0104 +#define GL_LOAD 0x0101 +#define GL_MULT 0x0103 +#define GL_RETURN 0x0102 + +/* Alpha testing */ +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_ALPHA_TEST_FUNC 0x0BC1 + +/* Blending */ +#define GL_BLEND 0x0BE2 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_DST 0x0BE0 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 + +/* Render Mode */ +#define GL_FEEDBACK 0x1C01 +#define GL_RENDER 0x1C00 +#define GL_SELECT 0x1C02 + +/* Feedback */ +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 + +/* Selection */ +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 + +/* Fog */ +#define GL_FOG 0x0B60 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_COLOR 0x0B66 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_LINEAR 0x2601 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +/* Logic Ops */ +#define GL_LOGIC_OP 0x0BF1 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_CLEAR 0x1500 +#define GL_SET 0x150F +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_NOOP 0x1505 +#define GL_INVERT 0x150A +#define GL_AND 0x1501 +#define GL_NAND 0x150E +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_XOR 0x1506 +#define GL_EQUIV 0x1509 +#define GL_AND_REVERSE 0x1502 +#define GL_AND_INVERTED 0x1504 +#define GL_OR_REVERSE 0x150B +#define GL_OR_INVERTED 0x150D + +/* Stencil */ +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_INDEX 0x1901 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 + +/* Buffers, Pixel Drawing/Reading */ +#define GL_NONE 0 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +/*GL_FRONT 0x0404 */ +/*GL_BACK 0x0405 */ +/*GL_FRONT_AND_BACK 0x0408 */ +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_COLOR_INDEX 0x1900 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_ALPHA_BITS 0x0D55 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_INDEX_BITS 0x0D51 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_READ_BUFFER 0x0C02 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_BITMAP 0x1A00 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_DITHER 0x0BD0 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 + +/* Implementation limits */ +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B + +/* Gets */ +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_MODE 0x0C30 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_RENDER_MODE 0x0C40 +#define GL_RGBA_MODE 0x0C31 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_VIEWPORT 0x0BA2 + +/* Evaluators */ +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 + +/* Hints */ +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_FOG_HINT 0x0C54 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* Scissor box */ +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 + +/* Pixel Mode / Transfer */ +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 + +/* Texture mapping */ +#define GL_TEXTURE_ENV 0x2300 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_LINEAR 0x2400 +#define GL_EYE_PLANE 0x2502 +#define GL_SPHERE_MAP 0x2402 +#define GL_DECAL 0x2101 +#define GL_MODULATE 0x2100 +#define GL_NEAREST 0x2600 +#define GL_REPEAT 0x2901 +#define GL_CLAMP 0x2900 +#define GL_S 0x2000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 + +/* Utility */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* Errors */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 + +/* glPush/PopAttrib bits */ +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000002 +#define GL_LINE_BIT 0x00000004 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_HINT_BIT 0x00008000 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000FFFFF + + +/* OpenGL 1.1 */ +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF + + + +/* + * Miscellaneous + */ + +GLAPI void GLAPIENTRY glClearIndex( GLfloat c ); + +GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); + +GLAPI void GLAPIENTRY glClear( GLbitfield mask ); + +GLAPI void GLAPIENTRY glIndexMask( GLuint mask ); + +GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ); + +GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref ); + +GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor ); + +GLAPI void GLAPIENTRY glLogicOp( GLenum opcode ); + +GLAPI void GLAPIENTRY glCullFace( GLenum mode ); + +GLAPI void GLAPIENTRY glFrontFace( GLenum mode ); + +GLAPI void GLAPIENTRY glPointSize( GLfloat size ); + +GLAPI void GLAPIENTRY glLineWidth( GLfloat width ); + +GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern ); + +GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode ); + +GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units ); + +GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask ); + +GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask ); + +GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag ); + +GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag ); + +GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height); + +GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation ); + +GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation ); + +GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode ); + +GLAPI void GLAPIENTRY glReadBuffer( GLenum mode ); + +GLAPI void GLAPIENTRY glEnable( GLenum cap ); + +GLAPI void GLAPIENTRY glDisable( GLenum cap ); + +GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap ); + + +GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */ + +GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */ + + +GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params ); + +GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params ); + +GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params ); + +GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask ); + +GLAPI void GLAPIENTRY glPopAttrib( void ); + + +GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */ + +GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */ + + +GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode ); + +GLAPI GLenum GLAPIENTRY glGetError( void ); + +GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name ); + +GLAPI void GLAPIENTRY glFinish( void ); + +GLAPI void GLAPIENTRY glFlush( void ); + +GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode ); + + +/* + * Depth Buffer + */ + +GLAPI void GLAPIENTRY glClearDepth( GLclampd depth ); + +GLAPI void GLAPIENTRY glDepthFunc( GLenum func ); + +GLAPI void GLAPIENTRY glDepthMask( GLboolean flag ); + +GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val ); + + +/* + * Accumulation Buffer + */ + +GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); + +GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value ); + + +/* + * Transformation + */ + +GLAPI void GLAPIENTRY glMatrixMode( GLenum mode ); + +GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, + GLdouble near_val, GLdouble far_val ); + +GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, + GLdouble near_val, GLdouble far_val ); + +GLAPI void GLAPIENTRY glViewport( GLint x, GLint y, + GLsizei width, GLsizei height ); + +GLAPI void GLAPIENTRY glPushMatrix( void ); + +GLAPI void GLAPIENTRY glPopMatrix( void ); + +GLAPI void GLAPIENTRY glLoadIdentity( void ); + +GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m ); +GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m ); + +GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m ); +GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m ); + +GLAPI void GLAPIENTRY glRotated( GLdouble angle, + GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glRotatef( GLfloat angle, + GLfloat x, GLfloat y, GLfloat z ); + +GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z ); + +GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z ); + + +/* + * Display Lists + */ + +GLAPI GLboolean GLAPIENTRY glIsList( GLuint list ); + +GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range ); + +GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range ); + +GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode ); + +GLAPI void GLAPIENTRY glEndList( void ); + +GLAPI void GLAPIENTRY glCallList( GLuint list ); + +GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type, + const GLvoid *lists ); + +GLAPI void GLAPIENTRY glListBase( GLuint base ); + + +/* + * Drawing Functions + */ + +GLAPI void GLAPIENTRY glBegin( GLenum mode ); + +GLAPI void GLAPIENTRY glEnd( void ); + + +GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y ); +GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y ); +GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y ); +GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y ); + +GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z ); +GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z ); + +GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w ); +GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ); + +GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glVertex2iv( const GLint *v ); +GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glVertex3iv( const GLint *v ); +GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glVertex4iv( const GLint *v ); +GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ); +GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ); +GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ); +GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz ); +GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz ); + +GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v ); +GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glNormal3iv( const GLint *v ); +GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glIndexd( GLdouble c ); +GLAPI void GLAPIENTRY glIndexf( GLfloat c ); +GLAPI void GLAPIENTRY glIndexi( GLint c ); +GLAPI void GLAPIENTRY glIndexs( GLshort c ); +GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */ + +GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c ); +GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c ); +GLAPI void GLAPIENTRY glIndexiv( const GLint *c ); +GLAPI void GLAPIENTRY glIndexsv( const GLshort *c ); +GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */ + +GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue ); +GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue ); +GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue ); +GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue ); +GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue ); +GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue ); +GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue ); +GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue ); + +GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green, + GLbyte blue, GLbyte alpha ); +GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green, + GLdouble blue, GLdouble alpha ); +GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green, + GLfloat blue, GLfloat alpha ); +GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green, + GLint blue, GLint alpha ); +GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green, + GLshort blue, GLshort alpha ); +GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green, + GLubyte blue, GLubyte alpha ); +GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green, + GLuint blue, GLuint alpha ); +GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green, + GLushort blue, GLushort alpha ); + + +GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v ); +GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glColor3iv( const GLint *v ); +GLAPI void GLAPIENTRY glColor3sv( const GLshort *v ); +GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v ); +GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v ); +GLAPI void GLAPIENTRY glColor3usv( const GLushort *v ); + +GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v ); +GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glColor4iv( const GLint *v ); +GLAPI void GLAPIENTRY glColor4sv( const GLshort *v ); +GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v ); +GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v ); +GLAPI void GLAPIENTRY glColor4usv( const GLushort *v ); + + +GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s ); +GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s ); +GLAPI void GLAPIENTRY glTexCoord1i( GLint s ); +GLAPI void GLAPIENTRY glTexCoord1s( GLshort s ); + +GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t ); +GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t ); +GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t ); +GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t ); + +GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r ); +GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r ); +GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r ); +GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r ); + +GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); +GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q ); +GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ); + +GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v ); +GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y ); +GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y ); +GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y ); +GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y ); + +GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z ); +GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z ); + +GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w ); +GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ); + +GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v ); +GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v ); +GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v ); + +GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v ); +GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v ); +GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v ); +GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v ); + + +GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ); +GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ); +GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 ); +GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ); + + +GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 ); +GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 ); +GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 ); +GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 ); + + +/* + * Vertex Arrays (1.1) + */ + +GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type, + GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride, + const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type, + GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride, + const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type, + GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ); + +GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params ); + +GLAPI void GLAPIENTRY glArrayElement( GLint i ); + +GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count ); + +GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count, + GLenum type, const GLvoid *indices ); + +GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride, + const GLvoid *pointer ); + +/* + * Lighting + */ + +GLAPI void GLAPIENTRY glShadeModel( GLenum mode ); + +GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param ); +GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname, + const GLfloat *params ); +GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname, + const GLint *params ); + +GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname, + GLfloat *params ); +GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param ); +GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param ); +GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params ); + +GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode ); + + +/* + * Raster functions + */ + +GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor ); + +GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize, + const GLfloat *values ); +GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize, + const GLuint *values ); +GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize, + const GLushort *values ); + +GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values ); +GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values ); +GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values ); + +GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height, + GLfloat xorig, GLfloat yorig, + GLfloat xmove, GLfloat ymove, + const GLubyte *bitmap ); + +GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + GLvoid *pixels ); + +GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y, + GLsizei width, GLsizei height, + GLenum type ); + +/* + * Stenciling + */ + +GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask ); + +GLAPI void GLAPIENTRY glStencilMask( GLuint mask ); + +GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ); + +GLAPI void GLAPIENTRY glClearStencil( GLint s ); + + + +/* + * Texture mapping + */ + +GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param ); +GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params ); +GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ); +GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ); +GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params ); + +GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param ); +GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname, + const GLfloat *params ); +GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname, + const GLint *params ); + +GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target, + GLenum pname, GLfloat *params); +GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target, + GLenum pname, GLint *params ); + +GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level, + GLenum pname, GLfloat *params ); +GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, + GLenum pname, GLint *params ); + + +GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLint border, + GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level, + GLenum format, GLenum type, + GLvoid *pixels ); + + +/* 1.1 functions */ + +GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures ); + +GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures); + +GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture ); + +GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n, + const GLuint *textures, + const GLclampf *priorities ); + +GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n, + const GLuint *textures, + GLboolean *residences ); + +GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture ); + + +GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level, + GLint xoffset, + GLsizei width, GLenum format, + GLenum type, const GLvoid *pixels ); + + +GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels ); + + +GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level, + GLenum internalformat, + GLint x, GLint y, + GLsizei width, GLint border ); + + +GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level, + GLenum internalformat, + GLint x, GLint y, + GLsizei width, GLsizei height, + GLint border ); + + +GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level, + GLint xoffset, GLint x, GLint y, + GLsizei width ); + + +GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint x, GLint y, + GLsizei width, GLsizei height ); + + +/* + * Evaluators + */ + +GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2, + GLint stride, + GLint order, const GLdouble *points ); +GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2, + GLint stride, + GLint order, const GLfloat *points ); + +GLAPI void GLAPIENTRY glMap2d( GLenum target, + GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, + GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, + const GLdouble *points ); +GLAPI void GLAPIENTRY glMap2f( GLenum target, + GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, + GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, + const GLfloat *points ); + +GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v ); +GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v ); +GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v ); + +GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u ); +GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u ); + +GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u ); +GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u ); + +GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v ); +GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v ); + +GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u ); +GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u ); + +GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ); +GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ); + +GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, + GLint vn, GLdouble v1, GLdouble v2 ); +GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, + GLint vn, GLfloat v1, GLfloat v2 ); + +GLAPI void GLAPIENTRY glEvalPoint1( GLint i ); + +GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j ); + +GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 ); + +GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ); + + +/* + * Fog + */ + +GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param ); + +GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param ); + +GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params ); + +GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params ); + + +/* + * Selection and Feedback + */ + +GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ); + +GLAPI void GLAPIENTRY glPassThrough( GLfloat token ); + +GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer ); + +GLAPI void GLAPIENTRY glInitNames( void ); + +GLAPI void GLAPIENTRY glLoadName( GLuint name ); + +GLAPI void GLAPIENTRY glPushName( GLuint name ); + +GLAPI void GLAPIENTRY glPopName( void ); + + + +/* + * OpenGL 1.2 + */ + +#define GL_RESCALE_NORMAL 0x803A +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_TEXTURE_BINDING_3D 0x806A + +GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start, + GLuint end, GLsizei count, GLenum type, const GLvoid *indices ); + +GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLsizei height, + GLsizei depth, GLint border, + GLenum format, GLenum type, + const GLvoid *pixels ); + +GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, + GLenum type, const GLvoid *pixels); + +GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLint x, + GLint y, GLsizei width, + GLsizei height ); + +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + + +/* + * GL_ARB_imaging + */ + +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_BLEND_EQUATION 0x8009 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_COLOR 0x8005 + + +GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat, + GLsizei width, GLenum format, + GLenum type, const GLvoid *table ); + +GLAPI void GLAPIENTRY glColorSubTable( GLenum target, + GLsizei start, GLsizei count, + GLenum format, GLenum type, + const GLvoid *data ); + +GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname, + const GLint *params); + +GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname, + const GLfloat *params); + +GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start, + GLint x, GLint y, GLsizei width ); + +GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width ); + +GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format, + GLenum type, GLvoid *table ); + +GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glBlendEquation( GLenum mode ); + +GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green, + GLclampf blue, GLclampf alpha ); + +GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width, + GLenum internalformat, GLboolean sink ); + +GLAPI void GLAPIENTRY glResetHistogram( GLenum target ); + +GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset, + GLenum format, GLenum type, + GLvoid *values ); + +GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat, + GLboolean sink ); + +GLAPI void GLAPIENTRY glResetMinmax( GLenum target ); + +GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset, + GLenum format, GLenum types, + GLvoid *values ); + +GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target, + GLenum internalformat, GLsizei width, GLenum format, GLenum type, + const GLvoid *image ); + +GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target, + GLenum internalformat, GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid *image ); + +GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname, + GLfloat params ); + +GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname, + const GLfloat *params ); + +GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname, + GLint params ); + +GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname, + const GLint *params ); + +GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target, + GLenum internalformat, GLint x, GLint y, GLsizei width ); + +GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target, + GLenum internalformat, GLint x, GLint y, GLsizei width, + GLsizei height); + +GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format, + GLenum type, GLvoid *image ); + +GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname, + GLfloat *params ); + +GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname, + GLint *params ); + +GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target, + GLenum internalformat, GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid *row, const GLvoid *column ); + +GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format, + GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ); + + + + +/* + * OpenGL 1.3 + */ + +/* multitexture */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +/* texture_cube_map */ +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +/* texture_compression */ +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +/* multisample */ +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +/* transpose_matrix */ +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +/* texture_env_combine */ +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +/* texture_env_dot3 */ +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +/* texture_border_clamp */ +#define GL_CLAMP_TO_BORDER 0x812D + +GLAPI void GLAPIENTRY glActiveTexture( GLenum texture ); + +GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture ); + +GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ); + +GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img ); + +GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s ); + +GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t ); + +GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r ); + +GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v ); + +GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ); + +GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v ); + + +GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] ); + +GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] ); + +GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] ); + +GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] ); + +GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); + + +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); + + + +/* + * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1) + */ +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 + +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 + +GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); +GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture); +GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); +GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); +GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); +GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); +GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v); +GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); +GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); +GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); +GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); +GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v); +GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); +GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v); +GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); +GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); +GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v); +GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v); + +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); + +#endif /* GL_ARB_multitexture */ + + + +/* + * Define this token if you want "old-style" header file behaviour (extensions + * defined in gl.h). Otherwise, extensions will be included from glext.h. + */ +#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include "SDL_opengl_glext.h" +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_opengl_glext.h b/Windows/SDL2/include/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/Windows/SDL2/include/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ + +/* Generated C header for: + * API: gl + * Profile: compatibility + * Versions considered: .* + * Versions emitted: 1\.[2-9]|[234]\.[0-9] + * Default extensions included: gl + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_RESCALE_NORMAL 0x803A +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_VERSION_1_2 */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum texture); +GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img); +GLAPI void APIENTRY glClientActiveTexture (GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v); +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m); +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m); +#endif +#endif /* GL_VERSION_1_3 */ + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param); +GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params); +GLAPI void APIENTRY glFogCoordf (GLfloat coord); +GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord); +GLAPI void APIENTRY glFogCoordd (GLdouble coord); +GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord); +GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v); +GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v); +GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v); +GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue); +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v); +GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue); +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v); +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v); +GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue); +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v); +GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue); +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v); +GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2iv (const GLint *v); +GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2sv (const GLshort *v); +GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3iv (const GLint *v); +GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3sv (const GLshort *v); +GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI void APIENTRY glBlendEquation (GLenum mode); +#endif +#endif /* GL_VERSION_1_4 */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC2_ALPHA 0x858A +typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsQuery (GLuint id); +GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id); +GLAPI void APIENTRY glEndQuery (GLenum target); +GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params); +GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer); +GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access); +GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target); +GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_VERSION_1_5 */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +typedef char GLchar; +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader); +GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GLAPI void APIENTRY glCompileShader (GLuint shader); +GLAPI GLuint APIENTRY glCreateProgram (void); +GLAPI GLuint APIENTRY glCreateShader (GLenum type); +GLAPI void APIENTRY glDeleteProgram (GLuint program); +GLAPI void APIENTRY glDeleteShader (GLuint shader); +GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader); +GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index); +GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index); +GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GLAPI GLboolean APIENTRY glIsProgram (GLuint program); +GLAPI GLboolean APIENTRY glIsShader (GLuint shader); +GLAPI void APIENTRY glLinkProgram (GLuint program); +GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI void APIENTRY glUseProgram (GLuint program); +GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0); +GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glUniform1i (GLint location, GLint v0); +GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glValidateProgram (GLuint program); +GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +#endif +#endif /* GL_VERSION_2_0 */ + +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_VERSION_2_1 */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +typedef khronos_uint16_t GLhalf; +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 +typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data); +GLAPI void APIENTRY glEnablei (GLenum target, GLuint index); +GLAPI void APIENTRY glDisablei (GLenum target, GLuint index); +GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index); +GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedback (void); +GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp); +GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRender (void); +GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params); +GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v); +GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params); +GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name); +GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0); +GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index); +GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer); +GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target); +GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateMipmap (GLenum target); +GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glBindVertexArray (GLuint array); +GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays); +GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays); +GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array); +#endif +#endif /* GL_VERSION_3_0 */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); +GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName); +GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#endif +#endif /* GL_VERSION_3_1 */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +typedef struct __GLsync *GLsync; +typedef khronos_uint64_t GLuint64; +typedef khronos_int64_t GLint64; +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync); +typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data); +typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI void APIENTRY glProvokingVertex (GLenum mode); +GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags); +GLAPI GLboolean APIENTRY glIsSync (GLsync sync); +GLAPI void APIENTRY glDeleteSync (GLsync sync); +GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data); +GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data); +GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask); +#endif +#endif /* GL_VERSION_3_2 */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers); +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers); +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler); +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value); +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords); +typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color); +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers); +GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers); +GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler); +GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler); +GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param); +GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param); +GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param); +GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param); +GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param); +GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params); +GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target); +GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params); +GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); +GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value); +GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value); +GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords); +GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords); +GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords); +GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords); +GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color); +GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color); +GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color); +GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color); +GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color); +GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color); +#endif +#endif /* GL_VERSION_3_3 */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value); +typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect); +typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x); +typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params); +typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices); +typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values); +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); +typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShading (GLfloat value); +GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect); +GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect); +GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x); +GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y); +GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params); +GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name); +GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name); +GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices); +GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params); +GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values); +GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value); +GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values); +GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids); +GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids); +GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id); +GLAPI void APIENTRY glPauseTransformFeedback (void); +GLAPI void APIENTRY glResumeTransformFeedback (void); +GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id); +GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream); +GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id); +GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index); +GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params); +#endif +#endif /* GL_VERSION_4_0 */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings); +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines); +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReleaseShaderCompiler (void); +GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GLAPI void APIENTRY glClearDepthf (GLfloat d); +GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); +GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program); +GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings); +GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines); +GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines); +GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params); +GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0); +GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0); +GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0); +GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0); +GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1); +GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline); +GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v); +GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v); +GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f); +GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data); +#endif +#endif /* GL_VERSION_4_1 */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params); +typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers); +typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params); +GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers); +GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount); +GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#endif +#endif /* GL_VERSION_4_2 */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_DISPLAY_LIST 0x82E7 +typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params); +typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params); +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect); +GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params); +GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level); +GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer); +GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments); +GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params); +GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI void APIENTRY glPopDebugGroup (void); +GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_VERSION_4_3 */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers); +typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures); +GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers); +GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures); +GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +#endif +#endif /* GL_VERSION_4_4 */ + +#ifndef GL_VERSION_4_5 +#define GL_VERSION_4_5 1 +#define GL_CONTEXT_LOST 0x0507 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_MINMAX 0x802E +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth); +typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param); +typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src); +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture); +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); +typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers); +typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines); +typedef void (APIENTRYP PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers); +typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC) (void); +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (APIENTRYP PFNGLGETNMAPDVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP PFNGLGETNMAPFVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLGETNMAPIVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP PFNGLGETNCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLGETNMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth); +GLAPI void APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param); +GLAPI void APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param); +GLAPI void APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers); +GLAPI void APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void *APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access); +GLAPI void *APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI GLboolean APIENTRY glUnmapNamedBuffer (GLuint buffer); +GLAPI void APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params); +GLAPI void APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers); +GLAPI void APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param); +GLAPI void APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf); +GLAPI void APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src); +GLAPI void APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments); +GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target); +GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures); +GLAPI void APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param); +GLAPI void APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param); +GLAPI void APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param); +GLAPI void APIENTRY glGenerateTextureMipmap (GLuint texture); +GLAPI void APIENTRY glBindTextureUnit (GLuint unit, GLuint texture); +GLAPI void APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params); +GLAPI void APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params); +GLAPI void APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays); +GLAPI void APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer); +GLAPI void APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); +GLAPI void APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param); +GLAPI void APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers); +GLAPI void APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines); +GLAPI void APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids); +GLAPI void APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); +GLAPI void APIENTRY glMemoryBarrierByRegion (GLbitfield barriers); +GLAPI void APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels); +GLAPI GLenum APIENTRY glGetGraphicsResetStatus (void); +GLAPI void APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels); +GLAPI void APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI void APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI void APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI void APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI void APIENTRY glGetnMapdv (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI void APIENTRY glGetnMapfv (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glGetnMapiv (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI void APIENTRY glGetnPixelMapfv (GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI void APIENTRY glGetnPixelMapuiv (GLenum map, GLsizei bufSize, GLuint *values); +GLAPI void APIENTRY glGetnPixelMapusv (GLenum map, GLsizei bufSize, GLushort *values); +GLAPI void APIENTRY glGetnPolygonStipple (GLsizei bufSize, GLubyte *pattern); +GLAPI void APIENTRY glGetnColorTable (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI void APIENTRY glGetnConvolutionFilter (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI void APIENTRY glGetnSeparableFilter (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI void APIENTRY glGetnHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glGetnMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glTextureBarrier (void); +#endif +#endif /* GL_VERSION_4_5 */ + +#ifndef GL_VERSION_4_6 +#define GL_VERSION_4_6 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_VERSION_4_6 */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +#endif /* GL_ARB_ES2_compatibility */ + +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 +#endif /* GL_ARB_ES3_1_compatibility */ + +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_ARB_ES3_2_compatibility */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +#endif /* GL_ARB_ES3_compatibility */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +#endif /* GL_ARB_arrays_of_arrays */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +#endif /* GL_ARB_base_instance */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 +typedef khronos_uint64_t GLuint64EXT; +#define GL_UNSIGNED_INT64_ARB 0x140F +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture); +GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler); +GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle); +GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle); +GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access); +GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle); +GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value); +GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value); +GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle); +GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle); +GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x); +GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params); +#endif +#endif /* GL_ARB_bindless_texture */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +#endif /* GL_ARB_blend_func_extended */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +#endif /* GL_ARB_buffer_storage */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 +struct _cl_context; +struct _cl_event; +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags); +#endif +#endif /* GL_ARB_cl_event */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +#endif /* GL_ARB_clear_buffer_object */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +#endif /* GL_ARB_clear_texture */ + +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +#endif /* GL_ARB_clip_control */ + +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D +typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp); +#endif +#endif /* GL_ARB_color_buffer_float */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +#endif /* GL_ARB_compatibility */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +#endif /* GL_ARB_compute_shader */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); +#endif +#endif /* GL_ARB_compute_variable_group_size */ + +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 +#endif /* GL_ARB_conditional_render_inverted */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +#endif /* GL_ARB_conservative_depth */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +#endif /* GL_ARB_copy_buffer */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +#endif /* GL_ARB_copy_image */ + +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 +#endif /* GL_ARB_cull_distance */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +#endif +#endif /* GL_ARB_debug_output */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +#endif /* GL_ARB_depth_buffer_float */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#endif /* GL_ARB_depth_clamp */ + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif /* GL_ARB_depth_texture */ + +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 +#endif /* GL_ARB_derivative_control */ + +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 +#endif /* GL_ARB_direct_state_access */ + +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 +typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_ARB_draw_buffers */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 +typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +#endif /* GL_ARB_draw_buffers_blend */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#endif /* GL_ARB_draw_elements_base_vertex */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +#endif /* GL_ARB_draw_indirect */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_ARB_draw_instanced */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +#endif /* GL_ARB_enhanced_layouts */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +#endif /* GL_ARB_explicit_attrib_location */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +#endif /* GL_ARB_explicit_uniform_location */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#endif /* GL_ARB_fragment_coord_conventions */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +#endif /* GL_ARB_fragment_layer_viewport */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program); +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs); +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string); +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program); +#endif +#endif /* GL_ARB_fragment_program */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +#endif /* GL_ARB_fragment_program_shadow */ + +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#endif /* GL_ARB_fragment_shader */ + +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +#endif /* GL_ARB_fragment_shader_interlock */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +#endif /* GL_ARB_framebuffer_no_attachments */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +#endif /* GL_ARB_framebuffer_object */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +#endif /* GL_ARB_framebuffer_sRGB */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value); +GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_ARB_geometry_shader4 */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +#endif /* GL_ARB_get_program_binary */ + +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 +#endif /* GL_ARB_get_texture_sub_image */ + +#ifndef GL_ARB_gl_spirv +#define GL_ARB_gl_spirv 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SPIR_V_BINARY_ARB 0x9552 +typedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpecializeShaderARB (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +#endif +#endif /* GL_ARB_gl_spirv */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +#endif /* GL_ARB_gpu_shader5 */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +#endif /* GL_ARB_gpu_shader_fp64 */ + +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x); +typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y); +typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z); +typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x); +typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y); +typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params); +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x); +GLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y); +GLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x); +GLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y); +GLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params); +GLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params); +GLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +GLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +GLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x); +GLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y); +GLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x); +GLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y); +GLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +#endif +#endif /* GL_ARB_gpu_shader_int64 */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 +typedef khronos_uint16_t GLhalfARB; +#define GL_HALF_FLOAT_ARB 0x140B +#endif /* GL_ARB_half_float_pixel */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +#endif /* GL_ARB_half_float_vertex */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table); +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image); +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogram (GLenum target); +GLAPI void APIENTRY glResetMinmax (GLenum target); +#endif +#endif /* GL_ARB_imaging */ + +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_ARB_indirect_parameters */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor); +#endif +#endif /* GL_ARB_instanced_arrays */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +#endif /* GL_ARB_internalformat_query */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#endif /* GL_ARB_internalformat_query2 */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +#endif /* GL_ARB_invalidate_subdata */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +#endif /* GL_ARB_map_buffer_alignment */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +#endif /* GL_ARB_map_buffer_range */ + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index); +GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices); +GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices); +GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices); +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_ARB_matrix_palette */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +#endif /* GL_ARB_multi_bind */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +#endif /* GL_ARB_multi_draw_indirect */ + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert); +#endif +#endif /* GL_ARB_multisample */ + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTextureARB (GLenum texture); +GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture); +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s); +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s); +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s); +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s); +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t); +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t); +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t); +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t); +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r); +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v); +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v); +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v); +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v); +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v); +#endif +#endif /* GL_ARB_multitexture */ + +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 +typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id); +GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id); +GLAPI void APIENTRY glEndQueryARB (GLenum target); +GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params); +#endif +#endif /* GL_ARB_occlusion_query */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +#endif /* GL_ARB_occlusion_query2 */ + +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count); +#endif +#endif /* GL_ARB_parallel_shader_compile */ + +#ifndef GL_ARB_pipeline_statistics_query +#define GL_ARB_pipeline_statistics_query 1 +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#endif /* GL_ARB_pipeline_statistics_query */ + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif /* GL_ARB_pixel_buffer_object */ + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_ARB_point_parameters */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif /* GL_ARB_point_sprite */ + +#ifndef GL_ARB_polygon_offset_clamp +#define GL_ARB_polygon_offset_clamp 1 +#endif /* GL_ARB_polygon_offset_clamp */ + +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +#endif /* GL_ARB_post_depth_coverage */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +#endif /* GL_ARB_program_interface_query */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#endif /* GL_ARB_provoking_vertex */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +#endif /* GL_ARB_query_buffer_object */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +#endif /* GL_ARB_robust_buffer_access_behavior */ + +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void); +typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img); +typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values); +typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values); +typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern); +typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void); +GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img); +GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img); +GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params); +GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); +GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v); +GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values); +GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values); +GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values); +GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern); +GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table); +GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image); +GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span); +GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values); +#endif +#endif /* GL_ARB_robustness */ + +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +#endif /* GL_ARB_robustness_isolation */ + +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glEvaluateDepthValuesARB (void); +#endif +#endif /* GL_ARB_sample_locations */ + +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value); +#endif +#endif /* GL_ARB_sample_shading */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +#endif /* GL_ARB_sampler_objects */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#endif /* GL_ARB_seamless_cube_map */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +#endif /* GL_ARB_separate_shader_objects */ + +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +#endif /* GL_ARB_shader_atomic_counter_ops */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +#endif /* GL_ARB_shader_atomic_counters */ + +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +#endif /* GL_ARB_shader_ballot */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +#endif /* GL_ARB_shader_bit_encoding */ + +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +#endif /* GL_ARB_shader_clock */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +#endif /* GL_ARB_shader_draw_parameters */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +#endif /* GL_ARB_shader_group_vote */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +#endif /* GL_ARB_shader_image_load_store */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +#endif /* GL_ARB_shader_image_size */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef char GLcharARB; +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); +typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); +typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); +typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); +typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); +typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); +typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); +typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); +typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj); +GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname); +GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj); +GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType); +GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); +GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj); +GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); +GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj); +GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj); +GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj); +GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj); +GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0); +GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0); +GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); +GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); +GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name); +GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params); +GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params); +GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +#endif +#endif /* GL_ARB_shader_objects */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +#endif /* GL_ARB_shader_precision */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +#endif /* GL_ARB_shader_stencil_export */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +#endif /* GL_ARB_shader_storage_buffer_object */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +#endif /* GL_ARB_shader_subroutine */ + +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 +#endif /* GL_ARB_shader_texture_image_samples */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +#endif /* GL_ARB_shader_texture_lod */ + +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +#endif /* GL_ARB_shader_viewport_layer_array */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#endif /* GL_ARB_shading_language_100 */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +#endif /* GL_ARB_shading_language_420pack */ + +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name); +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name); +GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length); +GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name); +GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); +GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params); +#endif +#endif /* GL_ARB_shading_language_include */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +#endif /* GL_ARB_shading_language_packing */ + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif /* GL_ARB_shadow */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif /* GL_ARB_shadow_ambient */ + +#ifndef GL_ARB_sparse_buffer +#define GL_ARB_sparse_buffer 1 +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +#endif +#endif /* GL_ARB_sparse_buffer */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_ARB_sparse_texture */ + +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +#endif /* GL_ARB_sparse_texture2 */ + +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +#endif /* GL_ARB_sparse_texture_clamp */ + +#ifndef GL_ARB_spirv_extensions +#define GL_ARB_spirv_extensions 1 +#endif /* GL_ARB_spirv_extensions */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +#endif /* GL_ARB_stencil_texturing */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#endif /* GL_ARB_sync */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +#endif /* GL_ARB_tessellation_shader */ + +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 +#endif /* GL_ARB_texture_barrier */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif /* GL_ARB_texture_border_clamp */ + +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_ARB_texture_buffer_object */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +#endif /* GL_ARB_texture_buffer_range */ + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img); +#endif +#endif /* GL_ARB_texture_compression */ + +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#endif /* GL_ARB_texture_compression_bptc */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +#endif /* GL_ARB_texture_compression_rgtc */ + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif /* GL_ARB_texture_cube_map */ + +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#endif /* GL_ARB_texture_cube_map_array */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif /* GL_ARB_texture_env_add */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif /* GL_ARB_texture_env_combine */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif /* GL_ARB_texture_env_crossbar */ + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#endif /* GL_ARB_texture_env_dot3 */ + +#ifndef GL_ARB_texture_filter_anisotropic +#define GL_ARB_texture_filter_anisotropic 1 +#endif /* GL_ARB_texture_filter_anisotropic */ + +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#endif /* GL_ARB_texture_filter_minmax */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#endif /* GL_ARB_texture_float */ + +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#endif /* GL_ARB_texture_gather */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif /* GL_ARB_texture_mirrored_repeat */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#endif /* GL_ARB_texture_multisample */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif /* GL_ARB_texture_non_power_of_two */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +#endif /* GL_ARB_texture_query_levels */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +#endif /* GL_ARB_texture_query_lod */ + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif /* GL_ARB_texture_rectangle */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +#endif /* GL_ARB_texture_rg */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +#endif /* GL_ARB_texture_rgb10_a2ui */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +#endif /* GL_ARB_texture_stencil8 */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +#endif /* GL_ARB_texture_storage */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +#endif /* GL_ARB_texture_storage_multisample */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +#endif /* GL_ARB_texture_swizzle */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +#endif /* GL_ARB_texture_view */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +#endif /* GL_ARB_timer_query */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +#endif /* GL_ARB_transform_feedback2 */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +#endif /* GL_ARB_transform_feedback3 */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +#endif /* GL_ARB_transform_feedback_instanced */ + +#ifndef GL_ARB_transform_feedback_overflow_query +#define GL_ARB_transform_feedback_overflow_query 1 +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#endif /* GL_ARB_transform_feedback_overflow_query */ + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m); +#endif +#endif /* GL_ARB_transpose_matrix */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +#endif /* GL_ARB_uniform_buffer_object */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#endif /* GL_ARB_vertex_array_bgra */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +#endif /* GL_ARB_vertex_array_object */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +#endif /* GL_ARB_vertex_attrib_64bit */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +#endif /* GL_ARB_vertex_attrib_binding */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights); +GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights); +GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights); +GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights); +GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights); +GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights); +GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights); +GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights); +GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glVertexBlendARB (GLint count); +#endif +#endif /* GL_ARB_vertex_blend */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 +typedef khronos_ssize_t GLsizeiptrARB; +typedef khronos_intptr_t GLintptrARB; +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA +typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); +typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer); +GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers); +GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers); +GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer); +GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage); +GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data); +GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data); +GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access); +GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target); +GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_ARB_vertex_buffer_object */ + +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index); +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer); +#endif +#endif /* GL_ARB_vertex_program */ + +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name); +GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); +GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name); +#endif +#endif /* GL_ARB_vertex_shader */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC) (GLuint first, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC) (GLuint index, GLdouble n, GLdouble f); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangeArraydvNV (GLuint first, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glDepthRangeIndexeddNV (GLuint index, GLdouble n, GLdouble f); +#endif +#endif /* GL_ARB_viewport_array */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v); +GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v); +GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v); +GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v); +#endif +#endif /* GL_ARB_window_pos */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +typedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendBarrierKHR (void); +#endif +#endif /* GL_KHR_blend_equation_advanced */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count); +#endif +#endif /* GL_KHR_parallel_shader_compile */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#endif /* GL_KHR_robustness */ + +#ifndef GL_KHR_shader_subgroup +#define GL_KHR_shader_subgroup 1 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#endif /* GL_KHR_shader_subgroup */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s); +typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); +typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x, GLbyte y); +typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z, GLbyte w); +typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s); +GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t); +GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glTexCoord1bOES (GLbyte s); +GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t); +GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r); +GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex2bOES (GLbyte x, GLbyte y); +GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y, GLbyte z); +GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z, GLbyte w); +GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords); +#endif +#endif /* GL_OES_byte_coordinates */ + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif /* GL_OES_compressed_paletted_texture */ + +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +typedef khronos_int32_t GLfixed; +#define GL_FIXED_OES 0x140C +typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth); +typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); +typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value); +typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); +typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); +typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); +typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token); +typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); +typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); +typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref); +GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearDepthxOES (GLfixed depth); +GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); +GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f); +GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation); +GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); +GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glLineWidthxOES (GLfixed width); +GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); +GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glPointSizexOES (GLfixed size); +GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); +GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value); +GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue); +GLAPI void APIENTRY glColor3xvOES (const GLfixed *components); +GLAPI void APIENTRY glColor4xvOES (const GLfixed *components); +GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u); +GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v); +GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer); +GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v); +GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values); +GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glIndexxOES (GLfixed component); +GLAPI void APIENTRY glIndexxvOES (const GLfixed *component); +GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2); +GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s); +GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t); +GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glPassThroughxOES (GLfixed token); +GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values); +GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param); +GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor); +GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities); +GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2); +GLAPI void APIENTRY glTexCoord1xOES (GLfixed s); +GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t); +GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glVertex2xOES (GLfixed x); +GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords); +#endif +#endif /* GL_OES_fixed_point */ + +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent); +#endif +#endif /* GL_OES_query_matrix */ + +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif /* GL_OES_read_format */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClearDepthfOES (GLclampf depth); +GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); +GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f); +GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation); +GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#endif +#endif /* GL_OES_single_precision */ + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif /* GL_3DFX_multisample */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask); +#endif +#endif /* GL_3DFX_tbuffer */ + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif /* GL_3DFX_texture_compression_FXT1 */ + +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_AMD_blend_minmax_factor */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +#endif /* GL_AMD_conservative_depth */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +#endif +#endif /* GL_AMD_debug_output */ + +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#endif /* GL_AMD_depth_clamp_separate */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 +typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode); +GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_AMD_draw_buffers_blend */ + +#ifndef GL_AMD_framebuffer_multisample_advanced +#define GL_AMD_framebuffer_multisample_advanced 1 +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_AMD_framebuffer_multisample_advanced */ + +#ifndef GL_AMD_framebuffer_sample_positions +#define GL_AMD_framebuffer_sample_positions 1 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC) (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC) (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSamplePositionsfvAMD (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI void APIENTRY glNamedFramebufferSamplePositionsfvAMD (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values); +GLAPI void APIENTRY glGetFramebufferParameterfvAMD (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +GLAPI void APIENTRY glGetNamedFramebufferParameterfvAMD (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values); +#endif +#endif /* GL_AMD_framebuffer_sample_positions */ + +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 +#endif /* GL_AMD_gcn_shader */ + +#ifndef GL_AMD_gpu_shader_half_float +#define GL_AMD_gpu_shader_half_float 1 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#endif /* GL_AMD_gpu_shader_half_float */ + +#ifndef GL_AMD_gpu_shader_int16 +#define GL_AMD_gpu_shader_int16 1 +#endif /* GL_AMD_gpu_shader_int16 */ + +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 +typedef khronos_int64_t GLint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params); +GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_AMD_gpu_shader_int64 */ + +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param); +#endif +#endif /* GL_AMD_interleaved_elements */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride); +#endif +#endif /* GL_AMD_multi_draw_indirect */ + +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names); +typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names); +typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names); +GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names); +GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name); +#endif +#endif /* GL_AMD_name_gen_delete */ + +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param); +#endif +#endif /* GL_AMD_occlusion_query_event */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#endif /* GL_AMD_pinned_memory */ + +#ifndef GL_AMD_query_buffer_object +#define GL_AMD_query_buffer_object 1 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#endif /* GL_AMD_query_buffer_object */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 +typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val); +#endif +#endif /* GL_AMD_sample_positions */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 +#endif /* GL_AMD_shader_atomic_counter_ops */ + +#ifndef GL_AMD_shader_ballot +#define GL_AMD_shader_ballot 1 +#endif /* GL_AMD_shader_ballot */ + +#ifndef GL_AMD_shader_explicit_vertex_parameter +#define GL_AMD_shader_explicit_vertex_parameter 1 +#endif /* GL_AMD_shader_explicit_vertex_parameter */ + +#ifndef GL_AMD_shader_gpu_shader_half_float_fetch +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +#endif /* GL_AMD_shader_gpu_shader_half_float_fetch */ + +#ifndef GL_AMD_shader_image_load_store_lod +#define GL_AMD_shader_image_load_store_lod 1 +#endif /* GL_AMD_shader_image_load_store_lod */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +#endif /* GL_AMD_shader_stencil_export */ + +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +#endif /* GL_AMD_shader_trinary_minmax */ + +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +#endif +#endif /* GL_AMD_sparse_texture */ + +#ifndef GL_AMD_stencil_operation_extended +#define GL_AMD_stencil_operation_extended 1 +#define GL_SET_AMD 0x874A +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value); +#endif +#endif /* GL_AMD_stencil_operation_extended */ + +#ifndef GL_AMD_texture_gather_bias_lod +#define GL_AMD_texture_gather_bias_lod 1 +#endif /* GL_AMD_texture_gather_bias_lod */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +#endif /* GL_AMD_texture_texture4 */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#endif /* GL_AMD_transform_feedback4 */ + +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 +#endif /* GL_AMD_vertex_shader_layer */ + +#ifndef GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 +typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor); +GLAPI void APIENTRY glTessellationModeAMD (GLenum mode); +#endif +#endif /* GL_AMD_vertex_shader_tessellator */ + +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 +#endif /* GL_AMD_vertex_shader_viewport_index */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#endif /* GL_APPLE_aux_depth_stencil */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#endif /* GL_APPLE_client_storage */ + +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer); +GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); +GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +#endif +#endif /* GL_APPLE_element_array */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B +typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); +typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); +typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences); +GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences); +GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence); +GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence); +GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name); +GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name); +#endif +#endif /* GL_APPLE_fence */ + +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#endif /* GL_APPLE_float_pixels */ + +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_APPLE_flush_buffer_range */ + +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D +typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); +typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); +GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option); +GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params); +#endif +#endif /* GL_APPLE_object_purgeable */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#endif /* GL_APPLE_row_bytes */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif /* GL_APPLE_specular_vector */ + +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF +typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer); +GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_APPLE_texture_range */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif /* GL_APPLE_transform_hint */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array); +GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays); +GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays); +GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array); +#endif +#endif /* GL_APPLE_vertex_array_object */ + +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer); +typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param); +#endif +#endif /* GL_APPLE_vertex_array_range */ + +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); +typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname); +GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname); +GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname); +GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +#endif +#endif /* GL_APPLE_vertex_program_evaluators */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +#define GL_YCBCR_422_APPLE 0x85B9 +#endif /* GL_APPLE_ycbcr_422 */ + +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 +typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_ATI_draw_buffers */ + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif +#endif /* GL_ATI_element_array */ + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); +typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param); +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param); +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param); +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param); +#endif +#endif /* GL_ATI_envmap_bumpmap */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range); +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id); +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id); +GLAPI void APIENTRY glBeginFragmentShaderATI (void); +GLAPI void APIENTRY glEndFragmentShaderATI (void); +GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle); +GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle); +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value); +#endif +#endif /* GL_ATI_fragment_shader */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 +typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer); +#endif +#endif /* GL_ATI_map_object_buffer */ + +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#endif /* GL_ATI_meminfo */ + +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#endif /* GL_ATI_pixel_format_float */ + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_pn_triangles */ + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#endif +#endif /* GL_ATI_separate_stencil */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#endif /* GL_ATI_text_fragment_shader */ + +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#endif /* GL_ATI_texture_env_combine3 */ + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif /* GL_ATI_texture_float */ + +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#endif /* GL_ATI_texture_mirror_once */ + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage); +typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve); +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer); +GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params); +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params); +#endif +#endif /* GL_ATI_vertex_array_object */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 +typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params); +#endif +#endif /* GL_ATI_vertex_attrib_array_object */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x); +GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x); +GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x); +GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x); +GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y); +GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords); +GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords); +GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz); +GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords); +GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords); +GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords); +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream); +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param); +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_vertex_streams */ + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif /* GL_EXT_422_pixels */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void *GLeglImageOES; +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_sync +#define GL_EXT_EGL_sync 1 +#endif /* GL_EXT_EGL_sync */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#define GL_ABGR_EXT 0x8000 +#endif /* GL_EXT_abgr */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif /* GL_EXT_bgra */ + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); +typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); +typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer); +GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location); +GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location); +#endif +#endif /* GL_EXT_bindable_uniform */ + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#endif +#endif /* GL_EXT_blend_color */ + +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_EXT_blend_equation_separate */ + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_EXT_blend_func_separate */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif /* GL_EXT_blend_logic_op */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 +typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationEXT (GLenum mode); +#endif +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif /* GL_EXT_blend_subtract */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif /* GL_EXT_clip_volume_hint */ + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif /* GL_EXT_cmyka */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif +#endif /* GL_EXT_color_subtable */ + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count); +GLAPI void APIENTRY glUnlockArraysEXT (void); +#endif +#endif /* GL_EXT_compiled_vertex_array */ + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image); +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params); +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params); +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column); +#endif +#endif /* GL_EXT_convolution */ + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); +typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); +typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); +typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); +typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); +typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); +typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); +typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); +typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); +typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); +typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz); +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz); +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz); +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz); +GLAPI void APIENTRY glTangent3ivEXT (const GLint *v); +GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz); +GLAPI void APIENTRY glTangent3svEXT (const GLshort *v); +GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz); +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz); +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz); +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz); +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v); +GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz); +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v); +GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_coordinate_frame */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_EXT_copy_texture */ + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_cull_vertex */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GLAPI void APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax); +#endif +#endif /* GL_EXT_depth_bounds_test */ + +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data); +typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data); +typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); +typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); +typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index); +typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); +typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); +typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array); +typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param); +typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glMatrixPopEXT (GLenum mode); +GLAPI void APIENTRY glMatrixPushEXT (GLenum mode); +GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask); +GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture); +GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); +GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); +GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params); +GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data); +GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data); +GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data); +GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index); +GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index); +GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index); +GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data); +GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data); +GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img); +GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits); +GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img); +GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage); +GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access); +GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer); +GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params); +GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data); +GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); +GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params); +GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index); +GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params); +GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string); +GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params); +GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params); +GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params); +GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string); +GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target); +GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target); +GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target); +GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode); +GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode); +GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); +GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array); +GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array); +GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index); +GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param); +GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param); +GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param); +GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); +GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); +GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x); +GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y); +GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); +GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_direct_state_access */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 +typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#endif +#endif /* GL_EXT_draw_buffers2 */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +#endif +#endif /* GL_EXT_draw_range_elements */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GLAPI void APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); +typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord); +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord); +GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord); +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord); +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_fog_coord */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_EXT_framebuffer_blit */ + +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_EXT_framebuffer_multisample */ + +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer); +GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer); +GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers); +GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers); +GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer); +GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer); +GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers); +GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers); +GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target); +GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target); +#endif +#endif /* GL_EXT_framebuffer_object */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#endif /* GL_EXT_framebuffer_sRGB */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +#endif +#endif /* GL_EXT_geometry_shader4 */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +#endif +#endif /* GL_EXT_gpu_program_parameters */ + +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); +typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); +typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params); +GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name); +GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0); +GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1); +GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value); +GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x); +GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y); +GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z); +GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x); +GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y); +GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v); +GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v); +GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v); +GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v); +GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_gpu_shader4 */ + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink); +GLAPI void APIENTRY glResetHistogramEXT (GLenum target); +GLAPI void APIENTRY glResetMinmaxEXT (GLenum target); +#endif +#endif /* GL_EXT_histogram */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif /* GL_EXT_index_array_formats */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref); +#endif +#endif /* GL_EXT_index_func */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_index_material */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif /* GL_EXT_index_texture */ + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyTextureEXT (GLenum mode); +GLAPI void APIENTRY glTextureLightEXT (GLenum pname); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_light_texture */ + +#ifndef GL_EXT_memory_object +#define GL_EXT_memory_object 1 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_UUID_SIZE_EXT 16 +typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXSTORAGEMEM1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM1DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GLAPI void APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GLAPI void APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GLAPI GLboolean APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GLAPI void APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GLAPI void APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GLAPI void APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTexStorageMem1DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTextureStorageMem1DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset); +#endif +#endif /* GL_EXT_memory_object */ + +#ifndef GL_EXT_memory_object_fd +#define GL_EXT_memory_object_fd 1 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +typedef void (APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#endif +#endif /* GL_EXT_memory_object_fd */ + +#ifndef GL_EXT_memory_object_win32 +#define GL_EXT_memory_object_win32 1 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_LUID_SIZE_EXT 8 +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C +typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GLAPI void APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif /* GL_EXT_misc_attribute */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#endif +#endif /* GL_EXT_multi_draw_arrays */ + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern); +#endif +#endif /* GL_EXT_multisample */ + +#ifndef GL_EXT_multiview_tessellation_geometry_shader +#define GL_EXT_multiview_tessellation_geometry_shader 1 +#endif /* GL_EXT_multiview_tessellation_geometry_shader */ + +#ifndef GL_EXT_multiview_texture_multisample +#define GL_EXT_multiview_texture_multisample 1 +#endif /* GL_EXT_multiview_texture_multisample */ + +#ifndef GL_EXT_multiview_timer_query +#define GL_EXT_multiview_timer_query 1 +#endif /* GL_EXT_multiview_timer_query */ + +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif /* GL_EXT_packed_depth_stencil */ + +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#endif /* GL_EXT_packed_float */ + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif /* GL_EXT_packed_pixels */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_paletted_texture */ + +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#endif /* GL_EXT_pixel_buffer_object */ + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_EXT_pixel_transform */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif /* GL_EXT_pixel_transform_color_table */ + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_EXT_point_parameters */ + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias); +#endif +#endif /* GL_EXT_polygon_offset */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode); +#endif +#endif /* GL_EXT_provoking_vertex */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +typedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif /* GL_EXT_rescale_normal */ + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue); +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v); +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue); +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v); +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue); +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v); +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue); +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v); +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue); +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v); +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue); +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v); +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue); +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v); +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue); +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v); +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_secondary_color */ + +#ifndef GL_EXT_semaphore +#define GL_EXT_semaphore 1 +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 +typedef void (APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GLAPI void APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GLAPI GLboolean APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GLAPI void APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GLAPI void APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GLAPI void APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GLAPI void APIENTRY glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#endif +#endif /* GL_EXT_semaphore */ + +#ifndef GL_EXT_semaphore_fd +#define GL_EXT_semaphore_fd 1 +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd); +#endif +#endif /* GL_EXT_semaphore_fd */ + +#ifndef GL_EXT_semaphore_win32 +#define GL_EXT_semaphore_win32 1 +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GLAPI void APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); +typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program); +GLAPI void APIENTRY glActiveProgramEXT (GLuint program); +GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif /* GL_EXT_separate_specular_color */ + +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +#endif /* GL_EXT_shader_image_load_formatted */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers); +#endif +#endif /* GL_EXT_shader_image_load_store */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +#endif /* GL_EXT_shadow_funcs */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif /* GL_EXT_shared_texture_palette */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag); +#endif +#endif /* GL_EXT_stencil_clear_tag */ + +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face); +#endif +#endif /* GL_EXT_stencil_two_side */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif /* GL_EXT_stencil_wrap */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_EXT_subtexture */ + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif /* GL_EXT_texture */ + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_EXT_texture3D */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +#endif +#endif /* GL_EXT_texture_array */ + +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_EXT_texture_buffer_object */ + +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif /* GL_EXT_texture_compression_latc */ + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif /* GL_EXT_texture_compression_rgtc */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_cube_map +#define GL_EXT_texture_cube_map 1 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif /* GL_EXT_texture_cube_map */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif /* GL_EXT_texture_env_add */ + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif /* GL_EXT_texture_env_combine */ + +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#endif /* GL_EXT_texture_env_dot3 */ + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif /* GL_EXT_texture_filter_anisotropic */ + +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#endif /* GL_EXT_texture_filter_minmax */ + +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); +typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha); +GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha); +#endif +#endif /* GL_EXT_texture_integer */ + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif /* GL_EXT_texture_lod_bias */ + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#endif /* GL_EXT_texture_mirror_clamp */ + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture); +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures); +GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures); +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture); +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#endif +#endif /* GL_EXT_texture_object */ + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureNormalEXT (GLenum mode); +#endif +#endif /* GL_EXT_texture_perturb_normal */ + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_sRGB */ + +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_SR8_EXT 0x8FBD +#endif /* GL_EXT_texture_sRGB_R8 */ + +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_shadow_lod +#define GL_EXT_texture_shadow_lod 1 +#endif /* GL_EXT_texture_shadow_lod */ + +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#endif /* GL_EXT_texture_shared_exponent */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#endif /* GL_EXT_texture_snorm */ + +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F +typedef void (APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GLAPI void APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI void APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#endif /* GL_EXT_texture_swizzle */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +#define GL_TIME_ELAPSED_EXT 0x88BF +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +#endif +#endif /* GL_EXT_timer_query */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedbackEXT (void); +GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +#endif +#endif /* GL_EXT_transform_feedback */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params); +typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glArrayElementEXT (GLint i); +GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count); +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer); +GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params); +GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer); +#endif +#endif /* GL_EXT_vertex_array */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +#endif /* GL_EXT_vertex_array_bgra */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params); +#endif +#endif /* GL_EXT_vertex_attrib_64bit */ + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); +typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); +typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); +typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); +typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); +typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); +typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); +typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); +typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr); +typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data); +typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVertexShaderEXT (void); +GLAPI void APIENTRY glEndVertexShaderEXT (void); +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id); +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range); +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id); +GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1); +GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num); +GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num); +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr); +GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr); +GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr); +GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr); +GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr); +GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr); +GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr); +GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr); +GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr); +GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr); +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id); +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id); +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value); +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap); +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data); +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data); +#endif +#endif /* GL_EXT_vertex_shader */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer); +#endif +#endif /* GL_EXT_vertex_weighting */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GLAPI GLboolean APIENTRY glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key); +#endif +#endif /* GL_EXT_win32_keyed_mutex */ + +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#endif +#endif /* GL_EXT_x11_sync_object */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +#endif +#endif /* GL_GREMEDY_frame_terminator */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 +typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string); +#endif +#endif /* GL_GREMEDY_string_marker */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif /* GL_HP_convolution_border_modes */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param); +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params); +#endif +#endif /* GL_HP_image_transform */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif /* GL_HP_occlusion_test */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif /* GL_HP_texture_lighting */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#define GL_CULL_VERTEX_IBM 103050 +#endif /* GL_IBM_cull_vertex */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride); +#endif +#endif /* GL_IBM_multimode_draw_arrays */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif /* GL_IBM_rasterpos_clip */ + +#ifndef GL_IBM_static_data +#define GL_IBM_static_data 1 +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target); +#endif +#endif /* GL_IBM_static_data */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif /* GL_IBM_texture_mirrored_repeat */ + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride); +#endif +#endif /* GL_IBM_vertex_array_lists */ + +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_INGR_blend_func_separate */ + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif /* GL_INGR_color_clamp */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#define GL_INTERLACE_READ_INGR 0x8568 +#endif /* GL_INGR_interlace_read */ + +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 +#endif /* GL_INTEL_fragment_shader_ordering */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); +typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture); +GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level); +GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout); +#endif +#endif /* GL_INTEL_map_texture */ + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer); +GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer); +#endif +#endif /* GL_INTEL_parallel_arrays */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#endif /* GL_MESAX_texture_stack */ + +#ifndef GL_MESA_framebuffer_flip_x +#define GL_MESA_framebuffer_flip_x 1 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#endif /* GL_MESA_framebuffer_flip_x */ + +#ifndef GL_MESA_framebuffer_flip_y +#define GL_MESA_framebuffer_flip_y 1 +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params); +#endif +#endif /* GL_MESA_framebuffer_flip_y */ + +#ifndef GL_MESA_framebuffer_swap_xy +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#endif /* GL_MESA_framebuffer_swap_xy */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +#define GL_PACK_INVERT_MESA 0x8758 +#endif /* GL_MESA_pack_invert */ + +#ifndef GL_MESA_program_binary_formats +#define GL_MESA_program_binary_formats 1 +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#endif /* GL_MESA_program_binary_formats */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glResizeBuffersMESA (void); +#endif +#endif /* GL_MESA_resize_buffers */ + +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#ifndef GL_MESA_tile_raster_order +#define GL_MESA_tile_raster_order 1 +#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 +#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 +#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA +#endif /* GL_MESA_tile_raster_order */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); +typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y); +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y); +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y); +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y); +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v); +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z); +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v); +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v); +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v); +GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v); +GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v); +#endif +#endif /* GL_MESA_window_pos */ + +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#endif /* GL_MESA_ycbcr_texture */ + +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */ + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id); +GLAPI void APIENTRY glEndConditionalRenderNVX (void); +#endif +#endif /* GL_NVX_conditional_render */ + +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#endif /* GL_NVX_gpu_memory_info */ + +#ifndef GL_NVX_gpu_multicast2 +#define GL_NVX_gpu_multicast2 1 +#define GL_UPLOAD_GPU_MASK_NVX 0x954A +typedef void (APIENTRYP PFNGLUPLOADGPUMASKNVXPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC) (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff); +typedef void (APIENTRYP PFNGLMULTICASTSCISSORARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLint *v); +typedef GLuint (APIENTRYP PFNGLASYNCCOPYBUFFERSUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +typedef GLuint (APIENTRYP PFNGLASYNCCOPYIMAGESUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUploadGpuMaskNVX (GLbitfield mask); +GLAPI void APIENTRY glMulticastViewportArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glMulticastViewportPositionWScaleNVX (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff); +GLAPI void APIENTRY glMulticastScissorArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLint *v); +GLAPI GLuint APIENTRY glAsyncCopyBufferSubDataNVX (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +GLAPI GLuint APIENTRY glAsyncCopyImageSubDataNVX (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +#endif +#endif /* GL_NVX_gpu_multicast2 */ + +#ifndef GL_NVX_linked_gpu_multicast +#define GL_NVX_linked_gpu_multicast 1 +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA +typedef void (APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC) (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLLGPUINTERLOCKNVXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLGPUNamedBufferSubDataNVX (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glLGPUCopyImageSubDataNVX (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glLGPUInterlockNVX (void); +#endif +#endif /* GL_NVX_linked_gpu_multicast */ + +#ifndef GL_NVX_progress_fence +#define GL_NVX_progress_fence 1 +typedef GLuint (APIENTRYP PFNGLCREATEPROGRESSFENCENVXPROC) (void); +typedef void (APIENTRYP PFNGLSIGNALSEMAPHOREUI64NVXPROC) (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +typedef void (APIENTRYP PFNGLWAITSEMAPHOREUI64NVXPROC) (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +typedef void (APIENTRYP PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC) (GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glCreateProgressFenceNVX (void); +GLAPI void APIENTRY glSignalSemaphoreui64NVX (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI void APIENTRY glWaitSemaphoreui64NVX (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +GLAPI void APIENTRY glClientWaitSemaphoreui64NVX (GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray); +#endif +#endif /* GL_NVX_progress_fence */ + +#ifndef GL_NV_alpha_to_coverage_dither_control +#define GL_NV_alpha_to_coverage_dither_control 1 +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF +typedef void (APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAlphaToCoverageDitherControlNV (GLenum mode); +#endif +#endif /* GL_NV_alpha_to_coverage_dither_control */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect */ + +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect_count */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture); +GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GLAPI void APIENTRY glBlendBarrierNV (void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +#endif /* GL_NV_blend_minmax_factor */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif /* GL_NV_blend_square */ + +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#ifndef GL_NV_command_list +#define GL_NV_command_list 1 +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 +typedef void (APIENTRYP PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint *states); +typedef void (APIENTRYP PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint *states); +typedef GLboolean (APIENTRYP PFNGLISSTATENVPROC) (GLuint state); +typedef void (APIENTRYP PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode); +typedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size); +typedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +typedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +typedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint *lists); +typedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint *lists); +typedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC) (GLuint list); +typedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +typedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments); +typedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list); +typedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC) (GLuint list); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCreateStatesNV (GLsizei n, GLuint *states); +GLAPI void APIENTRY glDeleteStatesNV (GLsizei n, const GLuint *states); +GLAPI GLboolean APIENTRY glIsStateNV (GLuint state); +GLAPI void APIENTRY glStateCaptureNV (GLuint state, GLenum mode); +GLAPI GLuint APIENTRY glGetCommandHeaderNV (GLenum tokenID, GLuint size); +GLAPI GLushort APIENTRY glGetStageIndexNV (GLenum shadertype); +GLAPI void APIENTRY glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count); +GLAPI void APIENTRY glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count); +GLAPI void APIENTRY glDrawCommandsStatesNV (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI void APIENTRY glDrawCommandsStatesAddressNV (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI void APIENTRY glCreateCommandListsNV (GLsizei n, GLuint *lists); +GLAPI void APIENTRY glDeleteCommandListsNV (GLsizei n, const GLuint *lists); +GLAPI GLboolean APIENTRY glIsCommandListNV (GLuint list); +GLAPI void APIENTRY glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count); +GLAPI void APIENTRY glCommandListSegmentsNV (GLuint list, GLuint segments); +GLAPI void APIENTRY glCompileCommandListNV (GLuint list); +GLAPI void APIENTRY glCallCommandListNV (GLuint list); +#endif +#endif /* GL_NV_command_list */ + +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#endif /* GL_NV_compute_program5 */ + +#ifndef GL_NV_compute_shader_derivatives +#define GL_NV_compute_shader_derivatives 1 +#endif /* GL_NV_compute_shader_derivatives */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GLAPI void APIENTRY glEndConditionalRenderNV (void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +typedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value); +#endif +#endif /* GL_NV_conservative_raster_dilate */ + +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#endif /* GL_NV_conservative_raster_pre_snap */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_conservative_raster_underestimation +#define GL_NV_conservative_raster_underestimation 1 +#endif /* GL_NV_conservative_raster_underestimation */ + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif /* GL_NV_copy_depth_to_color */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_NV_copy_image */ + +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#endif /* GL_NV_deep_texture3D */ + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); +typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); +typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY glClearDepthdNV (GLdouble depth); +GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax); +#endif +#endif /* GL_NV_depth_buffer_float */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#define GL_DEPTH_CLAMP_NV 0x864F +#endif /* GL_NV_depth_clamp */ + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 +typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +#endif +#endif /* GL_NV_draw_texture */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (APIENTRY *GLVULKANPROCNV)(void); +typedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV (const GLchar *name); +GLAPI void APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GLAPI void APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GLAPI void APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points); +GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points); +GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode); +#endif +#endif /* GL_NV_evaluators */ + +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val); +typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask); +GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer); +#endif +#endif /* GL_NV_explicit_multisample */ + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence); +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence); +GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GLAPI void APIENTRY glFinishFenceNV (GLuint fence); +GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition); +#endif +#endif /* GL_NV_fence */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif /* GL_NV_float_buffer */ + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#endif /* GL_NV_fog_distance */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +typedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentCoverageColorNV (GLuint color); +#endif +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); +GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); +GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +#endif +#endif /* GL_NV_fragment_program */ + +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#endif /* GL_NV_fragment_program2 */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +#endif /* GL_NV_fragment_program4 */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +#endif /* GL_NV_fragment_program_option */ + +#ifndef GL_NV_fragment_shader_barycentric +#define GL_NV_fragment_shader_barycentric 1 +#endif /* GL_NV_fragment_shader_barycentric */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GLAPI void APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GLAPI void APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample_coverage */ + +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit); +GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_NV_geometry_program4 */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +#endif /* GL_NV_geometry_shader4 */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_gpu_multicast +#define GL_NV_gpu_multicast 1 +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 +typedef void (APIENTRYP PFNGLRENDERGPUMASKNVPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC) (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC) (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void (APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC) (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLMULTICASTBARRIERNVPROC) (void); +typedef void (APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC) (GLuint signalGpu, GLbitfield waitGpuMask); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint64 *params); +typedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glRenderGpuMaskNV (GLbitfield mask); +GLAPI void APIENTRY glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI void APIENTRY glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +GLAPI void APIENTRY glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glMulticastBarrierNV (void); +GLAPI void APIENTRY glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask); +GLAPI void APIENTRY glMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint *params); +GLAPI void APIENTRY glMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64 *params); +GLAPI void APIENTRY glMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params); +#endif +#endif /* GL_NV_gpu_multicast */ + +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params); +GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params); +GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params); +GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params); +GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params); +#endif +#endif /* GL_NV_gpu_program4 */ + +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param); +#endif +#endif /* GL_NV_gpu_program5 */ + +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 +#endif /* GL_NV_gpu_program5_mem_extended */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 +typedef unsigned short GLhalfNV; +#define GL_HALF_FLOAT_NV 0x140B +typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); +typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y); +GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); +GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s); +GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t); +GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s); +GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t); +GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); +GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); +GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x); +GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y); +GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +#endif +#endif /* GL_NV_half_float */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +typedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#endif +#endif /* GL_NV_internalformat_sample_query */ + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif /* GL_NV_light_max_exponent */ + +#ifndef GL_NV_memory_attachment +#define GL_NV_memory_attachment 1 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD +typedef void (APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GLAPI void APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GLAPI void APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GLAPI void APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset); +#endif +#endif /* GL_NV_memory_attachment */ + +#ifndef GL_NV_memory_object_sparse +#define GL_NV_memory_object_sparse 1 +typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#endif +#endif /* GL_NV_memory_object_sparse */ + +#ifndef GL_NV_mesh_shader +#define GL_NV_mesh_shader 1 +#define GL_MESH_SHADER_NV 0x9559 +#define GL_TASK_SHADER_NV 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F +typedef void (APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GLAPI void APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GLAPI void APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +#endif /* GL_NV_multisample_coverage */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif /* GL_NV_multisample_filter_hint */ + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id); +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id); +GLAPI void APIENTRY glEndOcclusionQueryNV (void); +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params); +#endif +#endif /* GL_NV_occlusion_query */ + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif /* GL_NV_packed_depth_stencil */ + +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); +#endif +#endif /* GL_NV_parameter_buffer_object */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +#endif /* GL_NV_parameter_buffer_object2 */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_2_BYTES_NV 0x1407 +#define GL_3_BYTES_NV 0x1408 +#define GL_4_BYTES_NV 0x1409 +#define GL_EYE_LINEAR_NV 0x2400 +#define GL_OBJECT_LINEAR_NV 0x2401 +#define GL_CONSTANT_NV 0x8576 +#define GL_PATH_FOG_GEN_MODE_NV 0x90AC +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode); +typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value); +typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value); +typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range); +GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GLAPI GLboolean APIENTRY glIsPathNV (GLuint path); +GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func); +GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GLAPI void APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); +GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); +GLAPI void APIENTRY glPathFogGenNV (GLenum genMode); +GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value); +GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value); +GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer); +typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer); +GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target); +#endif +#endif /* GL_NV_pixel_data_range */ + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param); +GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params); +#endif +#endif /* GL_NV_point_sprite */ + +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B +typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params); +typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params); +GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params); +#endif +#endif /* GL_NV_present_video */ + +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveRestartNV (void); +GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index); +#endif +#endif /* GL_NV_primitive_restart */ + +#ifndef GL_NV_primitive_shading_rate +#define GL_NV_primitive_shading_rate 1 +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#endif /* GL_NV_primitive_shading_rate */ + +#ifndef GL_NV_query_resource +#define GL_NV_query_resource 1 +#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 +#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 +#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 +#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 +#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 +#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 +typedef GLint (APIENTRYP PFNGLQUERYRESOURCENVPROC) (GLenum queryType, GLint tagId, GLuint count, GLint *buffer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glQueryResourceNV (GLenum queryType, GLint tagId, GLuint count, GLint *buffer); +#endif +#endif /* GL_NV_query_resource */ + +#ifndef GL_NV_query_resource_tag +#define GL_NV_query_resource_tag 1 +typedef void (APIENTRYP PFNGLGENQUERYRESOURCETAGNVPROC) (GLsizei n, GLint *tagIds); +typedef void (APIENTRYP PFNGLDELETEQUERYRESOURCETAGNVPROC) (GLsizei n, const GLint *tagIds); +typedef void (APIENTRYP PFNGLQUERYRESOURCETAGNVPROC) (GLint tagId, const GLchar *tagString); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenQueryResourceTagNV (GLsizei n, GLint *tagIds); +GLAPI void APIENTRY glDeleteQueryResourceTagNV (GLsizei n, const GLint *tagIds); +GLAPI void APIENTRY glQueryResourceTagNV (GLint tagId, const GLchar *tagString); +#endif +#endif /* GL_NV_query_resource_tag */ + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param); +GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params); +GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param); +GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_register_combiners */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params); +#endif +#endif /* GL_NV_register_combiners2 */ + +#ifndef GL_NV_representative_fragment_test +#define GL_NV_representative_fragment_test 1 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#endif /* GL_NV_representative_fragment_test */ + +#ifndef GL_NV_robustness_video_memory_purge +#define GL_NV_robustness_video_memory_purge 1 +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#endif /* GL_NV_robustness_video_memory_purge */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glResolveDepthValuesNV (void); +#endif +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_scissor_exclusive +#define GL_NV_scissor_exclusive 1 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 +typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +#endif /* GL_NV_shader_atomic_counters */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +#endif /* GL_NV_shader_atomic_float */ + +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +#endif /* GL_NV_shader_atomic_float64 */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +#endif /* GL_NV_shader_atomic_fp16_vector */ + +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 +#endif /* GL_NV_shader_atomic_int64 */ + +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); +typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); +typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target); +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); +typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); +typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result); +typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access); +GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target); +GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target); +GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access); +GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer); +GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer); +GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result); +GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value); +GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value); +GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_shader_buffer_load */ + +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#endif /* GL_NV_shader_buffer_store */ + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +#endif /* GL_NV_shader_storage_buffer_object */ + +#ifndef GL_NV_shader_subgroup_partitioned +#define GL_NV_shader_subgroup_partitioned 1 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#endif /* GL_NV_shader_subgroup_partitioned */ + +#ifndef GL_NV_shader_texture_footprint +#define GL_NV_shader_texture_footprint 1 +#endif /* GL_NV_shader_texture_footprint */ + +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#endif /* GL_NV_shader_thread_group */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +#endif /* GL_NV_shader_thread_shuffle */ + +#ifndef GL_NV_shading_rate_image +#define GL_NV_shading_rate_image 1 +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 +typedef void (APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindShadingRateImageNV (GLuint texture); +GLAPI void APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GLAPI void APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GLAPI void APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GLAPI void APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GLAPI void APIENTRY glShadingRateSampleOrderNV (GLenum order); +GLAPI void APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#endif /* GL_NV_tessellation_program5 */ + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif /* GL_NV_texgen_emboss */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif /* GL_NV_texgen_reflection */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 +typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureBarrierNV (void); +#endif +#endif /* GL_NV_texture_barrier */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif /* GL_NV_texture_compression_vtc */ + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif /* GL_NV_texture_env_combine4 */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#endif /* GL_NV_texture_expand_normal */ + +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +#endif +#endif /* GL_NV_texture_multisample */ + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#endif /* GL_NV_texture_rectangle */ + +#ifndef GL_NV_texture_rectangle_compressed +#define GL_NV_texture_rectangle_compressed 1 +#endif /* GL_NV_texture_rectangle_compressed */ + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif /* GL_NV_texture_shader */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif /* GL_NV_texture_shader2 */ + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif /* GL_NV_texture_shader3 */ + +#ifndef GL_NV_timeline_semaphore +#define GL_NV_timeline_semaphore 1 +#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 +#define GL_SEMAPHORE_TYPE_NV 0x95B3 +#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 +#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 +#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 +typedef void (APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GLAPI void APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_LAYER_NV 0x8DAA +#define GL_NEXT_BUFFER_NV -2 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS1_NV -6 +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLenum bufferMode); +typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode); +GLAPI void APIENTRY glEndTransformFeedbackNV (void); +GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLsizei count, const GLint *attribs, GLenum bufferMode); +GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset); +GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer); +GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); +GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name); +GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name); +GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location); +GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); +#endif +#endif /* GL_NV_transform_feedback */ + +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids); +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids); +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids); +GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids); +GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id); +GLAPI void APIENTRY glPauseTransformFeedbackNV (void); +GLAPI void APIENTRY glResumeTransformFeedbackNV (void); +GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id); +#endif +#endif /* GL_NV_transform_feedback2 */ + +#ifndef GL_NV_uniform_buffer_unified_memory +#define GL_NV_uniform_buffer_unified_memory 1 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#endif /* GL_NV_uniform_buffer_unified_memory */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 +typedef GLintptr GLvdpauSurfaceNV; +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE +typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress); +typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); +typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress); +GLAPI void APIENTRY glVDPAUFiniNV (void); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access); +GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); +GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); +#endif +#endif /* GL_NV_vdpau_interop */ + +#ifndef GL_NV_vdpau_interop2 +#define GL_NV_vdpau_interop2 1 +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure); +#endif +#endif /* GL_NV_vdpau_interop2 */ + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer); +#endif +#endif /* GL_NV_vertex_array_range */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif /* GL_NV_vertex_array_range2 */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x); +GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y); +GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v); +GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x); +GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y); +GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v); +GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params); +GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params); +GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); +#endif +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); +typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); +typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride); +GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride); +GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); +GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride); +GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result); +#endif +#endif /* GL_NV_vertex_buffer_unified_memory */ + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); +typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); +typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); +typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer); +typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences); +GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id); +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params); +GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs); +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program); +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params); +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer); +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id); +GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v); +GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v); +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs); +GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform); +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer); +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x); +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x); +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x); +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y); +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y); +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y); +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v); +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v); +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v); +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v); +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v); +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v); +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v); +#endif +#endif /* GL_NV_vertex_program */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif /* GL_NV_vertex_program1_1 */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +#endif /* GL_NV_vertex_program2 */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +#endif /* GL_NV_vertex_program2_option */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +#endif /* GL_NV_vertex_program3 */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#endif /* GL_NV_vertex_program4 */ + +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_SUCCESS_NV 0x902F +#define GL_FAILURE_NV 0x9030 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot); +GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); +GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); +GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot); +GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); +GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); +GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); +GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); +#endif +#endif /* GL_NV_video_capture */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif /* GL_OML_interlace */ + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif /* GL_OML_resample */ + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif /* GL_OML_subsample */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode); +#endif +#endif /* GL_PGI_misc_hints */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif /* GL_PGI_vertex_hints */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif /* GL_REND_screen_coordinates */ + +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#endif /* GL_S3_s3tc */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points); +#endif +#endif /* GL_SGIS_detail_texture */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points); +#endif +#endif /* GL_SGIS_fog_function */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif /* GL_SGIS_generate_mipmap */ + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern); +#endif +#endif /* GL_SGIS_multisample */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params); +#endif +#endif /* GL_SGIS_pixel_texture */ + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif /* GL_SGIS_point_line_texgen */ + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params); +#endif +#endif /* GL_SGIS_point_parameters */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points); +#endif +#endif /* GL_SGIS_sharpen_texture */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels); +#endif +#endif /* GL_SGIS_texture4D */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#endif /* GL_SGIS_texture_border_clamp */ + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif +#endif /* GL_SGIS_texture_color_mask */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif /* GL_SGIS_texture_edge_clamp */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#endif +#endif /* GL_SGIS_texture_filter4 */ + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif /* GL_SGIS_texture_lod */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif /* GL_SGIS_texture_select */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#define GL_ASYNC_MARKER_SGIX 0x8329 +typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); +typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); +typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker); +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp); +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker); +#endif +#endif /* GL_SGIX_async */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif /* GL_SGIX_async_histogram */ + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif /* GL_SGIX_async_pixel */ + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif /* GL_SGIX_blend_alpha_minmax */ + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif /* GL_SGIX_calligraphic_fragment */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif /* GL_SGIX_clipmap */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif /* GL_SGIX_convolution_accuracy */ + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif /* GL_SGIX_depth_pass_instrument */ + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif /* GL_SGIX_depth_texture */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushRasterSGIX (void); +#endif +#endif /* GL_SGIX_flush_raster */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif /* GL_SGIX_fog_offset */ + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode); +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params); +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params); +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param); +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param); +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params); +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params); +GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param); +#endif +#endif /* GL_SGIX_fragment_lighting */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameZoomSGIX (GLint factor); +#endif +#endif /* GL_SGIX_framezoom */ + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params); +#endif +#endif /* GL_SGIX_igloo_interface */ + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); +typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); +typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer); +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p); +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker); +GLAPI void APIENTRY glStartInstrumentsSGIX (void); +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker); +#endif +#endif /* GL_SGIX_instruments */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#define GL_INTERLACE_SGIX 0x8094 +#endif /* GL_SGIX_interlace */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif /* GL_SGIX_ir_instrument1 */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#define GL_LIST_PRIORITY_SGIX 0x8182 +typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params); +GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param); +GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param); +GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params); +#endif +#endif /* GL_SGIX_list_priority */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode); +#endif +#endif /* GL_SGIX_pixel_texture */ + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif /* GL_SGIX_pixel_tiles */ + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); +typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +GLAPI void APIENTRY glDeformSGIX (GLbitfield mask); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask); +#endif +#endif /* GL_SGIX_polynomial_ffd */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation); +#endif +#endif /* GL_SGIX_reference_plane */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif /* GL_SGIX_resample */ + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif /* GL_SGIX_scalebias_hint */ + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif /* GL_SGIX_shadow */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif /* GL_SGIX_shadow_ambient */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param); +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param); +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params); +#endif +#endif /* GL_SGIX_sprite */ + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif /* GL_SGIX_subsample */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTagSampleBufferSGIX (void); +#endif +#endif /* GL_SGIX_tag_sample_buffer */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif /* GL_SGIX_texture_add_env */ + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif /* GL_SGIX_texture_coordinate_clamp */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif /* GL_SGIX_texture_lod_bias */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif /* GL_SGIX_texture_multi_buffer */ + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif /* GL_SGIX_texture_scale_bias */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif /* GL_SGIX_vertex_preclip */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif /* GL_SGIX_ycrcb */ + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif /* GL_SGIX_ycrcb_subsample */ + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif /* GL_SGIX_ycrcba */ + +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif /* GL_SGI_color_matrix */ + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table); +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params); +#endif +#endif /* GL_SGI_color_table */ + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif /* GL_SGI_texture_color_table */ + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFinishTextureSUNX (void); +#endif +#endif /* GL_SUNX_constant_data */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif /* GL_SUN_convolution_border_modes */ + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); +typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor); +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor); +#endif +#endif /* GL_SUN_global_alpha */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif +#endif /* GL_SUN_mesh_array */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif /* GL_SUN_slice_accum */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code); +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code); +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code); +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code); +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code); +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code); +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer); +#endif +#endif /* GL_SUN_triangle_list */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#endif +#endif /* GL_SUN_vertex */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif /* GL_WIN_phong_shading */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif /* GL_WIN_specular_fog */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/SDL2/include/SDL_opengles.h b/Windows/SDL2/include/SDL_opengles.h new file mode 100644 index 0000000..adf6ef7 --- /dev/null +++ b/Windows/SDL2/include/SDL_opengles.h @@ -0,0 +1,38 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ + +#include "SDL_config.h" + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/Windows/SDL2/include/SDL_opengles2.h b/Windows/SDL2/include/SDL_opengles2.h new file mode 100644 index 0000000..5514197 --- /dev/null +++ b/Windows/SDL2/include/SDL_opengles2.h @@ -0,0 +1,51 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ + +#include "SDL_config.h" + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include "SDL_opengles2_khrplatform.h" +#include "SDL_opengles2_gl2platform.h" +#include "SDL_opengles2_gl2.h" +#include "SDL_opengles2_gl2ext.h" + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/Windows/SDL2/include/SDL_opengles2_gl2.h b/Windows/SDL2/include/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/Windows/SDL2/include/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/SDL2/include/SDL_opengles2_gl2ext.h b/Windows/SDL2/include/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/Windows/SDL2/include/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendBarrierKHR (void); +#endif +#endif /* GL_KHR_blend_equation_advanced */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +typedef void (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count); +#endif +#endif /* GL_KHR_parallel_shader_compile */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#endif /* GL_KHR_robustness */ + +#ifndef GL_KHR_shader_subgroup +#define GL_KHR_shader_subgroup 1 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#endif /* GL_KHR_shader_subgroup */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif /* GL_OES_compressed_paletted_texture */ + +#ifndef GL_OES_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#ifndef GL_AMD_framebuffer_multisample_advanced +#define GL_AMD_framebuffer_multisample_advanced 1 +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_AMD_framebuffer_multisample_advanced */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_APPLE_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +#endif +#endif /* GL_EXT_copy_image */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#ifndef GL_EXT_fragment_shading_rate +#define GL_EXT_fragment_shading_rate 1 +#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9 +#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA +#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB +#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC +#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD +#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE +#define GL_SHADING_RATE_EXT 0x96D0 +#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC +#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD +#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE +#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF +#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_APIENTRY glFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#endif +#endif /* GL_EXT_fragment_shading_rate */ + +#ifndef GL_EXT_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#ifndef GL_EXT_memory_object +#define GL_EXT_memory_object 1 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_UUID_SIZE_EXT 16 +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#endif +#endif /* GL_EXT_memory_object */ + +#ifndef GL_EXT_memory_object_fd +#define GL_EXT_memory_object_fd 1 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#endif +#endif /* GL_EXT_memory_object_fd */ + +#ifndef GL_EXT_memory_object_win32 +#define GL_EXT_memory_object_win32 1 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_LUID_SIZE_EXT 8 +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#endif +#endif /* GL_EXT_multi_draw_arrays */ + +#ifndef GL_EXT_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#ifndef GL_EXT_multiview_tessellation_geometry_shader +#define GL_EXT_multiview_tessellation_geometry_shader 1 +#endif /* GL_EXT_multiview_tessellation_geometry_shader */ + +#ifndef GL_EXT_multiview_texture_multisample +#define GL_EXT_multiview_texture_multisample 1 +#endif /* GL_EXT_multiview_texture_multisample */ + +#ifndef GL_EXT_multiview_timer_query +#define GL_EXT_multiview_timer_query 1 +#endif /* GL_EXT_multiview_timer_query */ + +#ifndef GL_EXT_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +typedef void (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#ifndef GL_EXT_semaphore +#define GL_EXT_semaphore 1 +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 +typedef void (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_APIENTRY glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#endif +#endif /* GL_EXT_semaphore */ + +#ifndef GL_EXT_semaphore_fd +#define GL_EXT_semaphore_fd 1 +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd); +#endif +#endif /* GL_EXT_semaphore_fd */ + +#ifndef GL_EXT_semaphore_win32 +#define GL_EXT_semaphore_win32 1 +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif /* GL_EXT_texture_compression_rgtc */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif /* GL_EXT_texture_filter_anisotropic */ + +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#endif /* GL_EXT_texture_filter_minmax */ + +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_SR8_EXT 0x8FBD +#endif /* GL_EXT_texture_sRGB_R8 */ + +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_shadow_lod +#define GL_EXT_texture_shadow_lod 1 +#endif /* GL_EXT_texture_shadow_lod */ + +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_APIENTRY glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key); +#endif +#endif /* GL_EXT_win32_keyed_mutex */ + +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +typedef void (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +typedef void (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESA_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#ifndef GL_MESA_framebuffer_flip_x +#define GL_MESA_framebuffer_flip_x 1 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#endif /* GL_MESA_framebuffer_flip_x */ + +#ifndef GL_MESA_framebuffer_flip_y +#define GL_MESA_framebuffer_flip_y 1 +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params); +#endif +#endif /* GL_MESA_framebuffer_flip_y */ + +#ifndef GL_MESA_framebuffer_swap_xy +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#endif /* GL_MESA_framebuffer_swap_xy */ + +#ifndef GL_MESA_program_binary_formats +#define GL_MESA_program_binary_formats 1 +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#endif /* GL_MESA_program_binary_formats */ + +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_APIENTRY glIsImageHandleResidentNV (GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 +typedef void (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glBlendBarrierNV (void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_NV_blend_minmax_factor */ + +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +typedef void (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#ifndef GL_NV_compute_shader_derivatives +#define GL_NV_compute_shader_derivatives 1 +#endif /* GL_NV_compute_shader_derivatives */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +typedef void (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_APIENTRY glEndConditionalRenderNV (void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +typedef void (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#endif /* GL_NV_conservative_raster_pre_snap */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +typedef void (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef GLVULKANPROCNV (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition); +#endif +#endif /* GL_NV_fence */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +typedef void (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFragmentCoverageColorNV (GLuint color); +#endif +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_shader_barycentric +#define GL_NV_fragment_shader_barycentric 1 +#endif /* GL_NV_fragment_shader_barycentric */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + +#ifndef GL_NV_framebuffer_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +typedef void (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#endif +#endif /* GL_NV_internalformat_sample_query */ + +#ifndef GL_NV_memory_attachment +#define GL_NV_memory_attachment 1 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset); +#endif +#endif /* GL_NV_memory_attachment */ + +#ifndef GL_NV_memory_object_sparse +#define GL_NV_memory_object_sparse 1 +typedef void (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit); +#endif +#endif /* GL_NV_memory_object_sparse */ + +#ifndef GL_NV_mesh_shader +#define GL_NV_mesh_shader 1 +#define GL_MESH_SHADER_NV 0x9559 +#define GL_TASK_SHADER_NV 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +typedef GLuint (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_pixel_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#ifndef GL_NV_primitive_shading_rate +#define GL_NV_primitive_shading_rate 1 +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#endif /* GL_NV_primitive_shading_rate */ + +#ifndef GL_NV_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#ifndef GL_NV_representative_fragment_test +#define GL_NV_representative_fragment_test 1 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#endif /* GL_NV_representative_fragment_test */ + +#ifndef GL_NV_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glResolveDepthValuesNV (void); +#endif +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_scissor_exclusive +#define GL_NV_scissor_exclusive 1 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +#endif /* GL_NV_shader_atomic_fp16_vector */ + +#ifndef GL_NV_shader_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#ifndef GL_NV_shader_subgroup_partitioned +#define GL_NV_shader_subgroup_partitioned 1 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#endif /* GL_NV_shader_subgroup_partitioned */ + +#ifndef GL_NV_shader_texture_footprint +#define GL_NV_shader_texture_footprint 1 +#endif /* GL_NV_shader_texture_footprint */ + +#ifndef GL_NV_shading_rate_image +#define GL_NV_shading_rate_image 1 +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 +typedef void (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#ifndef GL_NV_timeline_semaphore +#define GL_NV_timeline_semaphore 1 +#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 +#define GL_SEMAPHORE_TYPE_NV 0x95B3 +#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 +#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 +#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 +typedef void (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +typedef void (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifndef GL_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/SDL2/include/SDL_opengles2_gl2platform.h b/Windows/SDL2/include/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/Windows/SDL2/include/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/Windows/SDL2/include/SDL_opengles2_khrplatform.h b/Windows/SDL2/include/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/Windows/SDL2/include/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/Windows/SDL2/include/SDL_pixels.h b/Windows/SDL2/include/SDL_pixels.h new file mode 100644 index 0000000..6f29811 --- /dev/null +++ b/Windows/SDL2/include/SDL_pixels.h @@ -0,0 +1,686 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryPixels + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include "SDL_stdinc.h" +#include "SDL_endian.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32, + + /* This must be at the end of the list to avoid breaking the existing ABI */ + SDL_PIXELTYPE_INDEX2 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX2) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX2LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_4321, 0, + 2, 0), + SDL_PIXELFORMAT_INDEX2MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_1234, 0, + 2, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_RGBX8888, + SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_BGRX8888, + SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_XBGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_BGRX8888, + SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_RGBX8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an + * integer-packed color which uses the SDL_PIXELFORMAT_RGBA32 format + * (SDL_PIXELFORMAT_ABGR8888 on little-endian systems and + * SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * A structure that contains pixel format information. + * + * Everything in the pixel format structure is read-only. + * + * A pixel format has either a palette or masks. If a palette is used `Rmask`, + * `Gmask`, `Bmask`, and `Amask` will be 0. + * + * An SDL_PixelFormat describes the format of the pixel data stored at the + * `pixels` field of an SDL_Surface. Every surface stores an SDL_PixelFormat + * in the `format` field. + * + * If you wish to do pixel level modifications on a surface, then + * understanding how SDL stores its color information is essential. + * + * For information on modern pixel color spaces, see the following Wikipedia + * article: http://en.wikipedia.org/wiki/RGBA_color_space + * + * \sa SDL_ConvertSurface + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + * \sa SDL_AllocFormat + * \sa SDL_FreeFormat + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query. + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values. + * \param bpp a bits per pixel value; usually 15, 16, or 32. + * \param Rmask a pointer filled in with the red mask for the format. + * \param Gmask a pointer filled in with the green mask for the format. + * \param Bmask a pointer filled in with the blue mask for the format. + * \param Amask a pointer filled in with the alpha mask for the format. + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32. + * \param Rmask the red mask for the format. + * \param Gmask the green mask for the format. + * \param Bmask the blue mask for the format. + * \param Amask the alpha mask for the format. + * \returns one of the SDL_PixelFormatEnum values. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values. + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette. + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette. + * \param palette the SDL_Palette structure that will be used. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify. + * \param colors an array of SDL_Color structures to copy into the palette. + * \param firstcolor the index of the first palette entry to modify. + * \param ncolors the number of entries to modify. + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format. + * \param r the red component of the pixel in the range 0-255. + * \param g the green component of the pixel in the range 0-255. + * \param b the blue component of the pixel in the range 0-255. + * \returns a pixel value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel. + * \param r the red component of the pixel in the range 0-255. + * \param g the green component of the pixel in the range 0-255. + * \param b the blue component of the pixel in the range 0-255. + * \param a the alpha component of the pixel in the range 0-255. + * \returns a pixel value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value. + * \param format an SDL_PixelFormat structure describing the format of the + * pixel. + * \param r a pointer filled in with the red component. + * \param g a pointer filled in with the green component. + * \param b a pointer filled in with the blue component. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value. + * \param format an SDL_PixelFormat structure describing the format of the + * pixel. + * \param r a pointer filled in with the red component. + * \param g a pointer filled in with the green component. + * \param b a pointer filled in with the blue component. + * \param a a pointer filled in with the alpha component. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity. + * \param ramp an array of 256 values filled in with the gamma ramp. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_platform.h b/Windows/SDL2/include/SDL_platform.h new file mode 100644 index 0000000..64ece4f --- /dev/null +++ b/Windows/SDL2/include/SDL_platform.h @@ -0,0 +1,275 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryPlatform + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#ifndef __has_extension /* Older compilers don't support this */ +#define __has_extension(x) 0 +#include +#undef __has_extension +#else +#include +#endif + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if (HAVE_WINAPIFAMILY_H) && defined(WINAPI_FAMILY_PHONE_APP) +#define SDL_WINAPI_FAMILY_PHONE (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) +#else +#define SDL_WINAPI_FAMILY_PHONE 0 +#endif + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) || defined(__psp__) +#ifdef __PSP__ +#undef __PSP__ +#endif +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_power.h b/Windows/SDL2/include/SDL_power.h new file mode 100644 index 0000000..755c5d4 --- /dev/null +++ b/Windows/SDL2/include/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * # CategoryPower + * + * Header for the SDL power management routines. + */ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum SDL_PowerState +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery. + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery. + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_quit.h b/Windows/SDL2/include/SDL_quit.h new file mode 100644 index 0000000..03630e2 --- /dev/null +++ b/Windows/SDL2/include/SDL_quit.h @@ -0,0 +1,50 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryQuit + * + * An SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. If + * it is not ignored or filtered, it is queued normally and the window is + * allowed to close. When the window is closed, screen updates will complete, + * but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) and + * SIGTERM (system termination request), if handlers do not already exist, + * that generate SDL_QUIT events as well. There is no way to determine the + * cause of an SDL_QUIT event, but setting a signal handler in your + * application will override the default generation of quit events for that + * signal. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/Windows/SDL2/include/SDL_rect.h b/Windows/SDL2/include/SDL_rect.h new file mode 100644 index 0000000..b7e609d --- /dev/null +++ b/Windows/SDL2/include/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryRect + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_pixels.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle. + * \param B an SDL_Rect structure representing the second rectangle. + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle. + * \param B an SDL_Rect structure representing the second rectangle. + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B`. + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle. + * \param B an SDL_Rect structure representing the second rectangle. + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B`. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed. + * \param count the number of structures in the `points` array. + * \param clip an SDL_Rect used for clipping or NULL to enclose all points. + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle. + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect. + * \param X1 a pointer to the starting X-coordinate of the line. + * \param Y1 a pointer to the starting Y-coordinate of the line. + * \param X2 a pointer to the ending X-coordinate of the line. + * \param Y2 a pointer to the ending Y-coordinate of the line. + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle. + * \param B an SDL_FRect structure representing the second rectangle. + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle. + * \param B an SDL_FRect structure representing the second rectangle. + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B`. + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle. + * \param B an SDL_FRect structure representing the second rectangle. + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B`. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed. + * \param count the number of structures in the `points` array. + * \param clip an SDL_FRect used for clipping or NULL to enclose all points. + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle. + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect. + * \param X1 a pointer to the starting X-coordinate of the line. + * \param Y1 a pointer to the starting Y-coordinate of the line. + * \param X2 a pointer to the ending X-coordinate of the line. + * \param Y2 a pointer to the ending Y-coordinate of the line. + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_render.h b/Windows/SDL2/include/SDL_render.h new file mode 100644 index 0000000..5274172 --- /dev/null +++ b/Windows/SDL2/include/SDL_render.h @@ -0,0 +1,1932 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryRender + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * + * - single pixel points + * - single pixel lines + * - filled rectangles + * - texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. They + * can have an additional color tint or alpha modulation applied to them, and + * may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may want more + * functionality such as polygons and particle effects and in that case you + * should use SDL's OpenGL/Direct3D support or one of the many good 3D + * engines. + * + * These functions must be called from the main thread. See this bug for + * details: https://github.com/libsdl-org/SDL/issues/986 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include "SDL_stdinc.h" +#include "SDL_rect.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum SDL_RendererFlags +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum SDL_ScaleMode +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum SDL_TextureAccess +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum SDL_TextureModulate +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum SDL_RendererFlip +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about. + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window. + * \param height the height of the window. + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()). + * \param window a pointer filled with the window, or NULL on error. + * \param renderer a pointer filled with the renderer, or NULL on error. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed. + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags. + * \param flags 0, or one or more SDL_RendererFlags OR'd together. + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done. + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowAndRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query. + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query. + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context. + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context. + * \param w an int filled with the width. + * \param h an int filled with the height. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context. + * \param format one of the enumerated values in SDL_PixelFormatEnum. + * \param access one of the enumerated values in SDL_TextureAccess. + * \param w the width of the texture in pixels. + * \param h the height of the texture in pixels. + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context. + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture. + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query. + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update. + * \param r the red color value multiplied into copy operations. + * \param g the green color value multiplied into copy operations. + * \param b the blue color value multiplied into copy operations. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query. + * \param r a pointer filled in with the current red color value. + * \param g a pointer filled in with the current green color value. + * \param b a pointer filled in with the current blue color value. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update. + * \param alpha the source alpha value multiplied into copy operations. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query. + * \param alpha a pointer filled in with the current alpha value. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update. + * \param blendMode the SDL_BlendMode to use for texture blending. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query. + * \param blendMode a pointer filled in with the current SDL_BlendMode. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update. + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture. + * \param pixels the raw pixel data in the format of the texture. + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update. + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param Uplane the raw pixel data for the U plane. + * \param Upitch the number of bytes between rows of pixel data for the U + * plane. + * \param Vplane the raw pixel data for the V plane. + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane. + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update. + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING`. + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture. + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area. + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes. + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING`. + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked. + * \param surface this is filled in with an SDL surface representing the + * locked area. + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING`. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked. + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. This will reset the renderer's viewport, + * clipping rectangle, and scaling settings to the state they were in before + * setting a non-NULL `texture` target, losing any changes made in the + * meantime. + * + * \param renderer the rendering context. + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported as NULL here. + * + * \param renderer the rendering context. + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set. + * \param w the width of the logical resolution. + * \param h the height of the logical resolution. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context. + * \param w an int to be filled with the width. + * \param h an int to be filled with the height. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set. + * \param enable enable or disable the integer scaling for rendering. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried. + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context. + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context. + * \param rect an SDL_Rect structure filled in with the current drawing area. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set. + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried. + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried. + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context. + * \param scaleX the horizontal scaling factor. + * \param scaleY the vertical scaling factor. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried. + * \param scaleX a pointer filled in with the horizontal scaling factor. + * \param scaleY a pointer filled in with the vertical scaling factor. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated. + * \param windowX the real X coordinate in the window. + * \param windowY the real Y coordinate in the window. + * \param logicalX the pointer filled with the logical x coordinate. + * \param logicalY the pointer filled with the logical y coordinate. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated. + * \param logicalX the logical x coordinate. + * \param logicalY the logical y coordinate. + * \param windowX the pointer filled with the real X coordinate in the window. + * \param windowY the pointer filled with the real Y coordinate in the window. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context. + * \param r the red value used to draw on the rendering target. + * \param g the green value used to draw on the rendering target. + * \param b the blue value used to draw on the rendering target. + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context. + * \param r a pointer filled in with the red value used to draw on the + * rendering target. + * \param g a pointer filled in with the green value used to draw on the + * rendering target. + * \param b a pointer filled in with the blue value used to draw on the + * rendering target. + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255). + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context. + * \param blendMode the SDL_BlendMode to use for blending. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context. + * \param blendMode a pointer filled in with the current SDL_BlendMode. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context. + * \param x the x coordinate of the point. + * \param y the y coordinate of the point. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context. + * \param points an array of SDL_Point structures that represent the points to + * draw. + * \param count the number of points to draw. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context. + * \param x1 the x coordinate of the start point. + * \param y1 the y coordinate of the start point. + * \param x2 the x coordinate of the end point. + * \param y2 the y coordinate of the end point. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context. + * \param points an array of SDL_Point structures representing points along + * the lines. + * \param count the number of points, drawing count-1 lines. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context. + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context. + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn. + * \param count the number of rectangles. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context. + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context. + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled. + * \param count the number of rectangles. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context. + * \param texture the source texture. + * \param srcrect the source SDL_Rect structure or NULL for the entire + * texture. + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context. + * \param texture the source texture. + * \param srcrect the source SDL_Rect structure or NULL for the entire + * texture. + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target. + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction. + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`). + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw. + * \param count The number of points to draw. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines. + * \param count The number of points, drawing count-1 lines. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction. + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture. + * \return 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions. + * \param xy_stride Byte size to move from one element to the next element. + * \param color Vertex colors (as SDL_Color). + * \param color_stride Byte size to move from one element to the next element. + * \param uv Vertex normalized texture coordinates. + * \param uv_stride Byte size to move from one element to the next element. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int). + * \return 0 on success, or -1 if the operation is not supported. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context. + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target. + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target. + * \param pixels a pointer to the pixel data to copy into. + * \param pitch the pitch of the `pixels` parameter. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context. + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context. + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value. + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value. + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 + * context. + * \returns 0 on success, or -1 if the operation is not supported. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query. + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query. + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle. + * \param vsync 1 for on, 0 for off. All other values are reserved. + * \returns a 0 int on success, or non-zero on failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_revision.h b/Windows/SDL2/include/SDL_revision.h new file mode 100644 index 0000000..89869dd --- /dev/null +++ b/Windows/SDL2/include/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.32.8-0-g98d1f3a45 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.32.8-0-g98d1f3a45" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/Windows/SDL2/include/SDL_rwops.h b/Windows/SDL2/include/SDL_rwops.h new file mode 100644 index 0000000..43c1b0e --- /dev/null +++ b/Windows/SDL2/include/SDL_rwops.h @@ -0,0 +1,844 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: RWOPS */ + +/** + * # CategoryRWOPS + * + * This file provides a general interface for SDL to read and write data + * streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to `offset` relative to `whence`, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to `maxnum` objects each of size `size` from the data + * stream to the area pointed at by `ptr`. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly `num` objects each of size `size` from the area + * pointed at by `ptr` to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open. + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream. + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream. + * \param size the buffer size, in bytes. + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream. + * \param size the buffer size, in bytes. + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +/* Possible `whence` values for SDL_RWops seeking... */ +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from. + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure. + * \param offset an offset in bytes, relative to **whence** location; can be + * negative. + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END`. + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset. + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure. + * \param ptr a pointer to a buffer to read data into. + * \param size the size of each object to read, in bytes. + * \param maxnum the maximum number of objects to be read. + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure. + * \param ptr a pointer to a buffer containing data to write. + * \param size the size of an object to write, in bytes. + * \param num the number of objects to write. + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from. + * \param datasize if not NULL, will store the number of bytes read. + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning. + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from. + * \param datasize if not NULL, will store the number of bytes read. + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from. + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data. + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data. + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data. + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data. + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data. + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data. + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to. + * \param value the byte value to write. + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written. + * \param value the data to be written, in native format. + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written. + * \param value the data to be written, in native format. + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written. + * \param value the data to be written, in native format. + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written. + * \param value the data to be written, in native format. + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written. + * \param value the data to be written, in native format. + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written. + * \param value the data to be written, in native format. + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_scancode.h b/Windows/SDL2/include/SDL_scancode.h new file mode 100644 index 0000000..0652d7e --- /dev/null +++ b/Windows/SDL2/include/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryScancode + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include "SDL_stdinc.h" + +/** + * The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the SDL_Keysym::scancode key.keysym.scancode field of the SDL_Event + * structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum SDL_Scancode +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return + * key on ISO keyboards and at the right end + * of the QWERTY row on ANSI keyboards. + * Produces REVERSE SOLIDUS (backslash) and + * VERTICAL LINE in a US layout, REVERSE + * SOLIDUS and VERTICAL LINE in a UK Mac + * layout, NUMBER SIGN and TILDE in a UK + * Windows layout, DOLLAR SIGN and POUND SIGN + * in a Swiss German layout, NUMBER SIGN and + * APOSTROPHE in a German layout, GRAVE + * ACCENT and POUND SIGN in a French Mac + * layout, and ASTERISK and MICRO SIGN in a + * French Windows layout. + */ + SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code + * instead of 49 for the same key, but all + * OSes I've seen treat the two codes + * identically. So, as an implementor, unless + * your keyboard generates both of those + * codes and your OS treats them differently, + * you should generate SDL_SCANCODE_BACKSLASH + * instead of this code. As a user, you + * should not rely on this code because SDL + * will never generate it with most (all?) + * keyboards. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI + * and ISO keyboards). Produces GRAVE ACCENT and + * TILDE in a US Windows layout and in US and UK + * Mac layouts on ANSI keyboards, GRAVE ACCENT + * and NOT SIGN in a UK Windows layout, SECTION + * SIGN and PLUS-MINUS SIGN in US and UK Mac + * layouts on ISO keyboards, SECTION SIGN and + * DEGREE SIGN in a Swiss German layout (Mac: + * only on ISO keyboards), CIRCUMFLEX ACCENT and + * DEGREE SIGN in a German layout (Mac: only on + * ISO keyboards), SUPERSCRIPT TWO and TILDE in a + * French Windows layout, COMMERCIAL AT and + * NUMBER SIGN in a French Mac layout on ISO + * keyboards, and LESS-THAN SIGN and GREATER-THAN + * SIGN in a Swiss German, German, or French Mac + * layout on ANSI keyboards. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * Produces GRAVE ACCENT and TILDE in a + * US or UK Mac layout, REVERSE SOLIDUS + * (backslash) and VERTICAL LINE in a + * US or UK Windows layout, and + * LESS-THAN SIGN and GREATER-THAN SIGN + * in a Swiss German, German, or French + * layout. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag, + * not a physical key - but some Mac keyboards + * do have a power key. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special KMOD_MODE for it I'm adding it here + */ + + /* @} *//* Usage page 0x07 */ + + /** + * \name Usage page 0x0C + * + * These values are mapped from usage page 0x0C (USB consumer page). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * There are way more keys in the spec than we can represent in the + * current scancode range, so pick the ones that commonly come up in + * real world usage. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_SCANCODE_SOFTLEFT = 287, /**< Usually situated below the display on phones and + used as a multi-function feature key for selecting + a software defined function shown on the bottom left + of the display. */ + SDL_SCANCODE_SOFTRIGHT = 288, /**< Usually situated below the display on phones and + used as a multi-function feature key for selecting + a software defined function shown on the bottom right + of the display. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_sensor.h b/Windows/SDL2/include/SDL_sensor.h new file mode 100644 index 0000000..d4b1c51 --- /dev/null +++ b/Windows/SDL2/include/SDL_sensor.h @@ -0,0 +1,329 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategorySensor + * + * Include file for SDL sensor event handling + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the + * system, and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an + * invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/** + * The different sensors defined by SDL. + * + * Additional sensors may be available, using platform dependent semantics. + * + * Here are the additional Android sensors: + * + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + * + * Accelerometer sensor notes: + * + * The accelerometer returns the current acceleration in SI meters per second + * squared. This measurement includes the force of gravity, so a device at + * rest will have an value of SDL_STANDARD_GRAVITY away from the center of the + * earth, which is a positive Y value. + * + * - `values[0]`: Acceleration on the x axis + * - `values[1]`: Acceleration on the y axis + * - `values[2]`: Acceleration on the z axis + * + * For phones and tablets held in natural orientation and game controllers + * held in front of you, the axes are defined as follows: + * + * - -X ... +X : left ... right + * - -Y ... +Y : bottom ... top + * - -Z ... +Z : farther ... closer + * + * The accelerometer axis data is not changed when the device is rotated. + * + * Gyroscope sensor notes: + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, an + * observer looking from a positive location on one of the axes would see + * positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * - `values[0]`: Angular speed around the x axis (pitch) + * - `values[1]`: Angular speed around the y axis (yaw) + * - `values[2]`: Angular speed around the z axis (roll) + * + * For phones and tablets held in natural orientation and game controllers + * held in front of you, the axes are defined as follows: + * + * - -X ... +X : left ... right + * - -Y ... +Y : bottom ... top + * - -Z ... +Z : farther ... closer + * + * The gyroscope axis data is not changed when the device is rotated. + * + * \sa SDL_GetDisplayOrientation + */ +typedef enum SDL_SensorType +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * A constant to represent standard gravity for accelerometer sensors. + * + * The accelerometer returns the current acceleration in SI meters per second + * squared. This measurement includes the force of gravity, so a device at + * rest will have an value of SDL_STANDARD_GRAVITY away from the center of the + * earth, which is a positive Y value. + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from. + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from. + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check. + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from. + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open. + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id. + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object. + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect. + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect. + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect. + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query. + * \param data A pointer filled with the current sensor state. + * \param num_values The number of values to write to data. + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query. + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not. + * \param data A pointer filled with the current sensor state. + * \param num_values The number of values to write to data. + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include "close_code.h" + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_shape.h b/Windows/SDL2/include/SDL_shape.h new file mode 100644 index 0000000..d356084 --- /dev/null +++ b/Windows/SDL2/include/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include "SDL_stdinc.h" +#include "SDL_pixels.h" +#include "SDL_rect.h" +#include "SDL_surface.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, SDL_WINDOWPOS_CENTERED, or + * SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, SDL_WINDOWPOS_CENTERED, or + * SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: SDL_WINDOW_OPENGL, + * SDL_WINDOW_INPUT_GRABBED, SDL_WINDOW_HIDDEN, + * SDL_WINDOW_RESIZABLE, SDL_WINDOW_MAXIMIZED, + * SDL_WINDOW_MINIMIZED, SDL_WINDOW_BORDERLESS is always set, and + * SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_shape_h_ */ diff --git a/Windows/SDL2/include/SDL_stdinc.h b/Windows/SDL2/include/SDL_stdinc.h new file mode 100644 index 0000000..1854698 --- /dev/null +++ b/Windows/SDL2/include/SDL_stdinc.h @@ -0,0 +1,873 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: StdInc */ + +/** + * # CategoryStdInc + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include "SDL_config.h" + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +void *alloca(size_t); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g: + * + * ```c + * #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + * ``` + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * A signed 8-bit integer type. + */ +typedef int8_t Sint8; +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ + +/** + * An unsigned 8-bit integer type. + */ +typedef uint8_t Uint8; +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ + +/** + * A signed 16-bit integer type. + */ +typedef int16_t Sint16; +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ + +/** + * An unsigned 16-bit integer type. + */ +typedef uint16_t Uint16; +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ + +/** + * A signed 32-bit integer type. + */ +typedef int32_t Sint32; +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ + +/** + * An unsigned 32-bit integer type. + */ +typedef uint32_t Uint32; +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ + +/** + * A signed 64-bit integer type. + */ +typedef int64_t Sint64; +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ + +/** + * An unsigned 64-bit integer type. + */ +typedef uint64_t Uint64; +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ + + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#if defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(PRId64) +#define SDL_PRIs64 PRId64 +#elif defined(__LP64__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#if defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(PRIu64) +#define SDL_PRIu64 PRIu64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#if defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(PRIx64) +#define SDL_PRIx64 PRIx64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#if defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(PRIX64) +#define SDL_PRIX64 PRIX64 +#elif defined(__LP64__) && !defined(__APPLE__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __printf__, fmtargnumber, 0 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __scanf__, fmtargnumber, 0 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +/* Keep C++ case alone: Some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode. */ +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__VITA__) && !defined(__3DS__) +/* TODO: include/SDL_stdinc.h:422: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +typedef int (SDLCALL *SDL_CompareCallback)(const void *, const void *); +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, SDL_CompareCallback compare); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, SDL_CompareCallback compare); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +/* Some safe(r) macros for zero'ing structures... */ +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, + * returning a string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); + +/* Some helper macros for common cases... */ +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef _WIN32 +/* strdup is not ANSI but POSIX, and its prototype might be hidden... */ +/* not for windows: might conflict with string.h where strdup may have + * dllimport attribute: https://github.com/libsdl-org/SDL/issues/12948 */ +char *strdup(const char *str); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. + * + * Otherwise store a * b via ret and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. + * + * Otherwise store a + b via ret and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_surface.h b/Windows/SDL2/include/SDL_surface.h new file mode 100644 index 0000000..42ea591 --- /dev/null +++ b/Windows/SDL2/include/SDL_surface.h @@ -0,0 +1,1001 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategorySurface + * + * Header file for SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include "SDL_stdinc.h" +#include "SDL_pixels.h" +#include "SDL_rect.h" +#include "SDL_blendmode.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * A collection of pixels used in software blitting. + * + * This structure should be treated as read-only, except for `pixels`, which, + * if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * The formula used for converting between YUV and RGB + */ +typedef enum SDL_YUV_CONVERSION_MODE +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0. + * \param width the width of the surface. + * \param height the height of the surface. + * \param depth the depth of the surface in bits. + * \param Rmask the red mask for the pixels. + * \param Gmask the green mask for the pixels. + * \param Bmask the blue mask for the pixels. + * \param Amask the alpha mask for the pixels. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0. + * \param width the width of the surface. + * \param height the height of the surface. + * \param depth the depth of the surface in bits. + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data. + * \param width the width of the surface. + * \param height the height of the surface. + * \param depth the depth of the surface in bits. + * \param pitch the pitch of the surface in bytes. + * \param Rmask the red mask for the pixels. + * \param Gmask the green mask for the pixels. + * \param Bmask the blue mask for the pixels. + * \param Amask the alpha mask for the pixels. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_CreateRGBSurfaceWithFormatFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data. + * \param width the width of the surface. + * \param height the height of the surface. + * \param depth the depth of the surface in bits. + * \param pitch the pitch of the surface in bytes. + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update. + * \param palette the SDL_Palette structure to use. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternatively, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface. + * \param freesrc non-zero to close the stream after being read. + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved. + * \param dst a data stream to save to. + * \param freedst non-zero to close the stream after being written. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize. + * \param flag 0 to disable, non-zero to enable RLE acceleration. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query. + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update. + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key. + * \param key the transparent pixel. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query. + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query. + * \param key a pointer filled in with the transparent pixel. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update. + * \param r the red color value multiplied into blit operations. + * \param g the green color value multiplied into blit operations. + * \param b the blue color value multiplied into blit operations. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query. + * \param r a pointer filled in with the current red color value. + * \param g a pointer filled in with the current green color value. + * \param b a pointer filled in with the current blue color value. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update. + * \param alpha the alpha value multiplied into blit operations. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query. + * \param alpha a pointer filled in with the current alpha value. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update. + * \param blendMode the SDL_BlendMode to use for blit blending. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query. + * \param blendMode a pointer filled in with the current SDL_BlendMode. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped. + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping. + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped. + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert. + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for. + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert. + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for. + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels. + * \param height the height of the block to copy, in pixels. + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format. + * \param src a pointer to the source pixels. + * \param src_pitch the pitch of the source pixels, in bytes. + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format. + * \param dst a pointer to be filled in with new pixel data. + * \param dst_pitch the pitch of the destination pixels, in bytes. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels. + * \param height the height of the block to convert, in pixels. + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format. + * \param src a pointer to the source pixels. + * \param src_pitch the pitch of the source pixels, in bytes. + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format. + * \param dst a pointer to be filled in with premultiplied pixel data. + * \param dst_pitch the pitch of the destination pixels, in bytes. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target. + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface. + * \param color the color to fill with. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target. + * \param rects an array of SDL_Rect representing the rectangles to fill. + * \param count the number of rectangles in the array. + * \param color the color to fill with. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ + +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are the same size. + * If either `srcrect` or `dstrect` are NULL, the entire surface (`src` or + * `dst`) is copied. The final blit rectangle is saved in `dstrect` after + * all clipping is performed. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey are + * defined as follows: + * + * ``` + * RGBA->RGB: + * Source surface blend mode set to SDL_BLENDMODE_BLEND: + * alpha-blend (using the source alpha-channel and per-surface alpha) + * SDL_SRCCOLORKEY ignored. + * Source surface blend mode set to SDL_BLENDMODE_NONE: + * copy RGB. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source color key, ignoring alpha in the + * comparison. + * + * RGB->RGBA: + * Source surface blend mode set to SDL_BLENDMODE_BLEND: + * alpha-blend (using the source per-surface alpha) + * Source surface blend mode set to SDL_BLENDMODE_NONE: + * copy RGB, set destination alpha to source per-surface alpha value. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source color key. + * + * RGBA->RGBA: + * Source surface blend mode set to SDL_BLENDMODE_BLEND: + * alpha-blend (using the source alpha-channel and per-surface alpha) + * SDL_SRCCOLORKEY ignored. + * Source surface blend mode set to SDL_BLENDMODE_NONE: + * copy all of RGBA to the destination. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source color key, ignoring alpha in the + * comparison. + * + * RGB->RGB: + * Source surface blend mode set to SDL_BLENDMODE_BLEND: + * alpha-blend (using the source per-surface alpha) + * Source surface blend mode set to SDL_BLENDMODE_NONE: + * copy RGB. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source color key. + * ``` + * + * You should call SDL_BlitSurface() unless you know exactly how SDL blitting + * works internally and how to use the other blit functions. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from. + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface. + * \param dst the SDL_Surface structure that is the blit target. + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +#define SDL_BlitScaled SDL_UpperBlitScaled + + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from. + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied. + * \param dst the SDL_Surface structure that is the blit target. + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_system.h b/Windows/SDL2/include/SDL_system.h new file mode 100644 index 0000000..2f7a236 --- /dev/null +++ b/Windows/SDL2/include/SDL_system.h @@ -0,0 +1,642 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategorySystem + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include "SDL_stdinc.h" +#include "SDL_keyboard.h" +#include "SDL_render.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback`. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index. + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device. + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device. + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device. + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices. + * \param adapterIndex a pointer to be filled in with the adapter index. + * \param outputIndex a pointer to be filled in with the output index. + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...). + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +typedef void (SDLCALL *SDL_iOSAnimationCallback)(void*); + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set. + * \param interval the number of frames after which **callback** will be + * called. + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, SDL_iOSAnimationCallback callback, void *callbackParam); + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/* end of iOS-specific functions. */ +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + * See the official Android developer guide for more information: + * http://developer.android.com/guide/topics/data/data-storage.html + */ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown. + * \param duration 0=short, 1=long. + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0. + * \param yoffset set this parameter only when gravity >=0. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000. + * \param param user parameter. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * WinRT / Windows Phone path types + */ +typedef enum SDL_WinRT_Path +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * WinRT Device Family + */ +typedef enum SDL_WinRT_DeviceFamily +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path. + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path. + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject *XTaskQueueHandle; +typedef struct XUser *XUserHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +/** + * Gets a reference to the default user handle for GDK. + * + * This is effectively a synchronous version of XUserAddAsync, which always + * prefers the default user and allows a sign-in UI. + * + * \param outUserHandle a pointer to be filled in with the default user + * handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetDefaultUser(XUserHandle * outUserHandle); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_syswm.h b/Windows/SDL2/include/SDL_syswm.h new file mode 100644 index 0000000..18f6873 --- /dev/null +++ b/Windows/SDL2/include/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: SYSWM */ + +/* + * # CategorySYSWM + * + * Include file for SDL custom system window manager hooks. + * + * Your application has access to a special type of event SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" +#include "SDL_version.h" + +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include "SDL_egl.h" +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) + +/** + * These are the various supported windowing subsystems + */ +typedef enum SDL_SYSWM_TYPE +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which low level + * system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested. + * \param info an SDL_SysWMinfo structure filled in with window information. + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_thread.h b/Windows/SDL2/include/SDL_thread.h new file mode 100644 index 0000000..ac405d8 --- /dev/null +++ b/Windows/SDL2/include/SDL_thread.h @@ -0,0 +1,468 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * # CategoryThread + * + * Header for the SDL thread management routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/* Thread synchronization primitives */ +#include "SDL_atomic.h" +#include "SDL_mutex.h" + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread + * priority. Code which attempts to control thread state related to priority + * should be aware that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this + * behavior. + * + * On many systems you require special privileges to set high or time critical + * priority. + */ +typedef enum SDL_ThreadPriority { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread(). + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread. + * \param name the name of the thread. + * \param data a pointer that is passed to `fn`. + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread. + * \param name the name of the thread. + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn`. + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query. + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query. + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread. + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID. + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +typedef void (SDLCALL *SDL_TLSDestructorCallback)(void*); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID. + * \param value the value to associate with the ID for the current thread. + * \param destructor a function called when the thread exits, to free the + * value. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, SDL_TLSDestructorCallback destructor); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_timer.h b/Windows/SDL2/include/SDL_timer.h new file mode 100644 index 0000000..6096969 --- /dev/null +++ b/Windows/SDL2/include/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * # CategoryTimer + * + * Header for the SDL time management routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could do + * this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater than 2^31 so take + * care when using the above kind of code with large timeout delays (tens of + * days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns the + * next timer interval. If the returned value is the same as the one passed + * in, the periodic alarm continues, otherwise a new alarm is scheduled. If + * the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback`. + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses. + * \param param a pointer that is passed to `callback`. + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove. + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_touch.h b/Windows/SDL2/include/SDL_touch.h new file mode 100644 index 0000000..80a0fef --- /dev/null +++ b/Windows/SDL2/include/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryTouch + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index. + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device. + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device. + * \param index the index of the requested finger. + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_types.h b/Windows/SDL2/include/SDL_types.h new file mode 100644 index 0000000..cb3b4a8 --- /dev/null +++ b/Windows/SDL2/include/SDL_types.h @@ -0,0 +1,24 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* DEPRECATED */ + +#include "SDL_stdinc.h" diff --git a/Windows/SDL2/include/SDL_version.h b/Windows/SDL2/include/SDL_version.h new file mode 100644 index 0000000..e808775 --- /dev/null +++ b/Windows/SDL2/include/SDL_version.h @@ -0,0 +1,205 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryVersion + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), minor + * revision (increments with backwards-compatible changes to the major + * revision), and patchlevel (increments with fixes to the minor revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 32 +#define SDL_PATCHLEVEL 8 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the library + * you compiled against. This is determined by what header the compiler uses. + * Note that if you dynamically linked the library, you might have a slightly + * newer or older version at runtime. That version can be determined with + * SDL_GetVersion(), which, unlike SDL_VERSION(), is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 + +/** + * This macro turns the version numbers into a numeric value: + * + * ``` + * (1,2,3) -> (1203) + * ``` + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into the + * thousands digit: for example, 2.23.0 is encoded as 4300, and 2.255.99 would + * be encoded as 25799. + * + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into the + * thousands digit: for example, 2.23.0 is encoded as 4300. This macro will + * not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_video.h b/Windows/SDL2/include/SDL_video.h new file mode 100644 index 0000000..2db5552 --- /dev/null +++ b/Windows/SDL2/include/SDL_video.h @@ -0,0 +1,2228 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryVideo + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include "SDL_stdinc.h" +#include "SDL_pixels.h" +#include "SDL_rect.h" +#include "SDL_surface.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes + * \sa SDL_GetDisplayMode + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetClosestDisplayMode + * \sa SDL_SetWindowDisplayMode + * \sa SDL_GetWindowDisplayMode + */ +typedef struct SDL_DisplayMode +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * The opaque type used to identify a window. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + * \sa SDL_FlashWindow + * \sa SDL_GetWindowData + * \sa SDL_GetWindowFlags + * \sa SDL_GetWindowGrab + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_GetWindowMouseGrab + * \sa SDL_GetWindowPosition + * \sa SDL_GetWindowSize + * \sa SDL_GetWindowTitle + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_RaiseWindow + * \sa SDL_RestoreWindow + * \sa SDL_SetWindowData + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowIcon + * \sa SDL_SetWindowPosition + * \sa SDL_SetWindowSize + * \sa SDL_SetWindowBordered + * \sa SDL_SetWindowResizable + * \sa SDL_SetWindowTitle + * \sa SDL_ShowWindow + */ +typedef struct SDL_Window SDL_Window; + +/** + * The flags on a window + * + * \sa SDL_GetWindowFlags + */ +typedef enum SDL_WindowFlags +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * Event subtype for window events + */ +typedef enum SDL_WindowEventID +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * Event subtype for display events + */ +typedef enum SDL_DisplayEventID +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * Display orientation + */ +typedef enum SDL_DisplayOrientation +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * Window flash operation + */ +typedef enum SDL_FlashOperation +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * An opaque handle to an OpenGL context. + * + * \sa SDL_GL_CreateContext + */ +typedef void *SDL_GLContext; + +/** + * OpenGL configuration attributes. + * + * While you can set most OpenGL attributes normally, the attributes listed + * above must be known before SDL creates the window that will be used with + * the OpenGL context. These attributes are set and read with + * SDL_GL_SetAttribute and SDL_GL_GetAttribute. + * + * In some cases, these attributes are minimum requests; the GL does not + * promise to give you exactly what you asked for. It's possible to ask for a + * 16-bit depth buffer and get a 24-bit one instead, for example, or to ask + * for no stencil buffer and still have one available. Context creation should + * fail if the GL can't provide your requested attributes at a minimum, but + * you should check to see exactly what you got. + * + * + * [Multisample anti-aliasing](http://en.wikipedia.org/wiki/Multisample_anti-aliasing) + * is a type of full screen anti-aliasing. Multipsampling defaults to off but + * can be turned on by setting SDL_GL_MULTISAMPLEBUFFERS to 1 and + * SDL_GL_MULTISAMPLESAMPLES to a value greater than 0. Typical values are 2 + * and 4. + * + * SDL_GL_CONTEXT_PROFILE_MASK determines the type of context created, while + * both SDL_GL_CONTEXT_MAJOR_VERSION and SDL_GL_CONTEXT_MINOR_VERSION + * determine which version. All three attributes must be set prior to creating + * the first window, and in general you can't change the value of + * SDL_GL_CONTEXT_PROFILE_MASK without first destroying all windows created + * with the previous setting. + * + * SDL_GL_CONTEXT_RELEASE_BEHAVIOR can be set to + * SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE or + * SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH. + */ +typedef enum SDL_GLattr +{ + SDL_GL_RED_SIZE, /**< the minimum number of bits for the red channel of the color buffer; defaults to 3. */ + SDL_GL_GREEN_SIZE, /**< the minimum number of bits for the green channel of the color buffer; defaults to 3. */ + SDL_GL_BLUE_SIZE, /**< the minimum number of bits for the blue channel of the color buffer; defaults to 2. */ + SDL_GL_ALPHA_SIZE, /**< the minimum number of bits for the alpha channel of the color buffer; defaults to 0. */ + SDL_GL_BUFFER_SIZE, /**< the minimum number of bits for frame buffer size; defaults to 0. */ + SDL_GL_DOUBLEBUFFER, /**< whether the output is single or double buffered; defaults to double buffering on. */ + SDL_GL_DEPTH_SIZE, /**< the minimum number of bits in the depth buffer; defaults to 16. */ + SDL_GL_STENCIL_SIZE, /**< the minimum number of bits in the stencil buffer; defaults to 0. */ + SDL_GL_ACCUM_RED_SIZE, /**< the minimum number of bits for the red channel of the accumulation buffer; defaults to 0. */ + SDL_GL_ACCUM_GREEN_SIZE, /**< the minimum number of bits for the green channel of the accumulation buffer; defaults to 0. */ + SDL_GL_ACCUM_BLUE_SIZE, /**< the minimum number of bits for the blue channel of the accumulation buffer; defaults to 0. */ + SDL_GL_ACCUM_ALPHA_SIZE, /**< the minimum number of bits for the alpha channel of the accumulation buffer; defaults to 0. */ + SDL_GL_STEREO, /**< whether the output is stereo 3D; defaults to off. */ + SDL_GL_MULTISAMPLEBUFFERS, /**< the number of buffers used for multisample anti-aliasing; defaults to 0. */ + SDL_GL_MULTISAMPLESAMPLES, /**< the number of samples used around the current pixel used for multisample anti-aliasing. */ + SDL_GL_ACCELERATED_VISUAL, /**< set to 1 to require hardware acceleration, set to 0 to force software rendering; defaults to allow either. */ + SDL_GL_RETAINED_BACKING, /**< not used (deprecated). */ + SDL_GL_CONTEXT_MAJOR_VERSION, /**< OpenGL context major version. */ + SDL_GL_CONTEXT_MINOR_VERSION, /**< OpenGL context minor version. */ + SDL_GL_CONTEXT_EGL, /**< deprecated: set SDL_GL_CONTEXT_PROFILE_MASK to SDL_GL_CONTEXT_PROFILE_ES to enable instead. */ + SDL_GL_CONTEXT_FLAGS, /**< some combination of 0 or more of elements of the SDL_GLcontextFlag enumeration; defaults to 0. */ + SDL_GL_CONTEXT_PROFILE_MASK, /**< type of GL context (Core, Compatibility, ES). See SDL_GLprofile; default value depends on platform. */ + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, /**< OpenGL context sharing; defaults to 0. */ + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, /**< requests sRGB capable visual; defaults to 0. (>= SDL 2.0.1) */ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, /**< sets context the release behavior; defaults to 1. (>= SDL 2.0.4) */ + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum SDL_GLprofile +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum SDL_GLcontextFlag +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum SDL_GLcontextReleaseFlag +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum SDL_GLContextResetNotification +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver. + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried. + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query. + * \param rect the SDL_Rect structure filled in with the display bounds. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from. + * \param rect the SDL_Rect structure filled in with the display bounds. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried. + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL. + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL. + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query. + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query. + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query. + * \param modeIndex the index of the display mode to query. + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query. + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query. + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query. + * \param mode an SDL_DisplayMode structure containing the desired display + * mode. + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes. + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query. + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query. + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query. + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect. + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query. + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query. + * \param size the size of the ICC profile. + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query. + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding. + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED`. + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED`. + * \param w the width of the window, in screen coordinates. + * \param h the height of the window, in screen coordinates. + * \param flags 0, or one or more SDL_WindowFlags OR'd together. + * \returns the `SDL_Window` that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void*. + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query. + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window. + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query. + * \returns a mask of the SDL_WindowFlags associated with `window`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change. + * \param title the desired window title in UTF-8 format. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query. + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change. + * \param icon an SDL_Surface structure containing the icon for the window. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer. + * \param name the name of the pointer. + * \param userdata the associated pointer. + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query. + * \param name the name of the pointer. + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition. + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`. + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query. + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL. + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change. + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0. + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from. + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL. + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from. + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted. + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted. + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted. + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried. + * \param w a pointer to variable for storing the width in pixels, may be + * NULL. + * \param h a pointer to variable for storing the height in pixels, may be + * NULL. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change. + * \param min_w the minimum width of the window in pixels. + * \param min_h the minimum height of the window in pixels. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query. + * \param w a pointer filled in with the minimum width of the window, may be + * NULL. + * \param h a pointer filled in with the minimum height of the window, may be + * NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change. + * \param max_w the maximum width of the window in pixels. + * \param max_h the maximum height of the window in pixels. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query. + * \param w a pointer filled in with the maximum width of the window, may be + * NULL. + * \param h a pointer filled in with the maximum height of the window, may be + * NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state. + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state. + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state. + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * Note that for some renderers, this function may trigger an + * SDL_RENDER_TARGETS_RESET event. Your application should be prepared to + * handle this event by reuploading textures! + * + * \param window the window to change. + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or + * SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * Note that on some platforms the pixels pointer of the surface may be + * modified after each call to SDL_UpdateWindowSurface(), so that the platform + * code can implement efficient double or triple buffering. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query. + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * Note that this function will update _at least_ the rectangles specified, + * but this is only intended as an optimization; in practice, this might + * update more of the screen (or all of the screen!), depending on what method + * SDL uses to send pixels to the system. + * + * \param window the window to update. + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels. + * \param numrects the number of rectangles. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set. + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query. + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query. + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query. + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query. + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed. + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried. + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque. + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque). + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from. + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque). + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal. + * \param parent_window the parent window for the modal window. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed. + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL. + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL. + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried. + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL. + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL. + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum SDL_HitTestResult +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on. + * \param area an SDL_Point which should be hit-tested. + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest(). + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on. + * \param callback the function to call when doing a hit-test. + * \param callback_data an app-defined void pointer passed to **callback**. + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed. + * \param operation the flash operation. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function. + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check. + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to + * set. + * \param value the desired value for the attribute. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to + * get. + * \param value a pointer filled in with the current value of `attr`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context. + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context. + * \param context the OpenGL context to associate with the window. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried. + * \param w a pointer to variable for storing the width in pixels, may be + * NULL. + * \param h a pointer to variable for storing the height in pixels, may be + * NULL. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync. + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/include/SDL_vulkan.h b/Windows/SDL2/include/SDL_vulkan.h new file mode 100644 index 0000000..e005ed3 --- /dev/null +++ b/Windows/SDL2/include/SDL_vulkan.h @@ -0,0 +1,219 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * # CategoryVulkan + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +/* Make sure to undef to avoid issues in case of later vulkan include */ +#undef VK_DEFINE_HANDLE +#undef VK_DEFINE_NON_DISPATCHABLE_HANDLE + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL. + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkGetInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release). + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned. + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions. + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface. + * \param instance The Vulkan instance handle. + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface. + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried. + * \param w Pointer to the variable to write the width to or NULL. + * \param h Pointer to the variable to write the height to or NULL. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_vulkan_h_ */ diff --git a/Windows/SDL2/include/begin_code.h b/Windows/SDL2/include/begin_code.h new file mode 100644 index 0000000..2044e5c --- /dev/null +++ b/Windows/SDL2/include/begin_code.h @@ -0,0 +1,189 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: BeginCode */ + +/** + * begin_code.h sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# elif defined(_MSC_VER) +# define SDL_DEPRECATED __declspec(deprecated) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) && !defined(__SUNPRO_C) && !defined(__SUNPRO_CC) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/Windows/SDL2/include/close_code.h b/Windows/SDL2/include/close_code.h new file mode 100644 index 0000000..f991f45 --- /dev/null +++ b/Windows/SDL2/include/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/Windows/SDL2/lib/SDL2.dll b/Windows/SDL2/lib/SDL2.dll new file mode 100644 index 0000000000000000000000000000000000000000..628fd5f616e8a01d7f9c21fcce80c11113d26991 GIT binary patch literal 1912320 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 oI*`GZRNeN_H&l%vM1q7~V%kfJBg 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�$*anu{WBPp1Q|%pe4c6;xyAdgjm%rR@TA52 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

qTY787 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL2/lib64/SDL2.dll b/Windows/SDL2/lib64/SDL2.dll new file mode 100644 index 0000000000000000000000000000000000000000..f01b22935512138b78c67ea0bef2fe0c8b9cf1a4 GIT binary patch literal 1785856 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 z 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

Ii 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 <+_VY->z`g|HStB?`*tk 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]&8u(d1x~L-x3IDmun74Uy=at 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 z%0A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�{e? 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL2/lib64/SDL2.lib b/Windows/SDL2/lib64/SDL2.lib new file mode 100644 index 0000000000000000000000000000000000000000..7257de6383ca5732a50a1df3f41f2447a2625d1c GIT binary patch literal 183824 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 A>;M1& literal 0 HcmV?d00001 diff --git a/Windows/SDL2/lib64/SDL2main.lib b/Windows/SDL2/lib64/SDL2main.lib new file mode 100644 index 0000000000000000000000000000000000000000..82b4ba159e9c9c646771291a8632eead83225dc4 GIT binary patch literal 5102 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 KAG_S6=l=ssE~Cu= literal 0 HcmV?d00001 diff --git a/Windows/SDL2/lib64/libSDL2main.a b/Windows/SDL2/lib64/libSDL2main.a new file mode 100644 index 0000000000000000000000000000000000000000..517f6a43c307291724e97baa2ef6b0fa1c8c0d9f GIT binary patch literal 1960 zcmZ`)&2JM&6dw~;sw^QxTPR;uw-W6I;@Ch;BB06^$6dDzL^vTxd~BBW+ALb{M!O46 z4uwjIDJx@CRXy}S=(TElDG13?_!b8gfdoPbDlU8-fRo{Xd2hz!tZ_2(zWKf1d-LAB zw>zG%wyTbI^xH^}&^{8${>{nW{`jW2AixhsPzpkClKYQE2q9hY+~kjDTdr;DifXxr zQdA9#aHd4HQN!AWY|n>DdB{a(+zT6Hk!(svEj#mKHEfP=1wIjv z2W2w31-N8?FOQcy9fs`_@*7n01w~;J^YjUiVkRDi2>BP_?IleA6efWTjm2`Rr!s0$ zIY5SLu_La#s6*56Gx|C00SCbLdow3r5Ag=XQE{I*A`Xv??#oJ3FZvoQ&?;4j*Kd^k znWk2*MW=5d?O&~=)^C(6U!zlXe@JZHmbCllKc==BY36a4T5zBMYb2Y#hpb12-?!Yk5Gmz&A0ODVPaB?*r;_-Nd)PuUWJLA8U{ny-A_FvI8 zk~S+%&4&76S0{5)MSfVPv|LF&tjkrIERm{9W0=f;%lyl=jDO|$S-JWVrj)8HR>L%y zxc=WVm=g`=GZfq9LQA^JqF2EJO_lY zAxz%3xDb3I%(@KF8fp~*;du#@G@!KfXQ#ip5;6CKon(n%iu8udo5sId1YfW9YHPuXG=`0%BsfrtSJ;&57LTk{A x+V~`eCC%lm0axJ(bi;FuZrP)DDGPfw^<9uxE$H9b6U?A{cuVfp)!ZbBya)Ggl)V4| literal 0 HcmV?d00001 diff --git a/Windows/SDL2/main/SDL_windows.h b/Windows/SDL2/main/SDL_windows.h new file mode 100644 index 0000000..33581a9 --- /dev/null +++ b/Windows/SDL2/main/SDL_windows.h @@ -0,0 +1,169 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* This is an include file for windows.h with the SDL build settings */ + +#ifndef _INCLUDED_WINDOWS_H +#define _INCLUDED_WINDOWS_H + +#if defined(__WIN32__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef STRICT +#define STRICT 1 +#endif +#ifndef UNICODE +#define UNICODE 1 +#endif +#undef WINVER +#undef _WIN32_WINNT +#if SDL_VIDEO_RENDER_D3D12 +#define _WIN32_WINNT 0xA00 /* For D3D12, 0xA00 is required */ +#elif defined(HAVE_SHELLSCALINGAPI_H) +#define _WIN32_WINNT 0x603 /* For DPI support */ +#else +#define _WIN32_WINNT 0x501 /* Need 0x410 for AlphaBlend() and 0x500 for EnumDisplayDevices(), 0x501 for raw input */ +#endif +#define WINVER _WIN32_WINNT + +#elif defined(__WINGDK__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef STRICT +#define STRICT 1 +#endif +#ifndef UNICODE +#define UNICODE 1 +#endif +#undef WINVER +#undef _WIN32_WINNT +#define _WIN32_WINNT 0xA00 +#define WINVER _WIN32_WINNT + +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef STRICT +#define STRICT 1 +#endif +#ifndef UNICODE +#define UNICODE 1 +#endif +#undef WINVER +#undef _WIN32_WINNT +#define _WIN32_WINNT 0xA00 +#define WINVER _WIN32_WINNT +#endif + +/* See https://github.com/libsdl-org/SDL/pull/7607 */ +/* force_align_arg_pointer attribute requires gcc >= 4.2.x. */ +#if defined(__clang__) +#define HAVE_FORCE_ALIGN_ARG_POINTER +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) +#define HAVE_FORCE_ALIGN_ARG_POINTER +#endif +#if defined(__GNUC__) && defined(__i386__) && defined(HAVE_FORCE_ALIGN_ARG_POINTER) +#define MINGW32_FORCEALIGN __attribute__((force_align_arg_pointer)) +#else +#define MINGW32_FORCEALIGN +#endif + +#include +#include /* for REFIID with broken mingw.org headers */ + +#include "SDL_rect.h" + +/* Routines to convert from UTF8 to native Windows text */ +#define WIN_StringToUTF8W(S) SDL_iconv_string("UTF-8", "UTF-16LE", (const char *)(S), (SDL_wcslen(S) + 1) * sizeof(WCHAR)) +#define WIN_UTF8ToStringW(S) (WCHAR *)SDL_iconv_string("UTF-16LE", "UTF-8", (const char *)(S), SDL_strlen(S) + 1) +/* !!! FIXME: UTF8ToString() can just be a SDL_strdup() here. */ +#define WIN_StringToUTF8A(S) SDL_iconv_string("UTF-8", "ASCII", (const char *)(S), (SDL_strlen(S) + 1)) +#define WIN_UTF8ToStringA(S) SDL_iconv_string("ASCII", "UTF-8", (const char *)(S), SDL_strlen(S) + 1) +#if UNICODE +#define WIN_StringToUTF8 WIN_StringToUTF8W +#define WIN_UTF8ToString WIN_UTF8ToStringW +#define SDL_tcslen SDL_wcslen +#define SDL_tcsstr SDL_wcsstr +#else +#define WIN_StringToUTF8 WIN_StringToUTF8A +#define WIN_UTF8ToString WIN_UTF8ToStringA +#define SDL_tcslen SDL_strlen +#define SDL_tcsstr SDL_strstr +#endif + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Sets an error message based on a given HRESULT */ +extern int WIN_SetErrorFromHRESULT(const char *prefix, HRESULT hr); + +/* Sets an error message based on GetLastError(). Always return -1. */ +extern int WIN_SetError(const char *prefix); + +#if !defined(__WINRT__) +/* Load a function from combase.dll */ +void *WIN_LoadComBaseFunction(const char *name); +#endif + +/* Wrap up the oddities of CoInitialize() into a common function. */ +extern HRESULT WIN_CoInitialize(void); +extern void WIN_CoUninitialize(void); + +/* Wrap up the oddities of RoInitialize() into a common function. */ +extern HRESULT WIN_RoInitialize(void); +extern void WIN_RoUninitialize(void); + +/* Returns SDL_TRUE if we're running on Windows Vista and newer */ +extern BOOL WIN_IsWindowsVistaOrGreater(void); + +/* Returns SDL_TRUE if we're running on Windows 7 and newer */ +extern BOOL WIN_IsWindows7OrGreater(void); + +/* Returns SDL_TRUE if we're running on Windows 8 and newer */ +extern BOOL WIN_IsWindows8OrGreater(void); + +/* You need to SDL_free() the result of this call. */ +extern char *WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid); + +/* Checks to see if two GUID are the same. */ +extern BOOL WIN_IsEqualGUID(const GUID *a, const GUID *b); +extern BOOL WIN_IsEqualIID(REFIID a, REFIID b); + +/* Convert between SDL_rect and RECT */ +extern void WIN_RECTToRect(const RECT *winrect, SDL_Rect *sdlrect); +extern void WIN_RectToRECT(const SDL_Rect *sdlrect, RECT *winrect); + +/* Returns SDL_TRUE if the rect is empty */ +extern BOOL WIN_IsRectEmpty(const RECT *rect); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _INCLUDED_WINDOWS_H */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/main/SDL_windows_main.c b/Windows/SDL2/main/SDL_windows_main.c new file mode 100644 index 0000000..146c174 --- /dev/null +++ b/Windows/SDL2/main/SDL_windows_main.c @@ -0,0 +1,114 @@ +/* + SDL_windows_main.c, placed in the public domain by Sam Lantinga 4/13/98 + + The WinMain function -- calls your program's main() function +*/ +#include "SDL_config.h" + +#ifdef __WIN32__ + +/* Include this so we define UNICODE properly */ +#include "SDL_windows.h" +#include /* CommandLineToArgvW() */ + +/* Include the SDL main definition header */ +#include "SDL.h" +#include "SDL_main.h" + +#ifdef main +#undef main +#endif /* main */ + +/* Pop up an out of memory message, returns to Windows */ +static BOOL OutOfMemory(void) +{ + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal Error", "Out of memory - aborting", NULL); + return FALSE; +} + +#if defined(_MSC_VER) +/* The VC++ compiler needs main/wmain defined */ +#define console_ansi_main main +#if UNICODE +#define console_wmain wmain +#endif +#endif + +/* Gets the arguments with GetCommandLine, converts them to argc and argv + and calls SDL_main */ +static int main_getcmdline(void) +{ + LPWSTR *argvw; + char **argv; + int i, argc, result; + + argvw = CommandLineToArgvW(GetCommandLineW(), &argc); + if (!argvw) { + return OutOfMemory(); + } + + /* Note that we need to be careful about how we allocate/free memory here. + * If the application calls SDL_SetMemoryFunctions(), we can't rely on + * SDL_free() to use the same allocator after SDL_main() returns. + */ + + /* Parse it into argv and argc */ + argv = (char **)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (argc + 1) * sizeof(*argv)); + if (!argv) { + return OutOfMemory(); + } + for (i = 0; i < argc; ++i) { + DWORD len; + char *arg = WIN_StringToUTF8W(argvw[i]); + if (!arg) { + return OutOfMemory(); + } + len = (DWORD)SDL_strlen(arg); + argv[i] = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (size_t)len + 1); + if (!argv[i]) { + return OutOfMemory(); + } + SDL_memcpy(argv[i], arg, len); + SDL_free(arg); + } + argv[i] = NULL; + LocalFree(argvw); + + SDL_SetMainReady(); + + /* Run the application main() code */ + result = SDL_main(argc, argv); + + /* Free argv, to avoid memory leak */ + for (i = 0; i < argc; ++i) { + HeapFree(GetProcessHeap(), 0, argv[i]); + } + HeapFree(GetProcessHeap(), 0, argv); + + return result; +} + +/* This is where execution begins [console apps, ansi] */ +int console_ansi_main(int argc, char *argv[]) +{ + return main_getcmdline(); +} + +#if UNICODE +/* This is where execution begins [console apps, unicode] */ +int console_wmain(int argc, wchar_t *wargv[], wchar_t *wenvp) +{ + return main_getcmdline(); +} +#endif + +/* This is where execution begins [windowed apps] */ +int WINAPI MINGW32_FORCEALIGN +WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) /* NOLINT(readability-inconsistent-declaration-parameter-name) */ +{ + return main_getcmdline(); +} + +#endif /* __WIN32__ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/Windows/SDL2/watcom/SDL2.def b/Windows/SDL2/watcom/SDL2.def new file mode 100644 index 0000000..4d4458e --- /dev/null +++ b/Windows/SDL2/watcom/SDL2.def @@ -0,0 +1,848 @@ +; lib /def:SDL2.def /out:SDL2.lib /machine:x86 +LIBRARY SDL2.dll +EXPORTS +SDL_DYNAPI_entry +SDL_SetError +SDL_Log +SDL_LogVerbose +SDL_LogDebug +SDL_LogInfo +SDL_LogWarn +SDL_LogError +SDL_LogCritical +SDL_LogMessage +SDL_sscanf +SDL_snprintf +SDL_CreateThread +SDL_RWFromFP +SDL_RegisterApp +SDL_UnregisterApp +SDL_Direct3D9GetAdapterIndex +SDL_RenderGetD3D9Device +SDL_Init +SDL_InitSubSystem +SDL_QuitSubSystem +SDL_WasInit +SDL_Quit +SDL_ReportAssertion +SDL_SetAssertionHandler +SDL_GetAssertionReport +SDL_ResetAssertionReport +SDL_AtomicTryLock +SDL_AtomicLock +SDL_AtomicUnlock +SDL_AtomicCAS +SDL_AtomicSet +SDL_AtomicGet +SDL_AtomicAdd +SDL_AtomicCASPtr +SDL_AtomicSetPtr +SDL_AtomicGetPtr +SDL_GetNumAudioDrivers +SDL_GetAudioDriver +SDL_AudioInit +SDL_AudioQuit +SDL_GetCurrentAudioDriver +SDL_OpenAudio +SDL_GetNumAudioDevices +SDL_GetAudioDeviceName +SDL_OpenAudioDevice +SDL_GetAudioStatus +SDL_GetAudioDeviceStatus +SDL_PauseAudio +SDL_PauseAudioDevice +SDL_LoadWAV_RW +SDL_FreeWAV +SDL_BuildAudioCVT +SDL_ConvertAudio +SDL_MixAudio +SDL_MixAudioFormat +SDL_LockAudio +SDL_LockAudioDevice +SDL_UnlockAudio +SDL_UnlockAudioDevice +SDL_CloseAudio +SDL_CloseAudioDevice +SDL_SetClipboardText +SDL_GetClipboardText +SDL_HasClipboardText +SDL_GetCPUCount +SDL_GetCPUCacheLineSize +SDL_HasRDTSC +SDL_HasAltiVec +SDL_HasMMX +SDL_Has3DNow +SDL_HasSSE +SDL_HasSSE2 +SDL_HasSSE3 +SDL_HasSSE41 +SDL_HasSSE42 +SDL_GetSystemRAM +SDL_GetError +SDL_ClearError +SDL_Error +SDL_PumpEvents +SDL_PeepEvents +SDL_HasEvent +SDL_HasEvents +SDL_FlushEvent +SDL_FlushEvents +SDL_PollEvent +SDL_WaitEvent +SDL_WaitEventTimeout +SDL_PushEvent +SDL_SetEventFilter +SDL_GetEventFilter +SDL_AddEventWatch +SDL_DelEventWatch +SDL_FilterEvents +SDL_EventState +SDL_RegisterEvents +SDL_GetBasePath +SDL_GetPrefPath +SDL_GameControllerAddMapping +SDL_GameControllerMappingForGUID +SDL_GameControllerMapping +SDL_IsGameController +SDL_GameControllerNameForIndex +SDL_GameControllerOpen +SDL_GameControllerName +SDL_GameControllerGetAttached +SDL_GameControllerGetJoystick +SDL_GameControllerEventState +SDL_GameControllerUpdate +SDL_GameControllerGetAxisFromString +SDL_GameControllerGetStringForAxis +SDL_GameControllerGetBindForAxis +SDL_GameControllerGetAxis +SDL_GameControllerGetButtonFromString +SDL_GameControllerGetStringForButton +SDL_GameControllerGetBindForButton +SDL_GameControllerGetButton +SDL_GameControllerClose +SDL_RecordGesture +SDL_SaveAllDollarTemplates +SDL_SaveDollarTemplate +SDL_LoadDollarTemplates +SDL_NumHaptics +SDL_HapticName +SDL_HapticOpen +SDL_HapticOpened +SDL_HapticIndex +SDL_MouseIsHaptic +SDL_HapticOpenFromMouse +SDL_JoystickIsHaptic +SDL_HapticOpenFromJoystick +SDL_HapticClose +SDL_HapticNumEffects +SDL_HapticNumEffectsPlaying +SDL_HapticQuery +SDL_HapticNumAxes +SDL_HapticEffectSupported +SDL_HapticNewEffect +SDL_HapticUpdateEffect +SDL_HapticRunEffect +SDL_HapticStopEffect +SDL_HapticDestroyEffect +SDL_HapticGetEffectStatus +SDL_HapticSetGain +SDL_HapticSetAutocenter +SDL_HapticPause +SDL_HapticUnpause +SDL_HapticStopAll +SDL_HapticRumbleSupported +SDL_HapticRumbleInit +SDL_HapticRumblePlay +SDL_HapticRumbleStop +SDL_SetHintWithPriority +SDL_SetHint +SDL_GetHint +SDL_AddHintCallback +SDL_DelHintCallback +SDL_ClearHints +SDL_NumJoysticks +SDL_JoystickNameForIndex +SDL_JoystickOpen +SDL_JoystickName +SDL_JoystickGetDeviceGUID +SDL_JoystickGetGUID +SDL_JoystickGetGUIDString +SDL_JoystickGetGUIDFromString +SDL_JoystickGetAttached +SDL_JoystickInstanceID +SDL_JoystickNumAxes +SDL_JoystickNumBalls +SDL_JoystickNumHats +SDL_JoystickNumButtons +SDL_JoystickUpdate +SDL_JoystickEventState +SDL_JoystickGetAxis +SDL_JoystickGetHat +SDL_JoystickGetBall +SDL_JoystickGetButton +SDL_JoystickClose +SDL_GetKeyboardFocus +SDL_GetKeyboardState +SDL_GetModState +SDL_SetModState +SDL_GetKeyFromScancode +SDL_GetScancodeFromKey +SDL_GetScancodeName +SDL_GetScancodeFromName +SDL_GetKeyName +SDL_GetKeyFromName +SDL_StartTextInput +SDL_IsTextInputActive +SDL_StopTextInput +SDL_SetTextInputRect +SDL_HasScreenKeyboardSupport +SDL_IsScreenKeyboardShown +SDL_LoadObject +SDL_LoadFunction +SDL_UnloadObject +SDL_LogSetAllPriority +SDL_LogSetPriority +SDL_LogGetPriority +SDL_LogResetPriorities +SDL_LogMessageV +SDL_LogGetOutputFunction +SDL_LogSetOutputFunction +SDL_SetMainReady +SDL_ShowMessageBox +SDL_ShowSimpleMessageBox +SDL_GetMouseFocus +SDL_GetMouseState +SDL_GetRelativeMouseState +SDL_WarpMouseInWindow +SDL_SetRelativeMouseMode +SDL_GetRelativeMouseMode +SDL_CreateCursor +SDL_CreateColorCursor +SDL_CreateSystemCursor +SDL_SetCursor +SDL_GetCursor +SDL_GetDefaultCursor +SDL_FreeCursor +SDL_ShowCursor +SDL_CreateMutex +SDL_LockMutex +SDL_TryLockMutex +SDL_UnlockMutex +SDL_DestroyMutex +SDL_CreateSemaphore +SDL_DestroySemaphore +SDL_SemWait +SDL_SemTryWait +SDL_SemWaitTimeout +SDL_SemPost +SDL_SemValue +SDL_CreateCond +SDL_DestroyCond +SDL_CondSignal +SDL_CondBroadcast +SDL_CondWait +SDL_CondWaitTimeout +SDL_GetPixelFormatName +SDL_PixelFormatEnumToMasks +SDL_MasksToPixelFormatEnum +SDL_AllocFormat +SDL_FreeFormat +SDL_AllocPalette +SDL_SetPixelFormatPalette +SDL_SetPaletteColors +SDL_FreePalette +SDL_MapRGB +SDL_MapRGBA +SDL_GetRGB +SDL_GetRGBA +SDL_CalculateGammaRamp +SDL_GetPlatform +SDL_GetPowerInfo +SDL_HasIntersection +SDL_IntersectRect +SDL_UnionRect +SDL_EnclosePoints +SDL_IntersectRectAndLine +SDL_GetNumRenderDrivers +SDL_GetRenderDriverInfo +SDL_CreateWindowAndRenderer +SDL_CreateRenderer +SDL_CreateSoftwareRenderer +SDL_GetRenderer +SDL_GetRendererInfo +SDL_GetRendererOutputSize +SDL_CreateTexture +SDL_CreateTextureFromSurface +SDL_QueryTexture +SDL_SetTextureColorMod +SDL_GetTextureColorMod +SDL_SetTextureAlphaMod +SDL_GetTextureAlphaMod +SDL_SetTextureBlendMode +SDL_GetTextureBlendMode +SDL_UpdateTexture +SDL_UpdateYUVTexture +SDL_LockTexture +SDL_UnlockTexture +SDL_RenderTargetSupported +SDL_SetRenderTarget +SDL_GetRenderTarget +SDL_RenderSetLogicalSize +SDL_RenderGetLogicalSize +SDL_RenderSetViewport +SDL_RenderGetViewport +SDL_RenderSetClipRect +SDL_RenderGetClipRect +SDL_RenderSetScale +SDL_RenderGetScale +SDL_SetRenderDrawColor +SDL_GetRenderDrawColor +SDL_SetRenderDrawBlendMode +SDL_GetRenderDrawBlendMode +SDL_RenderClear +SDL_RenderDrawPoint +SDL_RenderDrawPoints +SDL_RenderDrawLine +SDL_RenderDrawLines +SDL_RenderDrawRect +SDL_RenderDrawRects +SDL_RenderFillRect +SDL_RenderFillRects +SDL_RenderCopy +SDL_RenderCopyEx +SDL_RenderReadPixels +SDL_RenderPresent +SDL_DestroyTexture +SDL_DestroyRenderer +SDL_GL_BindTexture +SDL_GL_UnbindTexture +SDL_RWFromFile +SDL_RWFromMem +SDL_RWFromConstMem +SDL_AllocRW +SDL_FreeRW +SDL_ReadU8 +SDL_ReadLE16 +SDL_ReadBE16 +SDL_ReadLE32 +SDL_ReadBE32 +SDL_ReadLE64 +SDL_ReadBE64 +SDL_WriteU8 +SDL_WriteLE16 +SDL_WriteBE16 +SDL_WriteLE32 +SDL_WriteBE32 +SDL_WriteLE64 +SDL_WriteBE64 +SDL_CreateShapedWindow +SDL_IsShapedWindow +SDL_SetWindowShape +SDL_GetShapedWindowMode +SDL_malloc +SDL_calloc +SDL_realloc +SDL_free +SDL_getenv +SDL_setenv +SDL_qsort +SDL_abs +SDL_isdigit +SDL_isspace +SDL_toupper +SDL_tolower +SDL_memset +SDL_memcpy +SDL_memmove +SDL_memcmp +SDL_wcslen +SDL_wcslcpy +SDL_wcslcat +SDL_strlen +SDL_strlcpy +SDL_utf8strlcpy +SDL_strlcat +SDL_strdup +SDL_strrev +SDL_strupr +SDL_strlwr +SDL_strchr +SDL_strrchr +SDL_strstr +SDL_itoa +SDL_uitoa +SDL_ltoa +SDL_ultoa +SDL_lltoa +SDL_ulltoa +SDL_atoi +SDL_atof +SDL_strtol +SDL_strtoul +SDL_strtoll +SDL_strtoull +SDL_strtod +SDL_strcmp +SDL_strncmp +SDL_strcasecmp +SDL_strncasecmp +SDL_vsnprintf +SDL_acos +SDL_asin +SDL_atan +SDL_atan2 +SDL_ceil +SDL_copysign +SDL_cos +SDL_cosf +SDL_fabs +SDL_floor +SDL_log +SDL_pow +SDL_scalbn +SDL_sin +SDL_sinf +SDL_sqrt +SDL_iconv_open +SDL_iconv_close +SDL_iconv +SDL_iconv_string +SDL_CreateRGBSurface +SDL_CreateRGBSurfaceFrom +SDL_FreeSurface +SDL_SetSurfacePalette +SDL_LockSurface +SDL_UnlockSurface +SDL_LoadBMP_RW +SDL_SaveBMP_RW +SDL_SetSurfaceRLE +SDL_SetColorKey +SDL_GetColorKey +SDL_SetSurfaceColorMod +SDL_GetSurfaceColorMod +SDL_SetSurfaceAlphaMod +SDL_GetSurfaceAlphaMod +SDL_SetSurfaceBlendMode +SDL_GetSurfaceBlendMode +SDL_SetClipRect +SDL_GetClipRect +SDL_ConvertSurface +SDL_ConvertSurfaceFormat +SDL_ConvertPixels +SDL_FillRect +SDL_FillRects +SDL_UpperBlit +SDL_LowerBlit +SDL_SoftStretch +SDL_UpperBlitScaled +SDL_LowerBlitScaled +SDL_GetWindowWMInfo +SDL_GetThreadName +SDL_ThreadID +SDL_GetThreadID +SDL_SetThreadPriority +SDL_WaitThread +SDL_DetachThread +SDL_TLSCreate +SDL_TLSGet +SDL_TLSSet +SDL_GetTicks +SDL_GetPerformanceCounter +SDL_GetPerformanceFrequency +SDL_Delay +SDL_AddTimer +SDL_RemoveTimer +SDL_GetNumTouchDevices +SDL_GetTouchDevice +SDL_GetNumTouchFingers +SDL_GetTouchFinger +SDL_GetVersion +SDL_GetRevision +SDL_GetRevisionNumber +SDL_GetNumVideoDrivers +SDL_GetVideoDriver +SDL_VideoInit +SDL_VideoQuit +SDL_GetCurrentVideoDriver +SDL_GetNumVideoDisplays +SDL_GetDisplayName +SDL_GetDisplayBounds +SDL_GetDisplayDPI +SDL_GetNumDisplayModes +SDL_GetDisplayMode +SDL_GetDesktopDisplayMode +SDL_GetCurrentDisplayMode +SDL_GetClosestDisplayMode +SDL_GetWindowDisplayIndex +SDL_SetWindowDisplayMode +SDL_GetWindowDisplayMode +SDL_GetWindowPixelFormat +SDL_CreateWindow +SDL_CreateWindowFrom +SDL_GetWindowID +SDL_GetWindowFromID +SDL_GetWindowFlags +SDL_SetWindowTitle +SDL_GetWindowTitle +SDL_SetWindowIcon +SDL_SetWindowData +SDL_GetWindowData +SDL_SetWindowPosition +SDL_GetWindowPosition +SDL_SetWindowSize +SDL_GetWindowSize +SDL_SetWindowMinimumSize +SDL_GetWindowMinimumSize +SDL_SetWindowMaximumSize +SDL_GetWindowMaximumSize +SDL_SetWindowBordered +SDL_ShowWindow +SDL_HideWindow +SDL_RaiseWindow +SDL_MaximizeWindow +SDL_MinimizeWindow +SDL_RestoreWindow +SDL_SetWindowFullscreen +SDL_GetWindowSurface +SDL_UpdateWindowSurface +SDL_UpdateWindowSurfaceRects +SDL_SetWindowGrab +SDL_GetWindowGrab +SDL_SetWindowBrightness +SDL_GetWindowBrightness +SDL_SetWindowGammaRamp +SDL_GetWindowGammaRamp +SDL_DestroyWindow +SDL_IsScreenSaverEnabled +SDL_EnableScreenSaver +SDL_DisableScreenSaver +SDL_GL_LoadLibrary +SDL_GL_GetProcAddress +SDL_GL_UnloadLibrary +SDL_GL_ExtensionSupported +SDL_GL_SetAttribute +SDL_GL_GetAttribute +SDL_GL_CreateContext +SDL_GL_MakeCurrent +SDL_GL_GetCurrentWindow +SDL_GL_GetCurrentContext +SDL_GL_GetDrawableSize +SDL_GL_SetSwapInterval +SDL_GL_GetSwapInterval +SDL_GL_SwapWindow +SDL_GL_DeleteContext +SDL_vsscanf +SDL_GameControllerAddMappingsFromRW +SDL_GL_ResetAttributes +SDL_HasAVX +SDL_GetDefaultAssertionHandler +SDL_GetAssertionHandler +SDL_DXGIGetOutputInfo +SDL_RenderIsClipEnabled +SDL_WarpMouseGlobal +SDL_sqrtf +SDL_tan +SDL_tanf +SDL_CaptureMouse +SDL_SetWindowHitTest +SDL_GetGlobalMouseState +SDL_HasAVX2 +SDL_QueueAudio +SDL_GetQueuedAudioSize +SDL_ClearQueuedAudio +SDL_GetGrabbedWindow +SDL_SetWindowsMessageHook +SDL_JoystickCurrentPowerLevel +SDL_GameControllerFromInstanceID +SDL_JoystickFromInstanceID +SDL_GetDisplayUsableBounds +SDL_GetWindowBordersSize +SDL_SetWindowOpacity +SDL_GetWindowOpacity +SDL_SetWindowInputFocus +SDL_SetWindowModalFor +SDL_RenderSetIntegerScale +SDL_RenderGetIntegerScale +SDL_DequeueAudio +SDL_SetWindowResizable +SDL_CreateRGBSurfaceWithFormat +SDL_CreateRGBSurfaceWithFormatFrom +SDL_GetHintBoolean +SDL_JoystickGetDeviceVendor +SDL_JoystickGetDeviceProduct +SDL_JoystickGetDeviceProductVersion +SDL_JoystickGetVendor +SDL_JoystickGetProduct +SDL_JoystickGetProductVersion +SDL_GameControllerGetVendor +SDL_GameControllerGetProduct +SDL_GameControllerGetProductVersion +SDL_HasNEON +SDL_GameControllerNumMappings +SDL_GameControllerMappingForIndex +SDL_JoystickGetAxisInitialState +SDL_JoystickGetDeviceType +SDL_JoystickGetType +SDL_MemoryBarrierReleaseFunction +SDL_MemoryBarrierAcquireFunction +SDL_JoystickGetDeviceInstanceID +SDL_utf8strlen +SDL_LoadFile_RW +SDL_wcscmp +SDL_ComposeCustomBlendMode +SDL_DuplicateSurface +SDL_Vulkan_LoadLibrary +SDL_Vulkan_GetVkGetInstanceProcAddr +SDL_Vulkan_UnloadLibrary +SDL_Vulkan_GetInstanceExtensions +SDL_Vulkan_CreateSurface +SDL_Vulkan_GetDrawableSize +SDL_LockJoysticks +SDL_UnlockJoysticks +SDL_GetMemoryFunctions +SDL_SetMemoryFunctions +SDL_GetNumAllocations +SDL_NewAudioStream +SDL_AudioStreamPut +SDL_AudioStreamGet +SDL_AudioStreamClear +SDL_AudioStreamAvailable +SDL_FreeAudioStream +SDL_AudioStreamFlush +SDL_acosf +SDL_asinf +SDL_atanf +SDL_atan2f +SDL_ceilf +SDL_copysignf +SDL_fabsf +SDL_floorf +SDL_logf +SDL_powf +SDL_scalbnf +SDL_fmod +SDL_fmodf +SDL_SetYUVConversionMode +SDL_GetYUVConversionMode +SDL_GetYUVConversionModeForResolution +SDL_RenderGetMetalLayer +SDL_RenderGetMetalCommandEncoder +SDL_log10 +SDL_log10f +SDL_GameControllerMappingForDeviceIndex +SDL_HasAVX512F +SDL_exp +SDL_expf +SDL_wcsdup +SDL_GameControllerRumble +SDL_JoystickRumble +SDL_NumSensors +SDL_SensorGetDeviceName +SDL_SensorGetDeviceType +SDL_SensorGetDeviceNonPortableType +SDL_SensorGetDeviceInstanceID +SDL_SensorOpen +SDL_SensorFromInstanceID +SDL_SensorGetName +SDL_SensorGetType +SDL_SensorGetNonPortableType +SDL_SensorGetInstanceID +SDL_SensorGetData +SDL_SensorClose +SDL_SensorUpdate +SDL_IsTablet +SDL_GetDisplayOrientation +SDL_HasColorKey +SDL_CreateThreadWithStackSize +SDL_JoystickGetDevicePlayerIndex +SDL_JoystickGetPlayerIndex +SDL_GameControllerGetPlayerIndex +SDL_RenderFlush +SDL_RenderDrawPointF +SDL_RenderDrawPointsF +SDL_RenderDrawLineF +SDL_RenderDrawLinesF +SDL_RenderDrawRectF +SDL_RenderDrawRectsF +SDL_RenderFillRectF +SDL_RenderFillRectsF +SDL_RenderCopyF +SDL_RenderCopyExF +SDL_GetTouchDeviceType +SDL_SIMDGetAlignment +SDL_SIMDAlloc +SDL_SIMDFree +SDL_RWsize +SDL_RWseek +SDL_RWtell +SDL_RWread +SDL_RWwrite +SDL_RWclose +SDL_LoadFile +SDL_Metal_CreateView +SDL_Metal_DestroyView +SDL_LockTextureToSurface +SDL_HasARMSIMD +SDL_strtokr +SDL_wcsstr +SDL_wcsncmp +SDL_GameControllerTypeForIndex +SDL_GameControllerGetType +SDL_GameControllerFromPlayerIndex +SDL_GameControllerSetPlayerIndex +SDL_JoystickFromPlayerIndex +SDL_JoystickSetPlayerIndex +SDL_SetTextureScaleMode +SDL_GetTextureScaleMode +SDL_OnApplicationWillTerminate +SDL_OnApplicationDidReceiveMemoryWarning +SDL_OnApplicationWillResignActive +SDL_OnApplicationDidEnterBackground +SDL_OnApplicationWillEnterForeground +SDL_OnApplicationDidBecomeActive +SDL_isupper +SDL_islower +SDL_JoystickAttachVirtual +SDL_JoystickDetachVirtual +SDL_JoystickIsVirtual +SDL_JoystickSetVirtualAxis +SDL_JoystickSetVirtualButton +SDL_JoystickSetVirtualHat +SDL_GetErrorMsg +SDL_LockSensors +SDL_UnlockSensors +SDL_Metal_GetLayer +SDL_Metal_GetDrawableSize +SDL_trunc +SDL_truncf +SDL_GetPreferredLocales +SDL_SIMDRealloc +SDL_OpenURL +SDL_HasSurfaceRLE +SDL_GameControllerHasLED +SDL_GameControllerSetLED +SDL_JoystickHasLED +SDL_JoystickSetLED +SDL_GameControllerRumbleTriggers +SDL_JoystickRumbleTriggers +SDL_GameControllerHasAxis +SDL_GameControllerHasButton +SDL_GameControllerGetNumTouchpads +SDL_GameControllerGetNumTouchpadFingers +SDL_GameControllerGetTouchpadFinger +SDL_crc32 +SDL_GameControllerGetSerial +SDL_JoystickGetSerial +SDL_GameControllerHasSensor +SDL_GameControllerSetSensorEnabled +SDL_GameControllerIsSensorEnabled +SDL_GameControllerGetSensorData +SDL_wcscasecmp +SDL_wcsncasecmp +SDL_round +SDL_roundf +SDL_lround +SDL_lroundf +SDL_SoftStretchLinear +SDL_RenderGetD3D11Device +SDL_UpdateNVTexture +SDL_SetWindowKeyboardGrab +SDL_SetWindowMouseGrab +SDL_GetWindowKeyboardGrab +SDL_GetWindowMouseGrab +SDL_isalpha +SDL_isalnum +SDL_isblank +SDL_iscntrl +SDL_isxdigit +SDL_ispunct +SDL_isprint +SDL_isgraph +SDL_GetAudioDeviceSpec +SDL_TLSCleanup +SDL_SetWindowAlwaysOnTop +SDL_FlashWindow +SDL_GameControllerSendEffect +SDL_JoystickSendEffect +SDL_GameControllerGetSensorDataRate +SDL_SetTextureUserData +SDL_GetTextureUserData +SDL_RenderGeometry +SDL_RenderGeometryRaw +SDL_RenderSetVSync +SDL_asprintf +SDL_vasprintf +SDL_GetWindowICCProfile +SDL_GetTicks64 +SDL_GameControllerGetAppleSFSymbolsNameForButton +SDL_GameControllerGetAppleSFSymbolsNameForAxis +SDL_hid_init +SDL_hid_exit +SDL_hid_device_change_count +SDL_hid_enumerate +SDL_hid_free_enumeration +SDL_hid_open +SDL_hid_open_path +SDL_hid_write +SDL_hid_read_timeout +SDL_hid_read +SDL_hid_set_nonblocking +SDL_hid_send_feature_report +SDL_hid_get_feature_report +SDL_hid_close +SDL_hid_get_manufacturer_string +SDL_hid_get_product_string +SDL_hid_get_serial_number_string +SDL_hid_get_indexed_string +SDL_SetWindowMouseRect +SDL_GetWindowMouseRect +SDL_RenderWindowToLogical +SDL_RenderLogicalToWindow +SDL_JoystickHasRumble +SDL_JoystickHasRumbleTriggers +SDL_GameControllerHasRumble +SDL_GameControllerHasRumbleTriggers +SDL_hid_ble_scan +SDL_PremultiplyAlpha +SDL_GetTouchName +SDL_ClearComposition +SDL_IsTextInputShown +SDL_HasIntersectionF +SDL_IntersectFRect +SDL_UnionFRect +SDL_EncloseFPoints +SDL_IntersectFRectAndLine +SDL_RenderGetWindow +SDL_bsearch +SDL_GameControllerPathForIndex +SDL_GameControllerPath +SDL_JoystickPathForIndex +SDL_JoystickPath +SDL_JoystickAttachVirtualEx +SDL_GameControllerGetFirmwareVersion +SDL_JoystickGetFirmwareVersion +SDL_GUIDToString +SDL_GUIDFromString +SDL_HasLSX +SDL_HasLASX +SDL_RenderGetD3D12Device +SDL_utf8strnlen +SDL_GetOriginalMemoryFunctions +SDL_ResetKeyboard +SDL_GetDefaultAudioInfo +SDL_GetPointDisplayIndex +SDL_GetRectDisplayIndex +SDL_ResetHint +SDL_crc16 +SDL_GetWindowSizeInPixels +SDL_GetJoystickGUIDInfo +SDL_SetPrimarySelectionText +SDL_GetPrimarySelectionText +SDL_HasPrimarySelectionText +SDL_GameControllerGetSensorDataWithTimestamp +SDL_SensorGetDataWithTimestamp +SDL_ResetHints +SDL_strcasestr +SDL_HasWindowSurface +SDL_DestroyWindowSurface +SDL_GameControllerGetSteamHandle diff --git a/Windows/SDL2/watcom/SDL2.exp b/Windows/SDL2/watcom/SDL2.exp new file mode 100644 index 0000000..91046cb --- /dev/null +++ b/Windows/SDL2/watcom/SDL2.exp @@ -0,0 +1,845 @@ +++'_SDL_DYNAPI_entry'.'SDL2.dll'..'SDL_DYNAPI_entry' +++'_SDL_SetError'.'SDL2.dll'..'SDL_SetError' +++'_SDL_Log'.'SDL2.dll'..'SDL_Log' +++'_SDL_LogVerbose'.'SDL2.dll'..'SDL_LogVerbose' +++'_SDL_LogDebug'.'SDL2.dll'..'SDL_LogDebug' +++'_SDL_LogInfo'.'SDL2.dll'..'SDL_LogInfo' +++'_SDL_LogWarn'.'SDL2.dll'..'SDL_LogWarn' +++'_SDL_LogError'.'SDL2.dll'..'SDL_LogError' +++'_SDL_LogCritical'.'SDL2.dll'..'SDL_LogCritical' +++'_SDL_LogMessage'.'SDL2.dll'..'SDL_LogMessage' +++'_SDL_sscanf'.'SDL2.dll'..'SDL_sscanf' +++'_SDL_snprintf'.'SDL2.dll'..'SDL_snprintf' +++'_SDL_CreateThread'.'SDL2.dll'..'SDL_CreateThread' +++'_SDL_RWFromFP'.'SDL2.dll'..'SDL_RWFromFP' +++'_SDL_RegisterApp'.'SDL2.dll'..'SDL_RegisterApp' +++'_SDL_UnregisterApp'.'SDL2.dll'..'SDL_UnregisterApp' +++'_SDL_Direct3D9GetAdapterIndex'.'SDL2.dll'..'SDL_Direct3D9GetAdapterIndex' +++'_SDL_RenderGetD3D9Device'.'SDL2.dll'..'SDL_RenderGetD3D9Device' +++'_SDL_Init'.'SDL2.dll'..'SDL_Init' +++'_SDL_InitSubSystem'.'SDL2.dll'..'SDL_InitSubSystem' +++'_SDL_QuitSubSystem'.'SDL2.dll'..'SDL_QuitSubSystem' +++'_SDL_WasInit'.'SDL2.dll'..'SDL_WasInit' +++'_SDL_Quit'.'SDL2.dll'..'SDL_Quit' +++'_SDL_ReportAssertion'.'SDL2.dll'..'SDL_ReportAssertion' +++'_SDL_SetAssertionHandler'.'SDL2.dll'..'SDL_SetAssertionHandler' +++'_SDL_GetAssertionReport'.'SDL2.dll'..'SDL_GetAssertionReport' +++'_SDL_ResetAssertionReport'.'SDL2.dll'..'SDL_ResetAssertionReport' +++'_SDL_AtomicTryLock'.'SDL2.dll'..'SDL_AtomicTryLock' +++'_SDL_AtomicLock'.'SDL2.dll'..'SDL_AtomicLock' +++'_SDL_AtomicUnlock'.'SDL2.dll'..'SDL_AtomicUnlock' +++'_SDL_AtomicCAS'.'SDL2.dll'..'SDL_AtomicCAS' +++'_SDL_AtomicSet'.'SDL2.dll'..'SDL_AtomicSet' +++'_SDL_AtomicGet'.'SDL2.dll'..'SDL_AtomicGet' +++'_SDL_AtomicAdd'.'SDL2.dll'..'SDL_AtomicAdd' +++'_SDL_AtomicCASPtr'.'SDL2.dll'..'SDL_AtomicCASPtr' +++'_SDL_AtomicSetPtr'.'SDL2.dll'..'SDL_AtomicSetPtr' +++'_SDL_AtomicGetPtr'.'SDL2.dll'..'SDL_AtomicGetPtr' +++'_SDL_GetNumAudioDrivers'.'SDL2.dll'..'SDL_GetNumAudioDrivers' +++'_SDL_GetAudioDriver'.'SDL2.dll'..'SDL_GetAudioDriver' +++'_SDL_AudioInit'.'SDL2.dll'..'SDL_AudioInit' +++'_SDL_AudioQuit'.'SDL2.dll'..'SDL_AudioQuit' +++'_SDL_GetCurrentAudioDriver'.'SDL2.dll'..'SDL_GetCurrentAudioDriver' +++'_SDL_OpenAudio'.'SDL2.dll'..'SDL_OpenAudio' +++'_SDL_GetNumAudioDevices'.'SDL2.dll'..'SDL_GetNumAudioDevices' +++'_SDL_GetAudioDeviceName'.'SDL2.dll'..'SDL_GetAudioDeviceName' +++'_SDL_OpenAudioDevice'.'SDL2.dll'..'SDL_OpenAudioDevice' +++'_SDL_GetAudioStatus'.'SDL2.dll'..'SDL_GetAudioStatus' +++'_SDL_GetAudioDeviceStatus'.'SDL2.dll'..'SDL_GetAudioDeviceStatus' +++'_SDL_PauseAudio'.'SDL2.dll'..'SDL_PauseAudio' +++'_SDL_PauseAudioDevice'.'SDL2.dll'..'SDL_PauseAudioDevice' +++'_SDL_LoadWAV_RW'.'SDL2.dll'..'SDL_LoadWAV_RW' +++'_SDL_FreeWAV'.'SDL2.dll'..'SDL_FreeWAV' +++'_SDL_BuildAudioCVT'.'SDL2.dll'..'SDL_BuildAudioCVT' +++'_SDL_ConvertAudio'.'SDL2.dll'..'SDL_ConvertAudio' +++'_SDL_MixAudio'.'SDL2.dll'..'SDL_MixAudio' +++'_SDL_MixAudioFormat'.'SDL2.dll'..'SDL_MixAudioFormat' +++'_SDL_LockAudio'.'SDL2.dll'..'SDL_LockAudio' +++'_SDL_LockAudioDevice'.'SDL2.dll'..'SDL_LockAudioDevice' +++'_SDL_UnlockAudio'.'SDL2.dll'..'SDL_UnlockAudio' +++'_SDL_UnlockAudioDevice'.'SDL2.dll'..'SDL_UnlockAudioDevice' +++'_SDL_CloseAudio'.'SDL2.dll'..'SDL_CloseAudio' +++'_SDL_CloseAudioDevice'.'SDL2.dll'..'SDL_CloseAudioDevice' +++'_SDL_SetClipboardText'.'SDL2.dll'..'SDL_SetClipboardText' +++'_SDL_GetClipboardText'.'SDL2.dll'..'SDL_GetClipboardText' +++'_SDL_HasClipboardText'.'SDL2.dll'..'SDL_HasClipboardText' +++'_SDL_GetCPUCount'.'SDL2.dll'..'SDL_GetCPUCount' +++'_SDL_GetCPUCacheLineSize'.'SDL2.dll'..'SDL_GetCPUCacheLineSize' +++'_SDL_HasRDTSC'.'SDL2.dll'..'SDL_HasRDTSC' +++'_SDL_HasAltiVec'.'SDL2.dll'..'SDL_HasAltiVec' +++'_SDL_HasMMX'.'SDL2.dll'..'SDL_HasMMX' +++'_SDL_Has3DNow'.'SDL2.dll'..'SDL_Has3DNow' +++'_SDL_HasSSE'.'SDL2.dll'..'SDL_HasSSE' +++'_SDL_HasSSE2'.'SDL2.dll'..'SDL_HasSSE2' +++'_SDL_HasSSE3'.'SDL2.dll'..'SDL_HasSSE3' +++'_SDL_HasSSE41'.'SDL2.dll'..'SDL_HasSSE41' +++'_SDL_HasSSE42'.'SDL2.dll'..'SDL_HasSSE42' +++'_SDL_GetSystemRAM'.'SDL2.dll'..'SDL_GetSystemRAM' +++'_SDL_GetError'.'SDL2.dll'..'SDL_GetError' +++'_SDL_ClearError'.'SDL2.dll'..'SDL_ClearError' +++'_SDL_Error'.'SDL2.dll'..'SDL_Error' +++'_SDL_PumpEvents'.'SDL2.dll'..'SDL_PumpEvents' +++'_SDL_PeepEvents'.'SDL2.dll'..'SDL_PeepEvents' +++'_SDL_HasEvent'.'SDL2.dll'..'SDL_HasEvent' +++'_SDL_HasEvents'.'SDL2.dll'..'SDL_HasEvents' +++'_SDL_FlushEvent'.'SDL2.dll'..'SDL_FlushEvent' +++'_SDL_FlushEvents'.'SDL2.dll'..'SDL_FlushEvents' +++'_SDL_PollEvent'.'SDL2.dll'..'SDL_PollEvent' +++'_SDL_WaitEvent'.'SDL2.dll'..'SDL_WaitEvent' +++'_SDL_WaitEventTimeout'.'SDL2.dll'..'SDL_WaitEventTimeout' +++'_SDL_PushEvent'.'SDL2.dll'..'SDL_PushEvent' +++'_SDL_SetEventFilter'.'SDL2.dll'..'SDL_SetEventFilter' +++'_SDL_GetEventFilter'.'SDL2.dll'..'SDL_GetEventFilter' +++'_SDL_AddEventWatch'.'SDL2.dll'..'SDL_AddEventWatch' +++'_SDL_DelEventWatch'.'SDL2.dll'..'SDL_DelEventWatch' +++'_SDL_FilterEvents'.'SDL2.dll'..'SDL_FilterEvents' +++'_SDL_EventState'.'SDL2.dll'..'SDL_EventState' +++'_SDL_RegisterEvents'.'SDL2.dll'..'SDL_RegisterEvents' +++'_SDL_GetBasePath'.'SDL2.dll'..'SDL_GetBasePath' +++'_SDL_GetPrefPath'.'SDL2.dll'..'SDL_GetPrefPath' +++'_SDL_GameControllerAddMapping'.'SDL2.dll'..'SDL_GameControllerAddMapping' +++'_SDL_GameControllerMappingForGUID'.'SDL2.dll'..'SDL_GameControllerMappingForGUID' +++'_SDL_GameControllerMapping'.'SDL2.dll'..'SDL_GameControllerMapping' +++'_SDL_IsGameController'.'SDL2.dll'..'SDL_IsGameController' +++'_SDL_GameControllerNameForIndex'.'SDL2.dll'..'SDL_GameControllerNameForIndex' +++'_SDL_GameControllerOpen'.'SDL2.dll'..'SDL_GameControllerOpen' +++'_SDL_GameControllerName'.'SDL2.dll'..'SDL_GameControllerName' +++'_SDL_GameControllerGetAttached'.'SDL2.dll'..'SDL_GameControllerGetAttached' +++'_SDL_GameControllerGetJoystick'.'SDL2.dll'..'SDL_GameControllerGetJoystick' +++'_SDL_GameControllerEventState'.'SDL2.dll'..'SDL_GameControllerEventState' +++'_SDL_GameControllerUpdate'.'SDL2.dll'..'SDL_GameControllerUpdate' +++'_SDL_GameControllerGetAxisFromString'.'SDL2.dll'..'SDL_GameControllerGetAxisFromString' +++'_SDL_GameControllerGetStringForAxis'.'SDL2.dll'..'SDL_GameControllerGetStringForAxis' +++'_SDL_GameControllerGetBindForAxis'.'SDL2.dll'..'SDL_GameControllerGetBindForAxis' +++'_SDL_GameControllerGetAxis'.'SDL2.dll'..'SDL_GameControllerGetAxis' +++'_SDL_GameControllerGetButtonFromString'.'SDL2.dll'..'SDL_GameControllerGetButtonFromString' +++'_SDL_GameControllerGetStringForButton'.'SDL2.dll'..'SDL_GameControllerGetStringForButton' +++'_SDL_GameControllerGetBindForButton'.'SDL2.dll'..'SDL_GameControllerGetBindForButton' +++'_SDL_GameControllerGetButton'.'SDL2.dll'..'SDL_GameControllerGetButton' +++'_SDL_GameControllerClose'.'SDL2.dll'..'SDL_GameControllerClose' +++'_SDL_RecordGesture'.'SDL2.dll'..'SDL_RecordGesture' +++'_SDL_SaveAllDollarTemplates'.'SDL2.dll'..'SDL_SaveAllDollarTemplates' +++'_SDL_SaveDollarTemplate'.'SDL2.dll'..'SDL_SaveDollarTemplate' +++'_SDL_LoadDollarTemplates'.'SDL2.dll'..'SDL_LoadDollarTemplates' +++'_SDL_NumHaptics'.'SDL2.dll'..'SDL_NumHaptics' +++'_SDL_HapticName'.'SDL2.dll'..'SDL_HapticName' +++'_SDL_HapticOpen'.'SDL2.dll'..'SDL_HapticOpen' +++'_SDL_HapticOpened'.'SDL2.dll'..'SDL_HapticOpened' +++'_SDL_HapticIndex'.'SDL2.dll'..'SDL_HapticIndex' +++'_SDL_MouseIsHaptic'.'SDL2.dll'..'SDL_MouseIsHaptic' +++'_SDL_HapticOpenFromMouse'.'SDL2.dll'..'SDL_HapticOpenFromMouse' +++'_SDL_JoystickIsHaptic'.'SDL2.dll'..'SDL_JoystickIsHaptic' +++'_SDL_HapticOpenFromJoystick'.'SDL2.dll'..'SDL_HapticOpenFromJoystick' +++'_SDL_HapticClose'.'SDL2.dll'..'SDL_HapticClose' +++'_SDL_HapticNumEffects'.'SDL2.dll'..'SDL_HapticNumEffects' +++'_SDL_HapticNumEffectsPlaying'.'SDL2.dll'..'SDL_HapticNumEffectsPlaying' +++'_SDL_HapticQuery'.'SDL2.dll'..'SDL_HapticQuery' +++'_SDL_HapticNumAxes'.'SDL2.dll'..'SDL_HapticNumAxes' +++'_SDL_HapticEffectSupported'.'SDL2.dll'..'SDL_HapticEffectSupported' +++'_SDL_HapticNewEffect'.'SDL2.dll'..'SDL_HapticNewEffect' +++'_SDL_HapticUpdateEffect'.'SDL2.dll'..'SDL_HapticUpdateEffect' +++'_SDL_HapticRunEffect'.'SDL2.dll'..'SDL_HapticRunEffect' +++'_SDL_HapticStopEffect'.'SDL2.dll'..'SDL_HapticStopEffect' +++'_SDL_HapticDestroyEffect'.'SDL2.dll'..'SDL_HapticDestroyEffect' +++'_SDL_HapticGetEffectStatus'.'SDL2.dll'..'SDL_HapticGetEffectStatus' +++'_SDL_HapticSetGain'.'SDL2.dll'..'SDL_HapticSetGain' +++'_SDL_HapticSetAutocenter'.'SDL2.dll'..'SDL_HapticSetAutocenter' +++'_SDL_HapticPause'.'SDL2.dll'..'SDL_HapticPause' +++'_SDL_HapticUnpause'.'SDL2.dll'..'SDL_HapticUnpause' +++'_SDL_HapticStopAll'.'SDL2.dll'..'SDL_HapticStopAll' +++'_SDL_HapticRumbleSupported'.'SDL2.dll'..'SDL_HapticRumbleSupported' +++'_SDL_HapticRumbleInit'.'SDL2.dll'..'SDL_HapticRumbleInit' +++'_SDL_HapticRumblePlay'.'SDL2.dll'..'SDL_HapticRumblePlay' +++'_SDL_HapticRumbleStop'.'SDL2.dll'..'SDL_HapticRumbleStop' +++'_SDL_SetHintWithPriority'.'SDL2.dll'..'SDL_SetHintWithPriority' +++'_SDL_SetHint'.'SDL2.dll'..'SDL_SetHint' +++'_SDL_GetHint'.'SDL2.dll'..'SDL_GetHint' +++'_SDL_AddHintCallback'.'SDL2.dll'..'SDL_AddHintCallback' +++'_SDL_DelHintCallback'.'SDL2.dll'..'SDL_DelHintCallback' +++'_SDL_ClearHints'.'SDL2.dll'..'SDL_ClearHints' +++'_SDL_NumJoysticks'.'SDL2.dll'..'SDL_NumJoysticks' +++'_SDL_JoystickNameForIndex'.'SDL2.dll'..'SDL_JoystickNameForIndex' +++'_SDL_JoystickOpen'.'SDL2.dll'..'SDL_JoystickOpen' +++'_SDL_JoystickName'.'SDL2.dll'..'SDL_JoystickName' +++'_SDL_JoystickGetDeviceGUID'.'SDL2.dll'..'SDL_JoystickGetDeviceGUID' +++'_SDL_JoystickGetGUID'.'SDL2.dll'..'SDL_JoystickGetGUID' +++'_SDL_JoystickGetGUIDString'.'SDL2.dll'..'SDL_JoystickGetGUIDString' +++'_SDL_JoystickGetGUIDFromString'.'SDL2.dll'..'SDL_JoystickGetGUIDFromString' +++'_SDL_JoystickGetAttached'.'SDL2.dll'..'SDL_JoystickGetAttached' +++'_SDL_JoystickInstanceID'.'SDL2.dll'..'SDL_JoystickInstanceID' +++'_SDL_JoystickNumAxes'.'SDL2.dll'..'SDL_JoystickNumAxes' +++'_SDL_JoystickNumBalls'.'SDL2.dll'..'SDL_JoystickNumBalls' +++'_SDL_JoystickNumHats'.'SDL2.dll'..'SDL_JoystickNumHats' +++'_SDL_JoystickNumButtons'.'SDL2.dll'..'SDL_JoystickNumButtons' +++'_SDL_JoystickUpdate'.'SDL2.dll'..'SDL_JoystickUpdate' +++'_SDL_JoystickEventState'.'SDL2.dll'..'SDL_JoystickEventState' +++'_SDL_JoystickGetAxis'.'SDL2.dll'..'SDL_JoystickGetAxis' +++'_SDL_JoystickGetHat'.'SDL2.dll'..'SDL_JoystickGetHat' +++'_SDL_JoystickGetBall'.'SDL2.dll'..'SDL_JoystickGetBall' +++'_SDL_JoystickGetButton'.'SDL2.dll'..'SDL_JoystickGetButton' +++'_SDL_JoystickClose'.'SDL2.dll'..'SDL_JoystickClose' +++'_SDL_GetKeyboardFocus'.'SDL2.dll'..'SDL_GetKeyboardFocus' +++'_SDL_GetKeyboardState'.'SDL2.dll'..'SDL_GetKeyboardState' +++'_SDL_GetModState'.'SDL2.dll'..'SDL_GetModState' +++'_SDL_SetModState'.'SDL2.dll'..'SDL_SetModState' +++'_SDL_GetKeyFromScancode'.'SDL2.dll'..'SDL_GetKeyFromScancode' +++'_SDL_GetScancodeFromKey'.'SDL2.dll'..'SDL_GetScancodeFromKey' +++'_SDL_GetScancodeName'.'SDL2.dll'..'SDL_GetScancodeName' +++'_SDL_GetScancodeFromName'.'SDL2.dll'..'SDL_GetScancodeFromName' +++'_SDL_GetKeyName'.'SDL2.dll'..'SDL_GetKeyName' +++'_SDL_GetKeyFromName'.'SDL2.dll'..'SDL_GetKeyFromName' +++'_SDL_StartTextInput'.'SDL2.dll'..'SDL_StartTextInput' +++'_SDL_IsTextInputActive'.'SDL2.dll'..'SDL_IsTextInputActive' +++'_SDL_StopTextInput'.'SDL2.dll'..'SDL_StopTextInput' +++'_SDL_SetTextInputRect'.'SDL2.dll'..'SDL_SetTextInputRect' +++'_SDL_HasScreenKeyboardSupport'.'SDL2.dll'..'SDL_HasScreenKeyboardSupport' +++'_SDL_IsScreenKeyboardShown'.'SDL2.dll'..'SDL_IsScreenKeyboardShown' +++'_SDL_LoadObject'.'SDL2.dll'..'SDL_LoadObject' +++'_SDL_LoadFunction'.'SDL2.dll'..'SDL_LoadFunction' +++'_SDL_UnloadObject'.'SDL2.dll'..'SDL_UnloadObject' +++'_SDL_LogSetAllPriority'.'SDL2.dll'..'SDL_LogSetAllPriority' +++'_SDL_LogSetPriority'.'SDL2.dll'..'SDL_LogSetPriority' +++'_SDL_LogGetPriority'.'SDL2.dll'..'SDL_LogGetPriority' +++'_SDL_LogResetPriorities'.'SDL2.dll'..'SDL_LogResetPriorities' +++'_SDL_LogMessageV'.'SDL2.dll'..'SDL_LogMessageV' +++'_SDL_LogGetOutputFunction'.'SDL2.dll'..'SDL_LogGetOutputFunction' +++'_SDL_LogSetOutputFunction'.'SDL2.dll'..'SDL_LogSetOutputFunction' +++'_SDL_SetMainReady'.'SDL2.dll'..'SDL_SetMainReady' +++'_SDL_ShowMessageBox'.'SDL2.dll'..'SDL_ShowMessageBox' +++'_SDL_ShowSimpleMessageBox'.'SDL2.dll'..'SDL_ShowSimpleMessageBox' +++'_SDL_GetMouseFocus'.'SDL2.dll'..'SDL_GetMouseFocus' +++'_SDL_GetMouseState'.'SDL2.dll'..'SDL_GetMouseState' +++'_SDL_GetRelativeMouseState'.'SDL2.dll'..'SDL_GetRelativeMouseState' +++'_SDL_WarpMouseInWindow'.'SDL2.dll'..'SDL_WarpMouseInWindow' +++'_SDL_SetRelativeMouseMode'.'SDL2.dll'..'SDL_SetRelativeMouseMode' +++'_SDL_GetRelativeMouseMode'.'SDL2.dll'..'SDL_GetRelativeMouseMode' +++'_SDL_CreateCursor'.'SDL2.dll'..'SDL_CreateCursor' +++'_SDL_CreateColorCursor'.'SDL2.dll'..'SDL_CreateColorCursor' +++'_SDL_CreateSystemCursor'.'SDL2.dll'..'SDL_CreateSystemCursor' +++'_SDL_SetCursor'.'SDL2.dll'..'SDL_SetCursor' +++'_SDL_GetCursor'.'SDL2.dll'..'SDL_GetCursor' +++'_SDL_GetDefaultCursor'.'SDL2.dll'..'SDL_GetDefaultCursor' +++'_SDL_FreeCursor'.'SDL2.dll'..'SDL_FreeCursor' +++'_SDL_ShowCursor'.'SDL2.dll'..'SDL_ShowCursor' +++'_SDL_CreateMutex'.'SDL2.dll'..'SDL_CreateMutex' +++'_SDL_LockMutex'.'SDL2.dll'..'SDL_LockMutex' +++'_SDL_TryLockMutex'.'SDL2.dll'..'SDL_TryLockMutex' +++'_SDL_UnlockMutex'.'SDL2.dll'..'SDL_UnlockMutex' +++'_SDL_DestroyMutex'.'SDL2.dll'..'SDL_DestroyMutex' +++'_SDL_CreateSemaphore'.'SDL2.dll'..'SDL_CreateSemaphore' +++'_SDL_DestroySemaphore'.'SDL2.dll'..'SDL_DestroySemaphore' +++'_SDL_SemWait'.'SDL2.dll'..'SDL_SemWait' +++'_SDL_SemTryWait'.'SDL2.dll'..'SDL_SemTryWait' +++'_SDL_SemWaitTimeout'.'SDL2.dll'..'SDL_SemWaitTimeout' +++'_SDL_SemPost'.'SDL2.dll'..'SDL_SemPost' +++'_SDL_SemValue'.'SDL2.dll'..'SDL_SemValue' +++'_SDL_CreateCond'.'SDL2.dll'..'SDL_CreateCond' +++'_SDL_DestroyCond'.'SDL2.dll'..'SDL_DestroyCond' +++'_SDL_CondSignal'.'SDL2.dll'..'SDL_CondSignal' +++'_SDL_CondBroadcast'.'SDL2.dll'..'SDL_CondBroadcast' +++'_SDL_CondWait'.'SDL2.dll'..'SDL_CondWait' +++'_SDL_CondWaitTimeout'.'SDL2.dll'..'SDL_CondWaitTimeout' +++'_SDL_GetPixelFormatName'.'SDL2.dll'..'SDL_GetPixelFormatName' +++'_SDL_PixelFormatEnumToMasks'.'SDL2.dll'..'SDL_PixelFormatEnumToMasks' +++'_SDL_MasksToPixelFormatEnum'.'SDL2.dll'..'SDL_MasksToPixelFormatEnum' +++'_SDL_AllocFormat'.'SDL2.dll'..'SDL_AllocFormat' +++'_SDL_FreeFormat'.'SDL2.dll'..'SDL_FreeFormat' +++'_SDL_AllocPalette'.'SDL2.dll'..'SDL_AllocPalette' +++'_SDL_SetPixelFormatPalette'.'SDL2.dll'..'SDL_SetPixelFormatPalette' +++'_SDL_SetPaletteColors'.'SDL2.dll'..'SDL_SetPaletteColors' +++'_SDL_FreePalette'.'SDL2.dll'..'SDL_FreePalette' +++'_SDL_MapRGB'.'SDL2.dll'..'SDL_MapRGB' +++'_SDL_MapRGBA'.'SDL2.dll'..'SDL_MapRGBA' +++'_SDL_GetRGB'.'SDL2.dll'..'SDL_GetRGB' +++'_SDL_GetRGBA'.'SDL2.dll'..'SDL_GetRGBA' +++'_SDL_CalculateGammaRamp'.'SDL2.dll'..'SDL_CalculateGammaRamp' +++'_SDL_GetPlatform'.'SDL2.dll'..'SDL_GetPlatform' +++'_SDL_GetPowerInfo'.'SDL2.dll'..'SDL_GetPowerInfo' +++'_SDL_HasIntersection'.'SDL2.dll'..'SDL_HasIntersection' +++'_SDL_IntersectRect'.'SDL2.dll'..'SDL_IntersectRect' +++'_SDL_UnionRect'.'SDL2.dll'..'SDL_UnionRect' +++'_SDL_EnclosePoints'.'SDL2.dll'..'SDL_EnclosePoints' +++'_SDL_IntersectRectAndLine'.'SDL2.dll'..'SDL_IntersectRectAndLine' +++'_SDL_GetNumRenderDrivers'.'SDL2.dll'..'SDL_GetNumRenderDrivers' +++'_SDL_GetRenderDriverInfo'.'SDL2.dll'..'SDL_GetRenderDriverInfo' +++'_SDL_CreateWindowAndRenderer'.'SDL2.dll'..'SDL_CreateWindowAndRenderer' +++'_SDL_CreateRenderer'.'SDL2.dll'..'SDL_CreateRenderer' +++'_SDL_CreateSoftwareRenderer'.'SDL2.dll'..'SDL_CreateSoftwareRenderer' +++'_SDL_GetRenderer'.'SDL2.dll'..'SDL_GetRenderer' +++'_SDL_GetRendererInfo'.'SDL2.dll'..'SDL_GetRendererInfo' +++'_SDL_GetRendererOutputSize'.'SDL2.dll'..'SDL_GetRendererOutputSize' +++'_SDL_CreateTexture'.'SDL2.dll'..'SDL_CreateTexture' +++'_SDL_CreateTextureFromSurface'.'SDL2.dll'..'SDL_CreateTextureFromSurface' +++'_SDL_QueryTexture'.'SDL2.dll'..'SDL_QueryTexture' +++'_SDL_SetTextureColorMod'.'SDL2.dll'..'SDL_SetTextureColorMod' +++'_SDL_GetTextureColorMod'.'SDL2.dll'..'SDL_GetTextureColorMod' +++'_SDL_SetTextureAlphaMod'.'SDL2.dll'..'SDL_SetTextureAlphaMod' +++'_SDL_GetTextureAlphaMod'.'SDL2.dll'..'SDL_GetTextureAlphaMod' +++'_SDL_SetTextureBlendMode'.'SDL2.dll'..'SDL_SetTextureBlendMode' +++'_SDL_GetTextureBlendMode'.'SDL2.dll'..'SDL_GetTextureBlendMode' +++'_SDL_UpdateTexture'.'SDL2.dll'..'SDL_UpdateTexture' +++'_SDL_UpdateYUVTexture'.'SDL2.dll'..'SDL_UpdateYUVTexture' +++'_SDL_LockTexture'.'SDL2.dll'..'SDL_LockTexture' +++'_SDL_UnlockTexture'.'SDL2.dll'..'SDL_UnlockTexture' +++'_SDL_RenderTargetSupported'.'SDL2.dll'..'SDL_RenderTargetSupported' +++'_SDL_SetRenderTarget'.'SDL2.dll'..'SDL_SetRenderTarget' +++'_SDL_GetRenderTarget'.'SDL2.dll'..'SDL_GetRenderTarget' +++'_SDL_RenderSetLogicalSize'.'SDL2.dll'..'SDL_RenderSetLogicalSize' +++'_SDL_RenderGetLogicalSize'.'SDL2.dll'..'SDL_RenderGetLogicalSize' +++'_SDL_RenderSetViewport'.'SDL2.dll'..'SDL_RenderSetViewport' +++'_SDL_RenderGetViewport'.'SDL2.dll'..'SDL_RenderGetViewport' +++'_SDL_RenderSetClipRect'.'SDL2.dll'..'SDL_RenderSetClipRect' +++'_SDL_RenderGetClipRect'.'SDL2.dll'..'SDL_RenderGetClipRect' +++'_SDL_RenderSetScale'.'SDL2.dll'..'SDL_RenderSetScale' +++'_SDL_RenderGetScale'.'SDL2.dll'..'SDL_RenderGetScale' +++'_SDL_SetRenderDrawColor'.'SDL2.dll'..'SDL_SetRenderDrawColor' +++'_SDL_GetRenderDrawColor'.'SDL2.dll'..'SDL_GetRenderDrawColor' +++'_SDL_SetRenderDrawBlendMode'.'SDL2.dll'..'SDL_SetRenderDrawBlendMode' +++'_SDL_GetRenderDrawBlendMode'.'SDL2.dll'..'SDL_GetRenderDrawBlendMode' +++'_SDL_RenderClear'.'SDL2.dll'..'SDL_RenderClear' +++'_SDL_RenderDrawPoint'.'SDL2.dll'..'SDL_RenderDrawPoint' +++'_SDL_RenderDrawPoints'.'SDL2.dll'..'SDL_RenderDrawPoints' +++'_SDL_RenderDrawLine'.'SDL2.dll'..'SDL_RenderDrawLine' +++'_SDL_RenderDrawLines'.'SDL2.dll'..'SDL_RenderDrawLines' +++'_SDL_RenderDrawRect'.'SDL2.dll'..'SDL_RenderDrawRect' +++'_SDL_RenderDrawRects'.'SDL2.dll'..'SDL_RenderDrawRects' +++'_SDL_RenderFillRect'.'SDL2.dll'..'SDL_RenderFillRect' +++'_SDL_RenderFillRects'.'SDL2.dll'..'SDL_RenderFillRects' +++'_SDL_RenderCopy'.'SDL2.dll'..'SDL_RenderCopy' +++'_SDL_RenderCopyEx'.'SDL2.dll'..'SDL_RenderCopyEx' +++'_SDL_RenderReadPixels'.'SDL2.dll'..'SDL_RenderReadPixels' +++'_SDL_RenderPresent'.'SDL2.dll'..'SDL_RenderPresent' +++'_SDL_DestroyTexture'.'SDL2.dll'..'SDL_DestroyTexture' +++'_SDL_DestroyRenderer'.'SDL2.dll'..'SDL_DestroyRenderer' +++'_SDL_GL_BindTexture'.'SDL2.dll'..'SDL_GL_BindTexture' +++'_SDL_GL_UnbindTexture'.'SDL2.dll'..'SDL_GL_UnbindTexture' +++'_SDL_RWFromFile'.'SDL2.dll'..'SDL_RWFromFile' +++'_SDL_RWFromMem'.'SDL2.dll'..'SDL_RWFromMem' +++'_SDL_RWFromConstMem'.'SDL2.dll'..'SDL_RWFromConstMem' +++'_SDL_AllocRW'.'SDL2.dll'..'SDL_AllocRW' +++'_SDL_FreeRW'.'SDL2.dll'..'SDL_FreeRW' +++'_SDL_ReadU8'.'SDL2.dll'..'SDL_ReadU8' +++'_SDL_ReadLE16'.'SDL2.dll'..'SDL_ReadLE16' +++'_SDL_ReadBE16'.'SDL2.dll'..'SDL_ReadBE16' +++'_SDL_ReadLE32'.'SDL2.dll'..'SDL_ReadLE32' +++'_SDL_ReadBE32'.'SDL2.dll'..'SDL_ReadBE32' +++'_SDL_ReadLE64'.'SDL2.dll'..'SDL_ReadLE64' +++'_SDL_ReadBE64'.'SDL2.dll'..'SDL_ReadBE64' +++'_SDL_WriteU8'.'SDL2.dll'..'SDL_WriteU8' +++'_SDL_WriteLE16'.'SDL2.dll'..'SDL_WriteLE16' +++'_SDL_WriteBE16'.'SDL2.dll'..'SDL_WriteBE16' +++'_SDL_WriteLE32'.'SDL2.dll'..'SDL_WriteLE32' +++'_SDL_WriteBE32'.'SDL2.dll'..'SDL_WriteBE32' +++'_SDL_WriteLE64'.'SDL2.dll'..'SDL_WriteLE64' +++'_SDL_WriteBE64'.'SDL2.dll'..'SDL_WriteBE64' +++'_SDL_CreateShapedWindow'.'SDL2.dll'..'SDL_CreateShapedWindow' +++'_SDL_IsShapedWindow'.'SDL2.dll'..'SDL_IsShapedWindow' +++'_SDL_SetWindowShape'.'SDL2.dll'..'SDL_SetWindowShape' +++'_SDL_GetShapedWindowMode'.'SDL2.dll'..'SDL_GetShapedWindowMode' +++'_SDL_malloc'.'SDL2.dll'..'SDL_malloc' +++'_SDL_calloc'.'SDL2.dll'..'SDL_calloc' +++'_SDL_realloc'.'SDL2.dll'..'SDL_realloc' +++'_SDL_free'.'SDL2.dll'..'SDL_free' +++'_SDL_getenv'.'SDL2.dll'..'SDL_getenv' +++'_SDL_setenv'.'SDL2.dll'..'SDL_setenv' +++'_SDL_qsort'.'SDL2.dll'..'SDL_qsort' +++'_SDL_abs'.'SDL2.dll'..'SDL_abs' +++'_SDL_isdigit'.'SDL2.dll'..'SDL_isdigit' +++'_SDL_isspace'.'SDL2.dll'..'SDL_isspace' +++'_SDL_toupper'.'SDL2.dll'..'SDL_toupper' +++'_SDL_tolower'.'SDL2.dll'..'SDL_tolower' +++'_SDL_memset'.'SDL2.dll'..'SDL_memset' +++'_SDL_memcpy'.'SDL2.dll'..'SDL_memcpy' +++'_SDL_memmove'.'SDL2.dll'..'SDL_memmove' +++'_SDL_memcmp'.'SDL2.dll'..'SDL_memcmp' +++'_SDL_wcslen'.'SDL2.dll'..'SDL_wcslen' +++'_SDL_wcslcpy'.'SDL2.dll'..'SDL_wcslcpy' +++'_SDL_wcslcat'.'SDL2.dll'..'SDL_wcslcat' +++'_SDL_strlen'.'SDL2.dll'..'SDL_strlen' +++'_SDL_strlcpy'.'SDL2.dll'..'SDL_strlcpy' +++'_SDL_utf8strlcpy'.'SDL2.dll'..'SDL_utf8strlcpy' +++'_SDL_strlcat'.'SDL2.dll'..'SDL_strlcat' +++'_SDL_strdup'.'SDL2.dll'..'SDL_strdup' +++'_SDL_strrev'.'SDL2.dll'..'SDL_strrev' +++'_SDL_strupr'.'SDL2.dll'..'SDL_strupr' +++'_SDL_strlwr'.'SDL2.dll'..'SDL_strlwr' +++'_SDL_strchr'.'SDL2.dll'..'SDL_strchr' +++'_SDL_strrchr'.'SDL2.dll'..'SDL_strrchr' +++'_SDL_strstr'.'SDL2.dll'..'SDL_strstr' +++'_SDL_itoa'.'SDL2.dll'..'SDL_itoa' +++'_SDL_uitoa'.'SDL2.dll'..'SDL_uitoa' +++'_SDL_ltoa'.'SDL2.dll'..'SDL_ltoa' +++'_SDL_ultoa'.'SDL2.dll'..'SDL_ultoa' +++'_SDL_lltoa'.'SDL2.dll'..'SDL_lltoa' +++'_SDL_ulltoa'.'SDL2.dll'..'SDL_ulltoa' +++'_SDL_atoi'.'SDL2.dll'..'SDL_atoi' +++'_SDL_atof'.'SDL2.dll'..'SDL_atof' +++'_SDL_strtol'.'SDL2.dll'..'SDL_strtol' +++'_SDL_strtoul'.'SDL2.dll'..'SDL_strtoul' +++'_SDL_strtoll'.'SDL2.dll'..'SDL_strtoll' +++'_SDL_strtoull'.'SDL2.dll'..'SDL_strtoull' +++'_SDL_strtod'.'SDL2.dll'..'SDL_strtod' +++'_SDL_strcmp'.'SDL2.dll'..'SDL_strcmp' +++'_SDL_strncmp'.'SDL2.dll'..'SDL_strncmp' +++'_SDL_strcasecmp'.'SDL2.dll'..'SDL_strcasecmp' +++'_SDL_strncasecmp'.'SDL2.dll'..'SDL_strncasecmp' +++'_SDL_vsnprintf'.'SDL2.dll'..'SDL_vsnprintf' +++'_SDL_acos'.'SDL2.dll'..'SDL_acos' +++'_SDL_asin'.'SDL2.dll'..'SDL_asin' +++'_SDL_atan'.'SDL2.dll'..'SDL_atan' +++'_SDL_atan2'.'SDL2.dll'..'SDL_atan2' +++'_SDL_ceil'.'SDL2.dll'..'SDL_ceil' +++'_SDL_copysign'.'SDL2.dll'..'SDL_copysign' +++'_SDL_cos'.'SDL2.dll'..'SDL_cos' +++'_SDL_cosf'.'SDL2.dll'..'SDL_cosf' +++'_SDL_fabs'.'SDL2.dll'..'SDL_fabs' +++'_SDL_floor'.'SDL2.dll'..'SDL_floor' +++'_SDL_log'.'SDL2.dll'..'SDL_log' +++'_SDL_pow'.'SDL2.dll'..'SDL_pow' +++'_SDL_scalbn'.'SDL2.dll'..'SDL_scalbn' +++'_SDL_sin'.'SDL2.dll'..'SDL_sin' +++'_SDL_sinf'.'SDL2.dll'..'SDL_sinf' +++'_SDL_sqrt'.'SDL2.dll'..'SDL_sqrt' +++'_SDL_iconv_open'.'SDL2.dll'..'SDL_iconv_open' +++'_SDL_iconv_close'.'SDL2.dll'..'SDL_iconv_close' +++'_SDL_iconv'.'SDL2.dll'..'SDL_iconv' +++'_SDL_iconv_string'.'SDL2.dll'..'SDL_iconv_string' +++'_SDL_CreateRGBSurface'.'SDL2.dll'..'SDL_CreateRGBSurface' +++'_SDL_CreateRGBSurfaceFrom'.'SDL2.dll'..'SDL_CreateRGBSurfaceFrom' +++'_SDL_FreeSurface'.'SDL2.dll'..'SDL_FreeSurface' +++'_SDL_SetSurfacePalette'.'SDL2.dll'..'SDL_SetSurfacePalette' +++'_SDL_LockSurface'.'SDL2.dll'..'SDL_LockSurface' +++'_SDL_UnlockSurface'.'SDL2.dll'..'SDL_UnlockSurface' +++'_SDL_LoadBMP_RW'.'SDL2.dll'..'SDL_LoadBMP_RW' +++'_SDL_SaveBMP_RW'.'SDL2.dll'..'SDL_SaveBMP_RW' +++'_SDL_SetSurfaceRLE'.'SDL2.dll'..'SDL_SetSurfaceRLE' +++'_SDL_SetColorKey'.'SDL2.dll'..'SDL_SetColorKey' +++'_SDL_GetColorKey'.'SDL2.dll'..'SDL_GetColorKey' +++'_SDL_SetSurfaceColorMod'.'SDL2.dll'..'SDL_SetSurfaceColorMod' +++'_SDL_GetSurfaceColorMod'.'SDL2.dll'..'SDL_GetSurfaceColorMod' +++'_SDL_SetSurfaceAlphaMod'.'SDL2.dll'..'SDL_SetSurfaceAlphaMod' +++'_SDL_GetSurfaceAlphaMod'.'SDL2.dll'..'SDL_GetSurfaceAlphaMod' +++'_SDL_SetSurfaceBlendMode'.'SDL2.dll'..'SDL_SetSurfaceBlendMode' +++'_SDL_GetSurfaceBlendMode'.'SDL2.dll'..'SDL_GetSurfaceBlendMode' +++'_SDL_SetClipRect'.'SDL2.dll'..'SDL_SetClipRect' +++'_SDL_GetClipRect'.'SDL2.dll'..'SDL_GetClipRect' +++'_SDL_ConvertSurface'.'SDL2.dll'..'SDL_ConvertSurface' +++'_SDL_ConvertSurfaceFormat'.'SDL2.dll'..'SDL_ConvertSurfaceFormat' +++'_SDL_ConvertPixels'.'SDL2.dll'..'SDL_ConvertPixels' +++'_SDL_FillRect'.'SDL2.dll'..'SDL_FillRect' +++'_SDL_FillRects'.'SDL2.dll'..'SDL_FillRects' +++'_SDL_UpperBlit'.'SDL2.dll'..'SDL_UpperBlit' +++'_SDL_LowerBlit'.'SDL2.dll'..'SDL_LowerBlit' +++'_SDL_SoftStretch'.'SDL2.dll'..'SDL_SoftStretch' +++'_SDL_UpperBlitScaled'.'SDL2.dll'..'SDL_UpperBlitScaled' +++'_SDL_LowerBlitScaled'.'SDL2.dll'..'SDL_LowerBlitScaled' +++'_SDL_GetWindowWMInfo'.'SDL2.dll'..'SDL_GetWindowWMInfo' +++'_SDL_GetThreadName'.'SDL2.dll'..'SDL_GetThreadName' +++'_SDL_ThreadID'.'SDL2.dll'..'SDL_ThreadID' +++'_SDL_GetThreadID'.'SDL2.dll'..'SDL_GetThreadID' +++'_SDL_SetThreadPriority'.'SDL2.dll'..'SDL_SetThreadPriority' +++'_SDL_WaitThread'.'SDL2.dll'..'SDL_WaitThread' +++'_SDL_DetachThread'.'SDL2.dll'..'SDL_DetachThread' +++'_SDL_TLSCreate'.'SDL2.dll'..'SDL_TLSCreate' +++'_SDL_TLSGet'.'SDL2.dll'..'SDL_TLSGet' +++'_SDL_TLSSet'.'SDL2.dll'..'SDL_TLSSet' +++'_SDL_GetTicks'.'SDL2.dll'..'SDL_GetTicks' +++'_SDL_GetPerformanceCounter'.'SDL2.dll'..'SDL_GetPerformanceCounter' +++'_SDL_GetPerformanceFrequency'.'SDL2.dll'..'SDL_GetPerformanceFrequency' +++'_SDL_Delay'.'SDL2.dll'..'SDL_Delay' +++'_SDL_AddTimer'.'SDL2.dll'..'SDL_AddTimer' +++'_SDL_RemoveTimer'.'SDL2.dll'..'SDL_RemoveTimer' +++'_SDL_GetNumTouchDevices'.'SDL2.dll'..'SDL_GetNumTouchDevices' +++'_SDL_GetTouchDevice'.'SDL2.dll'..'SDL_GetTouchDevice' +++'_SDL_GetNumTouchFingers'.'SDL2.dll'..'SDL_GetNumTouchFingers' +++'_SDL_GetTouchFinger'.'SDL2.dll'..'SDL_GetTouchFinger' +++'_SDL_GetVersion'.'SDL2.dll'..'SDL_GetVersion' +++'_SDL_GetRevision'.'SDL2.dll'..'SDL_GetRevision' +++'_SDL_GetRevisionNumber'.'SDL2.dll'..'SDL_GetRevisionNumber' +++'_SDL_GetNumVideoDrivers'.'SDL2.dll'..'SDL_GetNumVideoDrivers' +++'_SDL_GetVideoDriver'.'SDL2.dll'..'SDL_GetVideoDriver' +++'_SDL_VideoInit'.'SDL2.dll'..'SDL_VideoInit' +++'_SDL_VideoQuit'.'SDL2.dll'..'SDL_VideoQuit' +++'_SDL_GetCurrentVideoDriver'.'SDL2.dll'..'SDL_GetCurrentVideoDriver' +++'_SDL_GetNumVideoDisplays'.'SDL2.dll'..'SDL_GetNumVideoDisplays' +++'_SDL_GetDisplayName'.'SDL2.dll'..'SDL_GetDisplayName' +++'_SDL_GetDisplayBounds'.'SDL2.dll'..'SDL_GetDisplayBounds' +++'_SDL_GetDisplayDPI'.'SDL2.dll'..'SDL_GetDisplayDPI' +++'_SDL_GetNumDisplayModes'.'SDL2.dll'..'SDL_GetNumDisplayModes' +++'_SDL_GetDisplayMode'.'SDL2.dll'..'SDL_GetDisplayMode' +++'_SDL_GetDesktopDisplayMode'.'SDL2.dll'..'SDL_GetDesktopDisplayMode' +++'_SDL_GetCurrentDisplayMode'.'SDL2.dll'..'SDL_GetCurrentDisplayMode' +++'_SDL_GetClosestDisplayMode'.'SDL2.dll'..'SDL_GetClosestDisplayMode' +++'_SDL_GetWindowDisplayIndex'.'SDL2.dll'..'SDL_GetWindowDisplayIndex' +++'_SDL_SetWindowDisplayMode'.'SDL2.dll'..'SDL_SetWindowDisplayMode' +++'_SDL_GetWindowDisplayMode'.'SDL2.dll'..'SDL_GetWindowDisplayMode' +++'_SDL_GetWindowPixelFormat'.'SDL2.dll'..'SDL_GetWindowPixelFormat' +++'_SDL_CreateWindow'.'SDL2.dll'..'SDL_CreateWindow' +++'_SDL_CreateWindowFrom'.'SDL2.dll'..'SDL_CreateWindowFrom' +++'_SDL_GetWindowID'.'SDL2.dll'..'SDL_GetWindowID' +++'_SDL_GetWindowFromID'.'SDL2.dll'..'SDL_GetWindowFromID' +++'_SDL_GetWindowFlags'.'SDL2.dll'..'SDL_GetWindowFlags' +++'_SDL_SetWindowTitle'.'SDL2.dll'..'SDL_SetWindowTitle' +++'_SDL_GetWindowTitle'.'SDL2.dll'..'SDL_GetWindowTitle' +++'_SDL_SetWindowIcon'.'SDL2.dll'..'SDL_SetWindowIcon' +++'_SDL_SetWindowData'.'SDL2.dll'..'SDL_SetWindowData' +++'_SDL_GetWindowData'.'SDL2.dll'..'SDL_GetWindowData' +++'_SDL_SetWindowPosition'.'SDL2.dll'..'SDL_SetWindowPosition' +++'_SDL_GetWindowPosition'.'SDL2.dll'..'SDL_GetWindowPosition' +++'_SDL_SetWindowSize'.'SDL2.dll'..'SDL_SetWindowSize' +++'_SDL_GetWindowSize'.'SDL2.dll'..'SDL_GetWindowSize' +++'_SDL_SetWindowMinimumSize'.'SDL2.dll'..'SDL_SetWindowMinimumSize' +++'_SDL_GetWindowMinimumSize'.'SDL2.dll'..'SDL_GetWindowMinimumSize' +++'_SDL_SetWindowMaximumSize'.'SDL2.dll'..'SDL_SetWindowMaximumSize' +++'_SDL_GetWindowMaximumSize'.'SDL2.dll'..'SDL_GetWindowMaximumSize' +++'_SDL_SetWindowBordered'.'SDL2.dll'..'SDL_SetWindowBordered' +++'_SDL_ShowWindow'.'SDL2.dll'..'SDL_ShowWindow' +++'_SDL_HideWindow'.'SDL2.dll'..'SDL_HideWindow' +++'_SDL_RaiseWindow'.'SDL2.dll'..'SDL_RaiseWindow' +++'_SDL_MaximizeWindow'.'SDL2.dll'..'SDL_MaximizeWindow' +++'_SDL_MinimizeWindow'.'SDL2.dll'..'SDL_MinimizeWindow' +++'_SDL_RestoreWindow'.'SDL2.dll'..'SDL_RestoreWindow' +++'_SDL_SetWindowFullscreen'.'SDL2.dll'..'SDL_SetWindowFullscreen' +++'_SDL_GetWindowSurface'.'SDL2.dll'..'SDL_GetWindowSurface' +++'_SDL_UpdateWindowSurface'.'SDL2.dll'..'SDL_UpdateWindowSurface' +++'_SDL_UpdateWindowSurfaceRects'.'SDL2.dll'..'SDL_UpdateWindowSurfaceRects' +++'_SDL_SetWindowGrab'.'SDL2.dll'..'SDL_SetWindowGrab' +++'_SDL_GetWindowGrab'.'SDL2.dll'..'SDL_GetWindowGrab' +++'_SDL_SetWindowBrightness'.'SDL2.dll'..'SDL_SetWindowBrightness' +++'_SDL_GetWindowBrightness'.'SDL2.dll'..'SDL_GetWindowBrightness' +++'_SDL_SetWindowGammaRamp'.'SDL2.dll'..'SDL_SetWindowGammaRamp' +++'_SDL_GetWindowGammaRamp'.'SDL2.dll'..'SDL_GetWindowGammaRamp' +++'_SDL_DestroyWindow'.'SDL2.dll'..'SDL_DestroyWindow' +++'_SDL_IsScreenSaverEnabled'.'SDL2.dll'..'SDL_IsScreenSaverEnabled' +++'_SDL_EnableScreenSaver'.'SDL2.dll'..'SDL_EnableScreenSaver' +++'_SDL_DisableScreenSaver'.'SDL2.dll'..'SDL_DisableScreenSaver' +++'_SDL_GL_LoadLibrary'.'SDL2.dll'..'SDL_GL_LoadLibrary' +++'_SDL_GL_GetProcAddress'.'SDL2.dll'..'SDL_GL_GetProcAddress' +++'_SDL_GL_UnloadLibrary'.'SDL2.dll'..'SDL_GL_UnloadLibrary' +++'_SDL_GL_ExtensionSupported'.'SDL2.dll'..'SDL_GL_ExtensionSupported' +++'_SDL_GL_SetAttribute'.'SDL2.dll'..'SDL_GL_SetAttribute' +++'_SDL_GL_GetAttribute'.'SDL2.dll'..'SDL_GL_GetAttribute' +++'_SDL_GL_CreateContext'.'SDL2.dll'..'SDL_GL_CreateContext' +++'_SDL_GL_MakeCurrent'.'SDL2.dll'..'SDL_GL_MakeCurrent' +++'_SDL_GL_GetCurrentWindow'.'SDL2.dll'..'SDL_GL_GetCurrentWindow' +++'_SDL_GL_GetCurrentContext'.'SDL2.dll'..'SDL_GL_GetCurrentContext' +++'_SDL_GL_GetDrawableSize'.'SDL2.dll'..'SDL_GL_GetDrawableSize' +++'_SDL_GL_SetSwapInterval'.'SDL2.dll'..'SDL_GL_SetSwapInterval' +++'_SDL_GL_GetSwapInterval'.'SDL2.dll'..'SDL_GL_GetSwapInterval' +++'_SDL_GL_SwapWindow'.'SDL2.dll'..'SDL_GL_SwapWindow' +++'_SDL_GL_DeleteContext'.'SDL2.dll'..'SDL_GL_DeleteContext' +++'_SDL_vsscanf'.'SDL2.dll'..'SDL_vsscanf' +++'_SDL_GameControllerAddMappingsFromRW'.'SDL2.dll'..'SDL_GameControllerAddMappingsFromRW' +++'_SDL_GL_ResetAttributes'.'SDL2.dll'..'SDL_GL_ResetAttributes' +++'_SDL_HasAVX'.'SDL2.dll'..'SDL_HasAVX' +++'_SDL_GetDefaultAssertionHandler'.'SDL2.dll'..'SDL_GetDefaultAssertionHandler' +++'_SDL_GetAssertionHandler'.'SDL2.dll'..'SDL_GetAssertionHandler' +++'_SDL_DXGIGetOutputInfo'.'SDL2.dll'..'SDL_DXGIGetOutputInfo' +++'_SDL_RenderIsClipEnabled'.'SDL2.dll'..'SDL_RenderIsClipEnabled' +++'_SDL_WarpMouseGlobal'.'SDL2.dll'..'SDL_WarpMouseGlobal' +++'_SDL_sqrtf'.'SDL2.dll'..'SDL_sqrtf' +++'_SDL_tan'.'SDL2.dll'..'SDL_tan' +++'_SDL_tanf'.'SDL2.dll'..'SDL_tanf' +++'_SDL_CaptureMouse'.'SDL2.dll'..'SDL_CaptureMouse' +++'_SDL_SetWindowHitTest'.'SDL2.dll'..'SDL_SetWindowHitTest' +++'_SDL_GetGlobalMouseState'.'SDL2.dll'..'SDL_GetGlobalMouseState' +++'_SDL_HasAVX2'.'SDL2.dll'..'SDL_HasAVX2' +++'_SDL_QueueAudio'.'SDL2.dll'..'SDL_QueueAudio' +++'_SDL_GetQueuedAudioSize'.'SDL2.dll'..'SDL_GetQueuedAudioSize' +++'_SDL_ClearQueuedAudio'.'SDL2.dll'..'SDL_ClearQueuedAudio' +++'_SDL_GetGrabbedWindow'.'SDL2.dll'..'SDL_GetGrabbedWindow' +++'_SDL_SetWindowsMessageHook'.'SDL2.dll'..'SDL_SetWindowsMessageHook' +++'_SDL_JoystickCurrentPowerLevel'.'SDL2.dll'..'SDL_JoystickCurrentPowerLevel' +++'_SDL_GameControllerFromInstanceID'.'SDL2.dll'..'SDL_GameControllerFromInstanceID' +++'_SDL_JoystickFromInstanceID'.'SDL2.dll'..'SDL_JoystickFromInstanceID' +++'_SDL_GetDisplayUsableBounds'.'SDL2.dll'..'SDL_GetDisplayUsableBounds' +++'_SDL_GetWindowBordersSize'.'SDL2.dll'..'SDL_GetWindowBordersSize' +++'_SDL_SetWindowOpacity'.'SDL2.dll'..'SDL_SetWindowOpacity' +++'_SDL_GetWindowOpacity'.'SDL2.dll'..'SDL_GetWindowOpacity' +++'_SDL_SetWindowInputFocus'.'SDL2.dll'..'SDL_SetWindowInputFocus' +++'_SDL_SetWindowModalFor'.'SDL2.dll'..'SDL_SetWindowModalFor' +++'_SDL_RenderSetIntegerScale'.'SDL2.dll'..'SDL_RenderSetIntegerScale' +++'_SDL_RenderGetIntegerScale'.'SDL2.dll'..'SDL_RenderGetIntegerScale' +++'_SDL_DequeueAudio'.'SDL2.dll'..'SDL_DequeueAudio' +++'_SDL_SetWindowResizable'.'SDL2.dll'..'SDL_SetWindowResizable' +++'_SDL_CreateRGBSurfaceWithFormat'.'SDL2.dll'..'SDL_CreateRGBSurfaceWithFormat' +++'_SDL_CreateRGBSurfaceWithFormatFrom'.'SDL2.dll'..'SDL_CreateRGBSurfaceWithFormatFrom' +++'_SDL_GetHintBoolean'.'SDL2.dll'..'SDL_GetHintBoolean' +++'_SDL_JoystickGetDeviceVendor'.'SDL2.dll'..'SDL_JoystickGetDeviceVendor' +++'_SDL_JoystickGetDeviceProduct'.'SDL2.dll'..'SDL_JoystickGetDeviceProduct' +++'_SDL_JoystickGetDeviceProductVersion'.'SDL2.dll'..'SDL_JoystickGetDeviceProductVersion' +++'_SDL_JoystickGetVendor'.'SDL2.dll'..'SDL_JoystickGetVendor' +++'_SDL_JoystickGetProduct'.'SDL2.dll'..'SDL_JoystickGetProduct' +++'_SDL_JoystickGetProductVersion'.'SDL2.dll'..'SDL_JoystickGetProductVersion' +++'_SDL_GameControllerGetVendor'.'SDL2.dll'..'SDL_GameControllerGetVendor' +++'_SDL_GameControllerGetProduct'.'SDL2.dll'..'SDL_GameControllerGetProduct' +++'_SDL_GameControllerGetProductVersion'.'SDL2.dll'..'SDL_GameControllerGetProductVersion' +++'_SDL_HasNEON'.'SDL2.dll'..'SDL_HasNEON' +++'_SDL_GameControllerNumMappings'.'SDL2.dll'..'SDL_GameControllerNumMappings' +++'_SDL_GameControllerMappingForIndex'.'SDL2.dll'..'SDL_GameControllerMappingForIndex' +++'_SDL_JoystickGetAxisInitialState'.'SDL2.dll'..'SDL_JoystickGetAxisInitialState' +++'_SDL_JoystickGetDeviceType'.'SDL2.dll'..'SDL_JoystickGetDeviceType' +++'_SDL_JoystickGetType'.'SDL2.dll'..'SDL_JoystickGetType' +++'_SDL_MemoryBarrierReleaseFunction'.'SDL2.dll'..'SDL_MemoryBarrierReleaseFunction' +++'_SDL_MemoryBarrierAcquireFunction'.'SDL2.dll'..'SDL_MemoryBarrierAcquireFunction' +++'_SDL_JoystickGetDeviceInstanceID'.'SDL2.dll'..'SDL_JoystickGetDeviceInstanceID' +++'_SDL_utf8strlen'.'SDL2.dll'..'SDL_utf8strlen' +++'_SDL_LoadFile_RW'.'SDL2.dll'..'SDL_LoadFile_RW' +++'_SDL_wcscmp'.'SDL2.dll'..'SDL_wcscmp' +++'_SDL_ComposeCustomBlendMode'.'SDL2.dll'..'SDL_ComposeCustomBlendMode' +++'_SDL_DuplicateSurface'.'SDL2.dll'..'SDL_DuplicateSurface' +++'_SDL_Vulkan_LoadLibrary'.'SDL2.dll'..'SDL_Vulkan_LoadLibrary' +++'_SDL_Vulkan_GetVkGetInstanceProcAddr'.'SDL2.dll'..'SDL_Vulkan_GetVkGetInstanceProcAddr' +++'_SDL_Vulkan_UnloadLibrary'.'SDL2.dll'..'SDL_Vulkan_UnloadLibrary' +++'_SDL_Vulkan_GetInstanceExtensions'.'SDL2.dll'..'SDL_Vulkan_GetInstanceExtensions' +++'_SDL_Vulkan_CreateSurface'.'SDL2.dll'..'SDL_Vulkan_CreateSurface' +++'_SDL_Vulkan_GetDrawableSize'.'SDL2.dll'..'SDL_Vulkan_GetDrawableSize' +++'_SDL_LockJoysticks'.'SDL2.dll'..'SDL_LockJoysticks' +++'_SDL_UnlockJoysticks'.'SDL2.dll'..'SDL_UnlockJoysticks' +++'_SDL_GetMemoryFunctions'.'SDL2.dll'..'SDL_GetMemoryFunctions' +++'_SDL_SetMemoryFunctions'.'SDL2.dll'..'SDL_SetMemoryFunctions' +++'_SDL_GetNumAllocations'.'SDL2.dll'..'SDL_GetNumAllocations' +++'_SDL_NewAudioStream'.'SDL2.dll'..'SDL_NewAudioStream' +++'_SDL_AudioStreamPut'.'SDL2.dll'..'SDL_AudioStreamPut' +++'_SDL_AudioStreamGet'.'SDL2.dll'..'SDL_AudioStreamGet' +++'_SDL_AudioStreamClear'.'SDL2.dll'..'SDL_AudioStreamClear' +++'_SDL_AudioStreamAvailable'.'SDL2.dll'..'SDL_AudioStreamAvailable' +++'_SDL_FreeAudioStream'.'SDL2.dll'..'SDL_FreeAudioStream' +++'_SDL_AudioStreamFlush'.'SDL2.dll'..'SDL_AudioStreamFlush' +++'_SDL_acosf'.'SDL2.dll'..'SDL_acosf' +++'_SDL_asinf'.'SDL2.dll'..'SDL_asinf' +++'_SDL_atanf'.'SDL2.dll'..'SDL_atanf' +++'_SDL_atan2f'.'SDL2.dll'..'SDL_atan2f' +++'_SDL_ceilf'.'SDL2.dll'..'SDL_ceilf' +++'_SDL_copysignf'.'SDL2.dll'..'SDL_copysignf' +++'_SDL_fabsf'.'SDL2.dll'..'SDL_fabsf' +++'_SDL_floorf'.'SDL2.dll'..'SDL_floorf' +++'_SDL_logf'.'SDL2.dll'..'SDL_logf' +++'_SDL_powf'.'SDL2.dll'..'SDL_powf' +++'_SDL_scalbnf'.'SDL2.dll'..'SDL_scalbnf' +++'_SDL_fmod'.'SDL2.dll'..'SDL_fmod' +++'_SDL_fmodf'.'SDL2.dll'..'SDL_fmodf' +++'_SDL_SetYUVConversionMode'.'SDL2.dll'..'SDL_SetYUVConversionMode' +++'_SDL_GetYUVConversionMode'.'SDL2.dll'..'SDL_GetYUVConversionMode' +++'_SDL_GetYUVConversionModeForResolution'.'SDL2.dll'..'SDL_GetYUVConversionModeForResolution' +++'_SDL_RenderGetMetalLayer'.'SDL2.dll'..'SDL_RenderGetMetalLayer' +++'_SDL_RenderGetMetalCommandEncoder'.'SDL2.dll'..'SDL_RenderGetMetalCommandEncoder' +++'_SDL_log10'.'SDL2.dll'..'SDL_log10' +++'_SDL_log10f'.'SDL2.dll'..'SDL_log10f' +++'_SDL_GameControllerMappingForDeviceIndex'.'SDL2.dll'..'SDL_GameControllerMappingForDeviceIndex' +++'_SDL_HasAVX512F'.'SDL2.dll'..'SDL_HasAVX512F' +++'_SDL_exp'.'SDL2.dll'..'SDL_exp' +++'_SDL_expf'.'SDL2.dll'..'SDL_expf' +++'_SDL_wcsdup'.'SDL2.dll'..'SDL_wcsdup' +++'_SDL_GameControllerRumble'.'SDL2.dll'..'SDL_GameControllerRumble' +++'_SDL_JoystickRumble'.'SDL2.dll'..'SDL_JoystickRumble' +++'_SDL_NumSensors'.'SDL2.dll'..'SDL_NumSensors' +++'_SDL_SensorGetDeviceName'.'SDL2.dll'..'SDL_SensorGetDeviceName' +++'_SDL_SensorGetDeviceType'.'SDL2.dll'..'SDL_SensorGetDeviceType' +++'_SDL_SensorGetDeviceNonPortableType'.'SDL2.dll'..'SDL_SensorGetDeviceNonPortableType' +++'_SDL_SensorGetDeviceInstanceID'.'SDL2.dll'..'SDL_SensorGetDeviceInstanceID' +++'_SDL_SensorOpen'.'SDL2.dll'..'SDL_SensorOpen' +++'_SDL_SensorFromInstanceID'.'SDL2.dll'..'SDL_SensorFromInstanceID' +++'_SDL_SensorGetName'.'SDL2.dll'..'SDL_SensorGetName' +++'_SDL_SensorGetType'.'SDL2.dll'..'SDL_SensorGetType' +++'_SDL_SensorGetNonPortableType'.'SDL2.dll'..'SDL_SensorGetNonPortableType' +++'_SDL_SensorGetInstanceID'.'SDL2.dll'..'SDL_SensorGetInstanceID' +++'_SDL_SensorGetData'.'SDL2.dll'..'SDL_SensorGetData' +++'_SDL_SensorClose'.'SDL2.dll'..'SDL_SensorClose' +++'_SDL_SensorUpdate'.'SDL2.dll'..'SDL_SensorUpdate' +++'_SDL_IsTablet'.'SDL2.dll'..'SDL_IsTablet' +++'_SDL_GetDisplayOrientation'.'SDL2.dll'..'SDL_GetDisplayOrientation' +++'_SDL_HasColorKey'.'SDL2.dll'..'SDL_HasColorKey' +++'_SDL_CreateThreadWithStackSize'.'SDL2.dll'..'SDL_CreateThreadWithStackSize' +++'_SDL_JoystickGetDevicePlayerIndex'.'SDL2.dll'..'SDL_JoystickGetDevicePlayerIndex' +++'_SDL_JoystickGetPlayerIndex'.'SDL2.dll'..'SDL_JoystickGetPlayerIndex' +++'_SDL_GameControllerGetPlayerIndex'.'SDL2.dll'..'SDL_GameControllerGetPlayerIndex' +++'_SDL_RenderFlush'.'SDL2.dll'..'SDL_RenderFlush' +++'_SDL_RenderDrawPointF'.'SDL2.dll'..'SDL_RenderDrawPointF' +++'_SDL_RenderDrawPointsF'.'SDL2.dll'..'SDL_RenderDrawPointsF' +++'_SDL_RenderDrawLineF'.'SDL2.dll'..'SDL_RenderDrawLineF' +++'_SDL_RenderDrawLinesF'.'SDL2.dll'..'SDL_RenderDrawLinesF' +++'_SDL_RenderDrawRectF'.'SDL2.dll'..'SDL_RenderDrawRectF' +++'_SDL_RenderDrawRectsF'.'SDL2.dll'..'SDL_RenderDrawRectsF' +++'_SDL_RenderFillRectF'.'SDL2.dll'..'SDL_RenderFillRectF' +++'_SDL_RenderFillRectsF'.'SDL2.dll'..'SDL_RenderFillRectsF' +++'_SDL_RenderCopyF'.'SDL2.dll'..'SDL_RenderCopyF' +++'_SDL_RenderCopyExF'.'SDL2.dll'..'SDL_RenderCopyExF' +++'_SDL_GetTouchDeviceType'.'SDL2.dll'..'SDL_GetTouchDeviceType' +++'_SDL_SIMDGetAlignment'.'SDL2.dll'..'SDL_SIMDGetAlignment' +++'_SDL_SIMDAlloc'.'SDL2.dll'..'SDL_SIMDAlloc' +++'_SDL_SIMDFree'.'SDL2.dll'..'SDL_SIMDFree' +++'_SDL_RWsize'.'SDL2.dll'..'SDL_RWsize' +++'_SDL_RWseek'.'SDL2.dll'..'SDL_RWseek' +++'_SDL_RWtell'.'SDL2.dll'..'SDL_RWtell' +++'_SDL_RWread'.'SDL2.dll'..'SDL_RWread' +++'_SDL_RWwrite'.'SDL2.dll'..'SDL_RWwrite' +++'_SDL_RWclose'.'SDL2.dll'..'SDL_RWclose' +++'_SDL_LoadFile'.'SDL2.dll'..'SDL_LoadFile' +++'_SDL_Metal_CreateView'.'SDL2.dll'..'SDL_Metal_CreateView' +++'_SDL_Metal_DestroyView'.'SDL2.dll'..'SDL_Metal_DestroyView' +++'_SDL_LockTextureToSurface'.'SDL2.dll'..'SDL_LockTextureToSurface' +++'_SDL_HasARMSIMD'.'SDL2.dll'..'SDL_HasARMSIMD' +++'_SDL_strtokr'.'SDL2.dll'..'SDL_strtokr' +++'_SDL_wcsstr'.'SDL2.dll'..'SDL_wcsstr' +++'_SDL_wcsncmp'.'SDL2.dll'..'SDL_wcsncmp' +++'_SDL_GameControllerTypeForIndex'.'SDL2.dll'..'SDL_GameControllerTypeForIndex' +++'_SDL_GameControllerGetType'.'SDL2.dll'..'SDL_GameControllerGetType' +++'_SDL_GameControllerFromPlayerIndex'.'SDL2.dll'..'SDL_GameControllerFromPlayerIndex' +++'_SDL_GameControllerSetPlayerIndex'.'SDL2.dll'..'SDL_GameControllerSetPlayerIndex' +++'_SDL_JoystickFromPlayerIndex'.'SDL2.dll'..'SDL_JoystickFromPlayerIndex' +++'_SDL_JoystickSetPlayerIndex'.'SDL2.dll'..'SDL_JoystickSetPlayerIndex' +++'_SDL_SetTextureScaleMode'.'SDL2.dll'..'SDL_SetTextureScaleMode' +++'_SDL_GetTextureScaleMode'.'SDL2.dll'..'SDL_GetTextureScaleMode' +++'_SDL_OnApplicationWillTerminate'.'SDL2.dll'..'SDL_OnApplicationWillTerminate' +++'_SDL_OnApplicationDidReceiveMemoryWarning'.'SDL2.dll'..'SDL_OnApplicationDidReceiveMemoryWarning' +++'_SDL_OnApplicationWillResignActive'.'SDL2.dll'..'SDL_OnApplicationWillResignActive' +++'_SDL_OnApplicationDidEnterBackground'.'SDL2.dll'..'SDL_OnApplicationDidEnterBackground' +++'_SDL_OnApplicationWillEnterForeground'.'SDL2.dll'..'SDL_OnApplicationWillEnterForeground' +++'_SDL_OnApplicationDidBecomeActive'.'SDL2.dll'..'SDL_OnApplicationDidBecomeActive' +++'_SDL_isupper'.'SDL2.dll'..'SDL_isupper' +++'_SDL_islower'.'SDL2.dll'..'SDL_islower' +++'_SDL_JoystickAttachVirtual'.'SDL2.dll'..'SDL_JoystickAttachVirtual' +++'_SDL_JoystickDetachVirtual'.'SDL2.dll'..'SDL_JoystickDetachVirtual' +++'_SDL_JoystickIsVirtual'.'SDL2.dll'..'SDL_JoystickIsVirtual' +++'_SDL_JoystickSetVirtualAxis'.'SDL2.dll'..'SDL_JoystickSetVirtualAxis' +++'_SDL_JoystickSetVirtualButton'.'SDL2.dll'..'SDL_JoystickSetVirtualButton' +++'_SDL_JoystickSetVirtualHat'.'SDL2.dll'..'SDL_JoystickSetVirtualHat' +++'_SDL_GetErrorMsg'.'SDL2.dll'..'SDL_GetErrorMsg' +++'_SDL_LockSensors'.'SDL2.dll'..'SDL_LockSensors' +++'_SDL_UnlockSensors'.'SDL2.dll'..'SDL_UnlockSensors' +++'_SDL_Metal_GetLayer'.'SDL2.dll'..'SDL_Metal_GetLayer' +++'_SDL_Metal_GetDrawableSize'.'SDL2.dll'..'SDL_Metal_GetDrawableSize' +++'_SDL_trunc'.'SDL2.dll'..'SDL_trunc' +++'_SDL_truncf'.'SDL2.dll'..'SDL_truncf' +++'_SDL_GetPreferredLocales'.'SDL2.dll'..'SDL_GetPreferredLocales' +++'_SDL_SIMDRealloc'.'SDL2.dll'..'SDL_SIMDRealloc' +++'_SDL_OpenURL'.'SDL2.dll'..'SDL_OpenURL' +++'_SDL_HasSurfaceRLE'.'SDL2.dll'..'SDL_HasSurfaceRLE' +++'_SDL_GameControllerHasLED'.'SDL2.dll'..'SDL_GameControllerHasLED' +++'_SDL_GameControllerSetLED'.'SDL2.dll'..'SDL_GameControllerSetLED' +++'_SDL_JoystickHasLED'.'SDL2.dll'..'SDL_JoystickHasLED' +++'_SDL_JoystickSetLED'.'SDL2.dll'..'SDL_JoystickSetLED' +++'_SDL_GameControllerRumbleTriggers'.'SDL2.dll'..'SDL_GameControllerRumbleTriggers' +++'_SDL_JoystickRumbleTriggers'.'SDL2.dll'..'SDL_JoystickRumbleTriggers' +++'_SDL_GameControllerHasAxis'.'SDL2.dll'..'SDL_GameControllerHasAxis' +++'_SDL_GameControllerHasButton'.'SDL2.dll'..'SDL_GameControllerHasButton' +++'_SDL_GameControllerGetNumTouchpads'.'SDL2.dll'..'SDL_GameControllerGetNumTouchpads' +++'_SDL_GameControllerGetNumTouchpadFingers'.'SDL2.dll'..'SDL_GameControllerGetNumTouchpadFingers' +++'_SDL_GameControllerGetTouchpadFinger'.'SDL2.dll'..'SDL_GameControllerGetTouchpadFinger' +++'_SDL_crc32'.'SDL2.dll'..'SDL_crc32' +++'_SDL_GameControllerGetSerial'.'SDL2.dll'..'SDL_GameControllerGetSerial' +++'_SDL_JoystickGetSerial'.'SDL2.dll'..'SDL_JoystickGetSerial' +++'_SDL_GameControllerHasSensor'.'SDL2.dll'..'SDL_GameControllerHasSensor' +++'_SDL_GameControllerSetSensorEnabled'.'SDL2.dll'..'SDL_GameControllerSetSensorEnabled' +++'_SDL_GameControllerIsSensorEnabled'.'SDL2.dll'..'SDL_GameControllerIsSensorEnabled' +++'_SDL_GameControllerGetSensorData'.'SDL2.dll'..'SDL_GameControllerGetSensorData' +++'_SDL_wcscasecmp'.'SDL2.dll'..'SDL_wcscasecmp' +++'_SDL_wcsncasecmp'.'SDL2.dll'..'SDL_wcsncasecmp' +++'_SDL_round'.'SDL2.dll'..'SDL_round' +++'_SDL_roundf'.'SDL2.dll'..'SDL_roundf' +++'_SDL_lround'.'SDL2.dll'..'SDL_lround' +++'_SDL_lroundf'.'SDL2.dll'..'SDL_lroundf' +++'_SDL_SoftStretchLinear'.'SDL2.dll'..'SDL_SoftStretchLinear' +++'_SDL_RenderGetD3D11Device'.'SDL2.dll'..'SDL_RenderGetD3D11Device' +++'_SDL_UpdateNVTexture'.'SDL2.dll'..'SDL_UpdateNVTexture' +++'_SDL_SetWindowKeyboardGrab'.'SDL2.dll'..'SDL_SetWindowKeyboardGrab' +++'_SDL_SetWindowMouseGrab'.'SDL2.dll'..'SDL_SetWindowMouseGrab' +++'_SDL_GetWindowKeyboardGrab'.'SDL2.dll'..'SDL_GetWindowKeyboardGrab' +++'_SDL_GetWindowMouseGrab'.'SDL2.dll'..'SDL_GetWindowMouseGrab' +++'_SDL_isalpha'.'SDL2.dll'..'SDL_isalpha' +++'_SDL_isalnum'.'SDL2.dll'..'SDL_isalnum' +++'_SDL_isblank'.'SDL2.dll'..'SDL_isblank' +++'_SDL_iscntrl'.'SDL2.dll'..'SDL_iscntrl' +++'_SDL_isxdigit'.'SDL2.dll'..'SDL_isxdigit' +++'_SDL_ispunct'.'SDL2.dll'..'SDL_ispunct' +++'_SDL_isprint'.'SDL2.dll'..'SDL_isprint' +++'_SDL_isgraph'.'SDL2.dll'..'SDL_isgraph' +++'_SDL_GetAudioDeviceSpec'.'SDL2.dll'..'SDL_GetAudioDeviceSpec' +++'_SDL_TLSCleanup'.'SDL2.dll'..'SDL_TLSCleanup' +++'_SDL_SetWindowAlwaysOnTop'.'SDL2.dll'..'SDL_SetWindowAlwaysOnTop' +++'_SDL_FlashWindow'.'SDL2.dll'..'SDL_FlashWindow' +++'_SDL_GameControllerSendEffect'.'SDL2.dll'..'SDL_GameControllerSendEffect' +++'_SDL_JoystickSendEffect'.'SDL2.dll'..'SDL_JoystickSendEffect' +++'_SDL_GameControllerGetSensorDataRate'.'SDL2.dll'..'SDL_GameControllerGetSensorDataRate' +++'_SDL_SetTextureUserData'.'SDL2.dll'..'SDL_SetTextureUserData' +++'_SDL_GetTextureUserData'.'SDL2.dll'..'SDL_GetTextureUserData' +++'_SDL_RenderGeometry'.'SDL2.dll'..'SDL_RenderGeometry' +++'_SDL_RenderGeometryRaw'.'SDL2.dll'..'SDL_RenderGeometryRaw' +++'_SDL_RenderSetVSync'.'SDL2.dll'..'SDL_RenderSetVSync' +++'_SDL_asprintf'.'SDL2.dll'..'SDL_asprintf' +++'_SDL_vasprintf'.'SDL2.dll'..'SDL_vasprintf' +++'_SDL_GetWindowICCProfile'.'SDL2.dll'..'SDL_GetWindowICCProfile' +++'_SDL_GetTicks64'.'SDL2.dll'..'SDL_GetTicks64' +++'_SDL_GameControllerGetAppleSFSymbolsNameForButton'.'SDL2.dll'..'SDL_GameControllerGetAppleSFSymbolsNameForButton' +++'_SDL_GameControllerGetAppleSFSymbolsNameForAxis'.'SDL2.dll'..'SDL_GameControllerGetAppleSFSymbolsNameForAxis' +++'_SDL_hid_init'.'SDL2.dll'..'SDL_hid_init' +++'_SDL_hid_exit'.'SDL2.dll'..'SDL_hid_exit' +++'_SDL_hid_device_change_count'.'SDL2.dll'..'SDL_hid_device_change_count' +++'_SDL_hid_enumerate'.'SDL2.dll'..'SDL_hid_enumerate' +++'_SDL_hid_free_enumeration'.'SDL2.dll'..'SDL_hid_free_enumeration' +++'_SDL_hid_open'.'SDL2.dll'..'SDL_hid_open' +++'_SDL_hid_open_path'.'SDL2.dll'..'SDL_hid_open_path' +++'_SDL_hid_write'.'SDL2.dll'..'SDL_hid_write' +++'_SDL_hid_read_timeout'.'SDL2.dll'..'SDL_hid_read_timeout' +++'_SDL_hid_read'.'SDL2.dll'..'SDL_hid_read' +++'_SDL_hid_set_nonblocking'.'SDL2.dll'..'SDL_hid_set_nonblocking' +++'_SDL_hid_send_feature_report'.'SDL2.dll'..'SDL_hid_send_feature_report' +++'_SDL_hid_get_feature_report'.'SDL2.dll'..'SDL_hid_get_feature_report' +++'_SDL_hid_close'.'SDL2.dll'..'SDL_hid_close' +++'_SDL_hid_get_manufacturer_string'.'SDL2.dll'..'SDL_hid_get_manufacturer_string' +++'_SDL_hid_get_product_string'.'SDL2.dll'..'SDL_hid_get_product_string' +++'_SDL_hid_get_serial_number_string'.'SDL2.dll'..'SDL_hid_get_serial_number_string' +++'_SDL_hid_get_indexed_string'.'SDL2.dll'..'SDL_hid_get_indexed_string' +++'_SDL_SetWindowMouseRect'.'SDL2.dll'..'SDL_SetWindowMouseRect' +++'_SDL_GetWindowMouseRect'.'SDL2.dll'..'SDL_GetWindowMouseRect' +++'_SDL_RenderWindowToLogical'.'SDL2.dll'..'SDL_RenderWindowToLogical' +++'_SDL_RenderLogicalToWindow'.'SDL2.dll'..'SDL_RenderLogicalToWindow' +++'_SDL_JoystickHasRumble'.'SDL2.dll'..'SDL_JoystickHasRumble' +++'_SDL_JoystickHasRumbleTriggers'.'SDL2.dll'..'SDL_JoystickHasRumbleTriggers' +++'_SDL_GameControllerHasRumble'.'SDL2.dll'..'SDL_GameControllerHasRumble' +++'_SDL_GameControllerHasRumbleTriggers'.'SDL2.dll'..'SDL_GameControllerHasRumbleTriggers' +++'_SDL_hid_ble_scan'.'SDL2.dll'..'SDL_hid_ble_scan' +++'_SDL_PremultiplyAlpha'.'SDL2.dll'..'SDL_PremultiplyAlpha' +++'_SDL_GetTouchName'.'SDL2.dll'..'SDL_GetTouchName' +++'_SDL_ClearComposition'.'SDL2.dll'..'SDL_ClearComposition' +++'_SDL_IsTextInputShown'.'SDL2.dll'..'SDL_IsTextInputShown' +++'_SDL_HasIntersectionF'.'SDL2.dll'..'SDL_HasIntersectionF' +++'_SDL_IntersectFRect'.'SDL2.dll'..'SDL_IntersectFRect' +++'_SDL_UnionFRect'.'SDL2.dll'..'SDL_UnionFRect' +++'_SDL_EncloseFPoints'.'SDL2.dll'..'SDL_EncloseFPoints' +++'_SDL_IntersectFRectAndLine'.'SDL2.dll'..'SDL_IntersectFRectAndLine' +++'_SDL_RenderGetWindow'.'SDL2.dll'..'SDL_RenderGetWindow' +++'_SDL_bsearch'.'SDL2.dll'..'SDL_bsearch' +++'_SDL_GameControllerPathForIndex'.'SDL2.dll'..'SDL_GameControllerPathForIndex' +++'_SDL_GameControllerPath'.'SDL2.dll'..'SDL_GameControllerPath' +++'_SDL_JoystickPathForIndex'.'SDL2.dll'..'SDL_JoystickPathForIndex' +++'_SDL_JoystickPath'.'SDL2.dll'..'SDL_JoystickPath' +++'_SDL_JoystickAttachVirtualEx'.'SDL2.dll'..'SDL_JoystickAttachVirtualEx' +++'_SDL_GameControllerGetFirmwareVersion'.'SDL2.dll'..'SDL_GameControllerGetFirmwareVersion' +++'_SDL_JoystickGetFirmwareVersion'.'SDL2.dll'..'SDL_JoystickGetFirmwareVersion' +++'_SDL_GUIDToString'.'SDL2.dll'..'SDL_GUIDToString' +++'_SDL_GUIDFromString'.'SDL2.dll'..'SDL_GUIDFromString' +++'_SDL_HasLSX'.'SDL2.dll'..'SDL_HasLSX' +++'_SDL_HasLASX'.'SDL2.dll'..'SDL_HasLASX' +++'_SDL_RenderGetD3D12Device'.'SDL2.dll'..'SDL_RenderGetD3D12Device' +++'_SDL_utf8strnlen'.'SDL2.dll'..'SDL_utf8strnlen' +++'_SDL_GetOriginalMemoryFunctions'.'SDL2.dll'..'SDL_GetOriginalMemoryFunctions' +++'_SDL_ResetKeyboard'.'SDL2.dll'..'SDL_ResetKeyboard' +++'_SDL_GetDefaultAudioInfo'.'SDL2.dll'..'SDL_GetDefaultAudioInfo' +++'_SDL_GetPointDisplayIndex'.'SDL2.dll'..'SDL_GetPointDisplayIndex' +++'_SDL_GetRectDisplayIndex'.'SDL2.dll'..'SDL_GetRectDisplayIndex' +++'_SDL_ResetHint'.'SDL2.dll'..'SDL_ResetHint' +++'_SDL_crc16'.'SDL2.dll'..'SDL_crc16' +++'_SDL_GetWindowSizeInPixels'.'SDL2.dll'..'SDL_GetWindowSizeInPixels' +++'_SDL_GetJoystickGUIDInfo'.'SDL2.dll'..'SDL_GetJoystickGUIDInfo' +++'_SDL_SetPrimarySelectionText'.'SDL2.dll'..'SDL_SetPrimarySelectionText' +++'_SDL_GetPrimarySelectionText'.'SDL2.dll'..'SDL_GetPrimarySelectionText' +++'_SDL_HasPrimarySelectionText'.'SDL2.dll'..'SDL_HasPrimarySelectionText' +++'_SDL_GameControllerGetSensorDataWithTimestamp'.'SDL2.dll'..'SDL_GameControllerGetSensorDataWithTimestamp' +++'_SDL_SensorGetDataWithTimestamp'.'SDL2.dll'..'SDL_SensorGetDataWithTimestamp' +++'_SDL_ResetHints'.'SDL2.dll'..'SDL_ResetHints' +++'_SDL_strcasestr'.'SDL2.dll'..'SDL_strcasestr' +++'_SDL_HasWindowSurface'.'SDL2.dll'..'SDL_HasWindowSurface' +++'_SDL_DestroyWindowSurface'.'SDL2.dll'..'SDL_DestroyWindowSurface' +++'_SDL_GameControllerGetSteamHandle'.'SDL2.dll'..'SDL_GameControllerGetSteamHandle' diff --git a/Windows/SDL2/watcom/SDL2.lib b/Windows/SDL2/watcom/SDL2.lib new file mode 100644 index 0000000000000000000000000000000000000000..cc15460a922e14b1c8050444c9a0deaff31a48b0 GIT binary patch literal 135168 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL2/watcom/def2lbc.awk b/Windows/SDL2/watcom/def2lbc.awk new file mode 100644 index 0000000..84767f6 --- /dev/null +++ b/Windows/SDL2/watcom/def2lbc.awk @@ -0,0 +1,38 @@ +# get uppercased module name +/^[ \t]*LIBRARY/ { ModuleName = toupper( $2 ); next } + +# skip uninteresting lines +/^[ \t]*(EXPORTS|;)/ { next } + +# NB: Calling conventions essentially do not exist on non-x86 platforms, +# we simply strip the decoration unless 'cpu' equals 386. + +# process fastcall symbols "@symbol@size" +/^[ \t]*@[A-Za-z0-9_]+@[0-9]+/ { + split( $1, parts, "@" ) # split the import name on the at signs + if( cpu == "386" ) + printf( "++'%s'.'%s'..'%s'\n", $1, ModuleName, parts[2] ) + else + printf( "++'%s'.'%s'\n", parts[2], ModuleName ) + next +} + +# process stdcall symbols using "symbol@size" format +/^[ \t]*[A-Za-z0-9_]+@[0-9]+/ { + split( $1, parts, "@" ) # split the import name on the at sign + if( cpu == "386" ) + printf( "++'_%s'.'%s'..'%s'\n", $1, ModuleName, parts[1] ) + else + printf( "++'%s'.'%s'\n", parts[1], ModuleName ) + next +} + +# process cdecl symbols using plain "symbol" format +/^[ \t]*[A-Za-z0-9_]+/ { + split( $1, parts, "@" ) # split the import name on the at sign + if( cpu == "386" ) + printf( "++'_%s'.'%s'..'%s'\n", $1, ModuleName, $1 ) + else + printf( "++'%s'.'%s'\n", parts[1], ModuleName ) + next +} diff --git a/Windows/SDL2/watcom/makefile b/Windows/SDL2/watcom/makefile new file mode 100644 index 0000000..adfcc61 --- /dev/null +++ b/Windows/SDL2/watcom/makefile @@ -0,0 +1,11 @@ +# Open Watcom makefile to generate SDL2.lib +# def2lbc.awk (from OW source tree) requires 'awk' +# run 'wmake' + +all: SDL2.lib + +SDL2.exp: SDL2.def def2lbc.awk + awk -v cpu=386 -f def2lbc.awk SDL2.def > SDL2.exp + +SDL2.lib: SDL2.exp + wlib -q -b -n -c -pa -s -t -zld -ii -io SDL2.lib @SDL2.exp diff --git a/Windows/VS2005/quakespasm-sdl2.vcproj b/Windows/VS2005/quakespasm-sdl2.vcproj new file mode 100644 index 0000000..31c5cc5 --- /dev/null +++ b/Windows/VS2005/quakespasm-sdl2.vcproj @@ -0,0 +1,964 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Windows/VS2005/quakespasm.sln b/Windows/VS2005/quakespasm.sln new file mode 100644 index 0000000..9da09cf --- /dev/null +++ b/Windows/VS2005/quakespasm.sln @@ -0,0 +1,36 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quakespasm", "quakespasm.vcproj", "{C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quakespasm-sdl2", "quakespasm-sdl2.vcproj", "{AE77266F-0A23-4F08-A491-369DE664B273}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|Win32.Build.0 = Debug|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|x64.ActiveCfg = Debug|x64 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|x64.Build.0 = Debug|x64 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|Win32.ActiveCfg = Release|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|Win32.Build.0 = Release|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|x64.ActiveCfg = Release|x64 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|x64.Build.0 = Release|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|Win32.ActiveCfg = Debug|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|Win32.Build.0 = Debug|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|x64.ActiveCfg = Debug|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|x64.Build.0 = Debug|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|Win32.ActiveCfg = Release|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|Win32.Build.0 = Release|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|x64.ActiveCfg = Release|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Windows/VS2005/quakespasm.vcproj b/Windows/VS2005/quakespasm.vcproj new file mode 100644 index 0000000..7502d13 --- /dev/null +++ b/Windows/VS2005/quakespasm.vcproj @@ -0,0 +1,968 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Windows/VisualStudio/quakespasm-sdl2.vcxproj b/Windows/VisualStudio/quakespasm-sdl2.vcxproj new file mode 100644 index 0000000..8c7548e --- /dev/null +++ b/Windows/VisualStudio/quakespasm-sdl2.vcxproj @@ -0,0 +1,370 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {AE77266F-0A23-4F08-A491-369DE664B273} + quakespasm-sdl2 + 10.0 + + + + Application + $(DefaultPlatformToolset) + NotSet + true + + + Application + $(DefaultPlatformToolset) + NotSet + + + Application + $(DefaultPlatformToolset) + NotSet + true + + + Application + $(DefaultPlatformToolset) + NotSet + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)Build-$(ProjectName)\$(Platform)\$(Configuration)\ + Build-$(ProjectName)\$(Platform)\$(Configuration)\ + true + $(SolutionDir)Build-$(ProjectName)\x86\$(Configuration)\ + Build-$(ProjectName)\x86\$(Configuration)\ + true + $(SolutionDir)Build-$(ProjectName)\$(Platform)\$(Configuration)\ + Build-$(ProjectName)\$(Platform)\$(Configuration)\ + false + $(SolutionDir)Build-$(ProjectName)\x86\$(Configuration)\ + Build-$(ProjectName)\x86\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + ..\SDL2\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_SDL2;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;wsock32.lib;opengl32.lib;winmm.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies) + ..\codecs\x86;..\SDL2\lib;%(AdditionalLibraryDirectories) + msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + MachineX86 + + + copy "$(SolutionDir)\..\codecs\x86\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL2\lib\*.dll" "$(TargetDir)" + + + + + + MaxSpeed + true + ..\SDL2\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_SDL2;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;wsock32.lib;opengl32.lib;winmm.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies) + ..\codecs\x86;..\SDL2\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + copy "$(SolutionDir)\..\codecs\x86\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL2\lib\*.dll" "$(TargetDir)" + + + + + + X64 + + + Disabled + ..\SDL2\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USE_WINSOCK2;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_SDL2;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;ws2_32.lib;opengl32.lib;winmm.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies) + ..\codecs\x64;..\SDL2\lib64;%(AdditionalLibraryDirectories) + msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + MachineX64 + + + copy "$(SolutionDir)\..\codecs\x64\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL2\lib64\*.dll" "$(TargetDir)" + + + + + + X64 + + + MaxSpeed + true + ..\SDL2\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USE_WINSOCK2;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_SDL2;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;ws2_32.lib;opengl32.lib;winmm.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies) + ..\codecs\x64;..\SDL2\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + copy "$(SolutionDir)\..\codecs\x64\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL2\lib64\*.dll" "$(TargetDir)" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/VisualStudio/quakespasm-sdl2.vcxproj.filters b/Windows/VisualStudio/quakespasm-sdl2.vcxproj.filters new file mode 100644 index 0000000..c809931 --- /dev/null +++ b/Windows/VisualStudio/quakespasm-sdl2.vcxproj.filters @@ -0,0 +1,461 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/Windows/VisualStudio/quakespasm.sln b/Windows/VisualStudio/quakespasm.sln new file mode 100644 index 0000000..71113a0 --- /dev/null +++ b/Windows/VisualStudio/quakespasm.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quakespasm", "quakespasm.vcxproj", "{C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quakespasm-sdl2", "quakespasm-sdl2.vcxproj", "{AE77266F-0A23-4F08-A491-369DE664B273}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|Win32.Build.0 = Debug|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|x64.ActiveCfg = Debug|x64 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Debug|x64.Build.0 = Debug|x64 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|Win32.ActiveCfg = Release|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|Win32.Build.0 = Release|Win32 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|x64.ActiveCfg = Release|x64 + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A}.Release|x64.Build.0 = Release|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|Win32.ActiveCfg = Debug|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|Win32.Build.0 = Debug|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|x64.ActiveCfg = Debug|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Debug|x64.Build.0 = Debug|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|Win32.ActiveCfg = Release|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|Win32.Build.0 = Release|Win32 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|x64.ActiveCfg = Release|x64 + {AE77266F-0A23-4F08-A491-369DE664B273}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {783CC3FE-3AF2-4FAF-923D-4F0B90244E88} + EndGlobalSection +EndGlobal diff --git a/Windows/VisualStudio/quakespasm.vcxproj b/Windows/VisualStudio/quakespasm.vcxproj new file mode 100644 index 0000000..fdb8271 --- /dev/null +++ b/Windows/VisualStudio/quakespasm.vcxproj @@ -0,0 +1,371 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C0F747A3-D796-4EC0-BF2A-53722CAA3B6A} + quakespasm + 10.0 + + + + Application + $(DefaultPlatformToolset) + NotSet + true + + + Application + $(DefaultPlatformToolset) + NotSet + + + Application + $(DefaultPlatformToolset) + NotSet + true + + + Application + $(DefaultPlatformToolset) + NotSet + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)Build-$(ProjectName)\$(Platform)\$(Configuration)\ + Build-$(ProjectName)\$(Platform)\$(Configuration)\ + true + $(SolutionDir)Build-$(ProjectName)\x86\$(Configuration)\ + Build-$(ProjectName)\x86\$(Configuration)\ + true + $(SolutionDir)Build-$(ProjectName)\$(Platform)\$(Configuration)\ + Build-$(ProjectName)\$(Platform)\$(Configuration)\ + false + $(SolutionDir)Build-$(ProjectName)\x86\$(Configuration)\ + Build-$(ProjectName)\x86\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + ..\SDL\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;wsock32.lib;opengl32.lib;winmm.lib;SDL.lib;%(AdditionalDependencies) + ..\codecs\x86;..\SDL\lib;%(AdditionalLibraryDirectories) + msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + MachineX86 + + + copy "$(SolutionDir)\..\codecs\x86\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL\lib\*.dll" "$(TargetDir)" + + + + + + MaxSpeed + true + ..\SDL\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;wsock32.lib;opengl32.lib;winmm.lib;SDL.lib;%(AdditionalDependencies) + ..\codecs\x86;..\SDL\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + copy "$(SolutionDir)\..\codecs\x86\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL\lib\*.dll" "$(TargetDir)" + + + + + + X64 + + + Disabled + ..\SDL\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USE_WINSOCK2;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;ws2_32.lib;opengl32.lib;winmm.lib;SDL.lib;%(AdditionalDependencies) + ..\codecs\x64;..\SDL\lib64;%(AdditionalLibraryDirectories) + msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + MachineX64 + + + copy "$(SolutionDir)\..\codecs\x64\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL\lib64\*.dll" "$(TargetDir)" + + + + + + X64 + + + MaxSpeed + true + ..\SDL\include;..\codecs\include;..\misc\include;..\..\Quake;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USE_WINSOCK2;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;USE_CODEC_MP3;USE_CODEC_VORBIS;USE_CODEC_WAVE;USE_CODEC_FLAC;USE_CODEC_OPUS;USE_CODEC_XMP;USE_CODEC_UMX;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + CompileAsC + + + libvorbisfile.lib;libvorbis.lib;libopusfile.lib;libopus.lib;libFLAC.lib;libogg.lib;libmad.lib;libxmp.lib;ws2_32.lib;opengl32.lib;winmm.lib;SDL.lib;%(AdditionalDependencies) + ..\codecs\x64;..\SDL\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + copy "$(SolutionDir)\..\codecs\x64\*.dll" "$(TargetDir)" +copy "$(SolutionDir)\..\SDL\lib64\*.dll" "$(TargetDir)" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/VisualStudio/quakespasm.vcxproj.filters b/Windows/VisualStudio/quakespasm.vcxproj.filters new file mode 100644 index 0000000..a62b9eb --- /dev/null +++ b/Windows/VisualStudio/quakespasm.vcxproj.filters @@ -0,0 +1,464 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/Windows/codecs/include/FLAC/callback.h b/Windows/codecs/include/FLAC/callback.h new file mode 100644 index 0000000..71bbaec --- /dev/null +++ b/Windows/codecs/include/FLAC/callback.h @@ -0,0 +1,185 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2004-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__CALLBACK_H +#define FLAC__CALLBACK_H + +#include "ordinals.h" +#include /* for size_t */ + +/** \file include/FLAC/callback.h + * + * \brief + * This module defines the structures for describing I/O callbacks + * to the other FLAC interfaces. + * + * See the detailed documentation for callbacks in the + * \link flac_callbacks callbacks \endlink module. + */ + +/** \defgroup flac_callbacks FLAC/callback.h: I/O callback structures + * \ingroup flac + * + * \brief + * This module defines the structures for describing I/O callbacks + * to the other FLAC interfaces. + * + * The purpose of the I/O callback functions is to create a common way + * for the metadata interfaces to handle I/O. + * + * Originally the metadata interfaces required filenames as the way of + * specifying FLAC files to operate on. This is problematic in some + * environments so there is an additional option to specify a set of + * callbacks for doing I/O on the FLAC file, instead of the filename. + * + * In addition to the callbacks, a FLAC__IOHandle type is defined as an + * opaque structure for a data source. + * + * The callback function prototypes are similar (but not identical) to the + * stdio functions fread, fwrite, fseek, ftell, feof, and fclose. If you use + * stdio streams to implement the callbacks, you can pass fread, fwrite, and + * fclose anywhere a FLAC__IOCallback_Read, FLAC__IOCallback_Write, or + * FLAC__IOCallback_Close is required, and a FILE* anywhere a FLAC__IOHandle + * is required. \warning You generally CANNOT directly use fseek or ftell + * for FLAC__IOCallback_Seek or FLAC__IOCallback_Tell since on most systems + * these use 32-bit offsets and FLAC requires 64-bit offsets to deal with + * large files. You will have to find an equivalent function (e.g. ftello), + * or write a wrapper. The same is true for feof() since this is usually + * implemented as a macro, not as a function whose address can be taken. + * + * \{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the opaque handle type used by the callbacks. Typically + * this is a \c FILE* or address of a file descriptor. + */ +typedef void* FLAC__IOHandle; + +/** Signature for the read callback. + * The signature and semantics match POSIX fread() implementations + * and can generally be used interchangeably. + * + * \param ptr The address of the read buffer. + * \param size The size of the records to be read. + * \param nmemb The number of records to be read. + * \param handle The handle to the data source. + * \retval size_t + * The number of records read. + */ +typedef size_t (*FLAC__IOCallback_Read) (void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle); + +/** Signature for the write callback. + * The signature and semantics match POSIX fwrite() implementations + * and can generally be used interchangeably. + * + * \param ptr The address of the write buffer. + * \param size The size of the records to be written. + * \param nmemb The number of records to be written. + * \param handle The handle to the data source. + * \retval size_t + * The number of records written. + */ +typedef size_t (*FLAC__IOCallback_Write) (const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle); + +/** Signature for the seek callback. + * The signature and semantics mostly match POSIX fseek() WITH ONE IMPORTANT + * EXCEPTION: the offset is a 64-bit type whereas fseek() is generally 'long' + * and 32-bits wide. + * + * \param handle The handle to the data source. + * \param offset The new position, relative to \a whence + * \param whence \c SEEK_SET, \c SEEK_CUR, or \c SEEK_END + * \retval int + * \c 0 on success, \c -1 on error. + */ +typedef int (*FLAC__IOCallback_Seek) (FLAC__IOHandle handle, FLAC__int64 offset, int whence); + +/** Signature for the tell callback. + * The signature and semantics mostly match POSIX ftell() WITH ONE IMPORTANT + * EXCEPTION: the offset is a 64-bit type whereas ftell() is generally 'long' + * and 32-bits wide. + * + * \param handle The handle to the data source. + * \retval FLAC__int64 + * The current position on success, \c -1 on error. + */ +typedef FLAC__int64 (*FLAC__IOCallback_Tell) (FLAC__IOHandle handle); + +/** Signature for the EOF callback. + * The signature and semantics mostly match POSIX feof() but WATCHOUT: + * on many systems, feof() is a macro, so in this case a wrapper function + * must be provided instead. + * + * \param handle The handle to the data source. + * \retval int + * \c 0 if not at end of file, nonzero if at end of file. + */ +typedef int (*FLAC__IOCallback_Eof) (FLAC__IOHandle handle); + +/** Signature for the close callback. + * The signature and semantics match POSIX fclose() implementations + * and can generally be used interchangeably. + * + * \param handle The handle to the data source. + * \retval int + * \c 0 on success, \c EOF on error. + */ +typedef int (*FLAC__IOCallback_Close) (FLAC__IOHandle handle); + +/** A structure for holding a set of callbacks. + * Each FLAC interface that requires a FLAC__IOCallbacks structure will + * describe which of the callbacks are required. The ones that are not + * required may be set to NULL. + * + * If the seek requirement for an interface is optional, you can signify that + * a data sorce is not seekable by setting the \a seek field to \c NULL. + */ +typedef struct { + FLAC__IOCallback_Read read; + FLAC__IOCallback_Write write; + FLAC__IOCallback_Seek seek; + FLAC__IOCallback_Tell tell; + FLAC__IOCallback_Eof eof; + FLAC__IOCallback_Close close; +} FLAC__IOCallbacks; + +/* \} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/codecs/include/FLAC/export.h b/Windows/codecs/include/FLAC/export.h new file mode 100644 index 0000000..4b2418f --- /dev/null +++ b/Windows/codecs/include/FLAC/export.h @@ -0,0 +1,97 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__EXPORT_H +#define FLAC__EXPORT_H + +/** \file include/FLAC/export.h + * + * \brief + * This module contains #defines and symbols for exporting function + * calls, and providing version information and compiled-in features. + * + * See the \link flac_export export \endlink module. + */ + +/** \defgroup flac_export FLAC/export.h: export symbols + * \ingroup flac + * + * \brief + * This module contains #defines and symbols for exporting function + * calls, and providing version information and compiled-in features. + * + * If you are compiling with MSVC and will link to the static library + * (libFLAC.lib) you should define FLAC__NO_DLL in your project to + * make sure the symbols are exported properly. + * + * \{ + */ + +#if defined(FLAC__NO_DLL) +#define FLAC_API + +#elif defined(_WIN32) /*defined(_MSC_VER)*/ +#ifdef FLAC_API_EXPORTS +#define FLAC_API __declspec(dllexport) +#else +#define FLAC_API __declspec(dllimport) +#endif + +#elif defined(FLAC__USE_VISIBILITY_ATTR) +#define FLAC_API __attribute__ ((visibility ("default"))) + +#else +#define FLAC_API + +#endif + +/** These #defines will mirror the libtool-based library version number, see + * http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning + */ +#define FLAC_API_VERSION_CURRENT 11 +#define FLAC_API_VERSION_REVISION 0 /**< see above */ +#define FLAC_API_VERSION_AGE 3 /**< see above */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** \c 1 if the library has been compiled with support for Ogg FLAC, else \c 0. */ +extern FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC; + +#ifdef __cplusplus +} +#endif + +/* \} */ + +#endif diff --git a/Windows/codecs/include/FLAC/format.h b/Windows/codecs/include/FLAC/format.h new file mode 100644 index 0000000..e4c1c1a --- /dev/null +++ b/Windows/codecs/include/FLAC/format.h @@ -0,0 +1,1023 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__FORMAT_H +#define FLAC__FORMAT_H + +#include "export.h" +#include "ordinals.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file include/FLAC/format.h + * + * \brief + * This module contains structure definitions for the representation + * of FLAC format components in memory. These are the basic + * structures used by the rest of the interfaces. + * + * See the detailed documentation in the + * \link flac_format format \endlink module. + */ + +/** \defgroup flac_format FLAC/format.h: format components + * \ingroup flac + * + * \brief + * This module contains structure definitions for the representation + * of FLAC format components in memory. These are the basic + * structures used by the rest of the interfaces. + * + * First, you should be familiar with the + * FLAC format. Many of the values here + * follow directly from the specification. As a user of libFLAC, the + * interesting parts really are the structures that describe the frame + * header and metadata blocks. + * + * The format structures here are very primitive, designed to store + * information in an efficient way. Reading information from the + * structures is easy but creating or modifying them directly is + * more complex. For the most part, as a user of a library, editing + * is not necessary; however, for metadata blocks it is, so there are + * convenience functions provided in the \link flac_metadata metadata + * module \endlink to simplify the manipulation of metadata blocks. + * + * \note + * It's not the best convention, but symbols ending in _LEN are in bits + * and _LENGTH are in bytes. _LENGTH symbols are \#defines instead of + * global variables because they are usually used when declaring byte + * arrays and some compilers require compile-time knowledge of array + * sizes when declared on the stack. + * + * \{ + */ + + +/* + Most of the values described in this file are defined by the FLAC + format specification. There is nothing to tune here. +*/ + +/** The largest legal metadata type code. */ +#define FLAC__MAX_METADATA_TYPE_CODE (126u) + +/** The minimum block size, in samples, permitted by the format. */ +#define FLAC__MIN_BLOCK_SIZE (16u) + +/** The maximum block size, in samples, permitted by the format. */ +#define FLAC__MAX_BLOCK_SIZE (65535u) + +/** The maximum block size, in samples, permitted by the FLAC subset for + * sample rates up to 48kHz. */ +#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u) + +/** The maximum number of channels permitted by the format. */ +#define FLAC__MAX_CHANNELS (8u) + +/** The minimum sample resolution permitted by the format. */ +#define FLAC__MIN_BITS_PER_SAMPLE (4u) + +/** The maximum sample resolution permitted by the format. */ +#define FLAC__MAX_BITS_PER_SAMPLE (32u) + +/** The maximum sample resolution permitted by libFLAC. + * + * \warning + * FLAC__MAX_BITS_PER_SAMPLE is the limit of the FLAC format. However, + * the reference encoder/decoder is currently limited to 24 bits because + * of prevalent 32-bit math, so make sure and use this value when + * appropriate. + */ +#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE (24u) + +/** The maximum sample rate permitted by the format. The value is + * ((2 ^ 16) - 1) * 10; see FLAC format + * as to why. + */ +#define FLAC__MAX_SAMPLE_RATE (655350u) + +/** The maximum LPC order permitted by the format. */ +#define FLAC__MAX_LPC_ORDER (32u) + +/** The maximum LPC order permitted by the FLAC subset for sample rates + * up to 48kHz. */ +#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u) + +/** The minimum quantized linear predictor coefficient precision + * permitted by the format. + */ +#define FLAC__MIN_QLP_COEFF_PRECISION (5u) + +/** The maximum quantized linear predictor coefficient precision + * permitted by the format. + */ +#define FLAC__MAX_QLP_COEFF_PRECISION (15u) + +/** The maximum order of the fixed predictors permitted by the format. */ +#define FLAC__MAX_FIXED_ORDER (4u) + +/** The maximum Rice partition order permitted by the format. */ +#define FLAC__MAX_RICE_PARTITION_ORDER (15u) + +/** The maximum Rice partition order permitted by the FLAC Subset. */ +#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u) + +/** The version string of the release, stamped onto the libraries and binaries. + * + * \note + * This does not correspond to the shared library version number, which + * is used to determine binary compatibility. + */ +extern FLAC_API const char *FLAC__VERSION_STRING; + +/** The vendor string inserted by the encoder into the VORBIS_COMMENT block. + * This is a NUL-terminated ASCII string; when inserted into the + * VORBIS_COMMENT the trailing null is stripped. + */ +extern FLAC_API const char *FLAC__VENDOR_STRING; + +/** The byte string representation of the beginning of a FLAC stream. */ +extern FLAC_API const FLAC__byte FLAC__STREAM_SYNC_STRING[4]; /* = "fLaC" */ + +/** The 32-bit integer big-endian representation of the beginning of + * a FLAC stream. + */ +extern FLAC_API const unsigned FLAC__STREAM_SYNC; /* = 0x664C6143 */ + +/** The length of the FLAC signature in bits. */ +extern FLAC_API const unsigned FLAC__STREAM_SYNC_LEN; /* = 32 bits */ + +/** The length of the FLAC signature in bytes. */ +#define FLAC__STREAM_SYNC_LENGTH (4u) + + +/***************************************************************************** + * + * Subframe structures + * + *****************************************************************************/ + +/*****************************************************************************/ + +/** An enumeration of the available entropy coding methods. */ +typedef enum { + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0, + /**< Residual is coded by partitioning into contexts, each with it's own + * 4-bit Rice parameter. */ + + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1 + /**< Residual is coded by partitioning into contexts, each with it's own + * 5-bit Rice parameter. */ +} FLAC__EntropyCodingMethodType; + +/** Maps a FLAC__EntropyCodingMethodType to a C string. + * + * Using a FLAC__EntropyCodingMethodType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__EntropyCodingMethodTypeString[]; + + +/** Contents of a Rice partitioned residual + */ +typedef struct { + + unsigned *parameters; + /**< The Rice parameters for each context. */ + + unsigned *raw_bits; + /**< Widths for escape-coded partitions. Will be non-zero for escaped + * partitions and zero for unescaped partitions. + */ + + unsigned capacity_by_order; + /**< The capacity of the \a parameters and \a raw_bits arrays + * specified as an order, i.e. the number of array elements + * allocated is 2 ^ \a capacity_by_order. + */ +} FLAC__EntropyCodingMethod_PartitionedRiceContents; + +/** Header for a Rice partitioned residual. (c.f. format specification) + */ +typedef struct { + + unsigned order; + /**< The partition order, i.e. # of contexts = 2 ^ \a order. */ + + const FLAC__EntropyCodingMethod_PartitionedRiceContents *contents; + /**< The context's Rice parameters and/or raw bits. */ + +} FLAC__EntropyCodingMethod_PartitionedRice; + +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN; /**< == 5 (bits) */ +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN; /**< == 5 (bits) */ + +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER; +/**< == (1<format specification) + */ +typedef struct { + FLAC__EntropyCodingMethodType type; + union { + FLAC__EntropyCodingMethod_PartitionedRice partitioned_rice; + } data; +} FLAC__EntropyCodingMethod; + +extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN; /**< == 2 (bits) */ + +/*****************************************************************************/ + +/** An enumeration of the available subframe types. */ +typedef enum { + FLAC__SUBFRAME_TYPE_CONSTANT = 0, /**< constant signal */ + FLAC__SUBFRAME_TYPE_VERBATIM = 1, /**< uncompressed signal */ + FLAC__SUBFRAME_TYPE_FIXED = 2, /**< fixed polynomial prediction */ + FLAC__SUBFRAME_TYPE_LPC = 3 /**< linear prediction */ +} FLAC__SubframeType; + +/** Maps a FLAC__SubframeType to a C string. + * + * Using a FLAC__SubframeType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__SubframeTypeString[]; + + +/** CONSTANT subframe. (c.f. format specification) + */ +typedef struct { + FLAC__int32 value; /**< The constant signal value. */ +} FLAC__Subframe_Constant; + + +/** VERBATIM subframe. (c.f. format specification) + */ +typedef struct { + const FLAC__int32 *data; /**< A pointer to verbatim signal. */ +} FLAC__Subframe_Verbatim; + + +/** FIXED subframe. (c.f. format specification) + */ +typedef struct { + FLAC__EntropyCodingMethod entropy_coding_method; + /**< The residual coding method. */ + + unsigned order; + /**< The polynomial order. */ + + FLAC__int32 warmup[FLAC__MAX_FIXED_ORDER]; + /**< Warmup samples to prime the predictor, length == order. */ + + const FLAC__int32 *residual; + /**< The residual signal, length == (blocksize minus order) samples. */ +} FLAC__Subframe_Fixed; + + +/** LPC subframe. (c.f. format specification) + */ +typedef struct { + FLAC__EntropyCodingMethod entropy_coding_method; + /**< The residual coding method. */ + + unsigned order; + /**< The FIR order. */ + + unsigned qlp_coeff_precision; + /**< Quantized FIR filter coefficient precision in bits. */ + + int quantization_level; + /**< The qlp coeff shift needed. */ + + FLAC__int32 qlp_coeff[FLAC__MAX_LPC_ORDER]; + /**< FIR filter coefficients. */ + + FLAC__int32 warmup[FLAC__MAX_LPC_ORDER]; + /**< Warmup samples to prime the predictor, length == order. */ + + const FLAC__int32 *residual; + /**< The residual signal, length == (blocksize minus order) samples. */ +} FLAC__Subframe_LPC; + +extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN; /**< == 5 (bits) */ + + +/** FLAC subframe structure. (c.f. format specification) + */ +typedef struct { + FLAC__SubframeType type; + union { + FLAC__Subframe_Constant constant; + FLAC__Subframe_Fixed fixed; + FLAC__Subframe_LPC lpc; + FLAC__Subframe_Verbatim verbatim; + } data; + unsigned wasted_bits; +} FLAC__Subframe; + +/** == 1 (bit) + * + * This used to be a zero-padding bit (hence the name + * FLAC__SUBFRAME_ZERO_PAD_LEN) but is now a reserved bit. It still has a + * mandatory value of \c 0 but in the future may take on the value \c 0 or \c 1 + * to mean something else. + */ +extern FLAC_API const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN; +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LEN; /**< == 6 (bits) */ +extern FLAC_API const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN; /**< == 1 (bit) */ + +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK; /**< = 0x00 */ +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK; /**< = 0x02 */ +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK; /**< = 0x10 */ +extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK; /**< = 0x40 */ + +/*****************************************************************************/ + + +/***************************************************************************** + * + * Frame structures + * + *****************************************************************************/ + +/** An enumeration of the available channel assignments. */ +typedef enum { + FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, /**< independent channels */ + FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, /**< left+side stereo */ + FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, /**< right+side stereo */ + FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 /**< mid+side stereo */ +} FLAC__ChannelAssignment; + +/** Maps a FLAC__ChannelAssignment to a C string. + * + * Using a FLAC__ChannelAssignment as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__ChannelAssignmentString[]; + +/** An enumeration of the possible frame numbering methods. */ +typedef enum { + FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, /**< number contains the frame number */ + FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER /**< number contains the sample number of first sample in frame */ +} FLAC__FrameNumberType; + +/** Maps a FLAC__FrameNumberType to a C string. + * + * Using a FLAC__FrameNumberType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__FrameNumberTypeString[]; + + +/** FLAC frame header structure. (c.f. format specification) + */ +typedef struct { + unsigned blocksize; + /**< The number of samples per subframe. */ + + unsigned sample_rate; + /**< The sample rate in Hz. */ + + unsigned channels; + /**< The number of channels (== number of subframes). */ + + FLAC__ChannelAssignment channel_assignment; + /**< The channel assignment for the frame. */ + + unsigned bits_per_sample; + /**< The sample resolution. */ + + FLAC__FrameNumberType number_type; + /**< The numbering scheme used for the frame. As a convenience, the + * decoder will always convert a frame number to a sample number because + * the rules are complex. */ + + union { + FLAC__uint32 frame_number; + FLAC__uint64 sample_number; + } number; + /**< The frame number or sample number of first sample in frame; + * use the \a number_type value to determine which to use. */ + + FLAC__uint8 crc; + /**< CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) + * of the raw frame header bytes, meaning everything before the CRC byte + * including the sync code. + */ +} FLAC__FrameHeader; + +extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC; /**< == 0x3ffe; the frame header sync code */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC_LEN; /**< == 14 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_RESERVED_LEN; /**< == 1 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN; /**< == 1 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN; /**< == 4 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN; /**< == 3 (bits) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__FRAME_HEADER_CRC_LEN; /**< == 8 (bits) */ + + +/** FLAC frame footer structure. (c.f. format specification) + */ +typedef struct { + FLAC__uint16 crc; + /**< CRC-16 (polynomial = x^16 + x^15 + x^2 + x^0, initialized with + * 0) of the bytes before the crc, back to and including the frame header + * sync code. + */ +} FLAC__FrameFooter; + +extern FLAC_API const unsigned FLAC__FRAME_FOOTER_CRC_LEN; /**< == 16 (bits) */ + + +/** FLAC frame structure. (c.f. format specification) + */ +typedef struct { + FLAC__FrameHeader header; + FLAC__Subframe subframes[FLAC__MAX_CHANNELS]; + FLAC__FrameFooter footer; +} FLAC__Frame; + +/*****************************************************************************/ + + +/***************************************************************************** + * + * Meta-data structures + * + *****************************************************************************/ + +/** An enumeration of the available metadata block types. */ +typedef enum { + + FLAC__METADATA_TYPE_STREAMINFO = 0, + /**< STREAMINFO block */ + + FLAC__METADATA_TYPE_PADDING = 1, + /**< PADDING block */ + + FLAC__METADATA_TYPE_APPLICATION = 2, + /**< APPLICATION block */ + + FLAC__METADATA_TYPE_SEEKTABLE = 3, + /**< SEEKTABLE block */ + + FLAC__METADATA_TYPE_VORBIS_COMMENT = 4, + /**< VORBISCOMMENT block (a.k.a. FLAC tags) */ + + FLAC__METADATA_TYPE_CUESHEET = 5, + /**< CUESHEET block */ + + FLAC__METADATA_TYPE_PICTURE = 6, + /**< PICTURE block */ + + FLAC__METADATA_TYPE_UNDEFINED = 7 + /**< marker to denote beginning of undefined type range; this number will increase as new metadata types are added */ + +} FLAC__MetadataType; + +/** Maps a FLAC__MetadataType to a C string. + * + * Using a FLAC__MetadataType as the index to this array will + * give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__MetadataTypeString[]; + + +/** FLAC STREAMINFO structure. (c.f. format specification) + */ +typedef struct { + unsigned min_blocksize, max_blocksize; + unsigned min_framesize, max_framesize; + unsigned sample_rate; + unsigned channels; + unsigned bits_per_sample; + FLAC__uint64 total_samples; + FLAC__byte md5sum[16]; +} FLAC__StreamMetadata_StreamInfo; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN; /**< == 16 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN; /**< == 16 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN; /**< == 24 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN; /**< == 24 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN; /**< == 20 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN; /**< == 3 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN; /**< == 5 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN; /**< == 36 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN; /**< == 128 (bits) */ + +/** The total stream length of the STREAMINFO block in bytes. */ +#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u) + +/** FLAC PADDING structure. (c.f. format specification) + */ +typedef struct { + int dummy; + /**< Conceptually this is an empty struct since we don't store the + * padding bytes. Empty structs are not allowed by some C compilers, + * hence the dummy. + */ +} FLAC__StreamMetadata_Padding; + + +/** FLAC APPLICATION structure. (c.f. format specification) + */ +typedef struct { + FLAC__byte id[4]; + FLAC__byte *data; +} FLAC__StreamMetadata_Application; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN; /**< == 32 (bits) */ + +/** SeekPoint structure used in SEEKTABLE blocks. (c.f. format specification) + */ +typedef struct { + FLAC__uint64 sample_number; + /**< The sample number of the target frame. */ + + FLAC__uint64 stream_offset; + /**< The offset, in bytes, of the target frame with respect to + * beginning of the first frame. */ + + unsigned frame_samples; + /**< The number of samples in the target frame. */ +} FLAC__StreamMetadata_SeekPoint; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN; /**< == 16 (bits) */ + +/** The total stream length of a seek point in bytes. */ +#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u) + +/** The value used in the \a sample_number field of + * FLAC__StreamMetadataSeekPoint used to indicate a placeholder + * point (== 0xffffffffffffffff). + */ +extern FLAC_API const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER; + + +/** FLAC SEEKTABLE structure. (c.f. format specification) + * + * \note From the format specification: + * - The seek points must be sorted by ascending sample number. + * - Each seek point's sample number must be the first sample of the + * target frame. + * - Each seek point's sample number must be unique within the table. + * - Existence of a SEEKTABLE block implies a correct setting of + * total_samples in the stream_info block. + * - Behavior is undefined when more than one SEEKTABLE block is + * present in a stream. + */ +typedef struct { + unsigned num_points; + FLAC__StreamMetadata_SeekPoint *points; +} FLAC__StreamMetadata_SeekTable; + + +/** Vorbis comment entry structure used in VORBIS_COMMENT blocks. (c.f. format specification) + * + * For convenience, the APIs maintain a trailing NUL character at the end of + * \a entry which is not counted toward \a length, i.e. + * \code strlen(entry) == length \endcode + */ +typedef struct { + FLAC__uint32 length; + FLAC__byte *entry; +} FLAC__StreamMetadata_VorbisComment_Entry; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN; /**< == 32 (bits) */ + + +/** FLAC VORBIS_COMMENT structure. (c.f. format specification) + */ +typedef struct { + FLAC__StreamMetadata_VorbisComment_Entry vendor_string; + FLAC__uint32 num_comments; + FLAC__StreamMetadata_VorbisComment_Entry *comments; +} FLAC__StreamMetadata_VorbisComment; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN; /**< == 32 (bits) */ + + +/** FLAC CUESHEET track index structure. (See the + * format specification for + * the full description of each field.) + */ +typedef struct { + FLAC__uint64 offset; + /**< Offset in samples, relative to the track offset, of the index + * point. + */ + + FLAC__byte number; + /**< The index point number. */ +} FLAC__StreamMetadata_CueSheet_Index; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN; /**< == 8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN; /**< == 3*8 (bits) */ + + +/** FLAC CUESHEET track structure. (See the + * format specification for + * the full description of each field.) + */ +typedef struct { + FLAC__uint64 offset; + /**< Track offset in samples, relative to the beginning of the FLAC audio stream. */ + + FLAC__byte number; + /**< The track number. */ + + char isrc[13]; + /**< Track ISRC. This is a 12-digit alphanumeric code plus a trailing \c NUL byte */ + + unsigned type:1; + /**< The track type: 0 for audio, 1 for non-audio. */ + + unsigned pre_emphasis:1; + /**< The pre-emphasis flag: 0 for no pre-emphasis, 1 for pre-emphasis. */ + + FLAC__byte num_indices; + /**< The number of track index points. */ + + FLAC__StreamMetadata_CueSheet_Index *indices; + /**< NULL if num_indices == 0, else pointer to array of index points. */ + +} FLAC__StreamMetadata_CueSheet_Track; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN; /**< == 8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN; /**< == 12*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN; /**< == 6+13*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN; /**< == 8 (bits) */ + + +/** FLAC CUESHEET structure. (See the + * format specification + * for the full description of each field.) + */ +typedef struct { + char media_catalog_number[129]; + /**< Media catalog number, in ASCII printable characters 0x20-0x7e. In + * general, the media catalog number may be 0 to 128 bytes long; any + * unused characters should be right-padded with NUL characters. + */ + + FLAC__uint64 lead_in; + /**< The number of lead-in samples. */ + + FLAC__bool is_cd; + /**< \c true if CUESHEET corresponds to a Compact Disc, else \c false. */ + + unsigned num_tracks; + /**< The number of tracks. */ + + FLAC__StreamMetadata_CueSheet_Track *tracks; + /**< NULL if num_tracks == 0, else pointer to array of tracks. */ + +} FLAC__StreamMetadata_CueSheet; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN; /**< == 128*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN; /**< == 64 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN; /**< == 7+258*8 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN; /**< == 8 (bits) */ + + +/** An enumeration of the PICTURE types (see FLAC__StreamMetadataPicture and id3 v2.4 APIC tag). */ +typedef enum { + FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, /**< Other */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, /**< 32x32 pixels 'file icon' (PNG only) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, /**< Other file icon */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3, /**< Cover (front) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, /**< Cover (back) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, /**< Leaflet page */ + FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, /**< Media (e.g. label side of CD) */ + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7, /**< Lead artist/lead performer/soloist */ + FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, /**< Artist/performer */ + FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, /**< Conductor */ + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, /**< Band/Orchestra */ + FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11, /**< Composer */ + FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, /**< Lyricist/text writer */ + FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, /**< Recording Location */ + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, /**< During recording */ + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15, /**< During performance */ + FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, /**< Movie/video screen capture */ + FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, /**< A bright coloured fish */ + FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, /**< Illustration */ + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19, /**< Band/artist logotype */ + FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, /**< Publisher/Studio logotype */ + FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED +} FLAC__StreamMetadata_Picture_Type; + +/** Maps a FLAC__StreamMetadata_Picture_Type to a C string. + * + * Using a FLAC__StreamMetadata_Picture_Type as the index to this array + * will give the string equivalent. The contents should not be + * modified. + */ +extern FLAC_API const char * const FLAC__StreamMetadata_Picture_TypeString[]; + +/** FLAC PICTURE structure. (See the + * format specification + * for the full description of each field.) + */ +typedef struct { + FLAC__StreamMetadata_Picture_Type type; + /**< The kind of picture stored. */ + + char *mime_type; + /**< Picture data's MIME type, in ASCII printable characters + * 0x20-0x7e, NUL terminated. For best compatibility with players, + * use picture data of MIME type \c image/jpeg or \c image/png. A + * MIME type of '-->' is also allowed, in which case the picture + * data should be a complete URL. In file storage, the MIME type is + * stored as a 32-bit length followed by the ASCII string with no NUL + * terminator, but is converted to a plain C string in this structure + * for convenience. + */ + + FLAC__byte *description; + /**< Picture's description in UTF-8, NUL terminated. In file storage, + * the description is stored as a 32-bit length followed by the UTF-8 + * string with no NUL terminator, but is converted to a plain C string + * in this structure for convenience. + */ + + FLAC__uint32 width; + /**< Picture's width in pixels. */ + + FLAC__uint32 height; + /**< Picture's height in pixels. */ + + FLAC__uint32 depth; + /**< Picture's color depth in bits-per-pixel. */ + + FLAC__uint32 colors; + /**< For indexed palettes (like GIF), picture's number of colors (the + * number of palette entries), or \c 0 for non-indexed (i.e. 2^depth). + */ + + FLAC__uint32 data_length; + /**< Length of binary picture data in bytes. */ + + FLAC__byte *data; + /**< Binary picture data. */ + +} FLAC__StreamMetadata_Picture; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN; /**< == 32 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN; /**< == 32 (bits) */ + + +/** Structure that is used when a metadata block of unknown type is loaded. + * The contents are opaque. The structure is used only internally to + * correctly handle unknown metadata. + */ +typedef struct { + FLAC__byte *data; +} FLAC__StreamMetadata_Unknown; + + +/** FLAC metadata block structure. (c.f. format specification) + */ +typedef struct { + FLAC__MetadataType type; + /**< The type of the metadata block; used determine which member of the + * \a data union to dereference. If type >= FLAC__METADATA_TYPE_UNDEFINED + * then \a data.unknown must be used. */ + + FLAC__bool is_last; + /**< \c true if this metadata block is the last, else \a false */ + + unsigned length; + /**< Length, in bytes, of the block data as it appears in the stream. */ + + union { + FLAC__StreamMetadata_StreamInfo stream_info; + FLAC__StreamMetadata_Padding padding; + FLAC__StreamMetadata_Application application; + FLAC__StreamMetadata_SeekTable seek_table; + FLAC__StreamMetadata_VorbisComment vorbis_comment; + FLAC__StreamMetadata_CueSheet cue_sheet; + FLAC__StreamMetadata_Picture picture; + FLAC__StreamMetadata_Unknown unknown; + } data; + /**< Polymorphic block data; use the \a type value to determine which + * to use. */ +} FLAC__StreamMetadata; + +extern FLAC_API const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN; /**< == 1 (bit) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_TYPE_LEN; /**< == 7 (bits) */ +extern FLAC_API const unsigned FLAC__STREAM_METADATA_LENGTH_LEN; /**< == 24 (bits) */ + +/** The total stream length of a metadata block header in bytes. */ +#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u) + +/*****************************************************************************/ + + +/***************************************************************************** + * + * Utility functions + * + *****************************************************************************/ + +/** Tests that a sample rate is valid for FLAC. + * + * \param sample_rate The sample rate to test for compliance. + * \retval FLAC__bool + * \c true if the given sample rate conforms to the specification, else + * \c false. + */ +FLAC_API FLAC__bool FLAC__format_sample_rate_is_valid(unsigned sample_rate); + +/** Tests that a blocksize at the given sample rate is valid for the FLAC + * subset. + * + * \param blocksize The blocksize to test for compliance. + * \param sample_rate The sample rate is needed, since the valid subset + * blocksize depends on the sample rate. + * \retval FLAC__bool + * \c true if the given blocksize conforms to the specification for the + * subset at the given sample rate, else \c false. + */ +FLAC_API FLAC__bool FLAC__format_blocksize_is_subset(unsigned blocksize, unsigned sample_rate); + +/** Tests that a sample rate is valid for the FLAC subset. The subset rules + * for valid sample rates are slightly more complex since the rate has to + * be expressible completely in the frame header. + * + * \param sample_rate The sample rate to test for compliance. + * \retval FLAC__bool + * \c true if the given sample rate conforms to the specification for the + * subset, else \c false. + */ +FLAC_API FLAC__bool FLAC__format_sample_rate_is_subset(unsigned sample_rate); + +/** Check a Vorbis comment entry name to see if it conforms to the Vorbis + * comment specification. + * + * Vorbis comment names must be composed only of characters from + * [0x20-0x3C,0x3E-0x7D]. + * + * \param name A NUL-terminated string to be checked. + * \assert + * \code name != NULL \endcode + * \retval FLAC__bool + * \c false if entry name is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal(const char *name); + +/** Check a Vorbis comment entry value to see if it conforms to the Vorbis + * comment specification. + * + * Vorbis comment values must be valid UTF-8 sequences. + * + * \param value A string to be checked. + * \param length A the length of \a value in bytes. May be + * \c (unsigned)(-1) to indicate that \a value is a plain + * UTF-8 NUL-terminated string. + * \assert + * \code value != NULL \endcode + * \retval FLAC__bool + * \c false if entry name is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal(const FLAC__byte *value, unsigned length); + +/** Check a Vorbis comment entry to see if it conforms to the Vorbis + * comment specification. + * + * Vorbis comment entries must be of the form 'name=value', and 'name' and + * 'value' must be legal according to + * FLAC__format_vorbiscomment_entry_name_is_legal() and + * FLAC__format_vorbiscomment_entry_value_is_legal() respectively. + * + * \param entry An entry to be checked. + * \param length The length of \a entry in bytes. + * \assert + * \code value != NULL \endcode + * \retval FLAC__bool + * \c false if entry name is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_is_legal(const FLAC__byte *entry, unsigned length); + +/** Check a seek table to see if it conforms to the FLAC specification. + * See the format specification for limits on the contents of the + * seek table. + * + * \param seek_table A pointer to a seek table to be checked. + * \assert + * \code seek_table != NULL \endcode + * \retval FLAC__bool + * \c false if seek table is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_seektable_is_legal(const FLAC__StreamMetadata_SeekTable *seek_table); + +/** Sort a seek table's seek points according to the format specification. + * This includes a "unique-ification" step to remove duplicates, i.e. + * seek points with identical \a sample_number values. Duplicate seek + * points are converted into placeholder points and sorted to the end of + * the table. + * + * \param seek_table A pointer to a seek table to be sorted. + * \assert + * \code seek_table != NULL \endcode + * \retval unsigned + * The number of duplicate seek points converted into placeholders. + */ +FLAC_API unsigned FLAC__format_seektable_sort(FLAC__StreamMetadata_SeekTable *seek_table); + +/** Check a cue sheet to see if it conforms to the FLAC specification. + * See the format specification for limits on the contents of the + * cue sheet. + * + * \param cue_sheet A pointer to an existing cue sheet to be checked. + * \param check_cd_da_subset If \c true, check CUESHEET against more + * stringent requirements for a CD-DA (audio) disc. + * \param violation Address of a pointer to a string. If there is a + * violation, a pointer to a string explanation of the + * violation will be returned here. \a violation may be + * \c NULL if you don't need the returned string. Do not + * free the returned string; it will always point to static + * data. + * \assert + * \code cue_sheet != NULL \endcode + * \retval FLAC__bool + * \c false if cue sheet is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_cuesheet_is_legal(const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation); + +/** Check picture data to see if it conforms to the FLAC specification. + * See the format specification for limits on the contents of the + * PICTURE block. + * + * \param picture A pointer to existing picture data to be checked. + * \param violation Address of a pointer to a string. If there is a + * violation, a pointer to a string explanation of the + * violation will be returned here. \a violation may be + * \c NULL if you don't need the returned string. Do not + * free the returned string; it will always point to static + * data. + * \assert + * \code picture != NULL \endcode + * \retval FLAC__bool + * \c false if picture data is illegal, else \c true. + */ +FLAC_API FLAC__bool FLAC__format_picture_is_legal(const FLAC__StreamMetadata_Picture *picture, const char **violation); + +/* \} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/codecs/include/FLAC/ordinals.h b/Windows/codecs/include/FLAC/ordinals.h new file mode 100644 index 0000000..a057299 --- /dev/null +++ b/Windows/codecs/include/FLAC/ordinals.h @@ -0,0 +1,86 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__ORDINALS_H +#define FLAC__ORDINALS_H + +#if defined(_MSC_VER) && _MSC_VER < 1600 + +/* Microsoft Visual Studio earlier than the 2010 version did not provide + * the 1999 ISO C Standard header file . + */ + +typedef __int8 FLAC__int8; +typedef unsigned __int8 FLAC__uint8; + +typedef __int16 FLAC__int16; +typedef __int32 FLAC__int32; +typedef __int64 FLAC__int64; +typedef unsigned __int16 FLAC__uint16; +typedef unsigned __int32 FLAC__uint32; +typedef unsigned __int64 FLAC__uint64; + +#else + +/* For MSVC 2010 and everything else which provides . */ + +#include + +typedef int8_t FLAC__int8; +typedef uint8_t FLAC__uint8; + +typedef int16_t FLAC__int16; +typedef int32_t FLAC__int32; +typedef int64_t FLAC__int64; +typedef uint16_t FLAC__uint16; +typedef uint32_t FLAC__uint32; +typedef uint64_t FLAC__uint64; + +#endif + +typedef int FLAC__bool; + +typedef FLAC__uint8 FLAC__byte; + + +#ifdef true +#undef true +#endif +#ifdef false +#undef false +#endif +#ifndef __cplusplus +#define true 1 +#define false 0 +#endif + +#endif diff --git a/Windows/codecs/include/FLAC/stream_decoder.h b/Windows/codecs/include/FLAC/stream_decoder.h new file mode 100644 index 0000000..99a12a3 --- /dev/null +++ b/Windows/codecs/include/FLAC/stream_decoder.h @@ -0,0 +1,1559 @@ +/* libFLAC - Free Lossless Audio Codec library + * Copyright (C) 2000-2009 Josh Coalson + * Copyright (C) 2011-2013 Xiph.Org Foundation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Xiph.org Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FLAC__STREAM_DECODER_H +#define FLAC__STREAM_DECODER_H + +#include /* for FILE */ +#include "export.h" +#include "format.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** \file include/FLAC/stream_decoder.h + * + * \brief + * This module contains the functions which implement the stream + * decoder. + * + * See the detailed documentation in the + * \link flac_stream_decoder stream decoder \endlink module. + */ + +/** \defgroup flac_decoder FLAC/ \*_decoder.h: decoder interfaces + * \ingroup flac + * + * \brief + * This module describes the decoder layers provided by libFLAC. + * + * The stream decoder can be used to decode complete streams either from + * the client via callbacks, or directly from a file, depending on how + * it is initialized. When decoding via callbacks, the client provides + * callbacks for reading FLAC data and writing decoded samples, and + * handling metadata and errors. If the client also supplies seek-related + * callback, the decoder function for sample-accurate seeking within the + * FLAC input is also available. When decoding from a file, the client + * needs only supply a filename or open \c FILE* and write/metadata/error + * callbacks; the rest of the callbacks are supplied internally. For more + * info see the \link flac_stream_decoder stream decoder \endlink module. + */ + +/** \defgroup flac_stream_decoder FLAC/stream_decoder.h: stream decoder interface + * \ingroup flac_decoder + * + * \brief + * This module contains the functions which implement the stream + * decoder. + * + * The stream decoder can decode native FLAC, and optionally Ogg FLAC + * (check FLAC_API_SUPPORTS_OGG_FLAC) streams and files. + * + * The basic usage of this decoder is as follows: + * - The program creates an instance of a decoder using + * FLAC__stream_decoder_new(). + * - The program overrides the default settings using + * FLAC__stream_decoder_set_*() functions. + * - The program initializes the instance to validate the settings and + * prepare for decoding using + * - FLAC__stream_decoder_init_stream() or FLAC__stream_decoder_init_FILE() + * or FLAC__stream_decoder_init_file() for native FLAC, + * - FLAC__stream_decoder_init_ogg_stream() or FLAC__stream_decoder_init_ogg_FILE() + * or FLAC__stream_decoder_init_ogg_file() for Ogg FLAC + * - The program calls the FLAC__stream_decoder_process_*() functions + * to decode data, which subsequently calls the callbacks. + * - The program finishes the decoding with FLAC__stream_decoder_finish(), + * which flushes the input and output and resets the decoder to the + * uninitialized state. + * - The instance may be used again or deleted with + * FLAC__stream_decoder_delete(). + * + * In more detail, the program will create a new instance by calling + * FLAC__stream_decoder_new(), then call FLAC__stream_decoder_set_*() + * functions to override the default decoder options, and call + * one of the FLAC__stream_decoder_init_*() functions. + * + * There are three initialization functions for native FLAC, one for + * setting up the decoder to decode FLAC data from the client via + * callbacks, and two for decoding directly from a FLAC file. + * + * For decoding via callbacks, use FLAC__stream_decoder_init_stream(). + * You must also supply several callbacks for handling I/O. Some (like + * seeking) are optional, depending on the capabilities of the input. + * + * For decoding directly from a file, use FLAC__stream_decoder_init_FILE() + * or FLAC__stream_decoder_init_file(). Then you must only supply an open + * \c FILE* or filename and fewer callbacks; the decoder will handle + * the other callbacks internally. + * + * There are three similarly-named init functions for decoding from Ogg + * FLAC streams. Check \c FLAC_API_SUPPORTS_OGG_FLAC to find out if the + * library has been built with Ogg support. + * + * Once the decoder is initialized, your program will call one of several + * functions to start the decoding process: + * + * - FLAC__stream_decoder_process_single() - Tells the decoder to process at + * most one metadata block or audio frame and return, calling either the + * metadata callback or write callback, respectively, once. If the decoder + * loses sync it will return with only the error callback being called. + * - FLAC__stream_decoder_process_until_end_of_metadata() - Tells the decoder + * to process the stream from the current location and stop upon reaching + * the first audio frame. The client will get one metadata, write, or error + * callback per metadata block, audio frame, or sync error, respectively. + * - FLAC__stream_decoder_process_until_end_of_stream() - Tells the decoder + * to process the stream from the current location until the read callback + * returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM or + * FLAC__STREAM_DECODER_READ_STATUS_ABORT. The client will get one metadata, + * write, or error callback per metadata block, audio frame, or sync error, + * respectively. + * + * When the decoder has finished decoding (normally or through an abort), + * the instance is finished by calling FLAC__stream_decoder_finish(), which + * ensures the decoder is in the correct state and frees memory. Then the + * instance may be deleted with FLAC__stream_decoder_delete() or initialized + * again to decode another stream. + * + * Seeking is exposed through the FLAC__stream_decoder_seek_absolute() method. + * At any point after the stream decoder has been initialized, the client can + * call this function to seek to an exact sample within the stream. + * Subsequently, the first time the write callback is called it will be + * passed a (possibly partial) block starting at that sample. + * + * If the client cannot seek via the callback interface provided, but still + * has another way of seeking, it can flush the decoder using + * FLAC__stream_decoder_flush() and start feeding data from the new position + * through the read callback. + * + * The stream decoder also provides MD5 signature checking. If this is + * turned on before initialization, FLAC__stream_decoder_finish() will + * report when the decoded MD5 signature does not match the one stored + * in the STREAMINFO block. MD5 checking is automatically turned off + * (until the next FLAC__stream_decoder_reset()) if there is no signature + * in the STREAMINFO block or when a seek is attempted. + * + * The FLAC__stream_decoder_set_metadata_*() functions deserve special + * attention. By default, the decoder only calls the metadata_callback for + * the STREAMINFO block. These functions allow you to tell the decoder + * explicitly which blocks to parse and return via the metadata_callback + * and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), + * FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), + * FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify + * which blocks to return. Remember that metadata blocks can potentially + * be big (for example, cover art) so filtering out the ones you don't + * use can reduce the memory requirements of the decoder. Also note the + * special forms FLAC__stream_decoder_set_metadata_respond_application(id) + * and FLAC__stream_decoder_set_metadata_ignore_application(id) for + * filtering APPLICATION blocks based on the application ID. + * + * STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but + * they still can legally be filtered from the metadata_callback. + * + * \note + * The "set" functions may only be called when the decoder is in the + * state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after + * FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but + * before FLAC__stream_decoder_init_*(). If this is the case they will + * return \c true, otherwise \c false. + * + * \note + * FLAC__stream_decoder_finish() resets all settings to the constructor + * defaults, including the callbacks. + * + * \{ + */ + + +/** State values for a FLAC__StreamDecoder + * + * The decoder's state can be obtained by calling FLAC__stream_decoder_get_state(). + */ +typedef enum { + + FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0, + /**< The decoder is ready to search for metadata. */ + + FLAC__STREAM_DECODER_READ_METADATA, + /**< The decoder is ready to or is in the process of reading metadata. */ + + FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC, + /**< The decoder is ready to or is in the process of searching for the + * frame sync code. + */ + + FLAC__STREAM_DECODER_READ_FRAME, + /**< The decoder is ready to or is in the process of reading a frame. */ + + FLAC__STREAM_DECODER_END_OF_STREAM, + /**< The decoder has reached the end of the stream. */ + + FLAC__STREAM_DECODER_OGG_ERROR, + /**< An error occurred in the underlying Ogg layer. */ + + FLAC__STREAM_DECODER_SEEK_ERROR, + /**< An error occurred while seeking. The decoder must be flushed + * with FLAC__stream_decoder_flush() or reset with + * FLAC__stream_decoder_reset() before decoding can continue. + */ + + FLAC__STREAM_DECODER_ABORTED, + /**< The decoder was aborted by the read or write callback. */ + + FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR, + /**< An error occurred allocating memory. The decoder is in an invalid + * state and can no longer be used. + */ + + FLAC__STREAM_DECODER_UNINITIALIZED + /**< The decoder is in the uninitialized state; one of the + * FLAC__stream_decoder_init_*() functions must be called before samples + * can be processed. + */ + +} FLAC__StreamDecoderState; + +/** Maps a FLAC__StreamDecoderState to a C string. + * + * Using a FLAC__StreamDecoderState as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderStateString[]; + + +/** Possible return values for the FLAC__stream_decoder_init_*() functions. + */ +typedef enum { + + FLAC__STREAM_DECODER_INIT_STATUS_OK = 0, + /**< Initialization was successful. */ + + FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER, + /**< The library was not compiled with support for the given container + * format. + */ + + FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS, + /**< A required callback was not supplied. */ + + FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR, + /**< An error occurred allocating memory. */ + + FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE, + /**< fopen() failed in FLAC__stream_decoder_init_file() or + * FLAC__stream_decoder_init_ogg_file(). */ + + FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED + /**< FLAC__stream_decoder_init_*() was called when the decoder was + * already initialized, usually because + * FLAC__stream_decoder_finish() was not called. + */ + +} FLAC__StreamDecoderInitStatus; + +/** Maps a FLAC__StreamDecoderInitStatus to a C string. + * + * Using a FLAC__StreamDecoderInitStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderInitStatusString[]; + + +/** Return values for the FLAC__StreamDecoder read callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, + /**< The read was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM, + /**< The read was attempted while at the end of the stream. Note that + * the client must only return this value when the read callback was + * called when already at the end of the stream. Otherwise, if the read + * itself moves to the end of the stream, the client should still return + * the data and \c FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, and then on + * the next read callback it should return + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM with a byte count + * of \c 0. + */ + + FLAC__STREAM_DECODER_READ_STATUS_ABORT + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + +} FLAC__StreamDecoderReadStatus; + +/** Maps a FLAC__StreamDecoderReadStatus to a C string. + * + * Using a FLAC__StreamDecoderReadStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderReadStatusString[]; + + +/** Return values for the FLAC__StreamDecoder seek callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_SEEK_STATUS_OK, + /**< The seek was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_SEEK_STATUS_ERROR, + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + + FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + /**< Client does not support seeking. */ + +} FLAC__StreamDecoderSeekStatus; + +/** Maps a FLAC__StreamDecoderSeekStatus to a C string. + * + * Using a FLAC__StreamDecoderSeekStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderSeekStatusString[]; + + +/** Return values for the FLAC__StreamDecoder tell callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_TELL_STATUS_OK, + /**< The tell was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_TELL_STATUS_ERROR, + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + + FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + /**< Client does not support telling the position. */ + +} FLAC__StreamDecoderTellStatus; + +/** Maps a FLAC__StreamDecoderTellStatus to a C string. + * + * Using a FLAC__StreamDecoderTellStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderTellStatusString[]; + + +/** Return values for the FLAC__StreamDecoder length callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_LENGTH_STATUS_OK, + /**< The length call was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR, + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + + FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + /**< Client does not support reporting the length. */ + +} FLAC__StreamDecoderLengthStatus; + +/** Maps a FLAC__StreamDecoderLengthStatus to a C string. + * + * Using a FLAC__StreamDecoderLengthStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderLengthStatusString[]; + + +/** Return values for the FLAC__StreamDecoder write callback. + */ +typedef enum { + + FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE, + /**< The write was OK and decoding can continue. */ + + FLAC__STREAM_DECODER_WRITE_STATUS_ABORT + /**< An unrecoverable error occurred. The decoder will return from the process call. */ + +} FLAC__StreamDecoderWriteStatus; + +/** Maps a FLAC__StreamDecoderWriteStatus to a C string. + * + * Using a FLAC__StreamDecoderWriteStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderWriteStatusString[]; + + +/** Possible values passed back to the FLAC__StreamDecoder error callback. + * \c FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC is the generic catch- + * all. The rest could be caused by bad sync (false synchronization on + * data that is not the start of a frame) or corrupted data. The error + * itself is the decoder's best guess at what happened assuming a correct + * sync. For example \c FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER + * could be caused by a correct sync on the start of a frame, but some + * data in the frame header was corrupted. Or it could be the result of + * syncing on a point the stream that looked like the starting of a frame + * but was not. \c FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + * could be because the decoder encountered a valid frame made by a future + * version of the encoder which it cannot parse, or because of a false + * sync making it appear as though an encountered frame was generated by + * a future encoder. + */ +typedef enum { + + FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC, + /**< An error in the stream caused the decoder to lose synchronization. */ + + FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER, + /**< The decoder encountered a corrupted frame header. */ + + FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH, + /**< The frame's data did not match the CRC in the footer. */ + + FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + /**< The decoder encountered reserved fields in use in the stream. */ + +} FLAC__StreamDecoderErrorStatus; + +/** Maps a FLAC__StreamDecoderErrorStatus to a C string. + * + * Using a FLAC__StreamDecoderErrorStatus as the index to this array + * will give the string equivalent. The contents should not be modified. + */ +extern FLAC_API const char * const FLAC__StreamDecoderErrorStatusString[]; + + +/*********************************************************************** + * + * class FLAC__StreamDecoder + * + ***********************************************************************/ + +struct FLAC__StreamDecoderProtected; +struct FLAC__StreamDecoderPrivate; +/** The opaque structure definition for the stream decoder type. + * See the \link flac_stream_decoder stream decoder module \endlink + * for a detailed description. + */ +typedef struct { + struct FLAC__StreamDecoderProtected *protected_; /* avoid the C++ keyword 'protected' */ + struct FLAC__StreamDecoderPrivate *private_; /* avoid the C++ keyword 'private' */ +} FLAC__StreamDecoder; + +/** Signature for the read callback. + * + * A function pointer matching this signature must be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder needs more input data. The address of the + * buffer to be filled is supplied, along with the number of bytes the + * buffer can hold. The callback may choose to supply less data and + * modify the byte count but must be careful not to overflow the buffer. + * The callback then returns a status code chosen from + * FLAC__StreamDecoderReadStatus. + * + * Here is an example of a read callback for stdio streams: + * \code + * FLAC__StreamDecoderReadStatus read_cb(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * if(*bytes > 0) { + * *bytes = fread(buffer, sizeof(FLAC__byte), *bytes, file); + * if(ferror(file)) + * return FLAC__STREAM_DECODER_READ_STATUS_ABORT; + * else if(*bytes == 0) + * return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + * else + * return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + * } + * else + * return FLAC__STREAM_DECODER_READ_STATUS_ABORT; + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param buffer A pointer to a location for the callee to store + * data to be decoded. + * \param bytes A pointer to the size of the buffer. On entry + * to the callback, it contains the maximum number + * of bytes that may be stored in \a buffer. The + * callee must set it to the actual number of bytes + * stored (0 in case of error or end-of-stream) before + * returning. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderReadStatus + * The callee's return status. Note that the callback should return + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM if and only if + * zero bytes were read and there is no more data to be read. + */ +typedef FLAC__StreamDecoderReadStatus (*FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); + +/** Signature for the seek callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder needs to seek the input stream. The decoder + * will pass the absolute byte offset to seek to, 0 meaning the + * beginning of the stream. + * + * Here is an example of a seek callback for stdio streams: + * \code + * FLAC__StreamDecoderSeekStatus seek_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * if(file == stdin) + * return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED; + * else if(fseeko(file, (off_t)absolute_byte_offset, SEEK_SET) < 0) + * return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + * else + * return FLAC__STREAM_DECODER_SEEK_STATUS_OK; + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param absolute_byte_offset The offset from the beginning of the stream + * to seek to. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderSeekStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderSeekStatus (*FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data); + +/** Signature for the tell callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder wants to know the current position of the + * stream. The callback should return the byte offset from the + * beginning of the stream. + * + * Here is an example of a tell callback for stdio streams: + * \code + * FLAC__StreamDecoderTellStatus tell_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * off_t pos; + * if(file == stdin) + * return FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED; + * else if((pos = ftello(file)) < 0) + * return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; + * else { + * *absolute_byte_offset = (FLAC__uint64)pos; + * return FLAC__STREAM_DECODER_TELL_STATUS_OK; + * } + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param absolute_byte_offset A pointer to storage for the current offset + * from the beginning of the stream. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderTellStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderTellStatus (*FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data); + +/** Signature for the length callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder wants to know the total length of the stream + * in bytes. + * + * Here is an example of a length callback for stdio streams: + * \code + * FLAC__StreamDecoderLengthStatus length_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + * { + * FILE *file = ((MyClientData*)client_data)->file; + * struct stat filestats; + * + * if(file == stdin) + * return FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED; + * else if(fstat(fileno(file), &filestats) != 0) + * return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR; + * else { + * *stream_length = (FLAC__uint64)filestats.st_size; + * return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; + * } + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param stream_length A pointer to storage for the length of the stream + * in bytes. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderLengthStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderLengthStatus (*FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data); + +/** Signature for the EOF callback. + * + * A function pointer matching this signature may be passed to + * FLAC__stream_decoder_init*_stream(). The supplied function will be + * called when the decoder needs to know if the end of the stream has + * been reached. + * + * Here is an example of a EOF callback for stdio streams: + * FLAC__bool eof_cb(const FLAC__StreamDecoder *decoder, void *client_data) + * \code + * { + * FILE *file = ((MyClientData*)client_data)->file; + * return feof(file)? true : false; + * } + * \endcode + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__bool + * \c true if the currently at the end of the stream, else \c false. + */ +typedef FLAC__bool (*FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data); + +/** Signature for the write callback. + * + * A function pointer matching this signature must be passed to one of + * the FLAC__stream_decoder_init_*() functions. + * The supplied function will be called when the decoder has decoded a + * single audio frame. The decoder will pass the frame metadata as well + * as an array of pointers (one for each channel) pointing to the + * decoded audio. + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param frame The description of the decoded frame. See + * FLAC__Frame. + * \param buffer An array of pointers to decoded channels of data. + * Each pointer will point to an array of signed + * samples of length \a frame->header.blocksize. + * Channels will be ordered according to the FLAC + * specification; see the documentation for the + * frame header. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + * \retval FLAC__StreamDecoderWriteStatus + * The callee's return status. + */ +typedef FLAC__StreamDecoderWriteStatus (*FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); + +/** Signature for the metadata callback. + * + * A function pointer matching this signature must be passed to one of + * the FLAC__stream_decoder_init_*() functions. + * The supplied function will be called when the decoder has decoded a + * metadata block. In a valid FLAC file there will always be one + * \c STREAMINFO block, followed by zero or more other metadata blocks. + * These will be supplied by the decoder in the same order as they + * appear in the stream and always before the first audio frame (i.e. + * write callback). The metadata block that is passed in must not be + * modified, and it doesn't live beyond the callback, so you should make + * a copy of it with FLAC__metadata_object_clone() if you will need it + * elsewhere. Since metadata blocks can potentially be large, by + * default the decoder only calls the metadata callback for the + * \c STREAMINFO block; you can instruct the decoder to pass or filter + * other blocks with FLAC__stream_decoder_set_metadata_*() calls. + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param metadata The decoded metadata block. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + */ +typedef void (*FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); + +/** Signature for the error callback. + * + * A function pointer matching this signature must be passed to one of + * the FLAC__stream_decoder_init_*() functions. + * The supplied function will be called whenever an error occurs during + * decoding. + * + * \note In general, FLAC__StreamDecoder functions which change the + * state should not be called on the \a decoder while in the callback. + * + * \param decoder The decoder instance calling the callback. + * \param status The error encountered by the decoder. + * \param client_data The callee's client data set through + * FLAC__stream_decoder_init_*(). + */ +typedef void (*FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); + + +/*********************************************************************** + * + * Class constructor/destructor + * + ***********************************************************************/ + +/** Create a new stream decoder instance. The instance is created with + * default settings; see the individual FLAC__stream_decoder_set_*() + * functions for each setting's default. + * + * \retval FLAC__StreamDecoder* + * \c NULL if there was an error allocating memory, else the new instance. + */ +FLAC_API FLAC__StreamDecoder *FLAC__stream_decoder_new(void); + +/** Free a decoder instance. Deletes the object pointed to by \a decoder. + * + * \param decoder A pointer to an existing decoder. + * \assert + * \code decoder != NULL \endcode + */ +FLAC_API void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder); + + +/*********************************************************************** + * + * Public class method prototypes + * + ***********************************************************************/ + +/** Set the serial number for the FLAC stream within the Ogg container. + * The default behavior is to use the serial number of the first Ogg + * page. Setting a serial number here will explicitly specify which + * stream is to be decoded. + * + * \note + * This does not need to be set for native FLAC decoding. + * + * \default \c use serial number of first page + * \param decoder A decoder instance to set. + * \param serial_number See above. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_ogg_serial_number(FLAC__StreamDecoder *decoder, long serial_number); + +/** Set the "MD5 signature checking" flag. If \c true, the decoder will + * compute the MD5 signature of the unencoded audio data while decoding + * and compare it to the signature from the STREAMINFO block, if it + * exists, during FLAC__stream_decoder_finish(). + * + * MD5 signature checking will be turned off (until the next + * FLAC__stream_decoder_reset()) if there is no signature in the + * STREAMINFO block or when a seek is attempted. + * + * Clients that do not use the MD5 check should leave this off to speed + * up decoding. + * + * \default \c false + * \param decoder A decoder instance to set. + * \param value Flag value (see above). + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value); + +/** Direct the decoder to pass on all metadata blocks of type \a type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param type See above. + * \assert + * \code decoder != NULL \endcode + * \a type is valid + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type); + +/** Direct the decoder to pass on all APPLICATION metadata blocks of the + * given \a id. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param id See above. + * \assert + * \code decoder != NULL \endcode + * \code id != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]); + +/** Direct the decoder to pass on all metadata blocks of any type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_all(FLAC__StreamDecoder *decoder); + +/** Direct the decoder to filter out all metadata blocks of type \a type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param type See above. + * \assert + * \code decoder != NULL \endcode + * \a type is valid + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore(FLAC__StreamDecoder *decoder, FLAC__MetadataType type); + +/** Direct the decoder to filter out all APPLICATION metadata blocks of + * the given \a id. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \param id See above. + * \assert + * \code decoder != NULL \endcode + * \code id != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]); + +/** Direct the decoder to filter out all metadata blocks of any type. + * + * \default By default, only the \c STREAMINFO block is returned via the + * metadata callback. + * \param decoder A decoder instance to set. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if the decoder is already initialized, else \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all(FLAC__StreamDecoder *decoder); + +/** Get the current decoder state. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderState + * The current decoder state. + */ +FLAC_API FLAC__StreamDecoderState FLAC__stream_decoder_get_state(const FLAC__StreamDecoder *decoder); + +/** Get the current decoder state as a C string. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval const char * + * The decoder state as a C string. Do not modify the contents. + */ +FLAC_API const char *FLAC__stream_decoder_get_resolved_state_string(const FLAC__StreamDecoder *decoder); + +/** Get the "MD5 signature checking" flag. + * This is the value of the setting, not whether or not the decoder is + * currently checking the MD5 (remember, it can be turned off automatically + * by a seek). When the decoder is reset the flag will be restored to the + * value returned by this function. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * See above. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_get_md5_checking(const FLAC__StreamDecoder *decoder); + +/** Get the total number of samples in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the \c STREAMINFO block. A value of \c 0 means "unknown". + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API FLAC__uint64 FLAC__stream_decoder_get_total_samples(const FLAC__StreamDecoder *decoder); + +/** Get the current number of channels in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_channels(const FLAC__StreamDecoder *decoder); + +/** Get the current channel assignment in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__ChannelAssignment + * See above. + */ +FLAC_API FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment(const FLAC__StreamDecoder *decoder); + +/** Get the current sample resolution in the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_bits_per_sample(const FLAC__StreamDecoder *decoder); + +/** Get the current sample rate in Hz of the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_sample_rate(const FLAC__StreamDecoder *decoder); + +/** Get the current blocksize of the stream being decoded. + * Will only be valid after decoding has started and will contain the + * value from the most recently decoded frame header. + * + * \param decoder A decoder instance to query. + * \assert + * \code decoder != NULL \endcode + * \retval unsigned + * See above. + */ +FLAC_API unsigned FLAC__stream_decoder_get_blocksize(const FLAC__StreamDecoder *decoder); + +/** Returns the decoder's current read position within the stream. + * The position is the byte offset from the start of the stream. + * Bytes before this position have been fully decoded. Note that + * there may still be undecoded bytes in the decoder's read FIFO. + * The returned position is correct even after a seek. + * + * \warning This function currently only works for native FLAC, + * not Ogg FLAC streams. + * + * \param decoder A decoder instance to query. + * \param position Address at which to return the desired position. + * \assert + * \code decoder != NULL \endcode + * \code position != NULL \endcode + * \retval FLAC__bool + * \c true if successful, \c false if the stream is not native FLAC, + * or there was an error from the 'tell' callback or it returned + * \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position); + +/** Initialize the decoder instance to decode native FLAC streams. + * + * This flavor of initialization sets up the decoder to decode from a + * native FLAC stream. I/O is performed via callbacks to the client. + * For decoding from a plain file via filename or open FILE*, + * FLAC__stream_decoder_init_file() and FLAC__stream_decoder_init_FILE() + * provide a simpler interface. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \param decoder An uninitialized decoder instance. + * \param read_callback See FLAC__StreamDecoderReadCallback. This + * pointer must not be \c NULL. + * \param seek_callback See FLAC__StreamDecoderSeekCallback. This + * pointer may be \c NULL if seeking is not + * supported. If \a seek_callback is not \c NULL then a + * \a tell_callback, \a length_callback, and \a eof_callback must also be supplied. + * Alternatively, a dummy seek callback that just + * returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param tell_callback See FLAC__StreamDecoderTellCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a tell_callback must also be supplied. + * Alternatively, a dummy tell callback that just + * returns \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param length_callback See FLAC__StreamDecoderLengthCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a length_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param eof_callback See FLAC__StreamDecoderEofCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a eof_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c false + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream( + FLAC__StreamDecoder *decoder, + FLAC__StreamDecoderReadCallback read_callback, + FLAC__StreamDecoderSeekCallback seek_callback, + FLAC__StreamDecoderTellCallback tell_callback, + FLAC__StreamDecoderLengthCallback length_callback, + FLAC__StreamDecoderEofCallback eof_callback, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode Ogg FLAC streams. + * + * This flavor of initialization sets up the decoder to decode from a + * FLAC stream in an Ogg container. I/O is performed via callbacks to the + * client. For decoding from a plain file via filename or open FILE*, + * FLAC__stream_decoder_init_ogg_file() and FLAC__stream_decoder_init_ogg_FILE() + * provide a simpler interface. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \note Support for Ogg FLAC in the library is optional. If this + * library has been built without support for Ogg FLAC, this function + * will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER. + * + * \param decoder An uninitialized decoder instance. + * \param read_callback See FLAC__StreamDecoderReadCallback. This + * pointer must not be \c NULL. + * \param seek_callback See FLAC__StreamDecoderSeekCallback. This + * pointer may be \c NULL if seeking is not + * supported. If \a seek_callback is not \c NULL then a + * \a tell_callback, \a length_callback, and \a eof_callback must also be supplied. + * Alternatively, a dummy seek callback that just + * returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param tell_callback See FLAC__StreamDecoderTellCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a tell_callback must also be supplied. + * Alternatively, a dummy tell callback that just + * returns \c FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param length_callback See FLAC__StreamDecoderLengthCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a length_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param eof_callback See FLAC__StreamDecoderEofCallback. This + * pointer may be \c NULL if not supported by the client. If + * \a seek_callback is not \c NULL then a + * \a eof_callback must also be supplied. + * Alternatively, a dummy length callback that just + * returns \c false + * may also be supplied, all though this is slightly + * less efficient for the decoder. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream( + FLAC__StreamDecoder *decoder, + FLAC__StreamDecoderReadCallback read_callback, + FLAC__StreamDecoderSeekCallback seek_callback, + FLAC__StreamDecoderTellCallback tell_callback, + FLAC__StreamDecoderLengthCallback length_callback, + FLAC__StreamDecoderEofCallback eof_callback, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode native FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a + * plain native FLAC file. For non-stdio streams, you must use + * FLAC__stream_decoder_init_stream() and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \param decoder An uninitialized decoder instance. + * \param file An open FLAC file. The file should have been + * opened with mode \c "rb" and rewound. The file + * becomes owned by the decoder and should not be + * manipulated by the client while decoding. + * Unless \a file is \c stdin, it will be closed + * when FLAC__stream_decoder_finish() is called. + * Note however that seeking will not work when + * decoding from \c stdin since it is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \code file != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE( + FLAC__StreamDecoder *decoder, + FILE *file, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode Ogg FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a + * plain Ogg FLAC file. For non-stdio streams, you must use + * FLAC__stream_decoder_init_ogg_stream() and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \note Support for Ogg FLAC in the library is optional. If this + * library has been built without support for Ogg FLAC, this function + * will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER. + * + * \param decoder An uninitialized decoder instance. + * \param file An open FLAC file. The file should have been + * opened with mode \c "rb" and rewound. The file + * becomes owned by the decoder and should not be + * manipulated by the client while decoding. + * Unless \a file is \c stdin, it will be closed + * when FLAC__stream_decoder_finish() is called. + * Note however that seeking will not work when + * decoding from \c stdin since it is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \code file != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE( + FLAC__StreamDecoder *decoder, + FILE *file, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode native FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a plain + * native FLAC file. If POSIX fopen() semantics are not sufficient, (for + * example, with Unicode filenames on Windows), you must use + * FLAC__stream_decoder_init_FILE(), or FLAC__stream_decoder_init_stream() + * and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \param decoder An uninitialized decoder instance. + * \param filename The name of the file to decode from. The file will + * be opened with fopen(). Use \c NULL to decode from + * \c stdin. Note that \c stdin is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file( + FLAC__StreamDecoder *decoder, + const char *filename, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Initialize the decoder instance to decode Ogg FLAC files. + * + * This flavor of initialization sets up the decoder to decode from a plain + * Ogg FLAC file. If POSIX fopen() semantics are not sufficient, (for + * example, with Unicode filenames on Windows), you must use + * FLAC__stream_decoder_init_ogg_FILE(), or FLAC__stream_decoder_init_ogg_stream() + * and provide callbacks for the I/O. + * + * This function should be called after FLAC__stream_decoder_new() and + * FLAC__stream_decoder_set_*() but before any of the + * FLAC__stream_decoder_process_*() functions. Will set and return the + * decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + * if initialization succeeded. + * + * \note Support for Ogg FLAC in the library is optional. If this + * library has been built without support for Ogg FLAC, this function + * will return \c FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER. + * + * \param decoder An uninitialized decoder instance. + * \param filename The name of the file to decode from. The file will + * be opened with fopen(). Use \c NULL to decode from + * \c stdin. Note that \c stdin is not seekable. + * \param write_callback See FLAC__StreamDecoderWriteCallback. This + * pointer must not be \c NULL. + * \param metadata_callback See FLAC__StreamDecoderMetadataCallback. This + * pointer may be \c NULL if the callback is not + * desired. + * \param error_callback See FLAC__StreamDecoderErrorCallback. This + * pointer must not be \c NULL. + * \param client_data This value will be supplied to callbacks in their + * \a client_data argument. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__StreamDecoderInitStatus + * \c FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; + * see FLAC__StreamDecoderInitStatus for the meanings of other return values. + */ +FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file( + FLAC__StreamDecoder *decoder, + const char *filename, + FLAC__StreamDecoderWriteCallback write_callback, + FLAC__StreamDecoderMetadataCallback metadata_callback, + FLAC__StreamDecoderErrorCallback error_callback, + void *client_data +); + +/** Finish the decoding process. + * Flushes the decoding buffer, releases resources, resets the decoder + * settings to their defaults, and returns the decoder state to + * FLAC__STREAM_DECODER_UNINITIALIZED. + * + * In the event of a prematurely-terminated decode, it is not strictly + * necessary to call this immediately before FLAC__stream_decoder_delete() + * but it is good practice to match every FLAC__stream_decoder_init_*() + * with a FLAC__stream_decoder_finish(). + * + * \param decoder An uninitialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if MD5 checking is on AND a STREAMINFO block was available + * AND the MD5 signature in the STREAMINFO block was non-zero AND the + * signature does not match the one computed by the decoder; else + * \c true. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder); + +/** Flush the stream input. + * The decoder's input buffer will be cleared and the state set to + * \c FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC. This will also turn + * off MD5 checking. + * + * \param decoder A decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c true if successful, else \c false if a memory allocation + * error occurs (in which case the state will be set to + * \c FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_flush(FLAC__StreamDecoder *decoder); + +/** Reset the decoding process. + * The decoder's input buffer will be cleared and the state set to + * \c FLAC__STREAM_DECODER_SEARCH_FOR_METADATA. This is similar to + * FLAC__stream_decoder_finish() except that the settings are + * preserved; there is no need to call FLAC__stream_decoder_init_*() + * before decoding again. MD5 checking will be restored to its original + * setting. + * + * If the decoder is seekable, or was initialized with + * FLAC__stream_decoder_init*_FILE() or FLAC__stream_decoder_init*_file(), + * the decoder will also attempt to seek to the beginning of the file. + * If this rewind fails, this function will return \c false. It follows + * that FLAC__stream_decoder_reset() cannot be used when decoding from + * \c stdin. + * + * If the decoder was initialized with FLAC__stream_encoder_init*_stream() + * and is not seekable (i.e. no seek callback was provided or the seek + * callback returns \c FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED), it + * is the duty of the client to start feeding data from the beginning of + * the stream on the next FLAC__stream_decoder_process_*() call. + * + * \param decoder A decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c true if successful, else \c false if a memory allocation occurs + * (in which case the state will be set to + * \c FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR) or a seek error + * occurs (the state will be unchanged). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder); + +/** Decode one metadata block or audio frame. + * This version instructs the decoder to decode a either a single metadata + * block or a single frame and stop, unless the callbacks return a fatal + * error or the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM. + * + * As the decoder needs more input it will call the read callback. + * Depending on what was decoded, the metadata or write callback will be + * called with the decoded metadata block or audio frame. + * + * Unless there is a fatal read error or end of stream, this function + * will return once one whole frame is decoded. In other words, if the + * stream is not synchronized or points to a corrupt frame header, the + * decoder will continue to try and resync until it gets to a valid + * frame, then decode one frame, then return. If the decoder points to + * a frame whose frame CRC in the frame footer does not match the + * computed frame CRC, this function will issue a + * FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH error to the + * error callback, and return, having decoded one complete, although + * corrupt, frame. (Such corrupted frames are sent as silence of the + * correct length to the write callback.) + * + * \param decoder An initialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder); + +/** Decode until the end of the metadata. + * This version instructs the decoder to decode from the current position + * and continue until all the metadata has been read, or until the + * callbacks return a fatal error or the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM. + * + * As the decoder needs more input it will call the read callback. + * As each metadata block is decoded, the metadata callback will be called + * with the decoded metadata. + * + * \param decoder An initialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder); + +/** Decode until the end of the stream. + * This version instructs the decoder to decode from the current position + * and continue until the end of stream (the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM), or until the + * callbacks return a fatal error. + * + * As the decoder needs more input it will call the read callback. + * As each metadata block and frame is decoded, the metadata or write + * callback will be called with the decoded metadata or frame. + * + * \param decoder An initialized decoder instance. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder); + +/** Skip one audio frame. + * This version instructs the decoder to 'skip' a single frame and stop, + * unless the callbacks return a fatal error or the read callback returns + * \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM. + * + * The decoding flow is the same as what occurs when + * FLAC__stream_decoder_process_single() is called to process an audio + * frame, except that this function does not decode the parsed data into + * PCM or call the write callback. The integrity of the frame is still + * checked the same way as in the other process functions. + * + * This function will return once one whole frame is skipped, in the + * same way that FLAC__stream_decoder_process_single() will return once + * one whole frame is decoded. + * + * This function can be used in more quickly determining FLAC frame + * boundaries when decoding of the actual data is not needed, for + * example when an application is separating a FLAC stream into frames + * for editing or storing in a container. To do this, the application + * can use FLAC__stream_decoder_skip_single_frame() to quickly advance + * to the next frame, then use + * FLAC__stream_decoder_get_decode_position() to find the new frame + * boundary. + * + * This function should only be called when the stream has advanced + * past all the metadata, otherwise it will return \c false. + * + * \param decoder An initialized decoder instance not in a metadata + * state. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c false if any fatal read, write, or memory allocation error + * occurred (meaning decoding must stop), or if the decoder + * is in the FLAC__STREAM_DECODER_SEARCH_FOR_METADATA or + * FLAC__STREAM_DECODER_READ_METADATA state, else \c true; for more + * information about the decoder, check the decoder state with + * FLAC__stream_decoder_get_state(). + */ +FLAC_API FLAC__bool FLAC__stream_decoder_skip_single_frame(FLAC__StreamDecoder *decoder); + +/** Flush the input and seek to an absolute sample. + * Decoding will resume at the given sample. Note that because of + * this, the next write callback may contain a partial block. The + * client must support seeking the input or this function will fail + * and return \c false. Furthermore, if the decoder state is + * \c FLAC__STREAM_DECODER_SEEK_ERROR, then the decoder must be flushed + * with FLAC__stream_decoder_flush() or reset with + * FLAC__stream_decoder_reset() before decoding can continue. + * + * \param decoder A decoder instance. + * \param sample The target sample number to seek to. + * \assert + * \code decoder != NULL \endcode + * \retval FLAC__bool + * \c true if successful, else \c false. + */ +FLAC_API FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample); + +/* \} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/codecs/include/flac_config.txt b/Windows/codecs/include/flac_config.txt new file mode 100644 index 0000000..7fd42c3 --- /dev/null +++ b/Windows/codecs/include/flac_config.txt @@ -0,0 +1,3 @@ +FLAC v1.3.0 release + several fixes from the flac git repo at xiph.org. +Decoder-only functionality, which is what we need: the encoder stuff is +left out of the build. diff --git a/Windows/codecs/include/mad.h b/Windows/codecs/include/mad.h new file mode 100644 index 0000000..065c672 --- /dev/null +++ b/Windows/codecs/include/mad.h @@ -0,0 +1,1005 @@ +/* + * libmad - MPEG audio decoder library + * Copyright (C) 2000-2004 Underbit Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * If you would like to negotiate alternate licensing terms, you may do + * so by contacting: Underbit Technologies, Inc. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* configuration for windows */ +#if defined(_WIN64) +# define FPM_64BIT +#elif defined(_M_IX86) || defined(__i386__) || defined(__386__) +# define FPM_INTEL +#else +# define FPM_DEFAULT +#endif + +/* Id: version.h,v 1.26 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_VERSION_H +# define LIBMAD_VERSION_H + +# define MAD_VERSION_MAJOR 0 +# define MAD_VERSION_MINOR 15 +# define MAD_VERSION_PATCH 1 +# define MAD_VERSION_EXTRA " (beta)" + +# define MAD_VERSION_STRINGIZE(str) #str +# define MAD_VERSION_STRING(num) MAD_VERSION_STRINGIZE(num) + +# define MAD_VERSION MAD_VERSION_STRING(MAD_VERSION_MAJOR) "." \ + MAD_VERSION_STRING(MAD_VERSION_MINOR) "." \ + MAD_VERSION_STRING(MAD_VERSION_PATCH) \ + MAD_VERSION_EXTRA + +# define MAD_PUBLISHYEAR "2000-2004" +# define MAD_AUTHOR "Underbit Technologies, Inc." +# define MAD_EMAIL "info@underbit.com" + +extern char const mad_version[]; +extern char const mad_copyright[]; +extern char const mad_author[]; +extern char const mad_build[]; + +# endif + +/* Id: fixed.h,v 1.38 2004/02/17 02:02:03 rob Exp */ + +# ifndef LIBMAD_FIXED_H +# define LIBMAD_FIXED_H + +# include + +# if INT_MAX >= 2147483647 +typedef signed int mad_fixed_t; + +typedef signed int mad_fixed64hi_t; +typedef unsigned int mad_fixed64lo_t; +# else +typedef signed long mad_fixed_t; + +typedef signed long mad_fixed64hi_t; +typedef unsigned long mad_fixed64lo_t; +# endif +/* compile-time assert: */ +typedef int _mad_check_fixed_t[2*(sizeof(mad_fixed_t)>=4) - 1]; + +# if defined(_MSC_VER) +# define mad_fixed64_t signed __int64 +# elif 1 || defined(__GNUC__) +# define mad_fixed64_t signed long long +# endif + +# if defined(FPM_FLOAT) +typedef double mad_sample_t; +# else +typedef mad_fixed_t mad_sample_t; +# endif + +/* + * Fixed-point format: 0xABBBBBBB + * A == whole part (sign + 3 bits) + * B == fractional part (28 bits) + * + * Values are signed two's complement, so the effective range is: + * 0x80000000 to 0x7fffffff + * -8.0 to +7.9999999962747097015380859375 + * + * The smallest representable value is: + * 0x00000001 == 0.0000000037252902984619140625 (i.e. about 3.725e-9) + * + * 28 bits of fractional accuracy represent about + * 8.6 digits of decimal accuracy. + * + * Fixed-point numbers can be added or subtracted as normal + * integers, but multiplication requires shifting the 64-bit result + * from 56 fractional bits back to 28 (and rounding.) + * + * Changing the definition of MAD_F_FRACBITS is only partially + * supported, and must be done with care. + */ + +# define MAD_F_FRACBITS 28 + +# if MAD_F_FRACBITS == 28 +# define MAD_F(x) ((mad_fixed_t) (x##L)) +# else +# if MAD_F_FRACBITS < 28 +# warning "MAD_F_FRACBITS < 28" +# define MAD_F(x) ((mad_fixed_t) \ + (((x##L) + \ + (1L << (28 - MAD_F_FRACBITS - 1))) >> \ + (28 - MAD_F_FRACBITS))) +# elif MAD_F_FRACBITS > 28 +# error "MAD_F_FRACBITS > 28 not currently supported" +# define MAD_F(x) ((mad_fixed_t) \ + ((x##L) << (MAD_F_FRACBITS - 28))) +# endif +# endif + +# define MAD_F_MIN ((mad_fixed_t) -0x80000000L) +# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL) + +# define MAD_F_ONE MAD_F(0x10000000) + +# define mad_f_tofixed(x) ((mad_fixed_t) \ + ((x) * (double) (1L << MAD_F_FRACBITS) + 0.5)) +# define mad_f_todouble(x) ((double) \ + ((x) / (double) (1L << MAD_F_FRACBITS))) + +# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS) +# define mad_f_fracpart(x) ((x) & ((1L << MAD_F_FRACBITS) - 1)) + /* (x should be positive) */ + +# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS) + +# define mad_f_add(x, y) ((x) + (y)) +# define mad_f_sub(x, y) ((x) - (y)) + +# if defined(FPM_FLOAT) +# error "FPM_FLOAT not yet supported" + +# undef MAD_F +# define MAD_F(x) mad_f_todouble(x) + +# define mad_f_mul(x, y) ((x) * (y)) +# define mad_f_scale64 + +# undef ASO_ZEROCHECK + +# elif defined(FPM_64BIT) + +/* + * This version should be the most accurate if 64-bit types are supported by + * the compiler, although it may not be the most efficient. + */ +# if defined(OPT_ACCURACY) +# define mad_f_mul(x, y) \ + ((mad_fixed_t) \ + ((((mad_fixed64_t) (x) * (y)) + \ + (1L << (MAD_F_SCALEBITS - 1))) >> MAD_F_SCALEBITS)) +# else +# define mad_f_mul(x, y) \ + ((mad_fixed_t) (((mad_fixed64_t) (x) * (y)) >> MAD_F_SCALEBITS)) +# endif + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- Intel --------------------------------------------------------------- */ + +# elif defined(FPM_INTEL) + +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable: 4035) /* no return value */ +static __forceinline +mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) +{ + enum { + fracbits = MAD_F_FRACBITS + }; + + __asm { + mov eax, x + imul y + shrd eax, edx, fracbits + } + + /* implicit return of eax */ +} +# pragma warning(pop) + +# define mad_f_mul mad_f_mul_inline +# define mad_f_scale64 + +# elif defined(__WATCOMC__) && defined(__386__) +mad_fixed_t mad_f_mul_inl(mad_fixed_t,mad_fixed_t); +/* 28 == MAD_F_FRACBITS */ +#pragma aux mad_f_mul_inl = \ + "imul ebx", \ + "shrd eax,edx,28" \ + parm [eax] [ebx] \ + value [eax] \ + modify exact [eax edx] + +# define mad_f_mul mad_f_mul_inl +# define mad_f_scale64 + +# else +/* + * This Intel version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("imull %3" \ + : "=a" (lo), "=d" (hi) \ + : "%a" (x), "rm" (y) \ + : "cc") + +# if defined(OPT_ACCURACY) +/* + * This gives best accuracy but is not very fast. + */ +# define MAD_F_MLA(hi, lo, x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + asm ("addl %2,%0\n\t" \ + "adcl %3,%1" \ + : "=rm" (lo), "=rm" (hi) \ + : "r" (__lo), "r" (__hi), "0" (lo), "1" (hi) \ + : "cc"); \ + }) +# endif /* OPT_ACCURACY */ + +# if defined(OPT_ACCURACY) +/* + * Surprisingly, this is faster than SHRD followed by ADC. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed64hi_t __hi_; \ + mad_fixed64lo_t __lo_; \ + mad_fixed_t __result; \ + asm ("addl %4,%2\n\t" \ + "adcl %5,%3" \ + : "=rm" (__lo_), "=rm" (__hi_) \ + : "0" (lo), "1" (hi), \ + "ir" (1L << (MAD_F_SCALEBITS - 1)), "ir" (0) \ + : "cc"); \ + asm ("shrdl %3,%2,%1" \ + : "=rm" (__result) \ + : "0" (__lo_), "r" (__hi_), "I" (MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# elif defined(OPT_INTEL) +/* + * Alternate Intel scaling that may or may not perform better. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("shrl %3,%1\n\t" \ + "shll %4,%2\n\t" \ + "orl %2,%1" \ + : "=rm" (__result) \ + : "0" (lo), "r" (hi), \ + "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# else +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("shrdl %3,%2,%1" \ + : "=rm" (__result) \ + : "0" (lo), "r" (hi), "I" (MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# endif /* OPT_ACCURACY */ + +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* --- ARM ----------------------------------------------------------------- */ + +# elif defined(FPM_ARM) + +/* + * This ARM V4 version is as accurate as FPM_64BIT but much faster. The + * least significant bit is properly rounded at no CPU cycle cost! + */ +# if 1 +/* + * This is faster than the default implementation via MAD_F_MLX() and + * mad_f_scale64(). + */ +# define mad_f_mul(x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + mad_fixed_t __result; \ + asm ("smull %0, %1, %3, %4\n\t" \ + "movs %0, %0, lsr %5\n\t" \ + "adc %2, %0, %1, lsl %6" \ + : "=&r" (__lo), "=&r" (__hi), "=r" (__result) \ + : "%r" (x), "r" (y), \ + "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# endif + +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("smull %0, %1, %2, %3" \ + : "=&r" (lo), "=&r" (hi) \ + : "%r" (x), "r" (y)) + +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("smlal %0, %1, %2, %3" \ + : "+r" (lo), "+r" (hi) \ + : "%r" (x), "r" (y)) + +#ifdef __thumb__ +/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero + operand. If needed this code can also support Thumb-1 + (simply append "s" to the end of the second two instructions). */ +# define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %0, #0\n\t" \ + "sbc %1, %1, %1\n\t" \ + "sub %1, %1, %2" \ + : "+&r" (lo), "=&r" (hi) \ + : "r" (hi) \ + : "cc") +#else /* ! __thumb__ */ +# define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %2, #0\n\t" \ + "rsc %1, %3, #0" \ + : "=&r" (lo), "=r" (hi) \ + : "0" (lo), "1" (hi) \ + : "cc") +#endif /* __thumb__ */ + +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("movs %0, %1, lsr %3\n\t" \ + "adc %0, %0, %2, lsl %4" \ + : "=&r" (__result) \ + : "r" (lo), "r" (hi), \ + "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- MIPS ---------------------------------------------------------------- */ + +# elif defined(FPM_MIPS) + +#if defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) + typedef unsigned int u64_di_t __attribute__ ((mode (DI))); +# define MAD_F_MLX(hi, lo, x, y) \ + do { \ + u64_di_t __ll = (u64_di_t) (x) * (y); \ + hi = __ll >> 32; \ + lo = __ll; \ + } while (0) +#else +/* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("mult %2,%3" \ + : "=l" (lo), "=h" (hi) \ + : "%r" (x), "r" (y)) + +# if defined(HAVE_MADD_ASM) +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("madd %2,%3" \ + : "+l" (lo), "+h" (hi) \ + : "%r" (x), "r" (y)) +# elif defined(HAVE_MADD16_ASM) +/* + * This loses significant accuracy due to the 16-bit integer limit in the + * multiply/accumulate instruction. + */ +# define MAD_F_ML0(hi, lo, x, y) \ + asm ("mult %2,%3" \ + : "=l" (lo), "=h" (hi) \ + : "%r" ((x) >> 12), "r" ((y) >> 16)) +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("madd16 %2,%3" \ + : "+l" (lo), "+h" (hi) \ + : "%r" ((x) >> 12), "r" ((y) >> 16)) +# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) +# endif +#endif /* MIPS / gcc-4.4. */ + +# if defined(OPT_SPEED) +# define mad_f_scale64(hi, lo) \ + ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS))) +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* --- SPARC --------------------------------------------------------------- */ + +# elif defined(FPM_SPARC) + +/* + * This SPARC V8 version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("smul %2, %3, %0\n\t" \ + "rd %%y, %1" \ + : "=r" (lo), "=r" (hi) \ + : "%r" (x), "rI" (y)) + +/* --- PowerPC ------------------------------------------------------------- */ + +# elif defined(FPM_PPC) + +/* + * This PowerPC version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + do { \ + asm ("mullw %0,%1,%2" \ + : "=r" (lo) \ + : "%r" (x), "r" (y)); \ + asm ("mulhw %0,%1,%2" \ + : "=r" (hi) \ + : "%r" (x), "r" (y)); \ + } \ + while (0) + +# if defined(OPT_ACCURACY) +/* + * This gives best accuracy but is not very fast. + */ +# define MAD_F_MLA(hi, lo, x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + asm ("addc %0,%2,%3\n\t" \ + "adde %1,%4,%5" \ + : "=r" (lo), "=r" (hi) \ + : "0" (lo), "r" (__lo), \ + "1" (hi), "r" (__hi) \ + : "xer"); \ + }) +# endif + +# if defined(OPT_ACCURACY) +/* + * This is slower than the truncating version below it. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result, __round; \ + asm ("rotrwi %0,%1,%2" \ + : "=r" (__result) \ + : "r" (lo), "i" (MAD_F_SCALEBITS)); \ + asm ("extrwi %0,%1,1,0" \ + : "=r" (__round) \ + : "r" (__result)); \ + asm ("insrwi %0,%1,%2,0" \ + : "+r" (__result) \ + : "r" (hi), "i" (MAD_F_SCALEBITS)); \ + asm ("add %0,%1,%2" \ + : "=r" (__result) \ + : "%r" (__result), "r" (__round)); \ + __result; \ + }) +# else +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("rotrwi %0,%1,%2" \ + : "=r" (__result) \ + : "r" (lo), "i" (MAD_F_SCALEBITS)); \ + asm ("insrwi %0,%1,%2,0" \ + : "+r" (__result) \ + : "r" (hi), "i" (MAD_F_SCALEBITS)); \ + __result; \ + }) +# endif + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- Default ------------------------------------------------------------- */ + +# elif defined(FPM_DEFAULT) + +/* + * This version is the most portable but it loses significant accuracy. + * Furthermore, accuracy is biased against the second argument, so care + * should be taken when ordering operands. + * + * The scale factors are constant as this is not used with SSO. + * + * Pre-rounding is required to stay within the limits of compliance. + */ +# if defined(OPT_SPEED) +# define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16)) +# else +# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \ + (((y) + (1L << 15)) >> 16)) +# endif + +/* ------------------------------------------------------------------------- */ + +# else +# error "no FPM selected" +# endif + +/* default implementations */ + +# if !defined(mad_f_mul) +# define mad_f_mul(x, y) \ + ({ register mad_fixed64hi_t __hi; \ + register mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + mad_f_scale64(__hi, __lo); \ + }) +# endif + +# if !defined(MAD_F_MLA) +# define MAD_F_ML0(hi, lo, x, y) ((lo) = mad_f_mul((x), (y))) +# define MAD_F_MLA(hi, lo, x, y) ((lo) += mad_f_mul((x), (y))) +# define MAD_F_MLN(hi, lo) ((lo) = -(lo)) +# define MAD_F_MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) +# endif + +# if !defined(MAD_F_ML0) +# define MAD_F_ML0(hi, lo, x, y) MAD_F_MLX((hi), (lo), (x), (y)) +# endif + +# if !defined(MAD_F_MLN) +# define MAD_F_MLN(hi, lo) ((hi) = ((lo) = -(lo)) ? ~(hi) : -(hi)) +# endif + +# if !defined(MAD_F_MLZ) +# define MAD_F_MLZ(hi, lo) mad_f_scale64((hi), (lo)) +# endif + +# if !defined(mad_f_scale64) +# if defined(OPT_ACCURACY) +# define mad_f_scale64(hi, lo) \ + ((((mad_fixed_t) \ + (((hi) << (32 - (MAD_F_SCALEBITS - 1))) | \ + ((lo) >> (MAD_F_SCALEBITS - 1)))) + 1) >> 1) +# else +# define mad_f_scale64(hi, lo) \ + ((mad_fixed_t) \ + (((hi) << (32 - MAD_F_SCALEBITS)) | \ + ((lo) >> MAD_F_SCALEBITS))) +# endif +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* C routines */ + +mad_fixed_t mad_f_abs(mad_fixed_t); +mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t); + +# endif + +/* Id: bit.h,v 1.12 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_BIT_H +# define LIBMAD_BIT_H + +struct mad_bitptr { + unsigned char const *byte; + unsigned short cache; + unsigned short left; +}; + +void mad_bit_init(struct mad_bitptr *, unsigned char const *); + +# define mad_bit_finish(bitptr) /* nothing */ + +unsigned int mad_bit_length(struct mad_bitptr const *, + struct mad_bitptr const *); + +# define mad_bit_bitsleft(bitptr) ((bitptr)->left) +unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *); + +void mad_bit_skip(struct mad_bitptr *, unsigned int); +unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); +void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); + +unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); + +# endif + +/* Id: timer.h,v 1.16 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_TIMER_H +# define LIBMAD_TIMER_H + +typedef struct { + signed long seconds; /* whole seconds */ + unsigned long fraction; /* 1/MAD_TIMER_RESOLUTION seconds */ +} mad_timer_t; + +extern mad_timer_t const mad_timer_zero; + +# define MAD_TIMER_RESOLUTION 352800000UL + +enum mad_units { + MAD_UNITS_HOURS = -2, + MAD_UNITS_MINUTES = -1, + MAD_UNITS_SECONDS = 0, + + /* metric units */ + + MAD_UNITS_DECISECONDS = 10, + MAD_UNITS_CENTISECONDS = 100, + MAD_UNITS_MILLISECONDS = 1000, + + /* audio sample units */ + + MAD_UNITS_8000_HZ = 8000, + MAD_UNITS_11025_HZ = 11025, + MAD_UNITS_12000_HZ = 12000, + + MAD_UNITS_16000_HZ = 16000, + MAD_UNITS_22050_HZ = 22050, + MAD_UNITS_24000_HZ = 24000, + + MAD_UNITS_32000_HZ = 32000, + MAD_UNITS_44100_HZ = 44100, + MAD_UNITS_48000_HZ = 48000, + + /* video frame/field units */ + + MAD_UNITS_24_FPS = 24, + MAD_UNITS_25_FPS = 25, + MAD_UNITS_30_FPS = 30, + MAD_UNITS_48_FPS = 48, + MAD_UNITS_50_FPS = 50, + MAD_UNITS_60_FPS = 60, + + /* CD audio frames */ + + MAD_UNITS_75_FPS = 75, + + /* video drop-frame units */ + + MAD_UNITS_23_976_FPS = -24, + MAD_UNITS_24_975_FPS = -25, + MAD_UNITS_29_97_FPS = -30, + MAD_UNITS_47_952_FPS = -48, + MAD_UNITS_49_95_FPS = -50, + MAD_UNITS_59_94_FPS = -60 +}; + +# define mad_timer_reset(timer) ((void) (*(timer) = mad_timer_zero)) + +int mad_timer_compare(mad_timer_t, mad_timer_t); + +# define mad_timer_sign(timer) mad_timer_compare((timer), mad_timer_zero) + +void mad_timer_negate(mad_timer_t *); +mad_timer_t mad_timer_abs(mad_timer_t); + +void mad_timer_set(mad_timer_t *, unsigned long, unsigned long, unsigned long); +void mad_timer_add(mad_timer_t *, mad_timer_t); +void mad_timer_multiply(mad_timer_t *, signed long); + +signed long mad_timer_count(mad_timer_t, enum mad_units); +unsigned long mad_timer_fraction(mad_timer_t, unsigned long); +void mad_timer_string(mad_timer_t, char *, char const *, + enum mad_units, enum mad_units, unsigned long); + +# endif + +/* Id: stream.h,v 1.20 2004/02/05 09:02:39 rob Exp */ + +# ifndef LIBMAD_STREAM_H +# define LIBMAD_STREAM_H + + +# define MAD_BUFFER_GUARD 8 +# define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD) + +enum mad_error { + MAD_ERROR_NONE = 0x0000, /* no error */ + + MAD_ERROR_BUFLEN = 0x0001, /* input buffer too small (or EOF) */ + MAD_ERROR_BUFPTR = 0x0002, /* invalid (null) buffer pointer */ + + MAD_ERROR_NOMEM = 0x0031, /* not enough memory */ + + MAD_ERROR_LOSTSYNC = 0x0101, /* lost synchronization */ + MAD_ERROR_BADLAYER = 0x0102, /* reserved header layer value */ + MAD_ERROR_BADBITRATE = 0x0103, /* forbidden bitrate value */ + MAD_ERROR_BADSAMPLERATE = 0x0104, /* reserved sample frequency value */ + MAD_ERROR_BADEMPHASIS = 0x0105, /* reserved emphasis value */ + + MAD_ERROR_BADCRC = 0x0201, /* CRC check failed */ + MAD_ERROR_BADBITALLOC = 0x0211, /* forbidden bit allocation value */ + MAD_ERROR_BADSCALEFACTOR = 0x0221, /* bad scalefactor index */ + MAD_ERROR_BADMODE = 0x0222, /* bad bitrate/mode combination */ + MAD_ERROR_BADFRAMELEN = 0x0231, /* bad frame length */ + MAD_ERROR_BADBIGVALUES = 0x0232, /* bad big_values count */ + MAD_ERROR_BADBLOCKTYPE = 0x0233, /* reserved block_type */ + MAD_ERROR_BADSCFSI = 0x0234, /* bad scalefactor selection info */ + MAD_ERROR_BADDATAPTR = 0x0235, /* bad main_data_begin pointer */ + MAD_ERROR_BADPART3LEN = 0x0236, /* bad audio data length */ + MAD_ERROR_BADHUFFTABLE = 0x0237, /* bad Huffman table select */ + MAD_ERROR_BADHUFFDATA = 0x0238, /* Huffman data overrun */ + MAD_ERROR_BADSTEREO = 0x0239 /* incompatible block_type for JS */ +}; + +# define MAD_RECOVERABLE(error) ((error) & 0xff00) + +struct mad_stream { + unsigned char const *buffer; /* input bitstream buffer */ + unsigned char const *bufend; /* end of buffer */ + unsigned long skiplen; /* bytes to skip before next frame */ + + int sync; /* stream sync found */ + unsigned long freerate; /* free bitrate (fixed) */ + + unsigned char const *this_frame; /* start of current frame */ + unsigned char const *next_frame; /* start of next frame */ + struct mad_bitptr ptr; /* current processing bit pointer */ + + struct mad_bitptr anc_ptr; /* ancillary bits pointer */ + unsigned int anc_bitlen; /* number of ancillary bits */ + + unsigned char (*main_data)[MAD_BUFFER_MDLEN]; + /* Layer III main_data() */ + unsigned int md_len; /* bytes in main_data */ + + int options; /* decoding options (see below) */ + enum mad_error error; /* error code (see above) */ +}; + +enum { + MAD_OPTION_IGNORECRC = 0x0001, /* ignore CRC errors */ + MAD_OPTION_HALFSAMPLERATE = 0x0002 /* generate PCM at 1/2 sample rate */ +# if 0 /* not yet implemented */ + MAD_OPTION_LEFTCHANNEL = 0x0010, /* decode left channel only */ + MAD_OPTION_RIGHTCHANNEL = 0x0020, /* decode right channel only */ + MAD_OPTION_SINGLECHANNEL = 0x0030 /* combine channels */ +# endif +}; + +void mad_stream_init(struct mad_stream *); +void mad_stream_finish(struct mad_stream *); + +# define mad_stream_options(stream, opts) \ + ((void) ((stream)->options = (opts))) + +void mad_stream_buffer(struct mad_stream *, + unsigned char const *, unsigned long); +void mad_stream_skip(struct mad_stream *, unsigned long); + +int mad_stream_sync(struct mad_stream *); + +char const *mad_stream_errorstr(struct mad_stream const *); + +# endif + +/* Id: frame.h,v 1.20 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_FRAME_H +# define LIBMAD_FRAME_H + + +enum mad_layer { + MAD_LAYER_I = 1, /* Layer I */ + MAD_LAYER_II = 2, /* Layer II */ + MAD_LAYER_III = 3 /* Layer III */ +}; + +enum mad_mode { + MAD_MODE_SINGLE_CHANNEL = 0, /* single channel */ + MAD_MODE_DUAL_CHANNEL = 1, /* dual channel */ + MAD_MODE_JOINT_STEREO = 2, /* joint (MS/intensity) stereo */ + MAD_MODE_STEREO = 3 /* normal LR stereo */ +}; + +enum mad_emphasis { + MAD_EMPHASIS_NONE = 0, /* no emphasis */ + MAD_EMPHASIS_50_15_US = 1, /* 50/15 microseconds emphasis */ + MAD_EMPHASIS_CCITT_J_17 = 3, /* CCITT J.17 emphasis */ + MAD_EMPHASIS_RESERVED = 2 /* unknown emphasis */ +}; + +struct mad_header { + enum mad_layer layer; /* audio layer (1, 2, or 3) */ + enum mad_mode mode; /* channel mode (see above) */ + int mode_extension; /* additional mode info */ + enum mad_emphasis emphasis; /* de-emphasis to use (see above) */ + + unsigned long bitrate; /* stream bitrate (bps) */ + unsigned int samplerate; /* sampling frequency (Hz) */ + + unsigned short crc_check; /* frame CRC accumulator */ + unsigned short crc_target; /* final target CRC checksum */ + + int flags; /* flags (see below) */ + int private_bits; /* private bits (see below) */ + + mad_timer_t duration; /* audio playing time of frame */ +}; + +struct mad_frame { + struct mad_header header; /* MPEG audio header */ + + int options; /* decoding options (from stream) */ + + mad_fixed_t sbsample[2][36][32]; /* synthesis subband filter samples */ + mad_fixed_t (*overlap)[2][32][18]; /* Layer III block overlap data */ +}; + +# define MAD_NCHANNELS(header) ((header)->mode ? 2 : 1) +# define MAD_NSBSAMPLES(header) \ + ((header)->layer == MAD_LAYER_I ? 12 : \ + (((header)->layer == MAD_LAYER_III && \ + ((header)->flags & MAD_FLAG_LSF_EXT)) ? 18 : 36)) + +enum { + MAD_FLAG_NPRIVATE_III = 0x0007, /* number of Layer III private bits */ + MAD_FLAG_INCOMPLETE = 0x0008, /* header but not data is decoded */ + + MAD_FLAG_PROTECTION = 0x0010, /* frame has CRC protection */ + MAD_FLAG_COPYRIGHT = 0x0020, /* frame is copyright */ + MAD_FLAG_ORIGINAL = 0x0040, /* frame is original (else copy) */ + MAD_FLAG_PADDING = 0x0080, /* frame has additional slot */ + + MAD_FLAG_I_STEREO = 0x0100, /* uses intensity joint stereo */ + MAD_FLAG_MS_STEREO = 0x0200, /* uses middle/side joint stereo */ + MAD_FLAG_FREEFORMAT = 0x0400, /* uses free format bitrate */ + + MAD_FLAG_LSF_EXT = 0x1000, /* lower sampling freq. extension */ + MAD_FLAG_MC_EXT = 0x2000, /* multichannel audio extension */ + MAD_FLAG_MPEG_2_5_EXT = 0x4000 /* MPEG 2.5 (unofficial) extension */ +}; + +enum { + MAD_PRIVATE_HEADER = 0x0100, /* header private bit */ + MAD_PRIVATE_III = 0x001f /* Layer III private bits (up to 5) */ +}; + +void mad_header_init(struct mad_header *); + +# define mad_header_finish(header) /* nothing */ + +int mad_header_decode(struct mad_header *, struct mad_stream *); + +void mad_frame_init(struct mad_frame *); +void mad_frame_finish(struct mad_frame *); + +int mad_frame_decode(struct mad_frame *, struct mad_stream *); + +void mad_frame_mute(struct mad_frame *); + +# endif + +/* Id: synth.h,v 1.15 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_SYNTH_H +# define LIBMAD_SYNTH_H + + +struct mad_pcm { + unsigned int samplerate; /* sampling frequency (Hz) */ + unsigned short channels; /* number of channels */ + unsigned short length; /* number of samples per channel */ + mad_fixed_t samples[2][1152]; /* PCM output samples [ch][sample] */ +}; + +struct mad_synth { + mad_fixed_t filter[2][2][2][16][8]; /* polyphase filterbank outputs */ + /* [ch][eo][peo][s][v] */ + + unsigned int phase; /* current processing phase */ + + struct mad_pcm pcm; /* PCM output */ +}; + +/* single channel PCM selector */ +enum { + MAD_PCM_CHANNEL_SINGLE = 0 +}; + +/* dual channel PCM selector */ +enum { + MAD_PCM_CHANNEL_DUAL_1 = 0, + MAD_PCM_CHANNEL_DUAL_2 = 1 +}; + +/* stereo PCM selector */ +enum { + MAD_PCM_CHANNEL_STEREO_LEFT = 0, + MAD_PCM_CHANNEL_STEREO_RIGHT = 1 +}; + +void mad_synth_init(struct mad_synth *); + +# define mad_synth_finish(synth) /* nothing */ + +void mad_synth_mute(struct mad_synth *); + +void mad_synth_frame(struct mad_synth *, struct mad_frame const *); + +# endif + +/* Id: decoder.h,v 1.17 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_DECODER_H +# define LIBMAD_DECODER_H + + +enum mad_decoder_mode { + MAD_DECODER_MODE_SYNC = 0, + MAD_DECODER_MODE_ASYNC +}; + +enum mad_flow { + MAD_FLOW_CONTINUE = 0x0000, /* continue normally */ + MAD_FLOW_STOP = 0x0010, /* stop decoding normally */ + MAD_FLOW_BREAK = 0x0011, /* stop decoding and signal an error */ + MAD_FLOW_IGNORE = 0x0020 /* ignore the current frame */ +}; + +struct mad_decoder { + enum mad_decoder_mode mode; + + int options; + + struct { + long pid; + int in; + int out; + } async; + + struct { + struct mad_stream stream; + struct mad_frame frame; + struct mad_synth synth; + } *sync; + + void *cb_data; + + enum mad_flow (*input_func)(void *, struct mad_stream *); + enum mad_flow (*header_func)(void *, struct mad_header const *); + enum mad_flow (*filter_func)(void *, + struct mad_stream const *, struct mad_frame *); + enum mad_flow (*output_func)(void *, + struct mad_header const *, struct mad_pcm *); + enum mad_flow (*error_func)(void *, struct mad_stream *, struct mad_frame *); + enum mad_flow (*message_func)(void *, void *, unsigned int *); +}; + +void mad_decoder_init(struct mad_decoder *, void *, + enum mad_flow (*)(void *, struct mad_stream *), + enum mad_flow (*)(void *, struct mad_header const *), + enum mad_flow (*)(void *, + struct mad_stream const *, + struct mad_frame *), + enum mad_flow (*)(void *, + struct mad_header const *, + struct mad_pcm *), + enum mad_flow (*)(void *, + struct mad_stream *, + struct mad_frame *), + enum mad_flow (*)(void *, void *, unsigned int *)); +int mad_decoder_finish(struct mad_decoder *); + +# define mad_decoder_options(decoder, opts) \ + ((void) ((decoder)->options = (opts))) + +int mad_decoder_run(struct mad_decoder *, enum mad_decoder_mode); +int mad_decoder_message(struct mad_decoder *, void *, unsigned int *); + +# endif + +#ifdef __cplusplus +} +#endif diff --git a/Windows/codecs/include/mikmod.h b/Windows/codecs/include/mikmod.h new file mode 100644 index 0000000..0679581 --- /dev/null +++ b/Windows/codecs/include/mikmod.h @@ -0,0 +1,880 @@ +/* MikMod sound library + (c) 1998-2014 Miodrag Vallat and others - see the AUTHORS file + for complete list. + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +/*============================================================================== + + MikMod sound library include file + + ==============================================================================*/ + +#ifndef _MIKMOD_H_ +#define _MIKMOD_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * ========== Compiler magic for shared libraries + * + * ========== NOTE TO WINDOWS DEVELOPERS: + * If you are compiling for Windows and will link to the static library + * (libmikmod.a with MinGW, or mikmod_static.lib with MSVC, Watcom, ..), + * you must define MIKMOD_STATIC in your project. Otherwise, dllimport + * will be assumed. + */ +#if defined(_WIN32) || defined(__CYGWIN__) +# if defined(MIKMOD_BUILD) && defined(DLL_EXPORT) /* building libmikmod as a dll for windows */ +# define MIKMODAPI __declspec(dllexport) +# elif defined(MIKMOD_BUILD) || defined(MIKMOD_STATIC) /* building or using static libmikmod for windows */ +# define MIKMODAPI +# else +# define MIKMODAPI __declspec(dllimport) /* using libmikmod dll for windows */ +# endif +#elif defined(__OS2__) && defined(__WATCOMC__) +# if defined(MIKMOD_BUILD) && defined(__SW_BD) /* building libmikmod as a dll for os/2 */ +# define MIKMODAPI __declspec(dllexport) +# else +# define MIKMODAPI /* using dll or static libmikmod for os/2 */ +# endif +/* SYM_VISIBILITY should be defined if both the compiler + * and the target support the visibility attributes. the + * configury does that automatically. for the standalone + * makefiles, etc, the developer should add the required + * flags, i.e.: -DSYM_VISIBILITY -fvisibility=hidden */ +#elif defined(MIKMOD_BUILD) && defined(SYM_VISIBILITY) +# define MIKMODAPI __attribute__((visibility("default"))) +#else +# define MIKMODAPI +#endif + +/* + * ========== Library version + */ + +#define LIBMIKMOD_VERSION_MAJOR 3L +#define LIBMIKMOD_VERSION_MINOR 3L +#define LIBMIKMOD_REVISION 13L + +#define LIBMIKMOD_VERSION \ + ((LIBMIKMOD_VERSION_MAJOR<<16)| \ + (LIBMIKMOD_VERSION_MINOR<< 8)| \ + (LIBMIKMOD_REVISION)) + +MIKMODAPI extern long MikMod_GetVersion(void); + +/* + * ========== Dependency platform headers + */ + +#if defined(_WIN32)||defined(__CYGWIN__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#include +#include +#define _MIKMOD_WIN32 +#endif + +#if defined(__DJGPP__) || defined(MSDOS) || defined(__MSDOS__) || defined(__DOS__) +#define _MIKMOD_DOS +#endif + +#if defined(__OS2__) || defined(__EMX__) +#define INCL_DOSSEMAPHORES +#include +#include +#define _MIKMOD_OS2 +#endif + +#if defined(__MORPHOS__) || defined(__AROS__) || defined(_AMIGA) || defined(__AMIGA__) || defined(__amigaos__) || defined(AMIGAOS) +#include +#define _MIKMOD_AMIGA +#endif + +/* + * ========== Platform independent-type definitions + * (pain when it comes to cross-platform maintenance..) + */ + +#if !(defined(_MIKMOD_OS2) || defined(_MIKMOD_WIN32)) +typedef char CHAR; +#endif + +/* BOOL: 0=false, <>0 true -- 16 bits on Amiga, int-wide on others. */ +#if !(defined(_MIKMOD_OS2) || defined(_MIKMOD_WIN32) || defined(_MIKMOD_AMIGA)) +typedef int BOOL; +#endif + +/* 1 byte, signed and unsigned: */ +typedef signed char SBYTE; +#ifndef _MIKMOD_AMIGA +typedef unsigned char UBYTE; +#endif + +/* 2 bytes, signed and unsigned: */ +typedef signed short int SWORD; +#if !defined(_MIKMOD_AMIGA) +typedef unsigned short int UWORD; +#endif + +/* 4 bytes, signed and unsigned: */ +#if defined(_LP64) || defined(__LP64__) || defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(__powerpc64__) + /* 64 bit architectures: */ +typedef signed int SLONG; +#if !(defined(_WIN32) || defined(_MIKMOD_AMIGA)) +typedef unsigned int ULONG; +#endif + +#else /* 32 bit architectures: */ +typedef signed long int SLONG; +#if !(defined(_MIKMOD_OS2) || defined(_MIKMOD_WIN32) || defined(_MIKMOD_AMIGA)) +typedef unsigned long int ULONG; +#endif +#endif + +/* make sure types are of correct sizes: */ +typedef int __mikmod_typetest [ + ( + (sizeof(SBYTE)==1) && (sizeof(UBYTE)==1) + && (sizeof(SWORD)==2) && (sizeof(UWORD)==2) + && (sizeof(SLONG)==4) && (sizeof(ULONG)==4) +#ifndef _MIKMOD_AMIGA + && (sizeof(BOOL) == sizeof(int)) +#endif + && (sizeof(CHAR) == sizeof(char)) + ) * 2 - 1 ]; + +/* + * ========== Error codes + */ + +enum { + MMERR_OPENING_FILE = 1, + MMERR_OUT_OF_MEMORY, + MMERR_DYNAMIC_LINKING, + + MMERR_SAMPLE_TOO_BIG, + MMERR_OUT_OF_HANDLES, + MMERR_UNKNOWN_WAVE_TYPE, + + MMERR_LOADING_PATTERN, + MMERR_LOADING_TRACK, + MMERR_LOADING_HEADER, + MMERR_LOADING_SAMPLEINFO, + MMERR_NOT_A_MODULE, + MMERR_NOT_A_STREAM, + MMERR_MED_SYNTHSAMPLES, + MMERR_ITPACK_INVALID_DATA, + + MMERR_DETECTING_DEVICE, + MMERR_INVALID_DEVICE, + MMERR_INITIALIZING_MIXER, + MMERR_OPENING_AUDIO, + MMERR_8BIT_ONLY, + MMERR_16BIT_ONLY, + MMERR_STEREO_ONLY, + MMERR_ULAW, + MMERR_NON_BLOCK, + + MMERR_AF_AUDIO_PORT, + + MMERR_AIX_CONFIG_INIT, + MMERR_AIX_CONFIG_CONTROL, + MMERR_AIX_CONFIG_START, + + MMERR_GUS_SETTINGS, + MMERR_GUS_RESET, + MMERR_GUS_TIMER, + + MMERR_HP_SETSAMPLESIZE, + MMERR_HP_SETSPEED, + MMERR_HP_CHANNELS, + MMERR_HP_AUDIO_OUTPUT, + MMERR_HP_AUDIO_DESC, + MMERR_HP_BUFFERSIZE, + + MMERR_OSS_SETFRAGMENT, + MMERR_OSS_SETSAMPLESIZE, + MMERR_OSS_SETSTEREO, + MMERR_OSS_SETSPEED, + + MMERR_SGI_SPEED, + MMERR_SGI_16BIT, + MMERR_SGI_8BIT, + MMERR_SGI_STEREO, + MMERR_SGI_MONO, + + MMERR_SUN_INIT, + + MMERR_OS2_MIXSETUP, + MMERR_OS2_SEMAPHORE, + MMERR_OS2_TIMER, + MMERR_OS2_THREAD, + + MMERR_DS_PRIORITY, + MMERR_DS_BUFFER, + MMERR_DS_FORMAT, + MMERR_DS_NOTIFY, + MMERR_DS_EVENT, + MMERR_DS_THREAD, + MMERR_DS_UPDATE, + + MMERR_WINMM_HANDLE, + MMERR_WINMM_ALLOCATED, + MMERR_WINMM_DEVICEID, + MMERR_WINMM_FORMAT, + MMERR_WINMM_UNKNOWN, + + MMERR_MAC_SPEED, + MMERR_MAC_START, + + MMERR_OSX_UNKNOWN_DEVICE, /* obsolete */ + MMERR_OSX_BAD_PROPERTY, /* obsolete */ + MMERR_OSX_UNSUPPORTED_FORMAT, + MMERR_OSX_SET_STEREO, /* obsolete */ + MMERR_OSX_BUFFER_ALLOC, /* obsolete */ + MMERR_OSX_ADD_IO_PROC, /* obsolete */ + MMERR_OSX_DEVICE_START, + MMERR_OSX_PTHREAD, /* obsolete */ + + MMERR_DOSWSS_STARTDMA, + MMERR_DOSSB_STARTDMA, + + MMERR_NO_FLOAT32,/* should actually be after MMERR_ULAW or something */ + + MMERR_OPENAL_CREATECTX, + MMERR_OPENAL_CTXCURRENT, + MMERR_OPENAL_GENBUFFERS, + MMERR_OPENAL_GENSOURCES, + MMERR_OPENAL_SOURCE, + MMERR_OPENAL_QUEUEBUFFERS, + MMERR_OPENAL_UNQUEUEBUFFERS, + MMERR_OPENAL_BUFFERDATA, + MMERR_OPENAL_GETSOURCE, + MMERR_OPENAL_SOURCEPLAY, + MMERR_OPENAL_SOURCESTOP, + + MMERR_ALSA_NOCONFIG, + MMERR_ALSA_SETPARAMS, + MMERR_ALSA_SETFORMAT, + MMERR_ALSA_SETRATE, + MMERR_ALSA_SETCHANNELS, + MMERR_ALSA_BUFFERSIZE, + MMERR_ALSA_PCM_START, + MMERR_ALSA_PCM_WRITE, + MMERR_ALSA_PCM_RECOVER, + + MMERR_SNDIO_SETPARAMS, + MMERR_SNDIO_BADPARAMS, + + MMERR_MAX +}; + +/* + * ========== Error handling + */ + +typedef void (MikMod_handler)(void); +typedef MikMod_handler *MikMod_handler_t; + +MIKMODAPI extern int MikMod_errno; +MIKMODAPI extern BOOL MikMod_critical; +MIKMODAPI extern const char *MikMod_strerror(int); + +MIKMODAPI extern MikMod_handler_t MikMod_RegisterErrorHandler(MikMod_handler_t); + +/* + * ========== Library initialization and core functions + */ + +struct MDRIVER; + +MIKMODAPI extern void MikMod_RegisterAllDrivers(void); + +MIKMODAPI extern CHAR* MikMod_InfoDriver(void); +MIKMODAPI extern void MikMod_RegisterDriver(struct MDRIVER*); +MIKMODAPI extern int MikMod_DriverFromAlias(const CHAR*); +MIKMODAPI extern struct MDRIVER *MikMod_DriverByOrdinal(int); + +MIKMODAPI extern int MikMod_Init(const CHAR*); +MIKMODAPI extern void MikMod_Exit(void); +MIKMODAPI extern int MikMod_Reset(const CHAR*); +MIKMODAPI extern int MikMod_SetNumVoices(int,int); +MIKMODAPI extern BOOL MikMod_Active(void); +MIKMODAPI extern int MikMod_EnableOutput(void); +MIKMODAPI extern void MikMod_DisableOutput(void); +MIKMODAPI extern void MikMod_Update(void); + +MIKMODAPI extern BOOL MikMod_InitThreads(void); +MIKMODAPI extern void MikMod_Lock(void); +MIKMODAPI extern void MikMod_Unlock(void); + +MIKMODAPI extern void* MikMod_malloc(size_t); +MIKMODAPI extern void* MikMod_calloc(size_t,size_t); +MIKMODAPI extern void* MikMod_realloc(void*,size_t); +MIKMODAPI extern CHAR* MikMod_strdup(const CHAR*); +MIKMODAPI extern void MikMod_free(void*); /* frees if ptr != NULL */ + +/* + * ========== Reader, Writer + */ + +typedef struct MREADER { + int (*Seek)(struct MREADER*,long,int); + long (*Tell)(struct MREADER*); + BOOL (*Read)(struct MREADER*,void*,size_t); + int (*Get)(struct MREADER*); + BOOL (*Eof)(struct MREADER*); + long iobase; + long prev_iobase; +} MREADER; + +typedef struct MWRITER { + int (*Seek)(struct MWRITER*, long, int); + long (*Tell)(struct MWRITER*); + BOOL (*Write)(struct MWRITER*, const void*, size_t); + int (*Put)(struct MWRITER*, int); +} MWRITER; + +/* + * ========== Samples + */ + +/* Sample playback should not be interrupted */ +#define SFX_CRITICAL 1 + +/* Sample format [loading and in-memory] flags: */ +#define SF_16BITS 0x0001 +#define SF_STEREO 0x0002 +#define SF_SIGNED 0x0004 +#define SF_BIG_ENDIAN 0x0008 +#define SF_DELTA 0x0010 +#define SF_ITPACKED 0x0020 +#define SF_ADPCM4 0x0040 + +#define SF_FORMATMASK 0x007F + +/* General Playback flags */ + +#define SF_LOOP 0x0100 +#define SF_BIDI 0x0200 +#define SF_REVERSE 0x0400 +#define SF_SUSTAIN 0x0800 + +#define SF_PLAYBACKMASK 0x0C00 + +/* Module-only Playback Flags */ + +#define SF_OWNPAN 0x1000 +#define SF_UST_LOOP 0x2000 + +#define SF_EXTRAPLAYBACKMASK 0x3000 + +/* Panning constants */ +#define PAN_LEFT 0 +#define PAN_HALFLEFT 64 +#define PAN_CENTER 128 +#define PAN_HALFRIGHT 192 +#define PAN_RIGHT 255 +#define PAN_SURROUND 512 /* panning value for Dolby Surround */ + +typedef struct SAMPLE { + SWORD panning; /* panning (0-255 or PAN_SURROUND) */ + ULONG speed; /* Base playing speed/frequency of note */ + UBYTE volume; /* volume 0-64 */ + UWORD inflags; /* sample format on disk */ + UWORD flags; /* sample format in memory */ + ULONG length; /* length of sample (in samples!) */ + ULONG loopstart; /* repeat position (relative to start, in samples) */ + ULONG loopend; /* repeat end */ + ULONG susbegin; /* sustain loop begin (in samples) \ Not Supported */ + ULONG susend; /* sustain loop end / Yet! */ + + /* Variables used by the module player only! (ignored for sound effects) */ + UBYTE globvol; /* global volume */ + UBYTE vibflags; /* autovibrato flag stuffs */ + UBYTE vibtype; /* Vibratos moved from INSTRUMENT to SAMPLE */ + UBYTE vibsweep; + UBYTE vibdepth; + UBYTE vibrate; + CHAR* samplename; /* name of the sample */ + + /* Values used internally only */ + UWORD avibpos; /* autovibrato pos [player use] */ + UBYTE divfactor; /* for sample scaling, maintains proper period slides */ + ULONG seekpos; /* seek position in file */ + SWORD handle; /* sample handle used by individual drivers */ + void (*onfree)(void *ctx); /* called from Sample_Free if not NULL */ + void *ctx; /* context passed to previous function*/ +} SAMPLE; + +/* Sample functions */ + +MIKMODAPI extern SAMPLE *Sample_LoadRaw(const CHAR *,ULONG rate, ULONG channel, ULONG flags); +MIKMODAPI extern SAMPLE *Sample_LoadRawFP(FILE *fp,ULONG rate,ULONG channel, ULONG flags); +MIKMODAPI extern SAMPLE *Sample_LoadRawMem(const char *buf, int len, ULONG rate, ULONG channel, ULONG flags); +MIKMODAPI extern SAMPLE *Sample_LoadRawGeneric(MREADER*reader,ULONG rate, ULONG channel, ULONG flags); + +MIKMODAPI extern SAMPLE *Sample_Load(const CHAR*); +MIKMODAPI extern SAMPLE *Sample_LoadFP(FILE*); +MIKMODAPI extern SAMPLE *Sample_LoadMem(const char *buf, int len); +MIKMODAPI extern SAMPLE *Sample_LoadGeneric(MREADER*); +MIKMODAPI extern void Sample_Free(SAMPLE*); +MIKMODAPI extern SBYTE Sample_Play(SAMPLE*,ULONG,UBYTE); + +MIKMODAPI extern void Voice_SetVolume(SBYTE,UWORD); +MIKMODAPI extern UWORD Voice_GetVolume(SBYTE); +MIKMODAPI extern void Voice_SetFrequency(SBYTE,ULONG); +MIKMODAPI extern ULONG Voice_GetFrequency(SBYTE); +MIKMODAPI extern void Voice_SetPanning(SBYTE,ULONG); +MIKMODAPI extern ULONG Voice_GetPanning(SBYTE); +MIKMODAPI extern void Voice_Play(SBYTE,SAMPLE*,ULONG); +MIKMODAPI extern void Voice_Stop(SBYTE); +MIKMODAPI extern BOOL Voice_Stopped(SBYTE); +MIKMODAPI extern SLONG Voice_GetPosition(SBYTE); +MIKMODAPI extern ULONG Voice_RealVolume(SBYTE); + +/* + * ========== Internal module representation (UniMod) + */ + +/* + Instrument definition - for information only, the only field which may be + of use in user programs is the name field +*/ + +/* Instrument note count */ +#define INSTNOTES 120 + +/* Envelope point */ +typedef struct ENVPT { + SWORD pos; + SWORD val; +} ENVPT; + +/* Envelope point count */ +#define ENVPOINTS 32 + +/* Instrument structure */ +typedef struct INSTRUMENT { + CHAR* insname; + + UBYTE flags; + UWORD samplenumber[INSTNOTES]; + UBYTE samplenote[INSTNOTES]; + + UBYTE nnatype; + UBYTE dca; /* duplicate check action */ + UBYTE dct; /* duplicate check type */ + UBYTE globvol; + UWORD volfade; + SWORD panning; /* instrument-based panning var */ + + UBYTE pitpansep; /* pitch pan separation (0 to 255) */ + UBYTE pitpancenter; /* pitch pan center (0 to 119) */ + UBYTE rvolvar; /* random volume varations (0 - 100%) */ + UBYTE rpanvar; /* random panning varations (0 - 100%) */ + + /* volume envelope */ + UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE volpts; + UBYTE volsusbeg; + UBYTE volsusend; + UBYTE volbeg; + UBYTE volend; + ENVPT volenv[ENVPOINTS]; + /* panning envelope */ + UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE panpts; + UBYTE pansusbeg; + UBYTE pansusend; + UBYTE panbeg; + UBYTE panend; + ENVPT panenv[ENVPOINTS]; + /* pitch envelope */ + UBYTE pitflg; /* bit 0: on 1: sustain 2: loop */ + UBYTE pitpts; + UBYTE pitsusbeg; + UBYTE pitsusend; + UBYTE pitbeg; + UBYTE pitend; + ENVPT pitenv[ENVPOINTS]; +} INSTRUMENT; + +struct MP_CONTROL; +struct MP_VOICE; + +/* + Module definition +*/ + +/* maximum master channels supported */ +#define UF_MAXCHAN 64 + +/* Module flags */ +#define UF_XMPERIODS 0x0001 /* XM periods / finetuning */ +#define UF_LINEAR 0x0002 /* LINEAR periods (UF_XMPERIODS must be set) */ +#define UF_INST 0x0004 /* Instruments are used */ +#define UF_NNA 0x0008 /* IT: NNA used, set numvoices rather + than numchn */ +#define UF_S3MSLIDES 0x0010 /* uses old S3M volume slides */ +#define UF_BGSLIDES 0x0020 /* continue volume slides in the background */ +#define UF_HIGHBPM 0x0040 /* MED: can use >255 bpm */ +#define UF_NOWRAP 0x0080 /* XM-type (i.e. illogical) pattern break + semantics */ +#define UF_ARPMEM 0x0100 /* IT: need arpeggio memory */ +#define UF_FT2QUIRKS 0x0200 /* emulate some FT2 replay quirks */ +#define UF_PANNING 0x0400 /* module uses panning effects or have + non-tracker default initial panning */ +#define UF_FARTEMPO 0x0800 /* Module uses Farandole tempo calculations */ + +typedef struct MODULE { + /* general module information */ + CHAR* songname; /* name of the song */ + CHAR* modtype; /* string type of module loaded */ + CHAR* comment; /* module comments */ + + UWORD flags; /* See module flags above */ + UBYTE numchn; /* number of module channels */ + UBYTE numvoices; /* max # voices used for full NNA playback */ + UWORD numpos; /* number of positions in this song */ + UWORD numpat; /* number of patterns in this song */ + UWORD numins; /* number of instruments */ + UWORD numsmp; /* number of samples */ + + struct INSTRUMENT* instruments; /* all instruments */ + struct SAMPLE* samples; /* all samples */ + + UBYTE realchn; /* real number of channels used */ + UBYTE totalchn; /* total number of channels used (incl NNAs) */ + + /* playback settings */ + UWORD reppos; /* restart position */ + UBYTE initspeed; /* initial song speed */ + UWORD inittempo; /* initial song tempo */ + UBYTE initvolume; /* initial global volume (0 - 128) */ + UWORD panning[UF_MAXCHAN]; /* panning positions */ + UBYTE chanvol[UF_MAXCHAN]; /* channel positions */ + UWORD bpm; /* current beats-per-minute speed */ + UWORD sngspd; /* current song speed */ + SWORD volume; /* song volume (0-128) (or user volume) */ + + BOOL extspd; /* extended speed flag (default enabled) */ + BOOL panflag; /* panning flag (default enabled) */ + BOOL wrap; /* wrap module ? (default disabled) */ + BOOL loop; /* allow module to loop ? (default enabled) */ + BOOL fadeout; /* volume fade out during last pattern */ + + UWORD patpos; /* current row number */ + SWORD sngpos; /* current song position */ + ULONG sngtime; /* current song time in 2^-10 seconds */ + + SWORD relspd; /* relative speed factor */ + + /* internal module representation */ + UWORD numtrk; /* number of tracks */ + UBYTE** tracks; /* array of numtrk pointers to tracks */ + UWORD* patterns; /* array of Patterns */ + UWORD* pattrows; /* array of number of rows for each pattern */ + UWORD* positions; /* all positions */ + + BOOL forbid; /* if true, no player update! */ + UWORD numrow; /* number of rows on current pattern */ + UWORD vbtick; /* tick counter (counts from 0 to sngspd) */ + UWORD sngremainder;/* used for song time computation */ + + struct MP_CONTROL* control; /* Effects Channel info (size pf->numchn) */ + struct MP_VOICE* voice; /* Audio Voice information (size md_numchn) */ + + UBYTE globalslide; /* global volume slide rate */ + UBYTE pat_repcrazy;/* module has just looped to position -1 */ + UWORD patbrk; /* position where to start a new pattern */ + UBYTE patdly; /* patterndelay counter (command memory) */ + UBYTE patdly2; /* patterndelay counter (real one) */ + SWORD posjmp; /* flag to indicate a jump is needed... */ + UWORD bpmlimit; /* threshold to detect bpm or speed values */ +} MODULE; + + +/* This structure is used to query current playing voices status */ +typedef struct VOICEINFO { + INSTRUMENT* i; /* Current channel instrument */ + SAMPLE* s; /* Current channel sample */ + SWORD panning; /* panning position */ + SBYTE volume; /* channel's "global" volume (0..64) */ + UWORD period; /* period to play the sample at */ + UBYTE kick; /* if true = sample has been restarted */ +} VOICEINFO; + +/* + * ========== Module loaders + */ + +struct MLOADER; + +MIKMODAPI extern CHAR* MikMod_InfoLoader(void); +MIKMODAPI extern void MikMod_RegisterAllLoaders(void); +MIKMODAPI extern void MikMod_RegisterLoader(struct MLOADER*); + +MIKMODAPI extern struct MLOADER load_669; /* 669 and Extended-669 (by Tran/Renaissance) */ +MIKMODAPI extern struct MLOADER load_amf; /* DMP Advanced Module Format (by Otto Chrons) */ +MIKMODAPI extern struct MLOADER load_asy; /* ASYLUM Music Format 1.0 */ +MIKMODAPI extern struct MLOADER load_dsm; /* DSIK internal module format */ +MIKMODAPI extern struct MLOADER load_far; /* Farandole Composer (by Daniel Potter) */ +MIKMODAPI extern struct MLOADER load_gdm; /* General DigiMusic (by Edward Schlunder) */ +MIKMODAPI extern struct MLOADER load_gt2; /* Graoumf tracker */ +MIKMODAPI extern struct MLOADER load_it; /* Impulse Tracker (by Jeffrey Lim) */ +MIKMODAPI extern struct MLOADER load_imf; /* Imago Orpheus (by Lutz Roeder) */ +MIKMODAPI extern struct MLOADER load_med; /* Amiga MED modules (by Teijo Kinnunen) */ +MIKMODAPI extern struct MLOADER load_m15; /* Soundtracker 15-instrument */ +MIKMODAPI extern struct MLOADER load_mod; /* Standard 31-instrument Module loader */ +MIKMODAPI extern struct MLOADER load_mtm; /* Multi-Tracker Module (by Renaissance) */ +MIKMODAPI extern struct MLOADER load_okt; /* Amiga Oktalyzer */ +MIKMODAPI extern struct MLOADER load_stm; /* ScreamTracker 2 (by Future Crew) */ +MIKMODAPI extern struct MLOADER load_stx; /* STMIK 0.2 (by Future Crew) */ +MIKMODAPI extern struct MLOADER load_s3m; /* ScreamTracker 3 (by Future Crew) */ +MIKMODAPI extern struct MLOADER load_ult; /* UltraTracker (by MAS) */ +MIKMODAPI extern struct MLOADER load_umx; /* Unreal UMX container of Epic Games */ +MIKMODAPI extern struct MLOADER load_uni; /* MikMod and APlayer internal module format */ +MIKMODAPI extern struct MLOADER load_xm; /* FastTracker 2 (by Triton) */ + +/* + * ========== Module player + */ + +MIKMODAPI extern MODULE* Player_Load(const CHAR*,int,BOOL); +MIKMODAPI extern MODULE* Player_LoadFP(FILE*,int,BOOL); +MIKMODAPI extern MODULE* Player_LoadMem(const char *buffer,int len,int maxchan,BOOL curious); +MIKMODAPI extern MODULE* Player_LoadGeneric(MREADER*,int,BOOL); +MIKMODAPI extern CHAR* Player_LoadTitle(const CHAR*); +MIKMODAPI extern CHAR* Player_LoadTitleFP(FILE*); +MIKMODAPI extern CHAR* Player_LoadTitleMem(const char *buffer,int len); +MIKMODAPI extern CHAR* Player_LoadTitleGeneric(MREADER*); + +MIKMODAPI extern void Player_Free(MODULE*); +MIKMODAPI extern void Player_Start(MODULE*); +MIKMODAPI extern BOOL Player_Active(void); +MIKMODAPI extern void Player_Stop(void); +MIKMODAPI extern void Player_TogglePause(void); +MIKMODAPI extern BOOL Player_Paused(void); +MIKMODAPI extern void Player_NextPosition(void); +MIKMODAPI extern void Player_PrevPosition(void); +MIKMODAPI extern void Player_SetPosition(UWORD); +MIKMODAPI extern BOOL Player_Muted(UBYTE); +MIKMODAPI extern void Player_SetVolume(SWORD); +MIKMODAPI extern MODULE* Player_GetModule(void); +MIKMODAPI extern void Player_SetSpeed(UWORD); +MIKMODAPI extern void Player_SetTempo(UWORD); +MIKMODAPI extern void Player_Unmute(SLONG,...); +MIKMODAPI extern void Player_Mute(SLONG,...); +MIKMODAPI extern void Player_ToggleMute(SLONG,...); +MIKMODAPI extern int Player_GetChannelVoice(UBYTE); +MIKMODAPI extern UWORD Player_GetChannelPeriod(UBYTE); +MIKMODAPI extern int Player_QueryVoices(UWORD numvoices, VOICEINFO *vinfo); +MIKMODAPI extern int Player_GetRow(void); +MIKMODAPI extern int Player_GetOrder(void); + +typedef void (*MikMod_player_t)(void); +typedef void (*MikMod_callback_t)(unsigned char *data, size_t len); + +MIKMODAPI extern MikMod_player_t MikMod_RegisterPlayer(MikMod_player_t); + +#define MUTE_EXCLUSIVE 32000 +#define MUTE_INCLUSIVE 32001 + +/* + * ========== Drivers + */ + +enum { + MD_MUSIC = 0, + MD_SNDFX +}; + +enum { + MD_HARDWARE = 0, + MD_SOFTWARE +}; + +/* Mixing flags */ + +/* These ones take effect only after MikMod_Init or MikMod_Reset */ +#define DMODE_16BITS 0x0001 /* enable 16 bit output */ +#define DMODE_STEREO 0x0002 /* enable stereo output */ +#define DMODE_SOFT_SNDFX 0x0004 /* Process sound effects via software mixer */ +#define DMODE_SOFT_MUSIC 0x0008 /* Process music via software mixer */ +#define DMODE_HQMIXER 0x0010 /* Use high-quality (slower) software mixer */ +#define DMODE_FLOAT 0x0020 /* enable float output */ +/* These take effect immediately. */ +#define DMODE_SURROUND 0x0100 /* enable surround sound */ +#define DMODE_INTERP 0x0200 /* enable interpolation */ +#define DMODE_REVERSE 0x0400 /* reverse stereo */ +#define DMODE_SIMDMIXER 0x0800 /* enable SIMD mixing */ +#define DMODE_NOISEREDUCTION 0x1000 /* Low pass filtering */ + + +struct SAMPLOAD; + +typedef struct MDRIVER { + struct MDRIVER* next; + const CHAR* Name; + const CHAR* Version; + + UBYTE HardVoiceLimit; /* Limit of hardware mixer voices */ + UBYTE SoftVoiceLimit; /* Limit of software mixer voices */ + + const CHAR* Alias; + const CHAR* CmdLineHelp; + + void (*CommandLine) (const CHAR*); + BOOL (*IsPresent) (void); + SWORD (*SampleLoad) (struct SAMPLOAD*,int); + void (*SampleUnload) (SWORD); + ULONG (*FreeSampleSpace) (int); + ULONG (*RealSampleLength) (int,struct SAMPLE*); + int (*Init) (void); + void (*Exit) (void); + int (*Reset) (void); + int (*SetNumVoices) (void); + int (*PlayStart) (void); + void (*PlayStop) (void); + void (*Update) (void); + void (*Pause) (void); + void (*VoiceSetVolume) (UBYTE,UWORD); + UWORD (*VoiceGetVolume) (UBYTE); + void (*VoiceSetFrequency)(UBYTE,ULONG); + ULONG (*VoiceGetFrequency)(UBYTE); + void (*VoiceSetPanning) (UBYTE,ULONG); + ULONG (*VoiceGetPanning) (UBYTE); + void (*VoicePlay) (UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD); + void (*VoiceStop) (UBYTE); + BOOL (*VoiceStopped) (UBYTE); + SLONG (*VoiceGetPosition) (UBYTE); + ULONG (*VoiceRealVolume) (UBYTE); +} MDRIVER; + +/* These variables can be changed at ANY time and results will be immediate */ +MIKMODAPI extern UBYTE md_volume; /* global sound volume (0-128) */ +MIKMODAPI extern UBYTE md_musicvolume; /* volume of song */ +MIKMODAPI extern UBYTE md_sndfxvolume; /* volume of sound effects */ +MIKMODAPI extern UBYTE md_reverb; /* 0 = none; 15 = chaos */ +MIKMODAPI extern UBYTE md_pansep; /* 0 = mono; 128 == 100% (full left/right) */ + +/* The variables below can be changed at any time, but changes will not be + implemented until MikMod_Reset is called. A call to MikMod_Reset may result + in a skip or pop in audio (depending on the soundcard driver and the settings + changed). */ +MIKMODAPI extern UWORD md_device; /* device */ +MIKMODAPI extern UWORD md_mixfreq; /* mixing frequency */ +MIKMODAPI extern UWORD md_mode; /* mode. See DMODE_? flags above */ + +/* The following variable should not be changed! */ +MIKMODAPI extern MDRIVER* md_driver; /* Current driver in use. */ + +/* Known drivers list */ + +MIKMODAPI extern struct MDRIVER drv_nos; /* no sound */ +MIKMODAPI extern struct MDRIVER drv_pipe; /* piped output */ +MIKMODAPI extern struct MDRIVER drv_raw; /* raw file disk writer [music.raw] */ +MIKMODAPI extern struct MDRIVER drv_stdout; /* output to stdout */ +MIKMODAPI extern struct MDRIVER drv_wav; /* RIFF WAVE file disk writer [music.wav] */ +MIKMODAPI extern struct MDRIVER drv_aiff; /* AIFF file disk writer [music.aiff] */ + +MIKMODAPI extern struct MDRIVER drv_ultra; /* Linux Ultrasound driver */ +MIKMODAPI extern struct MDRIVER drv_sam9407;/* Linux sam9407 driver */ + +MIKMODAPI extern struct MDRIVER drv_AF; /* Dec Alpha AudioFile */ +MIKMODAPI extern struct MDRIVER drv_ahi; /* Amiga AHI */ +MIKMODAPI extern struct MDRIVER drv_aix; /* AIX audio device */ +MIKMODAPI extern struct MDRIVER drv_alsa; /* Advanced Linux Sound Architecture (ALSA) */ +MIKMODAPI extern struct MDRIVER drv_esd; /* Enlightened sound daemon (EsounD) */ +MIKMODAPI extern struct MDRIVER drv_pulseaudio; /* PulseAudio */ +MIKMODAPI extern struct MDRIVER drv_hp; /* HP-UX audio device */ +MIKMODAPI extern struct MDRIVER drv_nas; /* Network Audio System (NAS) */ +MIKMODAPI extern struct MDRIVER drv_oss; /* OpenSound System (Linux,FreeBSD...) */ +MIKMODAPI extern struct MDRIVER drv_openal; /* OpenAL driver */ +MIKMODAPI extern struct MDRIVER drv_sdl; /* SDL audio driver */ +MIKMODAPI extern struct MDRIVER drv_sgi; /* SGI audio library */ +MIKMODAPI extern struct MDRIVER drv_sndio; /* OpenBSD sndio */ +MIKMODAPI extern struct MDRIVER drv_sun; /* Sun/NetBSD/OpenBSD audio device */ + +MIKMODAPI extern struct MDRIVER drv_dart; /* OS/2 Direct Audio RealTime */ +MIKMODAPI extern struct MDRIVER drv_os2; /* OS/2 MMPM/2 */ + +MIKMODAPI extern struct MDRIVER drv_ds; /* Win32 DirectSound driver */ +MIKMODAPI extern struct MDRIVER drv_xaudio2;/* Win32 XAudio2 driver */ +MIKMODAPI extern struct MDRIVER drv_win; /* Win32 multimedia API driver */ + +MIKMODAPI extern struct MDRIVER drv_mac; /* Macintosh Sound Manager driver */ +MIKMODAPI extern struct MDRIVER drv_osx; /* MacOS X CoreAudio Driver */ + +MIKMODAPI extern struct MDRIVER drv_dc; /* Dreamcast driver */ +MIKMODAPI extern struct MDRIVER drv_gp32; /* GP32 Sound driver */ +MIKMODAPI extern struct MDRIVER drv_psp; /* PlayStation Portable driver */ +MIKMODAPI extern struct MDRIVER drv_n64; /* Nintendo64 driver */ + +MIKMODAPI extern struct MDRIVER drv_wss; /* DOS WSS driver */ +MIKMODAPI extern struct MDRIVER drv_sb; /* DOS S/B driver */ + +MIKMODAPI extern struct MDRIVER drv_osles; /* OpenSL ES driver for android */ + +/*========== Virtual channel mixer interface (for user-supplied drivers only) */ + +MIKMODAPI extern int VC_Init(void); +MIKMODAPI extern void VC_Exit(void); +MIKMODAPI extern void VC_SetCallback(MikMod_callback_t callback); +MIKMODAPI extern int VC_SetNumVoices(void); +MIKMODAPI extern ULONG VC_SampleSpace(int); +MIKMODAPI extern ULONG VC_SampleLength(int,SAMPLE*); + +MIKMODAPI extern int VC_PlayStart(void); +MIKMODAPI extern void VC_PlayStop(void); + +MIKMODAPI extern SWORD VC_SampleLoad(struct SAMPLOAD*,int); +MIKMODAPI extern void VC_SampleUnload(SWORD); + +MIKMODAPI extern ULONG VC_WriteBytes(SBYTE*,ULONG); +MIKMODAPI extern ULONG VC_SilenceBytes(SBYTE*,ULONG); + +MIKMODAPI extern void VC_VoiceSetVolume(UBYTE,UWORD); +MIKMODAPI extern UWORD VC_VoiceGetVolume(UBYTE); +MIKMODAPI extern void VC_VoiceSetFrequency(UBYTE,ULONG); +MIKMODAPI extern ULONG VC_VoiceGetFrequency(UBYTE); +MIKMODAPI extern void VC_VoiceSetPanning(UBYTE,ULONG); +MIKMODAPI extern ULONG VC_VoiceGetPanning(UBYTE); +MIKMODAPI extern void VC_VoicePlay(UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD); + +MIKMODAPI extern void VC_VoiceStop(UBYTE); +MIKMODAPI extern BOOL VC_VoiceStopped(UBYTE); +MIKMODAPI extern SLONG VC_VoiceGetPosition(UBYTE); +MIKMODAPI extern ULONG VC_VoiceRealVolume(UBYTE); + +#ifdef __cplusplus +} +#endif + +#endif + +/* ex:set ts=4: */ diff --git a/Windows/codecs/include/mikmod_config.txt b/Windows/codecs/include/mikmod_config.txt new file mode 100644 index 0000000..d9000c2 --- /dev/null +++ b/Windows/codecs/include/mikmod_config.txt @@ -0,0 +1,2 @@ +libmikmod-3.3.12. only the "nosound" driver (drv_nos) is included: +we only need/register/use drv_nos here and nothing else. diff --git a/Windows/codecs/include/mpg123.h b/Windows/codecs/include/mpg123.h new file mode 100644 index 0000000..faa4f3e --- /dev/null +++ b/Windows/codecs/include/mpg123.h @@ -0,0 +1,1223 @@ +/* + libmpg123: MPEG Audio Decoder library (version 1.22.4) + + copyright 1995-2010 by the mpg123 project - free software under the terms of the LGPL 2.1 + see COPYING and AUTHORS files in distribution or http://mpg123.org +*/ + +#ifndef MPG123_LIB_H +#define MPG123_LIB_H + +/* This build of libmpg123 has no _FILE_OFFSET_BITS=64 support: */ +#define MPG123_NO_LARGENAME +/* */ + +/** \file mpg123.h The header file for the libmpg123 MPEG Audio decoder */ + +/* A macro to check at compile time which set of API functions to expect. + This should be incremented at least each time a new symbol is added to the header. */ +#define MPG123_API_VERSION 42 + +/* These aren't actually in use... seems to work without using libtool. */ +#ifdef BUILD_MPG123_DLL +/* The dll exports. */ +#define MPG123_EXPORT __declspec(dllexport) +#else +#ifdef LINK_MPG123_DLL +/* The exe imports. */ +#define MPG123_EXPORT __declspec(dllimport) +#else +/* Nothing on normal/UNIX builds */ +#define MPG123_EXPORT +#endif +#endif + +/* This is for Visual Studio, so this header works as distributed in the binary downloads */ +#if defined(_MSC_VER) && !defined(MPG123_DEF_SSIZE_T) +#define MPG123_DEF_SSIZE_T +#include +typedef ptrdiff_t ssize_t; +#endif + +#ifndef MPG123_NO_CONFIGURE /* Enable use of this file without configure. */ +#include +#include + +/* This build of libmpg123 has no _FILE_OFFSET_BITS=64 support: */ +#define off_t long +/* */ + +/* Simplified large file handling. + I used to have a check here that prevents building for a library with conflicting large file setup + (application that uses 32 bit offsets with library that uses 64 bits). + While that was perfectly fine in an environment where there is one incarnation of the library, + it hurt GNU/Linux and Solaris systems with multilib where the distribution fails to provide the + correct header matching the 32 bit library (where large files need explicit support) or + the 64 bit library (where there is no distinction). + + New approach: When the app defines _FILE_OFFSET_BITS, it wants non-default large file support, + and thus functions with added suffix (mpg123_open_64). + Any mismatch will be caught at link time because of the _FILE_OFFSET_BITS setting used when + building libmpg123. Plus, there's dual mode large file support in mpg123 since 1.12 now. + Link failure is not the expected outcome of any half-sane usage anymore. + + More complication: What about client code defining _LARGEFILE64_SOURCE? It might want direct access to the _64 functions, along with the ones without suffix. Well, that's possible now via defining MPG123_NO_LARGENAME and MPG123_LARGESUFFIX, respectively, for disabling or enforcing the suffix names. +*/ + +/* + Now, the renaming of large file aware functions. + By default, it appends underscore _FILE_OFFSET_BITS (so, mpg123_seek_64 for mpg123_seek), if _FILE_OFFSET_BITS is defined. You can force a different suffix via MPG123_LARGESUFFIX (that must include the underscore), or you can just disable the whole mess by defining MPG123_NO_LARGENAME. +*/ +#if (!defined MPG123_NO_LARGENAME) && ((defined _FILE_OFFSET_BITS) || (defined MPG123_LARGESUFFIX)) + +/* Need some trickery to concatenate the value(s) of the given macro(s). */ +#define MPG123_MACROCAT_REALLY(a, b) a ## b +#define MPG123_MACROCAT(a, b) MPG123_MACROCAT_REALLY(a, b) +#ifndef MPG123_LARGESUFFIX +#define MPG123_LARGESUFFIX MPG123_MACROCAT(_, _FILE_OFFSET_BITS) +#endif +#define MPG123_LARGENAME(func) MPG123_MACROCAT(func, MPG123_LARGESUFFIX) + +#define mpg123_open MPG123_LARGENAME(mpg123_open) +#define mpg123_open_fd MPG123_LARGENAME(mpg123_open_fd) +#define mpg123_open_handle MPG123_LARGENAME(mpg123_open_handle) +#define mpg123_framebyframe_decode MPG123_LARGENAME(mpg123_framebyframe_decode) +#define mpg123_decode_frame MPG123_LARGENAME(mpg123_decode_frame) +#define mpg123_tell MPG123_LARGENAME(mpg123_tell) +#define mpg123_tellframe MPG123_LARGENAME(mpg123_tellframe) +#define mpg123_tell_stream MPG123_LARGENAME(mpg123_tell_stream) +#define mpg123_seek MPG123_LARGENAME(mpg123_seek) +#define mpg123_feedseek MPG123_LARGENAME(mpg123_feedseek) +#define mpg123_seek_frame MPG123_LARGENAME(mpg123_seek_frame) +#define mpg123_timeframe MPG123_LARGENAME(mpg123_timeframe) +#define mpg123_index MPG123_LARGENAME(mpg123_index) +#define mpg123_set_index MPG123_LARGENAME(mpg123_set_index) +#define mpg123_position MPG123_LARGENAME(mpg123_position) +#define mpg123_length MPG123_LARGENAME(mpg123_length) +#define mpg123_framelength MPG123_LARGENAME(mpg123_framelength) +#define mpg123_set_filesize MPG123_LARGENAME(mpg123_set_filesize) +#define mpg123_replace_reader MPG123_LARGENAME(mpg123_replace_reader) +#define mpg123_replace_reader_handle MPG123_LARGENAME(mpg123_replace_reader_handle) +#define mpg123_framepos MPG123_LARGENAME(mpg123_framepos) + +#endif /* largefile hackery */ + +#endif /* MPG123_NO_CONFIGURE */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup mpg123_init mpg123 library and handle setup + * + * Functions to initialise and shutdown the mpg123 library and handles. + * The parameters of handles have workable defaults, you only have to tune them when you want to tune something;-) + * Tip: Use a RVA setting... + * + * @{ + */ + +/** Opaque structure for the libmpg123 decoder handle. */ +struct mpg123_handle_struct; + +/** Opaque structure for the libmpg123 decoder handle. + * Most functions take a pointer to a mpg123_handle as first argument and operate on its data in an object-oriented manner. + */ +typedef struct mpg123_handle_struct mpg123_handle; + +/** Function to initialise the mpg123 library. + * This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library. + * + * \return MPG123_OK if successful, otherwise an error number. + */ +MPG123_EXPORT int mpg123_init(void); + +/** Function to close down the mpg123 library. + * This function is not thread-safe. Call it exactly once per process, before any other (possibly threaded) work with the library. */ +MPG123_EXPORT void mpg123_exit(void); + +/** Create a handle with optional choice of decoder (named by a string, see mpg123_decoders() or mpg123_supported_decoders()). + * and optional retrieval of an error code to feed to mpg123_plain_strerror(). + * Optional means: Any of or both the parameters may be NULL. + * + * \return Non-NULL pointer when successful. + */ +MPG123_EXPORT mpg123_handle *mpg123_new(const char* decoder, int *error); + +/** Delete handle, mh is either a valid mpg123 handle or NULL. */ +MPG123_EXPORT void mpg123_delete(mpg123_handle *mh); + +/** Enumeration of the parameters types that it is possible to set/get. */ +enum mpg123_parms +{ + MPG123_VERBOSE = 0, /**< set verbosity value for enabling messages to stderr, >= 0 makes sense (integer) */ + MPG123_FLAGS, /**< set all flags, p.ex val = MPG123_GAPLESS|MPG123_MONO_MIX (integer) */ + MPG123_ADD_FLAGS, /**< add some flags (integer) */ + MPG123_FORCE_RATE, /**< when value > 0, force output rate to that value (integer) */ + MPG123_DOWN_SAMPLE, /**< 0=native rate, 1=half rate, 2=quarter rate (integer) */ + MPG123_RVA, /**< one of the RVA choices above (integer) */ + MPG123_DOWNSPEED, /**< play a frame N times (integer) */ + MPG123_UPSPEED, /**< play every Nth frame (integer) */ + MPG123_START_FRAME, /**< start with this frame (skip frames before that, integer) */ + MPG123_DECODE_FRAMES, /**< decode only this number of frames (integer) */ + MPG123_ICY_INTERVAL, /**< stream contains ICY metadata with this interval (integer) */ + MPG123_OUTSCALE, /**< the scale for output samples (amplitude - integer or float according to mpg123 output format, normally integer) */ + MPG123_TIMEOUT, /**< timeout for reading from a stream (not supported on win32, integer) */ + MPG123_REMOVE_FLAGS, /**< remove some flags (inverse of MPG123_ADD_FLAGS, integer) */ + MPG123_RESYNC_LIMIT, /**< Try resync on frame parsing for that many bytes or until end of stream (<0 ... integer). This can enlarge the limit for skipping junk on beginning, too (but not reduce it). */ + MPG123_INDEX_SIZE /**< Set the frame index size (if supported). Values <0 mean that the index is allowed to grow dynamically in these steps (in positive direction, of course) -- Use this when you really want a full index with every individual frame. */ + ,MPG123_PREFRAMES /**< Decode/ignore that many frames in advance for layer 3. This is needed to fill bit reservoir after seeking, for example (but also at least one frame in advance is needed to have all "normal" data for layer 3). Give a positive integer value, please.*/ + ,MPG123_FEEDPOOL /**< For feeder mode, keep that many buffers in a pool to avoid frequent malloc/free. The pool is allocated on mpg123_open_feed(). If you change this parameter afterwards, you can trigger growth and shrinkage during decoding. The default value could change any time. If you care about this, then set it. (integer) */ + ,MPG123_FEEDBUFFER /**< Minimal size of one internal feeder buffer, again, the default value is subject to change. (integer) */ +}; + +/** Flag bits for MPG123_FLAGS, use the usual binary or to combine. */ +enum mpg123_param_flags +{ + MPG123_FORCE_MONO = 0x7 /**< 0111 Force some mono mode: This is a test bitmask for seeing if any mono forcing is active. */ + ,MPG123_MONO_LEFT = 0x1 /**< 0001 Force playback of left channel only. */ + ,MPG123_MONO_RIGHT = 0x2 /**< 0010 Force playback of right channel only. */ + ,MPG123_MONO_MIX = 0x4 /**< 0100 Force playback of mixed mono. */ + ,MPG123_FORCE_STEREO = 0x8 /**< 1000 Force stereo output. */ + ,MPG123_FORCE_8BIT = 0x10 /**< 00010000 Force 8bit formats. */ + ,MPG123_QUIET = 0x20 /**< 00100000 Suppress any printouts (overrules verbose). */ + ,MPG123_GAPLESS = 0x40 /**< 01000000 Enable gapless decoding (default on if libmpg123 has support). */ + ,MPG123_NO_RESYNC = 0x80 /**< 10000000 Disable resync stream after error. */ + ,MPG123_SEEKBUFFER = 0x100 /**< 000100000000 Enable small buffer on non-seekable streams to allow some peek-ahead (for better MPEG sync). */ + ,MPG123_FUZZY = 0x200 /**< 001000000000 Enable fuzzy seeks (guessing byte offsets or using approximate seek points from Xing TOC) */ + ,MPG123_FORCE_FLOAT = 0x400 /**< 010000000000 Force floating point output (32 or 64 bits depends on mpg123 internal precision). */ + ,MPG123_PLAIN_ID3TEXT = 0x800 /**< 100000000000 Do not translate ID3 text data to UTF-8. ID3 strings will contain the raw text data, with the first byte containing the ID3 encoding code. */ + ,MPG123_IGNORE_STREAMLENGTH = 0x1000 /**< 1000000000000 Ignore any stream length information contained in the stream, which can be contained in a 'TLEN' frame of an ID3v2 tag or a Xing tag */ + ,MPG123_SKIP_ID3V2 = 0x2000 /**< 10 0000 0000 0000 Do not parse ID3v2 tags, just skip them. */ + ,MPG123_IGNORE_INFOFRAME = 0x4000 /**< 100 0000 0000 0000 Do not parse the LAME/Xing info frame, treat it as normal MPEG data. */ + ,MPG123_AUTO_RESAMPLE = 0x8000 /**< 1000 0000 0000 0000 Allow automatic internal resampling of any kind (default on if supported). Especially when going lowlevel with replacing output buffer, you might want to unset this flag. Setting MPG123_DOWNSAMPLE or MPG123_FORCE_RATE will override this. */ + ,MPG123_PICTURE = 0x10000 /**< 17th bit: Enable storage of pictures from tags (ID3v2 APIC). */ +}; + +/** choices for MPG123_RVA */ +enum mpg123_param_rva +{ + MPG123_RVA_OFF = 0 /**< RVA disabled (default). */ + ,MPG123_RVA_MIX = 1 /**< Use mix/track/radio gain. */ + ,MPG123_RVA_ALBUM = 2 /**< Use album/audiophile gain */ + ,MPG123_RVA_MAX = MPG123_RVA_ALBUM /**< The maximum RVA code, may increase in future. */ +}; + +/* TODO: Assess the possibilities and troubles of changing parameters during playback. */ + +/** Set a specific parameter, for a specific mpg123_handle, using a parameter + * type key chosen from the mpg123_parms enumeration, to the specified value. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_param(mpg123_handle *mh, enum mpg123_parms type, long value, double fvalue); + +/** Get a specific parameter, for a specific mpg123_handle. + * See the mpg123_parms enumeration for a list of available parameters. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_getparam(mpg123_handle *mh, enum mpg123_parms type, long *val, double *fval); + +/** Feature set available for query with mpg123_feature. */ +enum mpg123_feature_set +{ + MPG123_FEATURE_ABI_UTF8OPEN = 0 /**< mpg123 expects path names to be given in UTF-8 encoding instead of plain native. */ + ,MPG123_FEATURE_OUTPUT_8BIT /**< 8bit output */ + ,MPG123_FEATURE_OUTPUT_16BIT /**< 16bit output */ + ,MPG123_FEATURE_OUTPUT_32BIT /**< 32bit output */ + ,MPG123_FEATURE_INDEX /**< support for building a frame index for accurate seeking */ + ,MPG123_FEATURE_PARSE_ID3V2 /**< id3v2 parsing */ + ,MPG123_FEATURE_DECODE_LAYER1 /**< mpeg layer-1 decoder enabled */ + ,MPG123_FEATURE_DECODE_LAYER2 /**< mpeg layer-2 decoder enabled */ + ,MPG123_FEATURE_DECODE_LAYER3 /**< mpeg layer-3 decoder enabled */ + ,MPG123_FEATURE_DECODE_ACCURATE /**< accurate decoder rounding */ + ,MPG123_FEATURE_DECODE_DOWNSAMPLE /**< downsample (sample omit) */ + ,MPG123_FEATURE_DECODE_NTOM /**< flexible rate decoding */ + ,MPG123_FEATURE_PARSE_ICY /**< ICY support */ + ,MPG123_FEATURE_TIMEOUT_READ /**< Reader with timeout (network). */ +}; + +/** Query libmpg123 feature, 1 for success, 0 for unimplemented functions. */ +MPG123_EXPORT int mpg123_feature(const enum mpg123_feature_set key); + +/* @} */ + + +/** \defgroup mpg123_error mpg123 error handling + * + * Functions to get text version of the error numbers and an enumeration + * of the error codes returned by libmpg123. + * + * Most functions operating on a mpg123_handle simply return MPG123_OK (0) + * on success and MPG123_ERR (-1) on failure, setting the internal error + * variable of the handle to the specific error code. If there was not a valid + * (non-NULL) handle provided to a function operating on one, MPG123_BAD_HANDLE + * may be returned if this can not be confused with a valid positive return + * value. + * Meaning: A function expected to return positive integers on success will + * always indicate error or a special condition by returning a negative one. + * + * Decoding/seek functions may also return message codes MPG123_DONE, + * MPG123_NEW_FORMAT and MPG123_NEED_MORE (all negative, see below on how to + * react). Note that calls to those can be nested, so generally watch out + * for these codes after initial handle setup. + * Especially any function that needs information about the current stream + * to work will try to at least parse the beginning if that did not happen + * yet. + * + * On a function that is supposed to return MPG123_OK on success and + * MPG123_ERR on failure, make sure you check for != MPG123_OK, not + * == MPG123_ERR, as the error code could get more specific in future, + * or there is just a special message from a decoding routine as indicated + * above. + * + * @{ + */ + +/** Enumeration of the message and error codes and returned by libmpg123 functions. */ +enum mpg123_errors +{ + MPG123_DONE=-12, /**< Message: Track ended. Stop decoding. */ + MPG123_NEW_FORMAT=-11, /**< Message: Output format will be different on next call. Note that some libmpg123 versions between 1.4.3 and 1.8.0 insist on you calling mpg123_getformat() after getting this message code. Newer verisons behave like advertised: You have the chance to call mpg123_getformat(), but you can also just continue decoding and get your data. */ + MPG123_NEED_MORE=-10, /**< Message: For feed reader: "Feed me more!" (call mpg123_feed() or mpg123_decode() with some new input data). */ + MPG123_ERR=-1, /**< Generic Error */ + MPG123_OK=0, /**< Success */ + MPG123_BAD_OUTFORMAT, /**< Unable to set up output format! */ + MPG123_BAD_CHANNEL, /**< Invalid channel number specified. */ + MPG123_BAD_RATE, /**< Invalid sample rate specified. */ + MPG123_ERR_16TO8TABLE, /**< Unable to allocate memory for 16 to 8 converter table! */ + MPG123_BAD_PARAM, /**< Bad parameter id! */ + MPG123_BAD_BUFFER, /**< Bad buffer given -- invalid pointer or too small size. */ + MPG123_OUT_OF_MEM, /**< Out of memory -- some malloc() failed. */ + MPG123_NOT_INITIALIZED, /**< You didn't initialize the library! */ + MPG123_BAD_DECODER, /**< Invalid decoder choice. */ + MPG123_BAD_HANDLE, /**< Invalid mpg123 handle. */ + MPG123_NO_BUFFERS, /**< Unable to initialize frame buffers (out of memory?). */ + MPG123_BAD_RVA, /**< Invalid RVA mode. */ + MPG123_NO_GAPLESS, /**< This build doesn't support gapless decoding. */ + MPG123_NO_SPACE, /**< Not enough buffer space. */ + MPG123_BAD_TYPES, /**< Incompatible numeric data types. */ + MPG123_BAD_BAND, /**< Bad equalizer band. */ + MPG123_ERR_NULL, /**< Null pointer given where valid storage address needed. */ + MPG123_ERR_READER, /**< Error reading the stream. */ + MPG123_NO_SEEK_FROM_END,/**< Cannot seek from end (end is not known). */ + MPG123_BAD_WHENCE, /**< Invalid 'whence' for seek function.*/ + MPG123_NO_TIMEOUT, /**< Build does not support stream timeouts. */ + MPG123_BAD_FILE, /**< File access error. */ + MPG123_NO_SEEK, /**< Seek not supported by stream. */ + MPG123_NO_READER, /**< No stream opened. */ + MPG123_BAD_PARS, /**< Bad parameter handle. */ + MPG123_BAD_INDEX_PAR, /**< Bad parameters to mpg123_index() and mpg123_set_index() */ + MPG123_OUT_OF_SYNC, /**< Lost track in bytestream and did not try to resync. */ + MPG123_RESYNC_FAIL, /**< Resync failed to find valid MPEG data. */ + MPG123_NO_8BIT, /**< No 8bit encoding possible. */ + MPG123_BAD_ALIGN, /**< Stack aligmnent error */ + MPG123_NULL_BUFFER, /**< NULL input buffer with non-zero size... */ + MPG123_NO_RELSEEK, /**< Relative seek not possible (screwed up file offset) */ + MPG123_NULL_POINTER, /**< You gave a null pointer somewhere where you shouldn't have. */ + MPG123_BAD_KEY, /**< Bad key value given. */ + MPG123_NO_INDEX, /**< No frame index in this build. */ + MPG123_INDEX_FAIL, /**< Something with frame index went wrong. */ + MPG123_BAD_DECODER_SETUP, /**< Something prevents a proper decoder setup */ + MPG123_MISSING_FEATURE /**< This feature has not been built into libmpg123. */ + ,MPG123_BAD_VALUE /**< A bad value has been given, somewhere. */ + ,MPG123_LSEEK_FAILED /**< Low-level seek failed. */ + ,MPG123_BAD_CUSTOM_IO /**< Custom I/O not prepared. */ + ,MPG123_LFS_OVERFLOW /**< Offset value overflow during translation of large file API calls -- your client program cannot handle that large file. */ + ,MPG123_INT_OVERFLOW /**< Some integer overflow. */ +}; + +/** Return a string describing that error errcode means. */ +MPG123_EXPORT const char* mpg123_plain_strerror(int errcode); + +/** Give string describing what error has occured in the context of handle mh. + * When a function operating on an mpg123 handle returns MPG123_ERR, you should check for the actual reason via + * char *errmsg = mpg123_strerror(mh) + * This function will catch mh == NULL and return the message for MPG123_BAD_HANDLE. */ +MPG123_EXPORT const char* mpg123_strerror(mpg123_handle *mh); + +/** Return the plain errcode intead of a string. + * \return error code recorded in handle or MPG123_BAD_HANDLE + */ +MPG123_EXPORT int mpg123_errcode(mpg123_handle *mh); + +/*@}*/ + + +/** \defgroup mpg123_decoder mpg123 decoder selection + * + * Functions to list and select the available decoders. + * Perhaps the most prominent feature of mpg123: You have several (optimized) decoders to choose from (on x86 and PPC (MacOS) systems, that is). + * + * @{ + */ + +/** Return a NULL-terminated array of generally available decoder names (plain 8bit ASCII). */ +MPG123_EXPORT const char **mpg123_decoders(void); + +/** Return a NULL-terminated array of the decoders supported by the CPU (plain 8bit ASCII). */ +MPG123_EXPORT const char **mpg123_supported_decoders(void); + +/** Set the chosen decoder to 'decoder_name' + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_decoder(mpg123_handle *mh, const char* decoder_name); + +/** Get the currently active decoder engine name. + The active decoder engine can vary depening on output constraints, + mostly non-resampling, integer output is accelerated via 3DNow & Co. but for other modes a fallback engine kicks in. + Note that this can return a decoder that is ony active in the hidden and not available as decoder choice from the outside. + \return The decoder name or NULL on error. */ +MPG123_EXPORT const char* mpg123_current_decoder(mpg123_handle *mh); + +/*@}*/ + + +/** \defgroup mpg123_output mpg123 output audio format + * + * Functions to get and select the format of the decoded audio. + * + * Before you dive in, please be warned that you might get confused by this. This seems to happen a lot, therefore I am trying to explain in advance. + * + * The mpg123 library decides what output format to use when encountering the first frame in a stream, or actually any frame that is still valid but differs from the frames before in the prompted output format. At such a deciding point, an internal table of allowed encodings, sampling rates and channel setups is consulted. According to this table, an output format is chosen and the decoding engine set up accordingly (including ptimized routines for different output formats). This might seem unusual but it just follows from the non-existence of "MPEG audio files" with defined overall properties. There are streams, streams are concatenations of (semi) independent frames. We store streams on disk and call them "MPEG audio files", but that does not change their nature as the decoder is concerned (the LAME/Xing header for gapless decoding makes things interesting again). + * + * To get to the point: What you do with mpg123_format() and friends is to fill the internal table of allowed formats before it is used. That includes removing support for some formats or adding your forced sample rate (see MPG123_FORCE_RATE) that will be used with the crude internal resampler. Also keep in mind that the sample encoding is just a question of choice -- the MPEG frames do only indicate their native sampling rate and channel count. If you want to decode to integer or float samples, 8 or 16 bit ... that is your decision. In a "clean" world, libmpg123 would always decode to 32 bit float and let you handle any sample conversion. But there are optimized routines that work faster by directly decoding to the desired encoding / accuracy. We prefer efficiency over conceptual tidyness. + * + * People often start out thinking that mpg123_format() should change the actual decoding format on the fly. That is wrong. It only has effect on the next natural change of output format, when libmpg123 will consult its format table again. To make life easier, you might want to call mpg123_format_none() before any thing else and then just allow one desired encoding and a limited set of sample rates / channel choices that you actually intend to deal with. You can force libmpg123 to decode everything to 44100 KHz, stereo, 16 bit integer ... it will duplicate mono channels and even do resampling if needed (unless that feature is disabled in the build, same with some encodings). But I have to stress that the resampling of libmpg123 is very crude and doesn't even contain any kind of "proper" interpolation. + * + * In any case, watch out for MPG123_NEW_FORMAT as return message from decoding routines and call mpg123_getformat() to get the currently active output format. + * + * @{ + */ + +/** An enum over all sample types possibly known to mpg123. + * The values are designed as bit flags to allow bitmasking for encoding families. + * + * Note that (your build of) libmpg123 does not necessarily support all these. + * Usually, you can expect the 8bit encodings and signed 16 bit. + * Also 32bit float will be usual beginning with mpg123-1.7.0 . + * What you should bear in mind is that (SSE, etc) optimized routines may be absent + * for some formats. We do have SSE for 16, 32 bit and float, though. + * 24 bit integer is done via postprocessing of 32 bit output -- just cutting + * the last byte, no rounding, even. If you want better, do it yourself. + * + * All formats are in native byte order. If you need different endinaness, you + * can simply postprocess the output buffers (libmpg123 wouldn't do anything else). + * mpg123_encsize() can be helpful there. + */ +enum mpg123_enc_enum +{ + MPG123_ENC_8 = 0x00f /**< 0000 0000 1111 Some 8 bit integer encoding. */ + ,MPG123_ENC_16 = 0x040 /**< 0000 0100 0000 Some 16 bit integer encoding. */ + ,MPG123_ENC_24 = 0x4000 /**< 0100 0000 0000 0000 Some 24 bit integer encoding. */ + ,MPG123_ENC_32 = 0x100 /**< 0001 0000 0000 Some 32 bit integer encoding. */ + ,MPG123_ENC_SIGNED = 0x080 /**< 0000 1000 0000 Some signed integer encoding. */ + ,MPG123_ENC_FLOAT = 0xe00 /**< 1110 0000 0000 Some float encoding. */ + ,MPG123_ENC_SIGNED_16 = (MPG123_ENC_16|MPG123_ENC_SIGNED|0x10) /**< 1101 0000 signed 16 bit */ + ,MPG123_ENC_UNSIGNED_16 = (MPG123_ENC_16|0x20) /**< 0110 0000 unsigned 16 bit */ + ,MPG123_ENC_UNSIGNED_8 = 0x01 /**< 0000 0001 unsigned 8 bit */ + ,MPG123_ENC_SIGNED_8 = (MPG123_ENC_SIGNED|0x02) /**< 1000 0010 signed 8 bit */ + ,MPG123_ENC_ULAW_8 = 0x04 /**< 0000 0100 ulaw 8 bit */ + ,MPG123_ENC_ALAW_8 = 0x08 /**< 0000 1000 alaw 8 bit */ + ,MPG123_ENC_SIGNED_32 = MPG123_ENC_32|MPG123_ENC_SIGNED|0x1000 /**< 0001 0001 1000 0000 signed 32 bit */ + ,MPG123_ENC_UNSIGNED_32 = MPG123_ENC_32|0x2000 /**< 0010 0001 0000 0000 unsigned 32 bit */ + ,MPG123_ENC_SIGNED_24 = MPG123_ENC_24|MPG123_ENC_SIGNED|0x1000 /**< 0101 0000 1000 0000 signed 24 bit */ + ,MPG123_ENC_UNSIGNED_24 = MPG123_ENC_24|0x2000 /**< 0110 0000 0000 0000 unsigned 24 bit */ + ,MPG123_ENC_FLOAT_32 = 0x200 /**< 0010 0000 0000 32bit float */ + ,MPG123_ENC_FLOAT_64 = 0x400 /**< 0100 0000 0000 64bit float */ + ,MPG123_ENC_ANY = ( MPG123_ENC_SIGNED_16 | MPG123_ENC_UNSIGNED_16 | MPG123_ENC_UNSIGNED_8 + | MPG123_ENC_SIGNED_8 | MPG123_ENC_ULAW_8 | MPG123_ENC_ALAW_8 + | MPG123_ENC_SIGNED_32 | MPG123_ENC_UNSIGNED_32 + | MPG123_ENC_SIGNED_24 | MPG123_ENC_UNSIGNED_24 + | MPG123_ENC_FLOAT_32 | MPG123_ENC_FLOAT_64 ) /**< Any encoding on the list. */ +}; + +/** They can be combined into one number (3) to indicate mono and stereo... */ +enum mpg123_channelcount +{ + MPG123_MONO = 1 + ,MPG123_STEREO = 2 +}; + +/** An array of supported standard sample rates + * These are possible native sample rates of MPEG audio files. + * You can still force mpg123 to resample to a different one, but by default you will only get audio in one of these samplings. + * \param list Store a pointer to the sample rates array there. + * \param number Store the number of sample rates there. */ +MPG123_EXPORT void mpg123_rates(const long **list, size_t *number); + +/** An array of supported audio encodings. + * An audio encoding is one of the fully qualified members of mpg123_enc_enum (MPG123_ENC_SIGNED_16, not MPG123_SIGNED). + * \param list Store a pointer to the encodings array there. + * \param number Store the number of encodings there. */ +MPG123_EXPORT void mpg123_encodings(const int **list, size_t *number); + +/** Return the size (in bytes) of one mono sample of the named encoding. + * \param encoding The encoding value to analyze. + * \return positive size of encoding in bytes, 0 on invalid encoding. */ +MPG123_EXPORT int mpg123_encsize(int encoding); + +/** Configure a mpg123 handle to accept no output format at all, + * use before specifying supported formats with mpg123_format + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_format_none(mpg123_handle *mh); + +/** Configure mpg123 handle to accept all formats + * (also any custom rate you may set) -- this is default. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_format_all(mpg123_handle *mh); + +/** Set the audio format support of a mpg123_handle in detail: + * \param mh audio decoder handle + * \param rate The sample rate value (in Hertz). + * \param channels A combination of MPG123_STEREO and MPG123_MONO. + * \param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16 | MPG123_ENC_ULAW_8 (or 0 for no support). Please note that some encodings may not be supported in the library build and thus will be ignored here. + * \return MPG123_OK on success, MPG123_ERR if there was an error. */ +MPG123_EXPORT int mpg123_format(mpg123_handle *mh, long rate, int channels, int encodings); + +/** Check to see if a specific format at a specific rate is supported + * by mpg123_handle. + * \return 0 for no support (that includes invalid parameters), MPG123_STEREO, + * MPG123_MONO or MPG123_STEREO|MPG123_MONO. */ +MPG123_EXPORT int mpg123_format_support(mpg123_handle *mh, long rate, int encoding); + +/** Get the current output format written to the addresses given. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_getformat(mpg123_handle *mh, long *rate, int *channels, int *encoding); + +/*@}*/ + + +/** \defgroup mpg123_input mpg123 file input and decoding + * + * Functions for input bitstream and decoding operations. + * Decoding/seek functions may also return message codes MPG123_DONE, MPG123_NEW_FORMAT and MPG123_NEED_MORE (please read up on these on how to react!). + * @{ + */ + +/* reading samples / triggering decoding, possible return values: */ +/** Enumeration of the error codes returned by libmpg123 functions. */ + +/** Open and prepare to decode the specified file by filesystem path. + * This does not open HTTP urls; libmpg123 contains no networking code. + * If you want to decode internet streams, use mpg123_open_fd() or mpg123_open_feed(). + * \param path filesystem path + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_open(mpg123_handle *mh, const char *path); + +/** Use an already opened file descriptor as the bitstream input + * mpg123_close() will _not_ close the file descriptor. + */ +MPG123_EXPORT int mpg123_open_fd(mpg123_handle *mh, int fd); + +/** Use an opaque handle as bitstream input. This works only with the + * replaced I/O from mpg123_replace_reader_handle()! + * mpg123_close() will call the cleanup callback for your handle (if you gave one). + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_open_handle(mpg123_handle *mh, void *iohandle); + +/** Open a new bitstream and prepare for direct feeding + * This works together with mpg123_decode(); you are responsible for reading and feeding the input bitstream. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_open_feed(mpg123_handle *mh); + +/** Closes the source, if libmpg123 opened it. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_close(mpg123_handle *mh); + +/** Read from stream and decode up to outmemsize bytes. + * \param outmemory address of output buffer to write to + * \param outmemsize maximum number of bytes to write + * \param done address to store the number of actually decoded bytes to + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_read(mpg123_handle *mh, unsigned char *outmemory, size_t outmemsize, size_t *done); + +/** Feed data for a stream that has been opened with mpg123_open_feed(). + * It's give and take: You provide the bytestream, mpg123 gives you the decoded samples. + * \param in input buffer + * \param size number of input bytes + * \return MPG123_OK or error/message code. + */ +MPG123_EXPORT int mpg123_feed(mpg123_handle *mh, const unsigned char *in, size_t size); + +/** Decode MPEG Audio from inmemory to outmemory. + * This is very close to a drop-in replacement for old mpglib. + * When you give zero-sized output buffer the input will be parsed until + * decoded data is available. This enables you to get MPG123_NEW_FORMAT (and query it) + * without taking decoded data. + * Think of this function being the union of mpg123_read() and mpg123_feed() (which it actually is, sort of;-). + * You can actually always decide if you want those specialized functions in separate steps or one call this one here. + * \param inmemory input buffer + * \param inmemsize number of input bytes + * \param outmemory output buffer + * \param outmemsize maximum number of output bytes + * \param done address to store the number of actually decoded bytes to + * \return error/message code (watch out especially for MPG123_NEED_MORE) + */ +MPG123_EXPORT int mpg123_decode(mpg123_handle *mh, const unsigned char *inmemory, size_t inmemsize, unsigned char *outmemory, size_t outmemsize, size_t *done); + +/** Decode next MPEG frame to internal buffer + * or read a frame and return after setting a new format. + * \param num current frame offset gets stored there + * \param audio This pointer is set to the internal buffer to read the decoded audio from. + * \param bytes number of output bytes ready in the buffer + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_decode_frame(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); + +/** Decode current MPEG frame to internal buffer. + * Warning: This is experimental API that might change in future releases! + * Please watch mpg123 development closely when using it. + * \param num last frame offset gets stored there + * \param audio this pointer is set to the internal buffer to read the decoded audio from. + * \param bytes number of output bytes ready in the buffer + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_framebyframe_decode(mpg123_handle *mh, off_t *num, unsigned char **audio, size_t *bytes); + +/** Find, read and parse the next mp3 frame + * Warning: This is experimental API that might change in future releases! + * Please watch mpg123 development closely when using it. + * \return MPG123_OK or error/message code + */ +MPG123_EXPORT int mpg123_framebyframe_next(mpg123_handle *mh); + +/** Get access to the raw input data for the last parsed frame. + * This gives you a direct look (and write access) to the frame body data. + * Together with the raw header, you can reconstruct the whole raw MPEG stream without junk and meta data, or play games by actually modifying the frame body data before decoding this frame (mpg123_framebyframe_decode()). + * A more sane use would be to use this for CRC checking (see mpg123_info() and MPG123_CRC), the first two bytes of the body make up the CRC16 checksum, if present. + * You can provide NULL for a parameter pointer when you are not interested in the value. + * + * \param header the 4-byte MPEG header + * \param bodydata pointer to the frame body stored in the handle (without the header) + * \param bodybytes size of frame body in bytes (without the header) + * \return MPG123_OK if there was a yet un-decoded frame to get the + * data from, MPG123_BAD_HANDLE or MPG123_ERR otherwise (without further + * explanation, the error state of the mpg123_handle is not modified by + * this function). + */ +MPG123_EXPORT int mpg123_framedata(mpg123_handle *mh, unsigned long *header, unsigned char **bodydata, size_t *bodybytes); + +/** Get the input position (byte offset in stream) of the last parsed frame. + * This can be used for external seek index building, for example. + * It just returns the internally stored offset, regardless of validity -- you ensure that a valid frame has been parsed before! */ +MPG123_EXPORT off_t mpg123_framepos(mpg123_handle *mh); + +/*@}*/ + + +/** \defgroup mpg123_seek mpg123 position and seeking + * + * Functions querying and manipulating position in the decoded audio bitstream. + * The position is measured in decoded audio samples, or MPEG frame offset for the specific functions. + * If gapless code is in effect, the positions are adjusted to compensate the skipped padding/delay - meaning, you should not care about that at all and just use the position defined for the samples you get out of the decoder;-) + * The general usage is modelled after stdlib's ftell() and fseek(). + * Especially, the whence parameter for the seek functions has the same meaning as the one for fseek() and needs the same constants from stdlib.h: + * - SEEK_SET: set position to (or near to) specified offset + * - SEEK_CUR: change position by offset from now + * - SEEK_END: set position to offset from end + * + * Note that sample-accurate seek only works when gapless support has been enabled at compile time; seek is frame-accurate otherwise. + * Also, really sample-accurate seeking (meaning that you get the identical sample value after seeking compared to plain decoding up to the position) is only guaranteed when you do not mess with the position code by using MPG123_UPSPEED, MPG123_DOWNSPEED or MPG123_START_FRAME. The first two mainly should cause trouble with NtoM resampling, but in any case with these options in effect, you have to keep in mind that the sample offset is not the same as counting the samples you get from decoding since mpg123 counts the skipped samples, too (or the samples played twice only once)! + * Short: When you care about the sample position, don't mess with those parameters;-) + * Also, seeking is not guaranteed to work for all streams (underlying stream may not support it). + * And yet another caveat: If the stream is concatenated out of differing pieces (Frankenstein stream), seeking may suffer, too. + * + * @{ + */ + +/** Returns the current position in samples. + * On the next successful read, you'd get that sample. + * \return sample offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT off_t mpg123_tell(mpg123_handle *mh); + +/** Returns the frame number that the next read will give you data from. + * \return frame offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT off_t mpg123_tellframe(mpg123_handle *mh); + +/** Returns the current byte offset in the input stream. + * \return byte offset or MPG123_ERR (null handle) + */ +MPG123_EXPORT off_t mpg123_tell_stream(mpg123_handle *mh); + +/** Seek to a desired sample offset. + * Set whence to SEEK_SET, SEEK_CUR or SEEK_END. + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_seek(mpg123_handle *mh, off_t sampleoff, int whence); + +/** Seek to a desired sample offset in data feeding mode. + * This just prepares things to be right only if you ensure that the next chunk of input data will be from input_offset byte position. + * \param input_offset The position it expects to be at the + * next time data is fed to mpg123_decode(). + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_feedseek(mpg123_handle *mh, off_t sampleoff, int whence, off_t *input_offset); + +/** Seek to a desired MPEG frame index. + * Set whence to SEEK_SET, SEEK_CUR or SEEK_END. + * \return The resulting offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_seek_frame(mpg123_handle *mh, off_t frameoff, int whence); + +/** Return a MPEG frame offset corresponding to an offset in seconds. + * This assumes that the samples per frame do not change in the file/stream, which is a good assumption for any sane file/stream only. + * \return frame offset >= 0 or error/message code */ +MPG123_EXPORT off_t mpg123_timeframe(mpg123_handle *mh, double sec); + +/** Give access to the frame index table that is managed for seeking. + * You are asked not to modify the values... Use mpg123_set_index to set the + * seek index + * \param offsets pointer to the index array + * \param step one index byte offset advances this many MPEG frames + * \param fill number of recorded index offsets; size of the array + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_index(mpg123_handle *mh, off_t **offsets, off_t *step, size_t *fill); + +/** Set the frame index table + * Setting offsets to NULL and fill > 0 will allocate fill entries. Setting offsets + * to NULL and fill to 0 will clear the index and free the allocated memory used by the index. + * \param offsets pointer to the index array + * \param step one index byte offset advances this many MPEG frames + * \param fill number of recorded index offsets; size of the array + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_set_index(mpg123_handle *mh, off_t *offsets, off_t step, size_t fill); + +/** Get information about current and remaining frames/seconds. + * WARNING: This function is there because of special usage by standalone mpg123 and may be removed in the final version of libmpg123! + * broken for various cases (p.ex. 24 bit output). Do never use. + * You provide an offset (in frames) from now and a number of output bytes + * served by libmpg123 but not yet played. You get the projected current frame + * and seconds, as well as the remaining frames/seconds. This does _not_ care + * about skipped samples due to gapless playback. */ +MPG123_EXPORT int mpg123_position( mpg123_handle *mh, off_t frame_offset, off_t buffered_bytes, off_t *current_frame, off_t *frames_left, double *current_seconds, double *seconds_left); + +/*@}*/ + + +/** \defgroup mpg123_voleq mpg123 volume and equalizer + * + * @{ + */ + +enum mpg123_channels +{ + MPG123_LEFT=0x1 /**< The Left Channel. */ + ,MPG123_RIGHT=0x2 /**< The Right Channel. */ + ,MPG123_LR=0x3 /**< Both left and right channel; same as MPG123_LEFT|MPG123_RIGHT */ +}; + +/** Set the 32 Band Audio Equalizer settings. + * \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for both. + * \param band The equaliser band to change (from 0 to 31) + * \param val The (linear) adjustment factor. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_eq(mpg123_handle *mh, enum mpg123_channels channel, int band, double val); + +/** Get the 32 Band Audio Equalizer settings. + * \param channel Can be MPG123_LEFT, MPG123_RIGHT or MPG123_LEFT|MPG123_RIGHT for (arithmetic mean of) both. + * \param band The equaliser band to change (from 0 to 31) + * \return The (linear) adjustment factor (zero for pad parameters) */ +MPG123_EXPORT double mpg123_geteq(mpg123_handle *mh, enum mpg123_channels channel, int band); + +/** Reset the 32 Band Audio Equalizer settings to flat + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_reset_eq(mpg123_handle *mh); + +/** Set the absolute output volume including the RVA setting, + * vol<0 just applies (a possibly changed) RVA setting. */ +MPG123_EXPORT int mpg123_volume(mpg123_handle *mh, double vol); + +/** Adjust output volume including the RVA setting by chosen amount */ +MPG123_EXPORT int mpg123_volume_change(mpg123_handle *mh, double change); + +/** Return current volume setting, the actual value due to RVA, and the RVA + * adjustment itself. It's all as double float value to abstract the sample + * format. The volume values are linear factors / amplitudes (not percent) + * and the RVA value is in decibels. */ +MPG123_EXPORT int mpg123_getvolume(mpg123_handle *mh, double *base, double *really, double *rva_db); + +/* TODO: Set some preamp in addition / to replace internal RVA handling? */ + +/*@}*/ + + +/** \defgroup mpg123_status mpg123 status and information + * + * @{ + */ + +/** Enumeration of the mode types of Variable Bitrate */ +enum mpg123_vbr { + MPG123_CBR=0, /**< Constant Bitrate Mode (default) */ + MPG123_VBR, /**< Variable Bitrate Mode */ + MPG123_ABR /**< Average Bitrate Mode */ +}; + +/** Enumeration of the MPEG Versions */ +enum mpg123_version { + MPG123_1_0=0, /**< MPEG Version 1.0 */ + MPG123_2_0, /**< MPEG Version 2.0 */ + MPG123_2_5 /**< MPEG Version 2.5 */ +}; + + +/** Enumeration of the MPEG Audio mode. + * Only the mono mode has 1 channel, the others have 2 channels. */ +enum mpg123_mode { + MPG123_M_STEREO=0, /**< Standard Stereo. */ + MPG123_M_JOINT, /**< Joint Stereo. */ + MPG123_M_DUAL, /**< Dual Channel. */ + MPG123_M_MONO /**< Single Channel. */ +}; + + +/** Enumeration of the MPEG Audio flag bits */ +enum mpg123_flags { + MPG123_CRC=0x1, /**< The bitstream is error protected using 16-bit CRC. */ + MPG123_COPYRIGHT=0x2, /**< The bitstream is copyrighted. */ + MPG123_PRIVATE=0x4, /**< The private bit has been set. */ + MPG123_ORIGINAL=0x8 /**< The bitstream is an original, not a copy. */ +}; + +/** Data structure for storing information about a frame of MPEG Audio */ +struct mpg123_frameinfo +{ + enum mpg123_version version; /**< The MPEG version (1.0/2.0/2.5). */ + int layer; /**< The MPEG Audio Layer (MP1/MP2/MP3). */ + long rate; /**< The sampling rate in Hz. */ + enum mpg123_mode mode; /**< The audio mode (Mono, Stereo, Joint-stero, Dual Channel). */ + int mode_ext; /**< The mode extension bit flag. */ + int framesize; /**< The size of the frame (in bytes, including header). */ + enum mpg123_flags flags; /**< MPEG Audio flag bits. Just now I realize that it should be declared as int, not enum. It's a bitwise combination of the enum values. */ + int emphasis; /**< The emphasis type. */ + int bitrate; /**< Bitrate of the frame (kbps). */ + int abr_rate; /**< The target average bitrate. */ + enum mpg123_vbr vbr; /**< The VBR mode. */ +}; + +/** Get frame information about the MPEG audio bitstream and store it in a mpg123_frameinfo structure. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_info(mpg123_handle *mh, struct mpg123_frameinfo *mi); + +/** Get the safe output buffer size for all cases (when you want to replace the internal buffer) */ +MPG123_EXPORT size_t mpg123_safe_buffer(void); + +/** Make a full parsing scan of each frame in the file. ID3 tags are found. An accurate length + * value is stored. Seek index will be filled. A seek back to current position + * is performed. At all, this function refuses work when stream is + * not seekable. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_scan(mpg123_handle *mh); + +/** Return, if possible, the full (expected) length of current track in frames. + * \return length >= 0 or MPG123_ERR if there is no length guess possible. */ +MPG123_EXPORT off_t mpg123_framelength(mpg123_handle *mh); + +/** Return, if possible, the full (expected) length of current track in samples. + * \return length >= 0 or MPG123_ERR if there is no length guess possible. */ +MPG123_EXPORT off_t mpg123_length(mpg123_handle *mh); + +/** Override the value for file size in bytes. + * Useful for getting sensible track length values in feed mode or for HTTP streams. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_set_filesize(mpg123_handle *mh, off_t size); + +/** Returns the time (seconds) per frame; <0 is error. */ +MPG123_EXPORT double mpg123_tpf(mpg123_handle *mh); + +/** Returns the samples per frame for the most recently parsed frame; <0 is error. */ +MPG123_EXPORT int mpg123_spf(mpg123_handle *mh); + +/** Get and reset the clip count. */ +MPG123_EXPORT long mpg123_clip(mpg123_handle *mh); + + +/** The key values for state information from mpg123_getstate(). */ +enum mpg123_state +{ + MPG123_ACCURATE = 1 /**< Query if positons are currently accurate (integer value, 0 if false, 1 if true). */ + ,MPG123_BUFFERFILL /**< Get fill of internal (feed) input buffer as integer byte count returned as long and as double. An error is returned on integer overflow while converting to (signed) long, but the returned floating point value shold still be fine. */ + ,MPG123_FRANKENSTEIN /**< Stream consists of carelessly stitched together files. Seeking may yield unexpected results (also with MPG123_ACCURATE, it may be confused). */ + ,MPG123_FRESH_DECODER /**< Decoder structure has been updated, possibly indicating changed stream (integer value, 0 if false, 1 if true). Flag is cleared after retrieval. */ +}; + +/** Get various current decoder/stream state information. + * \param key the key to identify the information to give. + * \param val the address to return (long) integer values to + * \param fval the address to return floating point values to + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_getstate(mpg123_handle *mh, enum mpg123_state key, long *val, double *fval); + +/*@}*/ + + +/** \defgroup mpg123_metadata mpg123 metadata handling + * + * Functions to retrieve the metadata from MPEG Audio files and streams. + * Also includes string handling functions. + * + * @{ + */ + +/** Data structure for storing strings in a safer way than a standard C-String. + * Can also hold a number of null-terminated strings. */ +typedef struct +{ + char* p; /**< pointer to the string data */ + size_t size; /**< raw number of bytes allocated */ + size_t fill; /**< number of used bytes (including closing zero byte) */ +} mpg123_string; + +/** Create and allocate memory for a new mpg123_string */ +MPG123_EXPORT void mpg123_init_string(mpg123_string* sb); + +/** Free-up mempory for an existing mpg123_string */ +MPG123_EXPORT void mpg123_free_string(mpg123_string* sb); + +/** Change the size of a mpg123_string + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_resize_string(mpg123_string* sb, size_t news); + +/** Increase size of a mpg123_string if necessary (it may stay larger). + * Note that the functions for adding and setting in current libmpg123 use this instead of mpg123_resize_string(). + * That way, you can preallocate memory and safely work afterwards with pieces. + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_grow_string(mpg123_string* sb, size_t news); + +/** Copy the contents of one mpg123_string string to another. + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_copy_string(mpg123_string* from, mpg123_string* to); + +/** Append a C-String to an mpg123_string + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_add_string(mpg123_string* sb, const char* stuff); + +/** Append a C-substring to an mpg123 string + * \return 0 on error, 1 on success + * \param from offset to copy from + * \param count number of characters to copy (a null-byte is always appended) */ +MPG123_EXPORT int mpg123_add_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count); + +/** Set the conents of a mpg123_string to a C-string + * \return 0 on error, 1 on success */ +MPG123_EXPORT int mpg123_set_string(mpg123_string* sb, const char* stuff); + +/** Set the contents of a mpg123_string to a C-substring + * \return 0 on error, 1 on success + * \param from offset to copy from + * \param count number of characters to copy (a null-byte is always appended) */ +MPG123_EXPORT int mpg123_set_substring(mpg123_string *sb, const char *stuff, size_t from, size_t count); + +/** Count characters in a mpg123 string (non-null bytes or UTF-8 characters). + * \return character count + * \param sb the string + * \param utf8 a flag to tell if the string is in utf8 encoding + * Even with the fill property, the character count is not obvious as there could be multiple trailing null bytes. +*/ +MPG123_EXPORT size_t mpg123_strlen(mpg123_string *sb, int utf8); + +/** Remove trailing \r and \n, if present. + * \return 0 on error, 1 on success + * \param sb the string + */ +MPG123_EXPORT int mpg123_chomp_string(mpg123_string *sb); + +/** The mpg123 text encodings. This contains encodings we encounter in ID3 tags or ICY meta info. */ +enum mpg123_text_encoding +{ + mpg123_text_unknown = 0 /**< Unkown encoding... mpg123_id3_encoding can return that on invalid codes. */ + ,mpg123_text_utf8 = 1 /**< UTF-8 */ + ,mpg123_text_latin1 = 2 /**< ISO-8859-1. Note that sometimes latin1 in ID3 is abused for totally different encodings. */ + ,mpg123_text_icy = 3 /**< ICY metadata encoding, usually CP-1252 but we take it as UTF-8 if it qualifies as such. */ + ,mpg123_text_cp1252 = 4 /**< Really CP-1252 without any guessing. */ + ,mpg123_text_utf16 = 5 /**< Some UTF-16 encoding. The last of a set of leading BOMs (byte order mark) rules. + * When there is no BOM, big endian ordering is used. Note that UCS-2 qualifies as UTF-8 when + * you don't mess with the reserved code points. If you want to decode little endian data + * without BOM you need to prepend 0xff 0xfe yourself. */ + ,mpg123_text_utf16bom = 6 /**< Just an alias for UTF-16, ID3v2 has this as distinct code. */ + ,mpg123_text_utf16be = 7 /**< Another alias for UTF16 from ID3v2. Note, that, because of the mess that is reality, + * BOMs are used if encountered. There really is not much distinction between the UTF16 types for mpg123 + * One exception: Since this is seen in ID3v2 tags, leading null bytes are skipped for all other UTF16 + * types (we expect a BOM before real data there), not so for utf16be!*/ + ,mpg123_text_max = 7 /**< Placeholder for the maximum encoding value. */ +}; + +/** The encoding byte values from ID3v2. */ +enum mpg123_id3_enc +{ + mpg123_id3_latin1 = 0 /**< Note: This sometimes can mean anything in practice... */ + ,mpg123_id3_utf16bom = 1 /**< UTF16, UCS-2 ... it's all the same for practical purposes. */ + ,mpg123_id3_utf16be = 2 /**< Big-endian UTF-16, BOM see note for mpg123_text_utf16be. */ + ,mpg123_id3_utf8 = 3 /**< Our lovely overly ASCII-compatible 8 byte encoding for the world. */ + ,mpg123_id3_enc_max = 3 /**< Placeholder to check valid range of encoding byte. */ +}; + +/** Convert ID3 encoding byte to mpg123 encoding index. */ +MPG123_EXPORT enum mpg123_text_encoding mpg123_enc_from_id3(unsigned char id3_enc_byte); + +/** Store text data in string, after converting to UTF-8 from indicated encoding + * \return 0 on error, 1 on success (on error, mpg123_free_string is called on sb) + * \param sb target string + * \param enc mpg123 text encoding value + * \param source source buffer with plain unsigned bytes (you might need to cast from char *) + * \param source_size number of bytes in the source buffer + * + * A prominent error can be that you provided an unknown encoding value, or this build of libmpg123 lacks support for certain encodings (ID3 or ICY stuff missing). + * Also, you might want to take a bit of care with preparing the data; for example, strip leading zeroes (I have seen that). + */ +MPG123_EXPORT int mpg123_store_utf8(mpg123_string *sb, enum mpg123_text_encoding enc, const unsigned char *source, size_t source_size); + +/** Sub data structure for ID3v2, for storing various text fields (including comments). + * This is for ID3v2 COMM, TXXX and all the other text fields. + * Only COMM and TXXX have a description, only COMM and USLT have a language. + * You should consult the ID3v2 specification for the use of the various text fields ("frames" in ID3v2 documentation, I use "fields" here to separate from MPEG frames). */ +typedef struct +{ + char lang[3]; /**< Three-letter language code (not terminated). */ + char id[4]; /**< The ID3v2 text field id, like TALB, TPE2, ... (4 characters, no string termination). */ + mpg123_string description; /**< Empty for the generic comment... */ + mpg123_string text; /**< ... */ +} mpg123_text; + +/** The picture type values from ID3v2. */ +enum mpg123_id3_pic_type +{ + mpg123_id3_pic_other = 0 + ,mpg123_id3_pic_icon = 1 + ,mpg123_id3_pic_other_icon = 2 + ,mpg123_id3_pic_front_cover = 3 + ,mpg123_id3_pic_back_cover = 4 + ,mpg123_id3_pic_leaflet = 5 + ,mpg123_id3_pic_media = 6 + ,mpg123_id3_pic_lead = 7 + ,mpg123_id3_pic_artist = 8 + ,mpg123_id3_pic_conductor = 9 + ,mpg123_id3_pic_orchestra = 10 + ,mpg123_id3_pic_composer = 11 + ,mpg123_id3_pic_lyricist = 12 + ,mpg123_id3_pic_location = 13 + ,mpg123_id3_pic_recording = 14 + ,mpg123_id3_pic_performance = 15 + ,mpg123_id3_pic_video = 16 + ,mpg123_id3_pic_fish = 17 + ,mpg123_id3_pic_illustration = 18 + ,mpg123_id3_pic_artist_logo = 19 + ,mpg123_id3_pic_publisher_logo = 20 +}; + +/** Sub data structure for ID3v2, for storing picture data including comment. + * This is for the ID3v2 APIC field. You should consult the ID3v2 specification + * for the use of the APIC field ("frames" in ID3v2 documentation, I use "fields" + * here to separate from MPEG frames). */ +typedef struct +{ + char type; + mpg123_string description; + mpg123_string mime_type; + size_t size; + unsigned char* data; +} mpg123_picture; + +/** Data structure for storing IDV3v2 tags. + * This structure is not a direct binary mapping with the file contents. + * The ID3v2 text frames are allowed to contain multiple strings. + * So check for null bytes until you reach the mpg123_string fill. + * All text is encoded in UTF-8. */ +typedef struct +{ + unsigned char version; /**< 3 or 4 for ID3v2.3 or ID3v2.4. */ + mpg123_string *title; /**< Title string (pointer into text_list). */ + mpg123_string *artist; /**< Artist string (pointer into text_list). */ + mpg123_string *album; /**< Album string (pointer into text_list). */ + mpg123_string *year; /**< The year as a string (pointer into text_list). */ + mpg123_string *genre; /**< Genre String (pointer into text_list). The genre string(s) may very well need postprocessing, esp. for ID3v2.3. */ + mpg123_string *comment; /**< Pointer to last encountered comment text with empty description. */ + /* Encountered ID3v2 fields are appended to these lists. + There can be multiple occurences, the pointers above always point to the last encountered data. */ + mpg123_text *comment_list; /**< Array of comments. */ + size_t comments; /**< Number of comments. */ + mpg123_text *text; /**< Array of ID3v2 text fields (including USLT) */ + size_t texts; /**< Numer of text fields. */ + mpg123_text *extra; /**< The array of extra (TXXX) fields. */ + size_t extras; /**< Number of extra text (TXXX) fields. */ + mpg123_picture *picture; /**< Array of ID3v2 pictures fields (APIC). */ + size_t pictures; /**< Number of picture (APIC) fields. */ +} mpg123_id3v2; + +/** Data structure for ID3v1 tags (the last 128 bytes of a file). + * Don't take anything for granted (like string termination)! + * Also note the change ID3v1.1 did: comment[28] = 0; comment[29] = track_number + * It is your task to support ID3v1 only or ID3v1.1 ...*/ +typedef struct +{ + char tag[3]; /**< Always the string "TAG", the classic intro. */ + char title[30]; /**< Title string. */ + char artist[30]; /**< Artist string. */ + char album[30]; /**< Album string. */ + char year[4]; /**< Year string. */ + char comment[30]; /**< Comment string. */ + unsigned char genre; /**< Genre index. */ +} mpg123_id3v1; + +#define MPG123_ID3 0x3 /**< 0011 There is some ID3 info. Also matches 0010 or NEW_ID3. */ +#define MPG123_NEW_ID3 0x1 /**< 0001 There is ID3 info that changed since last call to mpg123_id3. */ +#define MPG123_ICY 0xc /**< 1100 There is some ICY info. Also matches 0100 or NEW_ICY.*/ +#define MPG123_NEW_ICY 0x4 /**< 0100 There is ICY info that changed since last call to mpg123_icy. */ + +/** Query if there is (new) meta info, be it ID3 or ICY (or something new in future). + The check function returns a combination of flags. */ +MPG123_EXPORT int mpg123_meta_check(mpg123_handle *mh); /* On error (no valid handle) just 0 is returned. */ + +/** Clean up meta data storage (ID3v2 and ICY), freeing memory. */ +MPG123_EXPORT void mpg123_meta_free(mpg123_handle *mh); + +/** Point v1 and v2 to existing data structures wich may change on any next read/decode function call. + * v1 and/or v2 can be set to NULL when there is no corresponding data. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_id3(mpg123_handle *mh, mpg123_id3v1 **v1, mpg123_id3v2 **v2); + +/** Point icy_meta to existing data structure wich may change on any next read/decode function call. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_icy(mpg123_handle *mh, char **icy_meta); /* same for ICY meta string */ + +/** Decode from windows-1252 (the encoding ICY metainfo used) to UTF-8. + * Note that this is very similar to mpg123_store_utf8(&sb, mpg123_text_icy, icy_text, strlen(icy_text+1)) . + * \param icy_text The input data in ICY encoding + * \return pointer to newly allocated buffer with UTF-8 data (You free() it!) */ +MPG123_EXPORT char* mpg123_icy2utf8(const char* icy_text); + + +/* @} */ + + +/** \defgroup mpg123_advpar mpg123 advanced parameter API + * + * Direct access to a parameter set without full handle around it. + * Possible uses: + * - Influence behaviour of library _during_ initialization of handle (MPG123_VERBOSE). + * - Use one set of parameters for multiple handles. + * + * The functions for handling mpg123_pars (mpg123_par() and mpg123_fmt() + * family) directly return a fully qualified mpg123 error code, the ones + * operating on full handles normally MPG123_OK or MPG123_ERR, storing the + * specific error code itseld inside the handle. + * + * @{ + */ + +/** Opaque structure for the libmpg123 decoder parameters. */ +struct mpg123_pars_struct; + +/** Opaque structure for the libmpg123 decoder parameters. */ +typedef struct mpg123_pars_struct mpg123_pars; + +/** Create a handle with preset parameters. */ +MPG123_EXPORT mpg123_handle *mpg123_parnew(mpg123_pars *mp, const char* decoder, int *error); + +/** Allocate memory for and return a pointer to a new mpg123_pars */ +MPG123_EXPORT mpg123_pars *mpg123_new_pars(int *error); + +/** Delete and free up memory used by a mpg123_pars data structure */ +MPG123_EXPORT void mpg123_delete_pars(mpg123_pars* mp); + +/** Configure mpg123 parameters to accept no output format at all, + * use before specifying supported formats with mpg123_format + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_fmt_none(mpg123_pars *mp); + +/** Configure mpg123 parameters to accept all formats + * (also any custom rate you may set) -- this is default. + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_fmt_all(mpg123_pars *mp); + +/** Set the audio format support of a mpg123_pars in detail: + \param rate The sample rate value (in Hertz). + \param channels A combination of MPG123_STEREO and MPG123_MONO. + \param encodings A combination of accepted encodings for rate and channels, p.ex MPG123_ENC_SIGNED16|MPG123_ENC_ULAW_8 (or 0 for no support). + \return MPG123_OK on success +*/ +MPG123_EXPORT int mpg123_fmt(mpg123_pars *mp, long rate, int channels, int encodings); /* 0 is good, -1 is error */ + +/** Check to see if a specific format at a specific rate is supported + * by mpg123_pars. + * \return 0 for no support (that includes invalid parameters), MPG123_STEREO, + * MPG123_MONO or MPG123_STEREO|MPG123_MONO. */ +MPG123_EXPORT int mpg123_fmt_support(mpg123_pars *mp, long rate, int encoding); + +/** Set a specific parameter, for a specific mpg123_pars, using a parameter + * type key chosen from the mpg123_parms enumeration, to the specified value. */ +MPG123_EXPORT int mpg123_par(mpg123_pars *mp, enum mpg123_parms type, long value, double fvalue); + +/** Get a specific parameter, for a specific mpg123_pars. + * See the mpg123_parms enumeration for a list of available parameters. */ +MPG123_EXPORT int mpg123_getpar(mpg123_pars *mp, enum mpg123_parms type, long *val, double *fval); + +/* @} */ + + +/** \defgroup mpg123_lowio mpg123 low level I/O + * You may want to do tricky stuff with I/O that does not work with mpg123's default file access or you want to make it decode into your own pocket... + * + * @{ */ + +/** Replace default internal buffer with user-supplied buffer. + * Instead of working on it's own private buffer, mpg123 will directly use the one you provide for storing decoded audio. + * Note that the required buffer size could be bigger than expected from output + * encoding if libmpg123 has to convert from primary decoder output (p.ex. 32 bit + * storage for 24 bit output. + * \param data pointer to user buffer + * \param size of buffer in bytes + * \return MPG123_OK on success + */ +MPG123_EXPORT int mpg123_replace_buffer(mpg123_handle *mh, unsigned char *data, size_t size); + +/** The max size of one frame's decoded output with current settings. + * Use that to determine an appropriate minimum buffer size for decoding one frame. */ +MPG123_EXPORT size_t mpg123_outblock(mpg123_handle *mh); + +/** Replace low-level stream access functions; read and lseek as known in POSIX. + * You can use this to make any fancy file opening/closing yourself, + * using mpg123_open_fd() to set the file descriptor for your read/lseek (doesn't need to be a "real" file descriptor...). + * Setting a function to NULL means that the default internal read is + * used (active from next mpg123_open call on). + * Note: As it would be troublesome to mess with this while having a file open, + * this implies mpg123_close(). */ +MPG123_EXPORT int mpg123_replace_reader(mpg123_handle *mh, ssize_t (*r_read) (int, void *, size_t), off_t (*r_lseek)(int, off_t, int)); + +/** Replace I/O functions with your own ones operating on some kind of handle instead of integer descriptors. + * The handle is a void pointer, so you can pass any data you want... + * mpg123_open_handle() is the call you make to use the I/O defined here. + * There is no fallback to internal read/seek here. + * Note: As it would be troublesome to mess with this while having a file open, + * this mpg123_close() is implied here. + * \param r_read The callback for reading (behaviour like posix read). + * \param r_lseek The callback for seeking (like posix lseek). + * \param cleanup A callback to clean up an I/O handle on mpg123_close, can be NULL for none (you take care of cleaning your handles). */ +MPG123_EXPORT int mpg123_replace_reader_handle(mpg123_handle *mh, ssize_t (*r_read) (void *, void *, size_t), off_t (*r_lseek)(void *, off_t, int), void (*cleanup)(void*)); + +/* @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Windows/codecs/include/mpg123_config.txt b/Windows/codecs/include/mpg123_config.txt new file mode 100644 index 0000000..a5ecf8b --- /dev/null +++ b/Windows/codecs/include/mpg123_config.txt @@ -0,0 +1,7 @@ +mpg123-1.22.4, configured using: +--disable-modules --disable-debug --disable-fifo --disable-ipv6 --disable-network --disable-messages --disable-lfs-alias --with-audio=dummy +edited src/libmpg123/mpg123lib_intern.h and changed macros +NOQUIET, VERBOSE* and PVERB() to be 0, in order to disable +some debug messages from the library. + +This build of libmpg123 has no _FILE_OFFSET_BITS=64 support! diff --git a/Windows/codecs/include/ogg/config_types.h b/Windows/codecs/include/ogg/config_types.h new file mode 100644 index 0000000..8f8318f --- /dev/null +++ b/Windows/codecs/include/ogg/config_types.h @@ -0,0 +1,25 @@ +#ifndef __CONFIG_TYPES_H__ +#define __CONFIG_TYPES_H__ + +/* these are filled in by configure */ +#define INCLUDE_INTTYPES_H 0 +#define INCLUDE_STDINT_H 0 +#define INCLUDE_SYS_TYPES_H 1 + +#if INCLUDE_INTTYPES_H +# include +#endif +#if INCLUDE_STDINT_H +# include +#endif +#if INCLUDE_SYS_TYPES_H +# include +#endif + +typedef short ogg_int16_t; +typedef unsigned short ogg_uint16_t; +typedef int ogg_int32_t; +typedef unsigned int ogg_uint32_t; +typedef long long ogg_int64_t; + +#endif diff --git a/Windows/codecs/include/ogg/ogg.h b/Windows/codecs/include/ogg/ogg.h new file mode 100644 index 0000000..cea4ebe --- /dev/null +++ b/Windows/codecs/include/ogg/ogg.h @@ -0,0 +1,210 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: toplevel libogg include + last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ + + ********************************************************************/ +#ifndef _OGG_H +#define _OGG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef struct { + void *iov_base; + size_t iov_len; +} ogg_iovec_t; + +typedef struct { + long endbyte; + int endbit; + + unsigned char *buffer; + unsigned char *ptr; + long storage; +} oggpack_buffer; + +/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ + +typedef struct { + unsigned char *header; + long header_len; + unsigned char *body; + long body_len; +} ogg_page; + +/* ogg_stream_state contains the current encode/decode state of a logical + Ogg bitstream **********************************************************/ + +typedef struct { + unsigned char *body_data; /* bytes from packet bodies */ + long body_storage; /* storage elements allocated */ + long body_fill; /* elements stored; fill mark */ + long body_returned; /* elements of fill returned */ + + + int *lacing_vals; /* The values that will go to the segment table */ + ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact + this way, but it is simple coupled to the + lacing fifo */ + long lacing_storage; + long lacing_fill; + long lacing_packet; + long lacing_returned; + + unsigned char header[282]; /* working space for header encode */ + int header_fill; + + int e_o_s; /* set when we have buffered the last packet in the + logical bitstream */ + int b_o_s; /* set after we've written the initial page + of a logical bitstream */ + long serialno; + long pageno; + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a separate abstraction + layer) also knows about the gap */ + ogg_int64_t granulepos; + +} ogg_stream_state; + +/* ogg_packet is used to encapsulate the data and metadata belonging + to a single raw Ogg/Vorbis packet *************************************/ + +typedef struct { + unsigned char *packet; + long bytes; + long b_o_s; + long e_o_s; + + ogg_int64_t granulepos; + + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a separate abstraction + layer) also knows about the gap */ +} ogg_packet; + +typedef struct { + unsigned char *data; + int storage; + int fill; + int returned; + + int unsynced; + int headerbytes; + int bodybytes; +} ogg_sync_state; + +/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ + +extern void oggpack_writeinit(oggpack_buffer *b); +extern int oggpack_writecheck(oggpack_buffer *b); +extern void oggpack_writetrunc(oggpack_buffer *b,long bits); +extern void oggpack_writealign(oggpack_buffer *b); +extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpack_reset(oggpack_buffer *b); +extern void oggpack_writeclear(oggpack_buffer *b); +extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpack_look(oggpack_buffer *b,int bits); +extern long oggpack_look1(oggpack_buffer *b); +extern void oggpack_adv(oggpack_buffer *b,int bits); +extern void oggpack_adv1(oggpack_buffer *b); +extern long oggpack_read(oggpack_buffer *b,int bits); +extern long oggpack_read1(oggpack_buffer *b); +extern long oggpack_bytes(oggpack_buffer *b); +extern long oggpack_bits(oggpack_buffer *b); +extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); + +extern void oggpackB_writeinit(oggpack_buffer *b); +extern int oggpackB_writecheck(oggpack_buffer *b); +extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); +extern void oggpackB_writealign(oggpack_buffer *b); +extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpackB_reset(oggpack_buffer *b); +extern void oggpackB_writeclear(oggpack_buffer *b); +extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpackB_look(oggpack_buffer *b,int bits); +extern long oggpackB_look1(oggpack_buffer *b); +extern void oggpackB_adv(oggpack_buffer *b,int bits); +extern void oggpackB_adv1(oggpack_buffer *b); +extern long oggpackB_read(oggpack_buffer *b,int bits); +extern long oggpackB_read1(oggpack_buffer *b); +extern long oggpackB_bytes(oggpack_buffer *b); +extern long oggpackB_bits(oggpack_buffer *b); +extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); + +/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ + +extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); +extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, + int count, long e_o_s, ogg_int64_t granulepos); +extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill); +extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill); + +/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ + +extern int ogg_sync_init(ogg_sync_state *oy); +extern int ogg_sync_clear(ogg_sync_state *oy); +extern int ogg_sync_reset(ogg_sync_state *oy); +extern int ogg_sync_destroy(ogg_sync_state *oy); +extern int ogg_sync_check(ogg_sync_state *oy); + +extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); +extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); +extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); +extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); +extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); +extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); + +/* Ogg BITSTREAM PRIMITIVES: general ***************************/ + +extern int ogg_stream_init(ogg_stream_state *os,int serialno); +extern int ogg_stream_clear(ogg_stream_state *os); +extern int ogg_stream_reset(ogg_stream_state *os); +extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); +extern int ogg_stream_destroy(ogg_stream_state *os); +extern int ogg_stream_check(ogg_stream_state *os); +extern int ogg_stream_eos(ogg_stream_state *os); + +extern void ogg_page_checksum_set(ogg_page *og); + +extern int ogg_page_version(const ogg_page *og); +extern int ogg_page_continued(const ogg_page *og); +extern int ogg_page_bos(const ogg_page *og); +extern int ogg_page_eos(const ogg_page *og); +extern ogg_int64_t ogg_page_granulepos(const ogg_page *og); +extern int ogg_page_serialno(const ogg_page *og); +extern long ogg_page_pageno(const ogg_page *og); +extern int ogg_page_packets(const ogg_page *og); + +extern void ogg_packet_clear(ogg_packet *op); + + +#ifdef __cplusplus +} +#endif + +#endif /* _OGG_H */ diff --git a/Windows/codecs/include/ogg/os_types.h b/Windows/codecs/include/ogg/os_types.h new file mode 100644 index 0000000..8bf8210 --- /dev/null +++ b/Windows/codecs/include/ogg/os_types.h @@ -0,0 +1,147 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: #ifdef jail to whip a few platforms into the UNIX ideal. + last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $ + + ********************************************************************/ +#ifndef _OS_TYPES_H +#define _OS_TYPES_H + +/* make it easy on the folks that want to compile the libs with a + different malloc than stdlib */ +#define _ogg_malloc malloc +#define _ogg_calloc calloc +#define _ogg_realloc realloc +#define _ogg_free free + +#if defined(_WIN32) + +# if defined(__CYGWIN__) +# include + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + typedef uint64_t ogg_uint64_t; +# elif defined(__MINGW32__) +# include + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + typedef unsigned long long ogg_uint64_t; +# elif defined(__MWERKS__) + typedef long long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; +# else + /* MSVC/Borland */ + typedef __int64 ogg_int64_t; + typedef __int32 ogg_int32_t; + typedef unsigned __int32 ogg_uint32_t; + typedef __int16 ogg_int16_t; + typedef unsigned __int16 ogg_uint16_t; +# endif + +#elif defined(__MACOS__) + +# include + typedef SInt16 ogg_int16_t; + typedef UInt16 ogg_uint16_t; + typedef SInt32 ogg_int32_t; + typedef UInt32 ogg_uint32_t; + typedef SInt64 ogg_int64_t; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined(__HAIKU__) + + /* Haiku */ +# include + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(__BEOS__) + + /* Be */ +# include + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short ogg_int16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(R5900) + + /* PS2 EE */ + typedef long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned ogg_uint32_t; + typedef short ogg_int16_t; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#elif defined(__TMS320C6X__) + + /* TI C64x compiler */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#else + +# include + +#endif + +#endif /* _OS_TYPES_H */ diff --git a/Windows/codecs/include/opus/opus.h b/Windows/codecs/include/opus/opus.h new file mode 100644 index 0000000..462e639 --- /dev/null +++ b/Windows/codecs/include/opus/opus.h @@ -0,0 +1,906 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus.h + * @brief Opus reference implementation API + */ + +#ifndef OPUS_H +#define OPUS_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @mainpage Opus + * + * The Opus codec is designed for interactive speech and audio transmission over the Internet. + * It is designed by the IETF Codec Working Group and incorporates technology from + * Skype's SILK codec and Xiph.Org's CELT codec. + * + * The Opus codec is designed to handle a wide range of interactive audio applications, + * including Voice over IP, videoconferencing, in-game chat, and even remote live music + * performances. It can scale from low bit-rate narrowband speech to very high quality + * stereo music. Its main features are: + + * @li Sampling rates from 8 to 48 kHz + * @li Bit-rates from 6 kb/s to 510 kb/s + * @li Support for both constant bit-rate (CBR) and variable bit-rate (VBR) + * @li Audio bandwidth from narrowband to full-band + * @li Support for speech and music + * @li Support for mono and stereo + * @li Support for multichannel (up to 255 channels) + * @li Frame sizes from 2.5 ms to 60 ms + * @li Good loss robustness and packet loss concealment (PLC) + * @li Floating point and fixed-point implementation + * + * Documentation sections: + * @li @ref opus_encoder + * @li @ref opus_decoder + * @li @ref opus_repacketizer + * @li @ref opus_multistream + * @li @ref opus_libinfo + * @li @ref opus_custom + */ + +/** @defgroup opus_encoder Opus Encoder + * @{ + * + * @brief This page describes the process and functions used to encode Opus. + * + * Since Opus is a stateful codec, the encoding process starts with creating an encoder + * state. This can be done with: + * + * @code + * int error; + * OpusEncoder *enc; + * enc = opus_encoder_create(Fs, channels, application, &error); + * @endcode + * + * From this point, @c enc can be used for encoding an audio stream. An encoder state + * @b must @b not be used for more than one stream at the same time. Similarly, the encoder + * state @b must @b not be re-initialized for each frame. + * + * While opus_encoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * + * @code + * int size; + * int error; + * OpusEncoder *enc; + * size = opus_encoder_get_size(channels); + * enc = malloc(size); + * error = opus_encoder_init(enc, Fs, channels, application); + * @endcode + * + * where opus_encoder_get_size() returns the required size for the encoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The encoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * It is possible to change some of the encoder's settings using the opus_encoder_ctl() + * interface. All these settings already default to the recommended value, so they should + * only be changed when necessary. The most common settings one may want to change are: + * + * @code + * opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate)); + * opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity)); + * opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type)); + * @endcode + * + * where + * + * @arg bitrate is in bits per second (b/s) + * @arg complexity is a value from 1 to 10, where 1 is the lowest complexity and 10 is the highest + * @arg signal_type is either OPUS_AUTO (default), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC + * + * See @ref opus_encoderctls and @ref opus_genericctls for a complete list of parameters that can be set or queried. Most parameters can be set or changed at any time during a stream. + * + * To encode a frame, opus_encode() or opus_encode_float() must be called with exactly one frame (2.5, 5, 10, 20, 40 or 60 ms) of audio data: + * @code + * len = opus_encode(enc, audio_frame, frame_size, packet, max_packet); + * @endcode + * + * where + *

    + *
  • audio_frame is the audio data in opus_int16 (or float for opus_encode_float())
  • + *
  • frame_size is the duration of the frame in samples (per channel)
  • + *
  • packet is the byte array to which the compressed data is written
  • + *
  • max_packet is the maximum number of bytes that can be written in the packet (4000 bytes is recommended). + * Do not use max_packet to control VBR target bitrate, instead use the #OPUS_SET_BITRATE CTL.
  • + *
+ * + * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet. + * The return value can be negative, which indicates that an error has occurred. If the return value + * is 1 byte, then the packet does not need to be transmitted (DTX). + * + * Once the encoder state if no longer needed, it can be destroyed with + * + * @code + * opus_encoder_destroy(enc); + * @endcode + * + * If the encoder was created with opus_encoder_init() rather than opus_encoder_create(), + * then no action is required aside from potentially freeing the memory that was manually + * allocated for it (calling free(enc) for the example above) + * + */ + +/** Opus encoder state. + * This contains the complete state of an Opus encoder. + * It is position independent and can be freely copied. + * @see opus_encoder_create,opus_encoder_init + */ +typedef struct OpusEncoder OpusEncoder; + +/** Gets the size of an OpusEncoder structure. + * @param[in] channels int: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_encoder_get_size(int channels); + +/** + */ + +/** Allocates and initializes an encoder state. + * There are three coding modes: + * + * @ref OPUS_APPLICATION_VOIP gives best quality at a given bitrate for voice + * signals. It enhances the input signal by high-pass filtering and + * emphasizing formants and harmonics. Optionally it includes in-band + * forward error correction to protect against packet loss. Use this + * mode for typical VoIP applications. Because of the enhancement, + * even at high bitrates the output may sound different from the input. + * + * @ref OPUS_APPLICATION_AUDIO gives best quality at a given bitrate for most + * non-voice signals like music. Use this mode for music and mixed + * (music/voice) content, broadcast, and applications requiring less + * than 15 ms of coding delay. + * + * @ref OPUS_APPLICATION_RESTRICTED_LOWDELAY configures low-delay mode that + * disables the speech-optimized mode in exchange for slightly reduced delay. + * This mode can only be set on an newly initialized or freshly reset encoder + * because it changes the codec delay. + * + * This is useful when the caller knows that the speech-optimized modes will not be needed (use with caution). + * @param [in] Fs opus_int32: Sampling rate of input signal (Hz) + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) in input signal + * @param [in] application int: Coding mode (@ref OPUS_APPLICATION_VOIP/@ref OPUS_APPLICATION_AUDIO/@ref OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @param [out] error int*: @ref opus_errorcodes + * @note Regardless of the sampling rate and number channels selected, the Opus encoder + * can switch to a lower audio bandwidth or number of channels if the bitrate + * selected is too low. This also means that it is safe to always use 48 kHz stereo input + * and let the encoder optimize the encoding. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusEncoder *opus_encoder_create( + opus_int32 Fs, + int channels, + int application, + int *error +); + +/** Initializes a previously allocated encoder state + * The memory pointed to by st must be at least the size returned by opus_encoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. + * @see opus_encoder_create(),opus_encoder_get_size() + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] Fs opus_int32: Sampling rate of input signal (Hz) + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) in input signal + * @param [in] application int: Coding mode (OPUS_APPLICATION_VOIP/OPUS_APPLICATION_AUDIO/OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_encoder_init( + OpusEncoder *st, + opus_int32 Fs, + int channels, + int application +) OPUS_ARG_NONNULL(1); + +/** Encodes an Opus frame. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] pcm opus_int16*: Input signal (interleaved if 2 channels). length is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size int: Number of samples per channel in the + * input signal. + * This must be an Opus frame size for + * the encoder's sampling rate. + * For example, at 48 kHz the permitted + * values are 120, 240, 480, 960, 1920, + * and 2880. + * Passing in a duration of less than + * 10 ms (480 samples at 48 kHz) will + * prevent the encoder from using the LPC + * or hybrid modes. + * @param [out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode( + OpusEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes an Opus frame from floating point input. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] pcm float*: Input in float format (interleaved if 2 channels), with a normal range of +/-1.0. + * Samples with a range beyond +/-1.0 are supported but will + * be clipped by decoders using the integer API and should + * only be used if it is known that the far end supports + * extended dynamic range. + * length is frame_size*channels*sizeof(float) + * @param [in] frame_size int: Number of samples per channel in the + * input signal. + * This must be an Opus frame size for + * the encoder's sampling rate. + * For example, at 48 kHz the permitted + * values are 120, 240, 480, 960, 1920, + * and 2880. + * Passing in a duration of less than + * 10 ms (480 samples at 48 kHz) will + * prevent the encoder from using the LPC + * or hybrid modes. + * @param [out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode_float( + OpusEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an OpusEncoder allocated by opus_encoder_create(). + * @param[in] st OpusEncoder*: State to be freed. + */ +OPUS_EXPORT void opus_encoder_destroy(OpusEncoder *st); + +/** Perform a CTL function on an Opus encoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st OpusEncoder*: Encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_encoderctls. + * @see opus_genericctls + * @see opus_encoderctls + */ +OPUS_EXPORT int opus_encoder_ctl(OpusEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); +/**@}*/ + +/** @defgroup opus_decoder Opus Decoder + * @{ + * + * @brief This page describes the process and functions used to decode Opus. + * + * The decoding process also starts with creating a decoder + * state. This can be done with: + * @code + * int error; + * OpusDecoder *dec; + * dec = opus_decoder_create(Fs, channels, &error); + * @endcode + * where + * @li Fs is the sampling rate and must be 8000, 12000, 16000, 24000, or 48000 + * @li channels is the number of channels (1 or 2) + * @li error will hold the error code in case of failure (or #OPUS_OK on success) + * @li the return value is a newly created decoder state to be used for decoding + * + * While opus_decoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * @code + * int size; + * int error; + * OpusDecoder *dec; + * size = opus_decoder_get_size(channels); + * dec = malloc(size); + * error = opus_decoder_init(dec, Fs, channels); + * @endcode + * where opus_decoder_get_size() returns the required size for the decoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The decoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * To decode a frame, opus_decode() or opus_decode_float() must be called with a packet of compressed audio data: + * @code + * frame_size = opus_decode(dec, packet, len, decoded, max_size, 0); + * @endcode + * where + * + * @li packet is the byte array containing the compressed data + * @li len is the exact number of bytes contained in the packet + * @li decoded is the decoded audio data in opus_int16 (or float for opus_decode_float()) + * @li max_size is the max duration of the frame in samples (per channel) that can fit into the decoded_frame array + * + * opus_decode() and opus_decode_float() return the number of samples (per channel) decoded from the packet. + * If that value is negative, then an error has occurred. This can occur if the packet is corrupted or if the audio + * buffer is too small to hold the decoded audio. + * + * Opus is a stateful codec with overlapping blocks and as a result Opus + * packets are not coded independently of each other. Packets must be + * passed into the decoder serially and in the correct order for a correct + * decode. Lost packets can be replaced with loss concealment by calling + * the decoder with a null pointer and zero length for the missing packet. + * + * A single codec state may only be accessed from a single thread at + * a time and any required locking must be performed by the caller. Separate + * streams must be decoded with separate decoder states and can be decoded + * in parallel unless the library was compiled with NONTHREADSAFE_PSEUDOSTACK + * defined. + * + */ + +/** Opus decoder state. + * This contains the complete state of an Opus decoder. + * It is position independent and can be freely copied. + * @see opus_decoder_create,opus_decoder_init + */ +typedef struct OpusDecoder OpusDecoder; + +/** Gets the size of an OpusDecoder structure. + * @param [in] channels int: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_size(int channels); + +/** Allocates and initializes a decoder state. + * @param [in] Fs opus_int32: Sample rate to decode at (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) to decode + * @param [out] error int*: #OPUS_OK Success or @ref opus_errorcodes + * + * Internally Opus stores data at 48000 Hz, so that should be the default + * value for Fs. However, the decoder can efficiently decode to buffers + * at 8, 12, 16, and 24 kHz so if for some reason the caller cannot use + * data at the full sample rate, or knows the compressed data doesn't + * use the full frequency range, it can request decoding at a reduced + * rate. Likewise, the decoder is capable of filling in either mono or + * interleaved stereo pcm buffers, at the caller's request. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusDecoder *opus_decoder_create( + opus_int32 Fs, + int channels, + int *error +); + +/** Initializes a previously allocated decoder state. + * The state must be at least the size returned by opus_decoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. @see opus_decoder_create,opus_decoder_get_size + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st OpusDecoder*: Decoder state. + * @param [in] Fs opus_int32: Sampling rate to decode to (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) to decode + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_decoder_init( + OpusDecoder *st, + opus_int32 Fs, + int channels +) OPUS_ARG_NONNULL(1); + +/** Decode an Opus packet. + * @param [in] st OpusDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len opus_int32: Number of bytes in payload* + * @param [out] pcm opus_int16*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size Number of samples per channel of available space in \a pcm. + * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will + * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), + * then frame_size needs to be exactly the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and + * FEC cases, frame_size must be a multiple of 2.5 ms. + * @param [in] decode_fec int: Flag (0 or 1) to request that any in-band forward error correction data be + * decoded. If no such data is available, the frame is decoded as if it were lost. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode an Opus packet with floating point output. + * @param [in] st OpusDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len opus_int32: Number of bytes in payload + * @param [out] pcm float*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(float) + * @param [in] frame_size Number of samples per channel of available space in \a pcm. + * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will + * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), + * then frame_size needs to be exactly the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and + * FEC cases, frame_size must be a multiple of 2.5 ms. + * @param [in] decode_fec int: Flag (0 or 1) to request that any in-band forward error correction data be + * decoded. If no such data is available the frame is decoded as if it were lost. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode_float( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on an Opus decoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st OpusDecoder*: Decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_decoderctls. + * @see opus_genericctls + * @see opus_decoderctls + */ +OPUS_EXPORT int opus_decoder_ctl(OpusDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an OpusDecoder allocated by opus_decoder_create(). + * @param[in] st OpusDecoder*: State to be freed. + */ +OPUS_EXPORT void opus_decoder_destroy(OpusDecoder *st); + +/** Parse an opus packet into one or more frames. + * Opus_decode will perform this operation internally so most applications do + * not need to use this function. + * This function does not copy the frames, the returned pointers are pointers into + * the input packet. + * @param [in] data char*: Opus packet to be parsed + * @param [in] len opus_int32: size of data + * @param [out] out_toc char*: TOC pointer + * @param [out] frames char*[48] encapsulated frames + * @param [out] size opus_int16[48] sizes of the encapsulated frames + * @param [out] payload_offset int*: returns the position of the payload within the packet (in bytes) + * @returns number of frames + */ +OPUS_EXPORT int opus_packet_parse( + const unsigned char *data, + opus_int32 len, + unsigned char *out_toc, + const unsigned char *frames[48], + opus_int16 size[48], + int *payload_offset +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5); + +/** Gets the bandwidth of an Opus packet. + * @param [in] data char*: Opus packet + * @retval OPUS_BANDWIDTH_NARROWBAND Narrowband (4kHz bandpass) + * @retval OPUS_BANDWIDTH_MEDIUMBAND Mediumband (6kHz bandpass) + * @retval OPUS_BANDWIDTH_WIDEBAND Wideband (8kHz bandpass) + * @retval OPUS_BANDWIDTH_SUPERWIDEBAND Superwideband (12kHz bandpass) + * @retval OPUS_BANDWIDTH_FULLBAND Fullband (20kHz bandpass) + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_bandwidth(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples per frame from an Opus packet. + * @param [in] data char*: Opus packet. + * This must contain at least one byte of + * data. + * @param [in] Fs opus_int32: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples per frame. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_samples_per_frame(const unsigned char *data, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of channels from an Opus packet. + * @param [in] data char*: Opus packet + * @returns Number of channels + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_channels(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of frames in an Opus packet. + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @returns Number of frames + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_frames(const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @param [in] Fs opus_int32: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_samples(const unsigned char packet[], opus_int32 len, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] dec OpusDecoder*: Decoder state + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); +/**@}*/ + +/** @defgroup opus_repacketizer Repacketizer + * @{ + * + * The repacketizer can be used to merge multiple Opus packets into a single + * packet or alternatively to split Opus packets that have previously been + * merged. Splitting valid Opus packets is always guaranteed to succeed, + * whereas merging valid packets only succeeds if all frames have the same + * mode, bandwidth, and frame size, and when the total duration of the merged + * packet is no more than 120 ms. + * The repacketizer currently only operates on elementary Opus + * streams. It will not manipualte multistream packets successfully, except in + * the degenerate case where they consist of data from a single stream. + * + * The repacketizing process starts with creating a repacketizer state, either + * by calling opus_repacketizer_create() or by allocating the memory yourself, + * e.g., + * @code + * OpusRepacketizer *rp; + * rp = (OpusRepacketizer*)malloc(opus_repacketizer_get_size()); + * if (rp != NULL) + * opus_repacketizer_init(rp); + * @endcode + * + * Then the application should submit packets with opus_repacketizer_cat(), + * extract new packets with opus_repacketizer_out() or + * opus_repacketizer_out_range(), and then reset the state for the next set of + * input packets via opus_repacketizer_init(). + * + * For example, to split a sequence of packets into individual frames: + * @code + * unsigned char *data; + * int len; + * while (get_next_packet(&data, &len)) + * { + * unsigned char out[1276]; + * opus_int32 out_len; + * int nb_frames; + * int err; + * int i; + * err = opus_repacketizer_cat(rp, data, len); + * if (err != OPUS_OK) + * { + * release_packet(data); + * return err; + * } + * nb_frames = opus_repacketizer_get_nb_frames(rp); + * for (i = 0; i < nb_frames; i++) + * { + * out_len = opus_repacketizer_out_range(rp, i, i+1, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packet(data); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * } + * opus_repacketizer_init(rp); + * release_packet(data); + * } + * @endcode + * + * Alternatively, to combine a sequence of frames into packets that each + * contain up to TARGET_DURATION_MS milliseconds of data: + * @code + * // The maximum number of packets with duration TARGET_DURATION_MS occurs + * // when the frame size is 2.5 ms, for a total of (TARGET_DURATION_MS*2/5) + * // packets. + * unsigned char *data[(TARGET_DURATION_MS*2/5)+1]; + * opus_int32 len[(TARGET_DURATION_MS*2/5)+1]; + * int nb_packets; + * unsigned char out[1277*(TARGET_DURATION_MS*2/2)]; + * opus_int32 out_len; + * int prev_toc; + * nb_packets = 0; + * while (get_next_packet(data+nb_packets, len+nb_packets)) + * { + * int nb_frames; + * int err; + * nb_frames = opus_packet_get_nb_frames(data[nb_packets], len[nb_packets]); + * if (nb_frames < 1) + * { + * release_packets(data, nb_packets+1); + * return nb_frames; + * } + * nb_frames += opus_repacketizer_get_nb_frames(rp); + * // If adding the next packet would exceed our target, or it has an + * // incompatible TOC sequence, output the packets we already have before + * // submitting it. + * // N.B., The nb_packets > 0 check ensures we've submitted at least one + * // packet since the last call to opus_repacketizer_init(). Otherwise a + * // single packet longer than TARGET_DURATION_MS would cause us to try to + * // output an (invalid) empty packet. It also ensures that prev_toc has + * // been set to a valid value. Additionally, len[nb_packets] > 0 is + * // guaranteed by the call to opus_packet_get_nb_frames() above, so the + * // reference to data[nb_packets][0] should be valid. + * if (nb_packets > 0 && ( + * ((prev_toc & 0xFC) != (data[nb_packets][0] & 0xFC)) || + * opus_packet_get_samples_per_frame(data[nb_packets], 48000)*nb_frames > + * TARGET_DURATION_MS*48)) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packets(data, nb_packets+1); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * opus_repacketizer_init(rp); + * release_packets(data, nb_packets); + * data[0] = data[nb_packets]; + * len[0] = len[nb_packets]; + * nb_packets = 0; + * } + * err = opus_repacketizer_cat(rp, data[nb_packets], len[nb_packets]); + * if (err != OPUS_OK) + * { + * release_packets(data, nb_packets+1); + * return err; + * } + * prev_toc = data[nb_packets][0]; + * nb_packets++; + * } + * // Output the final, partial packet. + * if (nb_packets > 0) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * release_packets(data, nb_packets); + * if (out_len < 0) + * return (int)out_len; + * output_next_packet(out, out_len); + * } + * @endcode + * + * An alternate way of merging packets is to simply call opus_repacketizer_cat() + * unconditionally until it fails. At that point, the merged packet can be + * obtained with opus_repacketizer_out() and the input packet for which + * opus_repacketizer_cat() needs to be re-added to a newly reinitialized + * repacketizer state. + */ + +typedef struct OpusRepacketizer OpusRepacketizer; + +/** Gets the size of an OpusRepacketizer structure. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_size(void); + +/** (Re)initializes a previously allocated repacketizer state. + * The state must be at least the size returned by opus_repacketizer_get_size(). + * This can be used for applications which use their own allocator instead of + * malloc(). + * It must also be called to reset the queue of packets waiting to be + * repacketized, which is necessary if the maximum packet duration of 120 ms + * is reached or if you wish to submit packets with a different Opus + * configuration (coding mode, audio bandwidth, frame size, or channel count). + * Failure to do so will prevent a new packet from being added with + * opus_repacketizer_cat(). + * @see opus_repacketizer_create + * @see opus_repacketizer_get_size + * @see opus_repacketizer_cat + * @param rp OpusRepacketizer*: The repacketizer state to + * (re)initialize. + * @returns A pointer to the same repacketizer state that was passed in. + */ +OPUS_EXPORT OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Allocates memory and initializes the new repacketizer with + * opus_repacketizer_init(). + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusRepacketizer *opus_repacketizer_create(void); + +/** Frees an OpusRepacketizer allocated by + * opus_repacketizer_create(). + * @param[in] rp OpusRepacketizer*: State to be freed. + */ +OPUS_EXPORT void opus_repacketizer_destroy(OpusRepacketizer *rp); + +/** Add a packet to the current repacketizer state. + * This packet must match the configuration of any packets already submitted + * for repacketization since the last call to opus_repacketizer_init(). + * This means that it must have the same coding mode, audio bandwidth, frame + * size, and channel count. + * This can be checked in advance by examining the top 6 bits of the first + * byte of the packet, and ensuring they match the top 6 bits of the first + * byte of any previously submitted packet. + * The total duration of audio in the repacketizer state also must not exceed + * 120 ms, the maximum duration of a single packet, after adding this packet. + * + * The contents of the current repacketizer state can be extracted into new + * packets using opus_repacketizer_out() or opus_repacketizer_out_range(). + * + * In order to add a packet with a different configuration or to add more + * audio beyond 120 ms, you must clear the repacketizer state by calling + * opus_repacketizer_init(). + * If a packet is too large to add to the current repacketizer state, no part + * of it is added, even if it contains multiple frames, some of which might + * fit. + * If you wish to be able to add parts of such packets, you should first use + * another repacketizer to split the packet into pieces and add them + * individually. + * @see opus_repacketizer_out_range + * @see opus_repacketizer_out + * @see opus_repacketizer_init + * @param rp OpusRepacketizer*: The repacketizer state to which to + * add the packet. + * @param[in] data const unsigned char*: The packet data. + * The application must ensure + * this pointer remains valid + * until the next call to + * opus_repacketizer_init() or + * opus_repacketizer_destroy(). + * @param len opus_int32: The number of bytes in the packet data. + * @returns An error code indicating whether or not the operation succeeded. + * @retval #OPUS_OK The packet's contents have been added to the repacketizer + * state. + * @retval #OPUS_INVALID_PACKET The packet did not have a valid TOC sequence, + * the packet's TOC sequence was not compatible + * with previously submitted packets (because + * the coding mode, audio bandwidth, frame size, + * or channel count did not match), or adding + * this packet would increase the total amount of + * audio stored in the repacketizer state to more + * than 120 ms. + */ +OPUS_EXPORT int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * @param rp OpusRepacketizer*: The repacketizer state from which to + * construct the new packet. + * @param begin int: The index of the first frame in the current + * repacketizer state to include in the output. + * @param end int: One past the index of the last frame in the + * current repacketizer state to include in the + * output. + * @param[out] data const unsigned char*: The buffer in which to + * store the output packet. + * @param maxlen opus_int32: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * 1276 for a single frame, + * or for multiple frames, + * 1277*(end-begin). + * However, 1*(end-begin) plus + * the size of all packet data submitted to + * the repacketizer since the last call to + * opus_repacketizer_init() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG [begin,end) was an invalid range of + * frames (begin < 0, begin >= end, or end > + * opus_repacketizer_get_nb_frames()). + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Return the total number of frames contained in packet data submitted to + * the repacketizer state so far via opus_repacketizer_cat() since the last + * call to opus_repacketizer_init() or opus_repacketizer_create(). + * This defines the valid range of packets that can be extracted with + * opus_repacketizer_out_range() or opus_repacketizer_out(). + * @param rp OpusRepacketizer*: The repacketizer state containing the + * frames. + * @returns The total number of frames contained in the packet data submitted + * to the repacketizer state. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * This is a convenience routine that returns all the data submitted so far + * in a single packet. + * It is equivalent to calling + * @code + * opus_repacketizer_out_range(rp, 0, opus_repacketizer_get_nb_frames(rp), + * data, maxlen) + * @endcode + * @param rp OpusRepacketizer*: The repacketizer state from which to + * construct the new packet. + * @param[out] data const unsigned char*: The buffer in which to + * store the output packet. + * @param maxlen opus_int32: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * 1277*opus_repacketizer_get_nb_frames(rp). + * However, + * 1*opus_repacketizer_get_nb_frames(rp) + * plus the size of all packet data + * submitted to the repacketizer since the + * last call to opus_repacketizer_init() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_H */ diff --git a/Windows/codecs/include/opus/opus_defines.h b/Windows/codecs/include/opus/opus_defines.h new file mode 100644 index 0000000..5a37637 --- /dev/null +++ b/Windows/codecs/include/opus/opus_defines.h @@ -0,0 +1,665 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_defines.h + * @brief Opus reference implementation constants + */ + +#ifndef OPUS_DEFINES_H +#define OPUS_DEFINES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup opus_errorcodes Error codes + * @{ + */ +/** No error @hideinitializer*/ +#define OPUS_OK 0 +/** One or more invalid/out of range arguments @hideinitializer*/ +#define OPUS_BAD_ARG -1 +/** The mode struct passed is invalid @hideinitializer*/ +#define OPUS_BUFFER_TOO_SMALL -2 +/** An internal error was detected @hideinitializer*/ +#define OPUS_INTERNAL_ERROR -3 +/** The compressed data passed is corrupted @hideinitializer*/ +#define OPUS_INVALID_PACKET -4 +/** Invalid/unsupported request number @hideinitializer*/ +#define OPUS_UNIMPLEMENTED -5 +/** An encoder or decoder structure is invalid or already freed @hideinitializer*/ +#define OPUS_INVALID_STATE -6 +/** Memory allocation has failed @hideinitializer*/ +#define OPUS_ALLOC_FAIL -7 +/**@}*/ + +/** @cond OPUS_INTERNAL_DOC */ +/**Export control for opus functions */ + +#ifndef OPUS_EXPORT +# if defined(_WIN32) +# if defined(OPUS_BUILD) && defined(DLL_EXPORT) +# define OPUS_EXPORT __declspec(dllexport) +# else +# define OPUS_EXPORT +# endif +# elif defined(__GNUC__) && defined(OPUS_BUILD) +# define OPUS_EXPORT __attribute__ ((visibility ("default"))) +# else +# define OPUS_EXPORT +# endif +#endif + +# if !defined(OPUS_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OPUS_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OPUS_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +#if defined(__WATCOMC__) +# if (__WATCOMC__ >= 1250) +# define OPUS_RESTRICT __restrict +# else +# define OPUS_RESTRICT +# endif +#elif (defined(__GNUC__) && !OPUS_GNUC_PREREQ(3,4)) +/* __restrict is broken with gcc < 3.4 + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=6392 */ +# define OPUS_RESTRICT +#elif (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if OPUS_GNUC_PREREQ(3,0) +# define OPUS_RESTRICT __restrict__ +# elif (defined(_MSC_VER) && _MSC_VER >= 1400) +# define OPUS_RESTRICT __restrict +# else +# define OPUS_RESTRICT +# endif +#else +# define OPUS_RESTRICT restrict +#endif + +/**Warning attributes for opus functions + * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out + * some paranoid null checks. */ +#if defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +#else +# define OPUS_WARN_UNUSED_RESULT +#endif +#if !defined(OPUS_BUILD) && defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +#else +# define OPUS_ARG_NONNULL(_x) +#endif + +/** These are the actual Encoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +#define OPUS_SET_APPLICATION_REQUEST 4000 +#define OPUS_GET_APPLICATION_REQUEST 4001 +#define OPUS_SET_BITRATE_REQUEST 4002 +#define OPUS_GET_BITRATE_REQUEST 4003 +#define OPUS_SET_MAX_BANDWIDTH_REQUEST 4004 +#define OPUS_GET_MAX_BANDWIDTH_REQUEST 4005 +#define OPUS_SET_VBR_REQUEST 4006 +#define OPUS_GET_VBR_REQUEST 4007 +#define OPUS_SET_BANDWIDTH_REQUEST 4008 +#define OPUS_GET_BANDWIDTH_REQUEST 4009 +#define OPUS_SET_COMPLEXITY_REQUEST 4010 +#define OPUS_GET_COMPLEXITY_REQUEST 4011 +#define OPUS_SET_INBAND_FEC_REQUEST 4012 +#define OPUS_GET_INBAND_FEC_REQUEST 4013 +#define OPUS_SET_PACKET_LOSS_PERC_REQUEST 4014 +#define OPUS_GET_PACKET_LOSS_PERC_REQUEST 4015 +#define OPUS_SET_DTX_REQUEST 4016 +#define OPUS_GET_DTX_REQUEST 4017 +#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020 +#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021 +#define OPUS_SET_FORCE_CHANNELS_REQUEST 4022 +#define OPUS_GET_FORCE_CHANNELS_REQUEST 4023 +#define OPUS_SET_SIGNAL_REQUEST 4024 +#define OPUS_GET_SIGNAL_REQUEST 4025 +#define OPUS_GET_LOOKAHEAD_REQUEST 4027 +/* #define OPUS_RESET_STATE 4028 */ +#define OPUS_GET_SAMPLE_RATE_REQUEST 4029 +#define OPUS_GET_FINAL_RANGE_REQUEST 4031 +#define OPUS_GET_PITCH_REQUEST 4033 +#define OPUS_SET_GAIN_REQUEST 4034 +#define OPUS_GET_GAIN_REQUEST 4045 /* Should have been 4035 */ +#define OPUS_SET_LSB_DEPTH_REQUEST 4036 +#define OPUS_GET_LSB_DEPTH_REQUEST 4037 + +#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039 + +/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */ + +/* Macros to trigger compilation errors when the wrong types are provided to a CTL */ +#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x)) +#define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr))) +#define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr))) +/** @endcond */ + +/** @defgroup opus_ctlvalues Pre-defined values for CTL interface + * @see opus_genericctls, opus_encoderctls + * @{ + */ +/* Values for the various encoder CTLs */ +#define OPUS_AUTO -1000 /**opus_int32: Allowed values: 0-10, inclusive. + * + * @hideinitializer */ +#define OPUS_SET_COMPLEXITY(x) OPUS_SET_COMPLEXITY_REQUEST, __opus_check_int(x) +/** Gets the encoder's complexity configuration. + * @see OPUS_SET_COMPLEXITY + * @param[out] x opus_int32 *: Returns a value in the range 0-10, + * inclusive. + * @hideinitializer */ +#define OPUS_GET_COMPLEXITY(x) OPUS_GET_COMPLEXITY_REQUEST, __opus_check_int_ptr(x) + +/** Configures the bitrate in the encoder. + * Rates from 500 to 512000 bits per second are meaningful, as well as the + * special values #OPUS_AUTO and #OPUS_BITRATE_MAX. + * The value #OPUS_BITRATE_MAX can be used to cause the codec to use as much + * rate as it can, which is useful for controlling the rate by adjusting the + * output buffer size. + * @see OPUS_GET_BITRATE + * @param[in] x opus_int32: Bitrate in bits per second. The default + * is determined based on the number of + * channels and the input sampling rate. + * @hideinitializer */ +#define OPUS_SET_BITRATE(x) OPUS_SET_BITRATE_REQUEST, __opus_check_int(x) +/** Gets the encoder's bitrate configuration. + * @see OPUS_SET_BITRATE + * @param[out] x opus_int32 *: Returns the bitrate in bits per second. + * The default is determined based on the + * number of channels and the input + * sampling rate. + * @hideinitializer */ +#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables variable bitrate (VBR) in the encoder. + * The configured bitrate may not be met exactly because frames must + * be an integer number of bytes in length. + * @warning Only the MDCT mode of Opus can provide hard CBR behavior. + * @see OPUS_GET_VBR + * @see OPUS_SET_VBR_CONSTRAINT + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Hard CBR. For LPC/hybrid modes at very low bit-rate, this can + * cause noticeable quality degradation.
+ *
1
VBR (default). The exact type of VBR is controlled by + * #OPUS_SET_VBR_CONSTRAINT.
+ *
+ * @hideinitializer */ +#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x) +/** Determine if variable bitrate (VBR) is enabled in the encoder. + * @see OPUS_SET_VBR + * @see OPUS_GET_VBR_CONSTRAINT + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Hard CBR.
+ *
1
VBR (default). The exact type of VBR may be retrieved via + * #OPUS_GET_VBR_CONSTRAINT.
+ *
+ * @hideinitializer */ +#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables constrained VBR in the encoder. + * This setting is ignored when the encoder is in CBR mode. + * @warning Only the MDCT mode of Opus currently heeds the constraint. + * Speech mode ignores it completely, hybrid mode may fail to obey it + * if the LPC layer uses more bitrate than the constraint would have + * permitted. + * @see OPUS_GET_VBR_CONSTRAINT + * @see OPUS_SET_VBR + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Unconstrained VBR.
+ *
1
Constrained VBR (default). This creates a maximum of one + * frame of buffering delay assuming a transport with a + * serialization speed of the nominal bitrate.
+ *
+ * @hideinitializer */ +#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x) +/** Determine if constrained VBR is enabled in the encoder. + * @see OPUS_SET_VBR_CONSTRAINT + * @see OPUS_GET_VBR + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Unconstrained VBR.
+ *
1
Constrained VBR (default).
+ *
+ * @hideinitializer */ +#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x) + +/** Configures mono/stereo forcing in the encoder. + * This can force the encoder to produce packets encoded as either mono or + * stereo, regardless of the format of the input audio. This is useful when + * the caller knows that the input signal is currently a mono source embedded + * in a stereo stream. + * @see OPUS_GET_FORCE_CHANNELS + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
Not forced (default)
+ *
1
Forced mono
+ *
2
Forced stereo
+ *
+ * @hideinitializer */ +#define OPUS_SET_FORCE_CHANNELS(x) OPUS_SET_FORCE_CHANNELS_REQUEST, __opus_check_int(x) +/** Gets the encoder's forced channel configuration. + * @see OPUS_SET_FORCE_CHANNELS + * @param[out] x opus_int32 *: + *
+ *
#OPUS_AUTO
Not forced (default)
+ *
1
Forced mono
+ *
2
Forced stereo
+ *
+ * @hideinitializer */ +#define OPUS_GET_FORCE_CHANNELS(x) OPUS_GET_FORCE_CHANNELS_REQUEST, __opus_check_int_ptr(x) + +/** Configures the maximum bandpass that the encoder will select automatically. + * Applications should normally use this instead of #OPUS_SET_BANDWIDTH + * (leaving that set to the default, #OPUS_AUTO). This allows the + * application to set an upper bound based on the type of input it is + * providing, but still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_MAX_BANDWIDTH + * @param[in] x opus_int32: Allowed values: + *
+ *
OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
OPUS_BANDWIDTH_FULLBAND
20 kHz passband (default)
+ *
+ * @hideinitializer */ +#define OPUS_SET_MAX_BANDWIDTH(x) OPUS_SET_MAX_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Gets the encoder's configured maximum allowed bandpass. + * @see OPUS_SET_MAX_BANDWIDTH + * @param[out] x opus_int32 *: Allowed values: + *
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband (default)
+ *
+ * @hideinitializer */ +#define OPUS_GET_MAX_BANDWIDTH(x) OPUS_GET_MAX_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/** Sets the encoder's bandpass to a specific value. + * This prevents the encoder from automatically selecting the bandpass based + * on the available bitrate. If an application knows the bandpass of the input + * audio it is providing, it should normally use #OPUS_SET_MAX_BANDWIDTH + * instead, which still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_BANDWIDTH + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband
+ *
+ * @hideinitializer */ +#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Configures the type of signal being encoded. + * This is a hint which helps the encoder's mode selection. + * @see OPUS_GET_SIGNAL + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_SIGNAL_VOICE
Bias thresholds towards choosing LPC or Hybrid modes.
+ *
#OPUS_SIGNAL_MUSIC
Bias thresholds towards choosing MDCT modes.
+ *
+ * @hideinitializer */ +#define OPUS_SET_SIGNAL(x) OPUS_SET_SIGNAL_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal type. + * @see OPUS_SET_SIGNAL + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_SIGNAL_VOICE
Bias thresholds towards choosing LPC or Hybrid modes.
+ *
#OPUS_SIGNAL_MUSIC
Bias thresholds towards choosing MDCT modes.
+ *
+ * @hideinitializer */ +#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x) + + +/** Configures the encoder's intended application. + * The initial value is a mandatory argument to the encoder_create function. + * @see OPUS_GET_APPLICATION + * @param[in] x opus_int32: Returns one of the following values: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @hideinitializer */ +#define OPUS_SET_APPLICATION(x) OPUS_SET_APPLICATION_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured application. + * @see OPUS_SET_APPLICATION + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @hideinitializer */ +#define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x) + +/** Gets the sampling rate the encoder or decoder was initialized with. + * This simply returns the Fs value passed to opus_encoder_init() + * or opus_decoder_init(). + * @param[out] x opus_int32 *: Sampling rate of encoder or decoder. + * @hideinitializer + */ +#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x) + +/** Gets the total samples of delay added by the entire codec. + * This can be queried by the encoder and then the provided number of samples can be + * skipped on from the start of the decoder's output to provide time aligned input + * and output. From the perspective of a decoding application the real data begins this many + * samples late. + * + * The decoder contribution to this delay is identical for all decoders, but the + * encoder portion of the delay may vary from implementation to implementation, + * version to version, or even depend on the encoder's initial configuration. + * Applications needing delay compensation should call this CTL rather than + * hard-coding a value. + * @param[out] x opus_int32 *: Number of lookahead samples + * @hideinitializer */ +#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of inband forward error correction (FEC). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_INBAND_FEC + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Disable inband FEC (default).
+ *
1
Enable inband FEC.
+ *
+ * @hideinitializer */ +#define OPUS_SET_INBAND_FEC(x) OPUS_SET_INBAND_FEC_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of inband forward error correction. + * @see OPUS_SET_INBAND_FEC + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Inband FEC disabled (default).
+ *
1
Inband FEC enabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's expected packet loss percentage. + * Higher values with trigger progressively more loss resistant behavior in the encoder + * at the expense of quality at a given bitrate in the lossless case, but greater quality + * under loss. + * @see OPUS_GET_PACKET_LOSS_PERC + * @param[in] x opus_int32: Loss percentage in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_SET_PACKET_LOSS_PERC(x) OPUS_SET_PACKET_LOSS_PERC_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured packet loss percentage. + * @see OPUS_SET_PACKET_LOSS_PERC + * @param[out] x opus_int32 *: Returns the configured loss percentage + * in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_GET_PACKET_LOSS_PERC(x) OPUS_GET_PACKET_LOSS_PERC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of discontinuous transmission (DTX). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_DTX + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Disable DTX (default).
+ *
1
Enabled DTX.
+ *
+ * @hideinitializer */ +#define OPUS_SET_DTX(x) OPUS_SET_DTX_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of discontinuous transmission. + * @see OPUS_SET_DTX + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
DTX disabled (default).
+ *
1
DTX enabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x) +/** Configures the depth of signal being encoded. + * This is a hint which helps the encoder identify silence and near-silence. + * @see OPUS_GET_LSB_DEPTH + * @param[in] x opus_int32: Input precision in bits, between 8 and 24 + * (default: 24). + * @hideinitializer */ +#define OPUS_SET_LSB_DEPTH(x) OPUS_SET_LSB_DEPTH_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal depth. + * @see OPUS_SET_LSB_DEPTH + * @param[out] x opus_int32 *: Input precision in bits, between 8 and + * 24 (default: 24). + * @hideinitializer */ +#define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x) + +/** Gets the duration (in samples) of the last packet successfully decoded or concealed. + * @param[out] x opus_int32 *: Number of samples (at current sampling rate). + * @hideinitializer */ +#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x) +/**@}*/ + +/** @defgroup opus_genericctls Generic CTLs + * + * These macros are used with the \c opus_decoder_ctl and + * \c opus_encoder_ctl calls to generate a particular + * request. + * + * When called on an \c OpusDecoder they apply to that + * particular decoder instance. When called on an + * \c OpusEncoder they apply to the corresponding setting + * on that encoder instance, if present. + * + * Some usage examples: + * + * @code + * int ret; + * opus_int32 pitch; + * ret = opus_decoder_ctl(dec_ctx, OPUS_GET_PITCH(&pitch)); + * if (ret == OPUS_OK) return ret; + * + * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE); + * opus_decoder_ctl(dec_ctx, OPUS_RESET_STATE); + * + * opus_int32 enc_bw, dec_bw; + * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&enc_bw)); + * opus_decoder_ctl(dec_ctx, OPUS_GET_BANDWIDTH(&dec_bw)); + * if (enc_bw != dec_bw) { + * printf("packet bandwidth mismatch!\n"); + * } + * @endcode + * + * @see opus_encoder, opus_decoder_ctl, opus_encoder_ctl, opus_decoderctls, opus_encoderctls + * @{ + */ + +/** Resets the codec state to be equivalent to a freshly initialized state. + * This should be called when switching streams in order to prevent + * the back to back decoding from giving different results from + * one at a time decoding. + * @hideinitializer */ +#define OPUS_RESET_STATE 4028 + +/** Gets the final state of the codec's entropy coder. + * This is used for testing purposes, + * The encoder and decoder state should be identical after coding a payload + * (assuming no data corruption or software bugs) + * + * @param[out] x opus_uint32 *: Entropy coder state + * + * @hideinitializer */ +#define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x) + +/** Gets the pitch of the last decoded frame, if available. + * This can be used for any post-processing algorithm requiring the use of pitch, + * e.g. time stretching/shortening. If the last frame was not voiced, or if the + * pitch was not coded in the frame, then zero is returned. + * + * This CTL is only implemented for decoder instances. + * + * @param[out] x opus_int32 *: pitch period at 48 kHz (or 0 if not available) + * + * @hideinitializer */ +#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x) + +/** Gets the encoder's configured bandpass or the decoder's last bandpass. + * @see OPUS_SET_BANDWIDTH + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband
+ *
+ * @hideinitializer */ +#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_decoderctls Decoder related CTLs + * @see opus_genericctls, opus_encoderctls, opus_decoder + * @{ + */ + +/** Configures decoder gain adjustment. + * Scales the decoded output by a factor specified in Q8 dB units. + * This has a maximum range of -32768 to 32767 inclusive, and returns + * OPUS_BAD_ARG otherwise. The default is zero indicating no adjustment. + * This setting survives decoder reset. + * + * gain = pow(10, x/(20.0*256)) + * + * @param[in] x opus_int32: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_SET_GAIN(x) OPUS_SET_GAIN_REQUEST, __opus_check_int(x) +/** Gets the decoder's configured gain adjustment. @see OPUS_SET_GAIN + * + * @param[out] x opus_int32 *: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_libinfo Opus library information functions + * @{ + */ + +/** Converts an opus error code into a human readable string. + * + * @param[in] error int: Error number + * @returns Error string + */ +OPUS_EXPORT const char *opus_strerror(int error); + +/** Gets the libopus version string. + * + * @returns Version string + */ +OPUS_EXPORT const char *opus_get_version_string(void); +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_DEFINES_H */ diff --git a/Windows/codecs/include/opus/opus_multistream.h b/Windows/codecs/include/opus/opus_multistream.h new file mode 100644 index 0000000..965d54a --- /dev/null +++ b/Windows/codecs/include/opus/opus_multistream.h @@ -0,0 +1,660 @@ +/* Copyright (c) 2011 Xiph.Org Foundation + Written by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_multistream.h + * @brief Opus reference implementation multistream API + */ + +#ifndef OPUS_MULTISTREAM_H +#define OPUS_MULTISTREAM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond OPUS_INTERNAL_DOC */ + +/** Macros to trigger compilation errors when the wrong types are provided to a + * CTL. */ +/**@{*/ +#define __opus_check_encstate_ptr(ptr) ((ptr) + ((ptr) - (OpusEncoder**)(ptr))) +#define __opus_check_decstate_ptr(ptr) ((ptr) + ((ptr) - (OpusDecoder**)(ptr))) +/**@}*/ + +/** These are the actual encoder and decoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +/**@{*/ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST 5120 +#define OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST 5122 +/**@}*/ + +/** @endcond */ + +/** @defgroup opus_multistream_ctls Multistream specific encoder and decoder CTLs + * + * These are convenience macros that are specific to the + * opus_multistream_encoder_ctl() and opus_multistream_decoder_ctl() + * interface. + * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, and + * @ref opus_decoderctls may be applied to a multistream encoder or decoder as + * well. + * In addition, you may retrieve the encoder or decoder state for an specific + * stream via #OPUS_MULTISTREAM_GET_ENCODER_STATE or + * #OPUS_MULTISTREAM_GET_DECODER_STATE and apply CTLs to it individually. + */ +/**@{*/ + +/** Gets the encoder state for an individual stream of a multistream encoder. + * @param[in] x opus_int32: The index of the stream whose encoder you + * wish to retrieve. + * This must be non-negative and less than + * the streams parameter used + * to initialize the encoder. + * @param[out] y OpusEncoder**: Returns a pointer to the given + * encoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE(x,y) OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST, __opus_check_int(x), __opus_check_encstate_ptr(y) + +/** Gets the decoder state for an individual stream of a multistream decoder. + * @param[in] x opus_int32: The index of the stream whose decoder you + * wish to retrieve. + * This must be non-negative and less than + * the streams parameter used + * to initialize the decoder. + * @param[out] y OpusDecoder**: Returns a pointer to the given + * decoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_DECODER_STATE(x,y) OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST, __opus_check_int(x), __opus_check_decstate_ptr(y) + +/**@}*/ + +/** @defgroup opus_multistream Opus Multistream API + * @{ + * + * The multistream API allows individual Opus streams to be combined into a + * single packet, enabling support for up to 255 channels. Unlike an + * elementary Opus stream, the encoder and decoder must negotiate the channel + * configuration before the decoder can successfully interpret the data in the + * packets produced by the encoder. Some basic information, such as packet + * duration, can be computed without any special negotiation. + * + * The format for multistream Opus packets is defined in the + * Ogg + * encapsulation specification and is based on the self-delimited Opus + * framing described in Appendix B of RFC 6716. + * Normal Opus packets are just a degenerate case of multistream Opus packets, + * and can be encoded or decoded with the multistream API by setting + * streams to 1 when initializing the encoder or + * decoder. + * + * Multistream Opus streams can contain up to 255 elementary Opus streams. + * These may be either "uncoupled" or "coupled", indicating that the decoder + * is configured to decode them to either 1 or 2 channels, respectively. + * The streams are ordered so that all coupled streams appear at the + * beginning. + * + * A mapping table defines which decoded channel i + * should be used for each input/output (I/O) channel j. This table is + * typically provided as an unsigned char array. + * Let i = mapping[j] be the index for I/O channel j. + * If i < 2*coupled_streams, then I/O channel j is + * encoded as the left channel of stream (i/2) if i + * is even, or as the right channel of stream (i/2) if + * i is odd. Otherwise, I/O channel j is encoded as + * mono in stream (i - coupled_streams), unless it has the special + * value 255, in which case it is omitted from the encoding entirely (the + * decoder will reproduce it as silence). Each value i must either + * be the special value 255 or be less than streams + coupled_streams. + * + * The output channels specified by the encoder + * should use the + * Vorbis + * channel ordering. A decoder may wish to apply an additional permutation + * to the mapping the encoder used to achieve a different output channel + * order (e.g. for outputing in WAV order). + * + * Each multistream packet contains an Opus packet for each stream, and all of + * the Opus packets in a single multistream packet must have the same + * duration. Therefore the duration of a multistream packet can be extracted + * from the TOC sequence of the first stream, which is located at the + * beginning of the packet, just like an elementary Opus stream: + * + * @code + * int nb_samples; + * int nb_frames; + * nb_frames = opus_packet_get_nb_frames(data, len); + * if (nb_frames < 1) + * return nb_frames; + * nb_samples = opus_packet_get_samples_per_frame(data, 48000) * nb_frames; + * @endcode + * + * The general encoding and decoding process proceeds exactly the same as in + * the normal @ref opus_encoder and @ref opus_decoder APIs. + * See their documentation for an overview of how to use the corresponding + * multistream functions. + */ + +/** Opus multistream encoder state. + * This contains the complete state of a multistream Opus encoder. + * It is position independent and can be freely copied. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_init + */ +typedef struct OpusMSEncoder OpusMSEncoder; + +/** Opus multistream decoder state. + * This contains the complete state of a multistream Opus decoder. + * It is position independent and can be freely copied. + * @see opus_multistream_decoder_create + * @see opus_multistream_decoder_init + */ +typedef struct OpusMSDecoder OpusMSDecoder; + +/**\name Multistream encoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSEncoder structure. + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size( + int streams, + int coupled_streams +); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size( + int channels, + int mapping_family +); + + +/** Allocates and initializes a multistream encoder state. + * Call opus_multistream_encoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (streams + + * coupled_streams). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than the number of input channels. + * @param[in] mapping const unsigned char[channels]: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. As an extra constraint, the + * multistream encoder does not allow encoding coupled + * streams for which one channel is unused since this + * is never a good idea. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(5); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create( + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(5); + +/** Initialize a previously allocated multistream encoder state. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_get_size + * @param st OpusMSEncoder*: Multistream encoder state to initialize. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (streams + + * coupled_streams). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than the number of input channels. + * @param[in] mapping const unsigned char[channels]: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. As an extra constraint, the + * multistream encoder does not allow encoding coupled + * streams for which one channel is unused since this + * is never a good idea. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +OPUS_EXPORT int opus_multistream_surround_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +/** Encodes a multistream Opus frame. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param[in] pcm const opus_int16*: The input signal as interleaved + * samples. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode( + OpusMSEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes a multistream Opus frame from floating point input. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param[in] pcm const float*: The input signal as interleaved + * samples with a normal range of + * +/-1.0. + * Samples with a range beyond +/-1.0 + * are supported but will be clipped by + * decoders using the integer API and + * should only be used if it is known + * that the far end supports extended + * dynamic range. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode_float( + OpusMSEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an OpusMSEncoder allocated by + * opus_multistream_encoder_create(). + * @param st OpusMSEncoder*: Multistream encoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_encoder_destroy(OpusMSEncoder *st); + +/** Perform a CTL function on a multistream Opus encoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_encoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_encoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_encoder_ctl(OpusMSEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/**@}*/ + +/**\name Multistream decoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSDecoder structure. + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_decoder_get_size( + int streams, + int coupled_streams +); + +/** Allocates and initializes a multistream decoder state. + * Call opus_multistream_decoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @param[in] mapping const unsigned char[channels]: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSDecoder *opus_multistream_decoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int *error +) OPUS_ARG_NONNULL(5); + +/** Intialize a previously allocated decoder state object. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_decoder_create + * @see opus_multistream_deocder_get_size + * @param st OpusMSEncoder*: Multistream encoder state to initialize. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @param[in] mapping const unsigned char[channels]: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_decoder_init( + OpusMSDecoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +/** Decode a multistream Opus packet. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * must be a multiple of 2.5 ms. + * @param decode_fec int: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode a multistream Opus packet with floating point output. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * must be a multiple of 2.5 ms. + * @param decode_fec int: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode_float( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on a multistream Opus decoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_decoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_decoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an OpusMSDecoder allocated by + * opus_multistream_decoder_create(). + * @param st OpusMSDecoder: Multistream decoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_decoder_destroy(OpusMSDecoder *st); + +/**@}*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_MULTISTREAM_H */ diff --git a/Windows/codecs/include/opus/opus_types.h b/Windows/codecs/include/opus/opus_types.h new file mode 100644 index 0000000..b28e03a --- /dev/null +++ b/Windows/codecs/include/opus/opus_types.h @@ -0,0 +1,159 @@ +/* (C) COPYRIGHT 1994-2002 Xiph.Org Foundation */ +/* Modified by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* opus_types.h based on ogg_types.h from libogg */ + +/** + @file opus_types.h + @brief Opus reference implementation types +*/ +#ifndef OPUS_TYPES_H +#define OPUS_TYPES_H + +/* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */ +#if (defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H)) +#include + + typedef int16_t opus_int16; + typedef uint16_t opus_uint16; + typedef int32_t opus_int32; + typedef uint32_t opus_uint32; +#elif defined(_WIN32) + +# if defined(__CYGWIN__) +# include <_G_config.h> + typedef _G_int32_t opus_int32; + typedef _G_uint32_t opus_uint32; + typedef _G_int16 opus_int16; + typedef _G_uint16 opus_uint16; +# elif defined(__MINGW32__) + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; +# elif defined(__MWERKS__) + typedef int opus_int32; + typedef unsigned int opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; +# else + /* MSVC/Borland */ + typedef __int32 opus_int32; + typedef unsigned __int32 opus_uint32; + typedef __int16 opus_int16; + typedef unsigned __int16 opus_uint16; +# endif + +#elif defined(__MACOS__) + +# include + typedef SInt16 opus_int16; + typedef UInt16 opus_uint16; + typedef SInt32 opus_int32; + typedef UInt32 opus_uint32; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include + typedef int16_t opus_int16; + typedef u_int16_t opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined(__BEOS__) + + /* Be */ +# include + typedef int16 opus_int16; + typedef u_int16 opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(R5900) + + /* PS2 EE */ + typedef int opus_int32; + typedef unsigned opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short opus_int16; + typedef unsigned short opus_uint16; + typedef signed int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef long opus_int32; + typedef unsigned long opus_uint32; + +#elif defined(CONFIG_TI_C6X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#else + + /* Give up, take a reasonable guess */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#endif + +#define opus_int int /* used for counters etc; at least 16 bits */ +#define opus_int64 long long +#define opus_int8 signed char + +#define opus_uint unsigned int /* used for counters etc; at least 16 bits */ +#define opus_uint64 unsigned long long +#define opus_uint8 unsigned char + +#endif /* OPUS_TYPES_H */ diff --git a/Windows/codecs/include/opus/opusfile.h b/Windows/codecs/include/opus/opusfile.h new file mode 100644 index 0000000..296d8d9 --- /dev/null +++ b/Windows/codecs/include/opus/opusfile.h @@ -0,0 +1,2164 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 * + * by the Xiph.Org Foundation and contributors https://xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ +#if !defined(_opusfile_h) +# define _opusfile_h (1) + +/**\mainpage + \section Introduction + + This is the documentation for the libopusfile C API. + + The libopusfile package provides a convenient high-level API for + decoding and basic manipulation of all Ogg Opus audio streams. + libopusfile is implemented as a layer on top of Xiph.Org's + reference + libogg + and + libopus + libraries. + + libopusfile provides several sets of built-in routines for + file/stream access, and may also use custom stream I/O routines provided by + the embedded environment. + There are built-in I/O routines provided for ANSI-compliant + stdio (FILE *), memory buffers, and URLs + (including URLs, plus optionally and URLs). + + \section Organization + + The main API is divided into several sections: + - \ref stream_open_close + - \ref stream_info + - \ref stream_decoding + - \ref stream_seeking + + Several additional sections are not tied to the main API. + - \ref stream_callbacks + - \ref header_info + - \ref error_codes + + \section Overview + + The libopusfile API always decodes files to 48 kHz. + The original sample rate is not preserved by the lossy compression, though + it is stored in the header to allow you to resample to it after decoding + (the libopusfile API does not currently provide a resampler, + but the + the + Speex resampler is a good choice if you need one). + In general, if you are playing back the audio, you should leave it at + 48 kHz, provided your audio hardware supports it. + When decoding to a file, it may be worth resampling back to the original + sample rate, so as not to surprise users who might not expect the sample + rate to change after encoding to Opus and decoding. + + Opus files can contain anywhere from 1 to 255 channels of audio. + The channel mappings for up to 8 channels are the same as the + Vorbis + mappings. + A special stereo API can convert everything to 2 channels, making it simple + to support multichannel files in an application which only has stereo + output. + Although the libopusfile ABI provides support for the theoretical + maximum number of channels, the current implementation does not support + files with more than 8 channels, as they do not have well-defined channel + mappings. + + Like all Ogg files, Opus files may be "chained". + That is, multiple Opus files may be combined into a single, longer file just + by concatenating the original files. + This is commonly done in internet radio streaming, as it allows the title + and artist to be updated each time the song changes, since each link in the + chain includes its own set of metadata. + + libopusfile fully supports chained files. + It will decode the first Opus stream found in each link of a chained file + (ignoring any other streams that might be concurrently multiplexed with it, + such as a video stream). + + The channel count can also change between links. + If your application is not prepared to deal with this, it can use the stereo + API to ensure the audio from all links will always get decoded into a + common format. + Since libopusfile always decodes to 48 kHz, you do not have to + worry about the sample rate changing between links (as was possible with + Vorbis). + This makes application support for chained files with libopusfile + very easy.*/ + +# if defined(__cplusplus) +extern "C" { +# endif + +# include +# include +# include +# include + +/**@cond PRIVATE*/ + +/*Enable special features for gcc and gcc-compatible compilers.*/ +# if !defined(OP_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OP_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OP_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +# if OP_GNUC_PREREQ(4,0) +# pragma GCC visibility push(default) +# endif + +typedef struct OpusHead OpusHead; +typedef struct OpusTags OpusTags; +typedef struct OpusPictureTag OpusPictureTag; +typedef struct OpusServerInfo OpusServerInfo; +typedef struct OpusFileCallbacks OpusFileCallbacks; +typedef struct OggOpusFile OggOpusFile; + +/*Warning attributes for libopusfile functions.*/ +# if OP_GNUC_PREREQ(3,4) +# define OP_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) +# else +# define OP_WARN_UNUSED_RESULT +# endif +# if OP_GNUC_PREREQ(3,4) +# define OP_ARG_NONNULL(_x) __attribute__((__nonnull__(_x))) +# else +# define OP_ARG_NONNULL(_x) +# endif + +/**@endcond*/ + +/**\defgroup error_codes Error Codes*/ +/*@{*/ +/**\name List of possible error codes + Many of the functions in this library return a negative error code when a + function fails. + This list provides a brief explanation of the common errors. + See each individual function for more details on what a specific error code + means in that context.*/ +/*@{*/ + +/**A request did not succeed.*/ +#define OP_FALSE (-1) +/*Currently not used externally.*/ +#define OP_EOF (-2) +/**There was a hole in the page sequence numbers (e.g., a page was corrupt or + missing).*/ +#define OP_HOLE (-3) +/**An underlying read, seek, or tell operation failed when it should have + succeeded.*/ +#define OP_EREAD (-128) +/**A NULL pointer was passed where one was unexpected, or an + internal memory allocation failed, or an internal library error was + encountered.*/ +#define OP_EFAULT (-129) +/**The stream used a feature that is not implemented, such as an unsupported + channel family.*/ +#define OP_EIMPL (-130) +/**One or more parameters to a function were invalid.*/ +#define OP_EINVAL (-131) +/**A purported Ogg Opus stream did not begin with an Ogg page, a purported + header packet did not start with one of the required strings, "OpusHead" or + "OpusTags", or a link in a chained file was encountered that did not + contain any logical Opus streams.*/ +#define OP_ENOTFORMAT (-132) +/**A required header packet was not properly formatted, contained illegal + values, or was missing altogether.*/ +#define OP_EBADHEADER (-133) +/**The ID header contained an unrecognized version number.*/ +#define OP_EVERSION (-134) +/*Currently not used at all.*/ +#define OP_ENOTAUDIO (-135) +/**An audio packet failed to decode properly. + This is usually caused by a multistream Ogg packet where the durations of + the individual Opus packets contained in it are not all the same.*/ +#define OP_EBADPACKET (-136) +/**We failed to find data we had seen before, or the bitstream structure was + sufficiently malformed that seeking to the target destination was + impossible.*/ +#define OP_EBADLINK (-137) +/**An operation that requires seeking was requested on an unseekable stream.*/ +#define OP_ENOSEEK (-138) +/**The first or last granule position of a link failed basic validity checks.*/ +#define OP_EBADTIMESTAMP (-139) + +/*@}*/ +/*@}*/ + +/**\defgroup header_info Header Information*/ +/*@{*/ + +/**The maximum number of channels in an Ogg Opus stream.*/ +#define OPUS_CHANNEL_COUNT_MAX (255) + +/**Ogg Opus bitstream information. + This contains the basic playback parameters for a stream, and corresponds to + the initial ID header packet of an Ogg Opus stream.*/ +struct OpusHead{ + /**The Ogg Opus format version, in the range 0...255. + The top 4 bits represent a "major" version, and the bottom four bits + represent backwards-compatible "minor" revisions. + The current specification describes version 1. + This library will recognize versions up through 15 as backwards compatible + with the current specification. + An earlier draft of the specification described a version 0, but the only + difference between version 1 and version 0 is that version 0 did + not specify the semantics for handling the version field.*/ + int version; + /**The number of channels, in the range 1...255.*/ + int channel_count; + /**The number of samples that should be discarded from the beginning of the + stream.*/ + unsigned pre_skip; + /**The sampling rate of the original input. + All Opus audio is coded at 48 kHz, and should also be decoded at 48 kHz + for playback (unless the target hardware does not support this sampling + rate). + However, this field may be used to resample the audio back to the original + sampling rate, for example, when saving the output to a file.*/ + opus_uint32 input_sample_rate; + /**The gain to apply to the decoded output, in dB, as a Q8 value in the range + -32768...32767. + The libopusfile API will automatically apply this gain to the + decoded output before returning it, scaling it by + pow(10,output_gain/(20.0*256)). + You can adjust this behavior with op_set_gain_offset().*/ + int output_gain; + /**The channel mapping family, in the range 0...255. + Channel mapping family 0 covers mono or stereo in a single stream. + Channel mapping family 1 covers 1 to 8 channels in one or more streams, + using the Vorbis speaker assignments. + Channel mapping family 255 covers 1 to 255 channels in one or more + streams, but without any defined speaker assignment.*/ + int mapping_family; + /**The number of Opus streams in each Ogg packet, in the range 1...255.*/ + int stream_count; + /**The number of coupled Opus streams in each Ogg packet, in the range + 0...127. + This must satisfy 0 <= coupled_count <= stream_count and + coupled_count + stream_count <= 255. + The coupled streams appear first, before all uncoupled streams, in an Ogg + Opus packet.*/ + int coupled_count; + /**The mapping from coded stream channels to output channels. + Let index=mapping[k] be the value for channel k. + If index<2*coupled_count, then it refers to the left channel + from stream (index/2) if even, and the right channel from + stream (index/2) if odd. + Otherwise, it refers to the output of the uncoupled stream + (index-coupled_count).*/ + unsigned char mapping[OPUS_CHANNEL_COUNT_MAX]; +}; + +/**The metadata from an Ogg Opus stream. + + This structure holds the in-stream metadata corresponding to the 'comment' + header packet of an Ogg Opus stream. + The comment header is meant to be used much like someone jotting a quick + note on the label of a CD. + It should be a short, to the point text note that can be more than a couple + words, but not more than a short paragraph. + + The metadata is stored as a series of (tag, value) pairs, in length-encoded + string vectors, using the same format as Vorbis (without the final "framing + bit"), Theora, and Speex, except for the packet header. + The first occurrence of the '=' character delimits the tag and value. + A particular tag may occur more than once, and order is significant. + The character set encoding for the strings is always UTF-8, but the tag + names are limited to ASCII, and treated as case-insensitive. + See the Vorbis + comment header specification for details. + + In filling in this structure, libopusfile will null-terminate the + #user_comments strings for safety. + However, the bitstream format itself treats them as 8-bit clean vectors, + possibly containing NUL characters, so the #comment_lengths array should be + treated as their authoritative length. + + This structure is binary and source-compatible with a + vorbis_comment, and pointers to it may be freely cast to + vorbis_comment pointers, and vice versa. + It is provided as a separate type to avoid introducing a compile-time + dependency on the libvorbis headers.*/ +struct OpusTags{ + /**The array of comment string vectors.*/ + char **user_comments; + /**An array of the corresponding length of each vector, in bytes.*/ + int *comment_lengths; + /**The total number of comment streams.*/ + int comments; + /**The null-terminated vendor string. + This identifies the software used to encode the stream.*/ + char *vendor; +}; + +/**\name Picture tag image formats*/ +/*@{*/ + +/**The MIME type was not recognized, or the image data did not match the + declared MIME type.*/ +#define OP_PIC_FORMAT_UNKNOWN (-1) +/**The MIME type indicates the image data is really a URL.*/ +#define OP_PIC_FORMAT_URL (0) +/**The image is a JPEG.*/ +#define OP_PIC_FORMAT_JPEG (1) +/**The image is a PNG.*/ +#define OP_PIC_FORMAT_PNG (2) +/**The image is a GIF.*/ +#define OP_PIC_FORMAT_GIF (3) + +/*@}*/ + +/**The contents of a METADATA_BLOCK_PICTURE tag.*/ +struct OpusPictureTag{ + /**The picture type according to the ID3v2 APIC frame: +
    +
  1. Other
  2. +
  3. 32x32 pixels 'file icon' (PNG only)
  4. +
  5. Other file icon
  6. +
  7. Cover (front)
  8. +
  9. Cover (back)
  10. +
  11. Leaflet page
  12. +
  13. Media (e.g. label side of CD)
  14. +
  15. Lead artist/lead performer/soloist
  16. +
  17. Artist/performer
  18. +
  19. Conductor
  20. +
  21. Band/Orchestra
  22. +
  23. Composer
  24. +
  25. Lyricist/text writer
  26. +
  27. Recording Location
  28. +
  29. During recording
  30. +
  31. During performance
  32. +
  33. Movie/video screen capture
  34. +
  35. A bright colored fish
  36. +
  37. Illustration
  38. +
  39. Band/artist logotype
  40. +
  41. Publisher/Studio logotype
  42. +
+ Others are reserved and should not be used. + There may only be one each of picture type 1 and 2 in a file.*/ + opus_int32 type; + /**The MIME type of the picture, in printable ASCII characters 0x20-0x7E. + The MIME type may also be "-->" to signify that the data part + is a URL pointing to the picture instead of the picture data itself. + In this case, a terminating NUL is appended to the URL string in #data, + but #data_length is set to the length of the string excluding that + terminating NUL.*/ + char *mime_type; + /**The description of the picture, in UTF-8.*/ + char *description; + /**The width of the picture in pixels.*/ + opus_uint32 width; + /**The height of the picture in pixels.*/ + opus_uint32 height; + /**The color depth of the picture in bits-per-pixel (not + bits-per-channel).*/ + opus_uint32 depth; + /**For indexed-color pictures (e.g., GIF), the number of colors used, or 0 + for non-indexed pictures.*/ + opus_uint32 colors; + /**The length of the picture data in bytes.*/ + opus_uint32 data_length; + /**The binary picture data.*/ + unsigned char *data; + /**The format of the picture data, if known. + One of +
    +
  • #OP_PIC_FORMAT_UNKNOWN,
  • +
  • #OP_PIC_FORMAT_URL,
  • +
  • #OP_PIC_FORMAT_JPEG,
  • +
  • #OP_PIC_FORMAT_PNG, or
  • +
  • #OP_PIC_FORMAT_GIF.
  • +
*/ + int format; +}; + +/**\name Functions for manipulating header data + + These functions manipulate the #OpusHead and #OpusTags structures, + which describe the audio parameters and tag-value metadata, respectively. + These can be used to query the headers returned by libopusfile, or + to parse Opus headers from sources other than an Ogg Opus stream, provided + they use the same format.*/ +/*@{*/ + +/**Parses the contents of the ID header packet of an Ogg Opus stream. + \param[out] _head Returns the contents of the parsed packet. + The contents of this structure are untouched on error. + This may be NULL to merely test the header + for validity. + \param[in] _data The contents of the ID header packet. + \param _len The number of bytes of data in the ID header packet. + \return 0 on success or a negative value on error. + \retval #OP_ENOTFORMAT If the data does not start with the "OpusHead" + string. + \retval #OP_EVERSION If the version field signaled a version this library + does not know how to parse. + \retval #OP_EIMPL If the channel mapping family was 255, which general + purpose players should not attempt to play. + \retval #OP_EBADHEADER If the contents of the packet otherwise violate the + Ogg Opus specification: +
    +
  • Insufficient data,
  • +
  • Too much data for the known minor versions,
  • +
  • An unrecognized channel mapping family,
  • +
  • Zero channels or too many channels,
  • +
  • Zero coded streams,
  • +
  • Too many coupled streams, or
  • +
  • An invalid channel mapping index.
  • +
*/ +OP_WARN_UNUSED_RESULT int opus_head_parse(OpusHead *_head, + const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2); + +/**Converts a granule position to a sample offset for a given Ogg Opus stream. + The sample offset is simply _gp-_head->pre_skip. + Granule position values smaller than OpusHead#pre_skip correspond to audio + that should never be played, and thus have no associated sample offset. + This function returns -1 for such values. + This function also correctly handles extremely large granule positions, + which may have wrapped around to a negative number when stored in a signed + ogg_int64_t value. + \param _head The #OpusHead information from the ID header of the stream. + \param _gp The granule position to convert. + \return The sample offset associated with the given granule position + (counting at a 48 kHz sampling rate), or the special value -1 on + error (i.e., the granule position was smaller than the pre-skip + amount).*/ +ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp) + OP_ARG_NONNULL(1); + +/**Parses the contents of the 'comment' header packet of an Ogg Opus stream. + \param[out] _tags An uninitialized #OpusTags structure. + This returns the contents of the parsed packet. + The contents of this structure are untouched on error. + This may be NULL to merely test the header + for validity. + \param[in] _data The contents of the 'comment' header packet. + \param _len The number of bytes of data in the 'info' header packet. + \retval 0 Success. + \retval #OP_ENOTFORMAT If the data does not start with the "OpusTags" + string. + \retval #OP_EBADHEADER If the contents of the packet otherwise violate the + Ogg Opus specification. + \retval #OP_EFAULT If there wasn't enough memory to store the tags.*/ +OP_WARN_UNUSED_RESULT int opus_tags_parse(OpusTags *_tags, + const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2); + +/**Performs a deep copy of an #OpusTags structure. + \param _dst The #OpusTags structure to copy into. + If this function fails, the contents of this structure remain + untouched. + \param _src The #OpusTags structure to copy from. + \retval 0 Success. + \retval #OP_EFAULT If there wasn't enough memory to copy the tags.*/ +int opus_tags_copy(OpusTags *_dst,const OpusTags *_src) OP_ARG_NONNULL(1); + +/**Initializes an #OpusTags structure. + This should be called on a freshly allocated #OpusTags structure before + attempting to use it. + \param _tags The #OpusTags structure to initialize.*/ +void opus_tags_init(OpusTags *_tags) OP_ARG_NONNULL(1); + +/**Add a (tag, value) pair to an initialized #OpusTags structure. + \note Neither opus_tags_add() nor opus_tags_add_comment() support values + containing embedded NULs, although the bitstream format does support them. + To add such tags, you will need to manipulate the #OpusTags structure + directly. + \param _tags The #OpusTags structure to add the (tag, value) pair to. + \param _tag A NUL-terminated, case-insensitive, ASCII string containing + the tag to add (without an '=' character). + \param _value A NUL-terminated UTF-8 containing the corresponding value. + \return 0 on success, or a negative value on failure. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3); + +/**Add a comment to an initialized #OpusTags structure. + \note Neither opus_tags_add_comment() nor opus_tags_add() support comments + containing embedded NULs, although the bitstream format does support them. + To add such tags, you will need to manipulate the #OpusTags structure + directly. + \param _tags The #OpusTags structure to add the comment to. + \param _comment A NUL-terminated UTF-8 string containing the comment in + "TAG=value" form. + \return 0 on success, or a negative value on failure. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_add_comment(OpusTags *_tags,const char *_comment) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Replace the binary suffix data at the end of the packet (if any). + \param _tags An initialized #OpusTags structure. + \param _data A buffer of binary data to append after the encoded user + comments. + The least significant bit of the first byte of this data must + be set (to ensure the data is preserved by other editors). + \param _len The number of bytes of binary data to append. + This may be zero to remove any existing binary suffix data. + \return 0 on success, or a negative value on error. + \retval #OP_EINVAL \a _len was negative, or \a _len was positive but + \a _data was NULL or the least significant + bit of the first byte was not set. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_set_binary_suffix(OpusTags *_tags, + const unsigned char *_data,int _len) OP_ARG_NONNULL(1); + +/**Look up a comment value by its tag. + \param _tags An initialized #OpusTags structure. + \param _tag The tag to look up. + \param _count The instance of the tag. + The same tag can appear multiple times, each with a distinct + value, so an index is required to retrieve them all. + The order in which these values appear is significant and + should be preserved. + Use opus_tags_query_count() to get the legal range for the + \a _count parameter. + \return A pointer to the queried tag's value. + This points directly to data in the #OpusTags structure. + It should not be modified or freed by the application, and + modifications to the structure may invalidate the pointer. + \retval NULL If no matching tag is found.*/ +const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Look up the number of instances of a tag. + Call this first when querying for a specific tag and then iterate over the + number of instances with separate calls to opus_tags_query() to retrieve + all the values for that tag in order. + \param _tags An initialized #OpusTags structure. + \param _tag The tag to look up. + \return The number of instances of this particular tag.*/ +int opus_tags_query_count(const OpusTags *_tags,const char *_tag) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Retrieve the binary suffix data at the end of the packet (if any). + \param _tags An initialized #OpusTags structure. + \param[out] _len Returns the number of bytes of binary suffix data returned. + \return A pointer to the binary suffix data, or NULL if none + was present.*/ +const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags, + int *_len) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Get the album gain from an R128_ALBUM_GAIN tag, if one was specified. + This searches for the first R128_ALBUM_GAIN tag with a valid signed, + 16-bit decimal integer value and returns the value. + This routine is exposed merely for convenience for applications which wish + to do something special with the album gain (i.e., display it). + If you simply wish to apply the album gain instead of the header gain, you + can use op_set_gain_offset() with an #OP_ALBUM_GAIN type and no offset. + \param _tags An initialized #OpusTags structure. + \param[out] _gain_q8 The album gain, in 1/256ths of a dB. + This will lie in the range [-32768,32767], and should + be applied in addition to the header gain. + On error, no value is returned, and the previous + contents remain unchanged. + \return 0 on success, or a negative value on error. + \retval #OP_FALSE There was no album gain available in the given tags.*/ +int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Get the track gain from an R128_TRACK_GAIN tag, if one was specified. + This searches for the first R128_TRACK_GAIN tag with a valid signed, + 16-bit decimal integer value and returns the value. + This routine is exposed merely for convenience for applications which wish + to do something special with the track gain (i.e., display it). + If you simply wish to apply the track gain instead of the header gain, you + can use op_set_gain_offset() with an #OP_TRACK_GAIN type and no offset. + \param _tags An initialized #OpusTags structure. + \param[out] _gain_q8 The track gain, in 1/256ths of a dB. + This will lie in the range [-32768,32767], and should + be applied in addition to the header gain. + On error, no value is returned, and the previous + contents remain unchanged. + \return 0 on success, or a negative value on error. + \retval #OP_FALSE There was no track gain available in the given tags.*/ +int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Clears the #OpusTags structure. + This should be called on an #OpusTags structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _tags The #OpusTags structure to clear.*/ +void opus_tags_clear(OpusTags *_tags) OP_ARG_NONNULL(1); + +/**Check if \a _comment is an instance of a \a _tag_name tag. + \see opus_tagncompare + \param _tag_name A NUL-terminated, case-insensitive, ASCII string containing + the name of the tag to check for (without the terminating + '=' character). + \param _comment The comment string to check. + \return An integer less than, equal to, or greater than zero if \a _comment + is found respectively, to be less than, to match, or be greater + than a "tag=value" string whose tag matches \a _tag_name.*/ +int opus_tagcompare(const char *_tag_name,const char *_comment); + +/**Check if \a _comment is an instance of a \a _tag_name tag. + This version is slightly more efficient than opus_tagcompare() if the length + of the tag name is already known (e.g., because it is a constant). + \see opus_tagcompare + \param _tag_name A case-insensitive ASCII string containing the name of the + tag to check for (without the terminating '=' character). + \param _tag_len The number of characters in the tag name. + This must be non-negative. + \param _comment The comment string to check. + \return An integer less than, equal to, or greater than zero if \a _comment + is found respectively, to be less than, to match, or be greater + than a "tag=value" string whose tag matches the first \a _tag_len + characters of \a _tag_name.*/ +int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment); + +/**Parse a single METADATA_BLOCK_PICTURE tag. + This decodes the BASE64-encoded content of the tag and returns a structure + with the MIME type, description, image parameters (if known), and the + compressed image data. + If the MIME type indicates the presence of an image format we recognize + (JPEG, PNG, or GIF) and the actual image data contains the magic signature + associated with that format, then the OpusPictureTag::format field will be + set to the corresponding format. + This is provided as a convenience to avoid requiring applications to parse + the MIME type and/or do their own format detection for the commonly used + formats. + In this case, we also attempt to extract the image parameters directly from + the image data (overriding any that were present in the tag, which the + specification says applications are not meant to rely on). + The application must still provide its own support for actually decoding the + image data and, if applicable, retrieving that data from URLs. + \param[out] _pic Returns the parsed picture data. + No sanitation is done on the type, MIME type, or + description fields, so these might return invalid values. + The contents of this structure are left unmodified on + failure. + \param _tag The METADATA_BLOCK_PICTURE tag contents. + The leading "METADATA_BLOCK_PICTURE=" portion is optional, + to allow the function to be used on either directly on the + values in OpusTags::user_comments or on the return value + of opus_tags_query(). + \return 0 on success or a negative value on error. + \retval #OP_ENOTFORMAT The METADATA_BLOCK_PICTURE contents were not valid. + \retval #OP_EFAULT There was not enough memory to store the picture tag + contents.*/ +OP_WARN_UNUSED_RESULT int opus_picture_tag_parse(OpusPictureTag *_pic, + const char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Initializes an #OpusPictureTag structure. + This should be called on a freshly allocated #OpusPictureTag structure + before attempting to use it. + \param _pic The #OpusPictureTag structure to initialize.*/ +void opus_picture_tag_init(OpusPictureTag *_pic) OP_ARG_NONNULL(1); + +/**Clears the #OpusPictureTag structure. + This should be called on an #OpusPictureTag structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _pic The #OpusPictureTag structure to clear.*/ +void opus_picture_tag_clear(OpusPictureTag *_pic) OP_ARG_NONNULL(1); + +/*@}*/ + +/*@}*/ + +/**\defgroup url_options URL Reading Options*/ +/*@{*/ +/**\name URL reading options + Options for op_url_stream_create() and associated functions. + These allow you to provide proxy configuration parameters, skip SSL + certificate checks, etc. + Options are processed in order, and if the same option is passed multiple + times, only the value specified by the last occurrence has an effect + (unless otherwise specified). + They may be expanded in the future.*/ +/*@{*/ + +/**@cond PRIVATE*/ + +/*These are the raw numbers used to define the request codes. + They should not be used directly.*/ +#define OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST (6464) +#define OP_HTTP_PROXY_HOST_REQUEST (6528) +#define OP_HTTP_PROXY_PORT_REQUEST (6592) +#define OP_HTTP_PROXY_USER_REQUEST (6656) +#define OP_HTTP_PROXY_PASS_REQUEST (6720) +#define OP_GET_SERVER_INFO_REQUEST (6784) + +#define OP_URL_OPT(_request) ((char *)(_request)) + +/*These macros trigger compilation errors or warnings if the wrong types are + provided to one of the URL options.*/ +#define OP_CHECK_INT(_x) ((void)((_x)==(opus_int32)0),(opus_int32)(_x)) +#define OP_CHECK_CONST_CHAR_PTR(_x) ((_x)+((_x)-(const char *)(_x))) +#define OP_CHECK_SERVER_INFO_PTR(_x) ((_x)+((_x)-(OpusServerInfo *)(_x))) + +/**@endcond*/ + +/**HTTP/Shoutcast/Icecast server information associated with a URL.*/ +struct OpusServerInfo{ + /**The name of the server (icy-name/ice-name). + This is NULL if there was no icy-name or + ice-name header.*/ + char *name; + /**A short description of the server (icy-description/ice-description). + This is NULL if there was no icy-description or + ice-description header.*/ + char *description; + /**The genre the server falls under (icy-genre/ice-genre). + This is NULL if there was no icy-genre or + ice-genre header.*/ + char *genre; + /**The homepage for the server (icy-url/ice-url). + This is NULL if there was no icy-url or + ice-url header.*/ + char *url; + /**The software used by the origin server (Server). + This is NULL if there was no Server header.*/ + char *server; + /**The media type of the entity sent to the recepient (Content-Type). + This is NULL if there was no Content-Type + header.*/ + char *content_type; + /**The nominal stream bitrate in kbps (icy-br/ice-bitrate). + This is -1 if there was no icy-br or + ice-bitrate header.*/ + opus_int32 bitrate_kbps; + /**Flag indicating whether the server is public (1) or not + (0) (icy-pub/ice-public). + This is -1 if there was no icy-pub or + ice-public header.*/ + int is_public; + /**Flag indicating whether the server is using HTTPS instead of HTTP. + This is 0 unless HTTPS is being used. + This may not match the protocol used in the original URL if there were + redirections.*/ + int is_ssl; +}; + +/**Initializes an #OpusServerInfo structure. + All fields are set as if the corresponding header was not available. + \param _info The #OpusServerInfo structure to initialize. + \note If you use this function, you must link against libopusurl.*/ +void opus_server_info_init(OpusServerInfo *_info) OP_ARG_NONNULL(1); + +/**Clears the #OpusServerInfo structure. + This should be called on an #OpusServerInfo structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _info The #OpusServerInfo structure to clear. + \note If you use this function, you must link against libopusurl.*/ +void opus_server_info_clear(OpusServerInfo *_info) OP_ARG_NONNULL(1); + +/**Skip the certificate check when connecting via TLS/SSL (https). + \param _b opus_int32: Whether or not to skip the certificate + check. + The check will be skipped if \a _b is non-zero, and will not be + skipped if \a _b is zero. + \hideinitializer*/ +#define OP_SSL_SKIP_CERTIFICATE_CHECK(_b) \ + OP_URL_OPT(OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST),OP_CHECK_INT(_b) + +/**Proxy connections through the given host. + If no port is specified via #OP_HTTP_PROXY_PORT, the port number defaults + to 8080 (http-alt). + All proxy parameters are ignored for non-http and non-https URLs. + \param _host const char *: The proxy server hostname. + This may be NULL to disable the use of a proxy + server. + \hideinitializer*/ +#define OP_HTTP_PROXY_HOST(_host) \ + OP_URL_OPT(OP_HTTP_PROXY_HOST_REQUEST),OP_CHECK_CONST_CHAR_PTR(_host) + +/**Use the given port when proxying connections. + This option only has an effect if #OP_HTTP_PROXY_HOST is specified with a + non-NULL \a _host. + If this option is not provided, the proxy port number defaults to 8080 + (http-alt). + All proxy parameters are ignored for non-http and non-https URLs. + \param _port opus_int32: The proxy server port. + This must be in the range 0...65535 (inclusive), or the + URL function this is passed to will fail. + \hideinitializer*/ +#define OP_HTTP_PROXY_PORT(_port) \ + OP_URL_OPT(OP_HTTP_PROXY_PORT_REQUEST),OP_CHECK_INT(_port) + +/**Use the given user name for authentication when proxying connections. + All proxy parameters are ignored for non-http and non-https URLs. + \param _user const char *: The proxy server user name. + This may be NULL to disable proxy + authentication. + A non-NULL value only has an effect + if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_PASS + are also specified with non-NULL + arguments. + \hideinitializer*/ +#define OP_HTTP_PROXY_USER(_user) \ + OP_URL_OPT(OP_HTTP_PROXY_USER_REQUEST),OP_CHECK_CONST_CHAR_PTR(_user) + +/**Use the given password for authentication when proxying connections. + All proxy parameters are ignored for non-http and non-https URLs. + \param _pass const char *: The proxy server password. + This may be NULL to disable proxy + authentication. + A non-NULL value only has an effect + if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_USER + are also specified with non-NULL + arguments. + \hideinitializer*/ +#define OP_HTTP_PROXY_PASS(_pass) \ + OP_URL_OPT(OP_HTTP_PROXY_PASS_REQUEST),OP_CHECK_CONST_CHAR_PTR(_pass) + +/**Parse information about the streaming server (if any) and return it. + Very little validation is done. + In particular, OpusServerInfo::url may not be a valid URL, + OpusServerInfo::bitrate_kbps may not really be in kbps, and + OpusServerInfo::content_type may not be a valid MIME type. + The character set of the string fields is not specified anywhere, and should + not be assumed to be valid UTF-8. + \param _info OpusServerInfo *: Returns information about the server. + If there is any error opening the stream, the + contents of this structure remain + unmodified. + On success, fills in the structure with the + server information that was available, if + any. + After a successful return, the contents of + this structure should be freed by calling + opus_server_info_clear(). + \hideinitializer*/ +#define OP_GET_SERVER_INFO(_info) \ + OP_URL_OPT(OP_GET_SERVER_INFO_REQUEST),OP_CHECK_SERVER_INFO_PTR(_info) + +/*@}*/ +/*@}*/ + +/**\defgroup stream_callbacks Abstract Stream Reading Interface*/ +/*@{*/ +/**\name Functions for reading from streams + These functions define the interface used to read from and seek in a stream + of data. + A stream does not need to implement seeking, but the decoder will not be + able to seek if it does not do so. + These functions also include some convenience routines for working with + standard FILE pointers, complete streams stored in a single + block of memory, or URLs.*/ +/*@{*/ + +/**Reads up to \a _nbytes bytes of data from \a _stream. + \param _stream The stream to read from. + \param[out] _ptr The buffer to store the data in. + \param _nbytes The maximum number of bytes to read. + This function may return fewer, though it will not + return zero unless it reaches end-of-file. + \return The number of bytes successfully read, or a negative value on + error.*/ +typedef int (*op_read_func)(void *_stream,unsigned char *_ptr,int _nbytes); + +/**Sets the position indicator for \a _stream. + The new position, measured in bytes, is obtained by adding \a _offset + bytes to the position specified by \a _whence. + If \a _whence is set to SEEK_SET, SEEK_CUR, or + SEEK_END, the offset is relative to the start of the stream, + the current position indicator, or end-of-file, respectively. + \retval 0 Success. + \retval -1 Seeking is not supported or an error occurred. + errno need not be set.*/ +typedef int (*op_seek_func)(void *_stream,opus_int64 _offset,int _whence); + +/**Obtains the current value of the position indicator for \a _stream. + \return The current position indicator.*/ +typedef opus_int64 (*op_tell_func)(void *_stream); + +/**Closes the underlying stream. + \retval 0 Success. + \retval EOF An error occurred. + errno need not be set.*/ +typedef int (*op_close_func)(void *_stream); + +/**The callbacks used to access non-FILE stream resources. + The function prototypes are basically the same as for the stdio functions + fread(), fseek(), ftell(), and + fclose(). + The differences are that the FILE * arguments have been + replaced with a void *, which is to be used as a pointer to + whatever internal data these functions might need, that #seek and #tell + take and return 64-bit offsets, and that #seek must return -1 if + the stream is unseekable.*/ +struct OpusFileCallbacks{ + /**Used to read data from the stream. + This must not be NULL.*/ + op_read_func read; + /**Used to seek in the stream. + This may be NULL if seeking is not implemented.*/ + op_seek_func seek; + /**Used to return the current read position in the stream. + This may be NULL if seeking is not implemented.*/ + op_tell_func tell; + /**Used to close the stream when the decoder is freed. + This may be NULL to leave the stream open.*/ + op_close_func close; +}; + +/**Opens a stream with fopen() and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + FILE * must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _path The path to the file to open. + On Windows, this string must be UTF-8 (to allow access to + files whose names cannot be represented in the current + MBCS code page). + All other systems use the native character encoding. + \param _mode The mode to open the file in. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_fopen(OpusFileCallbacks *_cb, + const char *_path,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) + OP_ARG_NONNULL(3); + +/**Opens a stream with fdopen() and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + FILE * must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _fd The file descriptor to open. + \param _mode The mode to open the file in. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_fdopen(OpusFileCallbacks *_cb, + int _fd,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(3); + +/**Opens a stream with freopen() and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + FILE * must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _path The path to the file to open. + On Windows, this string must be UTF-8 (to allow access + to files whose names cannot be represented in the + current MBCS code page). + All other systems use the native character encoding. + \param _mode The mode to open the file in. + \param _stream A stream previously returned by op_fopen(), op_fdopen(), + or op_freopen(). + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_freopen(OpusFileCallbacks *_cb, + const char *_path,const char *_mode,void *_stream) OP_ARG_NONNULL(1) + OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) OP_ARG_NONNULL(4); + +/**Creates a stream that reads from the given block of memory. + This block of memory must contain the complete stream to decode. + This is useful for caching small streams (e.g., sound effects) in RAM. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will be + filled in here. + \param _data The block of memory to read from. + \param _size The size of the block of memory. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_mem_stream_create(OpusFileCallbacks *_cb, + const unsigned char *_data,size_t _size) OP_ARG_NONNULL(1); + +/**Creates a stream that reads from the given URL. + This function behaves identically to op_url_stream_create(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the va_end macro, and because it invokes the + va_arg macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against libopusurl. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will + be filled in here. + \param _url The URL to read from. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[in,out] _ap A list of the \ref url_options "optional flags" to use. + This is a variable-length list of options terminated + with NULL. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_url_stream_vcreate(OpusFileCallbacks *_cb, + const char *_url,va_list _ap) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Creates a stream that reads from the given URL. + \note If you use this function, you must link against libopusurl. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will be + filled in here. + \param _url The URL to read from. + Currently only the , , and schemes + are supported. + Both and may be disabled at compile time, + in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, before + passing them to this function. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated with + NULL. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_url_stream_create(OpusFileCallbacks *_cb, + const char *_url,...) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_open_close Opening and Closing*/ +/*@{*/ +/**\name Functions for opening and closing streams + + These functions allow you to test a stream to see if it is Opus, open it, + and close it. + Several flavors are provided for each of the built-in stream types, plus a + more general version which takes a set of application-provided callbacks.*/ +/*@{*/ + +/**Test to see if this is an Opus stream. + For good results, you will need at least 57 bytes (for a pure Opus-only + stream). + Something like 512 bytes will give more reliable results for multiplexed + streams. + This function is meant to be a quick-rejection filter. + Its purpose is not to guarantee that a stream is a valid Opus stream, but to + ensure that it looks enough like Opus that it isn't going to be recognized + as some other format (except possibly an Opus stream that is also + multiplexed with other codecs, such as video). + \param[out] _head The parsed ID header contents. + You may pass NULL if you do not need + this information. + If the function fails, the contents of this structure + remain untouched. + \param _initial_data An initial buffer of data from the start of the + stream. + \param _initial_bytes The number of bytes in \a _initial_data. + \return 0 if the data appears to be Opus, or a negative value on error. + \retval #OP_FALSE There was not enough data to tell if this was an Opus + stream or not. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL The stream used a feature that is not implemented, + such as an unsupported channel family. + \retval #OP_ENOTFORMAT If the data did not contain a recognizable ID + header for an Opus stream. + \retval #OP_EVERSION If the version field signaled a version this library + does not know how to parse. + \retval #OP_EBADHEADER The ID header was not properly formatted or contained + illegal values.*/ +int op_test(OpusHead *_head, + const unsigned char *_initial_data,size_t _initial_bytes); + +/**Open a stream from the given file path. + \param _path The path to the file to open. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + The failure code will be #OP_EFAULT if the file could not + be opened, or one of the other failure codes from + op_open_callbacks() otherwise. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_file(const char *_path,int *_error) + OP_ARG_NONNULL(1); + +/**Open a stream from a memory buffer. + \param _data The memory buffer to open. + \param _size The number of bytes in the buffer. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_memory(const unsigned char *_data, + size_t _size,int *_error); + +/**Open a stream from a URL. + This function behaves identically to op_open_url(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the va_end macro, and because it invokes the + va_arg macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against libopusurl. + \param _url The URL to open. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always + fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, + with internationalized domain names encoded in + punycode, before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \param[in,out] _ap A list of the \ref url_options "optional flags" to + use. + This is a variable-length list of options terminated + with NULL. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_vopen_url(const char *_url, + int *_error,va_list _ap) OP_ARG_NONNULL(1); + +/**Open a stream from a URL. + \note If you use this function, you must link against libopusurl. + \param _url The URL to open. + Currently only the , , and schemes + are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated with + NULL. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_url(const char *_url, + int *_error,...) OP_ARG_NONNULL(1); + +/**Open a stream using the given set of callbacks to access it. + \param _stream The stream to read from (e.g., a FILE *). + This value will be passed verbatim as the first + argument to all of the callbacks. + \param _cb The callbacks with which to access the stream. + read() must + be implemented. + seek() and + tell() may + be NULL, or may always return -1 to + indicate a stream is unseekable, but if + seek() is + implemented and succeeds on a particular stream, then + tell() must + also. + close() may + be NULL, but if it is not, it will be + called when the \c OggOpusFile is destroyed by + op_free(). + It will not be called if op_open_callbacks() fails + with an error. + \param _initial_data An initial buffer of data from the start of the + stream. + Applications can read some number of bytes from the + start of the stream to help identify this as an Opus + stream, and then provide them here to allow the + stream to be opened, even if it is unseekable. + \param _initial_bytes The number of bytes in \a _initial_data. + If the stream is seekable, its current position (as + reported by + tell() + at the start of this function) must be equal to + \a _initial_bytes. + Otherwise, seeking to absolute positions will + generate inconsistent results. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + The failure code will be one of +
+
#OP_EREAD
+
An underlying read, seek, or tell operation + failed when it should have succeeded, or we failed + to find data in the stream we had seen before.
+
#OP_EFAULT
+
There was a memory allocation failure, or an + internal library error.
+
#OP_EIMPL
+
The stream used a feature that is not + implemented, such as an unsupported channel + family.
+
#OP_EINVAL
+
seek() + was implemented and succeeded on this source, but + tell() + did not, or the starting position indicator was + not equal to \a _initial_bytes.
+
#OP_ENOTFORMAT
+
The stream contained a link that did not have + any logical Opus streams in it.
+
#OP_EBADHEADER
+
A required header packet was not properly + formatted, contained illegal values, or was missing + altogether.
+
#OP_EVERSION
+
An ID header contained an unrecognized version + number.
+
#OP_EBADLINK
+
We failed to find data we had seen before after + seeking.
+
#OP_EBADTIMESTAMP
+
The first or last timestamp in a link failed + basic validity checks.
+
+ \return A freshly opened \c OggOpusFile, or NULL on error. + libopusfile does not take ownership of the stream + if the call fails. + The calling application is responsible for closing the stream if + this call returns an error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_callbacks(void *_stream, + const OpusFileCallbacks *_cb,const unsigned char *_initial_data, + size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2); + +/**Partially open a stream from the given file path. + \see op_test_callbacks + \param _path The path to the file to open. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + The failure code will be #OP_EFAULT if the file could not + be opened, or one of the other failure codes from + op_open_callbacks() otherwise. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_file(const char *_path,int *_error) + OP_ARG_NONNULL(1); + +/**Partially open a stream from a memory buffer. + \see op_test_callbacks + \param _data The memory buffer to open. + \param _size The number of bytes in the buffer. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_memory(const unsigned char *_data, + size_t _size,int *_error); + +/**Partially open a stream from a URL. + This function behaves identically to op_test_url(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the va_end macro, and because it invokes the + va_arg macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against libopusurl. + \see op_test_url + \see op_test_callbacks + \param _url The URL to open. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always + fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, + with internationalized domain names encoded in + punycode, before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \param[in,out] _ap A list of the \ref url_options "optional flags" to + use. + This is a variable-length list of options terminated + with NULL. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_vtest_url(const char *_url, + int *_error,va_list _ap) OP_ARG_NONNULL(1); + +/**Partially open a stream from a URL. + \note If you use this function, you must link against libopusurl. + \see op_test_callbacks + \param _url The URL to open. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure + codes. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated + with NULL. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_url(const char *_url, + int *_error,...) OP_ARG_NONNULL(1); + +/**Partially open a stream using the given set of callbacks to access it. + This tests for Opusness and loads the headers for the first link. + It does not seek (although it tests for seekability). + You can query a partially open stream for the few pieces of basic + information returned by op_serialno(), op_channel_count(), op_head(), and + op_tags() (but only for the first link). + You may also determine if it is seekable via a call to op_seekable(). + You cannot read audio from the stream, seek, get the size or duration, + get information from links other than the first one, or even get the total + number of links until you finish opening the stream with op_test_open(). + If you do not need to do any of these things, you can dispose of it with + op_free() instead. + + This function is provided mostly to simplify porting existing code that used + libvorbisfile. + For new code, you are likely better off using op_test() instead, which + is less resource-intensive, requires less data to succeed, and imposes a + hard limit on the amount of data it examines (important for unseekable + streams, where all such data must be buffered until you are sure of the + stream type). + \param _stream The stream to read from (e.g., a FILE *). + This value will be passed verbatim as the first + argument to all of the callbacks. + \param _cb The callbacks with which to access the stream. + read() must + be implemented. + seek() and + tell() may + be NULL, or may always return -1 to + indicate a stream is unseekable, but if + seek() is + implemented and succeeds on a particular stream, then + tell() must + also. + close() may + be NULL, but if it is not, it will be + called when the \c OggOpusFile is destroyed by + op_free(). + It will not be called if op_open_callbacks() fails + with an error. + \param _initial_data An initial buffer of data from the start of the + stream. + Applications can read some number of bytes from the + start of the stream to help identify this as an Opus + stream, and then provide them here to allow the + stream to be tested more thoroughly, even if it is + unseekable. + \param _initial_bytes The number of bytes in \a _initial_data. + If the stream is seekable, its current position (as + reported by + tell() + at the start of this function) must be equal to + \a _initial_bytes. + Otherwise, seeking to absolute positions will + generate inconsistent results. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \return A partially opened \c OggOpusFile, or NULL on error. + libopusfile does not take ownership of the stream + if the call fails. + The calling application is responsible for closing the stream if + this call returns an error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_callbacks(void *_stream, + const OpusFileCallbacks *_cb,const unsigned char *_initial_data, + size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2); + +/**Finish opening a stream partially opened with op_test_callbacks() or one of + the associated convenience functions. + If this function fails, you are still responsible for freeing the + \c OggOpusFile with op_free(). + \param _of The \c OggOpusFile to finish opening. + \return 0 on success, or a negative value on error. + \retval #OP_EREAD An underlying read, seek, or tell operation failed + when it should have succeeded. + \retval #OP_EFAULT There was a memory allocation failure, or an + internal library error. + \retval #OP_EIMPL The stream used a feature that is not implemented, + such as an unsupported channel family. + \retval #OP_EINVAL The stream was not partially opened with + op_test_callbacks() or one of the associated + convenience functions. + \retval #OP_ENOTFORMAT The stream contained a link that did not have any + logical Opus streams in it. + \retval #OP_EBADHEADER A required header packet was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An ID header contained an unrecognized version + number. + \retval #OP_EBADLINK We failed to find data we had seen before after + seeking. + \retval #OP_EBADTIMESTAMP The first or last timestamp in a link failed basic + validity checks.*/ +int op_test_open(OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Release all memory used by an \c OggOpusFile. + \param _of The \c OggOpusFile to free.*/ +void op_free(OggOpusFile *_of); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_info Stream Information*/ +/*@{*/ +/**\name Functions for obtaining information about streams + + These functions allow you to get basic information about a stream, including + seekability, the number of links (for chained streams), plus the size, + duration, bitrate, header parameters, and meta information for each link + (or, where available, the stream as a whole). + Some of these (size, duration) are only available for seekable streams. + You can also query the current stream position, link, and playback time, + and instantaneous bitrate during playback. + + Some of these functions may be used successfully on the partially open + streams returned by op_test_callbacks() or one of the associated + convenience functions. + Their documention will indicate so explicitly.*/ +/*@{*/ + +/**Returns whether or not the stream being read is seekable. + This is true if +
    +
  1. The seek() and + tell() callbacks are both + non-NULL,
  2. +
  3. The seek() callback was + successfully executed at least once, and
  4. +
  5. The tell() callback was + successfully able to report the position indicator afterwards.
  6. +
+ This function may be called on partially-opened streams. + \param _of The \c OggOpusFile whose seekable status is to be returned. + \return A non-zero value if seekable, and 0 if unseekable.*/ +int op_seekable(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Returns the number of links in this chained stream. + This function may be called on partially-opened streams, but it will always + return 1. + The actual number of links is not known until the stream is fully opened. + \param _of The \c OggOpusFile from which to retrieve the link count. + \return For fully-open seekable streams, this returns the total number of + links in the whole stream, which will be at least 1. + For partially-open or unseekable streams, this always returns 1.*/ +int op_link_count(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Get the serial number of the given link in a (possibly-chained) Ogg Opus + stream. + This function may be called on partially-opened streams, but it will always + return the serial number of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the serial number. + \param _li The index of the link whose serial number should be retrieved. + Use a negative number to get the serial number of the current + link. + \return The serial number of the given link. + If \a _li is greater than the total number of links, this returns + the serial number of the last link. + If the stream is not seekable, this always returns the serial number + of the current link.*/ +opus_uint32 op_serialno(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the channel count of the given link in a (possibly-chained) Ogg Opus + stream. + This is equivalent to op_head(_of,_li)->channel_count, but + is provided for convenience. + This function may be called on partially-opened streams, but it will always + return the channel count of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the channel count. + \param _li The index of the link whose channel count should be retrieved. + Use a negative number to get the channel count of the current + link. + \return The channel count of the given link. + If \a _li is greater than the total number of links, this returns + the channel count of the last link. + If the stream is not seekable, this always returns the channel count + of the current link.*/ +int op_channel_count(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the total (compressed) size of the stream, or of an individual link in + a (possibly-chained) Ogg Opus stream, including all headers and Ogg muxing + overhead. + \warning If the Opus stream (or link) is concurrently multiplexed with other + logical streams (e.g., video), this returns the size of the entire stream + (or link), not just the number of bytes in the first logical Opus stream. + Returning the latter would require scanning the entire file. + \param _of The \c OggOpusFile from which to retrieve the compressed size. + \param _li The index of the link whose compressed size should be computed. + Use a negative number to get the compressed size of the entire + stream. + \return The compressed size of the entire stream if \a _li is negative, the + compressed size of link \a _li if it is non-negative, or a negative + value on error. + The compressed size of the entire stream may be smaller than that + of the underlying stream if trailing garbage was detected in the + file. + \retval #OP_EINVAL The stream is not seekable (so we can't know the length), + \a _li wasn't less than the total number of links in + the stream, or the stream was only partially open.*/ +opus_int64 op_raw_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the total PCM length (number of samples at 48 kHz) of the stream, or of + an individual link in a (possibly-chained) Ogg Opus stream. + Users looking for op_time_total() should use op_pcm_total() + instead. + Because timestamps in Opus are fixed at 48 kHz, there is no need for a + separate function to convert this to seconds (and leaving it out avoids + introducing floating point to the API, for those that wish to avoid it). + \param _of The \c OggOpusFile from which to retrieve the PCM offset. + \param _li The index of the link whose PCM length should be computed. + Use a negative number to get the PCM length of the entire stream. + \return The PCM length of the entire stream if \a _li is negative, the PCM + length of link \a _li if it is non-negative, or a negative value on + error. + \retval #OP_EINVAL The stream is not seekable (so we can't know the length), + \a _li wasn't less than the total number of links in + the stream, or the stream was only partially open.*/ +ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the ID header information for the given link in a (possibly chained) Ogg + Opus stream. + This function may be called on partially-opened streams, but it will always + return the ID header information of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the ID header + information. + \param _li The index of the link whose ID header information should be + retrieved. + Use a negative number to get the ID header information of the + current link. + For an unseekable stream, \a _li is ignored, and the ID header + information for the current link is always returned, if + available. + \return The contents of the ID header for the given link.*/ +const OpusHead *op_head(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the comment header information for the given link in a (possibly + chained) Ogg Opus stream. + This function may be called on partially-opened streams, but it will always + return the tags from the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the comment header + information. + \param _li The index of the link whose comment header information should be + retrieved. + Use a negative number to get the comment header information of + the current link. + For an unseekable stream, \a _li is ignored, and the comment + header information for the current link is always returned, if + available. + \return The contents of the comment header for the given link, or + NULL if this is an unseekable stream that encountered + an invalid link.*/ +const OpusTags *op_tags(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Retrieve the index of the current link. + This is the link that produced the data most recently read by + op_read_float() or its associated functions, or, after a seek, the link + that the seek target landed in. + Reading more data may advance the link index (even on the first read after a + seek). + \param _of The \c OggOpusFile from which to retrieve the current link index. + \return The index of the current link on success, or a negative value on + failure. + For seekable streams, this is a number between 0 (inclusive) and the + value returned by op_link_count() (exclusive). + For unseekable streams, this value starts at 0 and increments by one + each time a new link is encountered (even though op_link_count() + always returns 1). + \retval #OP_EINVAL The stream was only partially open.*/ +int op_current_link(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Computes the bitrate of the stream, or of an individual link in a + (possibly-chained) Ogg Opus stream. + The stream must be seekable to compute the bitrate. + For unseekable streams, use op_bitrate_instant() to get periodic estimates. + \warning If the Opus stream (or link) is concurrently multiplexed with other + logical streams (e.g., video), this uses the size of the entire stream (or + link) to compute the bitrate, not just the number of bytes in the first + logical Opus stream. + Returning the latter requires scanning the entire file, but this may be done + by decoding the whole file and calling op_bitrate_instant() once at the + end. + Install a trivial decoding callback with op_set_decode_callback() if you + wish to skip actual decoding during this process. + \param _of The \c OggOpusFile from which to retrieve the bitrate. + \param _li The index of the link whose bitrate should be computed. + Use a negative number to get the bitrate of the whole stream. + \return The bitrate on success, or a negative value on error. + \retval #OP_EINVAL The stream was only partially open, the stream was not + seekable, or \a _li was larger than the number of + links.*/ +opus_int32 op_bitrate(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Compute the instantaneous bitrate, measured as the ratio of bits to playable + samples decoded since a) the last call to op_bitrate_instant(), b) the last + seek, or c) the start of playback, whichever was most recent. + This will spike somewhat after a seek or at the start/end of a chain + boundary, as pre-skip, pre-roll, and end-trimming causes samples to be + decoded but not played. + \param _of The \c OggOpusFile from which to retrieve the bitrate. + \return The bitrate, in bits per second, or a negative value on error. + \retval #OP_FALSE No data has been decoded since any of the events + described above. + \retval #OP_EINVAL The stream was only partially open.*/ +opus_int32 op_bitrate_instant(OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Obtain the current value of the position indicator for \a _of. + \param _of The \c OggOpusFile from which to retrieve the position indicator. + \return The byte position that is currently being read from. + \retval #OP_EINVAL The stream was only partially open.*/ +opus_int64 op_raw_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Obtain the PCM offset of the next sample to be read. + If the stream is not properly timestamped, this might not increment by the + proper amount between reads, or even return monotonically increasing + values. + \param _of The \c OggOpusFile from which to retrieve the PCM offset. + \return The PCM offset of the next sample to be read. + \retval #OP_EINVAL The stream was only partially open.*/ +ogg_int64_t op_pcm_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_seeking Seeking*/ +/*@{*/ +/**\name Functions for seeking in Opus streams + + These functions let you seek in Opus streams, if the underlying stream + support it. + Seeking is implemented for all built-in stream I/O routines, though some + individual streams may not be seekable (pipes, live HTTP streams, or HTTP + streams from a server that does not support Range requests). + + op_raw_seek() is the fastest: it is guaranteed to perform at most one + physical seek, but, since the target is a byte position, makes no guarantee + how close to a given time it will come. + op_pcm_seek() provides sample-accurate seeking. + The number of physical seeks it requires is still quite small (often 1 or + 2, even in highly variable bitrate streams). + + Seeking in Opus requires decoding some pre-roll amount before playback to + allow the internal state to converge (as if recovering from packet loss). + This is handled internally by libopusfile, but means there is + little extra overhead for decoding up to the exact position requested + (since it must decode some amount of audio anyway). + It also means that decoding after seeking may not return exactly the same + values as would be obtained by decoding the stream straight through. + However, such differences are expected to be smaller than the loss + introduced by Opus's lossy compression.*/ +/*@{*/ + +/**Seek to a byte offset relative to the compressed data. + This also scans packets to update the PCM cursor. + It will cross a logical bitstream boundary, but only if it can't get any + packets out of the tail of the link to which it seeks. + \param _of The \c OggOpusFile in which to seek. + \param _byte_offset The byte position to seek to. + This must be between 0 and #op_raw_total(\a _of,\c -1) + (inclusive). + \return 0 on success, or a negative error code on failure. + \retval #OP_EREAD The underlying seek operation failed. + \retval #OP_EINVAL The stream was only partially open, or the target was + outside the valid range for the stream. + \retval #OP_ENOSEEK This stream is not seekable. + \retval #OP_EBADLINK Failed to initialize a decoder for a stream for an + unknown reason.*/ +int op_raw_seek(OggOpusFile *_of,opus_int64 _byte_offset) OP_ARG_NONNULL(1); + +/**Seek to the specified PCM offset, such that decoding will begin at exactly + the requested position. + \param _of The \c OggOpusFile in which to seek. + \param _pcm_offset The PCM offset to seek to. + This is in samples at 48 kHz relative to the start of the + stream. + \return 0 on success, or a negative value on error. + \retval #OP_EREAD An underlying read or seek operation failed. + \retval #OP_EINVAL The stream was only partially open, or the target was + outside the valid range for the stream. + \retval #OP_ENOSEEK This stream is not seekable. + \retval #OP_EBADLINK We failed to find data we had seen before, or the + bitstream structure was sufficiently malformed that + seeking to the target destination was impossible.*/ +int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_decoding Decoding*/ +/*@{*/ +/**\name Functions for decoding audio data + + These functions retrieve actual decoded audio data from the stream. + The general functions, op_read() and op_read_float() return 16-bit or + floating-point output, both using native endian ordering. + The number of channels returned can change from link to link in a chained + stream. + There are special functions, op_read_stereo() and op_read_float_stereo(), + which always output two channels, to simplify applications which do not + wish to handle multichannel audio. + These downmix multichannel files to two channels, so they can always return + samples in the same format for every link in a chained file. + + If the rest of your audio processing chain can handle floating point, the + floating-point routines should be preferred, as they prevent clipping and + other issues which might be avoided entirely if, e.g., you scale down the + volume at some other stage. + However, if you intend to consume 16-bit samples directly, the conversion in + libopusfile provides noise-shaping dithering and, if compiled + against libopus 1.1 or later, soft-clipping prevention. + + libopusfile can also be configured at compile time to use the + fixed-point libopus API. + If so, libopusfile's floating-point API may also be disabled. + In that configuration, nothing in libopusfile will use any + floating-point operations, to simplify support on devices without an + adequate FPU. + + \warning HTTPS streams may be be vulnerable to truncation attacks if you do + not check the error return code from op_read_float() or its associated + functions. + If the remote peer does not close the connection gracefully (with a TLS + "close notify" message), these functions will return #OP_EREAD instead of 0 + when they reach the end of the file. + If you are reading from an URL (particularly if seeking is not + supported), you should make sure to check for this error and warn the user + appropriately.*/ +/*@{*/ + +/**Indicates that the decoding callback should produce signed 16-bit + native-endian output samples.*/ +#define OP_DEC_FORMAT_SHORT (7008) +/**Indicates that the decoding callback should produce 32-bit native-endian + float samples.*/ +#define OP_DEC_FORMAT_FLOAT (7040) + +/**Indicates that the decoding callback did not decode anything, and that + libopusfile should decode normally instead.*/ +#define OP_DEC_USE_DEFAULT (6720) + +/**Called to decode an Opus packet. + This should invoke the functional equivalent of opus_multistream_decode() or + opus_multistream_decode_float(), except that it returns 0 on success + instead of the number of decoded samples (which is known a priori). + \param _ctx The application-provided callback context. + \param _decoder The decoder to use to decode the packet. + \param[out] _pcm The buffer to decode into. + This will always have enough room for \a _nchannels of + \a _nsamples samples, which should be placed into this + buffer interleaved. + \param _op The packet to decode. + This will always have its granule position set to a valid + value. + \param _nsamples The number of samples expected from the packet. + \param _nchannels The number of channels expected from the packet. + \param _format The desired sample output format. + This is either #OP_DEC_FORMAT_SHORT or + #OP_DEC_FORMAT_FLOAT. + \param _li The index of the link from which this packet was decoded. + \return A non-negative value on success, or a negative value on error. + Any error codes should be the same as those returned by + opus_multistream_decode() or opus_multistream_decode_float(). + Success codes are as follows: + \retval 0 Decoding was successful. + The application has filled the buffer with + exactly \a _nsamples*\a + _nchannels samples in the requested + format. + \retval #OP_DEC_USE_DEFAULT No decoding was done. + libopusfile should do the decoding + by itself instead.*/ +typedef int (*op_decode_cb_func)(void *_ctx,OpusMSDecoder *_decoder,void *_pcm, + const ogg_packet *_op,int _nsamples,int _nchannels,int _format,int _li); + +/**Sets the packet decode callback function. + If set, this is called once for each packet that needs to be decoded. + This can be used by advanced applications to do additional processing on the + compressed or uncompressed data. + For example, an application might save the final entropy coder state for + debugging and testing purposes, or it might apply additional filters + before the downmixing, dithering, or soft-clipping performed by + libopusfile, so long as these filters do not introduce any + latency. + + A call to this function is no guarantee that the audio will eventually be + delivered to the application. + libopusfile may discard some or all of the decoded audio data + (i.e., at the beginning or end of a link, or after a seek), however the + callback is still required to provide all of it. + \param _of The \c OggOpusFile on which to set the decode callback. + \param _decode_cb The callback function to call. + This may be NULL to disable calling the + callback. + \param _ctx The application-provided context pointer to pass to the + callback on each call.*/ +void op_set_decode_callback(OggOpusFile *_of, + op_decode_cb_func _decode_cb,void *_ctx) OP_ARG_NONNULL(1); + +/**Gain offset type that indicates that the provided offset is relative to the + header gain. + This is the default.*/ +#define OP_HEADER_GAIN (0) + +/**Gain offset type that indicates that the provided offset is relative to the + R128_ALBUM_GAIN value (if any), in addition to the header gain.*/ +#define OP_ALBUM_GAIN (3007) + +/**Gain offset type that indicates that the provided offset is relative to the + R128_TRACK_GAIN value (if any), in addition to the header gain.*/ +#define OP_TRACK_GAIN (3008) + +/**Gain offset type that indicates that the provided offset should be used as + the gain directly, without applying any the header or track gains.*/ +#define OP_ABSOLUTE_GAIN (3009) + +/**Sets the gain to be used for decoded output. + By default, the gain in the header is applied with no additional offset. + The total gain (including header gain and/or track gain, if applicable, and + this offset), will be clamped to [-32768,32767]/256 dB. + This is more than enough to saturate or underflow 16-bit PCM. + \note The new gain will not be applied to any already buffered, decoded + output. + This means you cannot change it sample-by-sample, as at best it will be + updated packet-by-packet. + It is meant for setting a target volume level, rather than applying smooth + fades, etc. + \param _of The \c OggOpusFile on which to set the gain offset. + \param _gain_type One of #OP_HEADER_GAIN, #OP_ALBUM_GAIN, + #OP_TRACK_GAIN, or #OP_ABSOLUTE_GAIN. + \param _gain_offset_q8 The gain offset to apply, in 1/256ths of a dB. + \return 0 on success or a negative value on error. + \retval #OP_EINVAL The \a _gain_type was unrecognized.*/ +int op_set_gain_offset(OggOpusFile *_of, + int _gain_type,opus_int32 _gain_offset_q8) OP_ARG_NONNULL(1); + +/**Sets whether or not dithering is enabled for 16-bit decoding. + By default, when libopusfile is compiled to use floating-point + internally, calling op_read() or op_read_stereo() will first decode to + float, and then convert to fixed-point using noise-shaping dithering. + This flag can be used to disable that dithering. + When the application uses op_read_float() or op_read_float_stereo(), or when + the library has been compiled to decode directly to fixed point, this flag + has no effect. + \param _of The \c OggOpusFile on which to enable or disable dithering. + \param _enabled A non-zero value to enable dithering, or 0 to disable it.*/ +void op_set_dither_enabled(OggOpusFile *_of,int _enabled) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream. + \note Although \a _buf_size must indicate the total number of values that + can be stored in \a _pcm, the return value is the number of samples + per channel. + This is done because +
    +
  1. The channel count cannot be known a priori (reading more samples might + advance us into the next link, with a different channel count), so + \a _buf_size cannot also be in units of samples per channel,
  2. +
  3. Returning the samples per channel matches the libopus API + as closely as we're able,
  4. +
  5. Returning the total number of values instead of samples per channel + would mean the caller would need a division to compute the samples per + channel, and might worry about the possibility of getting back samples + for some channels and not others, and
  6. +
  7. This approach is relatively fool-proof: if an application passes too + small a value to \a _buf_size, they will simply get fewer samples back, + and if they assume the return value is the total number of values, then + they will simply read too few (rather than reading too many and going + off the end of the buffer).
  8. +
+ \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed native-endian 16-bit values at 48 kHz + with a nominal range of [-32768,32767). + Multiple channels are interleaved using the + Vorbis + channel ordering. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (5760 + values per channel). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + libopusfile may return less data than + requested. + If so, there is no guarantee that the remaining data + in \a _pcm will be unmodified. + \param[out] _li The index of the link this data was decoded from. + You may pass NULL if you do not need this + information. + If this function fails (returning a negative value), + this parameter is left unset. + \return The number of samples read per channel on success, or a negative + value on failure. + The channel count can be retrieved on success by calling + op_head(_of,*_li). + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for all channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read(OggOpusFile *_of, + opus_int16 *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream. + \note Although \a _buf_size must indicate the total number of values that + can be stored in \a _pcm, the return value is the number of samples + per channel. +
    +
  1. The channel count cannot be known a priori (reading more samples might + advance us into the next link, with a different channel count), so + \a _buf_size cannot also be in units of samples per channel,
  2. +
  3. Returning the samples per channel matches the libopus API + as closely as we're able,
  4. +
  5. Returning the total number of values instead of samples per channel + would mean the caller would need a division to compute the samples per + channel, and might worry about the possibility of getting back samples + for some channels and not others, and
  6. +
  7. This approach is relatively fool-proof: if an application passes too + small a value to \a _buf_size, they will simply get fewer samples back, + and if they assume the return value is the total number of values, then + they will simply read too few (rather than reading too many and going + off the end of the buffer).
  8. +
+ \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples as + signed floats at 48 kHz with a nominal range of + [-1.0,1.0]. + Multiple channels are interleaved using the + Vorbis + channel ordering. + This must have room for at least \a _buf_size floats. + \param _buf_size The number of floats that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (5760 + samples per channel). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + libopusfile makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \param[out] _li The index of the link this data was decoded from. + You may pass NULL if you do not need this + information. + If this function fails (returning a negative value), + this parameter is left unset. + \return The number of samples read per channel on success, or a negative + value on failure. + The channel count can be retrieved on success by calling + op_head(_of,*_li). + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for all channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_float(OggOpusFile *_of, + float *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream and downmixes to stereo, if necessary. + This function is intended for simple players that want a uniform output + format, even if the channel count changes between links in a chained + stream. + \note \a _buf_size indicates the total number of values that can be stored + in \a _pcm, while the return value is the number of samples per + channel, even though the channel count is known, for consistency with + op_read(). + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed native-endian 16-bit values at 48 kHz + with a nominal range of [-32768,32767). + The left and right channels are interleaved in the + buffer. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (11520 + values total). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + libopusfile makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \return The number of samples read per channel on success, or a negative + value on failure. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for both channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_stereo(OggOpusFile *_of, + opus_int16 *_pcm,int _buf_size) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream and downmixes to stereo, if necessary. + This function is intended for simple players that want a uniform output + format, even if the channel count changes between links in a chained + stream. + \note \a _buf_size indicates the total number of values that can be stored + in \a _pcm, while the return value is the number of samples per + channel, even though the channel count is known, for consistency with + op_read_float(). + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed floats at 48 kHz with a nominal range of + [-1.0,1.0]. + The left and right channels are interleaved in the + buffer. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (11520 + values total). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + libopusfile makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \return The number of samples read per channel on success, or a negative + value on failure. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for both channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + that did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_float_stereo(OggOpusFile *_of, + float *_pcm,int _buf_size) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +# if OP_GNUC_PREREQ(4,0) +# pragma GCC visibility pop +# endif + +# if defined(__cplusplus) +} +# endif + +#endif diff --git a/Windows/codecs/include/opusfile.h b/Windows/codecs/include/opusfile.h new file mode 100644 index 0000000..e74eda2 --- /dev/null +++ b/Windows/codecs/include/opusfile.h @@ -0,0 +1,3 @@ +/* just a wrapper to bypass the pkg-config thingy: the + * headers under opus/ are edited accordingly for this */ +#include diff --git a/Windows/codecs/include/vorbis/codec.h b/Windows/codecs/include/vorbis/codec.h new file mode 100644 index 0000000..42aa291 --- /dev/null +++ b/Windows/codecs/include/vorbis/codec.h @@ -0,0 +1,242 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + + ******************************************************************** + + function: libvorbis codec headers + + ********************************************************************/ + +#ifndef _vorbis_codec_h_ +#define _vorbis_codec_h_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include + +typedef struct vorbis_info{ + int version; + int channels; + long rate; + + /* The below bitrate declarations are *hints*. + Combinations of the three values carry the following implications: + + all three set to the same value: + implies a fixed rate bitstream + only nominal set: + implies a VBR stream that averages the nominal bitrate. No hard + upper/lower limit + upper and or lower set: + implies a VBR bitstream that obeys the bitrate limits. nominal + may also be set to give a nominal rate. + none set: + the coder does not care to speculate. + */ + + long bitrate_upper; + long bitrate_nominal; + long bitrate_lower; + long bitrate_window; + + void *codec_setup; +} vorbis_info; + +/* vorbis_dsp_state buffers the current vorbis audio + analysis/synthesis state. The DSP state belongs to a specific + logical bitstream ****************************************************/ +typedef struct vorbis_dsp_state{ + int analysisp; + vorbis_info *vi; + + float **pcm; + float **pcmret; + int pcm_storage; + int pcm_current; + int pcm_returned; + + int preextrapolate; + int eofflag; + + long lW; + long W; + long nW; + long centerW; + + ogg_int64_t granulepos; + ogg_int64_t sequence; + + ogg_int64_t glue_bits; + ogg_int64_t time_bits; + ogg_int64_t floor_bits; + ogg_int64_t res_bits; + + void *backend_state; +} vorbis_dsp_state; + +typedef struct vorbis_block{ + /* necessary stream state for linking to the framing abstraction */ + float **pcm; /* this is a pointer into local storage */ + oggpack_buffer opb; + + long lW; + long W; + long nW; + int pcmend; + int mode; + + int eofflag; + ogg_int64_t granulepos; + ogg_int64_t sequence; + vorbis_dsp_state *vd; /* For read-only access of configuration */ + + /* local storage to avoid remallocing; it's up to the mapping to + structure it */ + void *localstore; + long localtop; + long localalloc; + long totaluse; + struct alloc_chain *reap; + + /* bitmetrics for the frame */ + long glue_bits; + long time_bits; + long floor_bits; + long res_bits; + + void *internal; + +} vorbis_block; + +/* vorbis_block is a single block of data to be processed as part of +the analysis/synthesis stream; it belongs to a specific logical +bitstream, but is independent from other vorbis_blocks belonging to +that logical bitstream. *************************************************/ + +struct alloc_chain{ + void *ptr; + struct alloc_chain *next; +}; + +/* vorbis_info contains all the setup information specific to the + specific compression/decompression mode in progress (eg, + psychoacoustic settings, channel setup, options, codebook + etc). vorbis_info and substructures are in backends.h. +*********************************************************************/ + +/* the comments are not part of vorbis_info so that vorbis_info can be + static storage */ +typedef struct vorbis_comment{ + /* unlimited user comment fields. libvorbis writes 'libvorbis' + whatever vendor is set to in encode */ + char **user_comments; + int *comment_lengths; + int comments; + char *vendor; + +} vorbis_comment; + + +/* libvorbis encodes in two abstraction layers; first we perform DSP + and produce a packet (see docs/analysis.txt). The packet is then + coded into a framed OggSquish bitstream by the second layer (see + docs/framing.txt). Decode is the reverse process; we sync/frame + the bitstream and extract individual packets, then decode the + packet back into PCM audio. + + The extra framing/packetizing is used in streaming formats, such as + files. Over the net (such as with UDP), the framing and + packetization aren't necessary as they're provided by the transport + and the streaming layer is not used */ + +/* Vorbis PRIMITIVES: general ***************************************/ + +extern void vorbis_info_init(vorbis_info *vi); +extern void vorbis_info_clear(vorbis_info *vi); +extern int vorbis_info_blocksize(vorbis_info *vi,int zo); +extern void vorbis_comment_init(vorbis_comment *vc); +extern void vorbis_comment_add(vorbis_comment *vc, const char *comment); +extern void vorbis_comment_add_tag(vorbis_comment *vc, + const char *tag, const char *contents); +extern char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count); +extern int vorbis_comment_query_count(vorbis_comment *vc, const char *tag); +extern void vorbis_comment_clear(vorbis_comment *vc); + +extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); +extern int vorbis_block_clear(vorbis_block *vb); +extern void vorbis_dsp_clear(vorbis_dsp_state *v); +extern double vorbis_granule_time(vorbis_dsp_state *v, + ogg_int64_t granulepos); + +extern const char *vorbis_version_string(void); + +/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ + +extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); +extern int vorbis_analysis_headerout(vorbis_dsp_state *v, + vorbis_comment *vc, + ogg_packet *op, + ogg_packet *op_comm, + ogg_packet *op_code); +extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); +extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); +extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); + +extern int vorbis_bitrate_addblock(vorbis_block *vb); +extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, + ogg_packet *op); + +/* Vorbis PRIMITIVES: synthesis layer *******************************/ +extern int vorbis_synthesis_idheader(ogg_packet *op); +extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, + ogg_packet *op); + +extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_synthesis_restart(vorbis_dsp_state *v); +extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); +extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm); +extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); +extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); + +extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag); +extern int vorbis_synthesis_halfrate_p(vorbis_info *v); + +/* Vorbis ERRORS and return codes ***********************************/ + +#define OV_FALSE -1 +#define OV_EOF -2 +#define OV_HOLE -3 + +#define OV_EREAD -128 +#define OV_EFAULT -129 +#define OV_EIMPL -130 +#define OV_EINVAL -131 +#define OV_ENOTVORBIS -132 +#define OV_EBADHEADER -133 +#define OV_EVERSION -134 +#define OV_ENOTAUDIO -135 +#define OV_EBADPACKET -136 +#define OV_EBADLINK -137 +#define OV_ENOSEEK -138 + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/Windows/codecs/include/vorbis/vorbisfile.h b/Windows/codecs/include/vorbis/vorbisfile.h new file mode 100644 index 0000000..5662611 --- /dev/null +++ b/Windows/codecs/include/vorbis/vorbisfile.h @@ -0,0 +1,205 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + + ********************************************************************/ + +#ifndef _OV_FILE_H_ +#define _OV_FILE_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include +#include "codec.h" + +/* The function prototypes for the callbacks are basically the same as for + * the stdio functions fread, fseek, fclose, ftell. + * The one difference is that the FILE * arguments have been replaced with + * a void * - this is to be used as a pointer to whatever internal data these + * functions might need. In the stdio case, it's just a FILE * cast to a void * + * + * If you use other functions, check the docs for these functions and return + * the right values. For seek_func(), you *MUST* return -1 if the stream is + * unseekable + */ +typedef struct { + size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); + int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); + int (*close_func) (void *datasource); + long (*tell_func) (void *datasource); +} ov_callbacks; + +#ifndef OV_EXCLUDE_STATIC_CALLBACKS + +/* a few sets of convenient callbacks, especially for use under + * Windows where ov_open_callbacks() should always be used instead of + * ov_open() to avoid problems with incompatible crt.o version linking + * issues. */ + +static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){ + if(f==NULL)return(-1); + +#ifdef __MINGW32__ + return fseeko64(f,off,whence); +#elif defined (_WIN32) + return _fseeki64(f,off,whence); +#else + return fseek(f,off,whence); +#endif +} + +/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as + * static data. That means that every file which includes this header + * will get its own copy of these structs whether it uses them or + * not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS. + * These static symbols are essential on platforms such as Windows on + * which several different versions of stdio support may be linked to + * by different DLLs, and we need to be certain we know which one + * we're using (the same one as the main application). + */ + +static ov_callbacks OV_CALLBACKS_DEFAULT = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) fclose, + (long (*)(void *)) ftell +}; + +static ov_callbacks OV_CALLBACKS_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) NULL, + (long (*)(void *)) ftell +}; + +static ov_callbacks OV_CALLBACKS_STREAMONLY = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) NULL, + (int (*)(void *)) fclose, + (long (*)(void *)) NULL +}; + +static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) NULL, + (int (*)(void *)) NULL, + (long (*)(void *)) NULL +}; + +#endif + +#define NOTOPEN 0 +#define PARTOPEN 1 +#define OPENED 2 +#define STREAMSET 3 +#define INITSET 4 + +typedef struct OggVorbis_File { + void *datasource; /* Pointer to a FILE *, etc. */ + int seekable; + ogg_int64_t offset; + ogg_int64_t end; + ogg_sync_state oy; + + /* If the FILE handle isn't seekable (eg, a pipe), only the current + stream appears */ + int links; + ogg_int64_t *offsets; + ogg_int64_t *dataoffsets; + long *serialnos; + ogg_int64_t *pcmlengths; /* overloaded to maintain binary + compatibility; x2 size, stores both + beginning and end values */ + vorbis_info *vi; + vorbis_comment *vc; + + /* Decoding working state local storage */ + ogg_int64_t pcm_offset; + int ready_state; + long current_serialno; + int current_link; + + double bittrack; + double samptrack; + + ogg_stream_state os; /* take physical pages, weld into a logical + stream of packets */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + + ov_callbacks callbacks; + +} OggVorbis_File; + + +extern int ov_clear(OggVorbis_File *vf); +extern int ov_fopen(const char *path,OggVorbis_File *vf); +extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); +extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, + const char *initial, long ibytes, ov_callbacks callbacks); + +extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); +extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, + const char *initial, long ibytes, ov_callbacks callbacks); +extern int ov_test_open(OggVorbis_File *vf); + +extern long ov_bitrate(OggVorbis_File *vf,int i); +extern long ov_bitrate_instant(OggVorbis_File *vf); +extern long ov_streams(OggVorbis_File *vf); +extern long ov_seekable(OggVorbis_File *vf); +extern long ov_serialnumber(OggVorbis_File *vf,int i); + +extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); +extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); +extern double ov_time_total(OggVorbis_File *vf,int i); + +extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek(OggVorbis_File *vf,double pos); +extern int ov_time_seek_page(OggVorbis_File *vf,double pos); + +extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek_lap(OggVorbis_File *vf,double pos); +extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos); + +extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); +extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); +extern double ov_time_tell(OggVorbis_File *vf); + +extern vorbis_info *ov_info(OggVorbis_File *vf,int link); +extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); + +extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, + int *bitstream); +extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, + int bigendianp,int word,int sgned,int *bitstream, + void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param); +extern long ov_read(OggVorbis_File *vf,char *buffer,int length, + int bigendianp,int word,int sgned,int *bitstream); +extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2); + +extern int ov_halfrate(OggVorbis_File *vf,int flag); +extern int ov_halfrate_p(OggVorbis_File *vf); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/Windows/codecs/include/xmp.h b/Windows/codecs/include/xmp.h new file mode 100644 index 0000000..2c940ef --- /dev/null +++ b/Windows/codecs/include/xmp.h @@ -0,0 +1,407 @@ +#ifndef XMP_H +#define XMP_H + +#if defined(EMSCRIPTEN) +# include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define XMP_VERSION "4.6.3" +#define XMP_VERCODE 0x040603 +#define XMP_VER_MAJOR 4 +#define XMP_VER_MINOR 6 +#define XMP_VER_RELEASE 3 + +#if defined(_WIN32) && !defined(__CYGWIN__) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# elif defined(BUILDING_DLL) +# define LIBXMP_EXPORT __declspec(dllexport) +# else +# define LIBXMP_EXPORT __declspec(dllimport) +# endif +#elif defined(__OS2__) && defined(__WATCOMC__) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# elif defined(BUILDING_DLL) +# define LIBXMP_EXPORT __declspec(dllexport) +# else +# define LIBXMP_EXPORT +# endif +#elif (defined(__GNUC__) || defined(__clang__) || defined(__HP_cc)) && defined(XMP_SYM_VISIBILITY) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# else +# define LIBXMP_EXPORT __attribute__((visibility("default"))) +# endif +#elif defined(__SUNPRO_C) && defined(XMP_LDSCOPE_GLOBAL) +# if defined(LIBXMP_STATIC) +# define LIBXMP_EXPORT +# else +# define LIBXMP_EXPORT __global +# endif +#elif defined(EMSCRIPTEN) +# define LIBXMP_EXPORT EMSCRIPTEN_KEEPALIVE +# define LIBXMP_EXPORT_VAR +#else +# define LIBXMP_EXPORT +#endif + +#if !defined(LIBXMP_EXPORT_VAR) +# define LIBXMP_EXPORT_VAR LIBXMP_EXPORT +#endif + +#define XMP_NAME_SIZE 64 /* Size of module name and type */ + +#define XMP_KEY_OFF 0x81 /* Note number for key off event */ +#define XMP_KEY_CUT 0x82 /* Note number for key cut event */ +#define XMP_KEY_FADE 0x83 /* Note number for fade event */ + +/* mixer parameter macros */ + +/* sample format flags */ +#define XMP_FORMAT_8BIT (1 << 0) /* Mix to 8-bit instead of 16 */ +#define XMP_FORMAT_UNSIGNED (1 << 1) /* Mix to unsigned samples */ +#define XMP_FORMAT_MONO (1 << 2) /* Mix to mono instead of stereo */ + +/* player parameters */ +#define XMP_PLAYER_AMP 0 /* Amplification factor */ +#define XMP_PLAYER_MIX 1 /* Stereo mixing */ +#define XMP_PLAYER_INTERP 2 /* Interpolation type */ +#define XMP_PLAYER_DSP 3 /* DSP effect flags */ +#define XMP_PLAYER_FLAGS 4 /* Player flags */ +#define XMP_PLAYER_CFLAGS 5 /* Player flags for current module */ +#define XMP_PLAYER_SMPCTL 6 /* Sample control flags */ +#define XMP_PLAYER_VOLUME 7 /* Player module volume */ +#define XMP_PLAYER_STATE 8 /* Internal player state (read only) */ +#define XMP_PLAYER_SMIX_VOLUME 9 /* SMIX volume */ +#define XMP_PLAYER_DEFPAN 10 /* Default pan setting */ +#define XMP_PLAYER_MODE 11 /* Player personality */ +#define XMP_PLAYER_MIXER_TYPE 12 /* Current mixer (read only) */ +#define XMP_PLAYER_VOICES 13 /* Maximum number of mixer voices */ + +/* interpolation types */ +#define XMP_INTERP_NEAREST 0 /* Nearest neighbor */ +#define XMP_INTERP_LINEAR 1 /* Linear (default) */ +#define XMP_INTERP_SPLINE 2 /* Cubic spline */ + +/* dsp effect types */ +#define XMP_DSP_LOWPASS (1 << 0) /* Lowpass filter effect */ +#define XMP_DSP_ALL (XMP_DSP_LOWPASS) + +/* player state */ +#define XMP_STATE_UNLOADED 0 /* Context created */ +#define XMP_STATE_LOADED 1 /* Module loaded */ +#define XMP_STATE_PLAYING 2 /* Module playing */ + +/* player flags */ +#define XMP_FLAGS_VBLANK (1 << 0) /* Use vblank timing */ +#define XMP_FLAGS_FX9BUG (1 << 1) /* Emulate FX9 bug */ +#define XMP_FLAGS_FIXLOOP (1 << 2) /* Emulate sample loop bug */ +#define XMP_FLAGS_A500 (1 << 3) /* Use Paula mixer in Amiga modules */ + +/* player modes */ +#define XMP_MODE_AUTO 0 /* Autodetect mode (default) */ +#define XMP_MODE_MOD 1 /* Play as a generic MOD player */ +#define XMP_MODE_NOISETRACKER 2 /* Play using Noisetracker quirks */ +#define XMP_MODE_PROTRACKER 3 /* Play using Protracker quirks */ +#define XMP_MODE_S3M 4 /* Play as a generic S3M player */ +#define XMP_MODE_ST3 5 /* Play using ST3 bug emulation */ +#define XMP_MODE_ST3GUS 6 /* Play using ST3+GUS quirks */ +#define XMP_MODE_XM 7 /* Play as a generic XM player */ +#define XMP_MODE_FT2 8 /* Play using FT2 bug emulation */ +#define XMP_MODE_IT 9 /* Play using IT quirks */ +#define XMP_MODE_ITSMP 10 /* Play using IT sample mode quirks */ + +/* mixer types */ +#define XMP_MIXER_STANDARD 0 /* Standard mixer */ +#define XMP_MIXER_A500 1 /* Amiga 500 */ +#define XMP_MIXER_A500F 2 /* Amiga 500 with led filter */ + +/* sample flags */ +#define XMP_SMPCTL_SKIP (1 << 0) /* Don't load samples */ + +/* limits */ +#define XMP_MAX_KEYS 121 /* Number of valid keys */ +#define XMP_MAX_ENV_POINTS 32 /* Max number of envelope points */ +#define XMP_MAX_MOD_LENGTH 256 /* Max number of patterns in module */ +#define XMP_MAX_CHANNELS 64 /* Max number of channels in module */ +#define XMP_MAX_SRATE 49170 /* max sampling rate (Hz) */ +#define XMP_MIN_SRATE 4000 /* min sampling rate (Hz) */ +#define XMP_MIN_BPM 20 /* min BPM */ +/* frame rate = (50 * bpm / 125) Hz */ +/* frame size = (sampling rate * channels * size) / frame rate */ +#define XMP_MAX_FRAMESIZE (5 * XMP_MAX_SRATE * 2 / XMP_MIN_BPM) + +/* error codes */ +#define XMP_END 1 +#define XMP_ERROR_INTERNAL 2 /* Internal error */ +#define XMP_ERROR_FORMAT 3 /* Unsupported module format */ +#define XMP_ERROR_LOAD 4 /* Error loading file */ +#define XMP_ERROR_DEPACK 5 /* Error depacking file */ +#define XMP_ERROR_SYSTEM 6 /* System error */ +#define XMP_ERROR_INVALID 7 /* Invalid parameter */ +#define XMP_ERROR_STATE 8 /* Invalid player state */ + +struct xmp_channel { + int pan; /* Channel pan (0x80 is center) */ + int vol; /* Channel volume */ +#define XMP_CHANNEL_SYNTH (1 << 0) /* Channel is synthesized */ +#define XMP_CHANNEL_MUTE (1 << 1) /* Channel is muted */ +#define XMP_CHANNEL_SPLIT (1 << 2) /* Split Amiga channel in bits 5-4 */ +#define XMP_CHANNEL_SURROUND (1 << 4) /* Surround channel */ + int flg; /* Channel flags */ +}; + +struct xmp_pattern { + int rows; /* Number of rows */ + int index[1]; /* Track index */ +}; + +struct xmp_event { + unsigned char note; /* Note number (0 means no note) */ + unsigned char ins; /* Patch number */ + unsigned char vol; /* Volume (0 to basevol) */ + unsigned char fxt; /* Effect type */ + unsigned char fxp; /* Effect parameter */ + unsigned char f2t; /* Secondary effect type */ + unsigned char f2p; /* Secondary effect parameter */ + unsigned char _flag; /* Internal (reserved) flags */ +}; + +struct xmp_track { + int rows; /* Number of rows */ + struct xmp_event event[1]; /* Event data */ +}; + +struct xmp_envelope { +#define XMP_ENVELOPE_ON (1 << 0) /* Envelope is enabled */ +#define XMP_ENVELOPE_SUS (1 << 1) /* Envelope has sustain point */ +#define XMP_ENVELOPE_LOOP (1 << 2) /* Envelope has loop */ +#define XMP_ENVELOPE_FLT (1 << 3) /* Envelope is used for filter */ +#define XMP_ENVELOPE_SLOOP (1 << 4) /* Envelope has sustain loop */ +#define XMP_ENVELOPE_CARRY (1 << 5) /* Don't reset envelope position */ + int flg; /* Flags */ + int npt; /* Number of envelope points */ + int scl; /* Envelope scaling */ + int sus; /* Sustain start point */ + int sue; /* Sustain end point */ + int lps; /* Loop start point */ + int lpe; /* Loop end point */ + short data[XMP_MAX_ENV_POINTS * 2]; +}; + +struct xmp_subinstrument { + int vol; /* Default volume */ + int gvl; /* Global volume */ + int pan; /* Pan */ + int xpo; /* Transpose */ + int fin; /* Finetune */ + int vwf; /* Vibrato waveform */ + int vde; /* Vibrato depth */ + int vra; /* Vibrato rate */ + int vsw; /* Vibrato sweep */ + int rvv; /* Random volume/pan variation (IT) */ + int sid; /* Sample number */ +#define XMP_INST_NNA_CUT 0x00 +#define XMP_INST_NNA_CONT 0x01 +#define XMP_INST_NNA_OFF 0x02 +#define XMP_INST_NNA_FADE 0x03 + int nna; /* New note action */ +#define XMP_INST_DCT_OFF 0x00 +#define XMP_INST_DCT_NOTE 0x01 +#define XMP_INST_DCT_SMP 0x02 +#define XMP_INST_DCT_INST 0x03 + int dct; /* Duplicate check type */ +#define XMP_INST_DCA_CUT XMP_INST_NNA_CUT +#define XMP_INST_DCA_OFF XMP_INST_NNA_OFF +#define XMP_INST_DCA_FADE XMP_INST_NNA_FADE + int dca; /* Duplicate check action */ + int ifc; /* Initial filter cutoff */ + int ifr; /* Initial filter resonance */ +}; + +struct xmp_instrument { + char name[32]; /* Instrument name */ + int vol; /* Instrument volume */ + int nsm; /* Number of samples */ + int rls; /* Release (fadeout) */ + struct xmp_envelope aei; /* Amplitude envelope info */ + struct xmp_envelope pei; /* Pan envelope info */ + struct xmp_envelope fei; /* Frequency envelope info */ + + struct { + unsigned char ins; /* Instrument number for each key */ + signed char xpo; /* Instrument transpose for each key */ + } map[XMP_MAX_KEYS]; + + struct xmp_subinstrument *sub; + + void *extra; /* Extra fields */ +}; + +struct xmp_sample { + char name[32]; /* Sample name */ + int len; /* Sample length */ + int lps; /* Loop start */ + int lpe; /* Loop end */ +#define XMP_SAMPLE_16BIT (1 << 0) /* 16bit sample */ +#define XMP_SAMPLE_LOOP (1 << 1) /* Sample is looped */ +#define XMP_SAMPLE_LOOP_BIDIR (1 << 2) /* Bidirectional sample loop */ +#define XMP_SAMPLE_LOOP_REVERSE (1 << 3) /* Backwards sample loop */ +#define XMP_SAMPLE_LOOP_FULL (1 << 4) /* Play full sample before looping */ +#define XMP_SAMPLE_SLOOP (1 << 5) /* Sample has sustain loop */ +#define XMP_SAMPLE_SLOOP_BIDIR (1 << 6) /* Bidirectional sustain loop */ +#define XMP_SAMPLE_STEREO (1 << 7) /* Interlaced stereo sample */ +#define XMP_SAMPLE_SYNTH (1 << 15) /* Data contains synth patch */ + int flg; /* Flags */ + unsigned char *data; /* Sample data */ +}; + +struct xmp_sequence { + int entry_point; + int duration; +}; + +struct xmp_module { + char name[XMP_NAME_SIZE]; /* Module title */ + char type[XMP_NAME_SIZE]; /* Module format */ + int pat; /* Number of patterns */ + int trk; /* Number of tracks */ + int chn; /* Tracks per pattern */ + int ins; /* Number of instruments */ + int smp; /* Number of samples */ + int spd; /* Initial speed */ + int bpm; /* Initial BPM */ + int len; /* Module length in patterns */ + int rst; /* Restart position */ + int gvl; /* Global volume */ + + struct xmp_pattern **xxp; /* Patterns */ + struct xmp_track **xxt; /* Tracks */ + struct xmp_instrument *xxi; /* Instruments */ + struct xmp_sample *xxs; /* Samples */ + struct xmp_channel xxc[XMP_MAX_CHANNELS]; /* Channel info */ + unsigned char xxo[XMP_MAX_MOD_LENGTH]; /* Orders */ +}; + +struct xmp_test_info { + char name[XMP_NAME_SIZE]; /* Module title */ + char type[XMP_NAME_SIZE]; /* Module format */ +}; + +struct xmp_module_info { + unsigned char md5[16]; /* MD5 message digest */ + int vol_base; /* Volume scale */ + struct xmp_module *mod; /* Pointer to module data */ + char *comment; /* Comment text, if any */ + int num_sequences; /* Number of valid sequences */ + struct xmp_sequence *seq_data; /* Pointer to sequence data */ +}; + +struct xmp_channel_info { + unsigned int period; /* Sample period (* 4096) */ + unsigned int position; /* Sample position */ + short pitchbend; /* Linear bend from base note*/ + unsigned char note; /* Current base note number */ + unsigned char instrument; /* Current instrument number */ + unsigned char sample; /* Current sample number */ + unsigned char volume; /* Current volume */ + unsigned char pan; /* Current stereo pan */ + unsigned char reserved; /* Reserved */ + struct xmp_event event; /* Current track event */ +}; + +struct xmp_frame_info { /* Current frame information */ + int pos; /* Current position */ + int pattern; /* Current pattern */ + int row; /* Current row in pattern */ + int num_rows; /* Number of rows in current pattern */ + int frame; /* Current frame */ + int speed; /* Current replay speed */ + int bpm; /* Current bpm */ + int time; /* Current module time in ms */ + int total_time; /* Estimated replay time in ms*/ + int frame_time; /* Frame replay time in us */ + void *buffer; /* Pointer to sound buffer */ + int buffer_size; /* Used buffer size */ + int total_size; /* Total buffer size */ + int volume; /* Current master volume */ + int loop_count; /* Loop counter */ + int virt_channels; /* Number of virtual channels */ + int virt_used; /* Used virtual channels */ + int sequence; /* Current sequence */ + + struct xmp_channel_info channel_info[XMP_MAX_CHANNELS]; /* Current channel information */ +}; + +struct xmp_callbacks { + unsigned long (*read_func)(void *dest, unsigned long len, + unsigned long nmemb, void *priv); + int (*seek_func)(void *priv, long offset, int whence); + long (*tell_func)(void *priv); + int (*close_func)(void *priv); +}; + +typedef char *xmp_context; + +LIBXMP_EXPORT_VAR extern const char *xmp_version; +LIBXMP_EXPORT_VAR extern const unsigned int xmp_vercode; + +LIBXMP_EXPORT int xmp_syserrno (void); + +LIBXMP_EXPORT xmp_context xmp_create_context (void); +LIBXMP_EXPORT void xmp_free_context (xmp_context); + +LIBXMP_EXPORT int xmp_load_module (xmp_context, const char *); +LIBXMP_EXPORT int xmp_load_module_from_memory (xmp_context, const void *, long); +LIBXMP_EXPORT int xmp_load_module_from_file (xmp_context, void *, long); +LIBXMP_EXPORT int xmp_load_module_from_callbacks (xmp_context, void *, struct xmp_callbacks); + +LIBXMP_EXPORT int xmp_test_module (const char *, struct xmp_test_info *); +LIBXMP_EXPORT int xmp_test_module_from_memory (const void *, long, struct xmp_test_info *); +LIBXMP_EXPORT int xmp_test_module_from_file (void *, struct xmp_test_info *); +LIBXMP_EXPORT int xmp_test_module_from_callbacks (void *, struct xmp_callbacks, struct xmp_test_info *); + +LIBXMP_EXPORT void xmp_scan_module (xmp_context); +LIBXMP_EXPORT void xmp_release_module (xmp_context); + +LIBXMP_EXPORT int xmp_start_player (xmp_context, int, int); +LIBXMP_EXPORT int xmp_play_frame (xmp_context); +LIBXMP_EXPORT int xmp_play_buffer (xmp_context, void *, int, int); +LIBXMP_EXPORT void xmp_get_frame_info (xmp_context, struct xmp_frame_info *); +LIBXMP_EXPORT void xmp_end_player (xmp_context); +LIBXMP_EXPORT void xmp_inject_event (xmp_context, int, struct xmp_event *); +LIBXMP_EXPORT void xmp_get_module_info (xmp_context, struct xmp_module_info *); +LIBXMP_EXPORT const char *const *xmp_get_format_list (void); +LIBXMP_EXPORT int xmp_next_position (xmp_context); +LIBXMP_EXPORT int xmp_prev_position (xmp_context); +LIBXMP_EXPORT int xmp_set_position (xmp_context, int); +LIBXMP_EXPORT int xmp_set_row (xmp_context, int); +LIBXMP_EXPORT int xmp_set_tempo_factor(xmp_context, double); +LIBXMP_EXPORT void xmp_stop_module (xmp_context); +LIBXMP_EXPORT void xmp_restart_module (xmp_context); +LIBXMP_EXPORT int xmp_seek_time (xmp_context, int); +LIBXMP_EXPORT int xmp_channel_mute (xmp_context, int, int); +LIBXMP_EXPORT int xmp_channel_vol (xmp_context, int, int); +LIBXMP_EXPORT int xmp_set_player (xmp_context, int, int); +LIBXMP_EXPORT int xmp_get_player (xmp_context, int); +LIBXMP_EXPORT int xmp_set_instrument_path (xmp_context, const char *); + +/* External sample mixer API */ +LIBXMP_EXPORT int xmp_start_smix (xmp_context, int, int); +LIBXMP_EXPORT void xmp_end_smix (xmp_context); +LIBXMP_EXPORT int xmp_smix_play_instrument(xmp_context, int, int, int, int); +LIBXMP_EXPORT int xmp_smix_play_sample (xmp_context, int, int, int, int); +LIBXMP_EXPORT int xmp_smix_channel_pan (xmp_context, int, int); +LIBXMP_EXPORT int xmp_smix_load_sample (xmp_context, int, const char *); +LIBXMP_EXPORT int xmp_smix_release_sample (xmp_context, int); + +#ifdef __cplusplus +} +#endif + +#endif /* XMP_H */ diff --git a/Windows/codecs/x64/libFLAC-8.dll b/Windows/codecs/x64/libFLAC-8.dll new file mode 100644 index 0000000000000000000000000000000000000000..f87654e55638e576a4614e7dc824eb4697ea4355 GIT binary patch literal 70144 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

lAan$FO4 zuBJtrmT0)7 zB{HTs+F;htM-QnYbP1}}obrW@&M`_^$!}?Zi}JNf64mXe#*~>2s5})#o0NJ}gc&C7Zp5cr znv2>oNJ3^KTN&tpj0r@Wl;6cEffco(=3tYt5|b?S(PBxdS}KdvU#HNN@x?vMl-lYB za=`7#l-ghj9hz>aY>1#El2Ti%)_ca*l-gxMlf{$qR7$NhRpV))gxZrLSDD1+rIcEo z$}y=Z&l|_4HtIBvPi+h~RyU#s^?7A#riLeqsgcVG#w0Nj2l`j3SE;4*X{jWk*vn0o zlVleAhAR~@mU80Op_rN^x@D;?wd&%IX#R){@P8Q>xyv|woH;`shLhw(())iEjggk> zu$kmEIlKLTMl*)qlTYS8d4Ilj*gg8B`+w-aSqW5H?D<`4 zxwE@-N9W$oMCbm_gPlfKdRInQR+pnIw`)#UL6^U4aaUzmbJxnQ)~@wkw{>-N-P5(P mYjan3*WRu~*ZwZUj}9tqW-0D4R9fFjekBY4`TOi8@P7d3$yZ(g literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libFLAC.dll.a b/Windows/codecs/x64/libFLAC.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..61dc1da3658f908cc521bb183ae2bcd8d02a2e65 GIT binary patch literal 98562 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 Vvb>Xoy)?&5tyO>(@xO|x{{yCOxWNDb literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libFLAC.lib b/Windows/codecs/x64/libFLAC.lib new file mode 100644 index 0000000000000000000000000000000000000000..dbd2f5391eb17920d0ab3ef44b45bb3b52dafb3b GIT binary patch literal 36584 zcmc&-+m9T@)jyb<<3Qqo;}8Bzp2gqT_E89s7>x>8FUE8V7;*$(=+;%S1=6 zfDYn4@EnD#Ibf*&p6J8{+<%OF@L7oa%(u9%K?bhRUP5@8r~=tl=z0Rz5^$Gy;~A*@ z0m8T9-Me@Pc}2V{;Qr8;MEMrc<1Bm~!jIs73*O(3^j{`gg|6p5BWeTpb9lG<4$<02 z2=Brbbn5R!xr;=#TR=$PsTrcP(8uWX{SKY^0}-RMz`*F--449~9-BVK6?6_57@dZE zMrZDGD0c%Nr$pV)aX(444(cAjl|3INy7*6rUd#|Ny4Z5)^>2w7z3S3yUlZB1 zh%4xImtOn};(^}&%Arfw5HY$8TQPbYG8tX|#Gy-X;yvg$@42)cSI~v89eU*-L^c(1 z1-&}w(92UqjLyTRj9&VaLl;gU9_T!5%;@DS4!wl3!RW264!yBJWYageg5Ess&~G81 z(OVZ7Syrx4E>&t)CRv4jL0Wrz)vJb|9UD#jK_Z<$Ttvq-sWqOwXi> z#caN6VwlNXt!kCC$XrLKflX_rS}O0xGtybej8ta}u_#mJaz2+%)mWj-Wn$T@+3cZm zDOap{Nh!`2CXuk%6!qgdg}F2}Rn686;<=e@8&Ja#zP>W*U3R9F&txmg8gRH&naowK zbg59tB6*<7F$QnCHWQ076c;w}7j;ptMoRM9uB zJs8kTEvqQ0YCLey_{!#2qSI;hXHaTc?}-5rCnWMVQm#1;Y2oC!?6D69XKYM_vB9+6 z3&_mbaj ztIke3nV&DGttawj8sJju@SnlP(pjwG_s9lgBXhPvud|5WA479ugr`pR6RBawpgP+zF`>XO%x*{H90 zOjfx$-&^lAtN^$3wY%8vtkio}x4yF0YFM3muVFR2)~R}{xxkrP#m7mSYqjT3cAIBy zIoBx2*_gb>Lki5YoWjmF7deGUmk+FFgJdP@YU8|9Kn>9#wAr^G+>Tp{RXnM3&Z^Fq+5A$~Dosz@vqD^PajI6PG2dQjbgDg689@c+m~yL4 zRPuUny&K0_Y19|=IIAeFdYrXJtEI=8Z>%o$mi2g#beb&TI*H15I&Irfe)^pp>)LIU zwcuFNT5UYf*;(*f7;mA`YV;bas4j;vb`yDHIjU45f^2d*?WHAMSpinLys2D18;i^WUfo!)41?H($= zGkEOAS%7Dj%A9vb_Oar8zBox%-Tz34gXqc(#*j*%YxcU>vTF34sO#zn0OeHn$?42MA&cdgT& zZ*;p>7Zpw2A%{4X($-gd%@)2)7OeK7D&wB$)@HByS`3~09Kbj``ffuwB&&x-Nt{fpc2el!m|%>y%phi@ot#CgFnH$1*GQ? zd{goWKTdQV!jB-l1^2h({bi(o=PJ=>&jEKE?{Iww;g8mcb|JhA*T0{Fk3^2>mKxFr znn8H?S)%*lQ}Bl~(2M)K&*9k%L?46R$NfimcOTx}fOuc@V7m^{=Ut*n+)u8TRNHE+Ji)!HfG(aD5Zu_kKgP9rQK) z8UFDK{82!2h(Gl*(sZ8aPcJ$CFpuE=3Z9K4y!9>k-n;?3gHEGh%>5R2$Fo19jLgzg z^fVo&8Xcjd^dudlK(EkQIz#8_G@YZ9v_dUfrDv&0OY|DOP8aD_ zdXt``b$XsoQHOfer8RnkuA(jU43#NEDN560G(nSekh1hBJwl^2M*HaijnFtfO#A59 z^aNGtCc2e=N4bR%u2hv+AC3tdlJ={lOCX*xs&%2AQ>^f=AXBAuWGs?!`< zG*1nxQi-mmYc|aqSG(g)cNW3#bl7x-J3r+#94>?DOa&J?&_T-Nhgh6RJ6?#{lol6P zf7(XG$xm&?3Kq^cg*rslSG?+5&*`Nd2qBTIr`I0c`1vjV>|nA?24V4oK&>%|{)ksR zPM6vxP`cy^cD^5^GBn1`_LM=)6o$r(LW~6UT!M|ko(`~Qq{PX!nN(vAHh(3wgf~ud zhigin4H`=cbtp!Z{E$T$dw{75fu^-SGPvX}4!hEX zK#p}C;9L}p{24aMS;N!^L*x&^B}&irMB7IssV9td#Xb4bu;bq8I~E)Im->!sjyI&K zds`A8N@*6ke$;-F`WVf8u6%BGWMBtq7LS^`oC}t z6}GqGVyNqW2k#scx5rI%7#z%lF@YbZp=ag5uA*A`<)vQFIkfL+@AM;1*AVZ>*^j5| z_}-73nd z8r8r($~|bK34yCJs%T;d;gV zqhh_o^!>ARe6Cb3pPWV2PO68qvaODa{gH}^@t|ty^tgaY<*H}7f&w#@fvIwVun?m& zVJ_l}PMa&aWd5L{iE))*qKKcLNEg5mMG8%)2V;e1z~i0gG#stsmcd2S>I4&0S^!r8mwfT5di3NP4y2GtA_*44^K6ic`eSFbH0abz`O9P5i4gB*C_AInoa6^eZH)LdZuX}>X ziERrPucilH`|Hu|SHbfD9tP~UXQ45-zO)N|8qP0+3mh7_-vn)++|y(mQ+Dn3UhKfl z|AD@CA6$*=1Py=g@{PKWvHA}W59ssw*z*Y*`g{wnJKz(*em8Q7+D$iazaCGSboOIN z@40eQp*i1aciW4-q1}~xhw`~1Tt@`I8}N)_VFW)7`))h_UTfcRif95mH`W07o-60* z-~SHA0W-WL7rCFoI>>crrpkXCui(O(q12PA(xWp{ zGfIL^?%oF7(z8Xj8C!1uLy@}n|InbaoT9FcAgcXiHNdM4?jxF@39qj0^PVxjue^YJ zWqg}qVIAxK0vHrcnX!FGJ@XE+Gmuz~UAV~FvwQ8dUh6E>ix)+?tR!>I``nBTX}%wt zuR`16Ecwb-TY2SNNTWXP9~0|_`y5J^r+eU4Tn>)8W%f%f1E)T;!KUc^jkoq*QXU!? z(y^QCaXA#qvpkSpV~8xerKn@^X28=IM`MpD|nOimCQp#H)VY+|Z*DgGABAMn9NlCj07T@V> z_LeLHhg0xsjqBH#qNV+buQ$AGDsY5Kh+|w*;tnGHw@7jLzCIBTD;^FP(kKTiG(Xiv z6L8Vt^c$DTamm-f1Z;DwE}9K&6;);CXBv2XPcz;u=4Dqhe%%kd{5&2<(1k4_lKqkq z;}nqG7LP>g8^^=qLOP{bg6aTJ-5!rBC@J<6XoKGVU$+(WIEOeJHrj2WfC8Mzn zEVN4(O~eV4HxU=ospX2^;g`CY{!8`iZe2W*PkB?@sJ`FskzxrtqjDOJTfI?9jd~E} zWw%s+z{!p{3=4SWE%`iScCqIn8P_RQ&oruoiSym(!Ehm+nkAX-orHbH zbg&5a1aKIP>(;me(YP+6&|ZUNh*Y(GzZRnY9)@H{RJM6U3rX~UlWZQMU+W^;(A*lA ztR_8%5`91i(FV_^t40=&>fniP65+GVxcwQGjCCG>g$_y)ZPbWjT=6~om{fb*wiezb zTu7%CRA8FW#l+^W-2Z;!Y%}9f7`KBXlG*7YU)P;a0L_I8>$LaS0B^ z7BwD>d2N-C1OE~Jq!qms6mtxe~n2sUtaSmm2k=xbK*)#H+D?hi1g zuzyjEA+iaOhroq2>^~;4KXaI6r^-2Ao7JEd1e*&vt>$%8VTH07LuAw9<{@}Oj39Cj zeKG{9kz+-IAh5}jSH7X`Kvk?gvU`(^0dOH53rM~LnfK!}5&hA<*qlD&URE{I zvgF$BJ>JPQtH$0Z!kR_fy8XT5$#AH~-gO-u{GN0kjB%f<@`aewK@-~S&coqCI%QKb z4rJr-c^{3l8Q1^MHSQ*QPS=K(%LSQccXNJ1&5|((+bh+OYPL81^NNl0UbT|HDAO!D zO&}o-Rhzt|#Ni)PkPv}tUSe5=z&*_%_Y{bHx|K0*g!R7*Na8q9wd^~3X=5=<^#B{#IP~?RkH)9Wcu0BE(z1E znyGwVrq??O#ytR@hroq&`UJ_BGxH-m9fv@C77Yi%yiHcEho3P*v@vBvwXg523=eut zoSu`=5~^|JIhkhuSe}FkRHK#`n;@4NPyNkH3s zfA@JlpXaZK&xf3I)_z-i?X}lhd+oLN)P8A=r_kf^c=_Mg=kaXhDgOfM?|=WNk>m?T zZ@R$q#lD_E581XiiHh#Rm{7q!n|Q- z#W%lo`!~j)fBsNkuId>#cFW4Es-*wX4{6jqmJnf$=6Pt4K>xwN zl;(NtA0#R86Pjnt-$`HhUClEW)c(=G@zHNAjgol$XZ#TqAK|~?bJo8K&y2e9w|_1A zHDGIG(4OGGw8HUIy=0Se4~$^)^i_~DAo z*M7>2z1gzUnffHJP5Ujo=oM(l<5eCTh3e5ER;#d{r!r;5w^V$2bG`aEULT!Ml^V0Y zc+1UUd)rLQeoks_YHzqNIpT-6X`ZT7Q~Uk(@k3fw${x`KV3X8$+|qwL;z4PoDHZ*U zmAvL>G0pR=q*U$KM+ZDlWoWJMWy{_pIj{PLo3kO4EV_x;cu#?z7)tJ^MpGj5i=QCC zq^v^itG9i{n6o+Ft0_=J=QpgR_wq_fP0lT@N=bcJjG&ULK54t!s@@vdphc^|;bY(s zta_{Sy!tgj^@Lwqa1jaH9jf3f|Ey4Mc)hAGS=7o$Q>tO9<&60AYT(ZKf8fzt^efFdjWxv#IUULS2zZ~U;;)NYSh_lTe}$5&z5%YBvhZp)tUn`qfl-x$mOOW3~M7YN&1 z8@`q-`tny8p)Rl-!-!-~f5+nq*%^DEWuMHHu9hb3ZF=HAX)J!KFnV{>{^&RD|OB z&m?n=L?7*McjW25K54gMXXp3(frSbfoz>K(C+?x;{)FjNU~kLT1EaoR;w?RKqnlpU zF1?uUs4lr5&wQXtx*yWN?B(RG>dJmv6%Q!-!P2cox8;Ot^nB?`b{%Av`C`wamv)$5 z+NN(z=2a@sEd8#>6HfAJB}qt14k>asMb_9m8Ij_2?`S~9c3ahUf16C{f%$CjvUl3s zRffaGM)yg(g?GblGpbUCzpZJ9-uy2RKbME}VABq}ZRt`Y-ZS{yGn?A=1dV%)P38RU z99+L9*wh{!rKN&e%BW6%d$8%>Zp2fXfmmPy9Z*pHrzw4X%Ft4#o$B7xw8OM_8G0xs z2=4CKj6k`X%8MJWLZIw$D_*)o5*f~br+cr_y|*(4v$^s}eP_P{^<4g|QuSaSsY_q);hQ!T%BGrc$hxNXkiA_`h%Er(p`rCg{A977_zT~( zRBY%Qc2w`wANZaO)l)Ka^$jWiPGk2Q^+sy|5*YEUW?r_vHd!3+9UO8(TF5S5d`0|F zv0=9x=|hDPNu&Y@ef8XapG@|w)cR`jo>0fE;>ytyLeBbo>;D4G?G6{a>LDr{lO+7 zTlyGmdcsJ*RUChFaONTqt!fSE>%nXJeIB#w9RwkBIN&N-a%SE`KH0rmU;2<<)n@m` z-YsgxAk_3=Z@g1$+TZXJw5+guavG(dKhJFsG=B9c6rOe}gVJO^E3JW@ z%5%TuIR~%o)iNpr|73nNwHxq*y)$|d>|}569AqM1?Dnd5qx)T^`w4rydaY`=)26*0 zV9;)9N*Q)KS|RLYr#kh1d_Po_#9Ubh(JgFLOVK5tt4=Q&u9Ag`^vBai_leE*Yosj! z@MWiwhwX;`c#8itdqUg3c};%_zJ)KyA!YkB81{DQ(nfmOhkQg*d6o~34$WI7#hb14 zp$aRVt?=)vYLB1v=s##dhK5=?54iG43MaMXjb0>QyRAj_ct*3ejh@=UBm8Z);T7Bv z(Eak+ZB8m|N-Z63rQfKqm4vf~Y#h}09%6g(ec{0)7LT&GZyL62drS9$^r3R?!g=kgkGseKmSR{cd!Y){ zQfe?vZC4H*`#gJ>-tZ2P$L>d=EO;7wgAB(@v=diKzxz0`N7>@~i zC(r-}qu%sYRfoxfjykdt88dqPNAldliy)*Yrn^wdq&Hom3P@oo@L5TUpVah~BY11A z@d^gnYk2SH$9X&UEOav$33$!C9qUnrQuux7A>S2WFH+xc=e~uylKx`uTkx0ft-0^{ z)$aEna^EsQlKvm+TlmLJ4l$F4*U%W{LluVBX4*rHSdUQMgoPGg21y4JneF z`N^E)GDZKJXG)Fe@n%sDW^$OS+1>@Gv@*Qdu!ib&^p0m`FxMDeX)St{nY`7T92L|y zo7!$8c1l{dN167m-o=-g_MYy8jJQ*NiQB3@%JA=&G;D&P)}BLjF{q|g#;H!(a5tyS zr(M~GhlPv3{8iW+{RT$TRpdwa-XJDP_r50P`7k{pCa24Mq9_c1DjNc_W~RF=iT74U zqxVmV^$K;Pcj&7VbS2g+d>fskul_t;i}lKoN3W0dDu$RE>y?p-UR$*vX{|U^q>>e>RslZo;XDwvTo$z((ki+;vGKXy_5CCYi{Dds>DWUAo$qL&CTcF zQ*;(SAsgH8aB)Zk;EtsR>f+1*a0vR{xzOI;{^l=fvUGgnqJ3uFbe zG;Ftq?Z>8Dggur}~h;s}C`pvD1oI%VMV$ua?A4D;eE%l(eU$!|2ZK z-S4{^^tjLjtKP6%AwlMz9wv&NHsYr%qlW(A)grXxr{U_mX^8rdx`3fkpW?68f1*w@ zjMP`HBLi=v?#C88eW~8GmhVvdV1;SFVcLhnLr$11M68U>n#N@1VPQ&P8_1Guwk*l& z(4Vp@n=7lb1+pqz8ipv15F?y)$s10(aLgH-(VJNH$@PrnfT zn7;Z4AQeB|#{9b=e)@pk^ggI4dWG%dpkp7h(jDl#bmoIoATw|4qhgp~PZ;scaHIP; zHha9cz$rHtgM7+(>iIwa`OnVuGe-9t*c-|Uz%Y}10KjOrMg6Y+)mKjf4CFxcVpqQWM!Mt#T>gYrATV z%-87&u{ZVA2PAX8`3|W&-?E@i&f6QlmfbE{^ZuiaGTrSx#-_dOTM}#b4Q<0HPlxYHp7vH$0f_0_f6@q%C@4uZ$zC%6x6Q3t^bu4nUQc z!B_Hfv(yti?F!8G?uU|?P1i_)bwGsv`Rt$KJD>X!mFDtau&NKv%#K$e^rIS!lQ6xI z`au1f>=E8Ur7zkLY&s(Nh|D$ZRlbza+ujqjPkwlw{_m)kt!8c2Z~sX5oBmmPun?56 zulE>ggr!9hdukN-nutYd{~Yl!AQl*B#SVG#AmjaE5uwJvMNn5F#T6KELH3t8y$04B zV(*HDf4IVO?H5a}^u>-T1pyvq?qj4pNUX>`$Ec?hs?6*?#;VY{E>P8;d4bo~ni+1E zn%VMft*LV#x4VzI@(@ib>NDVx_Eqc2&}<7`bAF}({H#{Du$%8}{|l>s(QmjUu6Miz zmVF}*vm3{NC9@JOBuo9YxO0lLQ@{m(C7HDwO9i6ZQ|n&Kxs^PJ$B1+9PO^oQ*HdGQ zg*gy%?(Vayk1s6kyh8D#EZnW?mllt1Tt+^}VEwzZ;gG&wyS#%2uaQ3u`@?oi$iGXi zaYFHvgYO?I6}KEkq{`Z347OSS_zOPC8|PY1(E~q0?DP&Rz?2Cuo*nC*z#HIGfTLII zD`bTc>;1e7{QOS=eo9|4o?ga!C%V9^1vo6$TkU>MkRt3O$#3c_ z?o;)8UEps7_=3LTmkL-{GebfE$X$5*AYbv*FafzH~0m7HRa@v%fc9;i`?1$_TVCH|B8uHySY-Ov-S1B>;3&ILV3&-A99lDCyV zYP@5;m$``rl9+g0<^O~WDpL7>Ect)LA2o@@pJLfB-)uQcDs#LXu#z_ww;JUT2Exzx zRpuv+oz49Euy{}oF|RW%yvBQQy~y}&I!`hKEjiNHr~EteaRVQ?0SCvfEB6G*L>E=2 z&ntMermN=T0ljIIl;^)nDwpzJKKw2Ag&6v%@x^0Xr_B|L8Bas0J~%R9+8sH^hE&Z& z?|e45UhHpUH|U9y{W1krg@Vwt3TItUYye8@rF!BD-je6psa@H4x{%3Xr4M*5|4w}V zyBG>fYe{;)o5#+sDb3ugs=$-8f`aS;ybMw8RMPuEa%Oqgwo<#MELv)(cV!z72JGv~ z^d_xIn=M*iGb8R=$`_H4^;8k@0w z$UjQ-`#+3ZjGK)ws$DhlU|P5^V~2YrQ}QPK`F9qxo1!PS6~UA>rSNZ4DX(U7W*Lrl zJrSY{mYuQuZ5AG4ef4%`O5>zHy=fY`Eax8l#kytp#NOzj#@I>ut2bS#((Yv&VP=J8 z*Pt~{w$>;$mU%5B)0xc|{E1>y^z`Y8Z&PP-keR%`%-GmSdn`OL!g~tq`Sj|EKf;cd zbG;93xrVuFCKs0mWsl@Z+A@<<%aa#iuNYmaMnnHWT6`&q*GP$&%m7G~&Iu?AKwfwt6)jRYD-z7`(x-v8+DpFQqHDmOq@zSp3!LdcHt1sre zaU%HkB08*ii$?dPYnh>{PkS@%tb=GNfG-ZO-$Bxu%5ik;ANz|u)M2*bxdC! zFA&+3HC_!2W%?HIqUQKgUINmcMw;i{lJ{o!eTKZNt|x0)H79%zx$ru9f5d&CEANl0 z_d)V1y|9u~!6@O|=)Qwg!k2R2!OLA|lLyoizBb^=sbhHC!&}D3`d_Bc2Mly_P_)S#uz3Elq1E_QPLEsmRt*KBP`)6pwzRzIs1y3#OX18(E?%J=Hb{{b8 zmyGn$K}P({V132Ur7Wv`8B0s;!r4NKnT#W2$2NiQT0|ZrI&)Iz)p>c5FCfX|r5?B& z{$TXUN9h_>S_)3mSBPj#USPz|G&1&hfA|c}>yovfX)hX?{VI}9UmrNjl+&Bu#VT*D zQP!jp-_BN%Fl%-LC?c{f6vOX1FH32ZB%>w0Mpij-^XNq^hD+_a)~}-b1S1=8Kk%hL_E6c z-uQ~~RpYkJCei`NPJ>s3hh-nb+3kPXs{YIJFI(Eq)*8B}>X53k&*P9QWTtF7F=}y< z8qVA(4$WT00Ls*A`UNl2GzB{2B1T1k7ZUU zfqb<9;z!`xJI7?l^Fg&x)|2(~F7pw6#LSo@o4QfiAb(DLOo8N-+i@n@#<-+W{%CQ- zu*{3FuM%D{3MXsIlUK((x{=g&O*!`D#rMN;_KEm0t*@+yY|+}PzWCLJQTD@c9%DIb z7k+O>dlOueQ!A0yw1$wM8sL*Qr&^gJ((I`->>gQ5Q%rDSofSY;S)043&h?wHcEMEdtDM8D#v?bnB}&!!6U;-498ISH+DI71%=oxZWc|;drDQ~IrtZm{ahc}=M zU6l-f=k)!H4^m9V|Np(dZ#BlLMq3qz>XqiQh0p>E`Ye4u6HPvb!A86<<&iX&CvOel z&c1tca^9TevU1azTJkuGaq`@5y5^r_B-iO6efURUL*?G&r4jr7&d z>uaBSSjXRAZl#anT))WwZu0I5%7xO$$|)$R;y_s-S(rn0PT53%t7Bf}@gKD!eX91p z?;hKCp6QIERVx4Slg|#Ne9~Az@%i_BSF@xhseIhE{%+M$qz~L1>0W+Dh$A2t2Z-%rwukR-ZBSlh|>A+TGHl6Z|{k_R$ zrBZla`{x2*EivtfU1dNv|F)ztA7p9w5!wY!$)Wlp^?@DJq%wK;II6zqnZ+06I|%K% z3e1-W<(kMNcT|Why-~P)f7z#oiYMX;>5;LN<^__RH_=Qko8a~y+R5}=W`aOUvfb!a zU3I)y`cDhWkt3#4R_WhH;nXj8>!6x6Znx$gxuD?I0(W$dFdSXKdgKP(Sw6ypjDW=R zW|Lh&G~On)E*q)3@}%#$eBJF+gSJ*_{=YYFzTa{wpP{Mpzu?yT{O0OnE1hxquY|mYGvQ*>-#g7&ew8N(3qM37wK7Fg*T4Lo z!PA^^pA>GN0bS+Wr1Nz&BURL*5wH8Lnksnh%Y*(`Oq}_TkUG_gj=&N+R2zA#Hp0H+ zlfLCZO=p73A+__~D!zDhVeP#35x=iJKa@VqK=%FQCvUR(0RP$;Qj%L3L$#!c+9n_b zWhoAAAqoC%d6>y{YB0>gb!xy3?e(#9$n>NUC!4_6w={@mS?+q^t=N zimz9x2jvBAa1jJerR%6<-j00HoNv;EcET!PAP*r*g$WtzlB*Q&8vYjxSE(r?ln9W8 zEyhsfMJXp=u!0cIU{ey(3a+Nmo2TL5Y8F1NNMWL!8BOaUhEd^&q#QeomFc{c6m~h; zWuHtrwxeK;i?ZctXxrB;8jk3E;#IfNULQ3d8WGl5j44kt=RKvUfm+ zv1?VIMD&%C-OcI}L}iscWEK82oU)6MIYa%srZ}@MR|7C_$3NXL(a^4US&T==Fr3B5PG)p)OO|w zPhSECZ9O81)Slru<}Il8nuU+4IU)331L8GK$#5CDQp10kxn}zJ%7{H7#bFJp z#;{k#8s(cd|E8X>j6BIF&!E<+(4aD@To^|>P^Yp!?dws`$9x~CtfvtYSE#By43m_T zkyS|XH2i;|AC0`xj|D;d=~#eLAn%pTv|r5A(4Mbx!fqucxk@Ue5gPBHsDD>(mlm4a6r zUwKgL3;Mh1aidf%%~nd4h&gG}-)*AHXBht1t;n%Z%J5XjX|27dM&RTBkGaV>!{|e;(q?TpTOzAo4#V`PKB7>P2!e zYbw}142*TBxye3Zg_}c~l^lllXPH_x&IF(TC8z9jrvH%eVOM55=A(H4!6oC+Tic@~2Q}VG;y0;uo zmIwwr9IG=3pYxxlbHba@9qik9V;~zF1v2l5l+6ouK}(pDeudJf%Vp#uT|w=L;eQo- zyL7B8dy$EP0&oZnaT{f{!;$^9Nc?3kk9d! z!u@EuVquv$bX(>P<9V(0B;d*(!PcUSTDyN=jWg#84;9Hwa3+5YYtEI-@SO+wn!T7qf&{)4zY9B~fRF{cvLnV)nP#Sp&oQUp4&4;IPI3D9UhmkVTk3CEw7$Lc!4| zGANIbDB^L3NSrl%Fdk=3K6h3M5yga{`fGC}k%=uN>81gZgVZZR&^2OQ8lEZFx@3yh z0r#JwDoGv9p2=Jh`!z7!C4Uy;C4*yAK^5+<)#tM@B ze?hQ9{l+@~Nr)^Ghps3QWUp$JE}cbIh?yg!|2=2I$NVoa$10eG0mFW>v4gyZ|3r{t zLKZ7>0?Y3#^!*35F8^yzIaBR9Q!E!oP{=NQ3PqlSQQgdfqUqlSYP&*_m(joi=4&r9 zvhfks3&m20V5?sKzsrB(64o|$NLp;m7`kxIO8(sSQ~dB;Ja87mT4tFz7dG-V(aS0I zbhj9Zb1jnE(j}!V?@XUMcOo&;v&Fe0C6gP)$-u{UK4cSM1qIOKvt*$=8`u8lnp8>F zi_#26kL7q-+Z;I0Les0Z(;Y)BZJY8=SO^fo!*a|57SiG%vwOlY(-?`rw&ER{-5YkU zI*^dMHnTV_*hP54n?tO^Ib@-tS|?mYWXYb)UrtEOrs>?!*NyjsDCsvYum~QCw-kip zJ6Mk$7!pdq!Lp)bNLV`*)-tu?9+)LdbBXbe6o(@-io@E@aHPPB+%YjsprRGAyq5lW z){0C=*k?*Z`s3_ioGuMV@Fu5EmTJ$Fqr}v- z=_4f#_(&@fKq$HuOlR?SQ?U_0a3+*KP*7|C)y-5>9O{0B#@m$pN-~GFHYa>OtlUe9 zxf6+3i_8@CSQO2uq!4jZf*ST`Z>jd86%lmX!jYPiJYdF{9Hg`#BG^ivvVMr*C=k|E zZZ$J#El?~_fjF~9z~Fb5)9zL)-BYTy_;-f7+2cH6UnH1L#9a}VRi*BpU&uCEkul-O z(&Fh(*$^wfxgs3-Y}h65`}D#K)s8@J$a_@qJ%&K15BEUc)1`(p{|Y4bTqyj0t^W9F zUQ3Z~rKZN~Jry}n*#Kx{4m46gQ=R44fa)EJyi|QeRjD1LRlyzt(F=MMbjDo_a>K%r zdq;*N3yZ-B%zFsDj*1-2MOf`R6GEx zWY{MPSb>~zPdG&4CI8Jo*+1p1lu^e9#X*ezm3b(-En zEAoY@;V8gd+d|t}IZzHm0nN#Qa{Um{?Ku$RE=UUq*TGFu7rX#c<-ls}u~>S^^&(h~ zB4<9=*@bfjKib5Ck0P?*qv$TkkxCHBb!q{N?>ufMxJ`DOV6#3YB!_UM3LR?gts%T% zq3%~*T8831lOg2z<$BW{_(H?ZHQ#SWoFHGA{P64zP6@t;?3iriR$Nne%uvQ_LY!o#? zShne_Afote9f4YLmBT;Q3wTXGtQUySVz4S?*eVg(6{v=fXat4_@$QspN_mJ@c#3US z$!*G?uyg%n6C1IjyIta3m6kX#pe1%HEn%@NQT14Owh>H9D7%`%8Sy1?4vVe`pet}- zea4F1Gm+s!M<`u!Qgnq(Oc;_O>|=sXfkzPae-T}w#E+;7bjx(%k>^7QQTPm1(VEXT zU6|x~fc<*Hh`)J8DsXj0DE%gSVvn1NJxvkKPEqPU%v)`bR3hvQGg*G0DNNGOH3_(=nrK=?*k6g5h*~<9R}`;=y7%N1h2>o3fU@PxtoS2SjsUTMC%zeWPF2KD5jyY#tQnMdh46RR zX074P=}yT-R%D_mlW?Re9GNFNx|>dl5<#pl%PWySSBWfx?tKUZ)PSo*y3bW2ec{Nm z4=E7=eMpH+{sJ}Axsa&9)2c=d|K3vR7$b6z(&Ok59rP|mEulm1799d&%Y+F)Ms&y| zwmGpG-wJ0#rAuqVB z1WKPW{m1P4gaGAMd@Gt{Su`A3APu5J=goK3$T1LHfF2b!GVV(9h%z_>EQb)j+GV0L z1e8NaK%!U#ltV~BBB=!g2MF2%LQ;oBQUm^MKUAj7Uj#{f1zsf= z6>+=-diJMz4T7kg#U^e_X64Gu{~P_`?oYJ`IpI*1!n)=xQcCTKPj}2>`r1*1>8}m! zXZ7z@u_Z|5vTMbDXYP%5ybM(@YR4+KAISdM|A+XgmIwNK^Rp5FBT+0*HOd-|sKWR?UNrPjc7Ia^@-F+t zyvo6t=mq>Oe5%pw@dVcUqF?WtGOoZ(PA{vs?9|J0MUP!LETm_ASqFYqE8o=#}2BrGuo&f^|3bs1@*CXpdij? zSN!1c__pEM#qL&|if5w(OJ#qR^RjrBg$qDp`DcfDtCMBGTr0k8 zj4UJ7E}x#bN~n;WXIV{0^u%xY2q)*E(HD)hockBB=^A$a^HCoG2Jsh}XZFdkv;MIO zd?wgXC6FSsis_fE@!C^wx02UYSoXVpGsnbxIKLu{74N~$7)_n<4DrQ^-uG5|qU_1O zD^Uoq?^nCN1oG>NK?)D4qPK5mrK*Ajrc@E#sfxGol`Hp)HwMay^DW;S6`R3^YPsMN zVzU=?+NdgejZ_n-nl;h;X+RK{_-+-#A?xLDKv5}EYaf^PDN`E#qTtYUouqJj@=rYb zGH3S5*NIHmUu9r>WHT9iRS1rSM;wVz8~@&HSuNLvNthcZVFAOtGy{t0r!!=KBoDIX)%#oIezo;4M zX5kRfCnP{3esNS+@A62k&KpA zcD9MU&NaFCOb7FQJ?Bent!#Z2ZJ0;qPCUj|yiR{Wf zMQcW)mDst=v6M_#MKv!SsNS=vvek{RY@Mc1hjaeU6lTn4BZ~!L2KI!rsL$S)SwsZ{ ziV96R`7IQ!YV+@ncNSdM(!Fm;i#W_mcOS4%?Cy~`cV|T8J_<+5eyk|mA{)1z-$%aZ z<0nG)U%zPC&)>rN#Mt4H)M_PfEDk%5`8@LOxbAegB{Np~ko+S3JCPa9y8(N8CDLmO z8Rer~#mFH7Cs%;OqeP~DrBZK_Fks7ZoqJU&C3V=r!;F{=-`^v=Xc_hvHblbgy#|6+ zNBaAVWZs*3@lPUQ3-uL`QD-ikcyH!gv`@&ap77nS6y_rwD*e>~9{hHRG;?35e8eey&##5Y}LMv-} zlgYdE13Xj*vXf{b?;lVjE*R!VJUfK!{r#bw98qw~6;RG{a*8djKra}9KkiC~x zeUVumg}^I*Ok&XPR%li2zs@l)E&;EQGa=#PHrgJP49-PI&1YdE$XT&%9^$S9$LdoE zD1AM*6L4unl=F%^xX2_dF7Gg19g}%ljt@!HurngP6l@;~gTbM;|R z&OVNfAOuh+tK-}IvcDB;C+f4r=QBBsl1U#dBB*h+zEW5yXum&IU;p$t;m;s9;#?jg ze5WMjlqIULEwxq|HAG;G;9A|Y@UT?fi3FO3(1dDVdz#j&TlJL_X$7oJ{M3MlN}%$6 za|zzOhvAfaP-cXjSyz>Woe_OYP#%%(A*W<*ReP<*bXo7gFvrtY5sG*pV8N7DqFrP2 zKsDOCDA~D>HHM`zFRc>2X(_zJIgh>QKzBao<qTmsN0^7+Mp$*0GBEVSD->j&%+jav2l#x6@G~L8e2Z<8fI?&HM74{O z@L7E7iJu6Sr7AW)o{2&sr)V(^h%}Ua(Xg`^>q0cOW5&F4%?xu?4FMB`yPdX*qbeYD zt~0={aK3Lg#|St<#N3_SsI12mnLljGjnxY@#z5h17onG_g%(D05LVn;VOGDnq>UM1 zLGXZ9J>NHf$vSl=jH+i<(*r$j2w6B&0hS757dHg5>=MrpJCoVBVKbitr!d^Cko}^v z8#=EXuty}E*=@QVl+5ab&53f^IO8Fm)mMnj9S;^QgnHKIJ zZiDfbL!kkE?bi6#f^0ENcXoWRFizw1nr)RQ1I3QFNjNV%m`uAeoxiI(a!unzjgGW4 zD>(nRUZ!B~1a3gt8VuJg?x09G6bm~EHONZ!(SKx}bH5tyI(w^(H8Tx8sEl;OK8oI} z)&8bbU?<1VO_6t7nLk^QciR}i&c(>P$v!3T7~_+fXP}3e>MO*ER;Nq^dJFVJ|0#LL zIL})0vz!s+P70$dP>!c!GUAbGHwza1p5ntisysnGkFxLpBC-w;!zIR(i*~}-s34$k z*^jAEb5W*s($ws#E-Sf8Wk6hh6R)FU+(6j5UBe|y*m~#3-T95k!BV7qTk3>ItKZXC zyiK)AsK1$G?mZiFLj4=Kh?P)>RWb|ddQe|~pT}r6eSJn_pB5df$5$zwg#R-?&leki zcCo7|W;A0lg(TFN)tIx&R|k6-&Mjy%Z$LKl#fMQS zk@z?=^!15?H4KHcppGAaS3$Ixzl9CI?@S6<(ABbDs$(A3X+km?BYowwloO6$Y9(EA zT6Z4dQ~}{xG|1{bw!j?}nMZ<$43ZeK!mbR^0v__LBbhS^?YstfW6TK6kf(-{d`yM@ zha8-_h%52&$Zqc=>Ums}_wX8)#RHr%AI_K{jWLvx6~z!RZ34h(#7e(i6vW)6NFzy> zGq*CtY9^lcrVka+^lX6C9ri6{IxMgW@_(eGg`eqGI?5q^4HUfuwY8$42;+oQBhWGtNUn`2eYt_i{3UdadQlTk zkR*D^;xNT`(3Z88)}8HGGHSi?dlL2aWq^x{zeV$RwwG|2FEfWNc(ESD*y2>t6}?DL zQFe}Zv9Q@Af~i}<@1&HL7N%(gTE!)1!}46g{R*{r?(l^oWov?VTNuU>4iQnxMc)vP6+o&KAJ&~apg`F$(uP3+XjN9K zXyg)Lr*tv}TA7*0#ds2mLP0DD>NMi_h*>p?vj>#B01E#`s<4mW;CS(!b`W(?_8plt z8>zsw_X=qqBwRSyHT0Mh~_~-N?+9zmuYCT{DQ34jKvC9fGI4 zN|KmF@}1$^Zpr-m_ihQ1Vf9x}xuo8n!s4SI3gFsg=`n{lK_Z7+p)_k}s)*vK!cg;y zSSb)4HhRewL@<8_dd^}h;8#9ad zt+I&lAs32BmOl#$sWpH>`aTSbLHeEU+<9FI7dc#P?@0HIPG>GPVO1mEQE2#6&XhvL ziq!_c?_t!^y*Oq|nwcuig+}ZRM8n`zwoqTcL)*3VYA%A?2;|%GlU_r=J}sx-%Hh*O zM*Nkd(C4ArNNRed?18-X@4A^>d%)hQZsoz*J$lKu?p;r4yF0khkAr->dpg(Gb3dCE zY55`!xS7W=myvogjuu~4&&N#5xz)0&UtfGTo1V-jcRdx3loVPK;$vzfGd>7M%JI+d z4B3C~W=Ff7t)Bzf?7LNHHnD1kQ&z^**2~oHv)mJRF|Mg7ySKcJ5vP3q;~P26nLLO9vSC4D+U;#rQ(|a;GyGll zYyQnigEFTGr3?CBg~Y^M{>Hkib1Zp?C^Vds!Gv0CsoHs|kxikura5I7n*N>|XYzSL zXEHgu2r^t0UEZNWG5tHGYSW&iLcsQaWzF(;i2orXm~BQP+uDQvR^kDtbPc;y!W)rS zMA{MZxNYnO?@RcmY2Q<9*sl`>R=4c#UI}{R1PVc4#6U{h5)MfgB!^IiRHvMJdI{G% z!3B&2k~tU#-a^x!UV*4H?VCm#M6R)oY1&^W`Y&rw35X+U?u(m<#ri_n@ClQ?9lb z)hLUPi7+2$^-w~luY&($kRf6X5CW_YEHFGk{t9G@Q}$`Y{{ex}>=<|fil{>{%w^Ml zGGj9B)y$>Dj29Mgty$!Ieg}Y7d6i2Gfe7X zH+2@DGx$8tC+>*MFj*OZDLDh^k;!9c`EDN@_RW>3UO^P*lIUMSPo2?ta(BmQu_slu z?ydKK?h>_D&Yi4eQ*Nv>yU5EpJPmOO}%Msv**mI=%)XTj)h=OCZR=IN8?V_Ci#RcHpW#%fA zj%LQPR7b9h-HlC_kjEk^i zPrB&>R_RZ>=>qoe^t)$BDKB79XyhT+*^Ea0?&<}u0BHeuwOu{_w&X2dd+p)E}B6c3K}VVNq_()PXOG-uyA zQcIIb`myVz|D;{WhbU_LE(PuDD(o6BFxB6hV&24ltvXt;mZdFlJf^m?%vz|Isr`aOo=_+XWui%zGED^Ugp-uhL@?JkqQW=sF}}uBKN+4 zcQK0u9_3v|M&6h5z9#p+oOc-`;PFPDd_I)>lxp~tfs|CKiO)yWCp)p4trlQ<;&aFf z!5@J!Vo28GS+qQ-Z>-1!^i4?tV&VlW5-lVQ;AFY2bWnlF4h3WzA7GfoNVq^`hk~+` zub@bja6yTJx&V5dDz&Z=^c#MLOJ4-lIlcifD{MF@I?vPU#TW-IS4oX*IEJBC41$$% zgwiAdoY*=q)2LtK?2uS|=X1Y7cP3%FR8p0Y!p(09LRKEla1Koc4dOy8bS9RHjIN9>2wm>D04!XqTJe5xbSG)pCth7&e@97T{wni4)w4tz?` z3@gTbY8m~Iup2oy_XYdf?$>RiFC$9{vso%J8h@{TiJdvCe&4zEOBl^r^)snb5*Ibl z#{DDhd)ef?rjLQL;@dEHI=vR2(k8hgH+*%}R~)^VrD7$EiILf(kZxf9G7SH6P_1TM z`zsWgP|zyj`@%}2XyrA+GB{yYFftU07Ql(O^0J(`XGyVNlRTIMe7!FDFbl|9DOq7R zH*4L0msRDGRk{>e+G-ZK13l1eKO^W(UlVSOZIK~9XEw3jInbY=dtYExiU`SO=9iiD z7MO(uE!e~`5Ryn-OrvSDB6NAlYIrSg%)0X@?AQ|bV9OO!>^FV45mE%X@}>LX?>5pf z-q-ILTnlY`zbiSJyL^yr*xv6+Ztq93;Kn&O3#;D`)xt6#2Xtfc**T@o?mccxG^UVL z{(@UJKJ;;F$eTnnGo!DiIFh^rFtX2cDUa#p$}9j9W_fm;r`*TY!!zAc*tInPa2>r# zPASt9MWZ|(EycCpnZev09PiMHF(k76l%0yb;VGqVJU*4>^7IA>`H&S>1r?3ra&z~r zAZ9h{yrZxi$SR+*%BWxM**QfIe}R&$1Lc#rc80pNHK8mN+81T}0S_rRh73|;sd^@S z6+Ag)aahpg#1}0#vDA7}?f>bC9lGQ`{>LcEVRWtJhR-&Ot4g{XMw`o1eDMq9+evUR zNuCe;>iDir4!1bUmXhKiE9#D&(xMAx>Aqb)0CuQE*M1Tg)KXa@uxYza|);(q?j&4^$G)9jMQ-f+Jp4<1(UfEIyy|CoUQ}Au4!@; z(aqeUglAnYkW?d>3xY~M?2g^Hi`8apbhuz78A7owqT=+mEz)~o2U*Y04JC&NeWll- zB!RlT&*i;p$K(Rs+Y3+YiNR$aPolkHNc#J^E$Zg=%<_)p&Ae2=chKDK8@V)q%Pc6Avmj8kYecGnQ z&wP5DSuotw!2OjNtI{2812ZRHirRz+8cH>LY(H%Wis50FaE63Mh0 z>jKTO54$##Ypxj8987gH=nt$QJ80g7V`amaPRR(S1e3N{XFJbOa)K|8BcX>7r+B)+ zXq*ItG{W+6?xM=kPdKQJym~@cbK$fk2!LT|{VF&*MKAGSt8X~IAr^NCI&mkl6OBE( z`+(tp$+SO@DM?gBs$ox_W$64v3ImO;LE%=HZ@7n!cj24NBq*Y9SnIokkBy_rORuGf zqL;rd-qEAA!Kwn%Z`ea*z^xQe6bm~acP7)zR(<^-={!Hiu>Ow0a={jU!wbX7Pv{$_ zbDjE4Lu(1}NXRb&$-I)e$t~n^xK!$tqg_fIF=!$W)&OH_HF*sG>n0pkr`-86I431? z=^7!lGhsAW60IJ=yS|}4pszoI2T}GpWUPf|P=(E1ZppWEmUEbu6OKd`BBK0NSF;8j za3il(HYO42<5?r1mOYe?5NLxI2tm z!`&vLPzFh^hvB%-lWNB6>!%K5GQiPKlN5J{Q4?pb$b+zR{=sV4+6BX-re`Sn4JP%H zr$XOg!K49~NzX%S!!}Totp#Bj1e(hn2Ah1Ot#8Nw{{u9B0lTzyrf#w|7m_$4*l&SF z)55>ZHMbBI)QLNHcJ@gY>!R-=xe#0p!7j`V#?&3kCeF9%iSq$*h2)fEB5@8;_hYs| zRLJjAl|e9?R459eP`UA9v>;{Et&mPg&S)|cOeUA&O{;R%`k=^ok(#nQ)%(YMvlOOQc8U-=ypjg1T+lRNBN zkd>`IBYv#(sZv1C%AedU5nJ+I6N=z`Bl;jS{3m^VGDn68Pr4Ba%oeo3*|Wu|`M~bA z;rI9f9icKyU;o)a*EX$TVxaA)y;*9o(jxyS8&sjOEf*1K~2_5^c_vu|1|TNHmoGqe^%1DMJVQeWzI zFn(3scSHHjja5I!-t%v!|9aw+yjG>ar!;yYgJUu@8CZVL?gLG|y15m0catmrQ8FwT zEDlwt^~4>_Emc+EALZq$r$C}>**|CqPhk%OU26J|YkQd9tKXwSnM;gNhF8d}KPZ<) z8u30|fAGt^nf4jeK1rlhR=)D<&B;vk-!ldu;!6pX{U~4FKkXm#WOf5#9LP^$CHsUq z1c709WiHL4efQa}#Bk-sgKcEoI1&D4Eg+`wIctG6Ql1|>P<&$!VUA?>am|}z8NtVP z=Sg~g#4%TIUNlAZa`j-5X?a#O6hr2C5ht`;qvFKoA4`q!q^fpEtAVh#_drUv z*JkJ|Z)2S@b`H`2nQiZNrS^=R)E4xnI3=Ep30B#+g}^x>nyv3gNdqM|Um*PI%VoCo zqqOm?=>hjBlrp{llIx#BWaL?h$R7NEhlo>BnR%LP;Ia$cU9S%j?&lWPM7YA&V+b%POlIlUJTb{B2ENKmF6q)~9)lX|~4j@Hbn29-nEpK7$P~ zwt2=_y-BWHt$u%_Tp6pc{9%{u!MGNzeaL?_Gm;)Ei@JHrC<|*t3296wWu@V?#)heW ze@TV9xh~WBP+wnj%_muuaL?^2CLMM9k5<3GxIc4=$iy#-pf8`Uub)3%<1{kzE^NPJ z{7FazY5FWKA5rA!+FEQm)4065lq}V*E$DXofuFyBR;Tx6E~ght>Ke^~A$gN8hpbr8 z()Eyi#{U}2`XZF|%F!^Ly^mlE|7)4dk08Oc3!#e^uI_H=FeJpNsSQ@DelJJk&z{p9 zWuByrIOOLxPt)`5oz)P{c%>P+)<54&Of@s=>}H4+lpDwUhw{0 z4eB3CcL`wShf-g8qckItI~2J@nyI-oH=y)Jm?|Onmxty2<>i(F4?J`n7Q#SnNPf_XgYhVnp)d9AopoxBFKd5Q4XXlK zDaagd<5|^(rekZ5h`uljutrH@pF^l_^_%p(ED)j#WU0kV$XQ-+As=&jC;ww=NI*vf z$8fG9mHX_Jxd!s8OVx9HbBXsU7O|MS&w~U1b&X%3FPB1IG5xJg0mM<}odf8)^@C;E z{|xzA&nOIiqW-2 zi~d%{_wUV22hh1LXtQ~xtdmz{PaakfM-unnufK&WGx$N5R!!EtZKmz|+N(1SZ)FD) z{LwW9$|q)cWq?-YyjCN+#>rtOLJYYq_`Ap#=I%U(CNcXq$SB{D%9wRj(Px9n4I z)wJGt?9?pRa*!~|# zIWpCLOr_}SCtvGK{}Kwp-*q&0MvOpxsUCA8Ti9czr@)$W~H*sCaOU&jm zWR|76_>Ty{$}OKPL;a4Zoi%nJG%(xU$m_eRJM{;K!2@i4yRIYL0x)K+eN4OwGGd*V z4ET$gq5=5B&@%c1`@7v)CCb%4l==A@l+e3I^){SJBXBCMHOq#>Mo@Avz6bnEn``aU z@H0yw*L@kTW`^rc8Z^Mcq_6y)nx!t6yfS+of z@u}=&A)3B^N?*LA7}t|EieKJI7i15xt`nIwS6^@Bl9Uk<9CgI#evx?4;W*T6y#u_L%nDs#OUS2vonXuUsG^4Z^#FWjJ5auoaH3rXW%&D`UO@-|*)f!K%o%2%+7l+ls-g;cW-3z7&|aVR#tR(t1Llayl+_ObV{vMkHn zy4%dsa(-o0Bb*xtV!3CVc}ck^yFn2xcVS<0W^wj+m=Uov?@?S|*~Q=3(I@$P)*NA( z`M&F0jlcbc9M6k;^@tZYg*Z@|B;T4&>+alfa%I0Uxx z)t=P?wdLyV?xs$efz6QwQb5&7J`N+b3nG57c)B^)*iK^Ga7oX6LfJ+$cYukbOdK;$aI!Pahf_ z@8FsR?lCRs$@Xv!v}m=8=u8Rv2=M!tIQ5;fl;xDXWEDE1mHCXzR&GM|#7uHn)@BQh zaUe~}^h1p*yyPuWTMb_mEyxc;Rx~^*77@y}b&?gs*C=XOq9N5I;cJxg>K%hbz2q## zV#!_S27zL<_&o}V#e$W#PQ94b>(rKuzVc`EjbU4_3@|si z1s|v!lanCYW(sA!sJy(NSzJLX9W4btRr*_qt-SHlWGd;21Qf&N8(264hKp;ppujU< zQC5m;xJbTh$d?UL601gRAZbmi4kt^a7o$J*^}|JDYMeOzy;3c;|Ya<)|r;&pT)1~;d>xf)5@=wMDB=ni;>i* zEHl%;hhLE8Sb!AItowv)ABjoxuWE@WHYZH#$t>CfrB?!zW9j;eD`frje_^DZVb=B= zY3CSd4|ItB`KW<*4@0U9v_Iq+@xK6cK58Z-#d2^nF-F#ecdm8qdU!%K!U710{ZpJ5 zs+Kcl5}NPAiPJCSw>9MlMY0#bi#Q*LqpgNlwQ(tSMm8qf#E9XXr*qx){DgSDUCN9r zu&TE={7q2EFDUfHCzy`?iwRKx8Cn#*ElMHeY>-)GCT}ZeCqbKJ#GaEyhiTtd-njHa zjP#%JC5Q5>b|6*TEW4Yr!!2CICR*o(X7Wnru$Nz3(wkbb_IqPBMfA&%RgR47UW)KPRl<%(LnPu zjD1x*?Cl}84AZ%RY_D!xTo!co6+_ujL@zr#`57{;)ozLReUgTLxcJXmxyO&tb7HKZ z$}=or7@|p#yegm$W%K~xYkD|-5;OfRzT~Gc4)7#8qiPF@_V()|6IKS<7V&SN9w}KV zBNwRJ;Y`**B^<#lrv-TpbYW@fN;pJjI7aStKZI8fp}-hI-~OvJE6!;DB;>lDiU+Hn;3Is0^>G_ zA>@)wl_UB}IEgDW6ltlAd<Bn8C)L1ua|IbPgOG8$LGN;p>o zOSl%6I|MpE3y?`=>OoFN?wIaOxQ^erie7!r6ze=J2OnOfkFHFoxS{NhLKM324YF8% zK(Z_QEoGC)?;d&#{PZhsN9NgW)vHuFe(5901@!TQ^zlhk~ZdA~Og2tD6 z<);x^3c3OxFJ&Z6er(Rmi1li6I*`TR`}{vbciu;WaryTVd4!V@uKkx^csZH*GOdOD zTSC=;(^oxsR&(1DzMqj*Yvo7?PhvsJALS6%d~8R<-fG0&7D=Qxg`o;RWV~Fi^WvA| zaKAhu4LJ41#2Hi_am?X`o1{s4HaGJv+Cu8gB_}3=WX#L~#Jd=~xueV{kw2LrU^#pg z!WiPTin-(fcr0gPL%N$UR&E(qBbX3yvgMEZW|KUFR3>j9ue0P;h}+21w2z7+U&AXZ zbC&URlsA!n9G>msOdxE#MRwR50VDiy!Okfd8q&7NXw<3GVVg>%1jPEy1Dslu?(k7> z7iNAc-^Kawnu3f2fWu?lHd0T>q{P6Sj2}1^ZyAzVL<+D$`i4RcT;+VLULU)+phDXy z-fdH#*0ZgqIR6t*Co?tVXXB;mY7$*9=C+z4F4`cBTIC#;<;?#~*(OFrAvcT?9Gw&& zLAd(uhIjJx%=E;-Qn7;k&tJ7)XjM8^|c`4wF+vTPAg5cW~yor7*LZOhdK? zn#mB~JV{O#oBB$L4MQc&(jeq=CfqFjf&T(TXZn3wB3q&tH9oDl#}j2E>E5}*LyQ)g zTvn#^TnU(dLQR3}kSXPub;1Herd03~9b+ELZO!+gpUD7^AC#W?P$8 z-5sCin)B3UBd{n=q^DK5ZV119j$6lEi~;52XVW(4ex(fgL)jeHTGg*Myc4!hNhrrE zx|018ilOn|Aq5Rh;8mPm-ltYurl!s|Kg-s-=Nb89>A~ZAFq6HUwO?{(U3H5dm-EuH z1vg*z^#`}s%)Lr_Yacs%Kv!NVtjl^WdCmwuaIxf!)MaOrye7vpRY$T{@L9h`IX8tX z|NVYh5%Tjio`d|tp2u^5U)8z|eE*B_MMmF4dza(ZW@ct3P6rV^B=arGcfbG1KIIZ2ZvTVWk)2J<>XI3x)IEI=9LwStcyfRm_#0o%nXL6`MH)q zr4${O&(jqcr$zsnO?pInwvr76A(WZVFRjSb2;p#;@2klC>Se_M=h-!9P2=3`vH1lj z8kX5(*)^8qRd|j?yxBD~vaN97ntZhkfgFm;X_fwoB`ExweFlPu6VgXH_pdiCrsK+6 zw@G&V(Bi$>2q5tX$zbuj!FGGt-y+LRVwEy`2#Lu_0i*|K^V}ZTHFcRQ;F(-f^;Uhw zNKk@dkpTR9Zl+EWud55nr9~|=PcssBWonE54{z@Q7RAyu3eWD61pyTUqOOVxVgMBs z6a_^EB^U?>f`ldL28G#O!^{SDf=G`!N6a~6P8d-zV9q%a%!*m})-208@A13ez4!Ug z_x!`N^mMA~SY2IJ-7}`*Ees_`lYKSd%c}=-6aaLB@+?S{2Wi{@*a4o>l(&PB zP`U`(U<9m)urNVweV{V6qpiXLlGfNqn~1XMLacI6K3DDH&gahM*LOJS2>_~&nC*3V zNYDo6VfYt7{u&0pNulMb@$zaOZJ2Ph#L8@`M1`X;jxQ3jAbhQQRu7$(H+iY?>#7l?*kFJ2GWCcF=y(3Asi6q^~!HS@F-K!tr<@s9sT z{84DW2s#@V8p~j1w1FVy>;KGB?g<#H4%VI@05f6p{Ytg>jlqh07BbX)pOrTwuJ!W? zpnRqd>JbX9YdUNXs|WBQyp2m{O$W3DsRC^JQp$KfD|Afo{-#j;8r98jP{Hury+`>^ z{taSbCjv9Myc)daU-___`NJELsR zOEutPB0epz1Lm2c@w}vUA}=!60eV==rh;>FX1>FdtFY>xbDZvG8UvQ4;Dyz?c7BKE z!%dt1chvPm^E1WyGMi9AWvKsEkgY@RU|{xOf9?_Nf1bDrW1{>Rw4`ZXorW7QAOW0_ zisIbYz+q!iMBejoQAard56kNh2POMMG*oeGT_6Q9_QCtT!51ok-F39P7*aG2&9@AO z#Dns~#f^K2Kc%nuPaE`MgGe{kv1 za~LyYLh>C*NEVuxa4R%V`6x7xEDz6t25ni}v{h%7fmd=ovfB4ZThPnIeGXHMb z79x3?>3Ik4yRz2IhW~XOr^A4RMc2|6B6)#UgZw}tyaGX|mO+epKKq}9x%2|+-c}nzL#&QfnorU zHoYN0@cHa>H=L8456urWe1w@-pSSEVobl+{Yy_lo*dH>=L)`;LYp0W0JVRgdONXI_u;>%ds12LPV@;THTk{GO&)8=w?$9UMQz z4JYkk^WFgRg!|x4D!HAV*#Ixw8^gz0)V1W!F#xqEjh+3U6*fjW8O);1AP~-2VFc1Lg0Jm#s+7=YE21}@lzg9uzV=r=){T;U}|`N#pf=h z%z%_t)~533odjJF%p60n8<_G#RUuFR^DXyY&CK z7MzOlkoNEK9=iX0g7`{0T=N)qxU0FARTut_=jkDT$r7~uESNd`o!{e)E&+UL@|&rl z9YeX8au8ASq<1Dy@aUqjJTQ=411%8B^?w9c!vSM=%jX>5EE0Bv-||Fkkr9cvHnHyTCe8y ztkI?L4aC9sq8(xKxfFxP=;8_g5Ar}j3S@Ly4ZiY0VBf-jFS$RAPs^=*8Nj#`Ui-r9 z-&dIO6&B|U0%w8swc0O`11Ed5>Go-#D>clV9d9SY>ud8))X2G^F?d2|x-ithe`z>y zF645g00gE|1kN*g)`2H*zUdWqG+;{#BLR}m3`@B18L{u)2|b&SATo;Kb9&~@R?UL33^;Tli4B(^Lxf3y?d2lt>r zw@uJ^#GJzH&94P|z0$eUnM|?DoAA=tyyBYiOdIjDfcqD8BAmj>OR_P#{Hox~VOfvI#W_4Rb#I`B3G+Z; zMB74+5Zmi$!}5eL!o)jDc=C{bW@f>$nrP1n)<+{c21#rL!8RJK=}bFdzn&BgOpX* zOgtAa<#vgL(5idp_VeI(T?4aSU<;?TEU$tATD!o(ey#j2_+fs)@Btd8d=4Nh;Jw)L z82slSqs#qr00!Knj`!wUZh{D?K*M6orSQg2kH5hIJ>?uWLa@>0EuZTyKmK5Umag}Y z7-e35LsN(L3Kd+|`wxLVh4K|2IjM0Sq2pYh1lHW1`ycJg=MPN{h8)M?+sTgmhFZbD zVE*gtcz3vDrU-635;O)iV4d3bhW$-Qevmy}gAwL`S#294g3m7apUAcYg+Yk_jUe@8jTU7l<++d zmjUn!tD4Bmdmqi0@V~$dPqlQZfp-NGfMJi*pYWi+`|_PW$n-V%BItBb zIEC0X_PJ7J1>+6+`*Tn`G0+)Me69)w^GQ%VysCvs24kYnCd%w{7l5B1ZtBLri8SYX2!c$s zI`0y{9{e9hVa<3*bve!F;4HeBM_#FU_)(D961{y6+Ku4w>>9b}R~OLX5= z`24)vRq%Z<;O-KhnF<1|oT3y8K=Z1Rzt$(7J{{xfQxcyl&oUg6R1AU?<}CnEZ|?HD z6n=BVub;dusmL03?q5d+j|u}*hd^F2m)#^xU&+6O8SJpoj{I9qg!*Ne=LtR#u6+wL zRN92+T^o9`7DDjo{|X@Ze+PgMgq*>{AuG^7C{4v2(}oAA5%_`l!I!Zh@WEG}pZmMC zGiMsxL_)=Q_xIC(x^2zjweg+I{#v&-{R4Bpi)MG-AO06+|9rFC&U*&Snc3(Rhr*~LcGqzf{;|MLYI$n4ks5ndZ#@JINLzx*OolA=HSkN)u2!uiV`U5mdaf6!lk3sVx^ zAAT&pHhoQe!5@Bc!aw7&#DDr9{oyZ2`e*!K}h_8iT8*lwbd@a7(c-ueX>-^!b#sBC0dAInV z^P_zGKm9?OW6vvi}@|NpleF{J-Maj-HiOCb)Cq$<)R*<$Zb zKE9oN#2zUUJlXUAR-S%}@sqN%GBR8}H!NEG4`}~8 zkEPC0XNNV_HOCrY&bqETKdcw#uk*k<>e}gAVX3-wOp0acCSs&ct;@!SU@^KR-6(9Z zE)olYTPIHH&S2-UbGlpDecesn73>{WtuyMrV^z90*fZ?0t^ixB+pgP$9nu}e3bCEK zIlB4SQf!fKD#qzpT`p$OGXf;Y(=QY((=X7^7VHr0(I3+v6l~US6RZ)e)ISnD*T2#yo>2<{1P>(2@<=!^9y1VMuS`Y8P%!DxM=AX+d~pQBd^2*D(Mra-38 z(5DDm>)Q%C2t4&Y1cCbQ`Yr+|fs4L{-c?XXUsqru5a>k)E0Mj(*3ekg%+SbCPvkA~ zHS{qAh`bD)MDC)NhA|?EL17pxnqtt1aM1+Aa6_ypUNq7WDvB@+H1rh}iB20X8A?QV z4G%=uM3)U84WC6nMc)kNqSuC(h9{!chIOJXqK$_Aq9cZVhFzkWqIrfDhQ*?M!*mfP z(i?O_I(J6yG~trm<-)nbS-HD&_X-aS59DqTZp~evyGr;p_l5A4up;-X@K^4a+z-Ms z;q}~yxp#!6xfg|}gvWFH6G6$x^A-p^C*xTPIhHNSkz}hRY2r*tGC#wl$&=te09Hz{bOlV4v^0ra z46`LW8JC#D%?11`YfiFkyi_7i&z4M3O5~}N%*pnBdll%$Rm zrzdAgC26(w{RcWRR8^5`Dx*1DN^+VwCpB3rNl#A2p$)QN@=e6}P;==z%Ya6RVJfC% z$!jXdN2X^d%Oql{M4o|Xnp0;and+AVX_a#P?_NUS!{lvtsH zQJ@6QCQA-=84oq#Q~q5xF|?C-&~S6Bk>G-f2c`yT!YBAmfMEsKwPWL84KIhE1lGnU z@JoX2_&xZI1lh+8-uM$9$jjg7UUUcE0S12;I}b;<=f8o)!{K4@59AG6`u`!nIq&}o zuZ}l5gL>$;|4|pn8`J`D_J%Si{J)i<7FNiXnzHic{?F$rETY#Tz!&yR)ga`02!~&` zfgRKgkPc-?=slu%o)SPfS>>NObMjtMT0#4f1Cdfz<3O>rT~5k;9m^~_b&r3;RvIV zfzQB{5*W4=`uw3IhP4Cyy!FN@Nbh3C|8Mhy1(ES7!14$D%>jQuI9XCu7sPKvK%xSc z_XSD}>(COzCP7#mzz=$K>?r)|oALkK{8s`0Gk{eM!h}+omKAWwL|q5NUWOTsg<=7w z2Rbmd6^1o(z_6x(|1_lC2R~>cQ~Uqh{Flu5cL07V;9mp-njh!i`+^Zqa{-o}fnmE_ zW7uIRlP%z11bBDA4>s*4{Qo9DOgUqzx&5;MzY$2w@FzxN0Faq>y+C9KW*Vw77`D|N z!!qnJ>>ZR#0eCmU54r>UpU8g(&^`iKEdf6R_+4Q_4gi0SFDQbW2(VcrF>GQR2)Bj% zM*)8*#I1xMbcYH5zs-Lf@ZSemw?OfX0sglSjYd}}%M;Kl|7KMeS90<0N;e;l;?^#?}d-Y-U@%EM?pT3>)Q4974Q@Gph2p#}Uv zkuhGy58YwH|8Mfclr!#wA5YH)0R9qKt}XyUar$G+=8l&O+gH8LuatindLfi04kYY$r zL3)@9Cj9><|4)Fm8Gc6qRw3X|fX4lG7semZ;Jyuw#*T1i_!{VaUjqJ4P_~EA2U{UM z3F)CI{Kq{1b^f&gV<*6p0)GBFqaJ|2F3_L_PSF1%0an-r=04zW31wRa_~%1)kH0>E#3+h}}kX*AXcp6CnUHp2Yx2x(dXQaPl_gm)N@Cj9>B* zwY9aC`4Roc12HuZZ~F9qOT&*vOG}~YF=zWPj{Se6;S>Is1Q5XEvVf-sl2GtppMU1! zfe0~?`Hz>v@RAo^+QR=q3kmpD;_pWw6j@mQ9c1!aS=-p!)viNSHi0f`>{ZRp;bfRJqY_%+65ah)C1n3UXmu*>KgDEfXB?> zF&*p^JZr#XMIA(#89X)yJ`ZRHk9n7ZFF! ztSNoXHpC1b>j<>1ru0Bxpyd7F$3J}E^8Lv78Q)iYAMt&|Kc>EbKH%G)Z*vQ1Yf~HZ zZEJq4EG;c<;j!X>mewL$TYD=j_|<_HtOujR5q>bYFnfD@%*qjdRv?dnq*nH}RyHuA z9PMo}t9txO^WQ!KegcRvm?=VmNGO1rBND-jNMs?jfLi_a@KcG86Y-t&$I}4%vDt;S z!`-1z+bUBAbjU_I9rZtVc7k->Zi=^cn|mY0cmB3!exC+D@S7a9rn}^5_g?O2SM-8> zfz@YJfpyUHz~t1}-kk!@_3mv9>~nZkVIRxJYiI@=l~*LyM?U8g3-wXGn{AGIG~s#_)Gt~OD!}$n+eh!z1Vvx+ zjg9VYBaJ>(t&bM{UJwm+kN%u+D%yR|ooM&A@1qazu#VXo-8`n$**E6e%fT_wE-|<6 zPl}QLni=EfyCG&jbu6ats~a(I$G(a25?IATo5c!qd}I4XM#OdulElsrC1ZzY%!>_N zx;578<>^>x&)A%!pJR1{9OJ%JwTs)eDkzSVkBm!;%8rBclyT73aZ34-xF;)b#I3A& z8+UG%MSRI9=lD}@&EwaXw~vQ@h<~#zB)%&Tr zkx(&qbi&dGSqad$2^D%OLDqkEg37rd;rsKg32#pvN*J`^T!LW!%>?N8goJ4y6W+`e zB<^0}n7DRtv&8+^y%L}O^iOQjAv6)jL}J0Jw8U!_*@+)}=o71F%t*ZaW?7;(W=rDd zlLr%Fyd<{Re>1Tt@I|6+>8HexNung>Pv<1IK%CSnymJzarKGC|!jtY!8J!f~e{7Pt z;iRM?Z`h=37v?9eEnJ%f<1DG(!jnk_bFU;NEqt65y82yG^d4hUpA74?#4mNzU<{^t zw`!ht|8Sc$>(L$4w*Ksvc5Y>_v{8dX(h@!oPJ{88wsFMhwAXc0)8?NYo3@J1PO~2{ zIqj-#ZrZ1^yfhfQX}(#D(uM@AOgmV2W19TMjx_1<{b}1*6s7s<&!)k+PBTW_O6%?a zC~a@M^0d?@@6tl*eoc$9!X)zqHb9Y_By$CgB~eylNyoY#l1@#$C6VoVNT&4&k~|3y zmB4(ET-S_{$d`_hG&+(gx%6nfWRCSDNs5nN;-8o&fw?02RJ2HP{qsu6p3a*jv&Zd{ zWNkVq@qcwfg87t6U>->_Pu`VSIzN-lOnxP?-t$S4S?8BzXPRaDqaufNm}BYX`sV3} zU$jkEM0QU9wZD6MdfTA%_47m1kJ=7RhxwPD@ijTUI%jP9un*bkM9!4-311B9oi!+Z zkM+ECn49U2t=FYLD%_SnA#7iI(W7JO=O>>{pWEnidV_tp(_!AG2mG!~zqj^dy7!Qu z>At@#GAg$?WDHJfm@%?Jiwv04850=qjEVjHGunvyW++b&%E*{DJmdS&_>2y2k_?#d z85#Rk8M0~Gj5b)`vmTIff|dN0(@6-o_Eq;k^^2L$4)E4dc?K zKzpQ`WeVxQ9=J5<+C=Ht38eI-W3DuOJ0leh$(I6MlKz-GR~q2INV@jHGHEY*mGpOq z_0r1go28g;hZJa*bp6c(((d$8>6@-6rRSd(OE1qoFa0s#vUKqG>r$X+(h+G7r45=s zlYYEXF0IagEp0sDgET?#MSAkc4=K<(*;{{0S>ZQZ*}{W$Ws8aWvV(mZ%f5)3$%dS3 zDFZqvi;MG;iNxNrl8SD!&4vE5b-LcN0}=gX&zpwIfJVybLqla>QLId#G+NfO>loP$ zYl*DjewIvID3<~KlueXOl+Er#%8t3_%6@%jWRchMWjl7wl(m{YPX@GA)+2g_?2g|W z8FJky3pZ|+xjx?|t1jIqd$9Yk4Ct=xI&(($WJ0OzM?#sb#o+6*2>&}W+T)?DxbZU? z&}3Qq&)2dOZ$HS|KKmk@efy`(qD&wsi>>6pj@6L^y_VY-y2zJqca?YE(n4Om(OsUp z!BZ~W&`G{}LsvP_a`~Grf%5q~`pWz487Qwf7%rc4e5gF|T&(=%<+?QP_-?wy`yzA~&@{J|y<&B?i zk;D2Rf6{QDyl0ogaxU_?{KmL5@UE;5j?-X;_8XUiV^RcDK0c`t>_l%p@203U8M{#elHBiou$Jir$6c3USp?1*}JkEu-TVar2TDZ!UpUwT@KrWZ(ovZ(60G zPfk(5TBW$rmr*=0giq^V=Bw=_VoG zBi0f(3T*K1+wAa1qa5(>)=oIHrydS#BmTy@FqL48Pt&jEl-z;RU)j_*Nee z9M(;|;k=G`_CRku@Ou|rwbd7Ik=z6KbLoj6J{O3?nu<5*)(?MP(I0m&2*oeQ4#rWRL-29ra2(cKe8rm)`2F>x@u|s)ctO)-yv>bNyy2{L91qXJVJ*h-Q*ykaegfX6 zH;%9Pp~9&HlkgjA0-xij#bKSsBll2vxRS;9`cA{AeMb1%eKYXvNwaaf=R6$NaJ;H$ zG2WY6hJPPefQ#){nVe-xhP{dHdbENG*tqxp{#D-Qn_50~y*>rxUa)N4{(lbu3?AK$0@@NxWx%h`l3A~L`T|_7+ zuGT7VGr7toV`=5l$f?S{UGtUg8c$aO-=lPXI!D>)+e_FXa^sG|u zTdK@!bx|pBx~#nQ>#7oXDdoyLx0Q3w-BUi<|4=z|!xQC_h0m21dF9H|NmWYVvy|iG z-z%dcKPmHrz9`+hepfba`%5Wrf~lH2h*ZFXspeJNsNyT@sI(93s(xQ{R^2ISpsIJg zk!syOR~7JQs;6tks{CcGRWs(bRlVgrRhyU&s^i+us&13IsDO7Vg|&jBq1YJWqspS^MaF9g+VDQ;Q3To zP$szJRJ()Zs=2`vR2Tc=s+175Dr&%F74U;9zri|H=SYJ}Ka^2*h{;p=j6|yG2{Tmv zQ)a7xS5zI6E>um)UZR>iak+2XR5msUaGXZO4XDZuT|%lzf&o9izLet#bm@yQT%If!|eI9qOmveszF)%d0T;Z_5bv>J~%P%lwC{tA@v_ffrUA z^5WI!*CeUO7Nw|1-;<~dzGkX>xJcFRT@-5Ilht3OO7;C|6V(kjPEoHe)~F3H^y)p9 zw7O@TscPV%)qNz>)ko=B>KW_is&^GHPAfuD0*EQVsmIIv{(!I(*(H^^W~p z)fxA8s1;bDy2O2-S`~Is4ZOGd^qeAf#(|USQ4i0kS6G&){W@GwHy>W6j+=Z{4Sc!! z=(*eKSMTqs$GSdJ2lRWY9wmLDK0mKQJ^k1#HSp|e%Led?(cYicMOoj}4d?w-A1*Sg zM}nG~v=bW~*2J=OTO#k59kG0_J#ojYF46m>BLTcVq4`jc7&WZ{k`v2-P3|7i)=|am$xD&>D>vtrfrE6h3$xyk)8zX5r`YP z9SE;xorn$lIuqf;e27M`yAXC$yAkfK{Rr4U5En-J6A9G;MEzO4i1!_O6Q9raAzDd- z30%;RfV~AVBVYg#dvhSs9}go&IS(f0Zwn{B4UQxX6;TB2I|#cr!wH*{(L~4OSYo0v zj;LHVlF02fnh3rdPr#mp=+a~ik+wgXI1-mi^!k!UJei+PZ1c+`3T|W(uwNm*G?WqX z`{YD<+<0Qq*9pXgMLC2bKuOHLt0G`8LxeY>Zd(*i{+` z*yj+fIZkz5h7d)g>yNkr&-IoYe{AJ>_oLCst!Gi3^*{3AeaPV!H4Z(PrCg0`_slG0XSF$(Bj@&MKu&w(Lc-pVd>r0{?EBM|EZ*!!Dn>Ua1L}y$_J>-M zf#X_}ux}(Ul(r=Y5gue^hxX*Q`(EVy=^e?HeL9nu-g%R-rzGbM??!gC^drmnb|=qd z`jcl}dy=ou_ac3@y-C<_lAWFflMm zeTI^KpARF4E{Y}%5wYYg!3Z*H??@8%spPsA2_$nZk(`=0hTPgag{=OVN{-nmAzvqE zkg$g(6(wWIG@X>3;wLBfyi$*px>uPRS>mHs#1;SErLSnn}XGm{k9sL$2O8k95&7}yVsgW>rKBcqISG4aa%SmD@;tqoY#+3i-1vPRIe5?^qoqVXsZL(HNz57)a(hF`u% z{+#iEycqe2Jnry>yng;E3Hx_4dGJf}wp|68T~bMUO?yRJ4SGWg?cR|sO5T&Ow>IZ8k-tMcJu_8oMEE%8y8H8rRhcHd&1A{f?+6Yb2fGEv=hoPFX zYr{0QOQSU)pU~WHKSDF%!$^(i!OzQEnLS{lCf#YWX4IW28rd3BQy|xBK<1&5 zhzy#~7bwk!g^Xrm>Qqf;r)ipr-|{u9>8~oICfB8!zJZRKZA%Pa;J=!K+Ewu?&*4m=mHrn8=cG|}}d+mzoy4ooo zPFj!!X}Plc+EZ&>v`r>8(xQka+UBjAYA=3v(=I7(t_3-fc9yc0_P`)_EhcWOO{;FF zeOclO;a=JSs*YNaA!(bn^3nQ!?V^=l?4~`w#!uUIN)PR+p#j=#k6v1kFKIn)^wD~6 z4c5j|{j`fm_t*aHGEh6kE==3_$sjGrp0rzLMQT@P4bkok9;U5m60Pxm?A>H7QA%iI*J-p7dYv{UK36-pJEeVEkI{mxOMB;Bo>sp$ zUpqk0X+08VXxsVE()M$iqb1+Z)q)&M8@g$s_BOLvJ2iEwc6iWoZLekp+P>dcY9%*U zYe7b)70zC-B^4XB4I(yc&$i#HU2L;mJN3m5?c7tlv>-pz3iW%nX-WIF&jJr>b#8~X z{y&ar9q$~|3J)CDf^1FOM}1nG7h9}->w8X{<5H@vUwvL%cI~2eQ(>7F5zbmy*9=_7D z$KPl{UZ-tKf6$6EK54s$eb$ck`l>zX@Lk*X-4E^dE5EcL%hT35k5QA42&gaHgp{E` zM7hnjpiUVqsmV$!3gmp0^GF-&{UBTFQ7=2{ey2KAx!9f()OVmfE$dPs1Ef|~I8q<) zI#I(fI#b7s>QRBa>r=&R8&F9LT_}(bQU}OJ6fwRr6`tCJY9H%LH41A=Irnm-Tst?T zKz2yQxU`_A+K8#MKg3j{w=JohC#|Rl*IQGu=iDifD^e47w51xXX-Az};6WMkJ*g;d zd&)D%i*nBBK!MDWsuR_TYSyna71-UI8t3Iht!vSRdRMQc9OF%C62JY6~`)0vRXO^i??Z@^J)JbTg9La3P9XdU6Q0 z;=oX9`}ScJ$UmuXOQNYRvty`9Q)8)%nmEc^If5z}HH z(Ku@AJ}Kq0T}JI#C#Oa%S5S55kEbqk6DW|kQaUn+k}7dZB2!Z1Bq~aqpr%&FOr**p zCQ%@ZrDA(ep|<%ERK3n5MYYpV7GfhaB~6v%L?1|`#|;FI|jaTrmj_HdNz_URP4VFvYj|cjU2j+G7Mf$9qhk?`rW610=Y1? zz1u3PY3J3{JkK>$Q}?yh_U7xTAx+j(zw2+HKxRzk+HRsoSZtcz0`x#`zVk#Q&vX~P}}w&q*4nH z!ChX5sgIkFP?y#prS`8rMu8lf+O_03bz;E@>fxM|lhF?WYkmv zd5&s4xrAD-Dy6)0&Qq5Z7pN)Hi%_>q6v(fsiz%0>ZAn+CCGl6Oc_Xh;OJlE7JBHt& zE)Tg$foz)!7<`-3hu)!X^uJ4W?{|+{7j&O$+4}*tvFAeyaKkIy_s_cGHFKvHPZ*6{2mNvhs zcGgA;}*9b0$$o?RQdvQAst%Ap+%GJiV7(UV^7)SiCl z>_rc%-+|uIpd;P7VJCW3qs}zw1L!lZKJ+-ZF0@0w?0bVkRXbYACP^j@Dp`hC~lba%f#H0TlN%79=xHn1;!u}?pGc;68ESxA3c zKX3r;HE19WItF@8R2ZEzY!Dq8Gnn=p5l*)s9YK2~M$$c!qiE1S(5j4~^oFs+=ohl# zw9kZSn#E)2N_8wfYDydpx(PZlcO?CR9!1a28%_7&;^}WQ6X>IJ6X}@?lW5Re&?5?x z>8Ld+^w15d^q4JaG_gZMuP#idZ|={aL8n2d9?zl=pB_t#OUBW&E=uXTS7r3Vn{vA2 zJp~Q=4w`&Ef$m1|(?^rBxXdZut94Z09|wf$uJsPh#1MMHvibtCDK zEj9GIwp#kPmyQNK34O&cmyYUXpl=0Jv~(a%J47(_!C@?&Gh!+YIuzP2Z5sVDE1$ls zK=c_UN1vTCoxZN0LBC~Z(x6|V2hN>MQ;X-&7YpXn?(65#%+~qzr`-!^`N4%W=w4{1 zcro4P;u8AOwWTzDcNsnK$#UAIVg>#7Z2=8>8M^q_D*Cj=8v0V5we<6P>u77&^|Wux z4Ya~zBMmwm+PeE@TGD$9eX;*mIwWEneI|N4Jv@E~{W^6g4f-6qU(RkCn^H)h%iTjS zpSG9Q&fZ5$7w@Mfs}9hh>!By_Iz-Puc$hwV;t2hrM>e#w}`&+^f(QAAbR7c zleGJd}}P z5z>U2HN=&<9^aH{ljX+fmCYE?oiU@Pw_t897Bk7~TQZ+_w_@fOwPyNWaA&^VZo`0H zjhXhb9g~K6GGPwwnE+QW#;;umCa_yaW=L=+26S%BqS4;W#Y`W@QPqVRZRpDEn%RwU zS?c_hCR+#|-Ee%yjA7m+>6Z zkMT+jVf>~2nPHO$FzTrT8PMY~Pu7Gn9=iuIlaCK(Ze0pzf*wRLg|8x+u0Ns}(D50Q*!fxZ)&x5Fke-l>xr&^I#I3g zl#Krjj)^Ro&d7JpU>2R2$y~ZRi*bHFn@RXQhXEZX)2PXOhHk%r`Q39NlN+&!aZXyy zY#zUa8Irq{0sSU(Xzg-Fzi$OI{9FOk`R+=l;pw-6zw^cRdq4a04@T z#Oa|@$gwUq(AC^NWtJ9Fap4yNC$olM#9T}-BPA!FyhhuQD9mjRtA z(=C2KBT^h-?&%LQ$LAhmcC0_lY&v*^*>T}01Nv0v?#CiVXnlg|>UxqPE7ny6KG6wXpOrqBnrc0lzOugaP zm|yAFnGch1FdwJiWPY!@#ej~M@h!c>BtN{%Ec|$nxo!P`Y3ufoA-x|l4?`X^puc5K z$(}L;a-T8R=09hon_n=FMK75n*UA}HMFj)8UB;&VE9ObN*UXt-ZuJ zZAVt~)`>lBS&wbxR-eu3(ty1a>cWDanLVp)#73dU?4wmpSn_}?>t5EBz45}0o&BpB z3p!}l%S+5!_if3(8PSS;q-f3FW8B%N%i6G?3fr=vpJsbJ^yUVKw3wmufY;*wYp3{@H z%kRa0Ulqt!AMDM3ztV@bs|sR4=gkgk+K-*wHH0l3+@JlLI)Du&2C}Q>hO$;$!&uOV zvv2MXX0tzsvjWFRc5%BXws+7F_SJ}??3xL~SkRTTzN@2Ihr==KyKAxR{nv5qb*qu= z%@(8Br#(iqphsuj#wD?+@MwpCOHyCpM| z4a&`8A1xWn=It5B240e~pnqpi3l;1_xACmXZvvY*B%2*NHiwO*a5iSSk_Fv7Yq+9j zH@%w3-nE*{HflMAP3TFmTVqJpX1s<4y*+zxjgE~yrf2Wm&SkSc8Cdv=8N1e#VTXsX zEa>#vi<9!$#dD{z+1vBk;U$Re^PFRSu^Fsi)0r&j``Or`vssmN4qL#^Wv{K8$JReO zpN+r0fZhISAq%zuEbg_0eK}w$o0_tWtt6MTQx>gY8}2D!50|ZE!A^i}XS0T_YQ2^{ z*k>I(XY_hjt=_<<&DqGtZ{Ng%4FNmuEf{s01-k^OTQR$S=UMj1#dGX~suI@L_B`9W?FE+Xcaa5~1-7ZCjGeUPGW&S{ z6?XWItL&wZ*VtI+8|;ftH(9V}VB3zp&0c5kurt=)Wrv--$BG}{XTSV@z}|Ly#Dc8@ zdw9eX_OR+HduHx4_U^9d?6zp;<2zq4RJ!EWgKi(NeIH@jeh zk&Oz)(9N3|O3M(SFP{YnY%7pgLlHW^R)lhVEl~5*7U)v6C8C~LqCU740=o-za*j3P zTHBz}yKPYCezwTwsx5k+Vu#LtutQ*zftJ>@N7Gl?BdUu7(w%TX`eAhu^Q11CmFhoEUITA_a4tr2#-H99%e9Zh@Uj$(7#APMakX%JM{Gzk8z8{Pqa!N>J)nFEqAy2c*8#0Zkp#5iNh;5go|wgl^aG zjKJmudH8vwxMFXVKf(u{tnfjCDP2%M`>tr(vaSg1QIJPbH>4Tri*7&hMgF)ST5j1L zSug00R31GL*s7r9!T#vsJ%5xe4?yL{0EEx#i7Z?9LW>J~A+TdX*KP))Nm;#7s~^2l z8R~-!&4W!9Xuzx|Rp9Y{9 zW*`c09Ew6Wg`%)tVJPZi7#cZd5CYp6L{fv%{D$GEa6>q{84!Vt=Od6;QY1=vABn(j z23>R+g6eJ5P*k%qSHN<)kLOAxvxL14p!w7=muD+AH) znP|qoOtgGZ7TR?`3zdu?i@?4I*)14{eA-J<{1GYQhRD!~r!w?YB}YB&6bNj8P_g%T z)Zo;3lpZ$$9j=^!8f&uAMCTlIe@zYoyCAfu6i1#(O0@EW5;bE~Xhjn>YO__1b_7jC zU^9fSXG}u!ACr*%jLB$wt0^dM?-V2&M4-a^1Oj^^&>ElHSxzBZUlya1{3U3zcq!_%XDNCawhVzy6w1h1jyl_{K;M_HK&3tfsNhTinml?X z8u@M|0(&Xs?z$Q|ZC{N9A#2c=TWin<*;@2oxDHh>Sckxt3e`EW9yN>GfV#fgfFku9 zk-Xt1G-vZBbU0`;0y`_@Hf{?Vj%`IV=50k~?YAM9qHQQKW;@zixgCKG7K(G(i3&IE zL@q(Q(B$j8(6h0-A$=h#o>z##J_{W#+JgdP_o9^p;sB8m~%gQ5GA&Y};F=aBunbEti< z5)^Tz1mT&bsNi=g0$VX;<#hoC9lwCIaTn2v*B6m3bqU3|mZ5b!$`II*p_u!ZQDM#% z)X45C(iU7rResk{{Do`ia_V&iHfE?~<_#3l?k2i^@gY_`veVo z{RDNSo+7YYL)flo=zZvO^y1-j^icHzJ#cu59<6zaUiK_UVAF;y##W%lf=bk7VI>;U zxe8^UsX~hqUZK;UULmk|L!PbQpwxqJP{Gi*=t=oo^scr8O*utR+_dlRZ z_($Yz{|PNv{Rs(sR-*}5s?qbT&j{?~(4B=}P`vk7^rZMJk|upaKR$m$Gp2t>?b`l8 zU_*z}VtyjK*FRAq^$VrA{YEZ@ztM%kMwIu|h`_#%t6N{d-P$DJ*7X%~6YmJQsB97E zWoNGEuZ8@;ZC33+lO+O+3lj<)B(wvbDB z=f!2_b>P&kI&#wvb>vn>cjAt|?!-M{I&)xm$aOs6&5a)B!*NwU+$pLHXKdD$>%Ffl zmph~z2R4aZBZDuO>E_2B-Q&kKit5g(%DZ#7^*y+trv4n*D{@UE1GpJ412`LfPmXr& z#aS2j;<$)FuF=at4s01Yf7d=-+3r4^G$M$ze;LH>)CF^+T>C=0z8u&&a*CJzxc2%G zuEMoHx23Q@her}w=9hVTTM>4 zO2TyxOy?foOy?G6XK>LDnOuVnncS_uSsd7La>i4DzC% zk@vL9kInhY-T?*5#Hs?N-R#54b)7;*IasLpk36EtTU(_*y+|oBD^}K=ELLJB994#Y zJF0Ze`A=!nt3;7^xXO!Z$CP{O$Cc|lk1J(vCzLBSCzSH}CzU$}rxbakt9}qodH1UX>t0iC=3P_9j=rv3e|23M zmw7{}vAn6omEKh3O|Y`=_bsLS#@ou(es`3FyLS}**_Fy^-MdP{p}UH_7gp}Qu2R-z z-BbLntCf!DtCgDY`^x@5_m%mZA1LycSh1;osHn|(q`c6tQOXY2D1|^ns}?7bpymz4{fJ}A~M zjmoO(M&-+#k4j{RPfF#HPs&LD&x*WjR@})KRN>E z)*@nfE0X`b6}gz+nmn;+L*$J$F%NG`y#BT&Gq-4yZG&{k?MFI9Yk@8qZlp)#{WZBX zp&e=avmFWM`ebjv_T*Ppd*VN*13A>8Baye+WafASa{sdd8J^RL6!q>*Y;Sia+h!UP zV?84x@3x7BuQA#G!I<L%!MBlJYWJvU{2xN!PL`@)n$o8rhBXdEJdz ztmsbk?RpTcvK~ZjT2G>)mCyX*lVh<3Y;%c#_CU zPtu(1MMQ@YMBc2E`oNK7-S?5iosS}4`;R6E?~f)i^T&{`Mq`P*XD5e4y~%=RZ!%_! z4>23!OTN|ml3Pps$YBeAB5&PE+LUo5rp0&?xO+Sq=@~%W>jQ{ub|4vO7ewS8Jn@VV zCVp)uknp?-B-wi+S@mHe*+WB!oQ@#!MxN*I`zgFp&&DnMj^bN+R+mpLE+klT;0zMV7so zMVvEdlXo`BWN%qAiH=Vp@?M|3J2Z#<=R21y|1_5bt)EAFIHwYg>QqvfI-kf}ev)@8 zjbPXUvP@+mnX_{tiT7AUqU#rt$Q6r;yz?j1t}P+65|@(2dg+87NhiAlGRW!g8RX%H zWkfar#NzRCGHOXCncF3c?7fgh9!_5q~o!%AYhZWW1hT1}2uttL9D zYe82LSv6IREGYz|1Z{YJ9*+D2lRw29nnx0$Rg-b~zr1!-y$MD_?I)om*o@_Z}N z%G^e(Y`2qr<=e@^89PXz-cBN01=1mC7is#ri#*@Fo7@<(hn#)3hZHa0OY&^@5!o@2 z12guMLwX0u(V_$7Tu?5#-IPmSii4!tEsw~?f%MNhL_+QJNyfE&aww^Q)aV~3y8j&} zUK0z6>>tS4ZAXaO@FFs@zKGNAlZMlj}#T$;XNJiNW9d#C_)jlH~P}$i9QzBaeulQw{O1t|4^6V{+HL zmY80wCGpdq5ZQhZ-NL6NHt-p_*z}B8Z+%X(hrJ+;^)E>1>N+C35Hk4gOH!O#PkNcY zBKhZD5yzO&H1tOCD~w@qJ&Y)we!@NXpe^*7?6d?#9cevtZmKSBYZE^u%To@wb^o?)pQfj{HkxqeABA{39#+t58v+LW|N>=?xn- z`o2Pq>dtCGWxqlrPPU{ZLYRxSV zx2iTYBdsm1HP@ztFKJWRy--a(T{`QiE`1uJN5`qOqh)*A(P3ls>DiC^R5mg6vTFzG z`>X?fl+}?Y^e~_*cMRx;d7Wrq)6P`(GIZWFLu#gDM6VVZ(RmY%X}5pI^yzLBx@oj2 zl`Rc5WM;J1)tv5sW=>PGEvRSDF4VBH3;mR8No8k44_&mPYvZlyJiV@T%70y{EFr0f znk^l;-V$)C z(Fcvg=qxszwjJz2b6EN7BNIku-kxC~9jsn!Y+anjVZ9 zLzA_~QrQtv?ND#}RMm%;?DwJTe0^!scVFti#gF#)@TamdqS`s*=$`@O>E|coX+u^3 zt?wB~U)~L*uNMSS*&oqgSA(h6tO?Yp^F-=+b|M`e6GCIPL+Og*P%7IbTBSCbs^(6n zj{adZ`ezv3ye*vG^NOGyK15L2EzvE5rqKEqQ)u7SQ8cqpG=1fVLhMf zUYk!JC#TT@;{{YUR5X10LOQ7ZB5Hba5mk*^Oy9I#LaUA}p_f9IQrTD0g4}ePJ1&Fn z|CK>=cP^s^qnFcTpO@21n=+|vuV_O<7FAoHP0d_a(7`WO(1_J5X_nI}dic>QD!VMI z*JBO!yt{@jUZ~I$)`b4PM(B_^lxCT(rLx(g7K!WVY=azHb|!~f#;&JJb%8!B0qPln zRQ6odsF2ZB6FL2(x`C$TZlE8=ZKN}PZ={X8Hc{Dn(LY}|(^XppHTK#<3qEY2BluSO z+-)08f4z;$4vdz&?4T*ncTmgKJ87lUF1n&-7af|poBrv!hss8bE?u&hj6Q^ z&*tx^MV1HXii!htN=h!3{TMaBe2}(C%A;>P9isP257EnU`Sh560WCOLKxJD-_i7i? zeg75GyznFRs8$g@S6D=Eg%s1e7DuV<&S=M=|ESZy|7hU;61u?u7~TEr7`?UYI92sN zL1mLh6SkeC`$nFk^`A~ryUnL*qQ@C}?EM+4&d*ZWtI^yyrSi}B91R~e>`EWbmyrBu>MW_PJc*v~#JTu*DlUeT7VUQ@@S z*EC}C8@gVzfyy3_ww&~q4%2u?mmhvduZFy*`syEOSiuLHKe3U@R*z1||454_e4_1I ze5SJxeWv$=zfgCzuk=vfS1LO`x>of&)y(@&GlG6l71f_K9)3l%hm!x=!<@Dqpx=}Z@Ux@?oYL+HvTuY@$2)?) zt^qubHh|m{29T=P2}Z_r0;5x%K(>!?A+|GYKHV8o+8csToFQ~SYY4468o`@*BamGr z`OBDDBq`zOLy8vfqR$F5O`>?GE=|b_e}IJ-|Pw2dsPD11g8~1le}Nq_;g`*H8y| z#~q;G2M5UT=mobo^#Y4ey+C%KaA}Jp7=3kwS)+Ty)$P5(>PK%_;@t-x@9G1x35BhG zPN2Ha38wyWf@|aZLf_oJutmigS_M0U>_y>ai+&Ik(hsg4?gxW4`$N&>{?M(sKkRNj z0Ax!FqGSLV>A1k=XcsU&=>j|24FsEM1L4q_fgn3mI5*uDywAHrP3J+7kTeMXTp9%H zOa_BZ@?ek+Dg;^#fyTK*VD{?-;yBEZBFL3Hw;l-LDXnGL@dal7>pA!roZ-ODxeF7}u6F|1PaL#igyc83m_1B5edrSyS+!+GP zn?m5QUnt0K7qtI{!jPazFze7H*wb<{)Pzok_C=GyyLA}IrWY<93xk$=;oun?4%uhI zp`v31=*@_L;ENF;dtZ1vI}-YrM?z+oDNvO<1#E6jfi&AFxUo12WD5+7dPYO_@@R0X ziH5aKQ=xIyRPcK~6^^*Xfb4`};p-T9;T8+tJQhkm#DcZgG|1U94b;9(1KAM6t6gz0 z>31Adj*Evex$$sGbvg{4I33O&o({4vhO^-bFtj8AF6qpGF)=fs^7IUt)G-lWB_x7u zk3r2O338H?z`7y{j#0yds=;I5bh%fHTneq-lC!>+j?du9k4KM!;c&Vw?wR9GI83d4@1 zf@!6FjD7!qC&1;NCF{+-GFL@Jm@R!ZaIXcMSp8 zvte@A6%e~<1*BB1fQ+6iVO{1**!6fN$R-=gl~wTU_zA*^# z=8(UKgY3g0BxnN^~8^Km@6Re!J31mACeukUjzge5Xtb8+MTMGD` zCLp|0z>V%(Kz8L&P_qTBoVUUTWh>~^Z-wk3+d!3XgN2RTKsM(vfBSZ5`neqz`tN{$ z2X;WF+D>R2x)ZQyC&(Th@}hUaz|*_nYRBCWlDHe*U)~Mr=6j%X>K>4-I*hX43w7yx zVd=xYVD7XJ&aU1E5q0~Z#o+xQJ9hB>upfSS9e^F%4#3!-2jG`qF6=*$3lr52f^6L3 zY|%kTX`2V#r{+Q3={(qKa0o(@4ngO#Lm>Ni*f2jILhj^)S@!~{TUG#hH3cxo`7pSX z!ywyuc<5FLxf=>$!KXs-8GQsScO8MI-$&qfKoQ7p9x^qGVM=&0xF0J9i*`prE&eFf zpFau}#{YqA>S5#c|6rL-2_!8kfl2pEU`+30;JWG<^n7s)WN$CO#vBLj563}c#0gN@ zegc|*o`7HeC!s0#B*+#YnkStCmH$qGhVE(5o^~1x&YgxXMrWXB@)?kwK8)^q7D5-F zg~aN!u*|U(Hm)p%!_P~h-1QvDh96WvoCEU_=fQ3Jd5CB_56i|~fc*zAz>Ss{LH7M% zQF0N+=v{);xJ$6_{3WP1z6@G(F2kT3mqE7wuy5%Vc=F&17&?_f;F>bXd07Uxhg^kr z8?J(M0f3J#hnijGVD+aQrUzBP(Si#3Z;@-@GvyjcGXOqxxDM`#*8#3vhc^~Cz&-5- zY^=NiUwYgG=?TE0CpV$3%Pp9Za|>?1y#-F5w_)Sf+o1CEHb`p#?&jVB_m-8AKe-Z2 zODcir-38V7yD;a%U62j|Oqp8+k8V~$ko`TllW`CHYVN@;=W6h$)gX-mm@w=<)NZ~H zG2iY(qt63K+y4MG)gA(dJ_P9(z<)ZAVAQln@c7&#NH(s4HgjrV&y5;zw|flIHh{E8 zkHN^f7EX~`2!CA*ErvaT+|5s5+_xtn-2>RW|0#@Ddj_hLo$ zAWZ~tnfn61+d%#?f(jb4!!~_ z_1Ew@>@`SB0oLokf!KsM;ClHD=vy>E!~6!gSlIyEdcFneEI{b9x8Umf4ovVJs5HKV zmm}Xp#m@Io)chW#!2l}`e}Fly8zDNn5dzLMf>-B{;4=FoI9&S((q{nErJumy;V01V z`x$h}XV88vpJ87>S9}3!H$W%9uV9w@6>M651IMs$;Ck#EjMV=QK?&bMx(<+P@dH+; z{ebOve?W=DPq?|_C%k$76Iu>#0%<;g+ovW7AM*>+_xyt0|9-*MiNB$-=r?rIX$I** zK*ITE*l6+xuFU-dKW_a2`|f{XQs!S+_v9}~D+2zl{|5s;{DYK{DtLIO3N|*YphK`K z&MZ_#=}6$uscJZ+R1LF?THwu;7HD*{1;*O9#G}hvqBJHjXn;B%$Wg~X@6<71ga#hm zp@A)%H84C#6Qw_aMs2ik{!}e|bXE%o8@0lnDXmcJW-CmxZ;jHXz~Qy6v0y+OG+o~Y zmG^D%?})ZIYiC=0+1wVTTY+~9wQ)>a9lR8ygG0~h;8|l`95PoI&)(8SXlrFVhmA?>lSxIKF6cEE>m9dOpg4%phfBkrEx5v7HJ zj~xtf;YtHEsWZScLptG5S6JK$Vt;creTmCmc6K%??Ibl4yi+SB=ob z+8Cvwf!Pm?(Y>z;HW3pneq(~OJWR3IHdAbDGDYcYU`l}*4rpzT|Dw(D@>z3SYh;0; zb1cyImIX?C121KELH4u@#<^PJU}lN!KUreK7%RN6*9xV}foYShaYBhT_Sf%j*@56>i;IaZ#=o(}U=KU=+GdCSf7zjZpgl^@1NGZJC~b?f_}YGWTX8|{Qc_Bdgxu*E*5ZD+?Lj}h(YHVTrTtObA{gy805|R!fVY|lpwmC`}Ta{cA9m1`a{p!XX&h)(wkd z-B9a-8-|&=qx4Epr^+3tIS$2(tB0cHtD%@aY#2V@G7LSMhM}}fQ2X$3OljkRk7GP= z#CZ=qV(N+J^F5K=^+f5M;LO!t_@dqmCkz{bH@1vGuci@L8ZZ)F506A?prCW?C_H+8 z6!tS4jmPJY#=%vi@q*(R9J6K&N*@KohL6RDtz$9u*I3jH@glxZcwrrK^JXoBeU&gmGw9JPyls$79O$@o0W!JXTl+ zpfp#|{$T(jKgJeIR}x8H9&+2T5Ej7^TO8H6_8gvHb*`kTd}eD<qcIV5jmJ>|hg%9Wr9EV{I&U8aNH58-o^~r=hJ+ z96IL4;XsXe^qdlpj0v=qIfamHH@WHSd_<8FL)c!pKr8k2k ziV`tKHwm++Ct>cDB)o1l6Td8(iAFUuQCc)O17_idkF)U7*xC4X|7^5YPsX6gWL$YV z8KqN$U+1J?k2@(i)nN{9Uo{77>gS-*@VPi~+gy}}4L%N@hh2*2VT@iX9!f~XZ)K_I z)^$FvPM?p`w?W&1X*iFiVcF+2H1S=4GY>An%bE+(EP5eI`v&irEJBC*i*QZVB7EC> zF^(mRF~4Ck>W^50(#65re@k%0q@`GRY$=*_Ovjb8((%Xjbd2qmfzr&uu`e>P)NL8| z6U#9F=Q6YnT#h>mm!p|ZCQ45SjjqU-R#|AeGz)jsWTA~qHs)bAI)BbaY3<;sgDdc! z=1Po?UWs2zS7N5=D(sxL3iIx*Lh10}1G*Y#zgvxMN3FsAd)AEP#Qg0 zo zC~Y6S?gqF@0FG<|)Cxi@KZ3YMm!W?GL+SotZC8%_GC0nD!g0u;4cK<$27L5w10Ec= z5v2)){%tp*P247IzO)JNT5iVtC7W?&&1RhHB2aokX!S*4OTR5xpSJ}oT5ZL{FV+>gFv z4`9@R1DL9ji!>@1_m}3Pw2Sa@+CltPeGof4=iz{yJPc{f!$o5c;f@1`P`XC=Au1m` zoy*6eW(7E7K>=>QUw~Jg596<#!zj%o4EHWX$SuTj%_FEb^$5D2KZ0}3i}1+8B9tBy z_Ud1ZNl=VOJ{99PpQAW1?1#fl3! zre3}rei6NQT*TXdFQRmtu;%zBjP7(9-=|#0)H|0^-SG;pSFWJt+bbwdC-mG~h7Vd? z#l*;~sDAb;ZZRpx{%PfSr@9=a_k`N(D=_b41$z5j!;c5AA+)-VF0t3~>BZ|PEhuza zdIM`8-@w(bH_>I|O?>nHCT(3KWX5ewthkM~_IL1E)*akZcLzg;RbuDu zl_(7<+!T5jCm+9yT{>0atCT7%xKo9xj`wgFxrfr1!bhX3F?U}zrm5e@u~GNY{M>!~ zYW4uj7d}8~Phr}ChZx8nV(+gHQD@vEd|&VgZ)n$G!SouGE)}NQKE|-j$LRIqG4>i- zi$>dOQR7c7ehGPk(yYQtgQs{Y|#jTg8o`US2$ zFJD^J;hM#DNNeg42EIgTUE!|pFEKBm9!rkY<3+t!cqj1{KD+h`KX-eL(!s*cuU=zM z&o?-H*BhLq+JJMy8*uIE20Uc^7NwDe4b^Y4O}}^YJ9+QW|MNSX>-QeF6=&Fvr2_3uZNwifO?@d=-F{)~q6K4U=DXI$&_1#hnV zf;u0+pmeuzUEWu$YW)q3I54Qe5`#(Q0E%YZ|JN^?b zIyd2*xlMTOZWBtc3m32Zg%28kVLzYW2zkHpOY3F~h-=1@E6pe^FI>9(559W-2YrYB z#pB!lqV?auxNg!v{CDCXO6Q9`nWw`1@2Rj$eN~z3dR12VNtJc;Q)9dG)tEHE*yiai zm|=Mfw!y9?Gt6$u#LJe<+(Vu1*{RN?55|haHQ3-Y8m!DjlLao&WG^0Qve^T)SPQPj zq#efW16r{&M_RGKcCFd_q}D9!Mr+okXB&2AbsHvKG4^|8TPF6kWkWQy*|TVEmVH5+ z^|aJsRZDf4G{>0z5M6dp=(1(Mb(vF$9(!?2Pk!QT$41R<$D~Kbik4sg|ved3Dv$`u=+0TYaQ;o5&Hf-y7Tekm*Eh}ng z$4Y0~u^Tt-SgnISlinIreQ(b?j_t;}9qh)2w(ia*#&u`OW!)LE?ZKqQ#>!syV6Q!T zGOgV`S+^Dr%x8)NOFrkoHd*vy(rIIFYkM(+A&zX=7DtxU?8vr;_GULv^k%9?eV8=d zSls`u)`>{43`!Rpt{%m7@ zfA&m!0F(9`n|EyhyV%`@>92NSQyN@Y@u-1JHFzeM~2$N4rjAB4QFqfhBIl+u?NRISU_h_c59v|^RD(}*ZO&}vCNCz_~yl= zL&vI$N3hTiBiW1Ok!*V9NcO$YD3+cxis^hF#iUWkdK8XkXY|G}znNoL-OVv9t=CxA zj*evqK8$73uVb}`yjhyI59>U`haJ1-!zT9dWxrSZvaN4@nY8U#L#`joY3}_S2cm_UX(^C4mJ- zB*^!lz~)-aU@Mo-U|XNgVAA|!726Z#*k%&@6OqI^pG#uSU1qZJ=`&gKvzbhKfb72= zv)Dt`+3a8BY-V$QHuJGeX7e(V+0N(5Oj?1gd1ngi-eL|5jhe%h3v*;e{hWdSR+ zUC5fV7qXGB7c%J&vX}c8G3Qo`S$5oF_VDUr)~nkRmbq#Pd)%;uNt=+ZJ-C#;ZIjMM zC8V=`*V370&kQzA$zT=lGnjM>8RRcxzjcQ!t{|JBTP!)liI zb2XC|B0F|`4RbeASb3Vl0v;*snJZyQf-rgJ!laYPEY46?Y_^t-T(XwcK3U7=y02rp zJJzuSsyR#=itPFM9JbVIJ+oN8o}H^(&!RkmY3>DfNCTPl6;c)x);4Zrqx?3p7KNMG*>;?|r0p#7^mf+AYzLE`BYXH{ z2RrP(lV$JN$->okF_)-ati#1!?349wCap)7U%#8t5qsFI{d-totG#Ss{9a~Jv6pG} z*vF&;$sWDm$FBJ7XT=5k*)F{UZ2hbQZ26r7Y@SmtlSU+q{FcjtgAOvkl7nni=RD>y zKaUN4n8${=9%9muWJCTOV(wx2Z1~xHHo~HSd8Ze!z~==lZ1`a&ZAq4_UdWcl6f$z9 zkZrX)!U|R%Vdol-u&OadOuCayMW>i`PAX=-Zxyq#y^peKIY(LMm!oWVz<*4dl&s#M zglVOgu$~V}*tmhm*!<1M*pB97@^jyDCcR2#WpRS}rJrC+pPyidho5B6cb{Y(HBPb7 zv8R}{ELn;DY4&l|Y1ZxCX%^#sMt)sC!=CA$Wfrr}GU;5h-A<+K6_m0b-%D9?@Huw! z*g4kH=sfdTaGps6lf52%f%V&Vfn}*&WcMR4vTheHvL)7+*xk%aO!}B?*~rW6@qx>1 zK$|NJ60We%*RL@DUS+IsZ5fkxCYw9{DtlObmAM;~v;FhRncjnPmNu}0z1&>Eq^rqF z!>%#M(ravcm+P$kvg<6X?mGMJd4tW`cY{fDlTC@g$!aQYvI#wJu_|(ljsJLyRr=p% z0Y$f&^f+0_+&k=P^&J-DQprASs$}z;E16o@T}IB{WzyHSB}sW43AeW9C)=m`VSW?LJV;0@^%b8Z(}-6E~i)B*&+$YtB57-^K*LLxJhq;><=3;e zdasx?McKj1S8Sp4Yv#jWGs~ve>}SXucH`6=w%4qINpF;eJa1tAJl?Vnd*8Cpn(x@1 zxOc3$;vM5X-!o~EvWQRb*@*EUSg)fWm|>?z)^dI$`}nYt)eic|q*KaHt9)YlQ$DdB z7e6s(^O>z)@tI{bd}a&AeqquuWi$1@vV_@RS^V9vEUw=-7PsLWoBrz?OPutbN#B&s zxA?)9X8d3)>wd8HUO(B^{Xbc5>n3(Ap@~WRl-+my#Ts&cvA$*;X@$y@rW^TCDcTw1HVXpRQ|SgpYw z25Ry|p~(yWYVuDJTHN`97MBhyFU@YnwHjJ+|FNz4=KR+Dm0la(H@OX8R@H_}qm^52 zYRl&~x8>zw+T8q{HlJgq!>?!RaGTdUT>7oNCQp~U=<4wev-J4SNXInt{&wZ=kv9C@1slH6#+Hv* zY0ITg%lG@(@z6p$uG_($Uz}^t(;nFKK7+dPw_Ce$Y1i_|=k*xBSl9-h9uO-aIv^ z5BEOahg+FA@!yM`_}yntTza^C)xN$wwzV_&oZ-y7-g4#|PW||6?8hs9_T$pZ&nX_2l2BP2k~RJ zgSj+zdH(ysJlAgs-(Msj12?{Zz8lZ2apQ;F+`063`7!mO{Oq)$ysTmSMo_vwE7sr`iT)Mryyx$1^YU2pr^3Mov z6)}=~To}ox+Kl2WR*vG*^yPPaNAsp5qj?vDF?`JYF?>$V7{0@8EWf#PESKIdcZl=m z;n%!*PA?yRImd_p{^rB`O!VdPr+m4zfO&0(A2+J^A|K`)!nbV*;eURI@X6t!{Pg)yZf-M)OM95VdN+xC`%UIYizai^ zPGLMdEsTGD9LB?khI8o>b62eho;N*$o864y>-t1;br#7NG)3~ylcsQK7V{TYQ9LX= zia%}dizRCU?<}5(SvomB~!b~GPzmGI!6luunp zdCE7+GbgU)?DSfGpvyWgU1?tVW*u+v&f#iDa=3}Xdfq>6Js)4Yp3fWxT$tCN8aN zKG}OSUthSHmv@TDOC5|F(m_o4Av^oY~2H@ED(ho>&w!*4y^ z!|gox@{9v}`D5*UT-w-t!@Yg{$H4tOc-ww{yu|@-GVK6gdhGyz>6puE=_H2Wtz`fdOmMcpU=}r7x1S10zSL_Vg7F3VJ^LG zUguuOBli^YXRVI#$iyT3#hoKOrhgG{*j&V=#m&D*7xTqei@BD=QJ#}?l$-rH%JV}1 z;{!|ok&)rv_=ieL8^ZbAdT)N=Ai`hk9lW~!6cy*BnjlIM>7GC1_I$q{H?J}2U zI5+dS!t3^5;knvneD>@zKB&5kYYe)|?`*%yr6*CGX>Lms=jV%iHTzarNXX{7P(|un0?>;{h{eVl`oS$`g$j`5T$S?nV$SWp4;!D)2`!Ub{#LRuH$usUh>vEU-CYh^;}x&eEIEqUeNCqf3*1( zZ>9R04~Tiqr&YY>8y(+p>8x{=-*32cL<66Gse$k6_LkSsx7^^{Tkaq7j!T1`U$cJC z+pK!e$2Pv_B;W(Tef$IOXx_*}mp5|hv-3ATAGuTUN507L6TiCn6E~>)#HWt>%#Y@O z=F)EG6Xt*62W!7@6_2kx=)hNgNaq_@Px;2fAAIA|b>{}Vzw?wZpmBp=zRgikkSiS55r)Kut(vUU;~*5N&6-5LLTdh^^Hv#I)8eMW4Yf#h;{> zLi+Opt6GXFTI#~lRbBj@p)Rg(R~MpET_k8|2x-#`odgZ>bgPCax~(CyT55`r{+hxe zUQ@K#qA8?XFACJOM3%Fb2%DxQ`fb({x;M1MYn4{wyi+S7O?#2LQA*3#T8ZBOS_z## zt;M_O)}n&97P;lEh4k)4yki?NCaR6-!P*F&t8K)m-)%&dLtAk?vaOI7zF2mpt%&>8 zR`~YR7X2f%h1q&-p?O(beEg{`q?0c$hUticbvk16MIDj-Lr0`^(-o1Eb%pO*T_Fv9 z(et~mFtyhcI+OIoKcXi-ozoL9zUqm4w(W%U^~D*bohT}8Ck}jRC$`z>3pP<-C~NdZ z=2?9q?R_z?YkM(kLVJ<0y1j@!(_TbV zd}nbetFt(EytBCQuCuslZYZSnFWzJtiXX=eh59=~(b3#USdTLjeKU=O=P@H8cK}43 znXy>tZ!G9?W3j8mSR89G7S~Np#0x(YAvXd2lUw0AHjpc!ykEJ-BZYk=EErr}95QB`ZM68dMSf6es zN{g+;hgVj@#MoMl_OTXnuRt6qwiXXxS&KHtUBzIZt|BSDtJqoGRor{kRmd#^;pSr_ zQqpZiZn2Gc_R2b!) zxq%>_q}vPgqxK^FwY}J8+)X_7=_V{Qx{2tc-Gtmn5O0mUi(bCnMM_3@apGuqq4K7? z@G|Kkh;I)ew-bcfe?3I(n;xRjq^J1p+f#Tg>nU>n>nUpA^b~SeL8SUQh|9|yM8^^b z5#8V*icNb7b^l%>Xn8LoHy6aOhF-$k%u(#{cNE{2JBrcA9L2V`^2cVqh1_EhyE1!= z-^Y53fOoycA@e>$V|*VGnbk*}I^IXftp<@|;UsR2cM=ZSPGZdoC(-cUNsR8&SL6ot z6>`TxOh4IIT>sEl^s;moIf2gN`wC|fa>`kpZFClL<3X$n>L)&}>?c1?`-#$z{e+!$ zf3YsOzxchXzmWS6;?}4BVo=usV*i8zqQja2BIE1;@$vHj5oY5e4K}s{q8C(yA2YXCJz#FQ$i>g z2MNuegG5I6!QxNYU@<>uu=svyut;tiEacvVm>DrdG_D^a60gXYzlMk;2RHF4(oH0z zn~+-+Vt%um_|wZ>WJI~k|NXiPrQBV#|LZO`^&TqZPKC(bFjP2Q8!Ary8!Eh5yj6>mFw3qHzQ3}56e z8V`GmEp^^vOlKbCRRjyU7a}~ICWv;i6GZK%2_o;t1hGJE zq8Qz8qA-k~DCCxiIC*=bSfd^y!dyZ`?-?PY<&F?>|89slq!lXU&WM;WGgLV24i)P6 zL&f7Zlf+TCNrEI#60!Rx3AsTcjCCiAAHyb#J98(Cg51esP3>e6rynLpc!deMPa-t( z!$keFFmbtKxY#!;T&!FaE)ojEh40I7A-79}fp>)Xy);5RD~=FXUPp*SCXoXCBE`bx zkwWg82=8~1qQAuy(IsGtXuD#H_;GTIc+ogT+_H)ia`QwSTpcAgo{bVKzC?*s+h{Q@ zG+Iog(PH$4Xd(AdM6d2sg=P3uVX%IxXnkd>`1fn7_~sBJ-cE@Taw|nVD31}h|Hg>& zKC$9LOsqJ)DOQx+h!scFrU|*DB68!WiG5qAiQRXmiJcm8V#mNZu{}{fJLPjv{=9X( z*fk_x?3o=e_V0}s2Oq|Z0-foiXxMZi_gBQ3-09*{?R0TXKS5M_C5T6938F4PL40_g zAmlcSP#ZHtXfK%|42x!nuCHc@KE{c{-8WJAEK3w}w?!npO%w~wlf;_wNn%TOk|;Qt zB+fM^iMv)ah1_%z&8ugMcBM0g&DWV?klidXZqh6fw|16Dzc@?Cy%%w$$82#eVz#J< z*+S*&Y+?Low&>qGSp-Z?7IF(lkn73fkZOvka840#<5EPMttmp@`v`B1IYRElh;@l` zMDfl!qWaz((cF5juyC6zyprdNgne^`+>j9`bmxg@!{>?Csq=(W-aIks={%9uAypKP zOciopMrakL3g?%pVv6B>LA~dTGwJii`=j%PNyB_0w`atnacLqy>;Lw?1um*;`+uMJ z%$b>UP#yziMIs@UWf75OWjsX6yk3dW`>T}4fRnsp7!e<(JVbn@65?Zx4j_@1WfCIx zQWWu#X&DjPLqR1>%OXNF^}qJafM#{?{oK#*_xXSB=hIoA<=T6l{ak17{axn_AJ=p^ zwrx7}|6w|e^qT=Wu`^)ff*F8uX~6sE88Bw>Ovry`CcL|3CUowa33v9)1k;dNfH7;} zi;`L3zHb(cxjYNz-}@poCcOy!>K7sO;ERCqY~aI?m*C2jm*7$ROYqWXFToDYY+xUr z4G}NQ28?wBAGOQ|H)RgQgwBCgQ|G|34Ravin>mo?o(mWU2QJUZg~(00u=GSO9QDqF z+n&sW7v|)_`!#uhF>)aG=6qN;E+0DQ=0oVa`LOhdd^qk`0QZhB0F0jlP1_3~psN6; z2hN3$pPdT>m(7Lj-E-li3z)vU5ONX<;ZSKI4F0GPW|Mi)a^E}%GS7oWwt0YYcOXnG zg0&A8!Ns&97++BYTbhf&Lq8uZBjy9ffDJPAq#Fq8nd^`in2ay+fBkMdA|hSh)n|9#{ex0|=(vzZAZHekqJw zyA&D^FNNWnWw3epG8p{AGQjviU_7!6URH`h6IKj!vWwy3>%}njSTX$Q@d{w!%0&zE%pubcC6Z1>po2@9%V*b|U5dZXYI5B@YB!9RZPIoScw85qD(=(-j zF^Aw%Ln-84CCS=1(biZ0`6p10>&eP5znuL{cBdj(}!0=tF#Kzhp&QP zGgiU;%2j}|ir_V6HH3t%hCSJ&)jxp+tBA z*Wt478}LEQ8}QQnH(quFQ){6^~q!pp1Q1&nP4Ny2*&{os2rBK<4(Axbthn)E$|<`3j*itf+1UW!M)$@f(LvX;E|XH2%p~o7=sI< ze{O(h0(XPyx!sUfyc?$N*$sJ@cEjR(8v)~UK@~K@JD)Vd4sj10d}t4Rov{bbR_=jI zNA>{5?t+^m_QKHVdm;3#y%2L^FHH8?2Q$a)gQa=<0ONYWyJz>oCjFx--H7@n*=3^R@#h7Iax&=UR` zXs3S$7=H|=ocIjDrwI;@X#ys{34-gI!2Ep^*!(^Rj7GQ^ygqb|2b?N(hMi# zo8hJv&G7VrX27^*urK5b5K_N@5#?XN%;qnkPTvB*Jk|pDWw!vvG=sN~x4=2CBQSLI z5yYhM!Ye>n>C@Awi9PWlqOmVXJ)?Eexl78;xh z{tE7!@)gXoe+7+AUqL_J*YM1Uuc6BNHDH`H7;)@tSmgN)9DV#72%P;5Osn|@8c%-% zM&DzAG1Oq|{9_<*KL*cq9fP-SKMw4q^-alrU$5EI-AZ#>@$ti2Wf(bNi? z~6>0OQBOKVJR;ns)sFV=w#w`|mynk*0I7Yt=b;?9e&D*mCg5LqEd%89&1C zS5Y4Q5gzXM6MQ)GCm1pFC&0LKFtYt8*gK#To*dT+pB8pP?E9VY)lZ#}IQVD4m~@a? z{4-qG^E2dK{u%W5;U7qtyTEsC7rg#i7ht?PsDJbq_?z_?_;SN9@cgk~;Jjxy6h6@n zUURwuW7$E-nQqu~>v@)jdI00x!NCmCF2ZdyF2asY7vY&x7vcPkzrrhj{}t{j{1q@h9;E#AE9eGa zf(_4Jg2#(5!RbAhV8P`}aOZuO0b}RE3u`ZfN7H54Dqq2McLkWKSK!sxufXWzR{-Pc z*;b7vw#Rabt)rIMmYpTGhx{1Z$?=SB$zsNaG52hzdKlZXyII?#Cf0Ul6>D2{h_#Ip zIa~KboDJjg*aiZk1Y>QeXTa>D?i4htb#`v?%-lVZT za!O;nbfebx-ru#hnT1;0@b|U0OFwCC82`^U`#ISb_KIv1_sO=sS7h7bV4ZE;6rIhx zOlQN`fVOpdy=_XU-WD`XZ@airZ`;+Tw=ME9*zo@jAi_&|+MvIU)gAa-mI1SF@@3II zX^q`$<=Ss=p!cbs-lyd-t2q_0O z8=8gngXB-lYxJ0Qqb24%zSZ!O?MCI`#(PxH*WOi)>&~isUj9`bz5I%L`1}>s$G)rk zuDzD?XOe%taCfWMrQK_1Ue391{FS=qhAX4LICtfd4Vy`MxfdH>G?i=JbdcXL?G`bA zT!NI-xI$x}`M!2z$U%8r+kV~1;iSZ>1#Yk^h|f} zTzpSIsdBdx{o^D0hPbubhW=;8@Q5M&%%@EBdHvx<`}W=!^5b*Qc3h%kdb;pf&$g5? zos{XAsE&?{mYI|n`U}<3G#xuFOPQvrj;85-ny1`5C#t9Y&^D>QR`xqbnbx5?+Ab|a z$G|%-Q4}?@-mSmafPsVWy8r&|e>il9(pkQ*7FLvHS+CbCisI(x=HcOS!wolthKBxW z1HCm-V%>jTy|=uEj?cq;z`)z@y?^wYKW&~k%lFn2HCV5AeEs|P_ww?(`R1D+c;JCQ zZJ@U%N*vt3uHIYTIlP;1yX%4Qr;;2e!5??wEZcQM;zIl2 z;u<`7@W0jn?~VJ1mC@FCIczg{=mR50|AVF1pH7cpv(Agwa%@N()_?&61`QhIs7e1p zL;Yz3SPdtKP5g)Tc_y66Wy+Z-QbYoY58kn2VBQc)Dv#*!Agldd^`2bd8J(2twB;rr-KJjEc z8G#ZJ$o2Qv0n)(gp)Xbq+k|_1QT~Ii1A~&z9*_-G%U~gU`;xUtMll!V>p+~m2*DA1g4&w zKw7y#K8iK+Mm~~3B9TPP2Xez$EoVfc;|?JqIL82o4X7Rb7(Yf}{Yi`vA;j=8T#yjP z`w7u3Cj{|fTo6b5r=#y3ckei;ttg3HK3DJPzm;Qo+PjaVZ!I51XwN>}Fos&npLLSJ zI*HnzQmhcmM_}L4oRflu2<-pr2yiX@#-7*OmZmj~$mX-VSeA3z*vQc5?X(rO??7&t zFo6r@qWC~z0_!8hGOh>ELk}#7a>N7)Q%?3#Q8}U*2D{vg;+=eo4`g0 z!2&08Vhk6-2Z?^7zYxQ^3+_TR6U_wk5gaE(6F)wT4dOWJkN)nW^V8rAeArz6TH89G zzChOTr}#vn9A^|L<*=-n&15q;OEOF}b7tb0osi5Xvw@;kG$JK4$;V@%%`>9_JXywDMZq@mJRnFN6y5Las1D943`J<`^ZK zdHNjd1vowz2o;`w10R$jN(TLqr_3tD9tGCNO`wB zQny<-QomatYDhG^Y8a@5EBVSUg;$H1P&Ho7RoAJlDm_hDw}EbSA?uLXp;}H|iUiMrNf(t8XNYq>eYs>%|;xh%Q7|%hhs4nhA1%E+EM#-; z+G0k~mXHWd0dHlkY^0dX`)Qn%$GU5RC4b2s$--Ee7(tM%Bv>?YbQSxHCKmUwCXcv_ z2@EGD5W1Itdqz5U@JR0-wL@)DJCwa@i&Cfd==Lft`g-qneY?Kd&}`_D_Zn)ITBTjr zt}9hb)oyLKwq0(QYYnxAW?i$cP%TuuHQky zxw0@^hthLA$QnA#nbnCkeU4}LnRj6(BeH-zCo?jYXBZ%T$ zk(WZHc!}6`rzJGZC{QkT8 z^X}p9`R=>iS&xApp&p4IM>e1yITMX;f9=T5G(Csy}=vS&e+77wS(4s3+ zdo+9XE0qpyj@l!wH?+ugdb3(?Y}C=G+btF;9hwR1N<+8MEo3X%O1so9Rq3nrjdG)0 ztE<(uXp0PyYNXoDck>}?h}z9{bIqD&O}p4G2B-mQH`~pcl^$YLjcPa3&6Mg(^^Mv_ zZLCtItCib@Y(ujYskHNj`bJHNl5A)e+qqI*tu{ajP^#oAxt(oijfzoeXWAL9(m`Sk zv4&=$S;*EmN|A;_T@&BL*J?`TDs8g9Q4BFOaY$?v8(@$Oo=8@mRaYa`NKH%=6RU3~ z4MKxZAQ#A$nh1RZZ_?F>HDak&(g!0oa1ESQw#t+;Hj%-s+k&M(w2x3awTuo6iC5x1y{jE zYl{Uxxq@|}|HCQtCwCP)^sn8kB~glY14dfo?V z^0)-YnNN3rw3vYCMzPI#_9u`|wN33*4y&Dpooc84u+nCzR(C3G`U-_pdvWex;loIN zHyQm zKd?XbU_$#-52hC*wCM9W{Y)o5w5#1pv)XNFRJ--HYPYUZtyH_^QhEky3e*DCs&+{x zwM&dqyM!<`Ozq@5xlZz13Ray&apshJl7}CjCnr1xc_!lSqev6#mFTt3>x9=JV+R-S zK$dzVMU#QvT0^LJymzkmFnzhVkA5$~GZEKUpyH#na1?i1m|?nBZ==CzpeVDKTQ3D5 z#_VP5guRSbAEk35N-bi^1bMv>fLKz?*0M&OQCG{6(QcEPSEcZgA5cW^5hClu{KO!En4JgU7ogBW6>5%d73u;Vfx+nPcP^G=}{?y zXhi3}5aoQC`ddEu{@J1SC@pG_VXxYwuS3M`mb>Nk>PiQ;QY%ykp{lneo zA}$Sbpwcc6)^ngIMWw5l)Qd&b|DyOX2>q^nV-8nu%wefFOR?#<$Yf?(jnspU;sYIT zO{{k;zBdiyqqqRa8xwtJ3gL{r^F8z5@!#DMp(s%wUcmQF4)-plcDkMnjSBTpYSA-k z#MM)!P@kk(*QhVWwMJJE^*IWac1@|FS(}YmRMm$=g@!^yGvW@#2no;rlcJN7l~R3! zmUplQ%VBHjcenQ&#Dqxj zMHmWnHJT>AM6T4D^bKM#VvWC{iS8quXvv}&!|5~)P0A`*IwC8V0m`wh<2FeYuWSiwigR!yFi zCj}wO^kPf}L$Spo^`gslxWfDvSNt@2=y!%m7Cw*3V+2is17YYHLA}o)$xoubCVfBr zXV;VFwB+m|+4tY)n`uqUGN+n+lj6)N)=blbvZLB#iHVsei^bPJ!*_C=#WyY8*PI%c zY#L%QC1jb?(}=I{)8@=9Yh23Tt)|QzM`cr@Z&G@uuYaO%d`_0h;v1Lc8`sxL?^yck zjm=EY!nS&AW}CAn`zE9(ntX>&^Ph&lhWN&$O-W17PV>#Mn5>EEzL}O&}xArBpc z_n*Xek+=Jx{zgK^qC7VM^EYFgD3@TK;AhRDw_u%mOm8RTAdd40@+ss_WHy%}?#RB# zLy$v|Bap`xsePYH<6pkEyS1HN(K@?G6=t|-G<*I2a^_ckfC=arlb%| zO^mZ%Ju?&G`^8ku`auV|dOM9r>%(9ofEd)AKg7&mOK^ zqSN}$Tta$kMqH-TlD!%{ryXrO^Vpa3B&JKlsYXV*=yHavTgng~x%XO#x|C&C^Syd1^~Fy8 zAeS8Ol4D&m$t7pHP+~<;~T=KF@Dz7-(AMBEkxa2sOOmWHCF1f}fUvTHTym95 zu5-yZU2>~S*1Kfy`2Mo9^ZEQ=+j%YtH>H@eOktVkEOSC!O0>&|wULOlEK}z7YJ$JO znXY{TjS*Fyd5Dgx)j5Md1Xo|GaJ5QMtri7)_6Cc0EL?ODH<5JLby?&^F zV@I3frv6S%qS?{uafzeN@tJX%IkAM4u?{zVtSJ*c^whYt1e2q2gv3wSaak$o?2ojj zIpE}}xcC$k`IKtI;xe-Eg&-^)jWjKbv{2pX^zp)CewmA)L zFpi5hWyPdTcFZ?1Vp@VJgZl0`OSCw7j*Ct)nKDQc_mn9!)trVH)oW;y$~~20K@&V3 zmtr-MsobA7LKbtbPF?R3=soso9MdIa44F6)-KTW)fzUyU#+*4leqs{NmEiBw6XQ}X z$rBy7NFXzjqBRaKl`LT<;=9HaavwXK0!h?d6-wx0fF(KURLOoK(0~46PVZF}7lS1+g=ZKU(&7i~+~A$(eVK&D&0g L`PcQoYk~g87b6@KYWb~k2Oy#JeJF_T^IZW0pHGah?w5|#}=5r{u2iV#Ae+40QS9^sj> z#^Z?13312?p&U3O#2InojF68UIUvL#ha5OWoO0xVfcNUv&#SJk*=`9zV|PohyX*CH zPu1(MUe$Z` zo;?e&@GjH2Ujq=G{|nQF>i|TTzQuIqX8=Uk{>*e^34rM4_nDS{2|(2N6Vq+{9ilsL zFx~qJ0MU#1yF{P)C)3Jn07U6KOs(Gm5UrhNy8l%GqD{;v(W`%8dhj#=(Zh#KU;Hru z(U1&q(h`#H$sK=keRnciFmAbRT?OyAiBAo?!K5Pk2DOg~rzAnKqT zQ5S!UsP|ic>A`R^M$UMYVHlCw za5R{9-Wg0MPD=3TEu1`HdF zaUf|QIN9xKw>RUW`X#duoNRA$I1cm3Tq!l$?@q&P_9o1ClHGnk$RhEC#MVJ5fjp8p zcs!o%c1DMuMg-Hz497#6ZI)3?CxgW$P*~Nn5ObB(Y&z(U=tp}}N^qsr4~P3XQp6Qf z*=+H8-=NNCIJlgkHCb|Ka?eVGq5u3cW2$@wo2mZEYeR+!d}xOEw^S^B=>WZuvaU0->|U3 z18f8{M|zZD05@~5q$}9|(KDH^r!alWa8wQw$x**WCF9a@$vBn3HRQ`CRJW}QN{{JU zVLh(4T7e#akMDj4iL|Nn+fqq9VTVEK@mHF`d9(Vldeo0I7b|DKOGZE^Lp>Tf*3daj zl0HrWeFsmEDyJSN)U5jTP_y(`^nUEesWYDvcnNQEIxRWsXB4j&)_!|qLuj9MzJ%Ez z6e{h{uuI!QO!jbqi=i`BmUO7uG)AT3bQ@!*S9tXZ>+u&>J)DPBX{n;}MSp$h&}7_+Vb#U^W&XL2(E1E->1Rmnq;Y7G87Ale#Lrc4` zMOkaE1s0_}2Q7pmvJ~gUSBqJczoOh#A%}kHk*-f3TF6o~^5s0V5DH$(m-Eo_ca-yw z^ypuAi1XfiKA%(f1ZuPosOm7)W3mG1<0HA6FYo?4c7_VgR^!xEPfVI ze`WD=S85#N0Q9A*h@FcHBN97zHHR(Dg%1w2GsqwmNV}=voJcDvO+Q zR%d?nD~_LLas0GagH~$;Yxa|@&Z4OO^Q_JdAve$JEa%GwR%az&&RQJ|50|z&%K|?( zT&U`CHLZ{FkzC7_Vs6cmz?bmWSsz=XY}@4?L|d=4#*tC0y3X(Y+!k8LfE&k{@$ahI zij~8WEm0On?m-MktDD7f)C}#>N$W-55;)?KhU#L7d`dc;Euxr>ITH9h-a1<}Z!{&^ znyqe>K#z<~l4l5T($Mp~r*9sAs;ULLs=km!&x+>IC4txREYUN6lr4^+;?eE3+6#k* z&^e7wRuw(vys+5FYaBJjqscXD06r~IgCmH?1U24RD93`-_-M4RQ#`)B)@%m8*GX%w zmK18l6b5DYtLb-LqDBc1*VlQ08S0$Ct9Yf>N|eU+l_fKZoifqp8atm7+Ezp1sQ;>3 zopRX8jP)~im>I=RiAZzpW5G><9W^utKjY_;LXe8B@ftt;!>YDmMI+FnG!8zJ8O2VS2y{JqaZzAL zyYa^aI~g~gvGW8kzD)c%^ubQrsObfP9qsm37CS{}JTpuJC*EgAZBLm9bd8@yfgjx^ zI41Zp9UQwno$+JXQT!B-LAN)<@voP0R{E1>%*)k&^JdIPR{I6(ydtap+NSS9`S}Qm zRxHxN7rSoE&X}hay=B+we1h?#_6(?Mf9Jd^wT$~LX%1ZyXyTdTKD_gR=<4v!2r;BI zi^rR5q~N|iTE{eJ>i-`pc{^i7V>!(dapgLe10PpNVMEP(j8xZ`DjLg?rEwO<<3{aF ziCA(yDgoy_^q3uHs*9kaqY?%yrbHo%?2{;x%EXlGzVXLAB(Y~+)t0NMZ)H%F@yva8 z6h9@R%JpheSn%*;yz}Z>qN1w+4OjvXJ^LVvqvEmU_NLq$iPv$Rl-+rrRrqmRm65md zzuq;&jh&lzi@ph2Mcgq{o%xi&1H5rsn#JSD?G4^jl=mWIoY0E% zm@h7}YHwq{IPJ~y4=t7PojqUt1C%+P?_+zu_=hMbSIvvn@SZPDKD&RUM}C@9XBAF( zzdGVn2P39;>@ad$6d(aAuER*~27EbA6=S1BoHz~RH0c~{5N7C`AE*6P&M-!BcR;n1 zVP!q=3mPBJ&Ma#VT@s+J#wb=pyBfy!WXypK@21i$5gV>C1E;N~)mE0r0yD9FI^&or z9uKbf{i414OzpH=n^qP#MSUi+HMTUOx$@Xy7e?;`T0BZzuL7mL;S7HCrnk!Ka}Tp> z`^FWWM?v_Rx36#1_M|1^#&vsz^Lh<-svWB-)5pogX$VTpirSkJ(c(0mdvntI#filX z?V4TP*vum4jSkl@zQqi6PJkRygZ{|=-%-RAj|#Up^grrQJAR+6Xv|Yezh4vuQOhD z^<2xBas78Pd3JVoW_o5erQ4^udU7_EWRJI60AL=VEe6n@2I#m8(D@3W>l~LSSfX@y zaJh#ik@rk`ZURu*1n8YYdB~)%5rB$^C6RYb`WFDGJi`)YV4TYXEQx$zGI$$+3VzEV z%FsnFPq9Q9PH=gICCW%M7avO^Z<&l@->AI65+#0&3%(Oa8EfED#FEHsCgXDeRGwpr zGI5;CV=Pe;$VUaa5^o&m(v|sZ3yaQ$@2;O;xHP|bZNXW~FBLMmFQ&n9uHKlN3nSnc z0bzi}?{8ea>|FR}@f&<4Us!kWbthBtS4*B^SjziO*2@B^6wd*iSn|cZFRQ7d*RQ$7 z6@OJCxT<4{?p=Rr!*?Z08g!iJW^xik6}`UvV}4!MQ$?w-MORK zn=R#B&soNPl-V~Mrl37hA^Wcx!nlH4E@xI)7X?(s0x8uFync$tFhu=W^0HJCVM1ePg|8%&(+JwqAu&y0l%pIJo>+F8Xp#UWQdOt*xP zl9J;L&a#h=QE-+j%ge4uJE~iP_PE{kypo5{DpuM;Xk}pd`=OEHcKMyE9%@gzEJqn$ zE36wuwgy#QX=|hCuR3&iSuYgbLjA$%`iTv0f2LW#k|{p5Nj#dyc{%A{ZQN8U3s@?uDVSQ|jP9pEm; z*H@hY=ehu%pmcNt+(UVfau`QH~ zLjX@v62kzGP?|>oe3Z8+^P>PSP>#j14y9oXposDsWe#KVbClx~0FP0cG1mGhZ%{Ct z!X9XVMreX&*ax4%erSOM&0kc9FA-4MQLj<&eBezaWLUkV{QPEaaK3kW2ug<7A+N2{Q)v~S;Q%0 zI}v7kpbMJWI-Du>HN-3vZG2JDMg-HuK8b{nmUx9p@Qw93Y*=C9(Jj=E5cG*u>`qFzfqWzZJ> ztz-qlBwH5-u?9$s!Y0x@HKCIUoa*c3CFZ#b6*EX8#j^=qPoorze1ZE}I8~A!Oy1%s zg_m2*cI2oC|CLFL;-j=hst2zJeo1P%_wfWb@Wr4`BnhfTPY-Y?%tS!?T<}&XtQ+y0 zh34w#CUKxTky~3Mk$JmwaPsU~ej>irlDoebe*5$04{dt@qZ<32$hk|EmBe+f!g+l7 zRVchnL+slV`CP`&Bu_aDCc3jD4y;8Zf?8m1Tj>hLMUA@ff^`aG3@+m|xji664{M$sI zR37{cGN<^xlP`aUj~~@{5Der48$fhBjrj?&tO^V5AY|}U6z+V$R+wh!Loj6dHTD(6gZxeMM zJbvJrppo*3D=D>YsJ}-ue3=F*PepG#!b?bb9OA!b35hMVY5B(NmK~Q@{V6 z*_sCr)wt&{p5VGN8kYWeXr?NfMu(z4gLYi!Z|-p19TanY+?b>OratZ5WaZoOOK^&V!AEQaZ4PmQkr-O;kb zx^%wqK-SHcvh=Q-v+3vNXuY%TSUozQJe5aewDho7XWVKT)IFj}%l!4}e4k+cY;65H zTR1`Zqrn&dyll`ct>uaU*ti?m z$90to7OlN#Yx}dc)!N#Gpkfjr0sN^D>jlt?sQ4@q#arYe%# zGUKM3=N8Yo^Y$C>y!O`OS=Zin+wGy^>uxB%v*xzqn{O+wxL|tmt+!u)!w8S3w>QPQ zy3*meeo3z*GTQ4HG3XeVtH^Pg%i*{L)BuO$?|t~@3)!RB$zK%)Epp30!$Cy;6;m33 zZOtxKE&vLw(@Ib=$$T=9%`V3$9%4IOj+b%;`d|L#=QxH+h5eU*#pF8lM{uKdx*YqQ zKY~bsMucuy5R$NzSwxg?x^O9)Vn_AN5!YWEx|aAdlRtA(v{$9do}%+PW;TtuQxoo$ ziVlMx!guyjbiNVS&7CXB0w?n4??>VVF8{*9?*`3J)e&{&I2OdiN7DNoBYh)o)^w^4 zsY^$1=$<%=u4zR1MKgr=W%6e)cp>@A59xeOBSN#4d^ZW5w5X8$^@ns)-Wz7$KFguo zhBi`l_v{bpMvhl({{KIj8kpYbpjQSWpB38|UgB~DthE8F*{-i7Shqc38Sd2rGz>ng zr2B??1=>{iAK4U$tSi29ZBYFiVGfKcp8gpZUwTQE)jB<3y((Pm+H3BO7yj~hE=NgI zUHhV7WVf@V$ttV^uv+--4VcdtHZ)3hO`+2R@p0$3yBuo-Q?lJ0=yNpMX94$DReK&3GOP>7;dCHN8co zrN%Qr0&(MoTXmIqCRux_dxW;Oc5RLrQ+^9eDV{3SmAZ_&^!?%3Q6GqVs$pS&RIV7% zprJ{?Dg^e1z^v9l>DTl71mZoU=wAq+YcrsEd&tJVX$E9%hKD5bkKlm@9c(ik zDWDeiFz_D=6E}7MeMQP$*JMWR!(Cm;E4#Y7g66;q)zboX?N;Fn%tZm~DsOSXTId~V zy&14(d&dNY!PhI{Jy#4BAok{5FOuqdNb#+O;HJdt?XMi~h7@ASnX-4lR z=M3V07+9^zATanmLLMnf@+qoW#)~zBQd(7%(yH(dwTDv<``v)cQ57c|h=Yg=g(SIyB+KBJn;tT` zYw7RA=`P0aX`Z@`q5Rd%{?f#`$vc1IatMB1?%HL+%y@@>sJ*fn>bPg~lVobB>+4RbiCf(m7pH(vs7CsL;q54U4S3ZDS1Ym9R zuks3atGTN>-)fP$CDg~S3bI-ww%X0LWDr?bedQ1HN7PEnXE%uiagSfZFG#q}C?PEW z2%ek{N(tz^QH`kmY=hwA#!gmCzZwkz>(}0=1*qkG!TWcKSTA`+nF?5c^)~S>=|pNR zFP-@+W`pN{-pydE{c5%JvrvB!j~{{fheFgaHyXFAEM;V^o}FT;E9DXpig&*<-@G%e zy@7a2qIgP}cuJVK7A8=;PD&x|9XI-SCl1eF3m`WGh&C zy^ct~+ZjGEaGsq5h3uQnmK!S@0pi%|}|S&8izq`TUpaHuqoRzgVqx)8V*) zqP@v@48#k+VPVt70``iA?EvOqB`p?+w7AmPqK!ftH-05VQW5=P<+lamMgP#?NEY~Z zz>jP2>@4scQeQO)>hc>c~IC> zr?Sel(-#uP>6g*wD_R2ayv_ES$t1Ikfg)$z=tt^S<5VKKaPG%9$6?l2-%eHD7PJaY z0L?pdf|jQjApkvS8)ExWS4-ME3e@`7T9H4PO4-dCe&D@O&+x+h!NsB7pbPc-2!7I$ z_(?y+-+CneR`B5kE=Ns%c)<`yP4Do6$qqBRiE3+{!yo&KNt8kL@|g%?M%CmLFPg%- zN?%FMqlxJ*`%9Kn8u2_4wZ3(tj^zQOF!uJeugic_>><2|4F@1m}YWSwruGb-KWRJvd2ben+wXnxfAv*22Nw>ui87nE$bPrl2kl!_}@Yy@b!EvO6q1)kzw5ZW zdp(RS^j_a(KF|bVWFLVB0;^?Tse7j^_`~jzPE|gV6?rC$@%3%xW#Aoc2jh0>wtfiWRsp< zJmo;`&!?+ye=cFvftmJybo?|OzutbGI3mm(hw|Vcll4&DRM&1=qZw0e#@BRs*_xMZ zPud5&y6i9JGi7d<`Fg8Fn-=J*`d=a?U2PTKGof`LpaK8VwPxaVRd>dYU!i}@`X~?| z{yHK5%RZ>aoAoP-Wdu`zy^u#*C|$uADmQM#{wxJjGh)SPA()>HZ~_Qs16+YfYfd0? zxL?iMKxBPCe`JrdrU4>#9VSS+l)ol11|;IriMIosQMhkfc#|(v>A$c5|In zmT@*RDwzLeDxpgWDl?b;q~K9geWIqKWF4Z!LqRxDW6J~<2+(pP13AX0kI`A``)1ePrMdAL^>{_-hYK5;Ix~ zS!9=)iH{;)VeM_+=Z@?%<_}>mn|mE?+Z34PzAxb1+_l4J*1z58CT*qlt>602{w(Tr z*b^x$CA$oVQvYV%pIBidYXP*mlHV{!l{AowH1@TKf=J0*$;cN)O}<_N zBCoW7JsxyYG-CylJ*Ff&GnHse8bLEEM4uF5APDQL#uETXHtjX*+wHp|FcN)0H(>G* zLRFge-&R6G9s>hwTcgO`yxSFN>1PiS zmQzWq*2m=beKI=Udfesc2@RuT697JI`7Ar~pVDWgJx~*Tw83BhBy(VvKKr-;M4v4d zq94;|HDas%tuCw%+ z+Rv2U8aEswTD))=3DeU`(Ey3WjZglVf}ynJkf#B7buoOZ;>Je7MVj4qc&f-#l>DVi z@{g<}Ucl`d{CF04FyI#z*b@b8{|*Msc|!m{1vq?9POiE10di?AAL?EuwQAN+&oS#a zgb(EPZ;I^L8)+&o-LP;<_&{%SX*FEra7D98{jAI$^ zdXnonS*GW|j3?8~{-(|NoKYjHQOS0+W~rGUs7A1S=c(@6V3Sq!-6Jyo%ZEmrLa!t* zrzdvvqdvESZF~)=SwDVq%;+RBp-C)Cdvq|T^TS}Xo!eyRM4Cp%jJ#?gxG2Zk-1(u^ z9BfYJHYIZsd6skI&`p>cwp}2z=g3&$E&_HQ($gL_quGb2v%5z3lyxn&?xyF;A1Z7OA`bVrieT%o6(HPL6xn^VHfnH$=TD?0qiGIoYM;3v^3hxtu z{j2i%o9V5$t&plK&ne3@m+V(MgK>sXr_^l>BSljn3EwkmptFq6?3!dh60}^Tei%%u3QL<8ci2N%S@l94AgO(BiqBZh=LX?pMo*_DN;*5nn)QX% zK&-8dT@L~CxlMst8w1XbfgI0NGP0j$M?`-(OEQtkz13CvuK8exRCL@pX1SEXms933 zmp%t5V)rU@&VR1+$k z>Iyi!0y*QhlZ*W)bk?BN6DIZ0m42~!L-HOOFtm4K`mjJ-`7m-~QX8L}`bw)yyq|oT zCp<{zC+SpLz-pev)G&#;LG4nCF2`&wog%r5>cHA}2RS0q@sJ0c-`S_@ykRg>5&CkH zL&=-?UUq}3>o9Xz>&?0*QG#BjZgo|^PZX*Hzo2b8!wYhHo6#Gwe$#NBBqWQXF4;~- zzop(qg&bMe>3`{&Vmht4Vtq+xr6`uS%i4KL(gR7#UKaPe z#{Iq6Z&s`eiq=NX)gV$`yTbc(0JkGbWps};k6CvHJj;-&TC$IOP8BXcg$v=ngw2K~ z*vz)i07Q7490tL>6`<@hGy7VlOf6!5$Nl`9eCIdRBm$~$J zYQ%f`3BfrK=sLJQxe|C;FLTLj8ov)U*#4(x_8DPSPk+!1=OjPSL~jbw=MxkYx(8K> zo@Q1`d8xrcqO;;6r~4IPLvo5mPp3ZD#bb{i+YuLq=&9!!wY$fDv9j z#2zI3IP6~nlle$u_egzw~Xh>MOS3u0ZLAnlDPf zHXk^V49t4tXK*na3a^sSb1f`{ept_>9!fU)5xb#Zh1C)qd-ag{z0C$BE%+Hb)}WQo zR56$&?5@m)qJbg_yv^s{EZwyDRarZ4qbOnkwON}3iK4UEO0!8S*#q-`>iuR)?%y+T z8G3I&DCHc!65Q%A)#B@HbDDLtK@xJAbrfI*l z7c#WDJ6l|#UO|b=gd5rE4CS=;bWCM-zO{iQD$tB{9KNqbpW=y;0t9$V1#)=t^t#vMIM89xc5 z7B^CX4*Pw!Y{6R3RY>h{BiF^`#Xexh(43A(lzoEqOi@cDqX$oxA~zj&Rajp|cADW$ zI~oh&;eSQ`+I`>zgMthLrMoW+`pq?OH_Bn6+0br(&Nc_4FCIwel01{CROc~B z%Cv+|O5$(c<@QHjH<99X+pi`3DxN9)S;9QML9;K^nYVZ2P4Fe{YCmY71GdVt*-btV zL935}T3?N-ZTy~S@)MRW)n2qsqa4Mm2HI>Nl08D)Sk%q)MJQFC%oMc0#$VHoe;m9p zk(CoB_E=3()=hC26dC&);!#eAy#g{-6AfUK7a+J^ufS7d4m*^_uN1r#T;r7}GC|uH z>5SgIKT|#Vl9B2^eIbzcdA3Fs=ecg0&%`XFXvEkcH1}(ocsI=kXwvq2$**Li{fQHlE8L`#4f2pM#!h@qBaX4wy1kE}B1;&2|^s=#)gkD*UyK6fS;OW?czFs>sXn)Y!!Rnb}?)>Bfl3p^|rhc@sxY(|^NmQciu zzNtf9p=Twt?wsmKY}QZC3Ga8AOUG%6R?fGWESn>rE@s^tA6w{hkB?Qjdd4Q_C{u(I zAT_|18NvUG7!&NX=PGf|=@w@W;sh(rHJv1(G2ZUjEFJN?ZOsQ*ab$k%cttRg*Z0!v z82=wC245}Bl;vK6To}OFR_Ut`_x*)1 zn%bE@lp=ybY=F^U67ZL{n)f9LRF)n#?~4);#q2wC$=d`~7X2n!@1`{|zqQVek7N7* z(n?s;zK6IRD$o6?`l1XCwQtm6ztw8L1lnqWfP>58uIc?GgiXn=NRzbLr3C%q@11Ci zY{IHoK-NeP=b*5{+AT8lNj~}w6@dQn`Pohm)yo*=vf3r5?4_cVju6@H7BwN+_#I6s zpvZ2_hFGb73jj^wAB%}OlS_!PC3=cFH6^X_CBs5k0XY0cS66wWU|zBZRvw1nPWFY} zir8!#2;ggJU@ph(abpcpeO@Fdy85i{FWn?KPK0~aMy+(IfNgRvPgxzKDtKMF{PYFZkpCjy4CiMQpc42z!reO{gLT#S&2k(CZfQ9%K~$h zQuMwC|1t~Q7jUZvFU|t@1N@u@-;@RJ5BO0HzAy`XA|m*S`&TLVo_JwMXw=c*Nop57 zdKQ52qC%9t{*0#Zq7w*-RTq0i-!i6w9Kz8iGulqkF-)Y_)4;5Qu-?VSGEuNSkSKeF z>Pf6vJ_Ks94K#n6lkUeY&;$|>{B!`Q)iR?7oQDI6HN`~jV5!s5x`e^1s_#*u)FzpU z1#pjL#i=`EK_*V?-9p43a-M3*pAoi}j1i6n8ZuQu$^_y9VlD9z#E4acHYX*+aPd&7 z-pvn6a}_(_xot*|B^f*53Ek@{_P@G}{f~Zrl<}|dL|FS@+^(6v#@b6UtyGKWsVUQQ~R{ zX!8$I=cu3=B38WcRtTx5lQ1g<#~R~=$5L6Cu*a1&bqox0zIOQleY$o96KD%mMST_3 zi%_vC%q7AsRl0WZTT+%ky2N_y`F58HKKk( zzsL^s@dkH=GD=M7AK9@Ovqb!oVvg71)4Yj-<1j(QCk(J|DGRoh=eZru^^yH9j1*WT zBV{VH9$cBWtZ$y9x>Ct}un zK7(Mj=+4a__OLeEIg(5r%YL|6O8YyRvE#-AP^ptenRcX&!$snqqj| zZ-|mA48M}?GTVND?QA8S;1K}FGMySyJvHtgjXM)udaOYqsjk(S9DvPCqv!5qep4$ozd{Pd?E+~8Aoh~N;)x>GZC<{??Hu4vO24BMt{GE>gjri z<+;LJ=0oa9&O=JSHS4G0bX9*sNfXM?A{T!qAT3f;=IXywSAJjHsXXJ z7EWyFfkeTkiul7ag;a{pBdSi^b15n6Hkx%O0gkdcpjFv?HdW;AGozyj!()rmp)0UG z4NWQ1uA9Ydj@4@@`mo20J`O8FSlpi0p_4+riJRtXu5XT-xB>#BfKkvpxr|{4GrB&5L+A$xdLt)C)@)&TxIz_anDb8l} zS&<@9n5PLAbQ26u5y<=i!QKkR;nHq`JVg)^Q~5@AjCvW07nVSwG6w#zW zihnETyBSY4Il=r)CZjgv7tqPSHX}|*+R1KVM577G4BJx|Zvm)O1q~mn)c#Z2j1TC| zVoKsLR9O8$A6h2mXV04Ie(^#tJOYW)=cZ+(xJCH_i+i4g&VK1E)yEzo%t`M6uwUWJ zWdBiv7isXxfVT^Hgx2711Zlzv1RllfMeWrKAiN97qA3wCrL3G9W?8wj9l#i8s7g@=-B8+WqDp;usS%~ zIW$n`53)HZ-COf-v*7|SO4G$S9!bxxS6WZu;dzSn#yZ71a<|tJx{+gz56DUeZb!%X z^!@|;#{WPSEFEhu?F%*WMZjA*{jrpwXV|UMSTOaHefRE z?bEI`HT7#4R9zjfm<{8HC@pn{Vq;9irO?^MqwV90WqMWqq!;r0ZU{%+LEDOm| zAF`~_Ar4vOSi;&8Xls(H`N2txfW(B7K50?0^hpc+J?(5LOZM1j3}+f^>nOMOqFtaN zI_!)9Fz^+d>L);+01#b#ZYP-Itr&Bc*J=bI0GFGY+S_v&pc zmIP%_xh)-)X|e8gXo8V1oMvntAs_x#b)7X!(E~bOYBSDdY{@*ua(^L}46l-O;(mS< z7BQs{JObkGr~`J)5inQUbNL%~d3w}KVy8O%hx+|2u-mH-if7SADQCPyK{${YRSn?_ zLWl*+7iivv-FI|`9|PO75~TeP&g11I_Zp~|WY~heiwJqnv`2D;OZ;Zy&|PmA>-gn5 zev_TAILiYKoEa#DBAE4=3dj_s-vL8pbDsMoqWon|Z zZ>9GKtO+AYuv2!7LX~SxD3ep)kTt=r&UYs$4@PT30kPTE1ooy#ADfUXMAtm+3~|ys zjg#J|T_GbFnU?3qiENBB+0KA!Gs4USVzCR4dr|hrW>hp;j1Fun_UKK;;OCK)O$BFc z>?>ZnldAilSFt%dzsEPvE7wVe;+Kv)-pGzyg3H1OyFz`;`ZtwAoYK@UV`GLH*=H_! zkepDayFzF1H`k1cahuRFX7pb=gdV?%5Pj=yr2_wkq#P3%_BWDc?IAHQV9} zPmG$7JQZk`N&lxpIRIEjpRzjS;>=LI0a;h6Q~MwVSK7DR8#*2ByD*IQz1}JFyJ+9F ztx_eWw)xOS=o7STnKQW$C7WTm3FE5Px|@{IwJW%~tB*3fh8Uo2J;}B!ZKs_F1Usz& zw4L@!04e(={`<^g_I(4o?T0v8iv6&OYE=zw|1k^sB*_12Kg{;elX03STi!&Lf8Ig% zf=Ztr3UfUwesJGJBevQXUO>(Km-{B8k-@G;D8^rjge!D-xP-?@nEO_Q|enAtCXaX7QK-d?8zFtQeoxX z4t?Xy^w2K~3!}JaKYFKKfQ1kBh=E^pvjQ7C0V`50oM*$Uop?sGsT3Ne*_@*_n-_#S zUN~Ikr1Zx~OL-=z6Ew?*vRGEZa&b1xuWn1ToT^z~t66RXuImKhuTHb{lq+n}OJMCw z2UEcb&t`OV%5WW?3I7Au-f^O8kH;WcEmfl@IuxF>B&~QbE>a$hqvxxvjeNk$g41f8 zOb~B~302x1?t1Fca73HTiWU^7!>Guz$d2m!EW8Di4YBR35BfYqxhD+=JKn*8JIY~0s z-!-?U($nZg&r2k33`+Ct7mLXL6wFGE$<4wzHRfK8`J6qUl7loZh4IV+vs%(~bnymg z*<>`kiQ9M3WoYv85SaD%2_tL(lFDq@fX4YBh*3hni zO>hW;w_wWN6O61D=8n)YX2X|>%bc7~O-mh%xW9$2oXw&5Il{u%Cdn#R_{#c8G7Asd_2}Hrt zEq88GHyb5KJ)ERss_$v*0h(ZmN%mViBOt&nb9}no=lT^$ikc44zunOI91KsRkCMN^T#>L{)WnS6Y5i1zxFei z+kMw#FNz%U)qIH!Z#*Ik(ADa6Om%)DN8gb{`C@&k;gXDTj-XrfgKh3HKJhLegWhep zk(im?HCEKshpteqYCNyDf-AgX%Hdy?E2U9NhBW*zbZg8mO;&UBeon_Xn)ScV6FRFo z@?p<658@^j`N(NjZb6@q?DN&UOUL;=?D+hK4}+y5Re$0iKu>-|pz5NAFWHyYK+v-R zrM;{V=$vV<0YL3{PC;kY&S81PQ#~9Ni)07&9t{l?>d%RwirrxUkrc%LL!5*+*^g)r zvq`WilK{#&02(s@b&kY2rS2f0@303TH%it_F;-hs^3f1)61%i0PMDnQXM1mG{>0^r z-ICi0GiRtE7@3mi+>+d~dy5S@q>zESBUiL4@t-5ZKsv)*Jno2(A+EE8JvqraBqnpZ zI8AjmNCr`2EuE2@v*qq*ie+~vhVbTnIe|yHr{PvDfj-~U{6mX*pP25MO$TujX#b{= zdO-A!XUS)?+IPyaABM)g0A2y$$6XZjJLl1Y0C@Jz)YO=` zq7g?xa_Gyr>u_DaNeS)W(M$3<>pC~PlqM~#`1aGzEc zAMI6jjnUU0)GS?s&{XH=jLlK>US;f-xgb2oQL|9lYuLEE(EP#&ume8@hIkI9?lIPu zrlgz6CNL{69&m2$`VfzT$bp=ifg{@+i=dOuj-Blt zWj?rCx_zX{N8TZeY@Cf0DaGfKG#{lcsjHf&+Ws^!OU9*FF?O4Gx|B+)@mTwMw$ zu2)LV@TRaG&Y*)SH0L*|VqBlWO$Nv6-D275|FK?nA>#%b72%RYXl+nt@ zBX?5ddv?u>nJ$wLp;osU7ch!s!-RspH=|(hBBb{d*kf;^ACC^n6mXUj=PK`Ine+ac zN1peKJ@%QALMl3@*keZ(WbCnLf_zvZ8HvoUc0Yydw#Qy3JA|32z&CZ-7z zHJAB2TYn!bfFHeIlaEnY?P{f*E6Nc~8N+2&>^=`bZcK!pN3LhGTP6a zU4-Qy!FlOms&U6_+$~u+ zuU({ZowHQB3j`;PgN9jQJ2h^b#+@TL)vA%^iS{S`r6@&fz)@*^!KD_x@+pA-M}r+% zVAS!VWeV&`qI}wJn4?Qi1ALdJZU>xZQVsYz4Sq2Td?9%~Lp-$%#|wWdG-{i0k<#gl zhU-L2vJ%}1uM;%*_AKyRz+KlV@h{5)hXC6O?C}G(uTll|j3$h@7&?kJfmP+V$`=rQ zQS&Is;;|6$Q<}#ic3<`?cvz9J)N8ybuIWDpkt%H@sxf!yB%35joz8X*VJi~T_zS_? zvlXugG~|5E>(MM;%QR-N=Cw$8m1) zrXZ&EQ$6@J5J4;QgvK-q=HD74dr&L#ltw%uh?77-`?LZXd-T38<;9K3T)NK!=)wyY z;#{^%R?UQ`ZGg-1qRemhz1(D=k6!`>qy8OIGw9d@O_3W*)jSg5uTow=onIxYN5V?> zsj=z;f#Wen?+=ny_>zVOtvdE z{x)L^9aAl<`ZVN-JM&1kMr|BXd_<>+j)1bw_$^74VX~=XBP5RtNxX0rWsrk&swaNY z0_j=#Y=lk*YSvF&$bsfVkE_Za_bPIb?0S-k&Bghh8b7Trlq(GTT$<^?t8DZqKZ7b^ zJR!^zvMD4Og6uIrERrO%hmUZmKv3hHFkp95#6B0C16U5#NA z7XU3L_Ql1r4-((oI<_~W!#X9e=v69m`20n6ZN}U5X|?b+B@eS4Gc}Bq`e-w9U?SVr zHFAXphat26(uJj4%!fXMiaQzjw|vAVvG#!Y=bII8bM5(-VC|Sg4s~+T2Fghvla}aM zZ{M1#%7-O~g!tOU3wvEd8REuuQ1Wz9yy(vaXrQV@usHq~HM3aF@rPy7=^``ZZqTJ| zWYeLx_F=!YP+6g6za$Z5h-P0U zVRy*nUbHt%4rRXiIk*Z5G+#{BQ}VD2uy4XqRG!=6eJA>+Omp}{92A3P| zLHx}R9Uqid4h>YVLgXh`vNx5{=1L}Xh)aYK9SS>=cMGnlmcCz;vi21sZk?G79;)PPm7^g4n@ri0LDz3)yl@rY7Zpb?5bAi+;3^> zjX!(nN|Atmw?d7+pjDllyqJ=O$915nV#OGyrZM9)@~N8D#ih4N;wt3a$EX)YdW_s| z-_b*#8BKM5%(2lau(a3xQ*0DIalM)06^9|WmwPec{fEpYThVH?fqmX7B~AYDLbq!m zBfG+#Gyhs4N5)wN%LC4BT|0xztQI_88j*qXr(NtA5;I&3%67Y=(&^}E4lcvrX1vq{ zq6`&(mXY@9V3gy`NOj=@j+^ZhfT^t({-23aS$6^RkiF>z zp{3RWmTW=4rWz(k%EnL?uNksR6~4*NQf8P**w6imyq{K-eq}zin+|5Z0n4O#%XjOe z{_wtm^X?ZR)Fm4wr@gcyB~DrzvraZd>g-BLtu6Y}Ozr+KWi#t0BG>cB>a?#OomTFu zshybk4@gcG=^C+%j;4+abr*ls{#Mb;^%~86kEqqMC+(K(N}+!vn?5aGWd9s9Digj;4}?{?kPQEq z#~)Q+XGjw94(ygk=4qXU=jbdBGTM^2A3?9YZ>2}uS0By)RiQus2>LTK{D&V+|G3bb zN6^cKFfGp^|55VaBJ>~dr(1s9ol^8ukLEvC=$|`+p5vYr{cn!ue~i#CK7wAIFR1eF zIhuYuGj;NUBj~m7sMOE6qv@X!`hiE#muKYh98G_Z(0{=n-5=T;r8bkoB{hF-?w(=n z*L+9S*H}p}*J@OHIp7m@f~hF&X!sau{+wszqSyv6Y446!JPy=R%9XMKudM2IZ>5Bbkn1uS(?%yHb{M!9Ze9bzy642*R zm(O(D*B;I0c46}oegM<>(}hl4N))i%gQ#>~hl4^p?;c;!m5= zd}->wNK-QTbyt_tpOYUDYBT->N-2g-$=3m-&NH(84acxNJRlptMArG^Jpj_?nC|!E z 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libmikmod.lib b/Windows/codecs/x64/libmikmod.lib new file mode 100644 index 0000000000000000000000000000000000000000..03d461f020f075572c2300dcec48903ffbbc2afb GIT binary patch literal 26322 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 R8=jJVQ}L~;?@V&4e*vtoKra9Q literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libmpg123-0.dll b/Windows/codecs/x64/libmpg123-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..ee5845a94e74c59e18b2ec3d879b7342d4035614 GIT binary patch literal 171520 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libopus-0.dll b/Windows/codecs/x64/libopus-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..6115d7f5e29d3fe1b91a94d2d58dda49e83fbe29 GIT binary patch literal 124928 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 YWv>@gC*mX{ALY)@nX*~lr3P~116Qvo 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

+*%ObQ$CF`z)rK_rUQV66PF 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≀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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libopus.lib b/Windows/codecs/x64/libopus.lib new file mode 100644 index 0000000000000000000000000000000000000000..9a74dea1753a06984cace5ca7a47241fdc3e928d GIT binary patch literal 7198 zcmcIpOK%iM5H8z*VPl*11HT~3hFHPmVf@%#93_et;z+hI1{q`JHq1Wk-DF>yT{}v0 z$cZ(;JkaNz`3>jS@7q&FKY7(DW*& zXDC7EuX8#;d0<&1dn^w7$t=0D$U(b_eZQNa7*G1@0U&fQz zTD`k*!&aI5`17Fgr?3J4(h!^aNvQh?qq?Wvbx~{&Ox{SYyuBSw_M~=f= z;P5Wg)iFop@+A)GskQc|@do{%Zs&f1E3nS9b~XQNDc>x5o?vW| zu%&jmcCKhwtA#T6?U1%m?H$Lih<%~z@|I9dWlO25qRFhwTdjJ*v0M<%YF$F_sct(B zzArhr$B`u2c5$4V?I?p6&Ka)%&?mrqJdO3tV5hrqniC%%$kyD<4=0=Ggf-Z~^ zJpi#Ju@8C&DvlGq1!X6Q-hi@`M6W^HQ$#O7tLXe0==yo00}xUc^-wRJpp$fp`sp;C zp%{Hc12jlObe7^YOd~W(V*nYa37VuSn(k1#4>9(Ga*8y~JaK3oJ(zfsegM%l4vqQ- z4Yq%z03RX|8LlNA)>|MrORf60mQ$48s?UHfW10=4RQnMza>R}saf0(LelqRfE(-e6OWu71I{XGNV!W0iCm*d1zb~W(@z$y3}SFZS6^Q! zFS_Y`*%rOkce{{YB^yo3ioGTQHvX1akkX6q zG!f@$|Aal4FPD*E4!fPC<`?-rySF=YhgWF@FMo*& zFEbRsK3B@yO?zfhG_jO}YXtqv8GR@-H2;*#r8yhlz7^UatwKfJ%fr- zvosp-2bcBE9yZcT&qr>Sa!##L+i50dH!mmF*EVjrt-&9pOk!hUM95L>4e1k^jlC&A zl*!d9bqx5@^FQeQdszp<$cK!C-5DZx%tgU*E%cDMOp?h!iF}zmP5!UsF-wBUJmzmv;U)8!KQ@o{(y|(zxf;4m9Ui$|K-ddYyE@H2x_$0YIKPrev@fFy$SZEh3(k~nptE`>6@7q|(ln9yu zqy%t!R3x7Ly2SIpEvc4W1Rgt=OP2Zhv`a+cssRhxn)PXjI1;LG9j{#~WnR0_fOjH@ zCz5`bnCXyJ`~sLKgP4IclnSlX+VP(dPn`ksDHF1Lf>BV^32z58#M%Tf`-7P7nW#&= zW%G)D4!qL>&v3dtKGZV;RX+u)v#HkFnA>#7{`?BI#==pLBsQc&dn7%23+~J)+Ms|L&sq8h#8sR1-rxz$;6jo@u(SB z+%#3-j&pK4!oSB1$ofTA9e`46BdSK7vd#tYy=$_9&~X$`hS-b0-0)qKM^gV1u44TU DB>Nd} literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libopusfile-0.dll b/Windows/codecs/x64/libopusfile-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..0d77df32433133d121518e27853df7440436d0a9 GIT binary patch literal 46592 zcmeFaeRx#W)%QO`5(o;OphQto)84U71U0GJn<+#yFwrwQ!KkRH*kYp;Zc$Mu5G&@z zNrcnGK&-U&u2yMld)vy>YPE=pc9H-Ad;?Szu@$Y>GYl$fi-9Wh`+WDAykLELJ-_Gr z{rSsvWzIhPW$m@sUVH7e*Is*{+RHlvd4WJ6pZ{z&5LnGqf7Ryq-~Y6beAo$39u|0P z`14;`9gIEym1(o*+*~s6rW?L@(^c1%)L(V|^*6*zzI#o{O%2zV%(=cKa{fgn*WGaS zHK&Xmc}QsvbX`p#aP=L-52|QS;FPZ(I%LRkfgciG!v7(Gz{5xIEaE@#_gVTi;UPZW zdMya>qQ8ouiCobfH0|;M5O2yVLoU$&o{QNT2&^g~c~2m)bAlxi{1+%pZMZ@;#=Pfj{t@Jn;7aheUyko(MoJJF&aO3oawzblXm+cSjS! z_8qoU@Wuv37W|pVYBC1m!|fiiRG=bdC)So+(LKxjonoEPrr1Du+QpY%5_8sHWIN9a zYWvoP+uY(G|0xitOto)qnw8iUtV}t@?L<5&czbN?k>X{lq&*cs$#$#W{A(caj8ZCh zSSM5mp75wG`>O4{rkrP7rUdWgVt`a;Rd>h^t*d@K7_S6}E5Mq8{=`pQ%)>jB zsGb6c9OC@;Y{MZ!X;DE!fZc+Z?=$e@BcslqCzZo?wr4jd3eI~5kZPW3)D?ak{nn?G zfk0-J?T#!1g!kw|1Aq>VM~NG&xce37thW;%6xyLr793%_L)G*T6_MRc)cp6U#w!Al z-Ba-Hda6~;Jq25H!JdNGav>ktZM=OE8Mk0Hv42v#+f!DXcOaWhUy;pbXIUpilzX?` zzSSvy`DcWk8Kot*v#_+ndC7L>mQJvpcxjpKyclz?F0GC^>l&_d3$A#Y9@-0*W%P)5 z9E=%tJm+=W+2`#^s0wGj)%I&DOZ+o0eq;NN_;t>no`M?zPn}uYRTZwly3}L4)Dm-n z4%T+JbwVIHC7b9C&L87--zE^ju(f<`!_T}QHA2fDlkVM6)pmiOUb$7RIEi#J`!7#_W=i@mC8VTJ zByZ*3^w&-CYC}I*x~Jg7PW24~a-^D)egHCSyg1Wnr4yr-PNcNV`+Nc2{$Oh$5OaC8 zT@qa7P>~xc(m{U|TC2iAYt;oqI(HU!zFjnYv$blJelEx(8!=;sZ|U4j`QMzF?RCupq(5Imx+xx+nwGJJJcONeswebB&LJb zDh<<35Yzem=FTay-DshAgF`7;dW)TCE)2x4ucbOt?{w~|e|JZhps!XMCG3+9G*1uo5wI}~UWy$;u zd6w91h8Yce!A_nV%(d$!JG5!RIPbt>AF;!u&TF;0D~+YZuuZt2VzKl7LwV&rIyIcrK=C>LI{5KI?@ zBF;`#V2f&XqS|y(ZKj6m>=>bWF%lYMu3yS-U8_npe(BO_zY$Lr5~1OA8Y#%)-`R-+ zR`{`7=l{x1o?nQ78{v&&ggWc&&<8i&X(xI{Fu%o*w;hPKFT6%X^>)(hbc^jw8Dq8m z7cqAE2jMlhDv&skXWenBLdo%`0xjQm(q4+e>U4z>sLmdr1G=n5-yl=C^?(@22Wu@l zLFK6J2(jEfMoxsCwbtTc#7FB7*ok%d;XnEK!!C%qn#%WULjSmJMnBw0=>%)h*AS_y zHcGXz!YEMt=lc45wwdx69L+H#FDl7R=YI9X!*y{

    PVqGxiY>Ot==0_7f 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 Lcd;{feewSRjbNCj literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libopusfile.lib b/Windows/codecs/x64/libopusfile.lib new file mode 100644 index 0000000000000000000000000000000000000000..e0f320d739c6d7d0e98c0b54b1cfcac53a41f8e1 GIT binary patch literal 12832 zcmcgy&2JP(7Jo4taJ=lsfC=Wy9)Ez1zim7QOK8{0W)UcaAmSkQlBPY=V-JjHyz{|s zvWGowP8^~r=Nve5Mp0IZIH8=P9CC=FJ#g3qhx`Rmq~!OitE#KIrhDA+1WP|x*Q;0c z>w5L|>h+9V^6Q1IKlRP$?7zkQLVo$e^5VrsTfQK(OZip#c&CquYD7l|h>qPN8vK;# z_)j5D+$9oth7>rtF7Xs8aB4~7Go--jUWxli8K}b;x*_ouQegO!#3Q6YZb;$*QpS%V zM!+xd9a3QQvczMgz*tV=W2C@1_ys;h%6J~)%q=2;Z;%3KuSk4}6quNl_yj31xnBZ( zm}Hw&QJ-n{~e#kntEV^UBpm)2}uS9WBzj zg)P5Y4Juxt)(SOkL8RBJ*Mn*k-KgH<1`B3hYn6(%ouJC)@+m6O1>zx+*8|as5~rqA z>(>Lj##Z1LnL(tw2ESL-2_vU9wu5c2(X0plwpYOa&~~m+>ocoY@GF%Kzi_X?j4_F= z$pfpEM8+-$Q?34i){t4Pvs1v^1%a@wezr=RL8Zdgxl}ycrM0FX6^o26ulxVdZR=;N zRJF~ecH2Ut+Kw_&Z8;jSXfYZ;&UvLu%@>o;$XWG54Gc#+U& zjc^$Bvr$?v`<1F7Y6SAxC~bPhpinCYdd&Ha8i6ae>y(>YLEQ_gOf2T5sA5a48k>H( z>eWgm=qUzMq;;GArkHgijif4S#z_jE5^zt)YZhvbW>c8@zz*yrH#IE;L*9z=J)!LM8C)p|UGZ zs8g<%*>Y&#tRkcdHH=p>tAt{s4&JCx+lE-azmd1Ks&O?fu=N_AU*x%jcjeI+xi%Wu z@3yzGDchP_8n0m(O|%;39j)39?^24oz}dLYCRT-C*=TKhJaY~0SV6mb8|A8B|G;as zN~Q8YV^!_4cC~Tn74EfTH45VOqJbCPj*qwy8bfX5<1PKY6^Jcd87IuQ)zW8?r7NZJ z8oXuLeUApfEz9g#t}JNJa+Qb%juPEEM)c_*(ND*T?w%le2CSbXdI~I^BKi#IJxz2U zcm~{n-}Du5X_)8{Fa$sE0q`SmcZBFW;PNQZV<0z1^fAyoPV^!09JqCc=o{e5S)wn2 z$qAxQfc^0E?gP((+vkYB2G-z9eE}>@g9{j%fiBQ9i}rvYfcNK!z6Wm46MYL@ULg7$ zm|7%y2*7=&m#Bw+M=#TUIzYYj3iZ+N=^*`q{z$JWkX4nWyBJe>spmb`(wqnyDJ#0*zwp6H`ZL8k(Xym zZNDzj{f^u%$MM!{Gtx2MKsbwHJx0YbC)h5q*PvZytiGrq>X+e|M#XJiQpfpp*H?!) z(|pXy>=eCRyr`m@clxXd)?5)$i+L5~luDgi%j@Ru^c6qaNB?>J-@gsM1dkG49skW0 zgN@ea_`6{aUL_tLsEkb4sQ-<*a?x-4Ur(0z6-a>i-&%c=s(O5j_prq|P$y zpb}}Fd?aBxoOb=ktrPuO=a~xu)4lklo#tc48MKtYAm!qx}yfl

    ~UsL77b>$_{Z}N(HZ5oeXW>fVBK>_yj=3s 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libvorbis.dll.a b/Windows/codecs/x64/libvorbis.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..9e1a443886e3c0bc4ec09120bb37ca548314c0e6 GIT binary patch literal 24984 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 Tz5zG!)45M<(p=)Kgfag=(nuAA literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libvorbis.lib b/Windows/codecs/x64/libvorbis.lib new file mode 100644 index 0000000000000000000000000000000000000000..3bbd9c62e36a98cc227de7482c54c18bbad10fdd GIT binary patch literal 10304 zcmcIpIc!u%82+)rfVqsZ@oldUY?H%a<6W>skV!}c;*>EGiI5)8d*BD_-OV0cDI!rI zgi=r;rK6%qO+^t=QBXyQDixwgO+kr7{&_R==6Eyj?Xq~KZ)fM9|DSKJf99Xr(W7oT zy?U(uKtlb@&MzEE9yv6-a7dLOWZAj7REqw*+719`0XmNXblnE%eg@Ff%kThGL~jej zT}%l+Q1o2~@bMN?ME_-mH<%&@PBJ{l6fro%@Dx+T&>+JjOcBFv4EHc4_((BQ0Pyh+ zQ$zxJe7wRGF?y5%+dhgIn`C%`DPp{z;W4I&i4KN`m?HK81NMI(!F!6y9Don(+azM@ z3d3tmUpvmJvlq@UEjuTEy!gY?sSC^Jmz=z}aCBn168tV{QJv+J zm(HDbP8?r8j#l1U$)S}vZo$ppsdyF8^F}RaC0|V6DAuaFx+t*N)pEIPIc!D6W}DTl zo5_|?}98+YLyC{s(a0#?~9E# zO1pVQRA|(f+s@VPt^c)_E#J}GLxslL{URq_tQCUs=Ol8G$(F7-M_P=`QYujFGL@1# zYeJytT`RkVT0ZMky|rKkDl$deE98pQ)hgcIKwp!FEtF~SwGDIN%jF3W0;NW}fWxf_ z$rY>0okDdrD{VAFVAi7qUV+bVpdS=i>{i`;jyP%9Fer(!bV_zxEVEhr+m)%obd6w% z#nQ`AjWBCaVzZPsIx#?Dj}c{gwSs3g9&Y z!#3CeEwB+bK^ts_EwB~ZVH<3R9k3I2K?m%HPS^uo&<%T`2YR6o`e6VDVF-p{1QIX` zV=xXANHPgiF#QEdPj6GL@h7ojRrevQSj8Wnih8|gqGBZWEDqaB9jLTmXAju2m(!A(+M2UT4D?#tpQ>X=7s8$2U;}D z7R1@YG+Q8M3ARMY#M+}d50kPGDDtgAdWV?Fd(WU?!@YZDh)7JkAXfA9=T7op?(8872j-HAC~gdrB-lM4LD1g)4Z!oe3zFU7M&wA-{u~N)c6Vprk6K77H zJI%_~WIJX_YY33r|3zA{$^WHM!6G_V2^&52@;CVONwz|DjME5s-xmS=cCT`Y-%HBH zbmoZ;8bP3w6cQpQ;UWK!+5x`fSxj5t7ySP0DC~=_oVjF@y*!eY)8en3zx_7S2Aft+ zh86|i(#ko+g=FRY#WO4=D`)*yL_KqiAwQ10<@K*!TQ#v>H@6^<9re0*$UtWtZySwy zU6KzM@mk__@@Ekix!28eInn!yP9p0j11k+Mby_VS+t(C7 zptW^OUNhPRYbb!#cp6{N!T(IE|9p+So5Q?vfUHwDKGJ-9)cQP*+*>4W>8-wb&Uy3f zjv?n(ozu9Wv?j#PY;b@Ydf6@*d1y~w1vHA!Si=!}#Wo|Se@AJaH^O7Lhk5DMqIp*K z_LtB`m_%7S!mM9rRwH`4Gt5bEaZUF$72&PBEUfIGndZ48PQH#1w{#C}nmK9dHHjv6 z3ubZAZJse=MRf{BXnfy~icWhCjKN!s-qps(I3h~yGcgB` zJvz0Pk6lkG%L@JmcZdEcW_(Q2xb%EHcSNrTjNJUOYCV|;P0Yb#ShLK@h<$3v$V~oC zZI(64hlfq9>@jaWc}GmV?6I&}-l$Pdn0Woi$Yxoi_K#6BD}C(Li5uTPEPExnhm4t+ o#cOKQ+)-maF1WSlTAfzQ$L<|T%Z(5JYR31$;C9QNgSFb>e`R;#*8l(j literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libvorbisfile-3.dll b/Windows/codecs/x64/libvorbisfile-3.dll new file mode 100644 index 0000000000000000000000000000000000000000..e8f1d7e645de68044bd1442ebdf0cf0b0c884150 GIT binary patch literal 32768 zcmeHw3w%>mw)aV!V0qM2phbKj(Frp}9yTft5%^4Oq9>R_wdJ9pw4|-=rLSpEpeU4f zk|@XH!HznP-q9ImWW3&ydk06RqzZyy#*;`0LMuZ0INA5#{%S(;`J*?UFRUN< z_GPUm-`kfJmRHnUYwK$6sw=Lt`irZpYh>%fQfpnH+FDUj zU@)8iSzzN51S{q8wtXTD7ArBpt`-E92(eBOn$9=!zw`TmAmn^!0nh9ZgzWDqFMJ-T zaTLF!SePi6HpomfmrxK!0A;&qf!l=h+ zxDJ^ac>d{}dXb5_w-!?FT>6UOA^h&f)92$9oRNugCBrYD@;mTQy=9c>{WuA~y3)!T zKcAZeD5H9fy>%!C{BG!<^L?sdg8&YZf`_fTYaSxXCP``2Zaw1Z2vvuC4GWMA$jt((mx(a8_ne9`y7D&pQ1U1|lSgvM0x6CH8&dXs572M{kMUlCpf6fraiwKt4L3;n*^IhG8yI~UyHn!hP{+QbkK#7iaBJSGSAB(*%v9wB%W zvH--MpuQcFV~g`8lWYeL7Xt^6{a}1>SqpN-&{*ohK*XmUU=8=*$50M@Y)`0`C=%gF zph42I-uidsYw0f_h+3XSJ`F`baU11k{lX|*i9r7ovZ59RHHcHgiNGL2={`%40IL=m z>z~j{_bOc*sfMKNO>_h;H-o25G(0w_dBzxx(JO!$e^FA?vjIY{zmWmJgvwszT|#*a zC{Nic1&^jljxU!Cm(&5&#}|~5=s?!uBj`rYCv2mZ&+bLH)N|C*$)i!r9v(B0-G$WI z$f%Z9u)2}z|cR06A_A4x?oJ{8b`wX{hbEoixkV7F=UNIeM1!M~VX;v<^_ zPwJkVLCZ%`t}jB2I+360>38I}i3DW@-iSZklbOmg<-+g@F?2V2?kTte0Ft{j z^`Tn1Pn_Yi6}dsH{O}QR)lN{@6Fw-edIJ&dCZJ^B_obMT6~S)o(=G{{kxl)F6FxQb zDxYe$H%_%j%38j3i5X_om*Q;^G5Z5b3=zH*=kGzrHdd5^*rqSVxs)0@1jCD%eU3eW zZNW|8@~vr(4;w8m$Nm-1AmWq!nh3S8U@e$G$KAI}%_$@@ux6$*!H?(`@B0xH((tn0M!(t*4dz@2Q55a)x@ zWtyuugBzLvD77(@m=$wGxxvko!JSwytt&9`fzMP|8kT@x@;5_ZL6l@RNo}8|N~yP$ zOWN}zAs-~=n7-|La9Vro610HWeNNIIevFsAh>~cKx}kZJqQMpf^Z_c-;A2Kyh~0yh zl6p&d{P#WMa}|1(_h!xUDbd+Uk)9WhG!B(gmuAp>OW}n0pauYvR&VtwpAsHj=q=bS zhz~r1d@;O%O2Y|RmedJDe~oqdz7%{pn>LXs9zv(R2_1`}W=aIx8>QeBL0+;^NJA3f z{uSVS>R?wZWiVP|i%L995YS8GG^L$tsi;NBtg5F$IPS?1AE=-hL?t>vEJ0H)DIM4o zq{pPOxfwAhG6Rmp`@zX3>B7$7r|7u7i8Y`JWV=U;q!whLx~W4_ax?muCGpm}v5?|X zW4;-YG=)tGZL0471++AkCPH^2Zp;D`=xqCR&B;@uuGy|x*f@R4+jC}1$}R?@`7oPl z^%Yw;$l_Di*t&>37-1-4%&Jd&b~P1gU>N=IG{hiHDD3S6{D!;+^h=^R!2leQZ}+HX zo21SHbx-MoncNb?S2Lie^l_-{QZrGWCj{F~Qh2*d$+U@~;SlJOzY|i$3f4=}rxXZ+ z8$!h@DIUS=&$PJ}cgr`ymz&T@%8IE3`T)ZzrnKv45R;VCJ|(9Ag=HS6Xg8wZr3@dY zZz_w6;kVEnGmUK%^=UJ@2lz?B?k0IQwkmPuev})Xq>ACum_Rj18z{O1X5;lLfN>xq zhEq|-Da3njMj3C~x(uaa=+^)S-k~w+o2D8Bq>zTyOGK%8GfjoT5w1I2ce)nP;x^X* z23k-IK+3Is2ogKQ<*@;Vm_1MF^3jlv>E-Bx<|7kGw9=Z3(ULXzhhY}Gt0(QTpTNGC z9EetF%ZXnR>`us0Y#AKfg$B6rRcJ&aI(#!Cu2*OSmXt$8=m%MiKot8=KiZDQZo{a$ z7%ln}(uO8PNcl#Z$!i$^x!r@^E$k)mFPh@(+4={YfJbDDe$g%HFA8%GA2upi)NG?f z>~YY7&%w7-kfyCr(w5nZdXUk7{uip!E(K3Fi6NEhhdYf)Qig#6VhxO(Zt%t&ud>@U z8)U(fc@=;XSU3_Ej-+i^jm{vYf`=R2>TeiVU}@w_8dQLu`SM01)JRf}OCZdp)Ge{q z&(V~oCJ*=_9S-yKD5Twv1A%R8MNDqNf<`0^1CI2%UDL9atO;c_%~dnEq$v_{Mg5m96$j zUigGp^g?Od+;BDv5J`x;4QP)FYDu}7eLg6rOqw41Gxa!-c+ggzZO#$R(mb=VfvO(ep+ z(Jg3!3CU9q&zge{AVDwVcuETL;8th>n@ zkxf$}O<+Pm^g{BYlKuli#@_+H5W^o)74^mpZ*(hlC^@3yswa>K{`M-}V0yIoj*aNo zpF$yI2RKU%{VO%X^eo22OKinD9n@3I=Re?5w(50Ad6g|*|9KKrB&*MHKn$&7ZLs~T z2EL%(rS2(L%a;SwYapHCL!@Av8N+u^vCHW&0lK6p^el!H;iv2(+#aOmECrX@CJS<* zH+TjUJ(P0LO*S|_5g00|kJ$F0FOTvgpK^r{%o*HVj=ieigd6;#hFDFX0_H;d*c}XZ zV}`Kwci50fki^^j=rgW4Y-W`A`x$1rX_m?{CCkRe9z;z(erTm0HpzPa3DU#G&>k?W zq}FHn97mUz_!Ql%d?k(TlBSVAt8tiDb5Fv=ZuYhvzTRuv?0xqerl#!G--Yy}wZ5D+ zN0&XaVXtmEX>bl!pctA@6~d9F!93+N^s(#-AGG9hhp{uulBBI?gz{-?jJ;aXd-X|= zate}~M4Pf#F7(%FtgwjZrCELFN{a*{9}a_%O3Xa-;8H!~~K% zQBE_1=wzA_nlPG*9K?wW5QUZ+vXN`aSV+Hsh^9`N4grX)1=dPBs?OC-Fo3XL=1Tqt zSiexIBrF?~PZ|FP;&YX$_an$B1Fcq~JS|f(wA%u#f$J#0K~nBclfalw441nzD8AB& zkEA&1v#4X06o7odwwjV{pIW5U0)QMuSV?wSFD20nqjhNPdQidfj-1=Wyx<0+3~>Wd z>nsLf%ZSWeg8^Q}jDP_sH}F1aO7kMAH^X8f%}dF3Vqf);}A zpt{9plgtTq7)1! zC-ei7cRuZ3N#lmhQ{L~R8NemgeE2ayEfZI)w>1%XtpwHfZQ76v4@ z`aF${l#R$$K+&;P9!rUxNMNu1HH_`h1%O82|L|oZ;Z|=>^MtpHAscnUku=Lo;QCro z=T>u32od-w2U!IuZnePa!8W-n11+$~=i0ZsrU-#yu~VqzQ6;k%_ORQrO&*R#=ytrj zERHWR^cSdDWi5(I%Ss6njwG~B={EpmuNKSoph?I~A_GNy2Wf0T_|jt}2pSd`MX{HV z4Fqbz9pxT7rhBj9;lUnh1$;q21Nvc$xYE!)gF))sWOQMmpuc5@mhtmmdD;q)P?c+p z=>zA`boS#Muz0!tbq**9Ue~`uB(?>O?Av2jG(~Ve@e5VzLYYg6vhCoM{!i$MDPfm@ zY@q3?fkZy#Qz+0r*yNJF9o2zs2e-Jv)0nnbkO`Z61z?h9vJfGYrN{K&qlDEtE@nJW zSn4gvaVw{G9$+j2=?ZQkbpTAVl^BF7QBf;8Mx;OIh@k<14JE=Uh+&$m;5})Ayj*>j zXcj)=5`Vo}Ty;O~z!D};3>M9LF0>(XFh(CVhSdnk9$ED(8ngy-!YH8q z2%8frR(u=KFG9DpL>@vl(rwnU@CTl;CtZ%HTb$Vqo2hYXp8s>N|ET?hx9wnx)b?45 zJ?XE+s)j-x^QQVH!Gt>yjG81h6AqfKX}Sdcd&-n$`;%R{mD3*68GXY zu%DQ&jeh|^u;+cA;v0LC;hP7T(1wFsP2S*^H2tYuAba()gE2zLtqx}r!jCwlG?4_O zr*XT-9(S~hGuq+bOF%JZ z`4$>Kx{>uHn2!O5PAQW0iQ6e7nZ{{F5>;#~V(1q{MNMJ;nwIetR~h-28S&L9*5?9e z5+Jk>4G7-j6aq_;%WHl*K3odrHq>@CH-v`LMkv8|tQ< zlIYk_f&PH9^6{6_vq=&yxMNc<|1@4_KVpYBHa^JMpBP@IQ0cY_D)ygJ(yee2pbzl zMmlT`00;=DQbGeo62T5C=e~bR4lSC6MScn1_q^^8kG?&y4VPiJFHc%{@>!d(m;Y6+#F_ugEl3s}{ zNmExNb0ZCklqUTy>VxlZB!Q;-G#}K7etJ16)ezaB}Hk=j`lvL&#&Yi0~%r@c-x8gKoU-Y&eNYUTD9yp|-J;P4#OeSID04vGJ zeFeFsuz9%?23s(wmSJqIpW<`a+4N3ZyrOWhVx3|@*toEov7<{Bv1LaemV z_*9pZjez;XSQ@)1*GG-=G5^1Gg`R!J{qz=oSYK7DBe&d_ye;E3gh&rm=ktRXgiNAmY!y}D^}&w3Hc9Lr@4w$c9?!*g zYAh4w2^(!jlCs`rW#KLf(l?t$*V=Me_@+-;W1EbqPg!eovT(gkV&N;ce1z)HnlL>$ zLtKIN&H+NbVgRwi88k?Jf<~tf3>4A~6zVZhs7Ih62?)7OZuPdbb&H{v$o~eh!fd+a3Q*g+r_j!^v^aphM4)zj)>B*<1eY6C(yJ7H8n zmspjcT-aaGOWlsifuXTKBSXzM(|M%Zaatbc!Zz)899sbc?3fs$QM;ArNkl-C#PHq9 z%e0c9;pwjeFv~oq{}E9@g`9?H>^01$J2Jb(CnMsE5#TqT9iGJWRaDnFbO^HODSZ<{ z)X0tvBpL$-7UMC!3b|zSm?+cFY(Qzz_H5`426KKBEvi#=RiIR=?9 zNyej`&V@lZdGJk|?T4 zd;)E_9C9%(he+CV6I8jjPhgF>FMu3vhc)s>;5hu}_DkXoL(161th-98Biu zUtf;o1GIDXaQ$Ar^-nOeNG8PQ(U!_f*o5`yXAr5_m)6*50Cd%c+$1DgYhAC9P$dD| zz$L3Z&aE7v{k@1JYq{ZPgJi{q&fE8F=uQD!LA05Gg8j+f5RFtSQgkEc1+3wG^*Jh~ zgJMaYOzK-cdQ1R=`T8AL&62W(pCDkh$km`SDQJRR0^P5bz)I?1+&012!&E>{eK^4} zso2sBGUNhUG7=Q2d^da*beAEUQuBS969U6W2abF7@aO0UF4^md5jTsWi-17d}AFlJhpapK=r;MA^0)I|+v2`!~0cAq_&dCMs7m82%D;CW-)$ ze3s)hbS9if^{P6gHW58AP3K{o&7Zfa1>M*Rc<^ryR_%tC)! zM4A6@`jdpwqLZZl1RBF1igRz=kgD-6UTCFA@%;*f!9n z7oiktbu@4h&I8W6=o4fYD4YPcSC3qSCApu|xA|~3NhEBgI+3f#Cyynxn``!lJ72>7 ziDPK&qibwrC%j7QiZ)f|R>KxNk`=yUvm(^j!|!g06Zo&Tu9!|5HSYqOW*3_o?*7MS z%HU%45nLbAhNq5$#O6vMvAGhao793d=L?IWQmkcXNfBCl7;l??eF$6Nb4aos=N(t@ z3zN9AomP~(s3=!6Uk^8oTDT=m8jDk?lglS)?t$M(kHvA#gfcbh3@^x(lx@^_>7V;F z^7`L__O*p|#nu6w(l}J1YebVJlRiT&X-k7Ok_tOApRO9gPC&^Fb$pwl+aW7I&+!>n zCJ@YX92QqSYyoDeP@;X>dRqhp!QwMEU_^)|AOgN7mMt=NC0sIKoQxZHKIJHh{%Pz$ z=SE{Kjsv9Ql6b{7IyEek#$hE>vYjculuwE>a>hrz+In=2dsSMP0N`NBE6zYq@Nn(b z-})5&J_hy@!#@R1WYxloJ>VOMvk{}l>HWm5-A!HvPNbjFL}KmVfjbL^G4Pj5h~Nct z>26gH4GD9GImObNVjd(f0}Yn_K~j#=@t=fEu*gi+3(1(?tItH|U~Den#n6SIm9iy% zl~?naBuCfsC>d#&NzF%%`w)9^_#}xlx`4W#iKae34u>Q16K)9HKHJCA4ocuQm(# z92d2#k?=YE8DjWD;d1~GIojRn);q?v{cr>c{od{K=XRC80Wl4Urh z;Q(HZBCdIY$fH?Dg*f6u;vz~+xu@aP6+lpYU?FOub zS+IqORm@j#tQw?}w6!+s)*IZ0l>(X^(iePyY_RUiC}x`vNemq(;ep}&gos6ZDG`Vd z2R7Q-qw)0}4YABE7ZDGDy$|U#5T(tx*4Tyt2K;$ih4$}&^R-ly%$5p8Wlryff6KHy538dFq(1d^bFOLN1>;N+ewp~ zej!|z?0iEWjf)B~H>QcR;p-ovF$n{CGEj-XMb+n_Ist^@7}Fm`0!q;~UVj0OFL3`N z1G~9fITBlfzLQs4*ir85dkkcPQZz!`fVu^QA6%}C`{?ZdVyLws>0t~f_Dk@^@=snR zLm+kqDjLpxh*)ULrXx&Q&Wu5kz-q{CkWBRrY?n?NNVgD(iNtP9c@2LI2raRX!A`x) z8RBSpR#HmEegnj5O}>mekWoGPGg%s96({MS0yn^pT>$t3IIXY!-2Z+7bEO&{ME#*| zwx;Pa*2)nOY{ZghcJ<_iQz%b+c{OH-4&ZXYhmRr4r@cIq1tqp3`w{3P5GbegER2op zlao~2&(4XcL>tmXXP#uH=obM!(gv{{PJ;Jvjuxg%$k+@UK*4f$anQ}=LJn%Ot7~pk zq^&yzGmfh|UI%WulCeS>-6?%O>YxXjnt_O7FQ6MfyG9T|Y*)t3H#khlsW%t%+G2P-5ad=Vzr`>QBxN#yj;(ykC;I)sk+!o>L8=}Drx^(<%tIkg6rBpL za=}9VXS4xv=Gr5Up*SG?C6aIkK?`m(yBr3XM*cox1X{8F zRTcyyB0!v<+zldHVa^A=Pjem^WfH8@b3KF>%gVbS%8jx(XD)f4#u95cAg>5c%5qdbtNj{=7~i) zDfy4mCC6j>izq+%dq;QA9pA|8~*? zVCI@6#LcE$0XG3nB2be^BRm8^ywoF)S}*~XK}Hg;mf^lE^?Ut!o~ zb51mN(zpEt&d0Gd_kxCc0fyi>2^VYEig^6_UVg+?H-mt%Vw^MxXnJfA`J@;_Gl5)V z!^z>pSuvg=0K1VI01ND-%g7DSZsMah@G0-XM_md}8;&{NB!pN;W#YtROJ0FHl&U+`TzUUuY%}z-Rbu;Y^eVs{bn<|CXY0eE5@mMo$*1mej$m6 z+BMziA6)N78I1LH)PPBOU@0F0(2OQ{dlkBKd#SW zY7AZ4$^|22lM&Vh-@ExZEjZ$u2s6KM0P(B?5@Plk0|cE!01O=9+Z)FPVS=FVmI`T%S4Y6yri@ZFMR9@kTS(Yr2Zk~2!Y=L@Y~A7%rLs z#4Sg8qZvN13_zs|M?mvC%NzQX!zzH3=_k)f6i6fr^7~0PaTT2p(s2yVVgiLewYY)F zorpc*9s3R4qB-sruh@+Bp5RC$T$G*v*ezG z?MA=%G?dMHCuXt>FS9hv(ahKSRDT20jJD9kVDl}C4`Jgyl0j82kj5<+my)pSe7i0Z%xW`+!g-}XDSgIlX3?H+VVY+ z&pxH}fTRRE@R|!IB(Tn>ROvn?&}DcJL6&1aWqEgUH4V`he@r?JR0R1-_*O9kfpwA! zXew?8smu4^?E8RE1qd|&kIC}x?Y-w$Nvi9^i5|*c9NOx8V9V2yI1GVLT#(i-Oru%9 ze+cOifhWWl^Pa#hZ@d$@rh?RCrl`P`y7ODSdC>xG1HM$nvy!B=X5Mls4J>$|OHaED z%lm{+!-m#4$?M+&^%Wgx<}lUpq6W4s(95Sp^bf6QgM(Bj-2+l^aiA^Dv1`R=Uain( z&Qng|#RVYh2FqIYJN7dfv;!H5-G=Wqe43Ois9~m$I8ns#=SCJAtUeYA+V90}&YsW7 zqiK?SHYeS<%6q2K?)4ML^qJ6}`Alb3&zVmjsK)2Cn@uRFsz2}np-tyouEhI%Lh02R zn$R3fHqYwnJE3zS{Cg(!PXlQ}!JvfsESOTWS`niO-GCArtOxf`R8I?DIC{oItkiE( zahB#{6WXf(B#H^W&zR7j`84E#ai)5XJgDs_584jkzOT#3>(R%0(ZQKDk7e>YiP5709(`Up-+Qk<;9jC=mBaJE{hW~_G9)-LV zu9pRzmE>tl@HT0Nr4qL_T^kcC1Yw3Y{%cec@=SCU5le!4%~OXA{W2GCo6@VN+rAWU z-+tUJPT1~hK1D!0qVG*askKL(`34>OxJ+&Cl>=REr_$Ujy(9ute2znb=W%zyXFB1< zfvw|rwB-X;6CbZM2#V0n@5KzIh89vS@W3)N(DH6mGaRm@0$45?{zjKCG*_e`N>NF;V zu>BZUEL|H2KS@oKl#}*Odn2L^2JeDIZXdH_sRk2+~jk76lkOC_rZ3vLtnNob{=qGqsOUWa`ZE` zYlig>{{XIL8oVf}*WrDA`*xrx_U-epFdpt-qjNKOugs&Q<(ax1v1OYL3bZo{{2``* zIr_;fem|-O!=BoNK!hk}S&^Cvz z*<&bvq$_-v^2hbYmzRTi8#{v=n?M9p<90mkwzh2O48TtA&1l_P&4$$5mh|TNdBA5{WQPItMw}p zacMJ6pfFP;$z^ph@}MC2RLislD1{G7yO$c+JK3u`P%zPlYbW||b0s=x`zK}P6QAl? ziL_f?fTMa(3tdf~3~dt{+Um2l6B;(tH>=1qc$U67$GqYo6qMC~_l%^?0kC6+#uJhlU8VobTkCdjps3nM{l^Ho=L4p2`eir3^H51FgY!?~jcj@G1~O*#-OS6IE>MM= z8Be8u*x4!3;Lm$z>&U9^s(qMzOm2!QFf<3%|M&h7w!|F z0l7zoye?4bp&FOq@{_XG)&#)# zt)jpcv}4RA?@1B)Udze%iaXC#3#vWUO5S;HQPWf4&7iXrI&YCwOZ-}PGb*`%;JVF7 z$?*aGwobWKtxA(jha|^N@u&L$#1-6({XUZIa=f(+cIaOHbx;zd#)T;{^gb%&`47(2 zY-{k+MJl~&nmS<>fO{2>)fM%i7(@KG^C6{Y4RN(XKNRR!DZr>!)EEg&icxvG>a&ha zWc_p=18ls&j2+aC*V*L4V7F7AIjspTWpG=XoSO&voti!t?MPL(vV&q*s}mKxiZ{)x z+>(*Vx)Pw^jJhC^_2liSr={2Z5ZiCNelu}Rp?Fb9Sesb4)5&YrcTGuaQu zE+EF%(myBnpYnm8fHDI_ThT(D1^;~dQ54Kj-PV!%K@<_cF#A1txX7)hKZ$Da(d@zY zdjR_`95SU{IJLs|+bv_fC{R(LqChQ$o281}EG<#XLc#|_(4T_?g*;g1rhePv7b3E? zQS}%`)M7_v`Vco-v35sMpPFSh3hC0pSiF~V`n<-6@I6>uMP`j#wKz~n{<%zb+Es|s zFLFGI628AU@EbLgMj&4d&c*0`+L*`J5D}KY#r7ZdX0xl+Og+LrGkv0(Qd4P_DW11< z7g5LYW!-+&@~dlz=;EpofIz>ri*mu2SkNHvu z`jotgtCfT|4iWVW$oouqIX+&pGDi0~dgP&7e97cG86kU89^-A^#xDL4l&+bY8Lu3B z0EWaNf$2cc@t0U1UBEV3LH=+_888k!Y1}`dnomFKOa*@P?u@zdq7}1W_o3!5P&0lW!(Z8?<(jZ^ zf>U=1f#dP@gs*DZ1#2CsS=hD^wQNF?Z&`RB1OR&n`5ogcms+p-?Z*=yABQ18raL8d z)T0nGB-$mqCYVoh9lHn}m0|V4C?eq~$l21#osu%@ZmRn?&(_GTmXpYOdluLNLLbrJ zBC2fRVN^Mi$ZACn)w3#Fl|&+IJJr3q1j!RpD+YiMgr@zl*Zz&y{+0K#&A7GZb?lc; zcF3cA%9uZA5Wbc#5X5Rxx0n7>>sxnNJIkQ^dtbSlk23ytZ#l`s*<^TV>Ca(U^y?WRhi72Y3V?+`b6{5q8=(a@G zdxgl<(%*%kO=NwJL?X+J?~Me6e!3}Z6H@w5;qS$HlIj6}THYocG!|WmXlyZv#F&Bx zY*kIueuiI(TypI+4ME+!mk9}br=iT<063&PL0*fY%TWS#gap|DM8R)(*KgV*Xl2~p zTU;~k=PdCwAWVCdMgNt6MU1K~(;#C|_det;sh3=KvDR)HfCBj-G$Q!*o#%+Ln{1eW@*^_3Vi zoqo|<+{O@(!gWhIuTT!{R{DOP^Lyl+WzS#{vJ1QH5-;49v>YeXa&+ovKso5Vs^x29 zm+-!Tl~y9Ys4g@usOeM}i_VD=;x(TZ$f*6`o!?zbocA*4H+>g*1e7g?;KLn-4Y(?N z`PG!CZveZ1btXN04OXN!<}KPpmEG(eLc9n2wRh}(`-$hQEWJB^Wy@BNFi_3M&$i&r z3#HVoT#!olq;+X5RP`-s%1vnsY|mg670y`Y%VCA;^r{|-&Mk0B1Tq*3v1^SfbCaU9 z2d7|K`Xg5nn{T{@E90?D)F1{1`(ka3py7i`*(9_;pyVr10DCD>1jL|xP-HSu#2|)Y zuWIS1FtS8eA|D{sQEc5|)}}xm2%$Ggon%4K!#}uH57lx@Vi!Q4PruiKbF*BGFh;w= zybPKHysvCI#h_8gTKeOF{~i4&4siW_vTB)4Rr<^_6|sEL3Z~#gn7ZD zhxx%@R2+LA0f`#?j4KS=(Dx_+R(>og3(^utEew6J(YDi&BlV8pordxVyvBq zz4Pa=_XElG1n(_CHtM+Z!ZmW?S z-_PlnO;*=Uby+as0v0_E22F0@F!l6(NMn6~eIUaEpP}=CXdJbCj2!wTvc8=GV9*|$ zD5+ZBKmi6YB5HXBF_MJ6;2=-6^zFz_WQl~*KBh0=-cYk6?{>cZO8#4>N~U+49rV-7 zfx}d|bmZU^@evY%cnz~ZeL>tb$?rmoHe5#%U%F)gzFe8~irbGp;!Ba~n%gwezCAuT zNpILUZq+%&gEuN1?=BhWPIbbQ*E3vaLfrJ2YrhVH?FhI`rZMcsbLY`RBntWVGf z{XhR0^^b1XA|m6bTp2CtyxgDlKC&cJd-HV+k%MK;cM~G}>8ENyaBPUUfE{}Ta+UK- z8coTxVg^w@`~6VKpB^T7TGkCL$Q;Vy?&fgc5nsAtKzw^2`Wo@li>We&P{85}u{ z`Bt#GgTOKakR&hwFam!>1ZKq5e@vSKkbhI1YeUD@lRMkuqnQte$!8{+?fU@y@S_aL zULmbb+J`LK(VWUVv>*HpE;RVTpY<8F(9BnH&U=${-X?YJh!(6?FkY*I-`Qmste+%H z2ADmKE2tCW>GXT1jhEnE3~WZ3>MR&!fupJicUA(Q2v|5>I1uwN@+ShTmEI!>BaJ+ z_%$^AVi&Z#<CrKV|9=HelJ3g>Y3I+4bWw{Dk}sw2CuylC z^WNsxZ8H6R_>V<_x`l*K)AjwaI$)%WiXzCTcrG5SGq|WLs_$AdVac`E&_DH%E2>JZ zWyKYhfx6P`22ru#Dk-Tet*^I^skN3D*ITP=tQA$oca=`4FZIh6HPwREI=iAy4is13 z5-6=(${LrJSj%eatYb>73zy2J_10q9THFJL0mWBOyZpKu8L*NqmsH5*RzLo!h&88S zOas-MRlTUXW=XZRw!Sn_Qe$QR7owQ@rhiN#*Z6BHt&2M3JP$wUL|zuj(Og>0>_ zxVyA({Ulx!YxzIq;2Bjyy|7sD3w44lOvFFjsKnnt`sa53zgJp*W7rcmAWTp8YS?kiJ$*!_uYSxz3n{|LuTu4nik!4z!ci zc)AKv59uQ8`|Du13VC>L6@+|(jXWp90|bvAz-n=$3^4M+fwc&WNZQ{Z2y1}TAMmu} zc@xhrJfGr;<2i}P@>@Yj$CHKUM|iHrlZ&SiPX(R;o}c1bh38jzevjuRJg?)~foDG+ z9Zxr&)TabtFrHC(uE6tSJQAMU@zmm3j)y3hBBTmt{3n_L!g)fPFcAN?X0R|sNEgl* zL?|djg<-;QAydc_MhF)OBZUivi-e1XON3GQ7dN8?t8kfcx$py_vSQ)ln!1G*^<@>6 zr4z26SW;Oj)GS^A7OX3lOZ!9@R8-f?#nm!p`729{>sX|ws;ZRd)z#G3R~FY&c3Dkr zX*EU4iz~~LaFX!_tV%_7Sq;@l)}(NOzqqn;VX=QvJ(bk@s}|IkmM-cWU%)#^mMy5o zTJKkZGWyn%ON{|h3%N!vW}~YsUeW_P8BaE%bg~hP_cSUkE}^dK5H0|<_2LjlOzhsyBoX^8r9^TKxf9BzfJlw&k#l{BBUxH#C`7QeVsU z80b#@>KWP%NSKw(CuPNG4(*E9^&6@W&xT%gE)FH-P!+KEXC})S90UB2WL^>u@Acwj ze(zWeC>7Pv<9Hvn(2+{z1#DPkC;-=sl4X6`apemNmjDg$Z2SahfoJED(p3|XQGevQ zWvn}(0p0POcBBPCuRJFo`kDdnvUAH|x5>qI=xlhhjM1leRF^07d&dN=)W4{vx^gK{ zghqQ#e@P`1b6RuPT}(ZM0>$*O8sJTN0On@}Ou4+MH*aB}tPHayKrim8w}h-e>dVv% zZ(&V6_08%ql@2OlJ*K0lpRB%Rq?>_g!~5sa{4v5}X>MJGTmfCafZO0t3Z80c%V%c`H<@lKm2(4ibub}dX8U2sMH8qO@waLmLUmZC90F`ie#;j@*elTTI3rgi#)#YrwC7uR#8cMVbUcDEmWlzR@Q?Avx_SOrNZLWzY0WHmC8Hiz7SZ%$s9IZ+^G{5 zEP&-$Q(f8sxm$o#Ma{wmWf-dbYwHD-yN}3rg$is%v1_o0#kbnpHxJX#t67 z;hK~M9LD~X1%Yaow@6g^!NKG5lo&B ztUl|UAX)x>_}_~H&JJUqB_3w*bDf;XchCQSuhD&v?SDvtTH{}IXRNla&RIQqwGc7V cBaIaMpW7J(WOdr=jMXDoQ}p}K{~QYZZ+e?QTmS$7 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libvorbisfile.dll.a b/Windows/codecs/x64/libvorbisfile.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..75377d80a00b57926405c7694866bd4afaf29586 GIT binary patch literal 22890 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libvorbisfile.lib b/Windows/codecs/x64/libvorbisfile.lib new file mode 100644 index 0000000000000000000000000000000000000000..2a9df294dfa4dabf8f0b647e3e94ce955b62cbc1 GIT binary patch literal 8562 zcmcgxJ!}+56#lUJ3C8&U|MyG`m`DL*-X2 zskUP&|L^$R$+;7=nfZmZpFgXc$1`ayxzq+=8EAhCbf$r>I?(f6QU6Oo(7-80-LC;b zJ*$ew-T{(2s1$Tl(Z~}((9j1(Qv@Ms_^P6TM>HPM;5|hXj{!lG4-^f*B0ZwPX+=Xc zwxG!wMX5eO(8!9Sp*tieO5Ih|U!-{x^)4tHodqP_r;=zqtLX)mL=#JjdLNQLQQs|1 z@2M0tAjol+&#j(cTX&Xzy71%L^6L8eHK$z4-l$ZwrCPC6E_^!=$62{}_H45ves9oJ zdh0)5Tsh+`onAjpJxd!~PUVJ^D;L}i+7~D|NRlW?>sF-^y)Rxoxn#UfL*F1y74L#Gqn!20+$XDuy&tt~W`YE%&lq zrcqH0)|0qq7~5!;^FXZBFp`0kEfxveC=i}F?%y0t1^@I?VR+menx;E zk3olLm6^*uWXarIWn-hDY}-^>Mi!ly zdn-yG*D01OuDlRJN4Hp`UZ_c#EPY(h4HP>;dLE8n(_Cz+;1%(vsog<3Gt}-&0V~w!4z=%6y+~s(^a8V^ zz#jOMA!614ugi&-PG)gO-!e>MiKEiE1Icuu0Vw?IlScWk*<|wP+ zrm-MvKZfJADgT}GTeD~d-2&r)?8t@_;^Txn2~ckKGR?k2a%6Pjg&7BHM>HHiJi9Dk zPZg>xE6jtih6oBWMtV3waj+@4MmiZDEWnGfAGRxGmVb$s?cZWQKcJ8F#&!vtMInvk{cObEfaFA z4Ux976&XHsVqrS5#b`a7)_CHLjWBE(r0&a&MB8Rv(hi6vPuiFI*|Qg7aR^Nrh?yEo zL-G%wo>{o;q!zJlK6|VooNV_ZnKMt5)TOqDT={68a)V>nt=(o4M9(GpYo))7 zn0>1C7Brh831JbQ(G&bdq@K1=IYN;|{CWcxI)mP>JtX^EYN+`he%5oYB;tRiSWnHY z9Z8*CUOA)X{(?d<#Eb-iqMfKwIHpJ^Y5{Oqq-1D|CV%+ZZ}|Ap+mpIb)D&d)U=fh> zzhXFYwF*z`q=gQ30_$WfNAT$h$3HPTaGKi!D@(1RgWdj8F>H(A_7?{5){<|d{MU)=bAO+%ML@5}A;r|j`Tn#s1N8hfuZ$Msf|7lpjf z`P;(tQ3_4Jogzq?a2(_e;^UdC(SUcD(02InIOZpUn-0MhmfNCmRbr6{TGXz#YBZg_ zB!f2>e2OV~hVm5oH5ddK_l8F8<}S59m4*d@#kZM=)$LYjCcg`eSaDZpUa6@D8$Cd~ zxyO%3`DD-%<07WN3qC)3_{ujZ-9nkOerc?|YIQO%P68_vvM%xZZ?jmQH(nyB5%#iA zp_-gNk<-hV#IeC%rfHS!emt2aC$h#9!4@N;#Qp|M`A!J}jeQdrLZZbHLhT4Z4P9<* zV#N6kDn$M!kqBOd zjSd++&$qBdFhhKt$cTqErvA1P1Q+|>M_J5>!jm6xg1}hNb~=t!N>{3w%R2Bo%}jy5P9T YQRh14K@JTd@pm}F#~$z^hK7*;0A#ad&Hw-a literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libxmp.dll b/Windows/codecs/x64/libxmp.dll new file mode 100644 index 0000000000000000000000000000000000000000..9bbeefd6177a3504ab05e2c5b38f79b74eb2714e GIT binary patch literal 397824 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

    F&qfc%D)=1gjcwT#4 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�?ao>vt!Ms5E3^~?~{W>VN3|HAg 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 W=;3(MIEGcq@${d0a{b?5>;DJuJ#(r6 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libxmp.dll.a b/Windows/codecs/x64/libxmp.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..6b44f01aa4f1dae3a744b1ddbd0a302d20b75918 GIT binary patch literal 27974 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/FLAC.lib b/Windows/codecs/x86-watcom/FLAC.lib new file mode 100644 index 0000000000000000000000000000000000000000..3ff573931264fb005a96559567deb372d00e8c58 GIT binary patch literal 84992 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 Sz@Nl33-QO~*K*pK;eP?p<4yzs literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/libxmp.lib b/Windows/codecs/x86-watcom/libxmp.lib new file mode 100644 index 0000000000000000000000000000000000000000..b7e5eb208c98c4648f33da0e46ff20ccec58f78c GIT binary patch literal 532480 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

    hJpWWf^oF;Zcp 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 IKt%!n4M+O;=Kufz literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/mad.lib b/Windows/codecs/x86-watcom/mad.lib new file mode 100644 index 0000000000000000000000000000000000000000..9482d5ee193b33a2fa7b34331c8c8301576de448 GIT binary patch literal 122368 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 U>g^5IQ+sA?&%Qz8|Kaby0nn%6!~g&Q literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/mikmod.lib b/Windows/codecs/x86-watcom/mikmod.lib new file mode 100644 index 0000000000000000000000000000000000000000..5226d03481a54e1a12ffeca223264ee09f49c958 GIT binary patch literal 248320 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

    5>*qOfF;-jq1SR1WA8g3kAtmSD*o914Ur1@ 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

    j&P9g1VPn8m0>boTv97OHJSK58I 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%0AP6K3TN^kZfGn zLuL3GPzRuP3F@#RrzKMbGZGAGAb8t+l!+W7icB4-VJxbW=&2HFDImz6Y~Bm zKnOj%3E_*{#Vb+9G>Td{2%yp<+_INkIhd*_f1Bbl7zwbEElV~LW6Q!5KrR5%|G-#E zghIvS*kl9wT)D^!Bn?&O>hs(rA&>*EmTz7G+5v>*0stJoNe!`9E$;@ zEGTl-DV!z+P{3ZsFo1Lqk?X-K;AkKsCF**(fA2}vc_q~SO&kF~D@=|6pJg%F7-AJ@ z$`kinVT4J$PGlNPp#}pzg>b;f&eDqLtVwhmwG877`3>NZ2$Bo~xbT1oh|NT3g8v85 zm`ks*FhuX807K58x;e}mgd13L!M1W1hlS!oo&)2Z3B)8^lI(au}Uy?&vY7-c3#n~5Sb zakH5igE(JU(r<>c0CJh5f#z``Ck+I#DDCfC0J~HDK)=DUqf<|A|1_ojT#~w9y8%qJ zSlXuA--CA~c5$2Mle@S&&?lq7xB9dvrOJS^P8#TS+uyq>G7N_%m z2fKsx|260*F^Ij%4J3_mb`k}zb1*T2rO3!JGfMUTc&k*OO>!vBdtJML66{dyNgVqk z`CuE#hXVPKDN0=OAzPH>$_J|`$>#(10%u0vKyH^S4DT}dhG_!loP68Z;P+(&FY6D; z;l@LqiY>~r&5!DKjIut=NyLVHJPF3QW!GG#xNhL)YGR?ft1dH zvokVVUy^K}bAPBaNS z@Q(K@WksZ>QX9~#9#JCet&7!LfqLr_>H$--(yUk|@8{?a4p=kj|Lx$;$H{ml{dm&9 z|D4zatTNeB)hJ9r(B(HBPjS|qpD(M0dXWj8hkMc6Xf zk#_19Oxi~{hw+e0Cm9>(EL0LH9Bvz9ZKcv7D~&5mIt^@g`l9tMC5TVL!wqyM-dFPW zfDZ&oz~VEM<)-2@&Lk)D#S9bqRCcdGe&$HlST8Hn;nR!EY*AUv0#TXHlBLMcLFEQP z^|C%)Ocx;ECF+w0$$U5R=ON!c(y8qf{n8E_9aJqSD_^lQQ;C^06w}h7G>{Hw^anJv z+yT6A!;sr`#l(%pXagX^^9SVw3XX$FNigz}V&CDgg%o>hbtA#MuIIB}-Y2dE zmS{G-L8O=7=6&Sxal)Dzo`pzr8od8zR8h1ejYoqJi5bz;EWU?qz$B5@qPasc7Rapm71j?;bt6v%ki%W|BC6y8obT1g&QU~jJf#) zsHq++*Q{={_ybuCtB@$p;a&`1vzp~-g|BBD<=H4NM!8Lv|As>`HxnABExh9y6?0iJ z)K1#a#-G6lt=jm%;Ezoke-3|gweg=!aWvYnXP||~(NIBY)I^v7k;Ya95R?M9rJ+4m zIDrd5PRX9+%MVc5n2*Lfe|8*t{bN^IQToowZ`BP%AJCs5U9&RLQFqkI{Rvdzv5anP zQr@EoG8Jf#Y{t)5iTf0=LbO$$*p|y^%Z0Xbq8GToSr0uU$X;adLS(#Dl=u>uqUeAV zb+V)H%a=%VGUGM*QgPx-1;$GScqun}SiV$%mt@9n`BG`@C3>brk_o~%{`mRx9sJnH zw0;U;>V^RqcB54?!hG0A&>qnieU|M*CDr-6(7vg?Oz6RY#geGcf|6?!*G!^Kia zwV$_OSMK5kuA6{&43a)pUt`q~Uh?)&+PhOjd+hC(Qrj=4wx3Vkd|nBHKAN|n;&a`o z4$2W3Uq!}lk#UI`1r*sABGQVZnf&1eQF2jM-HwdsnSsd-mxXgaZQTVQrYY6YK5gEm z=`hN;>NmsLv%C8R40pGlkMnFA{L%mDXc&#lE%h|?gtR0&v)(5<0xvW)cB%6ybGy48 zE!4|B$7FONQtT&leMs*Xxpy%aon#a!`$4UcKZ zjc-PmAU9qo62mwbg92c@2(T4ve{H{H3B8|0W5_<>K)=rhAlke8=|ez;Rv;VG(b|5o zpE%JXO6@3ZKi^Ljql^XFxMDd7wEhGwJjd}8cOiX3n%|9nJDPt^^s)f0W%@REv+@gg z1o_yEY@nS}NHiwOe=W=HEcXQ4gH4s)O~;u)9XlSv&=T=cbU;358}+6;8cT^DAgWtx zZ)x}85W(NqYIODqWQooiFLl1|3!M*sk)2)+X0##gIleBA2f(Hq9ft=T_y}%D6U~Ze z*jJ;YMSgd1!vLHR;2V0W8<5z<2^e&>KkQx_Hh4zvP_sJOh*Q*u+6gb%qb|OTkRp5m zc}U89vNCpULxv{c2dvT0ArHMWy1oL&eK=hjYI&)t_d^>UrlST3zAw$3GU1 zIYZgdhPGH*>;o_$NN^aK|qT|9d{^p>JkdNgmj z{8adkq^`Z_@dP(2Ft`nzujeUntgVOY@HD zU+@h6U>}9}s|i*K;kb=Im3&;wpNH@>4t|=#N>Z-G!W49Kle%UIzB0L-i>`toG>5^G z+@W?gbXb8!q~!2=m@%60$#GL*jSg+($DyW$;uMx@Efbb~NAo;n;*^q&7pzZ3+OR>N z((m@@(~X9Y=yQtIJ$glHzk{KTIRIk`@T1>diW}PoI2w=Qt<4*YF_|_wLi^cV8;AON zW?zuGJCF|Zf=*>QO$^p7%Qa#gTfYdEBb~ml9k+9sl0tVHMqs#-(M)-zS%hnyTs*Z} zd1xnsmYN<#;-cGOLotdSprsOgO2$sW!vOYSql>4V9gU~({jLrS^gBq*)+;<-y`tDl zXWLA}WwTvUM*I0;aI*~I(8=wk;PdXhQ&^SVu|{8}J|NRAgAkrF%uJB^)sE=1@QF4F zSq?tPIq!(}VvLvv{|Q7H9f)PUFUcC)bvNy;*9jXko&Vjfa09=d8`|NKtyz{4^ot+y z3knOr28afQm4d=r7;i7SA2=2B?Q2NrLcTKQ+gqD59F64ra=xv(Cp-@XZwXXLZDG?p zm>`@RuUOB%)wC`tHb4Hz86q31EJj;-(ZO%!y^P6FS**Q1_zlfp8r1D&DEK45a>D)lx=x)6`%Q8~fja%1e zS@Id0;zmx8Ya4eKU13SSZ0U|!-3>f{i}UJDU?(=Y@59#xsy43^Y@>b*?zayV&c+H* zt@}N5KoC_}&1RBqNHCf@5n=|iM6UX8V4yntwCY4jx20x=Y=`!}HIVKgY(%>9t>QMk85*^wTjZ{P$sFs0>eLhK5>HpMqmvKzSyy-EIe{!{+g>p0z(;DE znT2G6%OrLez2868^Zt=j^8F*HV(%Y0H32}kf)YkkS0;{;xg#@)11JIAkr02j@drfU zer;C?1l+XoOO_Z{OB6s(Qu@}3^B{Gj7}UGY4+JQEMRJr;@C>seSe_HJd%dXK!{r&y zun63&ytT7$yzi`HL!>^(oU-}V2*b2$v4}uiCo)7pVpCB42DKC?@wMJap+}J2blmR= z$))X;h!`Ho^uoO#<}ouimz`I*dY1;#aUe7n2}fje3x`a*aWbIZ>5XsQhWEtu4DG{d zzNv2eOif-}8ro-z^&rvFRc|X`^shl#mZDZHb2rmk=w=9oF}#3l3=KoKFlb?MYmim2 zrkAvS1NGk8nW9Kn;w_g2oi*@hI1?)aiJ7e~_>+k_6YHUz9wyYr1$38%h%oeP;Bve# zIet5f_|-U2Z(V-4Qnc&Cl`=UA6%xx)>`Ev$-)}Qa8Y<;ao94|nYHhvO2**3N734XN z4!fm9)HuomF2+h5N2P8l&)be=5HA-47muYPaV(9gV?Py_fc7SxGlED#PqBE`bsiu` zNkJAvb`VoaKRk&077&hn&gvEQD{D?NyMJ7^7eNIX6?HiBGtGPiGso$lFV}-m?{y`V zprKfahb4CN9bTHUAR&i$gFe9=_FZ&?IsTd@ZOlB(@njR1;n&2R+>e>~HO5DvH|KzY zz}eWC0n_-)pc-}_H4`oe3`vNCXHNXV$+Jwv;}+vt`23D#w5YM%g^i_y&{)P!9$Q0s?F^t&_Xt;w!b3U^D^-<>`4l5O z_)NlXHx*QONK#!(rVU}#t8zenZX3dI9R9}WJtOyo&bc-Xjdc%A38w19l*GYQQ0bFE zBQzf>JS=d?=wFBD^zU#ZyKYaCtH0Cn~9!j8H-vWCM()1(${5Ut6hve*KX9?ya_r>#p!tHIsDPy;^i`-QVaGr)D3OE z6jVWQGQ7lGXNO@997{E}t92qL8|*_a#))_RNAqo$9jl2uk0Z|BaD|M&4?Z!b?!&~% zlxx9ZCuNr$UYn%N&DJMnj+>Od#v1%m-%I)=dSeS6HL_oX`TyN~SCtO$d*|3Bf763G%9@CuKVI0T06Tu?PC?jI8E)W*lC!;=y!p_dPI?%7; zw#tfn$_S7qU5w6nE6>AyzI9fXTgizkBZwu={*dp0&>k7=A*Qr@Q+eHPHd z^kCq*IUhX`3aYs8(16gn6VuPisC>mUO;(LK@b$MzIJzeFRqIy@#nh?LewRr(IQ^eF z*4M#+rO-Z>oPufNj6|0S6)`@l3Lg6NjgNeu zpusQ0Ma_w;wV4!wO^AydaM!Jr`dZ!ix`9MN$@G2(qscp^GFC+n`fdr##wk5Gm@8|) z3J{%8C}iUVDE#VMN=NFqwd4=-sIO?Ha0}jW3Hn_ejSjU#fx7{=bf+WqMf7bP8d~#m zZ|ICh9S@2~B(mX5?MTb48|n9ud0FEM8{cD@ydD16;6pBPvNv`fNAZz7tF8k$abH(H z^Xuj)h$lLI`gY?5Y_8-s9LY0T-}3MGR2EPBLRWvZcskvcHOAeU4;* z!Hr<74K)~^pL_75Z?x#s?S&_xr7Y~qJ6v+4&Z528*p^3I!4QrJEcg=`ZE0-l17J)C z>5oNWUn5};o{y(QmS60O6j z{=CDI-KlN5{khj^^;EoBNDL2k-#-Gmr zjOVqclb{n6kqZd_O7guG5JE3DN{VN;fN^w_0g(k4Uw(80VtxozFF!a+IPac4{}kUj z&IkbxA^@tdGJ00Ixrr&K5Id1>C>7+#Wq0$8t|6WVmM#qV5H-J?GxX`}fm`?ri?&OS z0jqmK#%@?pY92=JN};f5>} zHU)@t3r`!(n9`(U%Y9(Mg>q}7o)a)>2ZF^)AV<)I?y(^}hxG0DbtFRwU`CnV0iU;!e)Z`^ieVog2fLTen0SxgKHGiap)+>7?*GMxc`w#oC-w0di;^qP|$E znUHEcNp?ffC%qyYkxB4v;|`1Vlj)-GT7^fOQ{GjPWDWGk`ZULL_So6CLdO(sjz_B~ zmlT5&TiO>2^qD#O7xMM-F6|3N22LCe&!FjBg?g=F8CJkWoVlTmc&=`TxDHS?l(Ucr1p$HQ1vSCCm z5N(V7fyC#WxO$=t3)I9=N9DL1Ni~kS$PE49+mgDT+f5TrBbVnRcJUFbY%ovgP5j%hVpuo6e1-f%QBfH(}(eX`|vuVQYwUQr#r|Ls*+3Tl{rNy zP#LbLv~?pc{c445db7Um5VpMoOgS7Hc_Y@YzZU+xo}*C0E#Pe8V@Pw+Ee z>_xN$4mSR?)c)OF-V)Cv@=m0VZc!)*at@LIdTqjQyZTf z4S;a9nYqyw_{(d1qb*F}mY3*%lcb>n8v^6oT&X%{s3v0sqhH37s@vTrQ35t%vLNx}gp1I!8_})iZ?6$*_1if&uH|~^ zrI*xXiVoLuYwf0t>uH5b@HR#zD5ayLhjU{lwGma+K~JU*`dWsZaZ@ceiQ0HKjcJo2 zPjNW{YA4R+lKM-ar}jt_Y>v-A^R%kS)%s%XkvEVdxgkmEEOOf6(2}o5*c!b8$%>OwX~A^c;g$!4{c8&oQXq)5sgr zxsci^QuGy}2wT5RJbe$2lZy!OvXPKoQp6D6DYto7_(UeO8I1 zp$-%5vrA{Abl3Jf#il%k$0}~4yzk(}N4C}*`FJzkKq2|3wt^CFBPROMH8iai=(vrB znEs@M^j54rw^3m@AOa1Qof@j!xDCoYKwZTkxbu8=CvHI}jLB0Ep%$To#ESCS*mE>k z|0Yzw2haKJ&mH{#-Cb*J9Mu&*DNbz1j^lV8$7{ztJ2uwDqd}+CQ4N#2dQcU zm5Zp<@+1Aueaz0T9Uc-=rTRxQb7%H3_q@Jy?%ngf=hdV7s?F1~2tuA-%Fj~4+eC$J zU|I@z6YvuLfm1i{1g>JZRmk10yLn&#DrPS(nx5d(TX}CKY@>J@w$aVZSwSv#Ed4T1 z%k!9)1(aj??T7T2Snz7Cn%Kg8)`Iio>*>5c4AGvh1->BnxC}Tc~PTtwRoV%oV z@??~YmAZY1{<64%R8(OM@1q5(mP;6XRl;ZQs=y6iCBXL(@+*Q zP)4tKtAL!i8a(n9Q9bYEb=Vc$2ECIfq=M_Xo!q1>z(4cpg7siSnFhs zsbbW+k~OB14Jp96bp?ai6^!J{&mwhO&go0p^xgc5??AJrk;8N{oU5KbhNA}$0p}uT zQ%xplBM0q^FXJTqgHICQEApxjQwWwOdZB-PJ43K1L{8cAr-ald&u1zTk6utsbA({u zIbw?}COD0G?BrNfGmUxdVy|DngR>E`~Yh`TKJR7`PO2 zt-q9?Z51EYvE{(H+W7(7`2jolS8wg2z&&$cFK{W>thwj(>p*Ivpv<-8L1tdP7lD^b za9NJnWBqI<0)LwBH5p5i2|tE8pqVM~HsXK&3-eCG(^CV)dC*7tSA4u3-A_~(kv6fi zu1>;N@&~Dt_AS1XjlF!*a(nmLgc}#B* zxsgwjI|+CU!rB#Qf9L(h#KkpZ~@8|5FrC?`66jqYn?7M5D3cQTJ0X6;ZJ`#;zCR zOobdDw~W15Y*V#Y5VyrMV>N5DO&}F>+u-cl9KtVVbDLG{Nc))Qb69sy#He_+9u>rI z>eX^gvcus%!N!BLSky6N)>wClp|z+1^D2s&b`o|f5?U%$Pv~U?o519mmp(;8W$e+o z$KGDC?t**trlm+|3Fr<7-E?~+m265T?bs0bo%T5GjisPs!43#38cW+wN0Yj`14N0@ zbVrkB%f^QYYVEFOKeyn)7R{Y_uw_Alhx%4*w3n0w#)`IV%9YLSCc_IPf|FryRmi{g zgM0md`{}jazq&8PLwEioNX|d&AN?^*_vt^sNQn)B@6pb!^hU>dDgQ*uSOhf|x{ydM zqGCRZCPqe#4y6fk$1+|nkeXn**5OJYty`bu?8}uhdV;d(p$>j2tI^rD7ht==-Se&p zT}bQqN!T|*3FMDH-PyH*N>K7Napy!Q5~@_1u_fU|Z%UdwGwxW%g{(#9Yq~wE7J-qV zry(kn_Lw&!q5PhOkx=%hrjgJ}^%P73EOZI+`?Dx>+e+n_~6sYWDNW z;Jsk`{t+{yM@>w88{bqm>|PfFNODKrZX&qEFoH06+^f^8e}D$lo5j0v{Aw4zju zr(twyjAESuV@9x%v<gZ|-JNW=B(%l4E~V z1n-1uT?PB+YY)$+9`~ds8QBW_ncrUeYNjwa+V)>})GL>>Pjo6;B;plVezBR8u zCA4OK2jTT?tTVzRs69)p9Q$nw{N#=+UW`3lv-27H4IKt)54e433%zy-N^*b0lSH39 zQ<9ax@i1kz{ZpX@evBuYf5Y4Rv;Y`SM}KYOTT}jUT;bWYr_qqI z!fcotS#h2pX{8YJHDz1cwl*abQG|aF8E#LF*isdw#*9T%jyWcewZkaVrVr1qqb$$+ zP{K_@NobYQ8E;In%(XWbfy9+Vx#9Byyp_gh_e^LHyDx^UVYmbKzJo2^&K$lKLh_3I z-V?vCS$p>Veg}1dZMP#CI+FS}8t8yx7{7XUZJw=d<(9g=QPEO&``X2pm9ULjA2!Ikf~>ZvR`I#o zq5vdg#UglccIE~osl9>3LB6m-wez*dcew;h7V#b%J}c$6H|9i&q_A;FwitGuwCz0^ z*tte!BE5w?7c;H4A#G0@l;}VW+tcJr>)ZH<{rvhiPo}IZ5TD3|eH#itI*GoY#B;AB z(fc9o3`|k)7w(i-TJNQy;Ad#f7_Z})w2t=EacSp>`6qPzw=QopPM1l!+k0GNVx_zX z@&9NQ?_3rUJEl4(=VC!g1CWaaML2+DHI~~UkX@mb%(#i9(a}^c5mkTMj+u_rW5t1| zma;3y`@qUpdqKrRJ8yaGO<#5496We_6OxXzzy%#`Y0l@ z0m1JJv~J`?4i7)9R=Vbo9G*nsAGAiX9eUY6s{^hv;=ehXjth{W_n%;#vA>4;d>l9T zCSoRXi+oQn;J!wEp8sbkNu{3eh^1U;tHzp82zdD{@|P$wo4+9n$gl=2)ft0ypF`L~ z)74yrNFgvUqDG-?wQNj=*}w3Y6W$4$mbZd?LEWnle*fEWb zw9~4l@dsjak2QBa^6TrB{Ne8Ulnjvx8YeH3GDOb*a)FXFvciHT>ez9utE#=@@%=%K z6_c)Uu13i}>7J{BH^)y6ksTN{S^FP>Y1hcSU7$#$gFxhY7*acuyxIXHOLb>1(>DA| zE~%~nqrjWFqx^v;M)TO6p%+@$AR{jm@#|V1Wr5Hn8_9;u`*0m#OjmRUrnzasI1A6gnl2JNpx|lP$^B0=41n+@j6?BAA z~ zUt$ok_Z1iU^GCAvSc8R`7H>3^Ynzdt z++Xomb)I>eAxr)~ZNbuj^xP|b9Ow8=j$n^sf1IT@hj&*VhBbQVX7;e0)#+~`bAd=m z`GWy(bCS5n&zKSk`J=a&xKXLlFO?`mx5}jN)@eRQ%JHsoMxWUvA}6b4G{Du~;*{;0 z3GT|@(NxB@0XEvGn@O8oU(%nxD`Tc7g#J75-mJ0P@EVa0iZd96$`t4EQNv&O7uqJn NS#6d(wcbmc{|g9GqOt%0 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/mpg123.lib b/Windows/codecs/x86-watcom/mpg123.lib new file mode 100644 index 0000000000000000000000000000000000000000..a701cd58a3b77bcfc2bdec62038306e7d852c77f GIT binary patch literal 231936 zcmdSCeRx#WwLgAlGD#+3U=K)|R2g@T$u)KEYNk{}4mK*EcPhL{8s2uYgE0M?*G zPDXQb5)GwVYfCG=@z%EXmR4>-@FgKg0IednniRDWrTFWr!h+ooPnING=F+TeTh_eXc~SFoa-wpV)bjYlu~KyA(wlN}-$3XuS#n&I<%x&wQjGAO z@gIhFe3a!EjGV_p{$}_Ni?aOZqjo8_&)OH&XIu8DRf@U2;SwokV}5CAd4UvLS)@6l z^U5oV%A}aQg3|J;BI(v$g&Le{uG^+&x$VId{&??c7B3&NwRxB8PJ3HpfS!%t7jKWm zxLzc(4;`Zk;kN#Kp4>S`Y95hjwKR`Sv|5{ICt9PLS0-9*KiPhxWVMW5bW?8HjG1{= z`Rj`EjEb_HQF?%eeo^yO`Wp#!e*ub@0XNshNr9ggl$P8vv&vOB4DOBjzT%k~*Hk?y zzRJprHu~{dhsJBUkbBM7tL`kVw@Q+aiS=I~PKvF_udFJ%qTtZKuel47MRRW$y1B1H z*=X*n0nObE5=3)bBb(cW$Y}0|2R8Sv-%C*j5GinY@T|oX!1EZM7Cc>e*x)I6Jb2dP z3E+7QPYWL7mjVY-oq@-LhuB?WQ3{tI&&Fs?VLE)~sD3 zNz-cfY>=eZuBfP*HTZ0Fq^dP;IN&p@^`4ltmb}|WWA;SW=m_AJ+7mE zkrn^j-swZ`>VBq;J5pcIf6M2ubv;c4OzP|Flcs*Gh|t$gD__VzXLxMu7f}|GBl8aL z=xU3)#BIB6dpf{L(7{<(nZL0p4-i%6`-+HmX=Fsmy2_&OcF}v~o&+i0mw!i9QE48! zw-n8gD(R73Pf3Zr7%^-HXlU+)|yg(iZ7g=T?+#Sn&kBv4*Nu*2H=uB-K( zq&R*ov07W-vDar=qvARzu`S|`0EZ6wpiLPWiQGny#A58~8Wa_k`T_Gn%3P}@wMTBT z#vN0ll;e>}KrJie_tVu<_d@yEKLKY}XYgTkdihzRQgYVbi;sOH;Z(BR$vwemOVKr* z!9UwTNM8H%dtB0RG#q(sVP0u@*`3ngNslAI0cSr%B6B`?7*U_Yw>0bAJ!91%Y0+{n zkRdsPPaX(25QQ=V8H=331t>MJ#Zu-B&Jix_I%jZ(a7C3ngHzyYL{u4% z&8z-5^IUlvMPP`rD{W6$eCfb+vfN^u9n>oEV^n}CyjnTNIAYfTa=n4JX#Ot8ke}l9 zVndQNCXxb6N=x&681;U)>%S$-eq`pX9fL~rv{?rgb%$A0WWDsFoVCM5LYr^8R>wl4 zj#H7a9}V6W20(7yYPaJ#qWSU1wXnu?i}K#n zaqwBCwzhU#KYhIZNZ_5QPn+}B+fXx`H|=CG<11_2(+_94$4EL%j$n)5g9r&;yryff z;%Gz^euz26h?yYwTC2x^nYrZ)QBFApIBL&wr=XX6SVg%tPQhQv&T&#`Tmt&i4GEA2 zRwr7cLsfLuBwAxG-7``eVG?Ooae1XrDr7re1o|^ztd|2IX86ZJ0T)z&YfTfel{y(piGt$U*fJ*f77fGkuq^^Y&T^ejLc zM0SCYrMAx*Jc(!vllq(>{opgDUYg3loD03tO$vw)mQc&6M>hpblCP!M2kA0-M?jpGQ8zYdh+8N9MO2IfvoWU!E%L*3a7Oto}oxyQ% zY0U|T)cpw3&wV#zgtW<;)}jOng$|ap_7#M!m)1*WKXi3J126g6T!3wHHlAkL4=oYk zDM5OE!Rp_K>W?P!FOES0e?}x{@YL5xSM8pX=d5`J&h8US2nNFBV}1A-0_*!?HO zO>5Db$QV38ICkX-#u^(2y$gL9Ch?wi&>5WhCD4MNKdA*tTTjPeEOh>$MLDP(F?_b2 zBK>Lpf)ttT{1<3bwuwGmLWar05V!9o;8pU)$@@5*NBN@iZf|Scx7v*=*QKJC%hGfTb#8N(c}Zw$QF#Q8t-;F89}U1yG(h8 zzdn@_R1u=cNeEYE7NE$Koa6(dhW?3-PqBJRyQ;E+151|=oChG1Z{&Jcj=|p*c?mN6 zn$)u^(Hi&p-Ui4<@x>fb3yO;hHi&vejZ2(VuO!$cud8HJneED}Cr=L^HN=!IQ z?kFufheno07U!3)tEwm}D$J{>EW+%h$P1K7j(+dL@+SJs*yD`!m2%iSC)ptuFn0=g z3l)$zrAHy{c_j5H#R}zb^82N7s25!;%blxcCp=9t0%M4)aW|3m>EmiZBs+odwFp;o z-D}hp32K02_Hw1>N&M+ZvdO&`XYB=~N4)j`TZcapn;%LI8>F#@>;}0NB9t2nVmaAL! z+*b8@9YVwiw%oG@13`Ae?A?bz1J2+NS(_#9)ys?ugRX)#@C5sJae!N^z0}(hjD~k9 zZNZl6G3*JocR@DANay>F+#Bz|DXnc_{clWIrd0_6hXc8QQj+(b-iSYcyr06$oJ8xe z=Db9!(eDNSY!5JlQLH$Sjv6X8Y!0PE zc^}LeQ-W&u>Qx3ftgCMV;K=nN>KX!*N&X7MU;?4~D&8NP zcCz~pxPvEs%ffK>7>i~h$SlE&07EQu2+XVxo^&=$6In!AD8Ec5jMpbxhd2Kq(K@1c zPrMYnxyZMM%i4L?bnP!f0%RmBN8) z-zOaL&e}f<2gHDv;ppCgJl5NYE0Tnuu0C%v$f3I$A;=j1%M5=v$!E)Xc$EZ<(Gcu1 zD+?kO2}RG0KtZ8 z_JI)98Wtu-SK$K8F7I;XHRbn=BLG)AP-S@^$yV}@RsMqJT&>jbQ{L|(VL2O~M#o0p z?E!=Lg_S~PryN(m{{;T$D^2|KEoq$JhhA4aodDgGXmw>`qBfYrNS9OUsvRaW$52)L zX5C{*{#LSE-p4KvsizespA`N7&1g<<-&*6gzh!g3nT1JBcEZU3i+lTvw;o|Sc=QEW zxX0ypKaTvS}m$UXVblwX3wAZb>= zejht-ZQnidbzfXKT35#}cn@GyI`2V%#^+G$fqYKhuZs?0wvjbeEh64!_%KP45 z41{dGLal2-9ohrp6Zr&>I%_{;eqd~~UVVU!V|1c*RC5)^o$EN3Mh+j+!(pJ3iEPT3 z&U1L}0;ta5)5uB78xEa`fRtFI7#egwq8y-!S|06Kr=mm-QWAF zuTS|acrJPI*>}OjjY*!Z`$GyPJ&=r0lXKTWG`4ro(RzfuZ#u95BBlUuv?j!DABQp4&@zb0t58CC>_|C!&!|CTrZkRVKLADU>>6h8Y%Cy4D8_5K$xpx` zH3*1qHd}WZ8AEo0PIBFs^79dPHLy0p9U<7SUTI*&&N1VH28EI2BYcMIPdLS2xk`TD zM*U9DeTArt!yiZS%toHAba~Z>Iqt3OTh5VcFTqYow2oB(>Wt3^xX3|aNeW? zHq>(4doAZL^eLy7tM_Rsy)L9gl!L0xJ&9qndVMLG+rFv=_|5ZXVd74#%f@SKfnop9X67}7vb?ceY%CMe; z&`@}QT@ma61!mfb>((>z?U^>Z%G;*B%Atph-1axIX2cz&2&Mb6@aUxB{0J(F~7`&`o%U~m-Skg z(yC^rD+gP@y!i7k5E_-4B%ijyvF+~k0GiSHz~v}K6WDqVTFiRyAg8;TN-0b-tq<*) zAdS1z&siljZAI(KE1~>`6Vhc>$@hvh-D4*Bw31^}7u%F$t*5M0k11Nqp=m^$uuDmn zW8F`Xu&=#dxmNCrzW15Nob=_CB$5mU=^#7!1u8u)GfByu(>)q}1rm|pOTeAMyYU$T zyvGDyU5v&CXn<99G_o`SvMNBfm>}Qd*TB7(qQu-pYhnmo&k|Ar=VFda9{~n)%P9XP@;;$U^m+Gt z(Bs+z8Gwa9r70aQOvs?)@FmM%TKo(81KR@(3;;ujFvuHB0^a)r`0o!h^XvE0a$#YJ zK7fx3J-GuyyK4j%lR_6KS}zJgj7|#WBwELk{x3R3y0`%nvMN;QQ8lTk($pi0P^$-z z`iHj*jk=z_s!3qK=d{IgSlz#tkzXD-1B^%#UL&ol>zYy< zqm)Y*|9r8kz;fF@5PDymUV{YI;6{7!DCXTyYhq$j+6g`H=amH30cF})rlw~q{=$J__h^YDqQISpHNP!E^(TorryZF)Fz1Mq4{%_U{0;%9E|%m( zJw@40lZmt38JK;}c?||8bg+VY|KHy;Dd*;Xo?7}e<+0HpB(-%O^dHds& zG6Nu%0<<2v7sI>9Hv(DN-yEL8R)cq1i@JkSD3YdL!!a2QXk6$~G|_L_VQx>rn0&%n zyBpDG?_jl@4b5=RdVQ-+IX?9qlR?Ir1B|7zOx6GexH^w^92Ipq#^UhxPUo?=TRV@U z$P_$NFuxqu`Qe*z{k7|-n?^vfx5PaK&vZPgYIX`}!K!4aE8JMlh+*c6RlRWvT7Eb_ zQWOi`Ze^ZLy=^+sNWUpc6yDRF4R$OS=VdPRN-wki@nZm5rVUuvrjGIfD#QT9t)QzM zRVMoTyqpt#E;j=@_}=SBvpfd3Z-# zY};N8#%U}KR~7m4D#}aBd_|QWPL2(KE)DyASf{F3x10V3C02nFL4)QuC^LoMPMuOK z%BxCzCFNx#ROtg^>kq)z*`58}m7O!BoSVvJozz)J?j5ci6L6up_mJeusG_FV1q`~2az$Iq!5!gq!O;&G6Uk3G*Xp@{iZ-Pu&Z|f+z zx5xLQ=pSe$k&?3H4z}DiyPlRTcO;^pX+ov?Yx*jOmD5PiMxEO0&FNb~p$`OiNWReH z8yW2JU$hVNS5B<7+|C&;HQjB>@gTsl>KykftUtL8{V_6e2Iql9)<@~JY?qBWfi~gh zwEY%D*oTD*vjD8HX{^QJ&FN22!nX?)t~l*0nyayz(-wDp?s2H) z{7L)3GNiv#ma!ySlS4(Eonp+2?j|4y0SI(!31E31l)3fdz#N<8`)sAz>d89lP`_kM z8?f$s0>uui&vnPQb|tl*GK!AtFWMe=+<>rexkfeBt$H@hBb;@sEjcTJ7zgOhwcIR} z(+cGqC{+ZHTXwA@$5I7*Uw-*L1z zIvk0x;qO54tkcd1-^RZh>rrBZA2=J{q~{CH2mgfs1A8u|a3r}i{Of(ip=sW*M83@EBlfeW zp@+2fPp%xIpWSmJt&g?O_vIJ*W@2_GVd&pYNS~L2fNbDMNhmg1l@uYVBy;u# z&~5J2mbudP^KzZFPvTq9k+XIb3PRA_+-&bWXYE*gX$wgKXRw$-&k{3fJ>cd4y&GfF zf?!{@ZPtaYb9Fp9@9RZgVYssC%TAbE3I_7PdkDXX>b0K$koP!>e0#ho(qJJ#mv28H zPewHqYp~DRa0W?cU2ryViYXX-dyooWm<^dc6LDKlCy7;S#c%EB@nz!SjJgy%6l{AGcf0|(&PDoK~F#QOSe_`Vi3p9b3( zOn5yPOVUGoCrXy6a0?u!)U0qgQBawP4<=btLaLDsR2wy{%Tz@r?wwM|Gn?XpWm22sli!gcOC zXu+5sYBBB4q5ZkEKS~Va^BC|7n+}Fd1^chW-0tC?n$c&Y*HNzqI7evOHgLks(bZ8l-8>*sHK;UB15* zf;P+|Q|N!kAe$T7F)&>E1-aet5GPW`Xj)GjE>ncEo6EXTi~=vGGJaec*%qwacrQXs#=Xjf*g8t!r3ft`-1ltjtMH zL$gv;P*9p*Rb_ezkSUEO=`l*mHUW)=FpJC6lyB0LM8<7^Of-d8k@qat-R*Mo4Jg~g zT0Eh z3m8ac5oT%9w1#Qs>i@bD&G5y*oEE#JtgvWH9^(2dq;l#)XjRiLzYj)F;t=Q&tEl+E zjHSw4?o@YlA!WyIIDV`bxu8(=yvYL176x zUnR@{u;#BJ$3`u#bk(juNR}2LLa-3|fFNUEtdP@gZ7XJnH^5S4212rU&j8-0M{CSV zf!YO9wxgH;mW>2|Cny~N&P)~T@qO4%y8|pQ!@oTSa~RDTCV8PdLyGZR`jbUW zDw@7a42;Jbck>lo1YSZH%-Ld_e~jheS14syfN5cFVUzqZV%*2X25dphM4n1O6Uqn3 z7ceWD{S-UC^ZrVFsVW%*lpf*t8AA(V4lqkJSmbdA8O^RU zSgr9zLNv9hjo^HjOjjcBAEggIg+--BU@`Rf(%(>Bh;Eiw^j)G=N{pycx!-q(f8DyG z$^gU0=o!J1q%^+(Iua4&wIS#~*>?wz1<9OCT#5)lhp~zo&b18=En|u&Sa@0sVrp}I z%wVoZD`REkdK1exg*TOv7zE|eGDSsTsKX|NpGy&Kmezunh)2Mn2D!D(SXQ;2{Y7{; zY`U6F6^kYN=10(8?(LVLsUi^{#&V7m{*8MtL!5EOuqW&?H1t$yY%G-{X-30%Q<)A{ z2E=oHC1zvMMl!l23I)t9X9Yo0>;42O5V2%MHKl=M1dZ60Gkr2B!ENyBXhr(s+B_p!Ki28kI$63B^ zNySkJrYp|i3t$G%Nm&Ryz-<1=xt9kP0pwRM()Y;s*z(%|w0zi!X-e%0q?r8_3v$*T zCNDI2NxN(e$;PD5rU)-tWR2**M07S%_sw)F-9<>> z0;K*Mi?5q%QWI)O@rQ72LdN|ycm}@F9A_1|ML2DA9um$`dX0|Y%N!21^*OmW+8_TM zc1vOT9MgKaH^%p|+-vu}ulY@&pFsc~PX2GeOK?;UrzWC4XOIQ+x>pa!zuC)ct!j*DP*5xrH|#Eszys)Cto3R#RVb_f-ECu^5!g2P{IL0Cfw#W4ICR9-A$VznM|_aK%*2#)oa(u~4VRhHy~fwU&JFpW`{wfQfJvTMG<^^84Oj;@p*HTB zbzh%F>frjSMje>Dm7*~GFn2RuRJ>?@6n!)o*H479L(Vc?3r&|7F7#LFuuRh=WJbds z{xG$>M5a|183jQ!PMsBPV)OPJr#N~QSux$*(bXAnKzHge` z0c?T~OhIJPWBL-URI^`+@wq97 zqcgPZ92wCUi%^W7>ImhSYq7-5HG?FZHe=Vjao7wCO=(Qf1Xs{mVHc&QU-eJk!o#FL zHuT$MgXD|0U^_x1hmJ3iN`?GFG_gkfagjMp+UAJHpL!r5qKQEd-@!g#oGBNmV!T1~ z8+o+&N92XEnX^p>&$Pi?OjK5Acn}hKi@y}u6w*6#HhP@dx5CZ#YIeG%=0x%YEZ2@` zzKyS9zP=9&0nR!Sntz3L+}|`zH2XBc6$?t7zZR4h<(FaVnZfbmiD3lagG!^x0C)H- zgTDNkwU7^p8MJ@Gwl+>ZO@9b$CU9pJ_1Bznujt#s$bt}z8TjC2;UfarNfwk#*hGe@ zU7Ea4a1Y;=uxOY8PZug@SDQFits+x&65>m-SjvfKGTGw@?v+Y*Y)=JKjGU+t{0aan zxeUD)=PyuTExpcq${&I0=yH?V91Y5;agThbY@buA_`Rdq@WZ<3^6Q z<}d6eR=BwAe`AtbLypzX9wSzIbq?2%yIL%*fuED%UcicL8dmOYJ=q$ukDBHdAm_9` zWsdvo!&uaRlxz~q`c)#`xE>}XVOmaVfmQ5v2_Pt8 z--m^`82P}PXhzAmQ8}Uj}FnUV9iuPTYE%CTIvZ40PkEE6jSdY=A~kV6p)5ftzH zsGq}<@Wjg+rkhK`Wxn!_(3Dio!0fil+!HQ**Hvy5p2rDo-UxlABCJ}XsPImPwHS6W zo2pP*1UtzuqI~i47uL1k>BK^m{l~$8iY^=JOXfS0`FidK#{hl6ApOhme~_2xR_7?j(!E ziXe#cb?Yz}g>dI^vQGW8WL@6Wm*Bb4RqY2Pi4_^C${HX_t8!deC1R3ow5i<~w^jX^~D)5D2^Bm(CrwnMl3)sZuJ_V@!2Xe<+22Y5{+t}#Ga}B89>0*@UhtQwvbo>Wu z5B4Eadti=^4_ed_SNy30Yf2OGc=m|sy6CrdRi=m6Y$A0B6D)_+!b}7+kq_Bbm2HGM zD&E1P_d?rZpq#4|&fkhg@6SXL!A5Iqh7`~uXyq{{J%xOLAC^fZ+p80;mr>VuS@Yd^ zJ-ywHwi`brLi`oflzX|-@%z0Ah&Bu>5apFc0^Pgm-O-TpPmn2HPpPg1k*i~7gCXCG z2@JOZuJ1E2p>Ny@7xl0TV#sfiur+$PR&G;kDDcVqDX~ZSu|M3hHCjwhbT9CQUh6&4 zVs%peJ_SQ;Y1Hcfl$HVZ6E`ae+sdfc&j@|7yVrt$a7VDy`UG? zTF?tvwIH6USe%7|hWV&Z3CigShoZm4!KL(z$7c`q+s(5S3f@a7t|TQ|CpD)fS|^j& zeXIE%e(uEQRah-BrfKMR=BkvT1`te;0dz=d6xogdezWGRs9tm8VQ}3dn12gLLu1>b zr40sV#$*k!vt|3+Rqq}eq7W({An%OwU11iXK1Cd^44*Nu@4>hRbh3kZL<8vA9H-2R zY1y}$#}RU<-KKD!Kbdw9lbUxh;K@YmRC#+1I!NTqp1_N~QdLy6;T-!*q;SWLa$>(& zBzI&orbvNOM@rD;zD?z&eheoCSm(d9D8P{65h22aF00|<0p9&fW!i2NCx_cDnzrcd zVRi_h6;qiQq3~%FMwWpi>|F2LVd7_ur-q(VJ;CmWmDA(G3erw1$dvXPCg88V<|W-_ zjHxhTY~vWDh&XUL6cHypJiMKo!i7)=Y-Am$jWp6Rp#lx8e2BUKj8k zOVc3iqH)m{(9KEFB)DK4y8j3oQ4!*!4YHse6Q0>=N98`Ne}ueW%x-O zykAUxeMy})oZEKRaMmjr3UEMkQ+caP^10L-T>#$>0h<=W%WT+71`$7+f@B+wA?a^} zzwpqY$`N+7DZ-8xiX>JA53O`*aFc*1X#@A&>2OFn4ft5Jz?0=&x=Ol*JmWP01mh#I z=aH6p+{+J>WPQNkgkvl%SKqvf^z~LW7otTNs-5(f%$9i*5~F6$3TWPRxI0h3-AOq& zuJbgEK-tXP5%yzh1mNwvL(H;D+kjh1j>g9 zHx%JiiD8G#bg{uJG>y_QES@g^cvrP#xfjdj`eaELN>KmHp`1#^9BHK5#8QFACYDJA z=eiS?W6QV!teD798vyqB2tiZEsgIE4lv`|PpVcr95{)2fH9*Zw+l`b@(^0K?+vkCB zjQwWXCM;n}YRs_E6k2BsaBbgMx)J>trl(!>{Qa)U8o&`n0t^>4T5qW>pm z8a(exTfV-cAot&Apz*3h7-$S1+Cakw7-68%JitJs3EnsW>7vL3kcf|=&btafmWRD> z>7ZkIMxt@-cb1nI<`tC{kff!*?inwQFnr1jOUmx7lI$Dr%H!cSRnq^kkJu5-Y<)}- z(oUqc%pT6fzL6fB>mv6Ks~R!8o*w>>M8D=jrk(=S!d?v~7!5*nw6!yuwqDb2je|2n z`74gi`sVn z@UP*xiSxF>IXSk*898YQj3znpJ`n`Hx;2FH)*8Yg5K*BY;`Lv9hDmld{ERaHMrjy& zSLBEa#o2eIRb;3I`4yOG`=lbu9cw{rv}5HKJ=h`A#yCa29$Tcrexvu5g41nwd2bS2 zh6aMPRlZC)J?pKl6E?iOWy1+a)Dm}s<(TD6V1EZ9Oa9@W`LjBzKgOz{*w<|f!c$VT z6@P8sN_m8Kvv%6dqL^fZhuMINWK}uDLUY|Iul24{<|n{4WjO+-EJMwvXkyB(P(>Ux*p~JU~8w>5C za-svA{g^i5Q@H*)#hdf$mIR&0B2V3P;p{6w*bt#V)YAVBVJWJ|g&HR>%)vlr*K@FW z8)f3ufS5Z|z9KMK7>jAfzLOZL`=XnF4%k)^m}dYCR=XOwB@IY$&wAya)D0L(w=`B* z8mEs|&dC?zwvOHKx+A;^R-#{Hi(6dvhx2BAQGHTN=X~HA$?9W&oB(jSSj&17oG}*3Yt=C&uD%rh_*&%b{2`X{c{*1A*duNNCJN{%f`?J|% zMtOU{kQ1|2Vw_hI)c4m#rfqZ{N8AB&ez~LXN(nE7*0X@0c4V1 zZROnAZ79g%Z$?3}{-2^CHs;xfhAQemkd0o{064n|RWiFOYz<9{(a_UKY3Y{HlKh+4TQCWNE!R>^K5Qv~Pe*-TBC9uCx~Ctq_zb+I7LmDW2=J z@%J=*yI-z@ooHEkS-)+FL6?RB>Hm-}Ct{V}cV=$Di@$d@`cgz$-Sbh7*)hQj?ZK1& zSltRHk`LnaJMh+F`_aCAifFfiXUBn~YI8Ac36R=~&*8lumQX1MC&dIJLKYEvo^L4c zI)aV$g<(`qI=HMd{KuqALy(fbB3v&4E*XORKdYHGm{Dtz!k%A=n#nC&aKsj-3gFZm zO386GWqnksJEciE3)_5SpFP$V)ccS^@@C41ZAPa>J`c5AUzd5Y+~@HB)$;Z1Qn%gT z4h-5dWt)2owC*;Xc~aR--mL8@*hjQ9k@>FUh**Jjlc&RWFrvYvx7gXf2SWlQjn*^~ zim@<+0UiheoMd49NPt;l__&2F?f;~`nl!W|a3Doismgo$VQ$!rQu`Dt`vguw*~fou zvBz#12?ztWP}cN*d;DO_csA8s*iwYH;Ka4&|G>EDXJ?yi2Lo&1O3Q{8huF1d2Uf(~ z5mJRc?POYy4j#8zs4^m&gD&U@6FK2^S(ZC}ws85K8*Fp7SWZV_zIZq*CdINqZnMc3 z9Mx@TJLs2e5ap`fj_Y9#W49@AVZL1b12#Z{COEJG%n$Mv4EG3zZ_h$f&)gQ97?yHcaz9B}dfU)70 zrc{_eveg{RgaBuDk%$f=45}#giBl20#)>C3J;`Y&mt)7>3kEr&vHN^8ASqk{;qTiU zdK{Juf$EqP$rpWqb=mNO!_pgg#`*}{k}oRoqE+b-IC+STcNJ~1ZlNhI27!?mggQJ@ z6$G_5HaqG@$HM&2M2B_=0C|uHy>Sp@3ea<;fjccS4BL0pdjPKz2T>VnA#H*v%xjFD zmB4%#`i5y;s6{av;~X$QR3oLt!G9s!W*c0(%&QTeHrHdtBm=FJsQ6Euw&& zoWHH%2#Y@s;YK5YZrLBSaE{@F!@1x?or_rGc$#svLl~YG`H0zAPv8r9d;Axxbu2?| zVys!m?n(S$dmThG!<=xC?ROIa8?7DfRGC+GSDCLk?~c1L=i1ExV>v@#y@3Ib7I-{7 zP(){t9_t(fN1(Cqz>&@yv;;0L?$4(XcR5_n-vSynz}h>1d$4UkCA70=lw$+@8w2py z&vJ%l6LhYQRE{fcYTDFK(P?MjY~P&ZnO~pesk@~w^6%_lu!ytF4iQGnqyGTgO1o-p z{m`0rG}yCgJaorNIAH3cZEYwgpp3&Tc^*zjob_?#dlY}L{SDr?bBy>4YV9A>&hCz* zK#W+&80&dP`uyb7zbfD9582HSL)8vlms(+0U9Wza)`DWkDX+?{R_F65&We%)Xts6A z%@<~!t2~WFV5c-aQg64vdRF0id+N2b7dST0Y|QLKr<|-D?4&W7ghMeJ9WZ~eeDPOH z$5Hu=P42cX?7RgmZ|jF|b+o=~t%9y6q(Jf1A+{K~3X01y87%i#>J7Y>E#fRFFWZz? zHFE}=&p&go@$E9wz zzxttaju2fu`+CRb%Ntkr1y59`fU3Iy%P32Sr4z@AIG-O2P;gT14a#aLS+~C5`gg0c zS>&X(B~)jmo*K%ojgQj$b}oe-{{*#$GP96(dKy z=2bMvx`UtK?_+r4(dg!T8Ks_|SOZ9?**+euW)u{JzKY870-o@q+4gjiF8;79o~jq| z%NW1wVJV7E?f^4(gK=k=u}h3Q#*E!#Y`V30*lL{6Py!Vm%nrPx27er%$VSM&IV$j< z5AZJLI&1MiRQiEw|FCy0cBA#H){rbxm*l3;!1-w|JqJu;VWkN_L)6q%R)zH2-whvoLzVq)>f6{Io`_uk=X!R#+|9?O39}9^3N^3+$5XHZ$5OmD6lVd8hG~l;UKo zJI=GNS`{MlX|Hv=fC!SiI)PNJbT!_6zHwQK+~!c8fm#keKXE&>KOS6lfPG7OS<7p2 zXH16y&dIIa>QCH^qP+ZDjt~W?{nxDh&F~|LlRJiK$;=we{)s5T|5uT#e9-gF8H*~s zjPd}=z-(rHKF2L65>FxA2 zk9By?p_=f3>$A>dh|6q0>s);fX_2#JeW?L1Ifr{{f<(aRm4 zuFgL)x0gB)??pY!5HtU*6QS>SzJyF!!f6(=Iz;DZEbRTx)m}ssIc=E2Dz0QJ$@lPb2}exL2CHpltn%NT=@GsAJxlEM||WoZ`a+D zg~#e4HyTU@839Ain0GjQASH*1*3S@ik1&L43_s zt<VjBork25gy}=b#+RKh2VX9} z68K8uE19npzTA9G;cGfyseGmLmBH5>zC3(o@wJezC471L%H?Y{Uu*bU%U2;^#e9|W zRl%2!FDQttp=!PYeAV(*$5#ViO?>@;uSf9u1v)&MS&}lB-YDhHTO#Go_e!~$aAz*X zvs}u}nuq6RDL4BjDR)7xl)DIFi?gNNCGcN@{~O`A6z-)9@F4wCq*)3-ZyKH%cxK{B z$AdWD`BLukOgxLF+?+*ta-`f`#LGpzT*O2kgZ zv^Sfz&1QA8S>J3{cqwYy3GQY5-T)6T}@4#9m{qp_rt0*ohEfSwNx}j1MJ3Q~Y zGrt5|`MJpvW~G56^VD2oFy~ zxCGB+Jk#)Sz~GTR-@$Voo-926oxA`4)(1Zgvt{5J4&T-GfR*`i)d{$J9&AfDR1sEO zyMyJgNPlSu*QuGz(Asb`Z4cCzAwGWXfjZOGV7i)2*AGlrKzA8Bw(m1J)G^w&t;2FP z!%x$*UH*xYN`Az2HJh%-OxKg9>j~4fM|U+qoNIv8Q)l zEOAdqG*_9#VGPmDx6_4n`Ss&R?^N3Xy214jTRv5THT700-wLKNIT3f2%bG; zZPm;aR1-`7;adPryqL{QGlxIazH}f=2KIFs9X7|vLN1WN`JN{F7#gR4lpiA}(?%4g;4#f3`MQkf2W;T$39R;B*#J;==_%swIF(x; z1S#k^@D*+0zHH2A(%5>3c?{nFqLNrQ;t^#oHOAB07421{jMk=IPZU&fIA<}Y(Q8o> z5v-239M{6tn1$+S_@FS$ajGo?1PN-pu>3Z(xW73+1h&z(0egC4o3pqAi~|(nd7ggU zxxH=Z4}*X_#||+%9CW?;Q#e>-I|w$5hT+6Z-=U}_z<}W*I=Kt+*V3N@z4Uxt>=cgt z!a~7?7;i0ooQ97cZMTS40Zplq9p@v`QzX_QYAc;&KYa^{uuCKypTLMZdJsM}#V)t6 z;LJWtl{i~_p~}W!Q*hN+B*K}sn}CcdgkcT&p-I|}f`P-A+&j#d>>9r0)nUG5?C>R5 z*L@^cY;-+>K{=2+9C*`ft8UC0%?c zn(PGIP{aa_Q3k&8LF6AwocIC=f0Ep!WnXdZFr8ofO;Y-BTV z&_xOvw2RdP$W3&SYB=n#rRO9vxA)-MG*Y8*HHVcGRRXYLzPaAEs+dy{9Rq~UE}(Oq zZD1HhtFW+PBFx^s5qzD&l$-_yySi`EgPS8#JA+q?;Q+Wx=;pN`Sg3&-+F3gv?(R&y z(2X|ioQjj2i3m3k5t>aGOhR1!$O+v=KkN!{J*f#iRX%JHF_}mcHPR=sRlqQ0*N)=I zGb8|ga1cBP>oC4`8PYAhF93_eLT{Y6xunonT!jvA#W@RBilh0=!|}9rXKh#z zj0L5NEqFNJ6WayUbhefhz*7G+G4JjNJuf)1Ax4MoB zHDU4K$J%PaVAx$8e^UrQ`E;H>cP_&5GS6UgVYv>$Fuu1=eHGPBUJjc+o@$nalSY%5 z^(6#Z75R{>pA!n9fVyQ}B1jg8p(ZIGstyr3^(0QoJw2;;>*ViD^w}&gpFO91IrZSI zS2tfNOrd7AZi;P8i22Sq-$k>I_`57GYq2Y>X+6q0L9eibJW~1Bv+o$I!XE8BT_DNT zD3jq#qpld6XA(jS0r%^BQX@wqX+$Ko3>uZBJ#6<60CxoI(ycW8VjK}S9ANNIZrlOR~ zM=?F>Nut*&FM#KP(mMSdWw1SPOmhxbj(*0Y&-XZ_xH2}XkaTjX zK+sb$J)8WK^xHP`rt(d~3997(oO#W}CMHCmQz8s|D8VuM!3$I&`T*e78~Gc5hu>XNNV=eC3Al_PWTx&k7S%3*MBOFiBd`k=6xh# zzUXhpVx8%WsCK1Y=^WVF%56BpR&SvIdjqjX_S5#Kt)*>d)oDag_1LDQuum0g1OU7%~1T zZLrdr0xP47B$H!zLDT#o}(2~ zOPH}OFOl2wl4(*sA@p+&#gN&?|Csh;=K+;qNY2`9jON8Fm>yPLVPdtjmIHq=l~!m2 zhaspDv9%)^Qo<0LS_vW&x#8*!cuL)$LTE3pVt8be__~T~=xf$gV~WQJaO?j>0vtd_ zx}|(Nx*}E`W=cZW%2Oi7hb9xARJy1>ZN7mnDoC}X<~Pv=S#|tUGL>IDP$t#~ME6dm z%R|ycTTDmmEx|GHvFO>Uf{F8TOiT%RD!kr<(!GLubtrKq7~2r6{552>Fj@%I%rd%P zrZ$-U??k^HV(2k?9vYaLr~$JNc$E%RDK*H>IG_Cxg25On3F3d#fKh^-v8;r>v5A1) zj5S~!Pg7w*+oi8ux~ehT)I}t4C+*5XT`sjQlXpfAC=$(>i(r zIY`LtX~)qb>qi!=Y(k6{-UA?mK2s)#M2c%x5v6!1BaoWXPWID=Ge{ZJ%83QE0f`hE z6M4)>VyKdhg<)W#cG?4m#PN5M*Tjy1auHcc@>hM%2V^*KgO$&{ke%_cdLO$D*mCZ@ zrKrplfZzoPOV|@NAmE$6aHtMBhc=kBPZFcP&XL%t?2e)%{*)b*9g&tsFo|491Sw4{ zkxjSzQ=L>bVkv$~Lx|&7Y&CSbMD7Aj4m}RI)({YE4wl0DkN=JC1wb4yd6WquD;ix$ zpzz!5T)eJUbRJ=1*pEejtnya3oiRRU44>O!oL(k49#><#yV3h7)+K2oZX{%6G2L?! z%@kaNy3pnT)TqB5Vbt{ZN|MAFLq#~g?^5?&k2c`_@HI4Q&9 zrK!X7JclwLuBRvAtMM845AY}KY(ITmc){wHUY|ZrgIHW~P@DV+K1~T8==P1(3|%Kx zc8PsS+YS*8f(MAst9+!UCl4HM(^|r!L4Ue10UGZylJq5>F^QV{6Z~r^7FKqUGL~S( zE94$c6d+x>^9m_6oVO^Cr(rLcwJUTlKXH|eC3HVuDqj!sg+ov*RGQ|a`gVz^>iQUrJDfrnQiLs5zwa%@4u-zvnn+mP5t!rd^BqU|mb4Q{y%4f~uG@<5 zsQ$YS#H=Mc?)Vb{|9^_PfK|UBA*%J%nAWZlM$Fc(Slt;NcMyGSEqYCYwz()pw}|aQ z5l&x)Al)}v?}Ml}Xf;8;5bu;Rj)@PZT?sZ(sNG73yXPQwl8PIy0fxYGrbzcpWmYcV zrDBqT_$vsb7Jqqv{HrndLvB+Hbkr|#X9d2nZN5M7g|)KgY!Cw114y_Q0B6FTO87jCj z22(xf4_lNMw*9RSAj&U9(c?bOro<+Z#@x$+3Dh$k9EBIKrX0q;8o=k#j0Fp7Xt8W zC~iI?3*v@xj5ggz!5hdBx?AADY3{s(05GRxUo=ac4+5zlsh6ewMG2C43N@K$QFt>3 zDm0?CYm8Z;SaE``)?VK~3{in?F$XZFuwu^p#ojIWfb^44Xdf)yAtVJq*mS9mi#hdE z0$*S0yzlpD_Q2QQamqYv@-%llbF?d{xJ&YKu=^uGnD3c&rtYiiiKAbh(F5xO3x8+D+KU)lT_ghg8;Dze5SMj(Mj;Zyw+04)O#QRMhTW#lBW*jC?M%7&dx4YcByr zh7fP-=AGO18G$~J^S+003uU11R%cBn{QAk9M7;u6e`~$xvWVt%;cAySHm%nx?pBZL z-iWkmN8w{ft22nlWrrq!zjESs3GF&#n@jNef=B5N8g-;Z65?xs5m{+@F^%>!f^ zmKSHWIq&}*IGozS3nXiJwR@v&Vju%sTDsuQ#E0`aJNSmt=`F2*+0`zNieR@q38vIB zoXa=uHIyDXz3+Tf$Y4K12J7RChZB%6Flu?(60R*uf`2E8(+?Oz+X)DEIZq7z60YxT zp8%1|I822{Nf()yD`BLSrUv^G%>2qBNn<?Fl>wxdGhaX4Gxf zN@Ij{bT7g;+BlbNy@ClMIV7#flA8)&%9Z^m7j4uM?t1` z0UgSh0gr^Vqbg1`+%#JGOZ~XOSAnV-p1Re2^XAX`qVgjKtI}ax40(9M0;K{vB%w3} zUotg-wzFr_PS%fW{VFE#Vv7RJS+ct>30b{+o!nv#ycjsUTNv_F-wXK$s|(j!E3Z)@ zngwR{`G*DWvRv>-3&HX~*ab0j9m!>bm|Uv-3V7pu9xb7M!nU~@#z<;>VAciyrAXK3 zPZo1&*=kiM%4e<6X-&kYx2mH`FDIygujlN$CjNvBFTd|Xrx7FJl(dsxuy-1siWB#A z0<+7#sFl8l3XQ|r=ag4ZTW}>6nuc8HK2Fk9+`@yAz;Ya2&t^HC)?#_JJ_Z}z-AX%D zA@AAiEtXzfYsS&-W*m2ODLdCG)PCE0(s{i5qz()MK_3cl{9e>-2y#w24Ij=wY_irb zvbO%+zU>`KNS2S4m$&_$N!D$k0 zdl38A1kA@QuVZ*fRNep;@ZvW&c9y@Ec7jlkwtT6)5e}n2b)A6eR>G9pXZcilJ@8)C zw!aeunzVIfN@;qEz|Rb%A4n$V3N_$m}3u zrGx7;*!Z8lB5d6CO#^hvX!;~|_P}|b8U@KR8B)5kL0buWjY~iyC_qO7x^X`AWQMk?cjKWt=$%0bZZSkLt_n1 z!4}Pz_s->AL}3Cf^BK4fC9GuzF3wG7%tQZ{qi(`>c`#G$7jQ`Na%*@KZrvdOT|OeVgV^C+Qdn73A{s+{Z7M0Myo5>O7`Dz|RJLw1KV9ahp20Nw#=v*u#x2*- zJq&KL`L*rqMG75xT@ zEBgPI-^iUSVZO*tW@G=db00LU3v3}5Y{Eh~9V;e;g``;aLp%Fn9Q$EB`{6KdpLT?x z^d26i6EbQ0+e@Nx`!WKO zrdxxozX^FPcc_{A=O?fR`(DEzhXRl1ewqiAhJnp3jgbhNF&IJg(hy|a=c45x{D;U{ z_z%uGeQ?h78Y*YuFLIu_>)TS)ll{>CL)U#&MuH@hNRneolH*8{<4KaqB*_UR$%!P% zi%F6xe+)YTRf9>C%(~|^+&Ta=;*7^g42bg|d9cj@oD2UUFeCh#`&mxQwGyjvX>d__ z-sZ~u3hBLuKM&PP8)sCR7b=7`o;XqG8^Tz49>c~Orio(jH_2aY2xgFRBx6`>4$jSN ze36^6<3B9PH9O>w8kv@qgHM|L+1v?fkx=ic3fpmy#+jBUQLb6_ZF6lSvhm zNfnbx6_d%RCX-Q3CZn26Mm3p?YBCwsWHPGBWK@$wS$r+zYYAUozH)I|W@t4|&J-fD`qNGkynk5*ELs;jN(}X!Oenk;L8KRTvftlOS#ZQ)G!@orQ^p z2>hnf`n${E(nK>3QCb*TFwsb&xAwlTOz0Q^eb}Wh31~js4$c zz&DKloCgbODNF`vqMs=T{Dfce8d2PlUsXiifOHecA+p8$yUXA<(E1DgBasl+VZI^o zn_9fT%M30}(4G)9B1;qgg6)4(peRiQ&LcTA{EOu9xK0l9NDlK!4w)o}ERsVu$zcJ> z;d+w8LXyLxHDP!Bg!MLzZF!>fcNN7)ByT8wTQ(!+#k?m#n8Idruhl;iwBE$YZ z^G$*Mr6ul~EJf}97cdy41*w#1y@A+UOzbTo_HHEhZX))U5_?`^Z`nPA5NDE|s8QG6 zahP!rAsdipPi~)vK=WYNB3=#ZVSr()jBjy0sF$7@)MwElbki`TfFT`pGfCdQhk5fP z6d>y@E1|unou$%ddRlnfqONcd)|E}--gv`{M_pxM`$%uBZwd|_^<5_Sj`mH&F@?Ud za_=Z#g52xyIpy9FJfPg^iyF+s57soY(Jpa_4flIHbs(!2%O2u9wrH>uF7 z8R|ktic$CO#-vmKN;?q8py$mzW*)$bA@2V9nR#z37f0^r^=;bqXL`cRR-NWDC<0f) zNHK)tsd7R%)+09rD~=T*sC!oO&bCz{Sd6W9H5}_d{-<9w6!?*hBhSNdHWYp^zcx?C z4?`QLMaGOMvQuhojk6}>z@o5Z+U$Qoi0I-&hKOFHhdi@ur)0SWq>g2yuM+%!6pHHh z`+08QBw&sTM;%2;2cX{z$L%WzcX71GM@$tLmTe2V(Fk7MD#Qsx7+j1fESF z5_k8CK|VAu*W&z``~jW+=FsJd)>|k*-pT`U*YMcW+d}1u*4snaLzNf8qSo5O4Os(* zC4n`;mDmx!L7rz&JTB729!tSSeB#K?cwSDS9s49k#1R}K%PWn!q>#uRA`Tb_S9H$- z6lv$4u~_9bQ-+V6($iFT(qzZ?p$40?cDV_svzGQi#mvK4oZ$jSyf|5+J9daLXYIxC z6$TdF??KPm^Z<}K9dq!j@p$lPe2AteU>A=19o*$Cnz!em$9FfjeeK}E_wtuf&imU? zY@hp~g~)-1j<&{xC~+PU7WQ^#NMz0VWXN~WR=a@9*@dBN60Jo%maZ_gDgla&Tlvc4 ztAMW`;kA#;!{Hc`GRYBkq7b!-omSbw-mEsA6Ye9d%mJQ!g=Nhjph9XO6<#=npLhG7 zCT7q*snD;1Q=?OHP9o_PWZHAk>5G4kOuKsv5L2&OkX27Bn5j4>v%3JEJ*^ge0yk23 zuK4u$KSokb8O~KVO^fcOOT=QM{EZsjnTghQ_J$+oEiIZNRKK80y4bMQ=Ox;u`F9mn z&dlQ;+KTecGpI{5yQbI>qerOn;o4S{3-pJi;moOgULwqd2F*qUN2c7Ezo94(L4K_cQr|t8vr6!gPg&+fD&j>0~Nru=%A)f8z$X1$rmiX zTUC`z6L-t_i)Ov-%a<=i`PK+>HKN)hzxwZC?mq!u@cgir8>Y3KmO}!~0uGy?&=?lC zQe;JcF5_xsNoZoCwY=F)EW-w^f=e^s4Q)mD4#DQMGW6R-YgM3Ofpp1WZHUHMH6;wW zXv*LylxlS~4P(TS1KbZqD*AD7Gde34)ZJi0+jfgepm&IsYGX-vS>+b+$j7Y+wTm8z5rDsH?7+$i)Prf}k!5SZ>lt z1hHN)KoAf}Om?}{02`J7!z3ESYA%)3|W4V?V2u2QVVN1D7hmCq)dI;TY0FR83)~KtYdq1sTAB3!1oPr3h%o*+9*8L zZnHBlKs#{B&h+8ZQUa@HqYpLXdjt#1?#6A@@>Z`_6TAzysQV%*G|<^Mp|cySL&(El zV|AW=waM&R`EaOD6q_c7dW^+HZh;1@q@^3F1=y(TTPk_Gwr|p+7TD7*Zg~K#)hO)2 zZ1FM*n<|z>?VUc0#PVG<-SW}mBui5bTy+rBPH;B(a4~)a_v>2|0TDENU?}IM>VdOx z8Q%j)&{|(pnLXWot8R(CSBXdRUTC2Sf}#0`Q@SA);P<#R{zO1mPX`yYd`Zi92`8{; zE^oP)a00fmm@?+j2JFl2XVT;0gF zx2|#4Z8q!nBi5~V=)Y9mu9Lcju0EW?Z$%uqAFErRVvo< zr6<*LGS#h(FlVzzMLxnNdwPW)Qy<}m>~1YI-0aoRYzH=s>qqkBtxHkbcR7Nv;x4Cj zwwz(tztaL!w;L#CEpJ)H6VUyQ*U+@)UUZTDb=s4+JDI#CSu~i}y;777*9lrBY^rJ%xM5At3(y3j^}p~UExHv_ zs|{k|+m{Uk!@Z~l)=!ID5K8zuO2Tj9nsj$8q|N0dK6jEpmy(yB2trLQc7m|DXZz6YH7Z|*w_zhJ2G1des{n*k3!GM zBs(3|YE#ztq47sdAW_d!25wxgxko1`>pzwBg9opbI`?Ls`%qAuPC@Ny)Z}@|4X2Y{ zcB3Y*4>ftI)a3Q%-1CscbRnE|r6$i!{Dr7x0J|$UPt;s)8+oxQCq_-zF-s!IT+0V5 zHuu(CDXD}Zh3l9YI^~8(k?vY5Rz9=fcRzUMKTe&w(JMe`FgNlgHaFsoNU*^cn+S8G zpT(OS`2jL8H>&=j$FeNCR_uy4?a;ilN@f>_=VRAw$SO21+$&0o7hvn`QmoE;DxjN< zm{e?_*2{$E>2q*5U6OjoB~{FsJ39nzyefnn7OJ4;+UZs{zNB2XVC6b%shxKQgPBQu zbUTTg8mg?C*LpovGJn3-!z{nNWHBUb+GQJuXo5!B_LKc(Q;vlx_YF*LhQpaZb#@7; zq;#3Ol+N%;s-xK|!O=D|N33N&B{D)`2(J&ito4c|SlxbT<1aP$z>{s+|ABl}42cM| z;38T`;u6748k9oSO&3aUyK?pHp>aSe+0Sk?4(Lw1059oM62-bbXcyonHc25i=}BzT zmDt2bY?4N7(v8@pJF!VGViOm!31T1;%>bLYTS9zy2|roMcO(4dDt>Y;->u=hb$s_; zzWaT?`vBj4nD5r(-JP2r(mXQ&uWFomrRIf~m-eja!MoUu=xN`o*&z20nCQdj9jAe0 za=?jtDF!A|4FUdc>UDwqf7YaFDQX^enLeNM1=cX&{^nx$PR`dkT$m6Zz%O{YbBVbJ zhHzZb7aZGkp6qiJmE=zwf#O! zTS&&d+$5zkBjh{0dKMBqq0?P&4F9U~Pv-6zA~X9lJ!SziXVaDYocbxSEgA$9A2v!_ z=$SDSt;4RTS~A5UPoR0S=69{0h9afBXU+1QER)*hcr+Zs&<|;oYol?Eka~5~qb!2^ z?ED(sSG(FSDGMLyxb+TLaVhU`l+AF3gN@OfaKWES@`QY~(K;kq-Q-s3!BC&y(dr)& zgU;o)xaYlCbFm%r3?8p#*vCu3n6;sV;)8(aN|wl0@Y(^23>bqtx;4UYhRAe{Vx zLVN#TFZQNJR=sifpH^H`WJKv`+Flr7Y#8L$_Y@i%n6!cI1`~RI{YqF2ed*YYFE$yp zxrA5`*ev)|()Dxrk?_TaJ1|y{@)N2~%X?TNX7a#oTp&rEMx+NSf7!NIDr_bh4Rj%a zHNAMkxeJZ;rWY($7uXK&aHuPI?NApfVh48|Tz6dn!MOqs|H{z;aj@J24}k078_RGS zUftT^&Ap=tAGnwb0W762xS1LblQ^mAID{a&3GG28L`yr*1%Hgh6>){SN=0DO->~g` z52}%xY)ZA<_NqxmD5?686c16~z5IJ1kcPi?GNm4Mhlf`0_0`P5SXJ*`KB?*}=3I7_ zj+rPQzK=aHwS6*s0CTZ#Xh8Okwm;5u6#bPmw`SzS<;f@N(AM4NcAsd%*t~k&;(hbnN+||*}J_2GA~pSwYVRoaD#qC zYG@K9gdCigW{#*^-vN=yU=miMmf?FAAqq)>y*s9!jHi7Y3%snT-qffB1_Y0`CL0ZM zqhlwnBW&Cxd&{AhW5F%m_6zaZIo9=TBXC$2b+}pFy(F94m1NU9H2d?-8-WI_c@<+* z4sc!_kG1z>l;auqLZ-ws?-4T-_PRoxc#R!ePSz^)57~dF=shLU4hP(ZxZr?r97LP&8wD zcp8I#Uh0LJ9O^>7Pz3@5k}!vlQ`E@!49Ev-hPQX4c(tFEdIK-Sjk5|?i&%$>-ZvJ= zmr$G?oz@8zDDi*DTlL`1=#cyjpb5*sMk+S#?$*jVK^xGrB7w-l00PLJX^i*kV*`!( z0)&nE93icJte;$wF*ZY?9}7Y02$DnWWK|vSryFDaBgSS{^f1N-bQDz>Xb<{#*y<+L zRC5pE0{@7D%tdFTO-3Pls3;)i8Wa5E^a*~nY{Z1j#eYU@TjVNFK^!@J>h_EVHY*qQ z!1XiPHZ<#^s!bVc@DU(Y^O{f~qpvL{O`Z=y_>_4zTE!TiVH5@QLa$yBXfN=aUw~DT zb9ds=el?G|AZegb%lEzl}~POw5B>B(lI03dzj$U>2?$1cctsDjTgDiMNy{{b>8~X(ad+~c8{^J?!&T^Z!BWmO1>0Y) zfPB23{Du#<$uk5P(U>xb*Jf!yVrzDyH7lM16Nu3lBpM6T$jUT?TTn=y(q=& zLtBLya?>zr5N!8AIy3M%BljaC=+OrT28{9=y+Jtrl{5JW8*R+TE|Y#=EwzBvulrVo z@DH%gFv`fv`3E4(XudnUE&I^$9V;jp&oq+sX4lRXwgwBB+*`>GVrUjpR=141ep?F(}wI&5IIU`(1Fho$PJgS+M6lQ({HvY=RxybYHXZ9~ zjP*W1dY%P?@p`PDhwLGS@I%6iJ@YIG(_hYhL!ai=o2)WKy05|_lYr$JMcxsG?#hAa zy6VH>WW--J00TwoIA<4OX2D9g?&D%iK?5RVX7sD7-lf_|; z9Hx+(kRUwF8+#qPhj*!*f&#T^LxIfWf;fd@Dk@R0zrc8l^Tqt)Z)mz8unrja+)Q^Aw*x_V#VV*waHL%(cK+^0ZD zE4y*NCJR&Q{2s|7vcJetgh|lQ`f+etAT(a`;O5!r0f!7u#QRDPXNymi%)f(hE*Q%h z<7mnxF(!f&ncP!M+`m2(AF`s8n;!^)qEsB<6Lx;LjwxZM-+ILVNQ9Cg7oA9?)qqx9sLjj`w|C`XaPyCFk;4OvU;e-&U=jQ zfO(FF{MA0mPZ(o7Mol0S_XEawK@dg*CF}sD=s$;9W$Af+`~5Y@39gv& zCM&O6aZUE8Fnq-0ifMQq?~Pa`B`oWzs|$RAC0=i++gOmU;YUoM#M%oPge<7_t%Ls$ zJ>0gpdT%R{7tAm6C~g@#WAh6b#m+KTKU$?^eH5}C;9Un1Tr4dHEs~Zw=d7q0y~ePHB~+%q3TCl#8-Lg`Sl$+f;g*!-ixS!>kW)xsTyZ9>XfDU~?XZ z%qjNlfs#@w233+W-o|M$(wK6_ri;-_c_=x@*_SLiQQTMOAZ{6ZE%RFkz)WMOr9P}mqH?DJ=K zk@N>{(K#lOiml>cqs#T1vk<fHk@bVorIy`(DR`~v=uVAhMHVfQL}IxhQ~PgD#|zz6A}CBb2AooAC8&i277FyQTsmP!TbbYK4(&5s1;*E^Xub%h6QJ zQbJm+fOkrywd z9S)`iLuW>pWNFxSo~7KfWAe4&$siWV0@TZ0p$9UgJlx$x3IH3LE9?8fbB$)8S03Cr z7MmBKrMC#3NLV(at9L9Lth=M^9J$-QnE{I|slLQ+wDcBr?8@6Wnwy|rH|kqhvQ5_9 ze?aP~{9W?kjT%*eU8t(+N>!DI8thc+tGZEN)tz9{i~6cQ)K{fbUv(PwReh*Elv5h{iFUF_RM5V2hTio z>h#YKfFp+fd2C|+a}eK${&`M^a2KpqXZ>>qLdpFjWL`pv)GOEowChRHck_Jk4n1m8&XBh)AQaS7}^V35|%17=}z zz!a;U$Co$|RKq?VsQ{gyU~GKElz4;~gOU(Q4X%BveL|Q+Gdsru-f`U&gT$$2J_#;n#_@d|>v0%3qBtsX zgmKVpkVcc!aa@msUJc`LFx1yb9Nga_2gd*${c)U!;~X4k;m9-(Ui)#Jk0Tog^AE#O zfaBXZZpN_?$6s0LX%OC5;pRRZzrfLmgIz!&eE`Q;9HlsZfa66RpW$F|rWQgZmtDQ}ON)ITqr$AICd5vM|_p;NYH}$tl>~568VY-okMX0C)zD|HAPOjx(@O zn}lNpj-TUr4aXrIsUDbgw+9PRkf zY8)Dl+fj*^P^o@6ZbmuxpaIX~5y$udfa{%qwzt226q}<0knRN_%>p1@1R#1J0Q3U@ z(CE(q3jm-se{XL;7eKW6lGq zguqh$09}83r@j4;Z@0JqZa;u*AAoo-h6u;qfH)V9dz$ef9B1I@jUyMwQXC)PSc~UH z$a@XmTY~rhfO2LXXm8I#+2`Sdlkwqa0nO7;p^H(uAS$Y((%sRBooLjr(a`tN`0?np z7O$rLH;h+*4MO$_;uYO=F7zk;5pHjwrai$*--L{thG^O!hN1hf(zG>WV6-(6pfDN3 ze}kqix)pol-3Aa^h@KCl$AK`~qwvKvFyvq~9tGSqJ&cXxeg-?RCo#PLgLOA{o@?HL z1;Bc9+!39mC;iufc z{Y7)Tr2QScB+GMfX!LSipe{bxM+Jxv3p#JvMrhDS>u}Y=8tn<-}eKv3BJ{X(ECP} zd<@dCD)|_?a=$yUuLoB+7>mO?*u?#0rX&1x)t70QD$6bcd!4oyumq1r;@&g3*f<+p zKt0TbJ&d)S)bco30a4%1z*qJ`hpfM0JUbEnxb3|p*E`MUGEP z$$cmLo##~$+&AaLt0YhRRpFFKDBz1kQ9bw7@YwYuo)#8JtMpG%KH~7D zUqSZJS9^b~))%7I>8jRJpEr#kNPYgA)SP~fx<CpG0$GV5=qQ~eBajZvZb@W)zP*wDp&$ns`>J~kg=3B)r?aVhG zh1qrq>nxpUWcEX+XGkl|YRFtFnkw*@PWZbyjgA8#3qgcNeny**eg$t0GYkNQ7P=B{ z%%h$Av~U%^Fd0pZmf<;^=EB!)(SX&B26V`mDQdU#;M&)W4cHP}TRSlck@_%4D&Iw~ z?Lj4FiQtc|_4Ft|gynaS6z0R~8@Fu_5$BqwDsFtodeyh)W!&vgK>=FxN7z03@B6OE z!u7MPf_Omg&tzcVG$5a}eLZsUh(M)L%>d<4x0dCc1nYQW(E3NXI6e~}*w+K-S_7_n z*DTc=_%*{usF{svH2~`j2##k}eF^-kt+)wt^d$Y0QHE4^?RBp9sxMf5UoH6!2&f;Y-J)#9pSE0HIBsdTb)42_2KILVXH3`!5Xs;zTp^L80-!`#zj z51J;!l3+mo8XJ)4F^{jBzCwV227Q|vy5MWA9KGm~VC9Eff~bS~cpb|70AUDyc9D_Y zei`Nn@>IUNg@4X^GJkS>{u~7s#0>Ak8a+P$&4jQBXbE3*$G;d!!LkvOB^TAueoD0JN@-@2ssO6n7fvI`gHxq$xo)mq0Hp@R+`S zEf$=a=IY#3636?=Vmx4RZ01Nz`|6m*k^*$jBK*LKJZ*zO2-+VuUd9Wyd}KacFN7BS*rXZJ+$ug=gv^p_k(Bd zJasGB#plWjc5>ns>{WnUtYC{zY6ZIqRmBSSla3bD8=*vED<+ltOUlbj%Lfl0?9Za> zwLd3Yo3fC8+x}3gALfewaGAd}94ZTk{Ll+5C=Q)#X3Wjj#w}b_Jb&&iKg<~xE-abv zUl?96qomwlQC2c@?(DfGv#c_Q#IjZtFDOIV<;9_r&iRHqzb%?!W?N7K<uPv_3E9$lgyDP4)5>a2zSL4*8r z&8C!1?ZBc)6l<0jen#&dT=BE{08r-S*3} zwHr#q{#l4Ud0_~jnH!pmKKm}ZcTS1_Zg8JTi+~>iNae-lORY){i*=ak>w!KlojcR6 z#qd}L1%Q4f&a-Nn8#j!OuZmr!U$wr%pM{Z)HRY;o>-)Km!A0;@{{ldUT{K2>IQ#wr zK+tt_=2oDzx$|fFXO)&zu!*KOmjAY540J_>UmAdYknQ&|%9Bb%{*r~I;oIhzRRJs% z$6A+*@f(M&5ouRCm!Js1V!TlQtm06ypHV6*?9$BfEV&~r-CFLS0lB9A6r(i>_UL|V zSk-tho`ZmU&x2P>I)FC#6%cceKE#;x7tcbZP}H01@7OTrVjRbCruZouLvv*Ol!(>- z8iuU^GXagGGSojCTfLx}v;0{+p`-ZZc0{FFm~Fq}7|07zt%Wm7E)+;t1(+^IR_-Af z)feHgpL7?{alYN_Qm)nQs!D#ukuAaC+Wj;HBYHL9(qBAtCR?Xwy*ZVKU`UHtW2t($ ztgIAMYL&0#u zJ&g^tOE5Zi`!SpoODjTt*+d?bNd`gOFT{1jkD=#GlXet`LM02}gN4Cdx^Sjl1jg}d znV`fZ4C`SI|22hUzNO%6@!ZfH6g?l2criH^b|_%j#@}d3N705M7;T_Wy1HYKfjbEl z(A-oIV(rgie2YTRiu(bbw=Lw(Ko%g}R$6Mq=}-(TvBYh~i-_<1#r{cCCQdZx##QDh z4Yh`l>LGfbv80Nba3{f7h06x|G2gJH#Y99u_={&$l+F(m%W_~9ZXb$qp2snG2He-U zg;4yLmzI^!C6eX$23fNN$&2O^_yvpJUb2*Z6fRNNaxf-6rjKd{U>q10BLO>af7YzI z6{H-1b&iaM8L|g!S37b6Y=He)eG^e?qf1D6KsQQ4AT}!1pJicWpaBSp)f>RN$Q0_f z@e%TRvEOO9yb{M;9P4pFgra?jV<1rLO*q!#;8rXz;Yh`lC+fNh#|j)j$FU1XD(2K6 z9Jk`&{A$3#ou5UOx2nWS?SKtWact$)*xES&9 zES?7Pl*3aVPn2@BjO2+M#I=m(X)I3@c`D@TI-aKSbQ4e9 zKCWdJPjh&h&r=ysA)c1-RLN6>r&TH9oAfKzwE%tEvWAYO45CQwN+ zw{n+h7B|#`wIY&2Xyr_ZnNtk%Py!Mg1F4CniwDgwSp;^0kjY8IOxCE+B)!GV6f5nl z?1BDp1rYoEr2wLWFi`XY|G104?Ju3NXl`k^V*XO8g2@yET)(}jq-y{cc8{koGOsk$_%;k5L`a2Lb|F0V5 zH_g2LCLvasRl5dQ7Ubk||2Ti~0?f&UC4M3nH7^8z4UXlx8nlMnlZJDDw#x^uNB zA#nuEQdTzw8nHBJ!>~iub6CR%VV$&gG%jGzlw&+KmRFxF>uEeX5?A`J?1Nm0>wh00 zd5j2CUAwYj<;Zm7`;u!!9_=5Lvl`6fT@dK8gT*aKjn_%Lyp5MrR%O!S_ z%I@)Sv~VKI^{twPDn_>sL!i0D?T$Ryig_H%G6%U7e?`1;_)l1vGFu82XDKebWw@6 zfco4Rn>I^(ux6p{V8e73jwyGDt*4D84%JS)I<&&R#ycBpJxsr0&|nxWYnKqx=$`{y z9@ZM#&bGH3rJH#h*DVB?=oL)XLK$iyTxW~HME+zn?2uAAoEm{2(bYI|8{(`s#PAlz zRnQJkw#{2DM=xuCTl(#rpABF8ya%NWM9ho&WV*m*(_8@NRqpypaDk)ET$lQ36q?+^ z2dgL^g@asjL(O#C`C1K&^dtHpu?M#u09s|{uIQRFm$!`PJGggipAx=PKu@rp@(pND zn!U9!)!FGLOadBV>KYnmNt4}0&!?h2X3x73p8)$LRkw%7tJni`nxIUu9>Q+&Cn!7v zgF{0Pyk=%TOJ#-;;G-CrLs>An$GjoA1w$QN8 zbX!qY0&FbM5cK>SJHih2VGH9(*aOh!`!*Ir*6-2&ud^?EuD%0j)LXG?U60cUPF9&PtIdO~t_Q_T;c z@1l4Ts9e&N&dH@h`z47=y{7rFM+F|yZWue`3!Lg8YS%>3c9KXZyA&%~tjW=K~ zS_aKZid0d76A{^^+ z+>2*F#sAYdev4xt4l+kVYLuFXqG@P)Zca1CU~eOsW1SKGs<&^=U(mw#z=Ma-lX{ZA zOSCLo&OoAEVGrguJ>PAnr`lJa?>X1LzCuGpuH{~}0ktZCCYsoK<`)mRpCxx~Wm}oycxNS4jn)%X zv4_6WA4_=l!q{tgct~FfAzv)_@^|!=+&|PTIOhA))x;K*L7Quqi zAo2B&h;-7ylyZWlbAqK`8$Z9&Xq*)4uB7d1egPTPZNfXd&Erk{{{_dVI9zDB569Ey zaTflw9QVbzUWCKI@qHXW#Q~cxxWrH`$Lb0gpCw?Nf~EnCN26TS!EN-`G0L~xIPbxE z8tsz$kiB=2y?2qlcagn!k-c}3y?2qlcagn!k-c}3y?2qlcagn!k-c}3y@%^KPxE;y z<0-_`5}v@eyM9vRu{5KvQq4(Q@f|Xk!1SS3e={b#Rke8ct})pYyL$sx`mwtgjmc@T zyUoVr^w`~F#^j9H-H&w41#+0sN`XlAGM*;5=|hdD1=uRwfT~p$0NDKkhx>ZWK`#p0 z-V2bHdihor;kj`SA&q;DsV(E~gC$c5hrARo*x$qU?~+#lQF?fXagP9@bt6D$-3Y*` z8*{?oi%A~fFdQRsEWjZ+%2eP|HE!Gt8$HZMiEiXZqwaEPw`9!w8Ezc27roDv6+yoX@w0_xzp-@2J^YMYI1D$+hIv*>s1_Srgf!u z9ntP?w0j=6B}}tjn!H$b1?e1eye}iSw{V_qc=@&Yqg$7Nv(Uo5gfCM4lZ^z-L?Eab z4;pXssyy*JwfuB)gQ>6;tOr}&w|+RUZr~NzgA7_X_nlqSr?bti_6o7gBJg$?E4vTl zzj(q1>teIbj?$wcG$&?S9OL0m)M0v*ouJ;YR9ERxKU*b9ha(mku(g7f&!b!EpReW8 zWHbd9k@YZ;>{~w{rz>iL9eDrQlkEn zlpB6R-56Whd+65TN0wi&AK7*w1xEku9qDc;!{vrb^m9J{0@>8VqC2=e@WLXteinmz z+`-;}<6^%R>)!;%wlFDBV#ys3V}9E>nn>U&CRhkqu)^$F2bk8|M6Z%&8en6(Xlc%L zny=r=)YHsVI0ny$c0?i>l$6);QD(wNCf3=*99BRwh5x6A%OFrH5#KDU5*5X>OQx$8 zT$&ee3?+|c1uH`+mPN(dQI6co?f|uC*oo3(+urx-+n}F5^!eX?PYP(Iw6Bm3-geN} z`cE*7jnboj6xp^@4LL@py|ph+hQM6(Kv#suAS|@H;s-61Y6F5jl(}$+<5clT6h2Pk zEgDF?g}{|#7bZ>UpixJ-zKzh^mE#5X0bhL>;aHBY&%mHrM9Z3|eztm9%|&)!*Z`e$gR6o>M%f|!Srx{_ucf)JJ>H?-#xvKU^y8^#{gc=+!r`e0A#djy}r z|F)Wj%5dZWMk8qOM~~$pYU2hcNcd`LpRB;bSNmPeq*%YsciySUHIs{S4@>h^8TwEN zmDB(&>u$dY;lbf$_v(k(Zy=2BM~K#LV%N+=IGg%P?nMkIx&DW1#%pJrlV5c}$r7mX zL({25R5Dy_%cB%ECh}Kd&w4`}6@ql1T169^XwCG8{%%RRlKE=0Hjl*Y>(G5cFFGQY zDW@lH(@bOq)wt^8LZ*Hq)@daRKz6jZh>-G-dN^|Ac0i(U)we$dR*BHYXB~FjMfM#G zRRSMEy9;9T2Q*gAHB1=8;B<3EKf{;|e|2#zJ32}~l)cM-3sG;P6c8tiEL6#ERF6Z* zg2|~r!-7mW^w?iTF|`p?M>Agk1TkwVW4Vw!vu9B@nN6Z{5&ioH)UW5n{2|h=-vpkj zV-ILs+2R9eF{D?5V6fPw0E^D*fT{^tVtfnh4d9kTsKyAP?B(BT#EJy;mfSn2E-T1i zR4|7Y%7t;;P$j$fg!AkfxCLgP_II4vYH%$wP z%ab{$lgv@_tpbTP(QK@}9eTZUXA;fHIQ&QEuUY8b5s@SJJ& zONN!vbn28*7U2q(0|4+dsv8zv4!AYL7>PLN9DE<&QH!?1$L| zq8M1KXr^fIb6RZxz+2yE6rDaGy+8-O!_Y7BLYybr3af6EATzE6gd1p%A2O$b2*34_ zo*sZ;@-o!&GS;#Xu;Y)#83V9gh>glw4qhB6!hr!;2V-zVNUZm2dr{iZ_7Ns_02BH` z!^;9+GeHFQzi6m&r~7+^Ke)DCTz?~?P6P;lSM|miwTF7+1MGdo#c2B#LQ7}0ydj4D!*i!-|IE*q@AiAZx9^ zW<0}*+c7?b>yOz|gIe$DF43=@&Nk!|^q@%_bYT6%APxOYZdMS*jHL=+C`csc(=rl0 zCnatG3h59?RS^z9K-Xr;$-w0hw>cr;Rwh_-6ZNeIXP%k!=a%^yy#70|NrWS>=!ryc z8)WJ)+4&!$^I--YK)j7C-^#)0O5tbqPuiZdz>15x+H{VLJJ8AvzbRcp*ST{W0L+Ml zypjZ{QO+n9TrHoE#_n2MWNBK7xF)fn7Z89PLXesk)Zor^xSrtHfI}STMGA?5>5Juj zKbd=t66=eN;%wwBIfDy(Xn6Vy0&|E9D=CnQ;5112M?m2yZPj{kp8NpcLlIV}HMFVn zVD$MT6HuaW)vs`t{bnHXT73vpc4bo^lF6sAGM{Viow_%Q5FDqJ#?gYc!DH1JS9B)39m1>_kk^uPTUJ| znw{08+ooEWb_`f10SSIfkvR0g)y4)cD~9i>>>dtUWbrb?V4|rWEF#+qzn@&9j-mB% z4o|Ot0?`rjH(|{huZQ2^us#qLm9_^K3;PIVGCzYt1H5vwX!>nF4}%sNXil` zVBw-{hV^W|dCo>V%8JI<~tj@ncuSQw(>rDZXbaWYQSCqV_^RVPdDbCSQKK zgDOAEbx6+q@Tv<@PIv9pX2OB!G8B}i@C8%xjK z6$j2x2m_qK-d^t~-T;2|lMy`s4(wp#9DVzyVrKC|?aocTwT@;j+CInL#cH%gCdifY z&uPix=q2nI2VVaf^pLH4M_4YK?Q>JRy)3i(qY%|ark2}}cB@%P#^2d#A4mU*ohjzx zd2}mf0ep9HF$~%;RqtLt&BP-Zix)iE$FL?&$~_z#u-K%w z3mMKun~!llE+^WVf#4qX5l%mZqqw~OAq19|(M79s15{8EQUgA?kwau%yLYE9>~zt@M=q}YI3)a3%9;Ee znvVL9HK)|7O(?wY;dr^!xSu3La@L^@7{0%AuK@WZ)#Yg$CAQ>43WrzV&-KZ0pughjNKF_{l4`4piAfgvMIt(Zrzqr6dNF%U)B$}Oyl>5Z&BD7_|o zl*U0oL22l^c*NAr?h!Idv<6Ul%m_luZ*2bf0%G01j7b7KlKWPNm@6>Vo<0LyTQdpe zHneTuj~>P(fX{P9o)P7x4ttJhJukpA?3EBj`|<+&QpzCfvDmKIht((}s}~$v8aOmB zI5gUIyr>8sOf7wPO+#~PN4er^tooy_NZ}jPgB0!WZUb|C%Re%r51>*rF@i1GFx8-t zE1eTDNGzE z9@=&rh6s&!FaM6Qm7ViB!!@h`+q9K^riHT2&cjAi=s>&M_KN1>?cH|AwMCEHV=wut zN1{;md^Y(ogjyLzaJ_^A)b#qbZ0w_e-WS=T%(IB;+^WtF03-@mtaj)ulW2v{c1#73 zNRu8ALgT3brc&SNkiwH+fF@mc0+`ipUV2c~S3DT)vOUN)dIo}nht>R;##T;Xo6 z#%;tQ<2dc0_#DPTJ2!tl48CoClFZIitevGmp#+7A4P37EGN&gK)Z)7i$j4rllQE$E zHGQap0BgIDxigmz35RA6yOoI+TPe)M{E~&Yh31qo-CCflq#$4=jyuUgSKAeUr&lo| z>y{t{;n_(3Tg@bUhfT$!SQ3Aw3yT#*w#5n{B_aB!&z&{Y-cTFY*iUNV?b?0BI=k@2 zWa-AXgZeWBd|en3rA!Tm99-bMnB6jjOLn+C88s*C-^GY9V%Ls3APp=9AQZ3+1g-eG zmPpJ*)FIP^@o@M?h<>^#SueP!DTkvhC^>YcJ;c?A`x3K47m`oib^*m>qZv$V%s+`| z!sw__F9nQAAw=$Ccr(2VO2u{MLR@!Uw}E9wUP@Z~r^x%q);_~KC6HB;z_tekp%U3z z4KPux3fa~lLm@y8xrGM;yPi1GarDEn4hp&%?kW#z2_060saaBOQa}9UDE;W${Q<){h+Xw8_`bOSXDEJ$k1{^WCom z1dKV3hg#da^6zSEmj9%-*R1UB`0NT>s6eK$jm5eUazN~*E^=XyxlYf>NFM|SdRApqXK5rpM?i* zsY3_su=Yh;1eD(%>JHUzxc8P#e6nQ;&ZB7bjyPZAs8bqGNkCt25ZAr_R&GS2(`g4f zr3o!R;nia}wXJ^**xX{H1Wm%2rNmDxX$g!lQG#*zGnY2--rA)K9&SMHr3;7}5AlJG z_Te^JA`>hKXtFz4?4+M!iuGL*0!dBtJMxKnSQ%3+RFC-RFsf)^l4Ss)_H&}NfgYHL z_~^EpEZf2YsdOMaPIhho#%nd#z;oGsf09l--GghB%~1p4TUCh|M~1|hjOPOR+=d1F zVuwy{hmje?v5QN@iS-42ldgGw{XlfJW%^-OEQoL0WY22FtxTM=u~bW9rEG7ZLKOvG zydaCkvHCW+1{H^A&4st3*cth=?g*E_ADaHdu>XUHVoCP7+BkSo!FO&Zf%O)6XtCR~v#2-P{l3(=_9I8b=$Bo~Xf9IJ(kQ5r`#;h($Fm=CgLm=Kk=_ zk8@H%G4_DV(8yHj_V4kzkECi{1%3w4Y&>KAx-4rmS#AASoVj#hpomj4Kzixt9ODWYW-u!~rZrA3#gC6x~|rn+BS znC5z2pX$!tjU;W+nKWWF&aNGq%n&tKjnXUo9gQ}4Moda8Z#Aw?^F4XBTfbVF%tTn6 z5a-6An`Ji!sUFdcLS!p+H;O7AiCjTxjXWXNzb9@UfL{@XT=Y(_7V;T=Ae>IM{De$X zztgz9`3YU5Aec?MizWcEHh;GUTQQpE1!8wZs|!YcH;96t!WV%^E%X>?PeW#>z&m^= z2;QA$6rjNc z5a)Z;J0Mr@2-R~e6=m_q=9w#~kEHG5P^%WkLyq_NRAfwJ@K0t1)8RyGb2Yb^7h> zpm|&kc<4jbpY4O9J7xJs#NX(SiDGx2;$b6%lsZ(@-Iy-`g*_GsUPeB83ho&Bo*jQ& zUrBsu8I~v*FXVfUG@3QnG0kGa?M`f9s%4XgRCtL8`2|N3$jVbpvckfucM-ROnwYQt z7ojQ{pK`WxbR9hNZ>J99+<# ztS*wl_nVA({)5=4^~4-#2Km!Wp8Pxoc#1jF#JnHq{D{NJ`c?i@J z*}&J?^gNC2-+^-aKp@snzuB{u-!ZrC%iY`d4#-BOYm4xJKL~@yP#CUxMeHLMn|3 zp6p%250+zx#Ox6T?nOPFlr40*k*v2OM8E4;?UMG61ZERS3oOc0>c{eQ4}5gJ>vv)1 zTg`O>Ir=rxirw!_cXSWYmfe|g6C>h$V`gdDQmaEbbk-_Hx?e;BWlT;uDne$gCtS_g z<5fpma|;D3r{T(|@VGukKYS7gU4T)cns7}2Ec(y(@@}$eo+6}UTreXX9k4eN0f4=$ zx4Mpjn=!U+Yfbv}r|Wh_-cA0re!2nonF0jeHj-m-Yn3cK8cG4ca{nwYw`H|Wu|ZLx zi3&vC8GRuQbKEpEsU}Qfo3JjF{G}WP^WM2rw9m<=y@1A{a2T!7O}j&h9?NhJF!OD| zOH%nbqfg{=4c<}(p6J0O7)Et0?;BZ^ZRm@ljCl4^mS}P+|(}FS+%EZfR{x_#$DAxQ%JX#mpr4OEY z{;4BnQ&De_vU~oWr0jwYmMG##W3g*ua*yaTfG|kn*i<1;iWbp1!*t#dr`{ETsxRo= zyCM@R-3(}-(zhM(<-Y#;-}UGd;~830b8Cy79#FKvq23?}IjyN?)1!|fYZN-mXgw}s zq9!F|RpbleETF*jXSE=5a8uYU<0*>HeNR5c54rxXzohSifp-Px4qOdfG{{T3lTCO6 zpWOCm-#T|!+Vc&MolDf>nU6HWZ7sw4Gc1>0+jVaWEcLpL$f<+iJGg`iyI*-L&^iKXX$tVJbN?a)JHhKg*A)QV~n|^5JdEFV{bo zv?ibZa zKWiAblBZwserkWFZ;R`&Y#8 z9*@L?@)!tM*a`RrC#ZidqG>q=xbFC`HMGAIL^^&48gPmnC*OZ0{d=2zAV*zhhf3#S z_W=GfU_$RT$A8w$5Ox^&1L-s$!AiLqya0nzA?$5t0E`3pgn0D82-PDc3_~WYLX4+r zXJ$lbke}P`+8JGz0qag~(ObJRD}WMrCK*#Q53d}CYef9%jR(d(yn%i>U`zqC0fS&8 z12L0bZ}ECyK0>J)K{pfjSm?*g4>5m4LO>(FazikCPaAMhODaT;bcS%H5RLu<)i!8` zrnz2+U1CleuJECOYSt?h3ar?yHFa+ex|=4rn}eRF37+Plw`qd6IhfWoA+0%>-ZUY- zIhfHjA*1=#=9>b@li4&O6H>D14o~y%n&u-#Qkethr_HZ4jmCm^M~BpxnXyyqOYwPY zfFCFjPQHc9Fvig_%iNvt?N{U9HuFlAI(?}_t!lsRlI)q$9huEiH)+IfmdGo+Sua~D z%~A(>=F9`R&At@&E8>i&4PpHe-y>-&>n{itW&>5*@i>Bz$SZ)-?yAMK(SJX?u}k|3 zjA0IjZhUemFc8C%LqDf`VPc}jLyd$Q1L^&sziEOWm3^T(nAN;{|NiEeaQRZxgskS5 z_U~)j(HzV{>OQ3GU}_Fh_cm>B4h}==Ueta&jtRVZ>+Nm(B>X%>qoWQUbcU+q2-g1x zsQ)g`fd58Kty(h{k5y~fY6F<^d}x&du4r3uPy~0|-c5#Z6#(q|lWSL9bMPp^>WF~V zX98A-1gt(3usSGU)xuFY=mumR!2D_s;vPc+R@V*C8W^zBB+n~I;JBLkB<*Eq+GVUh z0$n6uMc|(SzQrv4C1)-(ZFhpSR}-YM8XdnHR}&MI4w|5(D$UYSQFX?cB}ipjIxJ79 z{>MmU+{D_~qw{}5;dM`9hU)?u@xb#u@>;`iT_CTjjoltSC?J%Dp3fr){R|)!UFL`N z+2hQ9#I#V-_b5y=KE+Rb^IG&>pFTFD^=)k3pdRF-0EL65WU3Tk9b+1elSjJVqJUhR zoIE-ZZ2b#fsrpijw6|kFIfAklX`Kz#&(CNV{5&c?TkqR?3lchJ`WR_^_I`qAw7cXp zT4e&iRYizM**v=ePOL=^sp>;M#y)Z1#~-+q+7Q5bRp0@+GoIx8jca)3uh950ak9Rd z=l1)b0=I+(oW4z$cq>wV z)e8}n?G)sS7eU%Q*Hk#>kaaU2k`La;4}ue4&HBh>!Pi|7wg9wd8%0O$(*GuFHM0uv z%4I`s5_3&DhzF7XuUX6r3Cj-6lOi{+MugYEyi_FTNen}@G0CJlKOc!9_amsruhB%f zv+y?hrGFVrMS01elPqn(%L)RF90CR4;9A!wC!j|+3q1l>7)VsO5wC-NPcnW)`s6|z zgQ(cB>^Gb}`y;Zej9^nV}o#n@{z!dHeL^O=+{~WRWMbP8=R)0zS4*W5@u`B2j zJhCum?xYyxRFlceKuEDZ=%*LLG_wybB5JsY?9KU z$-dP^aSa4alOG}p6JU*g98|c})v)c)$pF?YSEI`WSL5~Of};e=BLbA42~Zvqp!`sP z@}K}^3qh_;Q8IYsH5VWOW9eZU;URMz`7=oHljus5{27t_>QsRom08|?g*g?#I#LO+ zol{>*m`Z@{ocGm)sZy^_U+Y{4b}SH&fKf9+{?cwl5CX7m_?QA%j#j3yNpi(6N{ZAz z@iXRWa<2ry3R(jI0$|fRkKSJ}P%-et$W?tDK@u2`u>jI63|J0~!>TK6%EuRgfAdV* zcOF50Ci?!^rc}*h{>An0&uq!l#)Ei79qnwrYwO!c<7PF9^8XO@5&7*M z;+cOn((r+_yJ$2q2~DAtKS_4#pyP9r?EZasch2(!HRy^0QDUaE2A`t0FtRa9>*z2i zrj8>)ivA>A<@nvlS>>FE2a24aOR~&W&Olk^yuwK#n{%9vHY}&y)VUO!K6mJ_OSNL+ zsgYig5?K@FoM26q6~87jPV=D0W$}}DDi%L}EPiA*`*EItOMo@f{EE=v3OFwMb@CFX3cX8XZx9$B3HBa1#o^n-YO`E zRmZwMJz%eatcqtkDn2og1#&S=t#}Ag9alU#T=A$m19EY)3m;ka+!VmF=YRlJK!EBO zoDxv{N@VKfuL%2pV-pB#$hr?u2BlIA){xdDKm~ZRfC_1UkZ}&+%mpIfmDhrMWMKIz zmSO`HUuHt^74tcvMBY|FWxlZi5csK+4s7x&^TI4E;b`U|=cM{pt`JYy}enZOE z>5xJG6hzz&=NR=lHe@n(4o5U&BlhWQtxs15a;}GJHOJcVI}^%0cYwS5(izWP|6fqT z^^~Z97CDLagddf%gYd?Zr!Odl-5(`=R;Xv^vmq5v@sVXK>v&{#8I~@I3MKtI0HU1m z8Ajv~sgkwpkfT%?Emd@3FJ`GZ+qT1ZWE(mQ8)3+(-cN9S99ebgRgiMT;9|F8P_Qd+ zs=g=sf`|Sev5~QpENcT3fc_nWE_PrjpF0x9m){E$u6`~wr$cH6ChGcYu9>Fwb~L%7 zqC^_}332<4y-yY@&G;v=)+@b)g|n#vkr~vvf+q*{Cs+PggiwSI=vu!N!L+ZUleMF1 zGMWsH#61=VvwdCRyOyZaPF0;^qJ$A{Cd~yJ9{BH;RKL#g0VgVrkulk}$gK;}trnGy7c}1I;C?8j2HVzv%of`wqUyU(Dcg3GgcnwB zNu$W|JcrsJUwA!M)jM8zZ82`#n#AG`CMr=i1T+v;6P(m4e-PC>ankCO=Gl%XtUixi zTR(Dbh&7!24}$+(xVD>uU&^&lPKN#eRboAzIOlXYshy@$kOaX3?I>Kd{#%79cjWv`CyLRR_{DP2D3LSus1%?vc z{tRdpdcxW@qA+}tMBK0Bw)YD`7rE^kUh;Q%jj2nlB{shQU)Lpq-!|5e--0+p6p6-Z zWJ;9A&_ujh9TD$PBFa06C~E-j8`<+`!Rz}3nnP-B;uMEUB_fJNr8b0e)zt1-szj%D z$4YytsdGN3F2~CEYJz-DT~5a3?D^fOw28D|>F|Ofy$xCDFm%i)P@j>;{p3!QaTRUo zpzU$TX?x@jR6yx~tY=NwsuxR}Ip|z#xvY?GR0cE2LSQ|hxPsVqn9>nWjA7q#oH{oX z+~KvC^a<;~7~WyXn?n)py062>!7Q!?gE>?VQk83oEvO=tTP0e?Dsq@9nvg}m>Ii0_ z9KyJpogmreDLN;1V`Xx^)Re@Yqa=D?%B^VeC^T8{#IvmbM%2H7Kyv~7QxkT=cw%u! zCj_W+RCt`wnE;OuJOP^REmmgotGumKsIL+GRe1m%Hvm`A{!5l02EbQxxfZH*rjo!!Yk9}S2( zi+z3(e1|9KP0<5BT`*tm8b9*1P9$v*>=&aAatj3}K(yA|2V1FAP+K0u|2@sxK|=dJ zq_JFYQz~m}EgerEGikua7!7bdby9(-C>(>1HY{4-2!j(Vibh9n{{RIa>~AW(UW*=mnANA>_!d_G{_|oB?GA9}yQ=}&t&xHB+A$V! z5^Y+BoxEAkzPPp0Ny)F@i%~}JD@2;3&o?Uu0y)7Xfdw%VXxsiYo6lZL@XSdZ6D^S< zXuN66&7f*0C6MwR59#*8gQ4v2f1u_z_We4$%I%hKlb1^F(O3@MBg>%!Nzv^=ZuV%L zM$)JjMEJtLLlPy{Fo-Q8`xPbkC#C(bfS5SMcsy%m^M6(n^*wfd;RTqf@$952cT!?8 zdDcl1^?h_}VoB5w<8W?H)s6;aO=)o8ToFdqd}EyJ;Y=NZnR+qF)IVAMf60=vPE}nN zH=X8oH%IMFVH8$(5JnNAs@h082GNlE8w;aepxkLNYR|2#l7Gh$c&tB~a7qj+|3kv4 zmq}r#UZ_^$-`I}wVKojS6pR;UZo`upg2gf<$ZoelD1k8Q3BK?(D#LexEgvH2T!GFH z5Olg^Sx6_g1nHzQjI*RHY<=H>bES$vwKtgP^x6dIwAFm}Zh~h+Olj0bPHB|iZiiE0 zSWEBsD+w%5qtXiN9!EeGlS};^xbGXtrRwn7DUwTJ<*G#}dAf_364W*MHnw4U_P-fB zQ*v%E)=vQ%{)mbN??txg>3^Xaz!dGY?)Te*D!(nLvKIH0*~GK}ls-!75!T3kDUYJ{6k$2AONYh| z=+IaZSSegju>GdEKArd-21K&;c(Pb*_8CaPflr1dO!~i$>wnFTZ$Par`7SGdLa6;F zM8FiUZb4^bpd31h4g=MI3{I$Y(gTsODzVh{gmuu=q<@kbn?DHazv`+u7Th7^QG%)j zVySUt!%s#mRT?7%4$)GQiSEBlD3;n~K5d8*gV?(UJH6jvh{l{OxROu#9aUFkL3r=z zhki(MhQ%Z~BfnOXv!}Bpr=twVLm3XXi&Pf#(HHz8!%1u>Urofg6P0eik0o0ooajM+ zLUVafyxc}2Eu8Ek;*?5mD3q^%9Fm$(2`u4@Dc&-@v^rTN`T>7Ras$HnudgNkEs~qB z2<*^aCX2<~`8ni){|{Inowd<0-8D!{r^RB z)4ozhbTbXx17c$pDlaP}1$;03FZ%umKOP0TF?Xy^Q-$32gqsPVWhbFIvAH z+J$%pf|A+~skoI92K&ZY`^h8Pq&+3k2jiaQK^5>6DTlJwM5k2zlz2@fB(Um3jmwqi z0vY(5=dygtGI`fYt8t;jTwN)4=s&JylJe%}b?`Ymh=z7ldKmZ97+~86*pss&EuL<+ zy=RCj>9vEd7cJUZ^#UuWR3M}M5?l@8f#$i4=f$RAHEjx})@Fi$gT7~4-okKl%WW|3 zW0veM)wgb6W znJwH7jB2Vvb|e{3GyVePX|}8Lay&NDM2&7Oij8a1aWCFwP^t${;9n-rOdb54jne|? zQK6*bb%vsb-OpC6;NtK>V5F5Ch?+}KE%X-ZlKeE|6;vJ5B4FlfN25YfEDM4#dVm4T z!14G;83Pdj=#5U9e+L|lOo2go61(M~MXAO;EKs?F{z+fY5o;|6i)$2$&nL1f z8EQgt2C6(7%?LuxKic(@@(y+Fn$JqNpwg{(uppR9z;dJ;p3=X(8{QdNJ091brc`j* zBWth4wbzlJ=15O>q-QjxLZX!!uwTkVp$&BT6B7%&T;>xy4jAk?a%VJk!`cvjyeiqM z1#{D!ypm7#lWO%G|6KY6?cjvJ&Cl%jyoPmIVo0 zh$rYgB(WE8vy-Ij%3(G{*UZE^pcyVjDNO(?P_K0Ke|iU2XvLYPdOMS-H5pvSPCD`? z-xL_uwpo(eSG2Xw*84cpe{78-2W~vV1Ee*LM__=Artul@eQ6r6d|o{0OBig6b2=8$ z9%0^i9uIHzSb|tk^aANBWcAxnean%>D&VE2@k$BkQROM?6i0bxf;`2Cd^H=fJhIRM zdMb-S8}_9fP`yCc)XWaOu>2gesdg)~Oterl1!c88Z+23u*-340qDR{3*>M@y<6|*B zTc)86za_YTf4Ja=kVfxs`G z4=e~qZgB^3^PP@wC_O>vH$GyeM_-PPSGFk$URCBPonLKM7Agte_!p}eJ*c2RCYCa< zj%S6kaN~oT>kuoAW-^n^2wZbY@RoA|x7IKwVLc5naPLbY;l*U&hLGM4U~v4&kk|G< z2`58d+e5hxiLh)BqU~IOM9%ta!I8zYI}%ogT#^Qo+JQ?_&xTag@lm|Z1|J<@@~<`` zh86{I_(lFV(NliEaj?dM>85cI}4xu7@4j}&7`9Ylx@x(S9Qp^xNBx5Xq~4f1L;N2`&1 z()!A;i30;eImHicSDc6h0&Y%1ERK9PV{znrE(NS|D{EIS2_J*RFgi!R1bxYufFt=5 z^d+C7ZqrgQUu-wG+d*Iam~8%L$wBI_eA~sI&5vn{uJDr z>1Iy}qZ%u5g)~P)#v$Ktd6#AirOj;4SA;cFn!+=zJ4tD+gnVUOV`W!CVfY-B6K^Xr zYGqczVXUX2XLiCc>4edNOSc{A1FcaG zCqYCy0XKM_MGko#eJ9s;p_;wwg9s9~9Y|JP;IiOV#CWwqtvR0oWb%&)&`JQAd<{+NAE;|FGEyR3gzU1_OQ z#`#S0Adn0rLD*yITipxOhl7@9Lhg{nkgJSQ1b(xkA2^^ji-wzFTONLdFq~LpI*@R4 zIY6cb`=cg5R^!o9rcW;zTZoM#u*iH4&9P(A%%iki!eJ#`a;R7|c@C$`VXb%I6}rXm zJIjMA(C^+W6B2sVJ>cZP0w}Nhy*B|M0f(~znIl^_Vv`hHThz`VHh*`RRo=@15+D3bv?9V*^n*KN2Wv~2mGl%$ zY;no&#>DkOhoNQCx}szDXPwb)q{NdYoHGF@O1cn7IB!F;f|wf}!WaqT=7=4z8_fZ~ z_;rRr|7*hfbz~H%L|I)jGKv{K0BOn&pD|O+@BtYuq|gizlVmf&%l#s7v_xuW@tk_Q8e3_`jBn(zi7Mn1bZ>z`wj;G4Wn+fu^A{>tA z!^AYte0yZ`?*4?K^D!Y!l%ztvm|otJP0<%3CCuD3HFJHdyPh05g*Td_s8!n|coifR zP+*hL>Tga$ui#ARPgFGrsOmM+h}YSQe+Ok1bZoc$J0=ZP=y-Hs$iGfQ*$1xe45r%h z9X0_}I$0dLmZxHlG@LXwHBC9eu&Jm7{urzxO@$vI#M+@Q@>TeOI1Ax?6@Gwry(VNT zHY;C+A7Gi}x@^d_?1A$Ueqa^ZyNkLB^soSCv_aG?W|wU?Y(7;WYGu!Vq2qG}qU!A= z^P#Yu99)1bAXOeJ!1N2_V~`aledVV=ilX=Z9@ImrIObn@0X=` zofxDF`CN4}ulnf0pN%uj(<_aF-DNyLtOEebihoDL4x*Ekb-HP0M*?A zJvQNdg@lvRm9yeXB#FD{c$71*btxVRxs7{?n^dTFQ3m;Gj_v?{QKTvz!APDtq^U_pkI3;ht9&CFJ z9y9j96kXi(5L50^q!h-2$;INwtqMf&2su{a&vj5mlVe;rd+i0WzVEkvjl0PRZ~HPC z(U#Vw_X0hXSaN@kJ||^sq5fNfEa+ZU&~}s@C>3&pN7fnIc3v8$;01yFvud^$} zhaWw`dZ2|5;16m5Q6Y#D1I^;QNLwY%k2U5vk?~$sZApG05W#!74Rr;+-}W@_mu7qs zYld(WEoOD24Srod`Q~~?q>mSZh=&SS{U{F6bK`VR_A`mXAfXl#xVP}-=?jKb=L+UsQ5vXDC=TZWzBzKJ|zDA^ut2<`fU^?x7r=NgiX+yA5PTL7afuD|aqVS!*G zMvO`!=!&2L6F>|~Wq|+zQF%)hn;?Ryh$x9t8#S;2SvFA=R76zJShZElztW0`kN^t4 zDi5`Z0*$&V5mbB@5VGIzH*@Fi-pwWih1M?z_C99r%$e7D&72w6PPb57GCZi9z&e*% z<8aa!xYsc@VqC&i^9!Nof~kNnHO-nKSz*1n$JU4e0-lZ<6h@4bA$7e$=2Z?_`3h@( z061S0%owoz3C;9q<<{{qV*OrxtE#suhD? zGxKbZ8D+@e0svviUL0-A!;TB%JnUsRw$lnBQANGBB{7^geWXYG$;?ZYkE zyow#@5X*6UI+px3V%Tsbvl&M&ncXQRv#9L?9ka!@hRqhMl-Z&aO5%ufkfSQ%G^-h!+%o zjB=E>U=gT=mHTjaJx9anRBqb4p((bF6xufGEjNr6mEs#Qm_fvdksjBGf%KbT#ArjT z4Qyf(e;Ob!KHH>`<7iF;2y%P`OtKyM@0Bn+^kwJyE6|rDsA)!v|FwxCpGaSUO;-fc zO|?~s$easEi)e!NO%$1Oz$MQ)u4yI;=^Co66l4z|JQO;Wp?{Xm9T$=Kj3n_{1maUb z?%RwTu=M+N*#CutA>L&Z{GD5{#M=HF<(jORBjB1x*+TIwv4;zl z*^PsCJap6}w^^VUDci$;+f?x?>-;$EV z8QR?qvB4g-g~~qR`iS-kn+wLXPml|~#&gu+q->O*L#A~R?{n2angUFPd{YJ>Qa>@-dt50^{CQKIJL_#zhJ!d-$aC2KVeJp)m6*H-j%mgZq!%Sw_ z%%oASLHfjfgzZ^lH39C}w$%%JazI6oB4^@jY5Z4_ompeCH_$W|02}X`14xrPaH|k8 zkIZRvh`LTqOlhjF1!gOBEz%`N*TTm_*J2GE0oSl~Ei@VCzGG&I#YW{{k|wo6^-~!z ze`FiHjUq@zhF{B#(S>>=li-xHm{P$^E!ST~y`}h3|1G;p{kL*+_Sh8IUF*lKkAqvq zYP*1V7h!p~z(-`rJ0>RHaG1%vdSN0&&H6iyr5MR!XNrAnB-`5U?xcc|L^fxS%SeO{ z+=sPag4$m~vUxVP42e0dq_BznC5n+0IgBJ19mdg`$VluN;)oGEV(1n##KO?+`ieZk z)~Dj|giP9=aTc$^6Q7OHEZ!}_T??^FzkQ?j#%|M>(%k5_nTqxLG4eFh zYoQ^hLbL@AB+XU}`o zx|GHgXRUx^Cl7u|o1=dZ&kXDoaY4&~`LyxPgx;;M6-MT|yKqcn4;rJ~i*}gCu~Cu^ zIb)xPYNAK2tcRu-wX8nAa>#rl%3+GF9K!nQ%x@#jda9vRgn5F?;g*Iqq7w>jvU`W4 zs~jp`e}tS}m@5xAe=StO@!$sK*wezincScT=!3xge=&azLYa0VRk703Kt~U&91g?i z5SG*?D~E!giA7;>^#VVGa>(Hqs~k4U&(*Rn_bM=YK!i>s8HG8>e4k|W{L@7tj{f2> z!PK3?H>4caQw1Ak>a2#&EQ6TCri=eL_MXpCh9lthM_EHWa(yts-m}0fxbXi#ieH>wYQO#x2MVWZOfp20b6>0ziCySuj@Lk%&CgGW@sv2vtE)_A#8!Ev;Lo`fzF zx| z(A~TA_Y{|e{~7QSjFK~-V3SAYd?wS5aLnDGi4%PjFx<=2xo!U}{Pg6=x#&zy6K89y zdB`Z|v$*T3yFm6-%flAOx}Nnzpm06QbX=O;u4g?OaXrIgZmd;}-V%z_kJLTj22g>P zH5bvV>@_kwdY*M)6YK~6Gk?;G>1Wmkxx?=()8}8ueIYY)am6CU3>*T!&G}qK{*1i= z`N6L&)8{OZMUGEQiUCIE>Xk z$L~=+n9B9g{|bxLJwQ9NESF2wg_lfbSzp{IMZK4PVwwMDU61UHre}oIs0h+w3`RMw z#ulM%k^H)-L*kq~q|X?1Tdre|{vxf)Ba}NQKw%~Q#v1s7T2t!a^L@6wyGm~?{vFO1_p)h1pLQYBN9WfAZ8d%WIqB9&-%&4p)KH43s^k!)&OQ(B1 zluNnXCm%fuGLBfo{v1fr3Q86)oTX{EbmvTQ3|Hw9y#T%kc*uG>naw@UJU0#L?0!n7 zIa#JTy}3w1E8e{tRy{|p>VaO-gUfZZcmGLs5cY^%xGJPn<)+a2AQ!f#^r~FxfEHgM zLbc>N%i>QZhd75E;sTP>5g?~E>_hoyLpT+S;$xT0=So+!2A0g{N^6J=g_fOMI#=2z z+tPVlRvt`1cIDmDiv{)BE3Pk;i^v+UD%mEY!jO(rVNbIhSD*;u@Wjv)xO<1XO;U!O zxc8wl|AESM6fvhVeY=-pc3RYDjXmJ@MU5Njt|mv!-l+G|T}{5<74@F(YGMu>60L)B zwvF8(*nOyFtKK69T8yVj<}+pzn=?y>uoZR|fn!k*8;@G$yM^|D+|Kd~#w z60DfJFfu7JIo+oB?x%u_>2MtQw(|$V>G=MNGs1`z&lir{M3pC?Nf!&dhuiAl7!`!s zA~PLnxR-iGMS$6Y;SD7q%og<{IO34Vp%~IoOb$^Ix=q)>svDB0hB0j1vRf$j$iJAQ z%wvx>KdR4#%T7DIvtGtgcFv^+0!7dSeXhViQ3-Tigws*gMgzoQy*BjjI|Bv>?MkoAP^a@b#0s?mS-(+ zus%XM{~Y2SZW^YyayIDAW!9L&2bsY;>1@Ca)a(V^cqd&8#QtfxmGPu&LGQ={?%tqY zh$~$Sm?mfmQjILN{>n)ES0Iss=$DOVr8+>8R2kaA!*s8nFi*F#3XWBs>Qc0TdnEb(^FKwbd}^p5~UDSC--%xIi~*E?3`4oe>OW^ z@amn-E^!C(7Y=yBLBc_~C$bK_BN2ui?G+sdi_C3J;Ug2B2!-vWzox(O65Z|G>t5!N z>|e>kOy$p9bf=bVmI@@>x)SD%CwzBG0WvN)(5D6^sh|WTymm)6uZ-{ zto-}%b6K=A9OQ`KfT{>DJDl^uez*YrP-<#Bk(OgKcN8?ab%#31{ez~=jpRmo&ke2p zh;t*9F-UkgHIgg`1fGg(bEO_&3j^(HvpGvH7K^Fat>&^rVa=jZz5wiAEFj%Wf#?ks zg#A>c^ADMhEsM6R{gX@wRi)BluBavvyEO)5L=9+HYslS9y8iWy0+Gf&u-7=&V z&EtB&B`Mk|y&-mXBDvr1FpD78#=cE$?LCx1d8T_6my?I5+B?qMT+Ve$s?Fud>ufTF zZzY$jcS@?w<(Os;wghv?kYtqjPI5VZ$8d+sc|kA`Dw&%TdJ}2v%w|Mdk|BnOh?2`W z5fvG-laXAGo5L^@hYX2Oa5az|Z&fQQ)FAo21p%VFb~;`N{#GveTW_1ct@q7bSBx-n zIdSYt6qk$3&dN!vMv+!c#LrW#`Ex+rjuw|A;t?(fYLJc>0`YU)TrN{|o%&oZy8$j2 z#mOd;K4G^OBlJ7|Ob5do!p8WJ<>=R#Pr1$IG8C7Cl%s?wypvomBf{nIPI9@7NcX}! z$>lQGLD18{U^39|crUpe)8wPmz4);Rmt2nD@sZt2oPrQ&PKFmrMsm5RXtH~$7dDqu zj}DiUNJuX@h;t$jr+0}!*}F2F-sMB@vYj=ZRmN}$}&a3az7cwLfoZuFoaN&T}V~?uwCtQG9B1xR668o zs2h>1&C?uC+6Yf8W`dHxki3K5rs81Iw!y!ME!X_w*tl15rfZs3Ft*GuPKbNe`ca(u zsu$!3U*OhWBLd$Bd1#q_U_{v%9p~5weLMrnAdk~ogw`w!SFAl$dY-c#jdYs6dE)pf zc{pMy-l4Qm0U0EYCw-JPFdx2wdc};E2t=M zFc?))mGX$;+(42yQ0f0D`D^kLi!%*va6s@YnB9%DCPS3cDQ8EPlV{J{D2qary}*jM zYdyInfF=vRENlKiuoG+kixFj)MQR>JIc@~ZV<~pMa4({CRq8~>-#kpB>chEK!7-Mw z)T<5rk}iX&Zw<$EOVXIp!IxRV>d58PNX7VhyzlR?SU(~-*-B+g4`ewD_;U|V*WDCn zqe$U(hvKr!#h6G`kTlXj2+~fjzj}o=1$Vp(2D@!I&gV4Iq;L>4@Hx7Z51lBUFP>q-Y7JreRUG>(;Ky~*?4YU;S3byaI6f`75DPienngm*N*qnm7txzv8(2GdLbFd!iSXm0dkAUdWHV~Y` zf&4AerUDsdDab@k`qxENIa&&&|93V*gh29yl%$lUfRa=N!W?@651W_5Yy+$If39KR zuN1*jK&?Y(;in^e&!bT5aWXFWHH`-!?5wP6#S%zK%I47y;$7X6lvi{gsfo(P-Z*z8 z+GGG3^{5*HCQt@TW*O4?gPmY-JT3}y5wt&LgE}@w0wF#L?f%5o zAbM7ek)W+y3hT7c4%B$Gk)Q(4Gr!<3dzY{R%s(P4fcxMl?|Am0POSL;`1yeZv>dL5 zLYJ#2NV$yz+=o{f2YkRL);KUEMvyw+5r9=Vjc;ieMq4DFZ;VGypi} zf-s8z71!B!K>^B#P=4XeSNScxyNh?_xO;+KY9!qDFr_YS1;xNRVk_X2W^eJ!dsqt= z;S#YHED=wKu@<}~tp!cA2;f*j|Es=;Ie_^_%P%7|;k&`p8XGbVFhj>Q!0+Rj1{(87 zi!}|zGO|SQtGEVkPc$QQtNx2Q4xR;70+5SJby)z0;f3H^kGU)W(kBfI4k1Q6MgVGQ z$Aon`JgONfkXTmV4ukbvj?=%P2$FRXcb5^s!Tn4(>&jflz7v;qNjt#LVO`L~V0$w?toIVLu|lk=4Bi6m)$bx$No3$Bpzq>0U*!$J2(C+8FrRuDx@Y|ccI zwBX{qLSp?2uoe*=Q?8wiR703NlR;?AM3S`NMup>+`AQj4T5vgq#IGG2Thv5SK58;r z``|>9EhA1wkRapsM5UTYT3>;HJdTM%5+h6s8&`0yf?kGDOl<1zOduUw>MqH6J}^=m z2yM^~>M^EV?=tovxuO^f2uOSvQdTh`Mo~`ez#ul&J{9hJj&hPAEWKPe9%b8YlKmEn zq@?g-sv7-_x}UP&x+lS<{nkARF73Bs8e4WQd;VG4ZE5-hW{utvKhqz&hsRA_uqKO}KOkvm7=X zp9XCx#_kpg$HFH_@C|)Vv)wR;yK@#xvyl8Wu&J0&Rgf?kE=426sf>WuA zzJrK?7irWEKe)ZVZsnd}#c5wryOyf$NgLjhlnE-`$?u%~?q467RBha0D?ZbGi@od) zlpr#H`g4@1BiEhi856~Ok5G5|k(_!Y^`B|r)YTm58Sv#(y!Tf;d#YHjx0XoL0a4g> zpbbji`-^5zXP{DDx>GS;#MPasH7RE;djhp7x>F$uEX6&s!_Z4CLP+m&2=5lDs`vEIqP|3(K#%_X#U)Y{xgQ<$m{@_=_0Jdj_kz!YnwH7=}s?G z(Ay5Ag=82tD|*ytP3>M4r8_xIWAjx}#=B4{@m;1WzcAr5 z#WS_UYM|xHR=^n_qkK*qquH4(30)YumS^{;aZmOF22r*_;CjUFRT7V+2!q@Gsqn8_ zkA+fdVry7r!E4+@ysiV4v+aTFEwLRG46e=MK=@YWHsD(|v=QH` z2IjaZU4YYJv3e%e1=45fX|+81{I34U8GcW>KB!OhXR!UMGL>JIh`fz#Zx9t!OyHZ} zkZcV+1GLaS1Iz;D!?%&62=sN!m^<9Ba(xno9$ZEV6td+!Aw9NSXuORiBpSl~st4S! za*Oea?S9oG*8M7Sh*yW;-^7ag58$2E`PYRE}z7$&EOV#aw`l#`Y?6%2I^T{7B9D>uqXD_1y3NGC1% zUOH*zX0pV_gr$^8b37QRR#KX?*k|PFkWs$QcUP9iB=4pa#tWhofS zP-K~0dY$yj>LdoYtTK#lpp%Yj&fs!Wm%o->Pq(D2g3nZkq-CgzNn^#lCOMO;#}=v{ z)5+`xV#tckKtfYc7~x~HfxU|Uio4&5EO9+`H}?w_b?NrVl09E~WXa(nJ+kC`>5(Ph zOOGu1KFT92#~D}3BP&NbP31V_N_k{C0cw;e|0@REf?ieL42`jfLs>sdG=@73E>w$~ z21l9`phg;VrAL+%5S=Rrm=h5F1-HI&0-P@*9$7hP&m1v`#2sVv&EJAy>ltQ=>gwME;tjq=Y@qpGX0HK@)|e^6zs6el3X-K$jJ5`)UN zGhW9XgzG{1qp17vy|=>>;8yn?rJDM>IPTRQu0$#62nG2gMk$YkLn#M) zZ$J{uXVCm*&(mJVzv4miS^=8y@4oWBrt;VJ{;g&I1NW)O`DR>5*LA{@qvtSH)j>E+ zeG}hd3Pw9ROqCu(hbjLa9w^y~s}+JTidA-Edwl)1tO^VvuJy~%l1t79Cn>v2EKGdO z`tdHViqn%z`r>Wy9=SyB4SV{53%5p;4UbwT7gN$MD)loQY^r9plUx5A^2^0X&>0*HjxQzYm6-&oKM(pQKVqI?}JcI5~BzbmtCRXl((mCJv zpfQ64&JNG!Djo_B_H%EZML{x^^c+d;N3sgpAoe~h?A-YxByXggtZ@NtW2+vb3_tx>J#L8ak&yKKEFxEIe=s`c#WcV+82;hS%yt}Wybte7#+ zViT-DAylKf6e2ozQW~hvpFEPI>GKFz`>`1}Vd^U`;IqHtjBHd0jd$XaDN^v~!}T$gi9}glETQ^6o7tbHP;+r-n>ADSYd8 zYKTZ{myI41*YTr&R)u6e4Y_{Yubd#JN!O1yj_ZeXrx>(*$xJ`#G)cRin5>lGR!NQ> z$B#LrTClj9<>z9d{mjzS0CO z+F$1RF*@S;aapwI#}hD=@Kh_a{9gV%3vZT!hK^ifnSo~PHX6c3L(~Tkrmg_*iJ8%j ziqLKPFpdxRJ{*y7YM)CP!L5BpBEWxRDLRzap`otlxOq%NV`#HDHGEDBA-ZH$L^?pk z#bt(7-vdOs4Z#CMw8$=`1mPzM!b*c4AOmXu5b*#Rb($Dw4X}8dg(ul+PM0_={Bn?u z@(a-*`Q({9QGn!<9`TuaYJ*H24*$VctgPT&LjC#Jz@bfG>76&P;#-%Z(+Cp>w-z$5 zqtV#HsiV=@&yGgpxsn6uY-&x}pxqa+2=iJZLy?T5=-8h*ijMv4C_47Dqv+Vrj-q2f zJBp5crhX&tKNhG($;;7kgiOo|Ng!#EOIwHho^*Q&==Q6mVLh>8RMG9P{!2Vu zG#r{x$dyoW}N;65znKRy{zf?LR}ZkR=h%^%BW=Y z@{UT7D@;5?H>?tUUy9{WbY|{e%}#HtuDe{^H|en4cWuMmH&t=p*B$O#jGS&@4?_Pp zIV{KF#3+|OyDRx%r{Eef#5fC%*pIA^l^%> z_%K69@!|LW4JkaU5Hp63;zMVGBT#%|6q~E#P{rhu>*LcvrPyrcV0{eAzjRZLawtXJ z$7nbh4UUF$gyaxH|4~(5UL(B}XBA<~2y+?>aWM>2QoT3^I?WNPGOVc~k}e7osm9Pp zE=stE{T=(jVEZq0ou7#R(KHCT^c!L%6d6+NdbE+DjnT%qMDREgOtFvI475QR+u&&) zoQ5;igtBmyH5(AAW1z=$Wz~uAVT2U+#MryG;+*a%pxuLMr}U;|GKTE~X`i^QoU_8d-b zH7Ad4$y3G}wJN)ah-g6}U;!&ZM2MIYuo$`u+@>J`D=rbSsYMedsg)!-X9Ig4Eo|;) z$9a)Oh{!g+V=G|&T)B#M(}isb1M(;~fm|m54R|8Fm>_BOMnx(rajYaQzpx>5y^bSP z*`&aSd8M(+9W%!}?l8--p1OA@rbFH5RfyHiRB4w&^@`C}oiH&MnhzN%Mq7=F&~5r& zhP&0>NI2D9ALlCExr@nI=AOxg)9#O*Fp+x=>N_U)s0dKD;oPK&DU=g&7k;p+zM$x~ zh1)BmZQ0Pj!6&UQ6%BcnGC?H>x>iOzVjx#W$BKdKOvgrN0ZTX_)&p%@PySgFVG{&F zu4q-J?jt1B@dUwEWCz$W!wBVJRPQ5Qy$K7!ewD`Uh6KU&#JU~bui_iGS!Iw2NiPLW zS7Y5R5gt4FkNHdaFPe0hke&*!$_GJI|Hd-Bi83gP&X0aBML+76?S|yPXGl&x=s07^ z(PqF8OLzhOIxO3=*>|(q1^HLa?g)Z@Vjo21zaRf(0bxK)rcKTZ|0X%jcv#iDA+a%5 zNQ^K9M-;WSY}*|73s>xZi^7%v1smY(Wz%d!0ig6o`|rzR59~F((PZ_%uuj(|w=wH< zd1~%ZY_o@bOwS_rQ-OUKuE4z$i#)(Ndq|c3u>DUYvU+1a>Siq9)y5oew;-U zHI`vaK)7_Y4Q9i4mPYsC*d+>CCB@%`hPff0`~3Cbi6D)d*sK-_L>ooQd|D9BXyzkg zp{_UpLD=PSZiOD2g8}k?WDl9}`bjQ38Myd2`XFu(#{b!`7j9>X&Bc*VlgmbfQZWB6 z#mErSp4ih=-z*XEf9-R!pC6lTa#=M+9i+d@H}h+LJ{Wh%<$cs3&mriIg(c2u2t{6> zR?snOhih4#`yfh+HMzYxL~uBn*@5(FC-BEAUDQorzE}r?`rnW)dG2D?^hJSx`#(=E znPJ>xiqyJOIa@EatIzohovl+w)Izd{2Q?syEs-h2%jYo zFnRWyh|1#@xcH>4ec8cpm-=rx^;iFGJRA_KtSp+ zzmN&MQFW=@p~fTAlj~RQ^!T;?LWJV8YA!#|1S2F zG!Yd|w&ZZ2ZRk{{kXWu@*5IJKq1JzZrdT3(YfS{2wOXoYi&0Jx6aX=*h!5y#mbM&&nUFX=l$`feG!(8q=IL4v%F?nZa3J+~7^G$~zLXD(K!3oX4nH z6k==+S}~Q-!<;Q22N9%vIy5}Go#|pX+p$O`(Es27=JIb$gKV%Q55KDl zIA(nru)MP??l=Qjsf4ij3{L|B1NW&n!100%Z_$Ur3@=i-{iFtqfL$F%sB}aTicv^e z1b=U@c1Q1qkOzV)=(qF~@5pjw^XD@DKsXc!P3s@9Wh{)!*wV9v#BqbfF}W-o4W*JS zXpgE=g~2=!o&xW|; zz-L*nW1>t{dMUPTK|n=owoG%DqdR|c@Uw)9#&VP+I6(8iYQZfk%{MGq>Ya=ahNFEI zvZ#6F$z*&1dF2+|Z>Y>Z&Z>w;6@n=eE4$SSUVJdHLTnU{EeuNhFdYQ`S^1dxk4 zg(!t7pYYPhm)$ErGa?cADiVQTtzp+s07)-TLjmS;QAr+X<+jfPTg(5gtwL?WL1Glp(qFY9y!Xvp9slh_|<&8mPpqu~{lA(65J%}4hp5vq(2a~q!L8r3wT*M!a?c>=1Ty+^2%Y`D{en48Je;~bRb)Y6|tE!=e zUN5t?t0ehu_FVRy%S6vv=uO2ld(M^Up@BClKlUIY5_;st{%^`BycFH(1juBO2z=#^ zu!=or+sAekF%fz_mRiC#S1M99TVQ=WLPa-}X{zosPjw%N>+C*6jEIi05lz7}5q%BU zUxp})7eSPT5crAG5I=Fm{mEFR7(tYu#6z?l1{e`T@mS4$F*10)pj5PZa%nkrqJ^>p zEW|MuDAIxS!a@@;`)U@Ehyg3&&mxL)?8m_F z8#S<(i-BE-(%k`pFt8Wus97QgH+bqsUlEF+4Gaz|3Jg2wuS+lbLXPq4UK|X0F_uR& zu8U7E<(n3R^QIR}oR)Xv)QOv;p9^liaT=w!b5^v9j-zF=My6wViXbF`FU?pcWPpW3e=*G5xX$r6%Cz?XQ_d09YS5d6#PsrdD8Cu{u? zgWiK6|H~y+hi zXENHRVJV;q{61WeGZJmf=)=Pc-XfYCJo;;c{NbdcR|9)zZeY+P$qnT4|QS9m)^P~*CoNI@UzL1SX z)t@78u$s$lJwkdHdQl%veF*Uh9^(i_a7C_SbRbZK0ol z?!&xo0uF^OZGSjH`zD;IeH3n{Rfav<%y4r}54X_tx|W)LFiF$*wbFFV_UJXqI0h$0 z(~JL`-=7YSYf_qS3=wD>qA)GA=2}w=6kU*`{e6H)Q;KU!%^picjwJs-5NVEC*5%Qz zkt0FmNb(;-q$vtV_f^&?J9+LWd7W zbp{aWl|Y&t?r7J@!}P^}k;^wkh^ey!w<6&YKQ_lR@~B+clq5ijDeDf~Ply&6ap z(IX{SzchaI;Et}8!wqciJ7!L99wB)@Hz7qbqnk1wB1a?qTOys>BGRXiMMl50B4WSi z(duRekZ!8T`QNNjMI2%)ayF5k(o!;)qtSE?Wklw6w9*%%XGIRsKEvBUde{YCTKBV(e*B%ou&O~&s zz{HD%u=bjpP(KtD{}**aH261K{C&FCzV^A#I~f1A_BmesRrV=K>F4QCvb;}<)ffMk z_WAv?)<7SBc14KB9gO1X7*-l*^BB~5*(sXt#Vy<#G;Zk2KQ1ukvaa_To71&i+soJq zn85Q~bMv&k?gitol6U7icfEM`FLWn87m=}MS>(*MsGMTvA2Y?;JAnxnvDxDU#u?ln z>pynwc>kI2i;r~GLYXk_hk9^{CT73PP%a;b@iCu|)A%@pk8|S2Jtm3QhW3MXwa98ymHD`S(bNZQoBunxBM<>@edU+ZRu&ZznHiO~1_*EsRo@lm4rpoR`M*a-jVmPK%y} z7J7+w6Zm`$ezotOEGzO(Su+K+Rs&-W2ps77qa_tD#{YTOtorW^>q48~u7NN)a^E3kXi=F3AuqPv~oqBD7Jsr_4ofJcz>=+$@iKoIz zlcu36;s=8hO_{iy!M}-fI_2G_$bX<2Nq~UjdAjwrV zRc~TWy8qzn%SE+(%xXc!Y?c+%gzxRDjY>mSt(}5$`sGX?Iv8h=G0Vj%!{CA%%;E(7 zoa@54;S~1VN4#37Ict`u-<7v#&BABM2wlp@JU&iD9cQdKzTTpnD>#L{8%53yF5pbq z+)AWrF&mjQCL1|vzU|}SUn*pVoDjpxn36%DY#7{(i_tG8fh!8GNM1WY8#WRz7)|sc zOj=?29)=ft>G0$=6(a+KoOK^~#Plgc0)q~&#D)1Xt!*_!FhK`g_@KW!du!p7$c%+O zTjp6uKZ?<9jF#m$;wO>Cco-%qGTmm&u+gfu5S55`|SL4wR^6BE8jIyn! za+fCj?_fn{VPel0^S&NjBP>f}(yJ`EH+SV=v1jQwR+F9t)tb{04>Lbmq(r z91Vi7*?j?RE0#%A6y&J(=BkhAzE{78ea9+afGRgR4gCbDAexxTIL*%o(fq4L{jt|Y zH9vReQT1174%z)>ldG%2T2d_=T}7$~M5;*E%}ZRMKMaC$0}Wq00afMShY9UO;@#Ay zY!J7^pWS?kfr03nk&$scG1p<~nWtfSRTD-@{oZsWxL^%kbZ@Ht7gjQJNnhcSS4($_ za(@HnQ6pE5Q`M29$Em6@HBRGo?ZoJcIWm&b^o+&nr}-@%(hyx8F>TY-CUFQ?)3LCN zAKM(4V=+qHN|?xD*(#}t1oVjUa8<(5Yld-@9aaJBD1vQw1d_l;`a*3U7Pds>Z%~>I zWGS-+gO@^Oa5i~<0M4qx+2qo=8ylQ07_t<^K@V4wke3L_RBV$v8J;?0vBHiU?IU;- zg0o&HV;Sn5hVMt=T?yWO#oE3WrmCzDlh&I;|l}NRFwF`0mNk!AvDXfJXBRq!=8vuu}qk2jJ$TmoEY#pTXhT29_Cp9bj`X z1?#DBP&W>zUvV#`>Ol8kF4j?b^jh`eg<|I8^I(~?zAIQdU&IPh4nYwr5SD~1kw}8z zQi^L|tg{EA& z=9)9K9BO~c1!zlgM)wAwom`d|X(S{t7GGC>!m6u4E~>6`yhT7pRJ2SLaygq!zC)t< zWj9$t9cl;TunES*Z-PPLACSnsI|S-;ck zSN%=NsQS3oj%970vL2lS`-7|R7IpkGYcYsT*go^)WTGC5yb{l1n$p zmKhg(glpw`Ro!8s@y0n$TmV5{xbxY>iG?B043yJ;O$fMvIMo znEm`MV69pPJ%ob-3W7bTmf~p)78RD`S~b)=YIOCfDlQ~>#?|*>?A4FQj+CQn%~)kFt)LnxAQ+jyV*>FX~?0 z^S6<9;Gqq+kzvebGxt1=LZO$fz~!ZUWOVwA=fh~#a&TnbW<>&CJ1?-RaW7bzmdqFv zr%aqsAT{L*+J!e!*LoLspc(Jt8MdL--i1hd%_txR+s~7HQOp;U)r;VKYbeI(0kf#n zDhuBPOBXUiaN$CJ7?>|u*<3QYnHz{~-tX53wyeU}+S&8T2P;2nR{3$Fz9l$cLptbF z`WwO2)ZHr`!-eFZDM%ZG!Hdh7;G<$S=<^j*@oo-RgJ#k~WYRc<^Y3(?^QvdSj2&CZ zNHt(RtM(<^w*+?ZtS~wlGq8K6pA4qy*A&G7LbKxJa3}VD;@~%QQVR6`77MLz$R+)`xbnQbFaI zZMa|pQe|#q^r~Uu2h{r0jrQTrKe7D^w^FZ194qHg)~bzh+?=>8RJ-MKYU0LaU0E&a&*QW2 z?CWOx8hM|*>`$6G1MJFU88dz9^ZTTTzv4c{nr>L0X??5|ADmnA`)E2oGKTfRng#sx z_0iKct60nIgF@;)EgkXktEC{Ep!He&5dUh|%4@Z{s`q``ZoCQq_NZ3qu6hyMGg*;I z8w5utZrGagiIX>CQtTycHQhXK(v*V2=@YNc(-QOYvNN;K)0)j~t`$EvVal~vb)TLx zwKKrsw`cKr3fn~*=&|JJzI|2}h8rda=bv3vb*1|q}X?zRUKH7l>*$dM=032zgU zNV4?Q#jwmuC%kaNMZyj5#SNOC(Cpg0=~E_7?Iz0EY^wbr8tjJg)2=FxN&+`H{T#U zl-zp~!jwyZ21Tm6A9Nc)p#&U_j2bIQck6Vko7v6GG9;W}o?!AX6L1=! zwIQK{Awdj}Ohdv6x*M`| zH=L%s!Ko>`#$^7-i@ZgiF)g+^ToK+zq`Ay`dH6(YxV1Dq%$gteTK%k4Gu7-1@Bu8= zh-F%=i7Y_9nuuvyRU@h*MjH|a7!pPq5=I&l&eh$Jqr2e@-3@mUX)d!Kp}QeLcS8@| z4gGaDbl2U$8e@B@mJ;KEtz~yTwr7Q?sO90MvYISbl4bcs6`f#Zp_($S*e=S75R1yV z%$g6Q&C%v4fU1#^x*N_lB;*(p+~q$brr0B5ik%Qs>>e@2?ynDv0e3ZY*JanK2>+cm zP2pv^-H%-Z2Yq;X_*`owx=oIChBd-M7cz&NJplay!z|14nqIRXfPI}^Db(_< zPYa)9-DKs5hlPFNHr9A6-^vVUhSS5TR$sfL)E`Tgtm%Ac4-JtQHJENSZ#Az0+yb}^ zPzaa=7-UE&FeHpIBuq3UoM%XwZb%qtNKjpIf+68d-3>SEZn)Zz(9CFNTuG$4%$g6= zbT?e3yFvAJ)wdIMH%MAA((ds&Mo--h9d$RHVMrKZNH|e*&6(EC=r%W*H<>3{)2yD>1azHY=td`6 z53{DZ%=#+xDzl@NXtgohnBxJ%tsd4e%cqDDh8#$dc{=!4H}eETg5+aahKWBxyKPq8 zA(n0{R%>6~3_4xE)sS$FA>kH7LZKmHk|9BLMU6;vnYHSZ?60E%_4=lMo(rbyZWyS$ zL3Jg?NK}_nUFd4v4b5~nxYJyI&<*ybU@9iLM~H=7}JitDD;<<||Xqlo6K%dAVU11pJ^J8Z#Bv|t=D^%Ww`W!98f z)t_Q0GQpHOt#0q3nnRlpRUBG=Xz8K(hl&qPJJjC##@cI5JCuKD*rAUt-=TKaM^@&c z^g}6!v_pFj)*O7z`mI%Su#2_T`i=FXwfSJh!S&YigBMv_%q?asYqK@adfFOlZLqGl z{$cetdz%@6b$}}Xf42fwTeGcM30Pz$SrujloTIL@{$%~Zy1=}^JV>Ou%=!iM1#_-- zxplUAw)v!WtyON8n=`DttcB)6^H%E?>u-jHQw<6KXGmyiwltRm9smphoDX;c@H@c$ zfU^tWQH>h2`A}pxJh?|6!S+z7?3c{kkHeRpk$0#`rXlxaFroJ(Q}XP zhGIPeCXwbcYrbj|1LJi!#17Vc-3^LyNNGFAAnlKa!|?&Pn$fVlok*m)_F2goZpp$M zBU$vT$54EAVe4z_-_}>wJJwEXt@V@jPiwoCS+~dBW9|SPu->-Tm}|`4fX4v)0bc-K z0elF!2e1$D7T|g7QR{B=Zu3s-4(mULgbxe}&zaAes{wBUx)JFD82f%Se>872BmR(!uN)RH_SK8&j8;U68h+FC^IBf84}LX-SDmM zhLeeOI!uaF4GBvO3CX$}UNdKxI}luCPTvehJ*`sH@u{~;bB9< zpA8AC^ayx}G$*F`>eCnq>24_1-Ef2MhEH@ibk*H(obHAi-3?djZg@|3Ly>L+k)DA$ zDD`5a?uLtXHw1Mztkm7`uI`4#x*ML+-7rOW!#3Rwf7IPDP9LX#LZrQ|HH{AnUe(?3 zknV=tbT>SuyWv6I4RvOnc@S{OknpAMhQI1=sMXz|L+-^ z9#4Ld(u0&8r1a1*qbIAs*CLbm9U^=0WX-bDteKW#^At=emX3yCT60hdrX8)TtTtf! z=UP-mMnX_M!#u+r0XWeXOB0})yg{UkFw3As(`b``5=SYb!g6As9%BkqVyV<)POvR< zS+|=27XB*~`)(rL2{StsbACdZcUXV54p?if-Jq}A zt;ekW))&?*)`!+T);{Yk(9v4!PU}C`bJhpeYU@VCC*35uyxZDkq1=9aA|7BhR2mwj~n*bLAZUDRw_yq7U;3Ys;z@Gsh1KI&T0vu=6SXY`?n(qOM z02=`p1A>5e4GAmFmF8l=Gk__8*8sl-Y%?TmH6(N~yO^y2zcD2I(U9<>Az=uSE{1Q* z7DK`~>_xB{@TwtUo+06BL&8u)!UjXa^@fCh7!n>bA2O2wy$uQL4GFgy5}q<7{K=3& zv6GVGI_@|$5uxWbU|cSAy3qph)@NN2zihYtZ878w#M4G9++5>^-zt}`TDU`Y6b zA>jqx4G$U;<{A>tHY8kbNcfxXh9?aPj`*wpp9_{75|$F_Djjc-!Vp73xglYO zA>l4V!uf`TCv-RbPItrox*N{Y-SD{XhEsGmEYsc4!f0V^C(|tFHIyZg7kJC+qWL zAXj%oiS7os>U>#@>RhO2$ADjtz$(`Cb|B4HZXJ74jE+4hM#nCQ5z{?UV!9OA$LMZw z>*Nz%#vhu3VzqR)`DdV`r9Vof=fVR{*>~I~$Z0Vq#>5!0KVJ{Wz}LDP>U1~!TX(}D z-3{;PZaApBVW+-RUqGaLz+I0I3fz*xm-^Zm_^0lMJ-Qp7*WKV2a+7WQbw#*wb3_;x zD%!8Vg&C5%|1emvrCEZfJexH@I%1)SmN00Y@YM~6CPM2(3hfh?R>x_h6O?U&^CFE* zpDA<1*XGv{o9fJe0}cV+0Z@oq3-}4}S3|-9^MIq_?1M&gk0IesLjv`gSwy-N{#Sgs z(S{!l2}*O3ddd&RrMerw*WK`)?uNa(8~PX$WL0F=x%HECV$_agJ-#^hi8Y5vXSao` zj4;9E3*(FLP%GQ;(%aGwwY4g&y$8v%yISq6Z59nMTdWK4?leX*23wa|w0ArnWjEPKq(eZOCKMV@mI7!XSpXPo8%byrAt<}ZEttY+ z4mjD6aIYa@zB%8_1(X0dy^#&@186Vl1ej$=P_~maL&8i$La`yiV|s*LMVT?w)W<~F zS!f#(J0H!*-tfx4p$sQ9n$S+I>=Aun=|q0Zulqco;%H*W-Z_g ztJ?a?knpAXrLc9ZF(kZgNZ4*}7xs?l4GC`<5}t!y;{yO?aUq8rZwR1FO&R+4wiVzN z{S|#TkzUwd)A*p^QQZxz4GC`=67Du6DEo-AizqvYvVWAt*fXS&Vyf|(?uI408~$QQ zSY=4~)R3Ue6Fdgi^rdT>+e&eX9x^198WJ|?Zg5*IE{riI+@LG_hO%G0WJpkUjE{6T zxOMn<^_7N%XAB9^I{EWNdJmB1OQjiXHYB*M6vxF_DQaS@6j#PrDc)073g_xJPHc=Z zPFx&goCwAk9~L{thWCl|q7Is-tPij0ZuqV424!YYSGTd@RUI3LyWnZv4Q^w^L;BDd z_=oNWx3S_j{R+SiBAs&@d^E+Q{0-=CSfsn*54s!NR*nbtxiR3DO!nwIVnEt8!dC1Q zh>%Sz4F=9Sm^cr?#CcGdIL8s`y+E2g|F6`(Vbv5opIW#1AM-{4we36rHSJi9T4~bM zpxbjo1NIY&HcGfrb1tzG4P_cB&%~P?QJk4Z17#`U6v*;}OAk)B+7Rg_r-O|jl(Tv? zp14gX;0spl!sN>}lf6?qTg9_9T!Jx|Fo|CXvqdV#Ts8 zu6$*F1**FfRQ5~rp8#cNRyO9h&9^~mx0}xcqV3GIFFy((y;d}LwQWzn8#d=%fJXq; zfOvM1GP6wBL1>Dg`QS4{!c=prw1GrfZF7nA_duG&JC-ieNJ7G{=wm%HXq#_oFQF~u zLPNq0h6F|SJ~1RTME*WDB(yUmd}K(t(va|;A)&~Sz~ctYrDwqF!H{sVAt7i;Q1nt6 zToxM=6#blHNO;YV@LNNIGQe~(Bq&2nLk1Yf?qZA+(2(8bA>$$AP9izX z#Z)=jHs5fYYhH*UeslFBHrUwnm5yCTe?WhiNSB|fX%FB*LAmY*Ww>z+Hu_yIIA3>z z+kEpxjQQqwG3J~5W6U>a#h7m%k1^LQlgwpUCrxvkXC}v(XXfa)#=ziTXs~gcXU4{u zXJ*HkXF9vAGFw^G2Z1zAHOerfu5Rq{O;d&%_XKaJmG@7V@Ak4iqXSNxS%%p z)LmXs*L>esGYQ8)NrT(j&eQV`Eb;!ms>?Q9L3coVN=;72SaHZ8H&R~Val zd+g9=S|Xkk&|r+qCAQ%(oAkf^citm|v=Fv%*SSHJ!40a+5M1jl?oy?PCUfT^Y*m%W zt*V-Zim`JM_p53in$OKv=rkKz3jd(c)9?>kx}vkJ3RI)rjl>mQNL}!@LR^&X3 zs*3$nRbbcwYVAJzHUF?~QT(w{`N#gtKdjyme<~jPKL1pF_J97V@96KsKP(Cof9iYt zG3vq&lmzFTRIT$P6Sa`VYQct1$8j&GCtCt6R^ZkHWVE-+Hx7tslOcp)Ju~(++AE zLamWsBqH{4t=qKAMlmDBlewLxb<=ulx!PFmI;|LAuF*czQuQG)X-9J7_bIL0v^}j; z*PcBqWNudxX{(E7XFE!}S$jaM(DrH>m^HSuO+>aSsi*XdlWm696UdIxCTVvd({=c+ z6Ew{Vy`vGyR+h0{$FA8qqb7ksMHli8?Ro7BEgRN}w)Pi^9@NMwr=3MdnMA~G?Nldo z8m8sLl}M~dSq`L2wWqaBsMoew7+$Jx)>|NvMDfR}V$G&^?AoJu&iOr6wmnft`9St* zZ6}IYD!xEtpeb4$*ZP$7voKBFK(;q)bJ2?H-~iYL8tgpeMwFv+Yu)A)$i)8o40+%q(&U0T_qY3Uh_mGRPlT#swQwUP;|Zfk>rD;Vk@TMx;)> zs&L$DrmpKySFyGcE{?hZ$0Ng({|qxRAt50#p_$ndWUyH?u$06^v*n7uB(qcLw#6&l zy6op}_A{<RiPkmejm?Vsa9;Kg0XP=1Gakc#juaVp8+O#MX)<$Rfo1Eyl~}|Mx%gTa6U| z1a9z{O0s_JI9?8R-**L(Vm2@D3X7b+}o`)b|kPq#Q*Jr1r zwZ6>9S_R@W_i$$};GVTL>-8N8ix4&Kk!&q=Dz`xEz%9^ll-;SJ3_j-YX9(Y2%6BvP zcn2T-e0&CXy;iib{Sc+II&=~z#D;{ztZYg{Sdac z3C}!`oQ}0+)jO(y)`#K@W9)E}z6LSjGQT6IZF<$F>Rmf4s}EG~s``e{JHN%2ayaR! zdNIG3zc`huaQ#|(hOU9lMSGcE&o8lOWo_M&kcsP#gr(w_B7sCq?j0DcfJ=4;VxIX( zXK`HIsiD)_7;Qrr()Ar17yO1IV!Kd)6>txK?#IvhDeNjP&ky0iEMAx z3F%kYVRI1{)h@Ami-Tj|f=_!?NY$HF-&comrs>;()vot%RsDeXZ|*!G3%k+qzh?N? z8~#e8dT}YUxbJ&p7o5fWz${r0Ik@-lKO=eeWK_$Js+Zg2c_R)&Wxrd~A3tj;kK#>R z*3${jW_aycEJ$tbLpSpWf^hrL9sGgl*51c{{W?l0YLkrwOj%T?#H`Wn=Pt!B`ea-9 z+>6!@qY4^`RvmWgCGu@Gw|q&%*RGFzNENlY#Qiq%6*d8wwH(M)hwWChu_}3_yB0c` z#|aA0C35utZv=&;Cb6iqyLkB3z*mTRuU7O zqg#iwkL%E4|J?aK&Z~WU=lAT4C^*}OErfPLYoRO#&LCdAoyaYImz6W?S=7&B4zQ1yCsI5J@T2bvfCdq>qOe2blmRPSDi zryU8bnTe#@aKke~z1WC-_%nb%IFGM=XgGgxP-S~@+AVdR^w1JUew;ttU2<<}Wcx$g zd0G2%MQg{$S(9GLS(?Uu%1#4|kHxm?+v;%DPr%r}&X9xLf8c~djBtT7%ef<=!ojyG zUpM2|0uqMd!|L#kgt7KD-@Z<^uhZ-+tC8_$h${}^#yl{qs2IPmKGIJMwQFN^2=!p8 z&*u-g)@h*|cqe+s?Yx`KpECY%)Q2A7&r@xT(?ieUE(HY8cF@*@%eE#RyR}O>WVWGR z&?~oPy)Ft}{kF`%`c3=#di8J6ue9plc*HM$a4L25yB!Hn#E*x50olFM0W0HL!e`_Ex0kD|G>$G>sXh94X{=d<|5s3tdrz6hBtIl8{>=+Hpe_8 zbOwLUZew%|;WW^W>`xte=(-Uaz@LlwGn_y7u|JV1yvNzq;cU4z{Fs{S@Z$RO{#qfF?zpw864g;$%$B>|IZ`fD$EZ+L}rxZOYit>8a zk2pcD7^!MyBedX$fu923x@&_xWP7Xmh_EAJIevFBE{GvoVQ-%<+|OE!nRJ#1Qq2hz zXj0iLP9z&>6I#T8NAXks1X$oUGP!f0bRz`_y?gs)RqPn&O#w3o7x&D5{f;g_R_e(m zPopZ_MVDw~5{(>hia=sVTkj6bTU{aB0rl`Yf;`*bn7OVP(fXsyEG{OaLluZCsz6-D zum2|_xpXLk`|_w=o@sai9>m@$EGt-P{u&={0v|kyznj72LOodskcCr27qd*0D7fL& z+O*Iu6x@m^%$0-teY+wNdYJL%RZW6J?@Ca14(7A1lE}_9F6B&4y(4TPkHTPYrMTvmpx~{>Btk>u9RBYDm!G3|X{$h1k(g zM8jZ20r+JaFef(ty3E3IbQh-G7h%NJ3!24e|NeyJ(kn<$enjk*c!SF>Ttq2X@L6tY z45S#!GM0Fs#oebYOV2h&*FzjB17U?^A1v|O70ER44P&ApRQ$5Gq99CB6ok>7g7`#1 z-a>1Lf-Dr#{Oec{e#yNO`5{$+aukzk4@4LdO0n_v*ICJ>zY_%kJy?y9B>YEU1up2> zd;@&=1OfM(3}O#Wx9fLo3AH`VJPP~Yq9~$*1K8NwQ~b`b;13VJcq88si?z2;vtlWkkd; z#S>ogYjk5q#%KCE)Wmj%EEJnNXNB=*wKpB1f8}O`tx+KE&3{fcnO8Y#0P!gipb6{* z#n&suOEkz5@vXj3uM_mS`IedMXf?4r)!xEd|Hc#)ks0{>VPD~k$e1OOZA0YPHsZ~J zPRX+`M*X9%S&~8cjD;Nr{P^q-qoWyYAIddVc!Ns~E+{0QuoHWY@flkMmWXo>5dRTS zYd~|}Wn8&!C+lm8ce8x)mi%}VFDt}Ll(Gg-SzFB#@r)zG840BnX;j<8CPnnN-eBCl zP(pmmP&sUvG<%eIQ`f2RF_gCk@A{!M#4^=J+J6A0;ZDrZ>hrMwyDb5{P5dth{#6_k zm^_K-P?`8TA`gu7dTPh)4~Jg@5?bxU2b?|XsK@*Fq~etNPS|uY<7G^#gv-`w7~_)Q zjvRx{j>GRk1WD^J)Tz5x!uIRO&f-7aR`l^k%L}8bkXYK{8Yu93@ZZY%5?g6{g1x=h zzdhBa+xH<@gWVu&>!jely!Wqb_7r!8YfjMt{pi%tlVFSwlhQtma%_Ys16z|8*j#y_ z{eOzQDZYSzt`{}`fY>K;bMifRG7&0BR~w!#9URC^0v{hKWTuF?7Hd+)?9 zBJJyKdEY(nn(^086~;qsdQS~gJGGHW=@=DS>-rIf@qJqT_i{J>Ow^qAe%#IG(Lcr| zqX}}-h3&?_XDF&HA8md$cB?JGK?%2m)U2`ay}c_b8nV-xVR-)T$?N^!U&OxnvA!-i z#2P*_Fv^=tny3W^uq#~PUp^G;f9A}?8}t!h@MUg?9`sqAHwN|v#6xAwHsk)6nWC0F z`#9tp6yFCIaKGv;yXG46#IslLK@xKgrY3hO@b!Kx~F}*+_vnum9Cb3qn`0OK86<(o zJxBueSFcNQI>~j-M+UwM46q`d#`9Y;r{ueMSVi1sZmd0{_warvxImmQ@VO_j5AVU@ z?3&mdkOBKlZunb%COS*`dH6YvwDA=bLDr9~8JM=SQ9Sh8&A9EYHauS!7&8`So1zsY zGT|{}S!2Q6l;KXvg4k(yVAAYxp&7U%DYhVU{gcJOAc7#g0#9}7K~}{)5n6UfQsus8 zc81*Z_&ru))TZ-J#~%yY$ZcCQyHoJI0fyAZ>L@6>H2eIzz!urRu?MiMtiUEHaCVZOBFWIU)(o=yOoXYq`^;19DV^aj8RY#$# z2|^HfKR7sP+h>9QRDSJ|oI{W@QH!lv-*>^)Gw4f#Vqy>F+CpT$ae#;ITDuaWuG}Kt zE`$GokzA4rwc7u(=mrI2{CA`ng@gTfq-urzSAwc*FJaJV5GHdwSC*w}`hiKo`zUqk zn`VB@&BpbLEeEhK_L%HR!D7lw*i9F53r*%*zC89xc`@gs(fO;{Y_?HV>1DmHoSm&)Pt$HqCn z-I6Xw-;s9NPk{Eeny7XQY_Shv_{f6Az#h5p*hqZsar&ewn^JKyN`6XOlBqR?v_^y@ zikU)EsxjqQ4OIF!+EfL#p`=i@>0 z;F9dJA-Z1K*T28b9j7?W%f15g0YMI}OuY$xffv%YEV_-$AMp6&U;0T0V zo&!N7S6KD1)AtOdJe8`Fmt98m8yLoQZXT-l!J3}$p2W;COj1b}4w&dPFULxeBQ3}4 z_1~U?gN62BAn2Q}-`9GLpmDdSYRM%O_SSgt6PzU~e;#>!r0>lVVxU1R|rE-2y$`X9U` zdG^idjcb|%x3h6B1LygU3 z3Am7m3k2N2Dw_~6Kul5+Y;0o)2GnJV)z)f#f-QYm?bp`YTC27R?}u6tA2S9KH6Q_0 ze1b3b|NEVpO*Vkmw)Fq~zyH_3-kG^`?z!ild(OG%o_l9zNf)9`aI62X%EGamaS{ik zcR==7aJl7hU$v|ToSuii>T6$5Y8`4x@jplHag+#?`!7oMpT)wxPHPeS)HH7GZ*Z0^1`l)Xq-{I4Jewx1fz|>M zciV3$-oHLmVqyOhVZL||VZMKjFg7h6qs6?o6EH&hVW2|39&~N(io05w1E3PfW=Xu#-QJ}}BwAjv;}bH)v7pxSDcrZ$0RoFqoB_ACr2S1- z%kF-$SK4={LE#R-yoKp{AQpgnOSaP2x{y0>uzl>jAJdSZI24W8*{{6{A5#KYgmc%E zNkF47j5Xi3rTs>&Q>}kM9sh6#^|mmPV~#nIFE-}%SeRxi=p!JyYYtU5=(3p9^#QzC zL^g{-yRD^xqk2C8Agoc`br`qQZ_qe!3&?_&%pJ}z(6UiJMgm`xy7>c$d8iO+*y#=Ki)6^!4u zVnr?2z&~630>I{t(}tigYtc6egwKEA#9d&kN1+BB8}a4aW;3e_v41MkqxdEHlWt~V zv0w!dc^Ds2s;sxoVGpfBgW{7i1Z(@N z>GrLt=0+5Ok`e)gYjC<;HS=mg1Qj&I2SG_2PzCei6CDihQRhp1m7t-4%cNj&CvLXR zb>P!Vo8X9L;)AAUEXNFZoLAyyrqeJ34Ur*o-unjG*Jw`*1ceBtUGWXA3B=KPg zv8@``wQaAJi{<%c%r`q=Y5({jQ3~b-5QVGaAg}>c58Ku{)p0*^o7Li=3mc6V;oN5I z#P_NijWc4;+uO|64^<*FWExm-Eg*YXpcY@n>;DTa@1m?=jVV(CkXL^h>#b%NADb6o z0trq^p~+NhPW&-Gt}Z3w_eb;S3%*;4IH+nVU{SB;idtH$=C@!dKx6K zmLhvwpyeZMIPl_b0#19^Nf_W!-aTs5!hyr~VljgQ3_fPwbq)evv8RS@I+yDl7;%v4 z$)MVvHw+$x8+Wnur`VT=pN3zK#RQB!xv=jTk?2SK4kOYNX}CnTi$hX;DK6LxPW&9P zEMNQwl2Pm{L?wP1;DR{IwnP!K{vZIL+}Sb;mH3KrN3wd2F>nUO`%sHd=jej?420lz zmPC|tID;M+a41Ie|CUDYpm%vo7KT`i%4mJ~=+=i*TYth4txvWU>?($(2#!Oeq36Z+=V6SOyvBj2 z%9lL`0}r*)0Ts#SoN5_&zgh#&xj-ovTixU(JHE*1@>?J~i{2$ZG?~e#Tyu)Z{n5iw z{$Cz+h}^QH$w7x%M-Mt{kSl{u7{<$L!hD>rYsAyoCuQ^A;>eB0-A^zE#+Gz z+MKI^i!dATYfUZ|!mJF$NCVK^9{ZA)v@fRFU~s+ImkXovCse~xeMuBF9AQ)tDNph> zjJ6T9$E+;vafUT^qA9aCac6-k#vq^qr@17n#23vbud(46ZN6~nGHIy{OfoF30%{CP zOS;tJvq(o3wta8_aAhrdrfKB;xC}VWz#$&hvNsr^snDlyIMUr=)VgULM z;A8;$5L5q0IW$1HocK9nE*}oA_)^#pTl@!1yC!fj+6!EJa7FEVE`xm}+URhRvl_MMJlTU++gV~TWDAc}6Pe%IxuWS1;? zqkbegV>a>D*j`jCZLIgC8VTc!qONQdG4uBAkDb?bcK2o1yC$;m-$i!YJ*V0_&!@;^ zR+Y)ezB4(s%Iv%!$pdWC2WXP`#Tu(z*IkEH`6w=hxCKt|yz4sf6xw2Sn0@20P0X!A z?yzl;++1w;{Udl`e#aAH0gb+igQY1Re*nwJC8xqJ@F&=Pv2W`K)^~H^t^=JExK6=` zkhQTzYc>Fjxut27c$;pJ|8;shKh2gdI9C6$qaejoQoD*`+;uCPLHFXME`EX6q@s%g zgOEZYf(w3i-8}$|JA9T7Xqe99o&!fej!qo2aCG6AO(^&rqxPtq9$=vopL5g}b<@vr zuBpX5%rhs|x#{L!#rLTUlkhM}eDQU%$;;HUSReRN(wX70YdvGZcjcU{el>%d1_*QECZ=gm0( zf;fjz0kANY$;W^)JFjGd$GtMSn=eymqkerp2jJNAMO|kBd#{>LMn;PGZ)fe@Zgf)o z*C7{!K4K$1!jj$1!%5lcR;Mn$SvKQc1b%<83J*#=gmR{wPkaApIfqC!Lg(+sEmJ;Y zPt(J0TtnlQP7lI`28^P+85s%AJOn1SB;4wz)!%y+6&E|qr`)f&%I~ihLs->Chc02m7v)0hw$9zSi%w^osIC!8QxuTLk~I(k0nEKiJ2Dy zyH;ocN)nETeJvlStM5lJP`5g!!zM(aA&UXpns*u+awE>{e{0P-rR8InYURU(Xe$ZK zA@hgeWep&MK<5TLux%*&ATHvzmP7s2lG6a*V%|>2Gl^qI?^^{zLddmsRY92e;1p~U zYr`bEWDI6kVF%m?W^i`3Y$kv(l7(O+$wjNh@o;v_$Ai`PY0O(4r==rqJ!0eRIQAGj zRV#N3$95n%A7O<5W$dvgK_i}t_g#9~dFRt#TLq#?-r~Q45ZYsG?*l6sM99PE+-bj~ zxNfx0E8+HhE4BgNP9=bGh@z3rz!~?$V&@_w7mr6W-He5V@qAz`{E6}7Pn?Y1EPRn| zY+2_ReKDwOT(oEn#l_qm(}s#dU3b6$9fJtWx)+;aB~Wq-4Pz~ynH}+reb4OprG-nU zM&o$zurLa6%YYMexSM{$!DEAAW{_ADMJm17pfp?P%_hCB@h$D?r1(AK$M2aG^LaeI zSFd%Q2E5=%iPiNK5-ik2(B&gAWlp41O8smB#bhXGI0odKvEWaJ3lImf13-Lw%N!@g(iTf3ICB1=Z@ z!Fg{P8EnbO%ZM37+Fwtz??`_K^Op2I-pL3ywH=B!ePEg`)`7W(Z z12DFH*JG=nD-Y0toXpq@Ep5Ri&(w#-Ew(y7?~_=T&wy{{*G~XT9H7F% zkDoJ4b4KSac+7pkBe!BF{J?SelKqvl>Sxr=shBlm4xaRjA|`D6Qg`;uvZ`4#W|z&Z zubE#rV}uubLq6-~`ORM39L$mxv%bBcth#>AcW2G0E4!+;YF6kh+;Z_2o^q<6HGfu3 zHjJ=s0CNafRyC)rZVUKn`#Qbyv%iUlMf>mQBGu5A>7VE)pe=g;mVMl}Gyzk%9qpL) zLGhP-aBcggEp2}6l>H@kjhm}slXAxIYqbUr351cGi}wEs=+W65crYIY!E)3VUfn8B zc)+>Qab;*(x|VI=KlC))K&%bK1d-v0BdBs zh9NyX4|)z?-E>apgGh4NAI%q{3@Y*%no~#Z8ha(|GEjl8Ihja?(+E4*Ff9)(VQ#YZ zSyo#~7#q%J0RbR0c|^-R%#_=b1EO8L10tnGa$92#NI+eB)Xf5b>1im)@`ID{Ts`U> zOcxOk2>Mo%{NZ`f35-zPuz0irq7^}tBEAaqOs~M%Q+lDKJjW^-@}dG0F`fiuCLk-p z0m;G%dPTZMkFxtrhT|v<-URq6;Z`mlRkU4Q8HRfg(?WgsLC1 zANumSb3BRs<<7ZC_$?Uwi)aX{st_yI)Jni_t0U; zp~dk^td9?or?DHZzX;S9`Y3H=<@s<5p}|X007FrV;4*?UOPzDf6H#i4T@Yetbs=O?^Xbt- zW8-P;hU=)+arVW%P=_EL$dTUyzeU2$&PGXU4{6p{nq5s9>UVX_I^VuX3!ycbSNM_V0aGID^6grPS*JW^P~WEm-}0EJH( z(|tyuGD#x2M3O=4beaGmf4rBh5Xm0v-LY1B){nN{VS|b52J(TW4r8ou$131wGw*1| z?KE}`B5y-GzscmgNQOx8mTd{tibF($!2;9$Mxa99WNdutMPoWFi#{F$6*x-FVZf9a zV>5TG(dC6ltiBn6M}0ggiC{j!G+SuP)5l^k#bp*q?8AC!Vx1t1s=zse6WDNWOwTd` z(PWJotT96$n}Je-ISY_3V{DeRD0eo85#rSSa&o%;) zBvucxdi1d#z+#@LkLOIlZH&zptU1Ji7tMjjM#13*4rWfzF#_Qv4mWYQ^|5Zi3J&Uu z#~7OMd>O{r zT){^xa)%90q;VaUOz>p@AM>Z@8G%reEGN-8^|4NX3z|Hj$u!312^x069nFG<3MgnY zfrk0hH6u`*MB^YDhd$N;Z~~6kfW~W#)po4Py=5?bQP@_6{4Q)3}cMB=vYv5A&x(8G}|mr=gk?^uER^`uIY9Y#}N`nMG^p4DwN3c!n+e zt1wS$giqLvOgMvVzBSE;Pe|WY6a14`<)#wExr2e3bF&eLxEnc2iZ=`_GIo@B^Xfv_o1S=3c7{XOsUW*)H{KTASFo2 z50g`ld~1+6iy_0aI_Ds1rd73%0U~mqyoB#yjP;`)UTy-FRBw0%lznyz@qvGUhWZuu zz)_Y6$4LQsHkREj?Vxh&K`&|2E7(RTncO3GY6nXBq*SIpHjiMq5WUga5ZVJ&l_7=L z9=kYo|n3)r=%fUedR1TV? zVNW5bN3IXKEUO{c8?U24YCUp>o6&e3#mtM-3>>3?L(`E)Q9o*zc2TTy#4dY9*t~zF z7+pm%!aG&Y9zrpiF&4y(1pb^IPXbv4MKXYfM=wxeXM`>W(W=1mvvzEv*9|b-)C@X} z8E~0AKJl9}q?bs320YAm@iIvOw8L^bHW}00m~!lRO2^z-D2IOtR9=jVP@-uLjCT;c zMYzDT5zu5jc!icuCNsEWy5NY>F8bX|-#b5Nq(VsI6~Y?IbUQ88x_bf1x;QRY0t z^kPA-zDVpBg^T<%bpxJLv0Re(yoF%_2#^}n;F)Gvcj4t4r*djnEIme!Pza|v>AW(J zOpGwcB?6@ZfS49hFrVX4_5>*>%UQEXt0_?$noY5W81NR)DO8I@YOPG3Q?3??p%<}T zAAn^*r;aa-jo0Giwb=N)`1rio_}uvT+}QY>`1qXI`0RKQceUV?baInt5Sc6zj2D@DkNJvKuu!;| zi>pGkhuArXF@@C(CMM7GWDv=Ql$rGhbs0@jG6?#TGWe7!gN3-62U+3GC&6pKn4%!$ z$f5*BsomI|MY(}fcXsC_DgYK=&e}~a9x@IbWHnFeoAEQfVywOGc$JcfIez928e>0* zp9a%FxkOEVqI@k`!i~>*igJm>a4BojWuY5ASpJcVX8x6WG9d{sKJ zgNP(Y5nW`2u!`?Kaw1Mw7{i;n-eC?_nEN<=2&=D(rS1I&xPW#0^oUE2r{xeLc!#JS7+?^O%R;6fLCzdpyJCEQhlWUBC9VoD z4CJVmrEn@PtMnqBIvJUvpU?@#n%$ZAJnXdffkQOneA|8O0dEoBsj>%%@umk4P~=RK zQd2-l?nIQ#ZCUROEm}u^e$i^CN!UeeB@dEg9W@@YB2dV88Rj?_75cK6vv2W~N*qi& zszPv!nsJ3?1@7UnC2syL2td`XV;muYYaJU5wT=#QS9=wrldab}lVwaQ4r3a+GHpoO z*EtRS%F6S2hKJ_PWc2JSFL8IxQ^07_+Ks(yGs4Pq+DMOtI`Mc1Hh)>CsL2BcdU0gO zXXD(5b1t!G;5;{lv2_iX;f^;1rXrGy)5b~Nb%0|&ax621d%2UqH!?AsKoe6L*j=ET zgI>}VqIR6dhI|%I=c@?wWtn~{t6y!GMH;Hy@QaC34~fn(H$1)T|W zrya{IE$bco*0ih%N_f;PX1)y7(xFBB-=oiZx6cXhN?ucRfY&Y0qARf8(Iyw$aglh~ zV>>!zY`d4DIQ$X;-Y>uoG!33KO9H_L99llYLreF7QsBpuzj;G|f9M9V-2NqQ$6GwS z+?j@Fb{G5j5-2lg=oVbAAtLMLB)7JiE4vT+h^4jGJ_W)__z>f{I8K7|&g+S-@P*jM|zx)d*7C+S#lZ(X9H3Kuwk`T0=$& z8(SWidK2~T^?0fRxlmR-V~swuu90Qy8i#AFEt!Pizy@?xATyrlyKM4^H!NzLScTh; zTT4D@`VpvgqNzGATg~@M;U?D_k;w+cTh>&|#ZI}{U|wvI3%<5x0Gow?$T!r(BR(@$ z{~2+5o6J;hn1EUy77F55j>4_J}3=IcI4vQQ5HqXo6r>C%H&B(HC8wBmY27zYWh$$EVyL|psdUsl9tQ& z9FF2ki*r{#fU|e$qg`+*q-Ko}a~BK=h#}cnPArK0E$Hb{nOYoj4Jk=W+SN{@yDlpVgNmY!A?wypBdrC5wD09Ev~gqoiJz zl=hxBuVC}6#*WE}*Q22a)b$S_H&*D$L**h?rf@G>M;5mvut$#TC`m>n=1s{NH0lM_ z`csyA=VEZgNYk}XTGnw%X5TA7Php-E>K2S-XL`CaxmftH+`j}SbLGiH(!RM8-t>h} z@KK&#>p`}Bx~V@3pf(o-tqdFxKiI&!Y8Y^&;#>01}>F z_^=St*bZ$GIv$t9hz}O6-1({hbn zw4Nne4i9SF)?!+hh}93cq+N;d?RC_F2rMQ04-~LPYT4D;2ls1QmHtE0E}DLy-)4Us zEkJ`0;C6~hoNV6{Ld6@TV%NUg6Stg#QP7Gbqb>d6uVLBnq(Rn)8IqsJFu&$eWm{}pVQYgy&%ie>Znkf?UyzoIFPrD# zgKt_IUXPDI`ObwuJ69{7CLhSd%eidX_|8QYKFOiunmgaQw`x+UU zK0uyoTmHy-__h(h`Z8nYh{M~CvcKC^00`N%r=jVI##s3Q$l@al#B_NeD99_wmEe`?@Y5VxUmn) zUTXi@ZTP6s=u0O|E_nfW@2^C~{nPE*ZB85BsEpk6f68p~?}T*wPYFDOmF!|JGHoZO z+kbwi)7CGMmPk)HCf=E5>wCq+E?fUO)pM|RJ!@8lji1rQIKnRq@NM~s+QidhSO9nV z+IJ2Z!MAR0Zr?L-#OjzH+kw~7j93@Lj@SdSOkew+{;?b%CSc9^fae_EoDZ6>=|8_^ zjf0boW}=oi4Rd8awyR}-1TWUVkGXKnisNH4E@B6%>o@ePMi0v|m&ZpNnnlI%=c*Oo2ymVX5#~XKNG+?#8a?b4fk>}frIAwVd z_zvzsMJ4GAJQ!53zY(=uczMQx{@oP7G8LOM0n!7idu2p0jfx->v%%o@uSbC{UWiS> z;19hGoZ{%h(TSrQM;DIts@*u!i}v7{iDL$iUK}%lkH|8U(_+jd8Ad^tcgHKZ>72y% zCcJ#szVaM=hG`{U4QjnWn(tMX&YF%k06xQ<$>N3os20~AUDhsS_1|r-Mxj#wj&@Y* z1B~_Q1LS2%9s@%D?E}1Ko3bS@3wc@QTlfK&BYBJ}WN#mkZNlYB9s}w*=F6!8mnV4) ziszc|e@C7sc??zLz0P+=_hn}dVR9A|zFJv6o6va$&*n3^p2?j^9(ZH~?B7v63Ic2= zSI)VzvbLZiCamB#j*#N?|;R#xDHTA$uB6fH}>=+HDDGhi#RSA-fF1(~*k_f^|?#9!NAkrcpu z;TH|y<3#w`Y_}Y|^^8Xs?E35DT{q{aUpu(%^7L1(_{xxxZFl_kxx2r$a&+6JL*0XK zx@TNl-dD5y@BMmA+pqGQPM$gX8*LN2o}K*rcQV^-HccZQ&wpL~XrJiZg4gdmfeSb` z+fSA~|AWUL83g;CVjp

    f>)dZOsF13L9u<)-IS`Rd!|Fd1ZB1MQ$95%1$q-oaLP` ztNuIKS>r9JtDAKd*fZaI{&^!VI4^tTySL$mC60=+`ZBSmj`~>*^`>#9J#GGRKieD( zIqCLyc(&5!=wlx*M(^fR@VT7in6-Jr1fK6xRZQ4jzFoOTx19E{1dnhvswKlHq|8?GI7>7Ho*~_ z>O9zvB98it6b^0NzBHW^ouVx zCZ&8(qPDue&i2QiQ3>lzZbYfP*qK19>&Fn4#R!98*9#hr45PrI7c_7Oja@HmjGxYW z^%IS7BX5*7=!k2E8;k;{UQlm@okoF6FR0}n9ORVM>qXdmQ_sw@TD{0+glmlgw_Z?X zgxyAgM=z-4#u?<4Rp|(thO3xaR;d?xjBuqG^nwsK{UE2TL`Up5T*Az$XK9(|m{n1;Pr*zS}gL3J1RgiUiXCz_*=a~jjI zd ov-NR^NoE_|OqC^}RBRLTOQ_zhN3-;CZi%3J^r&AS=aI;626s9!UYg1MT8Qo< zs2}xxNT%b{3wGH7*B9ELkIO*7lweV>J}y(jsn~4RXiU=#tx(q*jA@02)`-nrB)rkk z8nA0c2yZa7psv*$(}IRptZTK#H0;Qz*P}rpyx!1i^=PpWUTbI}U8^#tg$%7k*D8%^ zC5Bd|M?*q*m7!JY(GnrN($K=XR$)vF8(KuyqQqC*>Z}3aJes>I;!| z@ub{Mq9M}(uO7&w*ahVfeJm)K)nhy z=;alHvcbUC4D4Qjat7-4@=8HjZv?9JKrOWw8z{=FfKuN2LeVvBacjc|R6l+ScE(}r zsWT4pPKBFG5vNPwL@WaR;S$-01Up35om~Br8%~j82%1}j&W#mxN~i35G}oS@9wNvv z5bCG2dwBvO2V9n+`9$y`us#Yq;QWS`O^u^^Bgu5^+p$L|G>?IPQNoI?7jR)pCB-}{ z;#oyF2zP}@e1*tyCE+0CwW49ri$* z!CY>UG(y}S!!4-Xw7HQ0+z=_(l5k0fnLq~(f!+1;1lj-$@|p!~Dzs0ds1L!4pC}6y zBuf+|iweS;LfE_Im#l12o^0reUY=vpmP7TT?&XT^(OJfNH+aW=okl2+^kE@Mws{hW zn>^)O5-un)6DXlvFx{Fc7dJ>#r=Um0qDN2}_HPKrD<~PEwG@?AAX-!{WCTJ~H54l` z0%6h9un~w*CqYUHNr{k@FiGJh)D)oRwPc2@OrU~NR)|tYsepimE<*pRME|O&e?V77 zS)oGKie}b|64nzMirFA)4Yh?@H$WtZ%D@Q*wRp%88^YvE@sKBWyP4&}i2!Bd1jR%{ zvyFS3smQ~*)RGsw z-NYOv?cCUmnFr^C4&&Z7sgfJ?aG}WsbPAe9j`u(bF+mGTE-J|k^mi(hkjb5E#3dIE z9E8}9DY&Eog{vQNV^Y%3bRO}n9{xU}sBdCBh~WxNR34l+SAtD~XCRlGCLPA|HWU$E zhi#zHB&l6)R$XjC2_29J*aa?a_CQH9A{LZ&0jTBVLOj$MyPdpgS>u-F%R;Yh(S93n zA&|yzaD-YH`xb+M(AoS3MY0ur@B6CFel;9dOy{wbW`6sDv0{D$V&Wda1EFWp8X{V~ z6^3=?5X`h=x10)A3`|Dey4~q05ZU$~ms!v#1d-+@gGeO9`fGOEPO7`6y1sJ8oUg-w z$8>1Y@tF>xbJOjwayn$BVLEiOIUO2`>CmZGJI!iG)YpuVx@Vwn5Oo!rdo(9(Wy#r+ zhpgjYTjFI+PHa2do?7uz8al9LziY~6vIOge>+Xl^o*n<%h{Pzk@CycA(y~i2Cx#q2 z@>%-^;9GD!S=7!=69?B4Z~a+#pb&2Y;i{si)$v0vjAm#pJ5{S=i3UZt>-$b=y@O}1 zQ|ws2bVCg8FT`c2)p37vBJN^1tJU)(Qit+6EqFIr`>?G~xN(i?!ih$KgY$!pMuC$v zflY|O6u3AK*n}`aftxZfU)-`ReRe%lrgiv^Ui| z``@kJx&MRI8+%2(4)DiI{=gV&>39S~?{{pabERs1s?vYycq{$CLe~F0Q}C~~HfbOR zqZ1^6CwftjaDSb{G#BpG=g?gI0Omp+X)X{Yv<)zw6?`~{!~OE(V<)MNqIIVdz_dt1eVR&Is5@m&vQ5{ zheyC^Ii?ncGLOfzfSOGEb9F?g;3Y6XE5+mR=MxO0$@WX>L)8QR+81%k~+i8JuMYyhdpzb1+#h3LB+9nR>(1h!~}qL}Rwv zXp~~Miug~1QHr@LW_oA>=xj7F{VPY)Kxcyyz#O*TC=D{~gJ4Z*vB3xq*aAB1WzGn8 zflkaHL!4rkhKxXo9;h@*ON>C3UJh1+&MHnoF~239l|}#)+zO*K%n5EFYLrHdK!sk8 z?gO0_oW7Q$TR~@(q2x@&Htl*@rd}lC0ne}ivf-eMSeBs|iSWQpEPyyU=`WUf^db>C zc#H**Hy2&UGPhoYXo;J?Rsp&R@m<7F!42R0`FMyOHSX-!XGkpaU|`2;_*$B5Vn%tq@rR-v9|o zMR251gu78MuNBBfDgbo`(%+z$*9#=N0fOZd!Sad>p`Rd6St2?O#w5rMS`3LtdZ_?j?8a1s`9Md~!YpfD+5P)y*4TtQmUbl`^kK(2~K zt|B6A$c#WHDS^Nl5}|`kg+%BYwzo6B1j(aBM!8l(Ig5%&nc`KYQ*wX>VgvDlL_)kE zhz*k22q~m=0(Gs(Uag1~I3cJZwvfjLwd6LAF3@0vI&7E#Qi~l#FvK`hbkfNS3G?XG zRVTnOdKm?7(P8i>Q#70~jJlw@44MNR-BkB`nF~hU%lR%CwVX$h!DO6>QkIMp1^g5) zGfo8gf}J$uL=?|toQMLL3=cs(B_w3#kSX z${_5<{$)lR$YZeGjQc=#U;}Xn8EqKw89hWihf-M2>_TIP#?YV{!=cDkF&i10;3>u( zX)j{v>da=h5t%4&j3s0Dp(Y3U&?h1%_SIK}N7& zIuOf}PU*1Nkk@fLTa8ZXFk@IfozijdPPr56xOW9<>gkk@d!uqE*m18{?sRtw%Aiv8 z0m?}2-JQ~LMHGF|afLUfM>=MB(E%MZqGAEe?&w&~g5Z9~@|}XAyE{6TvodhKV>zow zKXlx_GnumjC$oRn(-Xfq$_)iF^N;KCaP?$kkmZq1IW8V)?0Rh4vX4gqD)tRKJkr}t zkMuM=N_K27(`I}9=G1xZRb}&L;nf&3Yw)HG*(*^;f7FUn{VC~^E=@yQmwd&RAD?Z{ zpZ;EYe&sv;@^gPYApe^e4$iNRoSA=7TUP#?cYG`V-j}E5U-(f&{?~u|qx{o8d?Noh z52b5?A=9+6C!Af-dao_NVO5{}{Idt9$67b<4w|E;f2dp3ST{(_5sk^ipa>v(pWf0zt({~b=4|2|E8n)n3&KE}U~5+CB< zp~S(&2Z{F+?od=>DgD&+%hP^ff7G@uvGefD zpFZ=+qaWY;QN@Q}J+%9SJKisRuj`!~-X413kvEIqczIvl-u_)beSP%quFgANoBZmj zue|m0b32}T>Ba4zcI0+^|3&+YKQId6OAInb7}pqkjT>K_+;PeFhL@h*QL)qi>RFwW zc0al&yzgsoYH!EhJMqxEkN=$5oj%^#>H5RKKM#55w8+qdU;b;>!{VW-^l#@}G3@TF*w@ZJ|H_<_3%b7Xkd;cA*;wc{qGXzF^N-4=0R6LU>9GY6~?5Qn_KSV-o6t(c6;YQB*D+JSe!qb@ixm^ zopfBRRm$!mMQgRgv{spzKMy`S&V~syT0dgh$wyD5ZQn~;rjtb&7!JpiHHh_OKE^;P zqNcvqyi3Q))|Rx_P7Ds!TmQ&-b}X&cGd8wXOVs;3$Xhnn3!aa@U)bFLhOJ{-|HzC< z$u$gDYmt4}K8DA$T0P;gs!3Dt_f<9Ho$CDwPE|9>t=^yNRyETy)caRtsKf2*@G5n9 zwW`^m>b81$J%8r_HLp!Iwat$8YrWdrI!S9?=y>&!mN&IWN#{R`aD$rv3J`8oAGN8j zb`x#Oo8FdHg7$anJB*F2{uKiwlQDys@R|LK@yP7okrmZ7-(iI0+sCq^&4R4)qhhSx)Hec)FTeu8znYlO;!gkqK$1UBUfZ*e98oJ|Au7aG4)fJR< ztNMhRfACCpcFl=5f9@Y-$*ENP!>VQ`-L^Z&DD}+g zYTh%dX$yoGPa}*|OD=~gQPt_H`UF)z+NsK+2-VZws=6Emg6Q(;8LGTILsif7s_OZ` z0^-Z(`BnLRlc4INY*jtUB&xh9SCvl!A!rC2!3L=I|5B%g2DaZjyiV(R=mIo(alVlW;|@dASc$D83%3seKYXfhab#mKib;r%NkYrWeut(L#b8ws)gy` z_?=2^epodXHHsx}D#G0>p;7x)^>^x3`FCnnO@mXZ-GGLosW$=s7QpA#tGegBIO6`r zFzm!#1>BXYCJYfL^3gbUW3RHXMF|LH6 zEP@@!ZtM{YJMLfUH?fxhdkEP57IqxFv6oobasT3M6MHeR2Z0?bC)jc9#$Ie;$NejF zP3(oht^s?lg&oIk?1dI~?LHVlo2p5d8YV-kC!;i4$qM@R;Gd9Z;-7%Kqk$BxoQ!Uo z++aeE)d2b{vy&!Roiw4rG<)czI%rWH8jYzo$RPru658EQ@B`A00Bm(fyMvEt*3qG+SLip%O%7m_)!* z)S+9GT|XO4NwTlnXVHxNGs7l0B&9BD(Hu^p*^-j#=zUnQ2dD8r=u|aBXq&5NXR2}{ zeio);JET^BSS>tRHBHYHv)u#(TvH9;_f>V1N0m3Bac=?gARylc0>Yk~&!fwuprle5ekZSWDDezLVgquw=VdB61-fT~voI>V-7~tmq=aiY_VwcZn5>Fdd4}3u_cup$I~2C9u|-SkV!6=!jleYk?IV zAy^y!gs}{c#0GO8e|4KGZ^ytt069u+9B?0YDzCUpdmH0 z{eK7F!kK`WiatD&kleph@F+sEK?n*>MJM;hwGc{G1FQG>4O>W4IThXByKoIO^z#cI zMMwyQppdC`y*UC=nO*sJ@GYDPh^dg2BME6Zs^BQjR}F;FzJhrb|M2ayZC5V>^k$rjT}T$f6yj(Wg1Kk}InED}k*k3R}boCX;Hx zUp=n^Du|-*VJJY+KL{;iLmv_ftBVRvdS+>=PKaT9=)+pu12-JYakc!_kr&M9o}Z>4 zZ+|t|5B}=%WBRMfdcoKFWoOt@pLn&MWCbefXV0vu8+n24g{1%b3FoH>OJQz0#u;DW zieKW6Pw~Vr&rm0sW4J?lZlUH7QK<=GMA;+)v@qxr8(I^_kiAWMabXCfH2Sz1)YM`ic@x78penOu2&-wpKz$G+KeB2uHot&^8pe=A zN*zL01BMMqa&-{BLvhjyRW%5!1|=}X2{-n<@|In9?5tDU`Ah>PK6uqo{woDvzR0sz4YtP^`m+AT0w<4rWnVgSrf$O#y6MG3PFFk2voVZW+Ahi{iu<(;Snxm1ZT z=3(dXwVAzgQDqbp!{Op(mA?Uw0-S0P1+Bwn3`)tRGS);j-0=#c6nJPHhKicERQYh+ zvI(LZ3{P+T7p99P;}WA;|l9Q4I|W{2IW=Ds0QFiCnXmGb$u zpsB(l+iy}bC-Vrp=R@`wM-V3A{A!+)NzGyj=~z6#SLF3#l5~1%RS(^0GO5_A4OWRI z=Qxh6&4Jp`E~yRYSMywIV|gj_fGx?Z>eK&r&&9S~1sti0nA9*?!sIR{4>Q@sq!Y<* z+Yo!&Zp_@%c5mn9VI;4ggUi=%MzVTENqX9$bW?_tlFe?QWcQX~vvaD?F}1*CyU2S| zvPDF?Wtcrh$?h%hcZy{r$hC^y|9$6bgQuFhy+Hig~&!sjFb7rUU<#3ku zFu8dokB{P}SdZQ|1*}Z+xHr#|JnqeT_>$e$<4EqO@>n!1wc+y{(4dIb>TIjko+DfB z0T7f;L>1>(^ISw##(8q;0lrJG7muYqsZ~AHZ1T9osx8;5&2?mL7$N4vBuH&IznbS# zTMv(I!ecLl)(z80F@+JJiDV!`uAxmylPL^LrDT31Y6x3oVCayphPml2SePBm&#}nB z`PDp^uI_1cGaG%<^eedV(f^*QwoWLXy>keYEGA=^OlPuy$t}>n&QFl+s=(#0?=pc# z+IQX03-%QmVRPSh&^=?rFYfn z*UZ1a>(F}QpgEtxR21P~^OKx`i&uk)+@k#sba8x)yY)x)n7-j5?)bGXbK7BS>w9=? zU)-E1lu}nUpC}bPw_hq}p|I3X`U5#1l-xQ<|$5UIS{tg&J@niO5ex-V{Uy;8IyCmqNr8PQ~O0CU7VKs>*}i znAmS~Q~Rwz1EwI_hJeqf_#J~L^xQSIz!U>T6Z|5g;<$e_+9X+0Ie+ZccUTG=cF<{kdyO)111C_;C7Y5;M|px77P&<0i0Pvg4wX8=Z%7e1P*aW;niP!} zY07=A&IyCCaW)8h+@2H z9XRzoVosEgNpSuPvQ+g%cw*BrFc%c7@`*uCQEGOon!T8)z^1K+Kfb|S)LMf9ZwseW zbGHHk*fA-ns!K7+nFzO}GzY*FbCFDMKpm5j)NE2}TrN!IxIC0ZK&&7e7X>*;5Om{Q z5p$XHRchgQ2x9PgTFTtP)t*nOT;R3*;S>FcS3IG_? zEew=EuEE_6Y`iSNq16k)@9Kgol&Q4JGzH{}IID=W5(G4&wuWv3HE#nGzfqSpmzamUSq5X_~e>k)qyfp)DG-n|`4Q1IM%QG!%wz0>e$3V36&Ps_DN3bP!{4tGRRJX(ZcLoScqW9NWn` zy!dF}ZzlJ&;a@>O#TLl`+9*=;|p<)sC0Fp5p5NUMIf7QVBK9mBU!Zl zy@XP=Wy+q1>upI!b7Mu{Bcwtd0@R_|u^Vh`Vvlh2l$H)Cg^ZL^MyP-_+n|<^k%^R% zq%wYF;b|5;<1)aWaTFD*rW+R&m2RXa5ToN8QEbEP*!9h12L(qxgB&cPn*t%0wwL@6 zhm>klO&d|L4fV~A-K4Qv={Rt?$-H;5HalkWxq2GR5F8E)PW2?1rMWOkh^~O2YAzUF zUXC!)qzIQgIR91~P)7%T(!m>4lL30Hip(B)!wlv~NM;{eARt#n0k%`X`yP`2mB_%H+fC`EH4_|E!pISKwb=X ze1E5jU#R(+I%&}wy2XfSZe0D^vE~ARwl!lukh0&#nh%_MoaX~`8u$!yy&2Lx16yvs zbmU$eRBUaxIeS?KUbi}-WW@O+XB;tI_)0ROX-x?d33KNqQ@qJ;MI#?Vmi>1Q?z_6g z6~7i98Cn^ilF`adR|`DxqxW3ll?>XEJFZ+eY)v5F+;o*#;Ow>U>Rf!gU}F4|%vMh+ z-j}zvt7nr3&rG*R<94j~XG7Ak6QyQuP_|{gU+q`inpHDDB-^vz$Ap+$v}(Q^mTg+^ zH|5G!tzEKPYd1G+9e$mb2DVfT8YZ0F%C$>&Z_V$N9bEG|RSjf!jp`V{4pkj}#Ch1a zK`m6RS8J_5Xhv@9LMJxKlwopI+VYD1wTnsQao8`$-C~$g+fq5utNlBVX#bug+JE4P z_8$71!(!U3fkN)*M6sU1Y;RaLxj+l?9 zRE?fI{R^)uB?kTqI z%4gJZ9FwbwFK% zt_Uu7&1Z5Wllz!F!elFxHvqC54o%u_=y2MBV|y^ogKa09UOL_sfLCqTl*xj^ImgF= z@$w}`&+sKiOZ&iqnQ=@92Jb$dKdY>2247WxmyiDa1qGiC(<1AyIeCOT*!{=6i@O&X zS~?Fb+D|xapKvR8u5#Dnpw%jOFsjzIou<}pJWcsuSN=Cuc&7??smLJ}d0P#u@Hy15 zDxXKWLtf>^0+U+{p^Vm3X0P(UrovlP*iex@D)LGz)*CTkAdFs$DoQK8sx+Fd);)tN zI`Hen?+sLimv1S5F%U;qtH>r5#v8R%7(4paFrE$Lng4m^e_2J|SCLOt7pnP54Z};NRb-orv|FfIm5I98=TrWtlz+cqM@tW@ z@GC0(t||>hQ3HOJ_%%dLB7i7I`JYw(m(;rF3)Q-}9#iXfJxiP=*TCFnp^?`FE0M9(K*( z3M3wUyhshkqbAC~LHS=)o;7OllgjhF8oa}Tjl7~F@2W65ahob7nWgnej)n%WlZ}-s z!LuGFquF>=1!=L*ixl4rLK^XDK#b`zQhZnlDc;SC6dxLUR}GZ>fs#K^@&`&j@Pq_U zRPfXyz1!CeRtl2r_(c`oufm6^2R`K&7OztN-DYW&EP0OG zez{#@w+9or*ViEV(u!N{a8iKDORk1>6+WoKpI9A+zKUPsj9=~oor@SI#_^VB#0+ta z+03JS-4u1a0t)flh+oGmxNpZV9lsx%92pp=iNf_=%{Zz-ZEDanYS2bCr~`S67-Pio z7T&`#X2IUUvd6&PV!{8g*(?{gXt|5DQ8vjiXf-%ws$%$U6+Q&S_qCZs|4uWH_qUk{ z9@TJEgVv})Ppd)CsX;H3s5Xlj%{<=H24aw33Uk+qR(^or8~7#I+L;=X-&+t5SS21K z29tcUh3pa5w6He7$F16bXi;+)shiH3_jSh}nm_>JTNt0rSW~a@>DJ>iKE-6gdlkp0 z+Zo`RVvbMeAi#CT(N7H~2dQM7>xf{MEf?f=|K_c@%L-=UrR0}8<5OJm1@8D5Py5ca z*6G@?)sJ#B2!c)SbmcB`EB9m!G1D=`{InVQ%KZQr%9Z=~E9CIlZ+R$9Q>EiEtW5H% z(rMYMv|LlAb1@iTt4t|Y>`Y4$-X$`3Nnt7;m8tOb2^H9|n;T&}xgToi*+*WXI zMB5djaci;UvTG!RTUQ}z|2+N6w4G|{AHESbtA<`$kDK_T5A=SW5QvMR+R1*OvreT z*5xDVTJc*OT)=-ssJad9za~`OXuhCOjcCJ5c<3IbaecfAw0AB+QuaB<8pfshWZS?V zf2nTd`P?4({P8i<*__S)gx*qwPvC#wG}D-kr=5PZnMTzqHoE&2ggNv^K<34%KTO=m zrv3o1KK1wdim0_&aPn03R-(svALUOa)lZH`s>uId=ZdpNcsizUwMt&$-&d^~>;;qU zYB**mZEE-iHGC`QD8mgk|J5_q{MXJ@Z>>^qZB|Wv%||uHI z>vME1(fz&0{39*!s?*)D#IVTcSQdG$WsZk;9AS&GAC%iZUr`JDsfBp$#Gp4MxWvek z8g7<)MGfDl=6Aw^?}7ziquzQ-)f|vgZ>xoP^~A#OWT<)1s(CM&CL2!$!jcbvQX*8H zYWS;a_5P%;N4sn!q9^ zlbB3nQqE*9k|`^Or*YvEA?kl(UijbU75{fS!2f?M#<9m))0f9U8{t6vO$g4e0wzHw zAtqraQ6#q?bD)KR;GgyWacufQAcnsEFOJI~JLhKl_T}{L@1k!XG6&f&VUSIE*SJ|L zsK`i;s<+aef8qC+=ktdf@{43P=JWT^_iN?%SgS9ezh}3M_!fVKr~gKN*Pd3G&)>P% z+VbCQapYfn;ehkO}QU*=ZWyX${n;@$pF z5bpjV);X|7@TT&=i%ec&$qZ|SANAbBg3a4K_g(-90((y@f1g^`f>p3}yC%>)tlKd` zmEaZvv+t;NFW};k3coDtS5KRFu;_P?xu6WITtn7z>1*A-PPJ}3ey?_NI4Sk3@E$d+ zuNsD6DeA@2O5{CtSwgM*2%}84imX@R18NvHCi+7Fz_QA_3Job;g@r@Jry3BS!V(%< zv`!5h>rDZ`^Gv0+*{bv-6&C7vv&03+hE-m{8r<)8^8CFeaBn`FP$Y(Bb%t&b*cBqmLDt{^~_yjESe=L-Avw~j-B6KsLt&oO`AKD!ZTi1CS zlSMRr%aIH|%JlVoZ^5#6KR-V9u4iY$8{C=j$uaF6b|#=!$my55wg@75qYoO=HcT>W|s4B(tL#1=@!;^cmGXm}#7LF0J{X&}( z@MzHg+nW;R{AW|b|Hw@V5<^oZc2zP^l?+uSBfi+Cgx?=)Q^G-RN&u#z$KI5{0NrrR z@DQd$bZ!d+bn{lJd7IU6gx@-3-iFB^=571Td0ng+-?x{I4D#FzUivFL4ra$>!$JEV zcl%!V?3jIaEPZxN_AB5KBGvRFz}jG;0jA-Q1RJdZs0}8t*YiSx(*&liPXf1aKp;{a z%!k7G7M3J(0M3q0)VhIL4Uyx3*Wfxnb0>ouzD5oIKkZ#zY#h}UKDJzk#PK@y0uD)V zJSas0HF4~9(sZc^1d57*L^MG>0NIS!Gxp-$nPGO;i3#FIK{d2O0!)pd2#_MRps1>w zqKZU<3RM*p3Phx(LI_AB;E5KMR+akXe&^nM=EvTYsN#i+d9Zixow;-8o^!tQopWdA zzTVaSAxFC#{@AtQJ-Pq4yEc5#)%~xo?)k0_A9ro|)Wo&?w$NL+os;SU4?T^4a?vaL z-1~R!joCSwRh3S zk=YYoAiV!II&!Uf}sMzQFVM>sXJ!xb1w}`o<@8m>&J!)0esUP&3iK z;3nG57kK&3>nKmpzxM#muc!rM{C=Dp+BIj?j_lc1T4|Ems;pG;MxFhox)U`5)b*IU zk*Ub3mm)lcVb_AHQ=e<=l$QLkW=C^v%gughdqKiWgf43riIt)bNmj#aJjEM)~PEvi*;C{KJ%_b%u`T#K3oTZ16&Q&(P#N2=D+ zub%n?s(-Vd?%jNVZXUz$!}NBZ{&9}EZ-}F6mz~l`!*!i-wpGR>bRhYXbK7jINZtsX zWv`TAu1&sruGZNo``+ZhmdM|#m)h9TDS9#LRGr8v=0q>bRlkm1l6|FT*w33DnFTwH zxK}olsE3!_aK=(o=iFAzb&2j)@F+LBKF}>|gm{r(gEH3#{YF%8$&>Ut<#g02vk<0x z<*agg{kpMDv^@2Sopo&BH1C&QHF&z$QkN7~EO^M>daWP}f7X)+o1hL>*XGZgR_fZk zK<4RP$e;2z<4gaUmp z7`&hnm0V-wl#{Xd%Js_a4(xoXA4HWJep_poE`w54Jf+ubm&P`xB^%b)E)~0G9TWL~ z-LzP9BD+)`cghoqb#uRpIngL>tHqr3!FBAY5jy+3V+7N(9bzlh>#4#{vlgthg5?hT zk!J_g5;j$P$_WPswHEVwF()h@z%S2sm@XsQM74$&Ki@h-ZmweZSC}vxin^L8!NFYh(Rigory4Fr>%rOSZvkUC(=!`L2$&o=6mMSRC zI9|-HF_ISSVd*+yY25Zkt9-QRrswR#UZ?c5QnE)!2f78H%YHDG;Byv*mE=<>oVEE> zt?&6qdzw7rr_S9M+CizN4vDQnYnDQ8)*eQAXppp@Xi%Xv1`7!MeSdm zngzR=?6SeXG8FrXx?^3rMP8^+Gh&pU;da-=Z?B;DiJp54a;L{>SMSgCnLon6Jgxs^ zs6q4HW>m|5EwG~!yF~D5S+-l-JcM^!UyO9Rj4ihAI1{t+BH&56`lTylo6@yoHgko# zddr5#Xtwn{k*d-^sn>Oa1R88gcC|X!CWzs9Sk4J9nVE%@0T1+{(3Z1}ZmE7YMq>Y+ z)ekkW>hr6R$0BS{wY->m^BUF&)MQ&!cyd~eQ!U0ib+kvmPN20(oeMn}S}miJ!Y}3r zP_m)bqGPFZv<9L(84~cs`|$BFbGqWK5js9`_saQpupQ`H zA3{bmVu4?;L>1rbqjn`U3#>0S!jpcrQFBlx&!ub0I{O2s4E=#`)r1g7h=pp;U*apF zR6Mj|UnBOY+i{jzHp~KQ$aiQ1FRJh8ls+*L3`0LG<`(i5jT!I(qDK`tk_y~DeT|3H zYRLkr^Q3M#-(-BXJQVTNn1$_9oxW{bIQ(iP)avNTmN4iesj+wVtFdpQ*U;VJd=uYm ztSBo99=YLswiP8gAZ62X_~(U^OKeR;ch;s7*|1GDSpi+yR6@w6d*yr&5;UO;a+(T2M#u{YxbT!6XZO(P(x|8~^m*NFU2u zZzu7@@SY2S^t0GMvi+GS5nsMRFJ0nJAqMn0T9`ft{5Mwb)*$~z5cnZNx7gQ?Ixff> zcpM_Oa@DcDMgR?vkyyO0-j2>?)yjx&(t>6PmuD14?B_5=OxPT|h+~Fhe2aq+M;vXZ3~4hx5{})R@Mo8SA+kUe%69P35Xx@L)_XnX z5DX-il>@|xvgN4-4=qFoCdy+OAK64E21t}hzph}_hMF)9t#9(YSZyfwoD1&8B*s7$ zK6l$a&4(O&ABK*t_vcgFp$d0>bjZJkzGc5k8{R?MO#Ht_amDX|(K1@PRL6wuwIK}D z%Gm2#?W?=tHliT(%k19u3D6_KZ`Ll)_YfY4B$X8@B6+USz;YuD9WOFGG6edFJQdRD zT!0~mZih(2RdF8F3W$G}2>>ia01_kMw5sDh(k*wSM^njPQG>_{5DR8;N%2C)UU+x8 zSA8DWEJQJdBnHJKf=J0Mg#yF*X1!p)uKmLjg(?MWW}SG!D|YVs_RKm#r^WUr>sUhd z7H@gF=#~!=`tLqYqo_SZVU0e37r28yqbq+*H2BhyOXr0rX}6Ae%l5|DyUTrR88fUS zCt#3>_ex53g3u~V6Uo7GoCR$Lm9JYs3mKEJ*Jc?y-#dM{^mo=SFTu^en9#!nU#!Q<}k;a{5e-LL4p6ELTwHYRp0P zbZ@q0<*ibPq;+A?I$;SI#;SSO?GwVpK7dRy!-$717w)!F3LnoeF{ZHDK{{`Lt z4Z#1dQ}+zeqvQAEklzsv)4bS;(7LSLna<6|>lSKV;2a*3Kjqn0>6tD!JVwJo%>4{^ z*Tx@nKPXSBTJa`o?Q#bx8;8!sa*h1ZDK#Q@YcVIj1k4|)3C`tk!cbzwN_i@!Iow*3 zCjjwOA*A$I%URiN%mhV~Qea@^Ceq@$YfZUeo z>sqTeHqiow7~pl=`bjK5)hnqr%;G@*a$TtygLOOsf~Sb8^x)%^zmxt<+jf7v{u+X6 z9HZ5o`m4V-O?#mP^Ac5$`lWCZ$zMT2EmO!}5`vWDovL4+khEW%WvO^@$rU7z@jjm9 zg@mUY`Nz~k#sbzHO$826UhGw05ndQUXoPZUL8p+C2td%GUbZ3Qn7?rR2&5m2#-Rt| zcc2x6T6?4fj=mnDr^TG;7?KHb`k-Bnr3Kv2%3WhTGuS3Jt@u9!!qFblg_OKht+N z-i8a9mzMSD*C#4S@=G6enWRjUoG^^Z1apGT?B7**PVK6T7IH>n*=*~`6|)$SHH!T< z((dqkY6d_g!F*6>9TRIWkNdSCmXAn#EcExqg(NvFh4^k*W7KMC7Hb&1&)S?CYb7NZ zJiLKezycYfCVO7&3yk;9*6L{Gbe16EvEc z06}Bu14j{t+37=(n>YIcB*mPt4`qX?ERA4-ktj?XnMwF?(M&x~Y80Eqm1^t_e`{h_ zDSK_wp0dU!{G9!I!sHRnXIVomZ}9VlIhsV;+^Okau>oMNjw9Dtv0X?R3s|m@mOJ_Y z*MGuV*hT?fW%0I074=hv|8MWhQ_oKRwT0G)bO--B*aq{oV3#5r=3F{1lX)2+CQq!y z*;shfl&57bn8*9)cO zeLBZP>VrWRav>(pMwxYnkund&|KWybnG1CEM(>wvFaF64(Y;u#eR3z$KHh$c#6Wo^ zy}3jizSR=TH&Qb}A^~RBfnV`3Gu4;m2$g3*#JAX2ATof0B(VZ)zg)HJhzUA)*4Ou| ztRZfPV1u}9v3QLYrAEMX0(vHhulQj+Ga$N&OR4!`;RI|c$S-KEU^};t_B25Ng{|5a zQ!^cfEh$Ew*c@Ayj7BO=fGh#e1>(U>&AgzWf+i?VsVTHH$>8Yc)_-tj85||3|M}0v z3v@l*cZg=_oym(nra1%t-{l7Hq0eri-dAbszXkv6w(F>@A{bsve7~$54bZv~r4ure znioi}UW+Q39~RcYPYt+;)Mi^nwz|e-6A)ucIiv^!W>x_(0v4TT{DdKmAPUCWK#Qcm zj8ptj0#vH*c8Hd!yU-V4!~$u=6an@v%-qW{O0v2Jr80|^c$!oWyLr@TV*PkNTxFCL q{wqyrnjbLCLq;%#dMR&|Ma!520xeUTmHI~6YX!zSty0z^o%#w*NlKp-mx>6haA5v`9oMCzH6VHG%0w;`_J#*xp(^c zoRf3bUVERt*L$tK;oLQW-N#rv_V2&{lN2cH!ommUWIvKOckaMPvYn4*7i8X@p{dld zvOiBu9z1xEksj9$nKLne_H&gYE4w~=TV;1vc52m*J@GeoOt`U)2F7)F))SStpx;be z#@Gn;gS@RE-MJ(`v*7Nm_)0Ah^lSPuCfX;)Cy4Q}DY4qPjxu77^iQic{Ie8f@ z923ur%-Xc1DUB!C2hTdI^^~@RKT5M#6A-lZztGCwp z`mJn>pA3Lb9%s=@f2+NsrJjYFY4uWb?N?gK82yPnRVR%Rg=T50Ubg9L*L7vp9U?SB zwK+ngsU97n(N-^t(1?ZG4NP1xt6)Bnp-I5w-QJqul!snDc+<8~%&#f04^4^2DD zs4hc3{9pS1&HAUNO#ul_veOb-alue!0FhkRqYO`m;6b(B0V!KKaP*f zMaFWk_qunf;mNP?>Uo^V>X7H_rue9+tEe$7-;bsN>x}HUHbT?xxIID>QoTMx6Z+!D zH<&OD9l#nnNhfQ|6}AYqQj%U4-#{q6M^Zdgh}RoAxin3FkcA!{KPwby`lCqktH zQP2u@{q*!1)9Nw(2Ajyv98u*{_|a00Ktz=e0wM3hbr zpmd#-toJW?(Yg+-x@Uw&SG^3}8M^T`ChWo@qJQY4@Io#Un_GnIo{46uuK6@bBZ2nT z8n+PER0*={il@m*BJsmjYXm>)u-Zxo=SQ5s0iV~SEsk@eKOuv=J{V_1H&>C!oP%D~ z5zFsP5)ZfBln1{+Sc|-n< z9h?gbb2G|r(t$VBP(#Nc>qW}KIt34I1I7IlR3dBCMa zom3}>3UyMN-nA4Gmtwt8akkVfM_Q~k^K@>lBh5bAn_?LRA2Q;*;xkxs6s$vES+ocz zUB#Au%sFzhn{g9#yB7n(T3m9Z`Fg;`aK)aIET`)gT^I87a-v=si1FZq&in{ALyzW+3-39zUK8W}oAED77cYx{Dv+-2D zIzrQNLREJr&RLk5$&4z&;3Q}BFrmlB9Zbkaw5?iN{j_@j*McGh)q5&Iz)f6w+mHei z*CUc3QyOnEN_M~h^$^*pmFT4>dg)bq>3tCcT(nO&VBLTfS#j7<^$KX>x&kk|2@g(M zwuYjDjuDzp)jjBG7)gB+J(Wdh3~pj)R0!y(e+C_xq_@apjIL9n)*;5|miF|F4V9-F zYcFe~-;FUFs)~SuuPiUaubi*99(9iq-M2JfbzRYwPElNFmT1^fDny@Z{w54yW9caF zJ^|CHFmvgh+;ak^Rbf%35fx{hovnwt197K{(Wj)Q=9aK}=t%D)szmXS2`@j9(RSY{IOa}ZF!;ZrRw;6_TB{C1N|^dJJYS~d=I5UfpbNX~dB!P{8O3~Jaw4L1nR zHiD{dBQ9N)rxpV1RVmBK%R_Jm$T{+n2l2$U-CCnA+7lne0vQb>_;wWVqra%|8memW zu3Pa4VDLaR|pBw&=AFiXMBYJjsaYExIlyyrgSmtVqsRjx{#MBDH}Q2?*3bm5u~B zB-dA=(u1N9s~6BlEXB-pq}w{x7wUp0&TWV65aVFpTvtMu3iXW$_VDMm>AlRCP7H+} zR2N2QjFDA_R*Axbtn4*n%m-MJ-%z1XKrm>gko*wF<01KeJRl^O2ksx|@*{gzXTgMiF>*lk3_C4JoNMZ{M6FtisRWNwE*LG-b(j}bnXjs}zh zXtzV-hmz!!WBzUj7<|=|}%a*7Ykq zaqIdi9%QYYWOUUKtw!uGHiK3q5w(pp>$}@C7Sq8{wFh`au`Ps;;MA^%&KY(LZ~lfT zmI>7w!<7zAs?vQ=R7;{3u5`W@QaZGlORdzR>Kcf^!62PHpLDGY5s8?f#1W^UY>m<( z=-Bt3vBFJ>b?7n@istVVXx2wDYoeQ~kF7@Nm#C*=1`^O?L+(tut1-r5EEy;}^zP2( z$0)9WZIGvm%~$NMV}dkQbX^TC)dz~T)HIF6oGX*V*l1JuWaNDEyH;|H$*JTTW#f`n zhhYCzgC3Vo#LrOGKo!u?B`rlqZR zq2O0gM>4)PUHyVpWdU4De`JX>v!I2Rs!}^0MXUlw+-@ZZ$1)PEmEMFlh(N7Acy6XM z{gJ{sb21llY4JPlHt-D_UttvQ@;{O!3zX05WGO}0>KLe zFA%&y@B+aL1TPT0K=1;=3j{9^P}8AHz@^0%ipzlOR$TYvT8axJFjj`E23HHNbGRaK=ddjO;mOXgHja1M{o&Wv!uTO!%`tO{Dvle9M&b>RM>p!pm-mW_|)?fei zcTD~NUH|=|3$Op4xOx4TqGQy5UuaYRWr%)I|9#=t)qi0_{p!B6SFM;Evn=eBzV?ov zEfTxTpTDo$YvWh+Xy-`0W!G6oP2fDvae6f zUNLoA|F^y$efqD%W^UQ}Jx%&$tiHS?>-FV#4ct0p(05x-M{KR0-XUkh$_0ZzxFi33 z)AiJCpFfcF=qKZP4r{y`adb@hkMOT7QMFzQSD z8SmH6AAIxVT}>t5K9;{?Xw8DeLEV$Yk*}og8}U-evO6Ms+WYJq$?jelReR^(*FDjB zaoNO(jhpp7BlaA;waXc|P<IW+BE0w(d%dErp?&KR_I{0DbE^gzcB-Q)in zam4m)!={&`j?RAZ^0hlQO=vl>F=^Yzw}0L`bI8HQxwY|l`3Xe;Dhn*S~bMb7<{B7r}7Cm}#ievDV zW8=?XPe1o&!^yKHb=G%B{e8tp-gjLqc6~T>?UF-h_ul*2LmRFh`L0Euy_Y5}!XiF+ z?cjp4qfgBIO~b_5gV*SOTOl7PeR!+8;LNt9$5K0r6TdX>OBz0G#poydC&syp*ux{| z)J{EaTQ((mx_#0gVtU;k-S@NJ=h*rIiM?j@iyPm4*iVilg9j{Hd;i+`55@HTsH=9> zyB~y(Is0sT@43`YS2lzj$M0=2J-v2y_dY8o_v(~7@Q2+=-~BXm!PZM3=jZ%RN1jR#*p zGxI>HXVl&UE4{moJKo&>r<;!f3D4;Xe_u^v82lj05T2_3>N8FpN@ z9%zNtQckjp3MQLydl6g^sL0};(EbKg_k^&Uz;ri(g$Bah6GHgc4Lg3Y9tgX{KOJ_C zYW#r<@sY`T7zu#G;2zVd_Lwg05OOewvG$nJZ3_=O#Mf2ZVh-ES<2FuK!Vg*3!?!zh zE3E@HPoX-IZqsmkt|}bSMetr(3RS!w0<+wXF77d%{a-TiFLiDEC5py%G9z;4_plzW zxKP@$Y;jL-fe;&K8}VcDd1?QQpr!EgT*cACP+w%9m4#2K8*NB6md3374AIU2i6b#ACD{v5m0#OBL?!sBQg*ln| zc?J2@KxH4Lp&)Z%_N<)TyeN`=gC9)O$jx&QuytCrKbh$)DD$HhIFT4ENT)L7HUdVW zOv%xG4ZQl~D_nM?6pnU^B)bVza>X#G*;Qm@&dwDz&Q4&FUUJd*tTof>l}aWjKTsiP z2=gH>Ky2q4e&gn(C*?MloJQ4;ilfe9vKDpKdyxEA9B_uIRY_4UGF5n;VQHLI7&M5f z;HI@EJ)mrQrp6}(?~!cYj;%^!Tf6F|bbFE*xDHPbtV&ebrY@K^Y5Bg!4P=;!r7O(z z;m*#)L*5dyne1}#wkMQ$C%}bbD={!-g(`R;XprtDr_x@g5#<0Aq%!(kj9s^M2$63o zvij(A$p8Bb@0VZqUiB_52`O(NkxiBR2W(tAJ4jk=-&t#>L#>0U&mn>1n`!*Wr4HZt zc*Xc*Vo9`hM5u70(Jb2eT!PoBI|qVBhV;CG^hfe$FG!oPasAG7um7 zz&47Cc5Uy-+Gi}x;K^}eJ`>5NWuS$Y@CDXXqIESyVVe?qCeJqpuHts695rYivfZSX zmQZGQ>ZJlR`_lGoQ*H@#ni~-O_34Bnp%lFWV&1g2EJ-*a!Q$(b&e-IXh2Abt_pf)J;~I ztoN18rl?9nT<_?!AUa+}L#^Hs&{}v*ipRDMU*j<8M|rG>F^hEaV4=}fr%RJ-Yfov; zZ*uQ1`%-(pIvvCk<+z_m3wE8AcIRSfqh=iK(aghMmXU1RT%-mP&|;ie#C!66mWkE_ z72eW&2w*qN!UA9Nc z1x8`NWLhE5kMxMqaa(qHXfm=`CyjfR(x>9CuHXi zqPo@^-zkAMo!BQ7TbY2NY$vvFbd8~Tpa<3P6!xr4PIY~&!&1z$hFBga5`W}4Y{`u^ zPLdzeC(jc+h?5*(MZZ*^8Hc~sQ6OSt@&RQR!Yt=l2FMAKBZ+{9CyX#OZ`0!*5@4y= zB2GcbaY4eam4pJS>J3Qvzr}p8XR-W4{K^&MaPLjA6;xMG0haCu64p8_f{=egGiHe? znyg2`O<` z(viWm7Zq>PXnLuk?&M^~&(-9je8l6r(Mt4E51N=pTrd2@lh8?ihCH!ndgn?6Iy|HR z=1nwIMP2uLPYuHj#=;0&Kh(09EXoM7C{yT`jonZkY0Q4C166+Zv=}N*0S0jtPqpBokqZH4 z!!GRX36m0NH|FFN7G$Mo=aYFDyj?j&q?!j`8{1AyTNK9FsR398SLQ5+Aa|YsmOTG0r^(~A~@DbY5;d{MPg-M>&e zbJu1gm{ir<_aXlXf$uyVt0Q^*JI3`Ne^gFPVDAm8uS1d%NlAt?OpQK7BB>f%AeB(V zb8O3U{9hf&6IWe}MP^u6!)^GOHe3t{^wrNHa4Q^%0I8fZmD?!x#^$7^8s|rh)eq9^ zAFyG0goLsP>j(0EII~Du!pRX0rM*4k-JWfvYdmWjqxw}0>P$pJfSgvVwd-2-K@Gtw z4wwFN5O!u=s!AE%nK%3sRWyoXZK8@Fj42_P)@h;9F?O+3&AM^uWDPB;HzmnwWET-> zh4B64>MAVhabi+GY`1W7`%fW6a^tL(=j(-i7`4A$pA07*>63FJR(DsC3I6jr2m_3% zxo3&q^-d%=+t!*h|KRTVZL~4zyCF5_H#^&PuW=pmf*y9*8S}P@o)V$aZX$#SDEr6X zSD`VsUY{zLP)yiF>PevcQcmzj0)h{fih@vm;Ag915cO|ZTfF-yS zdUzK1gzYsieM&lQtw9ZCe2)?POZ0Jg8r#DrB$>~gk&2MqnYDIP3=Y(kwkPMJOq);H zlMvw{gWiDEn%agH^Tc_yPZp_KNxd`xF|`S(qHq#-$b%U_da1?XK@O=Biw_LXVG1Hd zJ*@$}&{VI4qxz`Iq*N2Ql9EmrWMV;`| z)u}9@7bC?4Cl~(c^}?+Yz;yB%<;C|EI;k4hgXDgI+K*z^d6;05k9l3H{|FPmn*^{0 z>wx``i!4x%1z^$xNH?M{IqyMiBwgX55mu?DT4;m2h`uCUL3o4&hB9q`BU&2m79vD+ zQB-sh9fvf=@TyK>D0I!lN(cK=vO!8prY3ZT$#NH=$)S3AHJdw?3m1h!`q})h5e$qV zUj-!!tH$~2Fyd5Lbv3fEKaxf87$9?d(8nC(q8QbgDBGh@uPEt-bD4$vKE9G`7`#Okx1?@>4s}QBgx)5NzXQoT2xU z?4zdKo@76Kf165-a)9(t#Ez%JQH3IcI%9&7ojojTD6GidRlZ>D94xxe+$*JD zf@kO2U_t_-C{D^U5HYCK#i82>+C3l&naBH9WrQ?hs!#j7=FW$HJ5)$r3dLF zNpDf)vak=1ve~6W$kLR&=|Y3X+3sz^RWm5(=cM7ND36qp^)Jy&u{t%wl)~j_reeUj zon1ik_9&}Ul^hYTjTZAFRWn;*EQAE?TeQd(ocEK=Qf#DjM4sX+=5-k{%^Z zjAG8NcA-!&O}Drz=re-r8D72NP7Dsf7rCfUb|5M?HV9j7_UXq{m>E-&0yR=2DdX7z zB~@*X^bRJ?ag%Ield0>|8`GKaJM5CHP7ksel#9?Xl(n@P#fL5*CVbhS(uwn;cytnQ zf_OMt_)he_e)wLsjl$STh&T#XO#q2a0pjB)c0T44l#wVc`3OcfP!ktr1*YT;O$1Hb z*nzmr*u=SWli9J2e`eZ;QTh6|=VyjVn^*tl#Gc7R?q3%^ss=`qK8Rk@cgw!_W3pr_~=Vt^dG!AYuNceE||0Z%}KFZo2ioWz9Uch*dGRoY;v-&O2T0bp%+T=j}~CAaE#ia`6<`WwpD z6=TK&dNMYOSyCS0v(Lu8Ae|m7*;A~`pMuX#3OsyJ_`=Utf+wvQbo?|x7L->`PwL_S zrwi!gKVixL87=?!VmCnfzfl9URRTFOXOp0EiF~-?C{)h*!y~wMm2(`X#8&zs@6%cj z3zh{ANAH{M%=<7o?|ml#{^eLt{C&C0G`8_+nXx;TunhJlfhKQX@S9uk>!KIN5(nPj z=;u`HSy=F-^@J@yatw$n1};n*-bVx#`w+zI}{#|92E7)4zua`VI#Nj^hIa zTLe1dAOvw((P4@&R1OD}AHlca%B9{H9xG8Zs+++0rDCW)sC??%cmqD2M^+APDE(XC zaRLPGyy(iM$A3};(EqN#JJ~&qm9av12C5E-`Flg?F_#>gkBvRJTIc((0eT0}UOBTK zXbXHyy+KzMHn!m{6>l+`3Jv%-uYmq?(xLKC;SF~apc_e|Qat8qQV>M7=$zvIjZj|Z z2A+~NDWmZcHDF36roc#+0Qz722g5&}-OFYUWEORmX*eM@JHW~hR MGg0N-fBEN*2FTzeP~@RzDj|a6J7LUj3=JJH4u>)A zVP4J38<-Hzi1s&#^zV6X!5y;#lwawpm)v{NAJ}KR+KGJ#HABIBDsezh`MU zbA9NRwf#9xGiFkVK@$=b9i$G9ic&|1MQK9Af}$Nm#zszxiExOGHcX3t`tNPHB&`d_ zX;u7*ECi4ES*;&oMLxp3hkss`-ZPonS z>$RMdRb^FMHIvt?ILBG}?KtP;q=gG&$AnGy9mXBsv{f099HQ6w9!tzDOmP?X?7#Y% zHRb-RpH-)HO)RQ$+3b=sezP_uNGjXALx)b#w+7$H(^j2NyjE0gO>y0!RZ=u4-2aK!xYg7?MrgIBv@fdBt&6xosp3A(-o{6< zP-iP`iR7N%*p|y((?!MSzKV~3=67ox)?h!|bL6B*JjZPMnB%tqT9iCPuSGj9Qt`D@ z7--kjZreSOE}il$I(|N@NIH4^LYuP3_DUxo+pA=p^gMd}Le^2~)baC_p>);q0_t#< zK#scH&`&v9ua#6g+>qs297(?-Z9~xFhl^PLjHGG?KrW0DFH)W^^Vl;^zJ=mGEm|Ou z^btgH33-Q#YIXckem`raU}ZkXRqeN7K5EL;81bSGJ@G0) z9WEe5?~|rIT0`H@)W~7_A--4THe#yYhZ9z1pn!C|=!T}Kwv*(pm(Vn@s!uvFG~<)D z=|v0TyA6{L7S+1-DK0v%>a%Szr{bHE8)`S5Cv)R(Hdi!DTsu2?#)d`)jbYTOV@Xky zBco%3A|fIuO$($&=%N&yI5sw6Mf?^@`G}_4S;cYcX#D_rMEXyJ1SwVTB9GL|3-vC- z9;=Y|Ytc=ev=Edq5D!A$O=M^ca>t`Lg}krSsd_D6n_g>uhU3!u?VvAluSVE&EL4iB z3rNxXq&|;XA0lbReY%;kvmV=-fA6BwXlMp>G(MS%piBx*;icBvF;rKp+=Wf$R4oj%7S=SL@dz+$gHymHQKltBKaPE4 zDcZQAi{)P)NZKBVc5lJ+RdJU-2f66aT72!;sN-^nbx}FwKH5d)nEP}Wm6MuCE(v+^ zOL|C4&i8N3){;2WrIG;$R3BcilXuaMV3hIYC{RTQ&l$RaH}8)Y7?;cEbTcuUZM zcMN)X6VUw#|6PG%8*~PHNK4qkcMN+-6WC2b`m_WYa>pQjZUuRe*2g~dnswK!CG5~U zhV6ALYzA^bOOQk@C~M;;e>QOgZUa&uNu6Gb<<%1Qggb_(AhV612*xHueop#3{wYLGOX$CT$_+DR< z?Ys2T?-;hGRoEkKm}p#OGa4W^5!b{P=_g>=OOCXUpVGm1h`aJNMdccGh)bY^e?>KI z0*}^68F~^d!XDMxoDN+326ZhmAvqz1YePdR!%);pu~DQa39BxG?K71Ln*_-B&_pS? zJ|Lfo10g55)@lXEC)psCGuZ(()AA`v63Y->OF5Fhk5nS2r$sTbqbNj>UlP-aDi2+= zTBYBFJtgVq6mh#>`W?cT)Q9Uji>p?uE~*hQ5GV~$2jrJ&G#5#0NbI804$f)AIYI@Z zv7Fkpn&Z>jVp=k1p^Tz^GtpTlTc{Qj;zgu{7u)5k0$35UKRWPbEd;E#(&xI>I*Rm4 z!O|W|KXiSowNis8ML>~;0|858w~JkuCL^}e4&q@Fnk%}f+Vog+A5`%cQ?MFJC#SVf zOEvv^GOG<|em#C+((J*>x~#T%UKE!yZ}9MklAmY47B5LyWW>)b>~st3qa#axevHpX z#T3rmo^y#`GAAK6Ice_VWbgQGcW+yKh`OobdqdFQt8H;kFB^SQ?_-n3goJW!6XIj% z;9pYwoJ4LT5i7dERBhTVrRw$A3Hb1ZYU~GuJ!Pb8sy)l35WTj5${|^coy7noXi(6r zBt+ki6AQJz2a0MmQW!RiNX#r0R?S6W6c{dP^fLbEG7Hm!#PZ%^jiYHQfM}$uY|df~ z%)-9a65_#$0bE-5`C2Gjx`?TasQE&<6Exm3D78{2>{k3Q8&3hCR@CSYGST~E$gcs9gKXjwFQ%?*l}FInLOkay*|?_tU8Efsm3lHG~;N^XM^_~|0(mTul~lvz+Gmhu5V_Jpsam>RRMQ)F4RA1N zKa5a}o_Bfxy6*w@Oq{V)s%-*d*2d0UZVw`CfBMJd z^O@t;iCOZD|ZUFS~JX7?eTDqp_d_rC=a7&x<6Hva2%5{7#Uo7pn>m+;m zvK^yPX^^XaP_*7X^H^F>vDQPdn2?rr^mvW9PfI2$=_HVmNXR%r=DKTVq!eYIcN0c- zqOf_|w#j#3s1uk-2pKBVEFQ@hJKba;-C#9p9g>qYG{i{vCO4U_W{?*9Z-#qK2Nrloy zEs~k#l*UQ)Fa3~yaUU8NFD;WduEc|Hp=9urMGxY*g<_#vUni9?n)ELbo~=VF6*#37 zP>XIzfLhhGTo+QKo+UL3^Xu?lj+WLR?Dkv{t-C}pa6l4oqGD@66!K^-XHdCRE*ZQP zqg0DF3F5~LqRkw|I%J2{G);lxtU!T%ycIx88vr5yK3aFZ$cQqLhBTj^UcuAp91pH1 zo5{(>xWy?+e~U{=TCzBHQeq;s+vM2EzCPTSv|s87(~-T6ru}Ksw9=(v@{5O<1@a(1 zVGk~<>Bb+EbDpgS%|RD7@B9Mk8sXK#`>dEH$>1o9l;V4}sK!m)N%O#^MHZdY$S;$% zT?%h6eUns3HfDK5(NFEAr!)>^Y9=0cS_^&qR}NY*Qe{(n{wWRAs+_NoEEa2e)ATuG zm=&X7H459bjpO%V479OO2iFCBLM^54Vmk@hG|cje25?$#BP?Syl3}2nxr+6)yE2=S zVLFjcu+1VUta3zy7BPhSVdyAlW}~oJ=ph+Y_UFeXLoel7GK`iD&XS?OYzUTPR7Yzp zrjLrs9TXceU(6qnPPFWUn16q(OO0!}C^IehVC)_>WsSTglZEDh9fIyq*vENU?S)OQt)9W&>LDFOLpdJ=fX zHU=5|1~G%6C8Az51*?o+vZQougJYqN|8%Cg< zWH=%l{9uWf3}w?*wxG7{rTTz(?BUEQMMCY%vCvNv2465?CD5S6Q>i#tFn(GA?2lYiqTv$*2>1k z@-UWNFB@xxJYzlkQHwIHu(4hpa~1Z51;oR>v2fMKS~Rw_rWu6gs#ZbN*g+_Dt~9Ts zX|>Lk=5?x@*KusMPIc2d{4sS`*_bGG;E$c7PM<=jt%m7R7t0h4))FBpW-Io_^t2N2JGfTT*+Ab;r->9?ocD7nAwtH0v55n!frb^)yk$1$kb!1mrX#O zsh<6)MF~96Z^g8)Hq{=j<&kW+j8nyrTCGS1@E9VHm6&6KfVx!EZuh2|TUxEDn711$ z*sa=B;p0{-D8}oC3U*U9Rmg9(f?|b;vqC+t}H`LVI%yd+< zpw*@nYjQ&cyAhcx>}a)uVk>T_U^5X*RAE=E6%+%osr~>V`y6_0L$uuhOf`46T2ry} z+L~&x@9JqWu5fKKvcgttE5_S~j@oUu)Le0^6%^BKLj{{1aycRUc^J{y5cjoOQ!zX? z)U?}Msi~4yD=22wh6;9TDplCuY6ZnsYOl~h-B=9=S$R~f2NBoWDi5zFWRHZS0}?1* zZK~&Mi_UA*9i)gro1l#OU5=@cO^R(%srj?KB9PViS~g7>d(bh|+V<)Py!lBSS1bcf&(4ZWNLMZ;)lKf%f|tB|9wv04>v$vDii zvsG;=VHw+uDe}UmblY{sCVDvOiIv~|0sd52>3x-bEmFSzg)hM}0JhomQqt=xyW>%Q zN^|Y(L6SFfq0J2;q_2fX4s^cCUdYDgiRUVpp?6HwWE{X#WjPF}VvWk^ESel~=DitiiF<*wZU67orhd{8RcbDsIVuZ4!bgFG?AD* z{%bj+u2H4Apb6q@C0#)H`P45f=THU1Kqz^YdttOz`~-weojE=P#t@SOa~P0fW>roC zi$1)j8}?tyX>Jo6j1KIY`}nUKb^wF^%&@=NU?(n%TLc4-`tBKc&VoQ;e{;Tv2A&+x zX4^^IE=<{e+QyZ%curD$LNfOO(Kd})*%FEuUF4arvPn-0`xTk(@+3nIQwT@ppqTL7 z(Gp@9GVtm4MyWW6_Xj!Fe3YS6t5Bx zgBqj}?jZ-((Pn||8f3#2$yd6_c-=grBG&5ydSa|?38`L%m22@epO?ekC(FjVDGd!& z24f?#&J4gDW;)^12U@5#>-o*%m{7lROuB3we@Ep;T5e zuxX}PFbmV=-LNOZo;2t6p&8srG7@Juy^}QrQ05MX5d17F}Yfd`LaZ%(@O{7^VZb~7-9kA1S$UW zB5Tl-)l?ifh=fg~5t_kO$<3nNfn)-}8dfu(tUti-o1H-|O-hNMXS0EXMMuOgeCIHBmHJJbbM>)t28sI)xDW*;=Ac$Pr1gR8WlF$9qRy5qr;%XL)oY90j zriQP!xVKLfb~|HpU3AU~es1Gt`JeQo>1+d|cWyXXSjFRDVcm23*^LCz5mE7R3loxK zQ{rYXOn?P$NW<~d7i7h1gT-aMB+sk^v4|zkW5!A|>jKtOXHs{taU8Mt+5iq@m1AIn z(@D>gw6Za+5;G$?no^^iY;qGz0+m@6OFeF#(#n+pBb%uKu)_%0RA#y<+zcI%U!Zj6 zZpYI(BwvUEmNAbvkb8-l4*I#%7;**9vz*AHs?B{9AE}$VbNmiwF~`Z6U6|UsxOGi$ z=tZ}abO6YC|Hs_W+>z7S_@7O0@QxpJ_n4m5Rwwtg=3wKL7&}F`sFS8x7XRRdeF0cHT z(jCSt)>8RMoWl22ZvTV_C1vC8^1ct4o#n3F5E?KA?3M9tGrz}~f z6w=f60ph$Od?8eZU@r}hn1*CMOX#Xv-Es_-{~{i;(xztORB*l)njgew0}gC83d_|~ z6$-HrpJVh=`A+~4YqZ9!hS%)6O9=(}++SK&rl zBThq96*z@-A~UV30!o;c+)Py!%Lt$Fol#Xlr))#l3{*FBCUBh@UYIn3azP7Dq;ME*o=3 z+g2KokxVj7!9z0|8=|BsyEg@w3*+W0iGxX+(?Q|X1~%}C(lr|!_>%Yv@UpHYUeNoj zl}Aw){bf|fhy?wgDy<|`+7Xbo@)!d+k}2;cE14XuJO$dq!ES~p2+4*b`8B2}9KFG6 zt`qY1q6q+B8wO~Rgjb?vmN{&rCzq=sBmg_@7jij`+E-E262T!^0;-h3! zAC6CefB>{ap24WRfYwV`=V8V`4~%QvA^KX~-eTCC^dHMTs!f094xC`u|JjbxJAUci z6MsK}ej)x;_fq@?+1BE+xRiw0g$c_O7A7kc)Xa0MyRu%{5ZT(Cy>LnV0;OOdA~iyW z{p`39&ropX826*K%%h7hYtEyjV%eZ44=zIm+#NB00S3KEZ8cOZDDJp}AmPBISTa^i zG3BDE0*0d$q)En$Aex!wQL^Ep?}4dO&VWG7Fe4i|<|2ULWd67mGH|t6(*ef2oI#Ww zG+!$zPvUiF`;Nrn9{~3un12P>7N2_`(N-u)JtIAVw$y`iI@^|C^1OtF3+>)k+%F{P zK16LBvz0=;SEFSybLAf@Q6q&{2ZUFoKJR-KW1s<~4e>oKhYebtc|cfo z4z*>&FVG_=7nM6sRW}+5urEOUz4q!y$dtmW3#+nd{DuoM{(qGXJM(l}yaEM400Y`I zRCZ{uu+3P^D2=;dh8if-ZlbAYa*ldr$Tn`)cb8>&}f z&tKs{q6Hg&Rc<_qAQ951!S=Rb064xI)Ku6ZV|2?NuaZ z@Rr~22!1Y$-SLS#VIXiJ?}D#2;1lBhMi*Js;Tyh^?kQgI6;3L=0M?BSP?+9ha)d=R zBh$X6)$yfJhTSEl2CFY*9KZyM^;#j5$!m6<2`WknQcFdW)AXmbC1hmd8EtSx_Sg~f z6&pY$|H$!es=ST~rs0JL+tQk=ZFZ03cS*Y-Bfx?}SBV{Dvo0J(N~uVyEB%$S(`Nc1 z!pkW01WO{>Mt_Zdit`FF;8JGwnu82%?UdI<0q-*i>1yaqN zz)vcAgP&C3SYAuAp-sgcsB0CeP}1^l(JAb#fF_Sy_LrE9xh>ZQ`UEa$j`xmVe)ky5 zBRCL*Ch^ie)Fj9R!7yO^fSUpbCm{}0&pnjYjx*nkV)?H4y)wt$W|wN_f@@!PJ2w?@ zJe9MU@nLg?0ZY)7a*y|+GlsozB_wSF>b|Q~W%+a*QWZOjRFb}zT!rB}=zqglHQxnm zD3h`q*HCq7<_sjzA6r36BdhJ&%RDSNSYs@v4{#iY#TN4|1aVA_WVk393f_84G8v2sv3JK~!x%O^qc*8|1v{WP3E*?DLCiaLQSuO=&OIxTLfZ!Td94QdeT!Yt$K?SgSH721IC#acq>)7$ru1KOoH4AZ0%1&}%ssO9jJ!1gtgdEoXMvI}bdl{3I@3Js2oj7`M$P|@yb^W6My#!s96 z#qo65fJTC(=a!-sDg0!>1WoGOP$QvX8q2A_!m5WbG@{lNDq;9CX=XWfffkx<`Vx~d zl|N&j1#vflf!V8)NNO$hT&x97zQj-34Zn=DWGjwz^va1K=ps-$L#E+s-$IZne>s2= zq+ofM>YJ+Js%(|6!y!>T#|KI|-3j`5noihnR22(J&@Bh+W+#^>EQ+cVzE>+Z--L{S z@}F^pJ-Cu6a79JpO_lpt+5ls>#x!LS01;f}7M45m)?DIgl`kN-fCQCIUo9Bk_^d2c z4E1vqs&vD)R9Z_2lf%m~NkQp`F9~Tb(LiNOOaK;CZ^vs^h1WCqx^a5>S&YY1X87nZ23KtMoeT#J2 zP$7qd_^$B#r9)CF4sOLg)JaU(Mwab{8CMwxXI?cvXfb>cK@_QwnxRH*xB@~E3*4~G zIHS&DD1bh%w{tJ8Xv#;k|0Ko)s0B7M*o5C?li(ue^LipwSRI{mGazFxep(ejw;-JL_b}v6GpBvEew@lDQ5Z1Wh~Xnr^70SpZhjOX(rB zfh!3)!!Va}On$HwlP{IYF*Ty0f_OEsBjjAibkfp~&=A|2jAKb+r2+=Wu+$6WG-WbL-%&86+IyZ_Dm-&GxG1XynLmGaTnm2djxH)K}#QXuCoJ-9Y@dX+o zTZ&Y0!Gn-eBb(jOCy*-))Iwgc#_syP_ZM1neaXZ}W*NH1r}EEnZOySDi!7VI&;%IS z`0o|O&5Zlq4z@x+w{M%ygfSVCAy#TwNl76bmfa=8X818@Mi2ut6>#>gzGT=( zL~muRb~(6{?`bNw$leRWx@QfU0n=Gc99w3l;pu*&PM%D1p0LKf4(e>SMP|p}wli_t zstk{cO<58f7Rklap5YwE46DD5?vnsfp?f;QwitFr$RUGr(Q!tOcIM}1la6~eW35b| zu;~jcG>Df0a?^^}(YsK<3K)m2&nP^|#$7;`{U}bMzRg$?xtQh1W+Ky#AjIqv@*+S& zK)*8vjxAc!eo`K!vLqVsK(e_#2XmV%k);KWs4UKg9OFfvy>8-gG*2Q~RyB}9!@TM# z-ByOKZpa2NsP%_-oM;c@9e5?wNtNrul!kH7#X zXk^ZRzhL={V5s~{1&fN>nz>63@y-pRF@P-F=8nUh#Wq})ZP@5?D`;v)XrU{Dq=EbW zK-K3;gc-YLqN7n}yaM>5p-h!-_?#F6#PHavci@LG6P{uIM^pMjcY}n=4()@yLJi!q zDHc!IfX!r8zfjo$Jf9)C>6#|S3VDzR2vvo2K5lfsr3_=HLPinF;NDDlL1ihP*tHm# zIfM-A{g3E9I`TYg0{S4+WR1=R=rC9LHcN$Wrva%L-TlA7kt9ua4OX|Ew@@2=$`^pK z0;NUMJ}?@I)!T&wN21I5G$uPIcd7gonJE1-zUZbv7AtFSS;!zLO6$p#6Z7qM60GUP zVZe=S%4M$Gj6;xq@d8cgEpGX;VV7*oW%c+%>FZnF>?+>^X!PMrl6plHx;BYQu4wP7Q(I!huKUH zA0SneqoM4UC_P#)&-4lg`2}=JtwKeyAOr*k($54~i)r0%%rE!WTW`s$NwXJ!))v*O z$dB8s!A~JCWZ*h11t}Qb>h8SpaV&E*!Zrn5nwuQ{ZE%U1nG?KeEkMZ?D&}Gb;z*cKyT4Q(Q*^@|ObHZP^GnQ*U4l(jfohvztTQxni3^_R*8Bn%C1rGd03AH@8K3YN3eySS(vog51SBfwLP#HZBE6D8ra=D zd@teTW&mh=J8*@AW_P+vCku*ZmVRL%2xwhW;URos4@~X~xDV}QU(T9rjXp~~!coW( zQ9FCEx&C2c6+IR_jE^jJ<|QF>2cFP`9*iLmkHT(8@q$LIK|#6`C+zOzU!0bhrOt9h zPEy$u?qnV7iGx_a%z+vo^^9P1L($VVI2a!*8V9yyt{(=6fnil`A#j#s_*A+#25$ET zbXpo)7l2FOLe3=69e%T2dRB3LaaJdGs*`awRV(Z+sa%e1Fn}faG6y_ta$;ksS|ycL zWoLIX*FK!)%u*_!LIGj-G5=yAht4;pvdX#m%2p3_%u-_v7!htzU{Gy5i{UQJqZz8M zPwTZqkG^GfVs+E{WcQm)TVgHLomYqz&m^8(F<>9p->lYD4y0bx)|s4kfM;8)PNP!Q ziEK6JNSW=BR6uyC)Z@uwMn$_-qmbD#X6W6anG@2}=8#bX^Xdk*I}S-6oN+q3DC~9; zf7bbzrH#*0vw2IKVVg5ycj4`(!DLV{J68Nm6WW$~k6odvZqqWw^@VV4pom=h)Le#S zpzaeiL>R%87i-a+hASLU#;L0|0_zUIdes}gg;lSz!BpidBSD0&6g{||?}5y#Y2@(W zQgjXz%% zVdk;acq~Ufq=E;3f8K9VyRQ?rju!Gt5o=Nk(QAa=>Y{RI1jz^#FCY#Gk#8x8I^Q1Y(I67oy9AOKs{KGk&TJb#^L~K_JHbC(Q z>3pg5k%>5J5-U~wg$WeqBT))cWgatafoX#AGgFaRm{_&T#&9EHGlmphN@3^FhWvp( zi@pqyXMUAPr#ob!9yPT5)=H&>c7*kf@A7@Hg-7%dq183@l+ho#&|>`Y9OIX(J^2n5ce&e37#&8%oq(=xKnS3ppm0z z)T3t6`S!SDUdHy1!k#XCu`L>;phSZ#QH@EIrqoxh!({yq)zkL-Wpd?iOJ+Q{e>mn& zBI^*GW3s4A9>{|Uw2cjHn(olxU_Cw|ZXu^>Fj7&f68A_&LXINY z-abeNI|?n!xX76{w^%8Y%qlpzh2*njhT+-#DRWsBGCQLmIAe0vLuc|5iyuc3EsMbHq8IWk z?m(NI>55OpXgIGz2xPB-33Y*y?>36A>nbHXAKlAFN=%W_ZViw>vdWc-0RHm=MTx_W|6V5P{kkgKWY3e0CB6Iajx8e=n7U<|3n@pD|oDd>GAF-@(mLpV< z_;B~exQc3FUyD%r*BC1?1TXa7MYiaHP27tROWWUiBZ81eJxY|>9YCspPK9iTA%T-$ zrg@+e;?D>t1EoSGmX1TbB&u-Bv2G?!ofJIn2+`Lt4!AtHIA;Gi6;`t^}OeLO91km{XVA9i-s4N@pA@I51L2 ztbxF3n0h6~&R*6GPFJ3N03<_hgNU<|4e+wr130=AY?u3tlM+h}%MeY{eiHBlNJlzpiE@^W z%V3Q6JOaL&C>fXeml-c5rq>^K5iC1Vq~I|22tcMB8N811U&IswdonDGAOh`&v%Dw% zJX%h^-L0p&y28Ce^qa=k36|6l$$$%Z!(^bqiK5XOYHjn;WI@X8mZfBXEw2buyndx(Y}rSFr9LcJL|QsF zCPbn`K`LJzkWSppG+sK2;ij`#vr^0igoFzZg=F}gG!R_rY)_#L1V<7AgTUr2E}S~X zPaW>f;tu!FD2z`w z`hiRpdWG58_W>$yDQXvp9a!fsX!~ZVDOqYFxJ)M*wHTFO|k*x&UnTT*vrir*; z`aJnHe2q?{myAVBlvmW@LCCwNj){Z;LT#KVKMmN3v4dngP(cAaY9ZRP2gU!!8J~#vJIhhP}cF5veiw>CK;XCODam(ODc@cMfKg>hzVrE!BG71 znW7)j$zJkkd$f~@vS}%T2qEqs!VH-rf%`~+M?YEQ2kNJh!W3Bz^^HMzrYpz|3dkn3 z3OS{8uy@ju>@0^vSlnS+6&;nRAxX!c$J8N8591^X z9pkkEl=ueG`4B83R6<-R)N$sElzEq&8&1d<6m}$)>Y#rS0_PzH)G&lal3?6%3Jp~H zi8X-~Lv6svL@Pp0H60)}k)d*opLjv1&=@F(#r=Riq(p;tA${FajUnQjZ|g)%fB4rZ zl+~Z~;Y^C+#$FR~4!uSwlR*5IDEd&MJae`j{<-|vNMOen7BTM|*)UrU90{xlc|}TJ z5aRRQ(s_X?Q=&Y>JxFNEkOew+g_EUS04Pnx( zX}M`Wvf-H0J}Y-p4xcTL_W`8!gzV=LYXp5kHGAvhykx_dw*dCK74QJraN-ug0~jqd zg*Qzv8&2L*PJe4T57}_)mU12~%T>^d9EngP@-&>*e|t*>_m&mpX*h8|b4xk5=H(c5 zF!erwUD`ImUf5r}FkmNb-PDFzO`>o`$|-|Bm$6(LS8rqkR}lANwMF8n2J49Nu%Lid zG{HX-vVTUmQ+Jc|(rk(;9vmp)f6QjJvM|{EAQ~FxC(zbA7FXNwJ4MDsItAXhSUj)?cRzPitkGz6Ivj41WRbal#TVi4oMZ+v8Me{|&Yz+*Jc5ZD* zR7o@E2dt+xCFESfIh}2t8vDzik_b>dp4bY-N=+}NC5phQF~eG}QVKj6j5V5EzkB3x%5J@sgMJQh3Ko6@XHp+J`HX@uUQQ&-n;!*+#@~;<3^PQpF4$P+)Hz z-CFI?W1BZjL&`mdMtcNZLAM=6P@>&(gN=*gPPC~5j=WiX`J8V7SFoJGrxInpJDRYC zo+l?2CD8#-7Bgzw4uCC+Cp(4L2|>(Zyavj$nf7>g?a)muSb?9M(Yw^(L)D;KD)fZ6 zGet&O41rLyM%pPuheEW=t@;Mr?*UVyVBOa?G5xy51>7T z;}txzDNxps(PPyY04f!EUO#RciGD(#80lY=wq8-*#=$Q)VdQo<6!9#Ad6BNUeT*O2 z%xmDVi%-!C1H#(`;<{`Y3Cjw-ze(w{R0Mwmo(rF+{8h{W^T7cMQ}?&Pt6=e?R<7f9X6Sh(qFcckt8y&96#GFWo*rM*6Qt5=Oq_Di z1GjWjM|SUlD@a@a)cU6q6ARJ?Cx>o}3h65A4vi~Vb79&{eA zTyeC8lb>|=&OMyK;&C2+?jD|pZ|jU{a8ZtcVw0CH#633p8$WSn=J&065t`Z zx$nCY8>3~}!JJb*9CDgL55^_3)=T@{Cf%2NjpPG$i}^{oV2LC2^)sEYjC7^MMz~V? zpm&k^7G{$P0>1IE>EUuD&TZ{1kwOKH-a+x1RrbSG_vIkqB z54J7Ec55ENh23mOBxU+grcaB^Fui^|XTm?MHczS1)iUO;!`>~n|6P?e! z08?)TJeVClbGqGT;67Y7ZNk`X+2*~#vYI*t@qim5McI0{P_KUhu3t0nNWQFN{*krM|87(u(f{%JbP_N}AFVuSw zjz=P^am?br;Seb=Zyd!{z~|YK%yk;N8|_4~K{QHShcJ4Ird*uJYAWzTMdrD$slbJN zC$i{ij?gKs0~S39xye0TWmze!Xjuf2;p+dKXA!?*v3!!5;^7@X{qFHA>Kgdf&;J&` z3PL5E(LsXEJXe3IFe9|9hO^e4-!Q7JimUzO=R;%t2KMjQr*}{H z9^JdSb?wsGwNu9qI-z|#m$uGrv`&r=8mgGL#uu`rWdsr$L90P(NHlY8|8ulcb@oU8 zl{Wk%FvVScZ7ae5x6x05zJUH;?+pEGJb<*@#u%Xvm=VLDS1UNAFeJ>El;Cfb7LbzC@>YyBRDR3+w^8VWJQC= zM@Pj@9vbU2nu;`bzgebl=$~ZzO`*&kYXWZt&c;R|z*bNZ#Vw~{c=nblpFC!`H}hAu ziUOZjQ+-=a^}F2=d~TQFd%FxjZWkCWo0w1Hxv|3s_3G^6$d$geI(5J6^goFZb`OGM-+R^!T)hae@ARUj6&@baU0Yv>|?_^AW`C>qmQDyLw-cFWoUlOdOu>6RRq4TTfj9ja*X!A>u&%)G>gD^#LH) zscSXCPBpsr{crYZ*X91ME>?YDkJ{_b4-M+T^ID#F{A0qVAhm22O(= zbYzfYo%P1};rz8uvwB{`E2tbb+DnPvm({9vYE_%6=yAXN;XUtXZO8sTUAgMesH(OO ze;B*e)OIyqQLAfW-8EN*@R7g$y6q9rm*UIWKtc#G=d+qnbZfdVwsftf`)NsA`YnG{ zD|LKYNwZ(;Z`!6GH+542r=A8#R!yp^PTfD+?I%^cf$e&Ct{d)cwf38IxzqKaY1e*t z)lByN-j#bq{j0+@uNgJ`%`S%CwXvR89PS^ZtK+%a6%T!T+3Rnb3zHq%s-e)fah^t< zw*P5$9?m#Qs6e=VClZd@ifPzUKeA>p5TUpNP^TJ$>}{rzDL0918OiYBO3tU`?7P68 zIkOwr#m1kRca%NKfp`4n|FWR0!%_gJe)rBewS8H;^cxwqFk@r>kqW`%q3{ILD|rXb zbs8A_=rZXa1xJ5$>E<^sZpDiq>_6Mx%P@V}bFb$gKG&|x(1`iZzM6lyLg?ldI6ZmQ z=6z>6xs8sTvtrHW-6y*A_M0?!#VhX}`o43|2ZH9Ou6=)Bc`x5b;+|Ud){dh;bm}%F zbY{x)Zx^2K-gopPam&}dQ~XW0KEp#Fd*b=G_MPqAcksA4(bjNIM(E35(V3cv)ho7J8(Kje| zVfu!Tj-7MuJ}&+Vas8J4r~3{XHF4&$4gWm+L)V_e;!?BU{N(5lz4{M-bb0z~AMgLE zb5GxgW0tIXv*=6@pYXYvuYI!b>kB;}oDiS-%9fIEFZCHXDs1Lc8$SBtT+g9Xmu9Vh zZ&%s(ZoP&?i)-KBap;Hpd;+8AEr0c&2Y&qWj`p$BrB_sGmFZ5SO+NoQ`NeK3K2s ztM7}yD1&}T-;~7AkdQ5jAt8N(VnU+zDVBBedl@?mPD&ZqH*c5cCC&*6`S{fK?eASV zxpU`xS9b0^ojrF$!FDNS+lF;n8Q&BXyqEjU`y1pd?-p!-FZblxQ`sk;-*sy96-(BJ z_cmvLds@yteek5TdB@f5a?1A8+q37)@uN;_Ku{~^B=!vnnG>@4(08Xczq3ATUTE&s z_a#}{aO$*dt-tw8d(xGx^>wHEDG#+}0UDNawRo&EJ=9&?773*T4^{coJJ3T-`TKFb zG*s*2hq3n|f*7{@qT?ETTCEpn3Xijg;;3$8zoVyrjPD!#4}2d>8$ZbZLp&TXjrAGv zEFRuoJl=owykl1Dji-Yi3Yqi1b>_Bj!4;Ivqit>aDj`T>Cl4p2+HPt$WW89oaXVgN+aKu0QPhyZ@n`fn0c;DCvb zE_iz7+T4P}<<-uD$KWxOA77fj>a`C){ruaD+Rpb44w^LkiL~qun?ET$ddfxU`_RJ^ zr!HJBzVy!aL#Hq5I(g`aPkL?WHHqwe8f)%O545dT!mjI}V=u*`-rYZ~w8==B&tg>8-7$Co4O2 z?dLr_e8&8zSEA#epSje&!vjMfe&o>w$r-P_zw5|%)opY=2MixOZSIrO`u9IQeCCp_ zlitTaY--Z-jJ5Aik+^q+`yCk?jIC@fCa{8(boAZmy&i zq`X=y^z|DP6`w4=fEhYk{%bp(XYlwbu}jR-+BdfyIrm$KZubp&_>mcjPiCxsBX7@_ zKXvNu8x%FinEB$Sk9O|=>ige2_8t;4ZLTpb`{g(PNgdVod~j6Q^!ZPsz!t!(7CQIy z8#R7P+~OzGEqNuUE}i@QKtYXN7;MXXZT;V$douZn#f#!+$4&|v;^*_gAdlWXIy$R4 z>y4@(zdW#S>pO41`AT-`;(602hJ_mZAL#4Wxh?Ie?F*QnlL#rM@B4V}g4ed^ZOXUX*t>bf#U?e&`zsGOj`}mHN!KsbGk~o6D|-zr<;I1A zXeW}I_0>D3v}X^$e*9Q32a==T|8q_!O0imB)vU*-)%ty+FoQjO73DVWB0a4Q>+|pl zeD8iLe9%MN@$iQHP|k5mFubv8BFFP zconhTCK9oUz?~W#NSV#**<=v1h>}_eVkT;-!J%1{tJoG;gG|n{u9Q(u69L~SWGUNs z=r5GNEC1c5S3t%D`y$L1jiXs#Y~mGTXtkx=j;cA7h7sLfB#Q~Ee$wmZ) zf(`LDx#7Vclzp3AkT&HiTi2+GkqrUWAE#u6a&3VyC}53pw-b~*cq!#K3tz+X=PyAx zWTptNrUJd1#|-u+IZ0bx|A_y#!{UTqVCF*OTiH zZsN@i;YM@O+>C>}Pi{TC{`{*yuDJNOE1%a5QLk*9)oD(*#GVs8g742Adi~nfKd$_I z?BId@pM4Y=F#Mrm-d)I6>%;|ehhEqgfC*8Q{;_lpGI;^-e5Ll3OdN0Y%-lq zYTIpg%zmQWk+nziETn1;rk2LQ!Nrt*`#9&HQTCrkyFNfA?j)M^Au9OiZ^101A|J2$ zqJdOl3uzgr|0I=B24V}%sNm(yE$K=WlYq zWB*&hnFF~CuQ_u+a+kj={1+njRC6Bqgzvf!=kb0FSBU(>>k|iaU%hXR8N`(rzF~em z5G4laoUoJUoag@De#+sBp7d>ueAeaB^_p(<9ooUy`I36JD}A3*eeHC;D4Qa7kxUl{gm7$T!>GDS*wERteY$d z->-g4b1Ao{%K7X9^^r9Q&TMBy&F~dO_!^1gocgaaYrrtOavg2_x*-6zcYMfynP)$N zo`Gi%yEC4>=}CpJ-K@P*`Q_HN;)=zyW5$j29pKTelhCeh*apXnY8ChE&XfRmUDIR6+8=g3 zH)U|IPVGQU%E9CHs;{=cYMvVvJak~6?wvcdbLQ%=R~^Y+9`4;k=j^1EvEID?>$iJe zeKN-XzODkJQtQndS1+AC^vSx^*^fLlpl4@+_8Hf{{l^VE`3EjLXFFvMB5+NGN-0!cxOPRtj7MiCE?@b^ z*1~esEid1?Vde5g^AhJTSuU=5<2-em7~Y5CZ@WLvm^#6;J$JTfW6pg4`#W;t1k0p| z?AUoLW8)t)%?x`w`DrtEVjx!qL(G+eac#Mp6Xt4eO}pYJWNY zdSpMrfvf%L&}Q?rq1_z0x?fIie`(>^0eDyR&CBOX-!@P8@7+$#)nBdra@&iG#(Q-| zkS%L%_1O~SjOe3t#767Jm7k9N>xIRScz1K54cN_^U%uOyYo0N(Uq`K)e|pU^taW8c zFN#|ctGxeAQR8SW*;j3gMZi`q$gpA6w#>I35i(Uof!;EZJcahPNzSHOwu%cWw{?#i zpS0WO!7l;zN@ym?4vf)W|NV!u{1+C7`SfT{!Y`fs!jHR{?#lhKeVj9Q{j2nWj$G~e zcc=Eya5pN8pB?S0;c72_@kacE9bg=&{${H<*|RN>R$qDG^#!94GKsTZuRQXed5T|G zG6C2A^39Hy7KYy6k?>r1`TTxheR!{S8v6CePe-ZU2fMYUpEqkRoi2XUJahDYoq%-! zto`l$;eW1KGHGxx!4Y87xo*^HvNIkU#{Hb$mHVS$yfat(b-JemS9jsVDQ;@+X7&E` z;ev|0dF7kjS^W{a@#Y`rKg}5113kHU^`}FxCk^jP{ivz>>XXcv2RqSZ*I)jw_;q9G zeJ<4V`kJ51pb+?UVV3Rs+UjpVeR;tcy^h+q*5A1N{Q-3Up`Ps=*zdZlKYv9eHK>a- z?dhN8_K)CxdbT^rHOz&(e&X3dAjS))snfLe|8OdG@V7(a@b)TD<9F}O>WAaH`s){p zo(<|sJ-PAg@qffWAP_EYTt2%)oY1E&;i2x29}m8k-{Q z$Am}Dj4x^1(XF@s0jqcL#Hq99m9_8eQMIY7vI!kHIM_OC-lC<+%WH-jBBsSA`m9-o z)zCWG`F%tL)q39GP}+eg0<5LGnC;y`$!DmD;+a8_^w|pfmC}0ub#c`gzeaf*k9Yi@ zyC7?0hv5r!}J5>4(!eb?%6W8&q2jUYvjqUxORY0 zS9C2GQ8=Oz&7>Qy1o)p6EE`Z84sV+59>UfeSu=2T_r}p1;`dIHyIywJ3wusm+)pdd ziBd0C3%{~a&KjcEn7`){-2~qG01__beJ3aB_`Q5pc8{#?(v6}U4z0qOx(Qo2QqdEo zSt>xZYS0z&C;ky3?=0@*$WH+V0t9By=*{DzR@QWD>CDoAgAPOC01V>^X)P+u#PCKzHOq*bVDITwv5B4hmIK4oH27uT|L7 z2E>C>5@LK2oROgRX#H^1&>{5Ns+|BR2jkB1KzOzDpUJpqq~i;Dyh)>t^jZ23^rm^Z zGP|I*M%Yt{OvwwE))C;167mqZ=O)#1LKxsXdDBSWwIfHEw@X z{Gr&`b0eEo;yn6@N*sp(YzgOdYHv zbi+XouXXr0hK;q(a7N>|kCYzmL&Y;j-Y``BY%$h%&|!?#-8NSDW@8;EgO}Du8_B<=yNWV@^ zq)ppSUle{Z{RT^z!V-XAu$It7$r-WQ#-+l?-h*8MV3!N%YJ?dM>zInlH2aN%#zgnZ zFmw{0?Ydd{ay_SB1{dCyLYJOAoTH7WL?Jf8TP{47I{&iNx;L!V$8eg&*JJ`=V z{`B4BRurTG+-l0bpG_#kBpRip>UHuTo_VKWi}ES!Jb4dwti<}RFT(&EK< zsnpVCOXkGJEyNBeVUBnF?7K&$BhU<({FZx2rG$FI3MkIEki}(n=hFHUs{lQ@3VTKf zd)k5_i+fesVNigIRmZJ?d_BF}D)qcnO;j;#O@FWeWutg2K4RIy47I?8|24$Z`+{u2 zg1zJQcMr)MFn%C;;ypz2|7a}JZK0U>yAU^1mH%f!QK7|eAp!+GYQe@_q~dF*G7D3> zrgq!zfpqBrG&~yqz?RW5zC*ERLua$g$Ox^8%`R!=7e_}(9Na`?}9yH zGhAQ>m_c+!6EQkexwt;0cHI=r@v$H@K+|}ZVUr{sm5S|Q8$LmK>)h0$F_wKNNYFfudORUV1I0VDKV?>>iSv(=vZHm-oy2^ z=@lCjBO1v(ojSRI@PZgur;4sSiRYg=UcTLo1ka<`3}_KoWvH;{6yzo%KuCv_00v2? z>8>koRwo@`4+z`v4S!I`Ls(B>pROxDw)YMz;mY=PCj`-=Y8g$Z%oYzE9pRq63sYw9 z%5|nI>T!$X7Cx1nlpLFwv=HVI@A#2-k2gM|@W$8f<=i#g7^Sf9bTizC6c$JrFTn!a zFK2P(EW!1-C8~!O>VZ71gpCL7XGy2o69Wwhkv594vIfW(>1#zN4 z<(|R!Y#nDcIU}&&z5#6AONWboaJu%LR4H93y53u=k`6M?u+syb@;#tDQ~x~o(j=2s zVxQz4R76B%Czh_Ela-Z3Bv+6>bbL@Zid@aGu97 zt+@S{`w;Y>+%edd<>DT>Dt8$i9O=#G>fBe6_9)F9y)UZhyrTqT=uxmVEujmWOIL&$ z`#;>h4P2B}+CP5ZGb4^TI*3GQq-2wUvIge1B4#6a6S+9*8mP5}u-S~Jk&!WCM%E%CGXL*&&ON+|y*y9*`F}o- z#mqhDKJVu`*SX%$4s-~0hG4=hNRFhjPsR_@m+&Yes*hP)F-Am1p>B!M4MC~ENHIKw zYLQ*lffQ6{VWEU{(MAZaUL*nqMb&TAZ&8V;fl5KbRmp#;Ew0lt!e&8C1(a+typQ{| z>Eb1Q3H;y;bSapjq=^vWwvJ3v_1}-Iya6f9WVu~Ws@dzAjkQ~#k9N1=I zzeX;DLB$i+;>qQZY0?C+v1|Rby5=VzM#@@0U*SoeR@igV<9h+Gx^){hnyxu+-(0i_ z-OuN}FP>1n1R0*rkijT;<#HOuqck3@kfCHNe*O}Ex<5?i_ZSQqb0|edwgyBldLW9aD*u;yK|>1NELFc<1^M$#}$ z>52c%u}ku1Vf{K~Y6^@>ab5SPKi^r4-qBh6(;@~y$4(m4k{_)xB>|HpMYRoW8hUo9 zXK4A*SBGvGI(O)}p}|8vL;gHu?vP(l4-FVHATOlC9B!W9e_Ow1lhw4o@1fw} z;K_Z8j1|3gy(a{%?zO{kRzFNXQ}?ud1Rc1;pVPMW%Bj}y)_X5+Xeqzc);z9x)x}*+ zP5&DEul(;yzcqfFap6zjoNXM}=-Dz$7&R7uefs>^^G|=(crNYSj)sVab!QuW5BjR> zC)XeRa?+O-XQrGv_Qm`!n(8*zMb}k)zWDRd&-a~PaoTeF)Mqb!_TXpHpEcE1)V@@^ zx^_nGgxcuZ@Y>*7U9D7`y=iE>@*b<2ynN-fIdf;H+%p6A#-sUMz5YK2nKi+Zk?cN4 zPaHMxS3e)13=u@xp`S#Q4aQgiDDEEzC_NmU9dTy_7eP24rv!zYfnpOEuQQ!G(SV?a z_ZZ$L#B-=r~vra&`5;VnadWS26VUFUJA+vH5@$YXnHYH*Sn z444_C%V051j9G19E$!t($^jS$hwCD+ktAu-m~Jr$yxf;UX+8NQw zS)OE_9>#ZK-LBcBGnISAz2yKFozLqiNppu^8NU^n>@m?2=*P(My^#dAZOX zm*Q5OUQg6#wVQ0KN{b(A5BSES6aCEucor~96AFlW4trxKM*UexDapG z9<0SDr=$1b)R%mx5aaHm*B1)#QE0!068-uZIq19y;Qb46PK$AD?W1|}jYcj_|BO59 zFi#Cn(4HvxL!j%2S)R#?DMk-dAPzX%W?i7>wgI-jCB*_s# z*$Ky;&o+FKv?&beM_f}V&W0#LaCuvzG=CJcvA3ZwoaXuk_X_IMUzYj==?%S%vaa{< z|HtPL>gWH~gi0aY525|SpHcJje!g?*Yk&Xd8ZPBCk#V;+ew^B zi38^l3)>drsz}rv4U;cOZc_1+uBZyZ54t`e8ss}&5D*=Im_%Cp?}E}Lrjm;?0WRPh zLLQ4T@6T;h$3Sy?I}B&^V=OWMQqLz`fhMd>{TkW%O`phE@Ga z)GBEDf`Iqq)Q@q;X|WOgT|#K*4Ll%t8i)MC!w!ns#ycZyJ$z+&jng5{aU<2tE5jw9 zV0kfy7!Rp~eJ>#k>5vK!7Yv{gL%ocCTjf&;hw{I58~T8ELz;B78Ky88J`6Gdc4f{m z2>9sk3Fw*-fj%|na>AjF*cZ}Dj9HZBXt z1$)`K+(%{Q@?3aY<;=^?p0jdM&O^}2EuFn;&QeDsL# z{tJi!op9m5XtPeo!Fdn$p5F^fj%Gt7$9IOdK^WR|EIZL>b7YB08qb zyg#E&J(O?+VVyBEnc+9RS0@EN#)&FbUL$$0KEJg6j zueyzF)V!%bA0FBSPy-&C@$bY#T}0}n`;P=D;wAw^6(v9~+fC7$w9uqj|43YMLU&n4 zlC*n2M-r|UWQH-bq#o^@Sv?>(3fnk$Bc=>xBlaQ_QP`2fA}k6Z8B_1hB_2GXz95$k zFz=U9FPFDarRB)3e#|S4ufFJ4D`gL_aU-3iMA(|$B=mue9lK8li&>bCp>z$um*qe3 zB2e-&`XU78X7_VQhg~Yk*Wbnc0V!>Xv6lRe7*Q05bBsQ<4PtQMze8#n-Kg-}&V$lA z;GBoyL~&aeTwa{i=F&`!L@3m1K&*KB7oNC;-WLS$T()JrB;SuY*iZA|y8}t$}u zJ@1>^ow#DoOwKGe9``j|oqu?3H=K8v-JN*q;xw zsiQwxMDPs?;e_4w<2XMcK+szFN0W^|*)RKbZMru775u^@e(3R|cUx~shq*=uB=gLo zi1?(!FoS}00D@>8|MXS6cP02E*lEEti8X1@$ss43tK0-YRla%hWiE z=ukjwM6`x(VTVzF@c)J_zZN0_ozAasYirX}R;{;w9lG1rW-wgob)_|^HK^BRW6R}B zeJ&gQLH?lD;FjPvd|wW}Xrduq>K76*>?rpo74EG)+7QvudU&nb+VCK(0^Fv|d1yA= z6(7o;%?*>Z3?w@3(QawjHD26)FTD^PYxgSYl+yTsoVl~-&0R8kW%iuhc?(x+O`fOs z@Ba+2P4%qlC-ubzn{$?}SV~$@)6WOk;k`IufB2J7_9%1-fc?mi1MJTFM2b@lC&W3A z%w9GpFL%-E+1WYsq)lBV9HgU(1kD%)&7WmqEFfyJ6d*rLkZa@8?Dfl$y4Fwb<9U{~ zesU4di(KnpGXdXWYyG8J_%`7;)FbA?J1B1(&l|S3jpsG3ZKJ&A!oj>A{`_)jeD#KM zh(el8F;$`t^UGy5&F(Z@H4VXQOqKgpT8sER6`xB(5{l`e|1hyNvJvOtz!*1zU7=Ugwgk*wGif>+cTv$e=%Ioe$F zC1`R3dxnzD`z!WbwHz=?l>WG7w}^TxY&c*jz!(+ie7yj#*t{K;fyit&yKC{@&l4L; zcLO^?#v-nI(-tX2TO^}cB*zJDL87z;i4b#|7qXU5S)LKUv3QRE7WvIDm#Qtd0GUCV z0iAOD>Zn!P`ndnLj@D*3$jQ2GkUP9ljQfr_1&!PI#I~7z`|L5ZlYgV6Oug#OXuK0| zw$n0_fw~4DX!k;=b_45)yT_l#Q3+)j#;q*^3Q4|Ck!p4iK&slTUceH-_BWUz)+&N?*xCAnmI*8+YO)Xw@ z)d1sXkG{sx)wPOq3AQdd*4?A-DPr?UodhP+d<_jtLa+F`ME&;$q)E z-xfzpw{VzgN3~GyFIq*RHykTQ&rZcnzPWQ&tjNxlh7rc1i^6?-Q7tL2x?F7dG)5+I z?F`I51UiGlOl)cP48crH6>j-5Sa5F_AvyOmgjukI-Q#svdALl0afr#n_(q2u6SrpR z&FjgU%GIpPdxR+8!jn{*BaF0+_Uj&r^^P7XQW?i7_Ykwi?*=PQ(qeU7J<@yb$$$_( zLlS{*uYNy&`NKIp!++A+Q@9oo$VRy|U9NA}sPd-yz}}{TjpRs=F&a2T1&6P`2(e=Z z*?$u%%)G`hNc1SiLhdwLdkq^IqeAJ|C?xPHtbygy>9qDGhfW=(k(v+iL_>rbbUuh1DkeY2K-W1{d~02AJJVf0l)c4 zv=R*+w9@Z?9Idnk3r4dd#B5}s841yPz9km+0>48#Z7PsQQRe+Ya1GPzR6QN@U2cAd z-Pm1F$Qxkn4yg|O$*#b~gc9J&f`@usw@&GBFiSGX^<0S`jXOu-Kt(r9(QCNsL5%<> zDS+}s^-%+4W3l<}0FHaLle)LZIj84TEJXiQF&0>@5!R*9HIgEbj0?=$8@Nqj4SWRwK>Fu5P(J7)MNauF&pU{6 zL-awp;VpxQP2;T3DeJ5-7!W!!uyOJLwugPO)`{gjx|C*Bd=?t z!9Un&q<+SVu4PO=SSCt8V`=w}_V4Iu*Z$p41PCqtBeNo6{)HWcY`~#G?o^FWi6|mFA9hki(>21=J;uz59!x>h6pbg%?0FpC`car7t`lry(di=j zz~ORD*nR}d-!p8_2RC<=di^eXtu}VRcBr}Vm&EA>PQ_^az*2O&o7jvRsc4_Q(Z+Ic^?BZFCpC;{0Hh%Zv9Z9j|rDjfHt@onDz5nE_zM`Q*z zl3rrx(g*`voS&Wx2~-ErJ>0q2wEUGGdGuix`7B$gMGW9Mm(a=Ca~Fv@v=v z7ty_3Wan};oSw@?b}n}}ZO0GLX&P}9yT8AvLqn>(3Iks7B7yT0_NyZa5Ke@$g_A^n z`8~7+%4uZJO-}0EB(-Gi)YWT)gSC6H@uFA+b^6gh0BkhMz6Tb@cduYPvBYs12r?&ab-%2m*A91gCMEx9%<#C5MAwxa^JTtg$Z3RX-zmvPHtFL#n0@Sw49 z?OOY(41FL!l}}%$Q#pXJL_~?>!ab&@OMHm~zDJO?ThcaMuqmwJgdJQ2KpXZtvGnyf z%UFD=U$P<+TdFl>pXuDW5#2=``R!MWUd<&6>c>VgMm4*C7lEnkK5uIe(p(GQh6-OgJdRmEGajE{a#XS0<#W5vU&u+ zxy%*^vGFG<171MF1c4JFtu0_*Z7wE-J7HH5phY0h0Cp8}e)S6q zYT*cDSyAk9($oR(xJn0FT2)7@=4z8rxrj6m5CO}ievrvPRwh3b-D|~BS~R+=fm&!D zq^Ea|kbd-pIcRd|-b(X2nxgn>=4gG31d-~;u8ONrH&a?wd$X%NgstJo)&8BTG$N5b z#WjvKW;b`1JC(_7k?G9&-E_PQn3skyd!yP2Bs(CD*_!b-Lf}eOi2#yx9fWZep+_ZB z?`XztsneKKbi`G8RW}Y3`n;cPhH(?8p%1M0;6ZkG#&4uD_#yBMDb;fvPj;PO(UY!e zxPkk$Zv?H`G2cRb@v$>!b9dzH8;h5hNiL7|=vBDsRzRhQVSe>GXiynPTk-!KUR@I@ z4ZeEF0`x}B8~*d5Q?o#)-hU%H-8uN0nhQxL?jH-N;Zp8p$9X!EufKvf5V(_4$3o_- zVCvu}eM8yj!RqmmA?ne!pOHBYso+>Yjz>U7bDg-4)sJ{S*vSeileiaRtcbEV$VcUm;Ig5f9hqhXQdU1={RpXvoKMl^bhv6r zuA5IECHM%t_AuimiH?kID6Vx+FeGT7@cBOwdd?spVW|`}jW>&fqEFJ%78Sf=3yFNp z8$Bq??KBst;TU|H>Bo&e)g+%qjWy~Kb%u%Eh)Sf9XZ{1WqIw6vf`Kp~eX`VDk33@gM~6T3TcrWgJpUXy zr0qYXTSxBA^!kIO`=v|(`}NYA*3t-%?JNH${sq$i^Vj=R<$GF$x-cg?<||G-z7XUg^~< zi*ye??2zX8t1lb##z-fnSDW&3TKxlbXD@uQpvvE*D{lNt)*F6R@Ax`s>WlvO_3OS~ zaQAcmNuB|MTEJYm8D5IYf+_H|Xcv_H)rEZ2KpE5^aKE(6;}vfs?zC z9~6cx8m2Eim|cJMxT=GX3q^;C%m0p>o+mDaKSd_a5ei!eNi#WL7~OV18(UbNKb%`7 zLM3Zak3v?EIMx});?xxeSG|Fa88lhV8)PV~c79H!)%>SGfjnbS=yWqst@(e47J z2t<>EA-I(`)NfGhK>#5tlMenoFgX-)2uu$X)kNe3+(r$S#MQ0NL}Wwl`L}lT;TY(A z^x-;2o~Lfp?bMC<$?9*Z6Q{d(!bF{j&HpQoJWkSg9GY;$M9;$Z5quyROoTJq?bNw5 z;de0;zsxf?+~6Y(eFtM7rI7#`s@HC(+!-ay-%Y{BiJYP%mH+ zBlACTj|r9As5BgU?lAA4VBYR$@Ww>;!}5n4yft6T%_tED-z(5+4aeRl8X0z$^}2?4 z;UY%gbqaEC6n6@_+GQQ^ z_UE{ugyJb`@puDaKXJX*sCf&1zD35h2eini{*8-Vy!?Bw0F(M=&zp_m&0aKb{(_z^ zed?MfE_TvP=(Wk|dg&NM;vM+Xb&dkPMnkehOCkb7spW4&CCUSwlwG_GGM#WFe1Cwy zs`f*yD#et=p8x=cP483)*~CxR0aK=Gh^(jjc-hEi*X0OD4d5d-zSRAw5w65W771i_ z4-_?CHPXN$vpC~tvQZflB3%lJ@v0xJJwu$~qNW!HahB`L7h|Nlek9x(NZd>k$utmB zMOT+j&d^!(gpew|>Nery$>N)S=-M;> zIb^S^)TB;sh3)K%z_{e%7>gLzF*?`52ny_h$bj1P;jJkk!Z9Hm0t6nAi7QcH7E3a0 zong~NU`ug9(AAJj!|w_U8d%d+Z*=inBV~B_e~c2>;J(4Rb8_axiRa^=Z;RN5^DXjl z&s!u8J?^8IS8oPwk^Gx`r%oIFAAjg0z4j`Salre399@q~v^XB5;RpUr+0ai~b7d+| zHz9H3mOYY85AI1(JXE8r+31uHP;5QDtG4$&u2N%7trn5-DH8f(fx@t2kvJHmtmf@W zMmG6DocjnUZJNlE=G)xk5fV4Px@c(pVfUm#&=k4H^fvFhBjJ30ta>2H)e@9n53g5< zHt|nA8&mE!3@wtlReMZ*LiuCYtA~XCp{$|WZ7^%E8a`4zozG^?ruolr{t|Ezj4KJX zyJtB0-FNPyyp^NHWi&L8QeW{rn$k-tVb`W`lx1+>pf5=VRxG$yJ3-4%{R00Q~f{K3X3L1g@MmOj-o`rQd=sfrQw7?NPEgsL`BS-le2a9*c%hW?}Q7n#_Z)!dl4~PVcUM)Iu;$Ij-86UzW z^V+i3A=F#MdpsJ`s12gFFZI;~VgG?eRXlsgh(&gcxV#syqS+jSrU*H#L2DALCV(Sh zcBHGWIhHydi8GdEMKdLgS$T*;{uB$lq4;W|87bf=ovT2y3^ zodZm|d<25JG4gTQ>qX2uM)9w4RSCi=jG^6-0&h@6f(rxLWX*q`z=;_w$r!GYtWDrE zJ;_|0jiEwm$#=0=_V5_TF0+kQZX?{Acp`s#&t_Bl%hz0X3 z5)p9X&-As^0^eF1;iSa%mJ&Rg-BYnrduW4$+&qom&w|H4z9?GC^OP4oM4(jw!g|Y2 z`b}poI)xfH;3r^>upDlYfZl9BNuLcdl^eWjGYhS$O+w&dmUkXM9z^9+_>RQ=D$ox; zYax0XO)$g{S#Nm*KNyX98uF&?B`J0gK)lXGAF250MNosAsU$>?q3MzxIa=i`1EO>S z3sEItVVY;~r?oGcAIF7Nw6&?qXnaTGds_Q+(!QI7DyU_2LoP?bG_Bw#SSA!mLjek) zWT8FsV@WQ;*2W4yK3S|CrqFtmlDsjkaon!H0tTtrY z)dGrW`;On>1sI{ag*CPDhiR#&Smw*`0$0tF2GaEZf@WT!j~V!QuJ}4BG&ehEdG0cV zcwd=4dsX(lyydyl9vWdG8Ix@!2^l8Kie_g3JZHq07NN=_9f$dv(}h(I#O_0wxjPme zqr-P?Ii0@hv8IYO=JiLY>@>?l0KifJb$QKcXrbrh2v}-Wr#vSi{@jsDzz_yT+2$u9 z-+b)bS^1mM;RmI>fk+Km2=CXsGVJxpL{vKZ5(X?s*RM>m;xZ`e*c9wWf}X#SCXa#c zzHU<%j^^v;Enl|60p~5EB;jb9o%_(D?3Ez^AIaP?WKL!_QsRL5oo0e3*OIKX-<+Jh zML6A;E}gStWp*uXw~q;IZ^xE17r#Y@fN%q(V*sG%!e-N1@o6A=O*@(>u7%O8>tG&7 z#Z2e>no8+>H-Vc#sWjgV@et=*As$kFZ{q>WywF>V)m-Yk4H#=`CO?>?aWFGS2$Zo1 zNOA(LQ0T=du-JDXe^&Sy$nH~g+Eea5>^a~)eDe6oXE%luC9zIo$j0SI*#dBj6UI8#y-V}cV zZC{7eS#9)EltCchWE?Q4xe@0qC<}DS(4IfHihg=q_>oR0BB7}G6R0)}e-Wta2r`6W z2>6OnFGLX3jwFChp^sJgSpBAm6)x_}T83rK{xgOpR^XFi}fT6?mQNdl+otDp)lg%+66 z0n9jIT;E}&iJ$l-`S#%Fo%F_Orr>3rrtr=+B9%&Yn%J*8o;6ZZV-W)!goR~AFeMU< zf~wSF*<7W1n8Q?XOrB6-UPo3X*k2VOISWh8>nYF)vfn^Rd?O?f19qAv)AHQ;*}0Es z_nZE*vrPzK?mUKudgJ|^yjGpxx$2EBC+_%2Rh4=ko9s4br`wlQd+QQ=q{M9B5x)UG z!dVXmxEV3>y*fk#vbS2jksCo-pJVp#l3Yr?LA8IEXphW)8_?sdl?uXu-Mm4BH7Ypq zoT$|1f2}bQnk1?bHYc^d2Z*^)8hIx$>T{}x&S2$}B?lx`se6tjEI}j!-S^CREpygsGcK2T4I8cA!I*VE#e8y|NB;&=T zTfGmoCMut_&$wn`)XZl*tILdw>Goi{!KB&F5g5?q-YVuak}pQ{zX-w*4cIX1&0i6j zFh3gsw6b%TX3trbJ$vDt`E!=d$({cOU`ra0?pq9;DfN0=Eng@cex=}2 z28nh0hAAFdsqel{i)fwR6zilh8DT)-bd1Esmma+gRA!=R+D=-Mub}O~aX|+Gm`;p? zR6%h|swkvbG{!<_j$FP3ZzXRp3rcYI3Rn!P7{bM6U+VEi-1K3fy(6~}!Y;xA`thdz z7&&LQ7}(Sdh8N?fmeJiyZ&9|=a#bv7!YoI-cG znym%5?y;gXkb_`iB}l@`TJ+4Itiq3&qmbm(G{a0!#$^?1xvSaW{Ft-M&w|l-pH^c^ z2*N)QiVBD_I&pI97i-UXsLrpFm}4<}u?Wv>@9XrbtWuSA0RF$P;(+wHsuZcpMpb!Q zRbFs8GbQu0r5sbM%1bWiD!KjV1y$J$-b`)0=v<{1K1ziP3-B3V?Q$-V%+FB}kmqtJ z`MF$ty4v8TpF<5g=O)EBsrIdT#r@j_<|HMPF48EPF$y4^L}Px$Vwt%gM~QUTvK%Ad ztFD7a*GOQvm!!N9+!AwprSb~StNl!QMeUu!oC^{iTl32qA9vy5yxvTi%R~6)?xAD=a@mIPEg^$_2LeO(gbVp+wX%g&4`H3x zsfmJFffk1r*G_;yP`{W+-}^l9=sv_2Y?% z$j`g?dY{TfTTy;Vk*%oaFSJHA&Q(o(v1CWE%UJ;WeKTks0R(q~(k!``!a~dfOw}#N zM*)Rs?GZgln`yN<M^G79SN+1g_!iIT~DHbzUU1ZBD1wYcUMof#$Tp?K>f?a3l5D zK9kFI^~wV*<3R)kOk&DRW}Oe>W-q~y5%b;6d80JAR+2cRC1hmy4rLF zV~@6}jm$n5)4*)2aJ>#cs_hHZLV~>*-cCZ9!}vO_*6j#-@eo~-5MYmfnwzn zZ9C+0Z2;!=KG0<7r@4?As@(u_gkC#(i3E?#O=C>YNMlM)THuzCFjd*6mCZAw`b6c? z{N9zyHX0Rsj`l=g4sre+aXGii=JhXN9knt$=!{y1s2(N1M^umZif@qm2*uR$`PouG z@rZyP^AXoWa?vurF%TPI{hL}RH*UiNQ?_w(lFepdTMH22Mwu&1{%?7rLs>dMGO^X1Q`IT_E9%s!AGdd8K#Un zp`1~b3Ep1O7$vx;!zYvp;19E&_GXRdi#o1j>dota!S_=R8i)rabO&gH>b!n1k+TAs z^xADi6*0;kYn?l!C_K_QaK}ZTx(9J8-9$^#?>a2S%jL{g4x4u5z#S9zvoU?q&GpA= zasboz^DgIEtXDPvJy*3~04^NZjxG6wVF^?bT~zkRG^-d(MH+jKa8?F$zl1OU-(SIJ zIx8gXN0-bzN5m^$5(KADWiQgwPSsEkvlnDA+oS0$Yt>Yy_Sz1nsE1 zfd8^+NB!0TSpgR}NZi@#EsTa`J%BRd?NlqPyBd6waOF4c>y zO&*D!=0YQ=y|)^)3|eJP)ifF?E=?PV_SV#XoWYjjh(yQ^hxEV-TrN5`seOa*gRBU! zkQbJT74kct#&pe1*H$9L<=iOc!DRu*M=0+Wk+iiFiShm>A9T_Sfy1dAYJR5$=caR= zY<_YFo_uxqXh*DJz;jqVLaFTt)dU!4_EkssQmS8h+^-b;f*@>UxUOHxvq0?qi-V=! zi(q4shY-&15x9k34`6SWt7~di`>H;bS_jPQBj6(CyAdCp753c#=?znk#~hKXeDBe- z{R8(z1dOi2zKuDA#402rPFTzlo~(R;q#Ba=p!bih&}PZ;5ReLClQY03Fl;CV4mquD zR6bSAeg<;!2?*T^1XATpFRRsC#j%%qv|eof*JwP2wDWNvW&e`mq3tAu1Ei{C){qphJjmrEBO$&S+PwzBUqzvIv?*gxmvYP zVD{6bJ^bhrO}p0T39!XLICu>0tW~w|h^b=sZAcnv-$C;cJ!H~teZjGL#C_RHHHqYpAotbVT>0k2y!gV3F6tAqidQIYYcrS&}6oea* z{X2Z;v2sLOXg@#2Pl19QgDaI$gy9I^S&62hl^@~rBL`F70FjwiKeOKNe_mBa?4}GO zl^y8(^J(>yMCvHDF%_5AJx?Q|4Lkz-dX(7LxE@@Y5KyWS0#f$*UZZ;LbA31QNnGHI z!8diWO||I?X|v%zk^$j_zz4&0K()0H#1zB_ASQajMP-NouDmD>VIsmP&cL^TVsSw2 z8_AJXO>>O0kJ)oZ+V}ATfKDv@OsJyZyx^;gcc93%-XmRAcG2>ctM)xH`T!9&DA0ot z&=s7R0cio7Fnde;8j`i#=Y$mAL(dt%##L3?7>LIprtC^o_Lz$oBFl6^?xnStOG09$ z0%_5jyI3Jd#g1T1qAr6FY8&=6Vc@i>8bka4s;n2woawpXn(Zs_=&(x20$Lhg2Wt2V4zK#_V zEpoIa6?o((1Of!@=`EyVVzK10jdq5(TaVCl z)q3m_>oNE0_0X0=#$nTG{`xm;!dB79gBRQ32RHn5wtVPf^#F}Oplcl@=zR>=JrYrMTva z_%rjy)p(CXzC#fTmg|CVE>c~4sWqwKHBs$7>DsEQycK49AYIl2H2+RVOmMg^v?MxQ zH&7+Aro-3+i~_jUIZGd!?a1N8j`R*4qj9j9(9VN_wC6(9frZt+m1r(N1Q-NGCCDz! z`l{))G1A~t)=nox0z!P>z!6zPLJnNo3zFe>;7|4v>HBEiXF2NcQ z;-d*x&{Cv#Xv_zh9g50CW0~N%g~SNjBi|;}A7A=sI$v}cUP(l_F03RmTz6dwU!$7b-5swcBE8`)`CA+)hyEWmU_ zvY-riIUkn_VwiLITmsZ5!*$`Uv`Fd@h|&QYFHDzDsLtV7gtoHhlBhd z#|njTWdf~GOZ;JP)?n9ON|FkOc$L9KqJp+1@oK4IBBmwLO)qaFetaPrg-?=IbC!t7@-glm@7wj1@c zr>aRdN|Npt-2y_q(=8D)+7bx8x&Z)&CiS~Q*f?~Kd3-kE)DF7V46If-Wroj%KRN8y`ou z2%7hohM_H65HJ~T$p9MT`v!ovz2+X6_b0SG_6>9N2Z`qn`&FuHA3|4b*s-&6b=YqF zk`Tv`{6-jU*+)Q*L2GLtM#5+3c@?sj^LqOOs&g>z!Pqq}rH^xjdDkO;y?t;W=P12x zSVBd9y~~-4-uDsXO;lEy3$I`eh-lBHc`~m*PYYwm6w$)t{tMf2F1h{n&0HD9oOHj0 zf~zlnh3+I=FuTbl39Pv6=@*M9pg7H#so@i~**BUPf>PfL;;SFb0&ven3}`j=h%bpq zHY~b5u!c@E)Bq%(=HxggW9<0})T#}Hjqe`BqNp-Ywn*&;* z^8l8*p^&>I(cy3ry*IC)fU>^3@Bs-6*zP6#sRdHfIaDcl1QH32@_mP2h=9D3Cl1H{ zz<9;9Jwemv7=bgldb&6Q780qJ(E(ewxr-%e~anVuu*_( zwIY)_T2K)v1?4Pg${eP&WwguWb`hZbhXrH@v-Kz9&v6=g!;yC~@}>mjgEN?IR6281 zXR^H{-{GAB;f`_O(1FxV+wRPMoOXE?2s7$Yx?9XeXo4wC=twwd)5%Cq5u(jEh_(XBVJdkIAH8Yf({2GwfJspR zsUH+6BQ{{&juk1RHY8!fgPG*FozX+ashl#%8s_NlQbKj$510*@qs{!M(uw9>&0x7y zTeu9NBp6mD*dQw(B-%2}#VS||clKzZ3UA^!n8Y{vGJwRGeMDcdu2)YE2%C=eBC7&g zslU^_WMZXm+%jE~ThVE(9wEBvv}AdA(Q*;z<5-1dIE!V-!RXsC`u<33LfUDhg(Gb; z(ozCcA%;D|7mUutH#O}4n6MWjGMlDviohvv7Q!^T=7!tiJc!d!dTGlY5)dV>MS=M! zzV>~c(9)JP>I^WMM1R(A4S(m~8TZ^c?pwnz>3J-@vu@cY93KH%{2!rL`bV`<8U$GU zAMw`oE(m{=PRtnPAwq-x8SzJXNj*sUC=wEkgP|P8>aX( z*3JCyxvwmF(1Gh2WSw5G5BwosuQ~4a@pqLTc>lx3Z(IF0!pKF|ch!GWHPOXkQlHri zmgYHDX3w8Zx9g6L8~ZD%_fIpmpIUMDeyIrk%cDB6MPc(!rrAGhB-35Pxw(D+p3UtK zqFI>R*KO`6kY!d*w=LQ4X#|S~NduPVPgFW!aF3&2=nT zkewTqw|sfjO4zt9MGmNXajSe(c5W^#-R3RN&2_BE%bp*#G7mNt%cR`w-{MN8yr`Vz zc~Oh#x&^8xdwzS(2tfk1!LsaS%X1%zLWRrc&7td=q81=139^ZQWAE0lxodf-e*8b) zpE5y`O7BE6e!Ipwa+c&E`m)ye_$>=K%xIy(v8hj^3<M5UemlD6++}l-QbD_5eg@^)jjI1r^+3h%gj8E}l#74!Khx$M9(O6QyL8tQ=&D zMRopDRo;izy;3)G$0F+V~QiCAS}zu>^y0}JUAIFn-81(xri6@Ftqv72XtOg zSbk=UP?ajENBf{N+(e*?IZHXh{->aCp}{?9f&qxjc}^;r$CN|N2BNu)InSB5H>-!x zZ8GR6lghrtx%W@K6MSnUvz<$KIU{g{az-`90s&Uac%Zw+jOong(ePa*WcHuH2*q_U za-ys>a+8O1`Is%J_F<`VkU8I1?RCulPq>1RDM;&XIxmJ0EsY`SQ#zZ!U^v8{F|*#* z3gy1cY;~*;o;i~_2$mHmaaNwzG3P8pRSs!n2SEa!_OKw%2WS~;VY=>OR z`vzEbKt^gilxV}Pn=cW?aBcxDRtmU+>BJQ*0r2p1NtoJ2z%Y$0+pRDb7)v%gWJJw9 zu~Y;|oMxG%PJ-z)Y^>tH!Y_WiCkv%%f^7kVuWAFV<>Oc=Oi>kYiUCtHiQD@HbHiL% z@4&Dz%$s7OFU%248Bc3AhonkRwkE=+)DfiCqZU(g!sYz8VW?(+!2+49hk#;p87ziZ zsoR49=gDe%D~$cc9Jy+)b| zc~ZgjZs69xWu6U?UQ6C1o(*Jhi44;y!<1`ffVt%R=zIwO4C4bdd5@6!B!7;?Qxxnk zW`Q&KE9wh=(IVAZKX&{^1xdyJmmupyzjF7>3go+^jF3a02}cZuK4 z^xKHvlq13u%%9%Jo5_@OvdBpWs7Rr_la0ax2mmJN=2KqcVt zSK$msnDR-^Z0b4m$}sVxj^@Du;Q+srkA@V5Bz#3c`*uNYL@P#*&U=9RSw>&fK04Se zzKjTiE@Tp?$|id6Z>8$<-xGGCu7j2imjU53L*bv$8cQ*NHUq30SW4ucC``ZR-&4*~ z!k|4a$HE}k%=&@Yyz7cXuU6Tl6Oi2slHn~vuIeG=AA^M?_fGlfM0CPnexeO;#NA~1 z7E8=h?1>X9V#W|O!iv**pL(V23!P}_Su7GFYsR@vIx73{t?gQNWBh^cT?99i8P*5Y zK#2D)T&?adLTNRt6_ZaD=kEb-9B;v?01%1A+|v}7eMUw`#(A{2A*1P)v=f8MTY%e; zmcp1^v)t=TqTY`%DEUy)26SE;w}D2N*Ke^LQ2N7f6SZ2f52KxTpzc_LI^2U+4d)na z^RhE~#G#IpkFtUC5%%n8a7uoPQ{NI{Rj0O6sr)Y>c;p+9D@c6xz&Y_>`EUo8-))uH zVW1hhi~|lPFtB;lC>6{>D^c=c?05>PA9)XiXP6;2If{*s=l&R`_}eI87b3L;)j=W} zR1${q)!l=q$TwGjL>-`oHXuXH1#kgdp8Ft;Z9u@V0@MgUhE~2o$-(opvzM({h}#=i zuAss9MYg%P0eLA1k~BIz`(W0D8)YL=lzr$%h}rXCbe=|sZ(=dx8ZBSpSUG#1V`bj* zWwV#ToMARy2MK!QubcSQ%G|q7RFONIq_!&;J(^ubrT_8fE$DD$=kne2akBO|JBLc& zpKC60E$dNd%!lv?5Z8S{5SL)Ni{7E23DF$D{Wx~NA{utbFX4H@D{M&5v4#NnA#4fX^Ff zaxnNy$|7)VxXRN2lpI?bAQ~&H?Il+ocjE`{iiC~V3Pg^vBPeuXC-p}R>1OY_Hz&_iZG$ZbUPBF>PS$nG{& zCUdXE%49lfBsJNft~4_JC4}drpl7{HZi2k1WDKd4*OJMM8`OrsJE#RfWnSJ=>90gd zeS+btD^0XYR#Rm%-M%6%ddWZa%vaT6&p_e~IbRUP0z)jbJlPuwzQ_!16BZ2vfG2w{uY@Iv@z-18X^p#>1k|c#8j3G6AvC?z@wf~CDdfQzgQ{dK;WG$e zx))-r_-Z}A1-KwWcpr98lzD&TeMQ_-vgY%I<7RglhS{MrYp8au4wKAUj$gi>r;A;C%rE)=YU_wI#u_;VmLa z-Ft^%C+))%rkdH4J|p@5Ewpm5AvDyL!1v?R;sH|s*&LJ3apWy0c3N6Prh|zPj6fFr z?O&LZ#HNkdypMW-OYk<1bi4%7G2$z%p?X=h6=vR`$NyBg>l8U4AQ#N=IWBOm2BB2w zMy`dFyf}h6A-mr(ou!S>zyxD$un2olO3bjACwclkg#!DLUswaX4n}xiq`cl<&r*A( zs*-a;$$>@m`r9bkbNJL@ke8mn-L?zA?xPVdhRq3gG^%@&%+iX(A#mX%T)JYOWaLi^ z7UfD0(i(n+VOqU^;)QVoLcy`c5n9)nZ9@7WY9nLL3Dd>!c1vV2VFQ4Gfo+41f9)lbeVCuz2+&n+L1cIw zBo(B46&+t~NYMAww81{=4S2G2a0goz#FYVUl;F_8%`59X z^e)h$5g0fj%kIzCbNoDAE^j~FO`HR^GkXhjCb>;P7#V?q$*WxO*voE^U2tGogUFtHEFqxmI&bJEkkfK!F!dct(E zSxKM}q1wa2Nr!u(LxGzdcW+NRRR(_ff;Wp&J^h{sq})%df8n0FVeE1R&8O99qLiGYCJqH0Pyvv zK5OrBqJ0-P>v!%-xLgp)1>4ZX>f1+kH(BR>nvYRIl+AY|zEiDU>)3Q}ZMrur#}7~4 z)dqZGJH}ygGqATeXYfc1$va^q(22N}_)T%IKth_v9B0Lxpad7fkK*Whw7_?;7iCai zAB?3$FlbP^!0^>M1Y#KAAIA=i#63R9+nYJZdCYpp9p02yPcS~9aUj=3&taA~YP0uG zL39#}>>g7PUSh?Wb2Po2D7RtBT+8k-fQ@uN-0E63&Y(I*C)$SOzszh4TuKtjEhapu z+7^6DUp|w&6BmLG`cXqB2(UtEb%U; zRFk%{Q5|P`D5WdpdG_H=)%p9P9+B$s+_ZR@pvV*0WuwoSe#C=%H za?K)(D5nS7=_SY`RRxy2`+)yizK2foI8D|{VqMA2w*hMN2a@#8Ox6AX5xb>JII)2? zk1+clxm2i!78BehhwCCz2$$)gvjO?crziddrUzA(a^G=E}XuGJxOUbx82 ziJFU#g(Q@j-M>fs>LD?a5WXG(?$+D)$rn1hCgwl?JOFtnW-I^Y{Y3K!bEo*G_!BW7 zt5td@QCK(-$zZ^KhOHk}fYXk_yfD4}4WBK|~h#77_k{@YcL>7GWr*rGvVqL&ujwiorGL z9`|%62dOx4C9ba)!+4P;gCR>H7?}w$p}m_72IY)cieJ)<3=7u{T0k&4n_MThCx^IK zra|K_7PgfAx(iPR6eE8Fwv3E=1Y4FQm@@U9=mj(uXA0hu?PWp>_^{*v2Udv%0%5+S z@HkV z*XAcTV30NfMKjo8u|tzokK6X z@Dnu2$a|)}hmOsivL8ftz7CzUXlGgXlA>+cThSoEbu3YepxK#Bc6Z<%p-`Q7aNcAyF>?Lc?d;cKY!z5I6YO|w_ab1>k`CZ*sO1t7 zclKg_pbGVSQQ+_uTyiIz0+Hdx--R?(sfT>q+pxQueMjl*knb$Ma14J-UroM208ad( z*g?z&A|(|1oBpcpjzrrTbMZW+E^!oLB`W07XJ~s&3D*ry?Bw6aMMwW4e&IS819Fov zniryP!f8gM^vYRo3!~hds1!K|an+69zPSrhQ;PDxnW%S!qs{yyE^f~tIbwvF0>-xv zt25nQI1Zf=Ya*V3T~uzI?Q))x9ls*KoWp2xg)!k9XN=p>9|#6Lkt?7u8A9~?0EXo{ zPZX1KexjPxx|7B;FI;!S&D8yJbibjR1vPvnEWVkwtBe~0WbR1AGQz}`iYbQ^s#>KU zOK33{=VMD%DyIRan!gQ8ihL^yzcdkf8A}S&%%=`P-mAiLt8t{VKu!uHT=W54u5e7b zen*`7X_RuOgkZNk`7s{h{UaQBG=9qn!}s-n#EXxp`!Mb7)dn}PKzu^(D-rm?eJ__0 z$(l#;J@Q2K!vE~NdKAuZAffB!@T92XOW~!Xnt(aV%Dp^AxIK89( zymL?|@w(J^B@dt=mbyP32k&8!{Dcvx*>y0g6XN?A2P#K=0le4==>?Jq;c4S%j>(x2 zQEmf|lZJC51L#VuTVOgsF@Ep58!DBJXc7T(u>8Hm^7EM#?b4Q3Hhw`8+yR6^V+ogL zh3jsrdp=w@jO<5;M$y7OLXH{Y+`Q_*p&OpNyt~GbKwWgn)@fG$MQ2v$>aSVFD_yd6 zs^YD#RXj>V3ZWsvWy?@9m7a3wX)~Urou*DI5y{zu$10AC;qd0LXt$GeX;mCZTf3xn z>WQ;!Pp(-7NJWs-WYYCYCR~@9KCmPqV)4NfK^!Bc1M7*+4kw}HFt8lpWD}Dk%6NXpbySsMGyA2ym7*i=%aPFhwRaXmc_yL`=igq52;Vsh6 zK6V4FMQ&Pb?uMjcGzvUjxEQ3U?^%4rS0Tk$L{I2z5)RxCgk9tr@s$Fl9}>@ruV`^X z&lg{R#usSgC>(#71ZS_^Vgh`TNMOn^H4c{h126}vh)969w7uZh>rw{mm}8tv8DdCr zDZ?NO7?-#*!d$!!wT05rfve(sJw=e0m%C`0z!#4b-5Uo*{k33e&yU?(6-=4nDvcuq z>PDHxy?e&=@YN&SFAmhSvM+=9I>c0BCERzzR5J;r>2zw-HraJaXDEX2zKTH{K4tTmVq~~z!Gq4J7Q#s0bK!v(@=h# zfde9qHUsvAK<>YT%%KZ%CtfYpsFFnvC!&dWt>hDuP-%9(F19i9tmb(tc^|M!`n%h(HCRznb*LHn;3_ zQ2I#walGG#_i%&a?ob=?4T*~FB^ax!m1&^H;0`~Qy30vqy|Nk8vpJn5M__6oWa*21 zd|0l7$b1|TQLdtKh%vKauElo6nc~%?htcHidSg*>jC6fq^~8Y=Z8J>Y5a_L2P%~)+ z4R`Di;EgEEeSjPz_k0d{Le_Cl7|=;fSqz44e_dOjZig@IB3#Z>Qr=j$GAffnB?3_Z z2E7aTatBUnZEUt8{KhE`TV1#TZKlC$Lmk7@p+AD7MhA%89$N z{ZZP<(t_~%#8lDbQWht%TRDhBz!5w1VZ>?BPK;iUY>4eQh0O;5SXDEvf<~$nzJp#(2Mvc zctH+g_NR$mse<+da@=x53P~;ZA<+%CRgp*1vK*wr(6ib__228MQ7wu;j5sDr3p@EY%>&*^Z%{HN)=!ek?-ik!i8) z*KycVA3$!Afx)q9C=Xlo0A&%2c&CO$XNtM_0XoZ)fq^(8hRu{R}; zPK0kQhhG;K3b9xkPI`PU6x{(BcFHIXrGf2DBUF23y6#}t9mbI56sg2v#UK)&VvryGoTes4r%eTP26#n`oeq?a0 zGMe3U@u;Ri`VlDqumw%Hnq_k_$5}krljC_VvTD;hvi4FGY6nKOwyG(J655eIl(!l| zEr_m?{W%L)Lpo=Q;F-Rq`PCXbj%Ql*Cy(MmO@Y1^RXS;d{wF%k1#PQR*Ip{aTsa17 zHE*Z#nQ>jK-p^-qi>R8WO69qtI_H7~CA-%cu)=X?3VSXX;=qKF1+g?Es1SGL0Jmu% z%QU(RqB7JgX}E?L7GW9@VT`GV2~>crG^t)-4TFUZVfP#56JHaOEFw!M&m8!TwBi1Z>KG7hs;LXWLQ%NpF^h;N%%Z?x7V|ITS~siYf+&g2ggnmx zA3D|le$#|@NBkxbJ=XE-%3u7!LPGc|A==>+g3kba#^aNM&(YTrC4*jw>2J$Lxd19n zbROaK z_?vlGwtSmwG+WnJEdH=X)N?P*xcOqU6-x_qx3288X7H`m2m54AJUpUR^V_#>-Fk3H zqr7MTIb%efA0FQLWAWmZjbHL8v|YKqwa{2uFg0p*?fi!F?b+|OJ$Likxm^i+I=#3s zxV>E4r2Du}`Zb$#vRB9UzgAXOuHbOI|Da*C_REkA3tyIU?r_`h$Am25nq9+_Aj;PR&gj`E4SBFiox!OaIsjQCB z@UNMbVU;1}>()0FwKAqB%}E#aCr`^rOPoBbOXs9nNz=tic4rJfoO(q)i~aiEX{}fv zu1%ayjWks0SgjyGg??&%H(^Ft=s_kOYZs?y z9m?-@CkAs2IIiKawY6P(F;;V6Km%jGz4YLa^0a^8URh@p1Q7l{$Y+LTk)*TB%HM=#XwBk#&*=g^ofJw`HnLjfQ5ULJ@fl%@J@z!6~-3| z9UGo+*jw)d`nTmrYKJetOlbwkwVnRk{I6^KZk!0*r_pV*7iPJd={*e~C{8_|fB%kOEJu)dB%7ftRg&fVqkiWwQyQb9rmnfL@Piy2xyQdGNid$(||9z_8E zhcA@doK5F605;D#EGKu6lHoFZu>?^yN-+TBT>#nP4FOa_*Lb5i@N(-SUilx-_vv`} zHg+yIU<*Pj(!4@`%xaoHRVzR5Sd+u+%FoZLm7jJ8MrM!+{D_DAOZ1DNc)p=ypgJ6| zgi|xv#*Ddn(-~ZJ3RI>knK=h@I_acjM&MWsXbC|Ia$a%evEvk@$?%8MD z?llxh)v*ztGV)Qvf#VPG6K*h7F{ht3#t?E0?4=)cc(lCnP3v3!$Kce{9&&wFJ?Ig* zo*o!-efH1(cI_r?oWPryTyoFv?JiY`!;NF>U1JMp3B9z9|zeCJ! z>lmMpXcyJxhVTV2j(VYwtQl?H8Hsxlw?h4nFmbBJDw$eTD_ajQpb9&pDTT)ax-j>S z!MK11Qtlns^jWHHa0#A1IJcl)O?S|_TT!IOYV;Y5AH0Ud46U}~FpBrB8dkgip6=!J z!;BM#JbUe1RUSpET3>z&?&M?g4K3iFK`Vg%Le;)id|#uSe(CGiJBro5+!2rUqq_6q#!G35*L z#x)FQuno?)YD(*_*Q*CHG1V6~W`7a{Yjz&11F&H@#SuQqVGBAVFL9HkIKQf+P!U8Y zmLHl?)>qy-(&^W)em*i-zB%gb(N%A|#1DLGq;1+Koim5G=yk-t^w;7SH#DRv^?L`3 zO2n-H?D(*lUk^Sur>7_2NJ__qn}3}N)DN)11bXX#WdgB5|BH~EgB)jY9dVg9`Ql+L zOJg6qa~5IaLwWt@uXu<^Z^RRgq*;QiXkuy&z>qjrVQR08N^)+p; z{~_RVxFRRcn!*V4Vw{Z_6KoL={}|tecV;!w_xj&rQj8u`71_}czs=gu$N#Xt_wGc8 zX+tmUH0NlVS)cT&!$v^IyR2S@FLl<20f!KgDb@GL1xy+~?=<%Ged*ZIo!)GS9$Eb& zy_iN6Lb;{-mY?(ArB~dW>9nU19^M)07Vq^z*aPf?y|@X?a|au?F#WJh&aN8jdN z2gjSdv&(SC(Mz!-sN!|xjQ(ScOrsf?-`V zU{r6=FaZ7n+_AlYu?I3u5!lA`D#{{+FnpHdM5bOewLn0If^g5BYfub2#>7hH&>=x| z00xcTfhV;h>?eq_M;eOz)7OCds>9nlm^UoKxe)hW2%}Jn12gAT)TEIW_K3>jZ?&6@ zI23{Z6(!qn%zTf1L+a(w6|5FS9?S_qoMx29Cdy9Y#glC(NA9acWy9;7XjL4@_ z7%$^1I5I?>K*Ww)fI=W;0Azv3G=VVAo$w--7Y1C!sM!>MCV$4Ei95<7Im&Uc6G4Ec z?yP!U;W<~b!)Q|&st-mXGEQdTNl+vJsUxhZ0-iQC*l zcvyr_1M;S8x+&H*6VdMw^bb$%up_?amng@WTL!qHNJN!L;-h{{(f}>Wj=(DuQTN_r z7*zHz@$GOs(Lr5%s&p@0C*p#D_f~fYaOI<#;;X(* z76=F;pNuF@M2UTPkx4=23${zd^*$%JCE}_5$n^!5s^ki{aD#zwpDO9X@2CnmaIimK zf%*K<4-~zOc^O>50^K2Nz46vUzk{o$Sc{Md+d}Yk@;i|y)v5tN=!l_mM`#k!8 zU`-o2WD|h?pLjIN$)mC0(L(TOk&{Oi-+?K?qxd!|9tF!fc{I`hj@(I}Q%tHDntXe? znn^Xq-QdmbHF?v873_zGxQjIlt5`FEE2fibfkVKfU{J8>{dn~9e~(B1Z>)Kfwop?y z$fJWt$(Ixi@+kRrAK48$-@&7aibo%J>i&Phqfn!8fco$7=%27=3{=o0kS-Z2D8;yT zFIYPf8Yu+~6=t;rloIS602_Wg^5N4XKM0Frfdy;UP|cx7gcJECX;fs0Z|BgU0o1-! zrTvgL$8i}n6_-NkNjkv^hMr_pJo@gTkC+s^I~b({tYZQ&p&Oy&d>8g?Al?9!px_ty zYarrU@k>D2AqPsZxE}h<^USM9<%iEX^pQ%#O()oCwZSD+N*?%l;zNB!PdVjmFLNQ7UIpapff~v_NbP5nX3CIt?Z#rk2qR>mm z1%OZv`nqU)ob-(VedmC_vmNwJchZtma#i%rbXL9ctDG9BJ?;!L}2l=5uK*0`(bGf%v42J7 zyuQs7#$gJoOnltxLY0eIm6#YL_{ZGhygXA3zA%P?^ zQgd%0GXmq3ImSGjB5$mtlbH|Ts^So@ViVlagvV*K1k`nywNG8zj3U-NQz?Izo4Du) z!{`)#=v#Gxsh9~70bD5$@^lu^zCs>YB4y1QrX%nq^46?Dm=?&gzS+dhyf9|Y;0HY7 z!+ylc7@52<=nG8qku`OjH?C-$F|`)17w}q{TMJZtWcWry?B7F3Jwc#P0cez3hI?>p zCZJQ74$Cgz$Iof%Azr!FVaVlo2nhTo-z!*OuVO3%CN>N(O@tkRGHmVC8{WuXsjlFO z%>a>Q8&)8}SpwNyQlk;S-Vu7)5n}lF>~~dmEo5`NhNqYF=X=2pX%XEQ>|C=3z_D0O zBaZeOdrD-jXBK!H3QgnJzLM{7@qn_Wlu`D8-C{sF0)osP=payv9FDW?N)+(@fc*e` zk?k$nhGb8aM*=y}3lE%C@m9TY=Yv`ZB~3_FK`&Nb#q3)4@RnLFN~3n^j%gw&z;qay z3?>YH215}&H{aq5r5x54zELhrmE%>csu(Xu zY0tY4^Cm1zE*!QH6MM?=Z1Og8T`vEG& z0|-Bdd^|M?i7;kqZPGj*VL*CsM|#OlTu0$LS#=kzQ6JPnFrxZ~fYOpnph=#dFGDZltUVnzH3+m41cLFR zIS7sfvLg%{B#={(@G=v2Fo9f!1hO0y5fVsUB&^0yNm(DfEfI{#I|T+`@2BwB0aqjN z8I5=UZc9^x(&T1)N1z-GUIb}XNkPgi39#>djea@8aSWffFpKS_8O>s}p@V=11P4{k zPgK_SSY_@fqBhvpdmYv@ZpKvD$5e){cW9fuo7kEUMU+SA9pc|pb4a-ENDa+XD#e)B z0VSW>z8MAYQFD$l?Z41!N#v3%0R690Z@$&)&8ffc(Qq39XqARj+Rizk%=}%wRcW;k zlnT5@u_?FEuVEt!$jaIr8jf}SsfL^S|3$;ytJsv~PsQfinubZ8TwD&Wg@RLhuS&xep~vSa@E#2ZJ%=%{`ar=^lPMLY ztip07jZiOmjM59Wrb40o46xNL600>FuN*qeSxGT1b*Fx+)@r}&s46Y;=Xws>4KJpi zgFT7bINVgK7^(g6i9${d4F~Xgqs09bn{tcy7LN7*iH6$`Eru}{>T_s04%J!r{*p4t zDRmw7LQNe9jaITvsk15_7ln5_bzC|gcIY??JO^b(NC9w4Ev6`iNgYRp$+Ak<-A}cB z$S(4+hKjTQ8Xd>T;x%;~G5mkia{o%Xxo=3rOs)IW3Gw46B+u;(NyKdA)X9#!LykK~ zUeHR|$klm4R2R5&9m$B|O^19MQtIq3s2r5hTqeuzt>-*p8)}L$WR@mcz zrda*%R;<>71TP_q@L7Y;H~2W#9IEykbWk>EGKO=#cuaQ5uK*Dypl{%w+)$C-7elz- z*aV)|p)q|QVlSS?y?7e;;%VHAr@hbSe1zs0Z9#7O4H{U-v@0-`(mF7Owo%m2!an+E zaaRge<@(hpn-xvqW{s~n{(Nxs$mf@dM^5Dgf2JUk2!{vPhW z0}S*Ct3|OzDT%XT(RX47v0rYXOXQk0&=H|=BJ)fYO)ubV zMZda?P9L-xqefrjTI~G-QE_ssFH-fO&AB(V48%XM_FhQZ`X6+Xc8Y_v7o4P>ayMzu zb1)Ef=gV>am@1=ztPi>Sx0vr0q_!O2K^~1gT zAnw!bbNqrX^WS~=f(F+TT4BDSS;(%mHaALeF-go9BAj1o&0-$I7Ne@YQ3%_1)%@i|3&(*ims+E=Hh_NyB4{z4ft?{avHO!F!1D&v-ut^^1~WnxA6D+&5#?j z4gSArNBSMUxUeAWJI7{#XP@(g2v$cOC4#p6=P2fWb2_;1m=N+8A{S;2ko)@mkxMJ* zKVF-?C++~cA)y$p`Dm<%?xs;o=U1UdDv#!$9+$pSXAaqf2ah)6A;83S_u%z$=r3stz zG&Qs9Pg~(byjjnxcz5+;hv^OTNvWcGVp-i=kt-V?i{_ zgetMs1CQ!AT(c^3uNd^KpO}2d1>W?nSr^)8Rp?o}LvCk1XxGqzvbHiTEsvl}ZtIg3 z`W)1>JM$a>RKV$3rFaO%W0B$j_&5MDTC;w#*DkJ8@~t(i6cD<-Su>OX%sFn>t}3OV zE^|PQ*G(&h!}i>1KN0Hk&uVVaRHyeqFnX{Z1D6K-;l}Y!c8c9{Nxx;Sr$@hw(~|lz zJ^BMs^vHSrnl)oTh@l;@TRtd$K;LDzyo-$D2Pit~z}> zDLDtf?E42`x(KW0Wk?xS(V2Z*TWGU6^!ixU!-?CZMs0Lxbl7gWkogik+Ks`vI6rHa z*HAE!HKRbQ7>3PYPG=!;#n$K!1F(S~@!Ft#;Xiu2M}ANv>u_+%1wHN%Txi|NPDhh4 z7p`X^_`y-KXVw`4ZOuBw_8jEug%Qc5;_)Nj+Xb^Kkp(A((T6bQU56#urfqCSb=wNu z??j)8v_>EGW?OI?z%`R**{6WMq+D$dXkl-u?ejkn8h0V{)zih!jjn3?pTd%C9Ro+P zURJ@Ne4CFzS~gQ;3LJ7`&Dd}*8y?_Y|(9>R~&a`W0$PPpzE62JXN|3Q`WH@D2&C7 zhHlviH+cwmp~oGim&&UQRJo8GFW962{G)J;03MOrL4UkItHOy{$F_^>nR(!k zto1mqxG{#4J#dxiCGv2-q}oUl%h-wsfB+b;jxH8W2A8l!6?)u$aL6y&X=sL?QEYYB zqgUXhFN9BzURl)^#q|g6mX$SHVz;cQ$t7U@6@VT^$R>*0@mr)sfK4cl`~%#71Kbvb z;aCrtwcYt6Dlv+(Yy>1Nu{q!jl*2^wR4rKk%GK~@z|WP{a(B9Vr0$sK4&8y+pl4A{ zdyDCC1uF8#HngkOxQ(o{D1T%nXl>1+P-wece|R7;x8ar4bs~U7>1o%W;JGahwO=op}YPi-%f6^{fvlWK^4{K)h(& zRoc%Wency~%fs9RIT@?MNXC}XYok7UtMbAc-1>dl9LM4PSMh^Z zj8U!FX0>d##xarwT*z5WVCUcAzrhW9);P8T)iVY%8d8c2sRUDq^bZmke2(zwW0TDv8~F4KWXeQ`I-7x znDBgI_22wDqBi3Vz?$3j*BKnSs2>K$#QPf@eEEH>`Aa5c&A;@&JK%=n=osd>3WKO6 z+(d2Rj=)?V2-@W-yo9f2GJ5g@|EAdy(z=({dP#tgK`;6T5J9`tI+DIWDVJ#l30 zpuRnOba}L`Z*wm!V(@R)^oe7J#SHAzGqh_bzgA7Tiv%O+*(sCaA0IlXUu0OfPHlag zHSj=>`%KQ9)QRIp#W_;_AAYc@XI*WX{s{UowWa^*%$ZY@;ztaL>Jt%ySF~8_XY9Fk5b2YXx3h5bhIJpl`}P~JEPrZ}nBtQkJY-YL9`2J*^?3U7@K8NrU8rlj zT44dFLc-RYXNUQ`{YKc~>pQ}Jd*)i$Yya>Juk~TO@C8ME!iSzu3~!)69scZ_FNFV% zK#xG9_N`kJet7G~@E*4P;jwGK4fk4nBm99!YMbppH8jTuwlYsT-rl_UT(CJ{NFVd^ zR4w>h)vzwQ1`qu0*^rE@s@^!PDe%rj&(?zx#=_XBY)|D|O56JdS8p)oPrt*;~ zEo545D|uk)!}5H7TbZ8OUdoZ3WV1G1Bz;7?;@qqFzNDLcCAWv{(#R}#C*OPh8$ixOMd*_Z28hxbL6>y%#~@W zPs+A!=gIH)&Xcb{ktw^L%akh~&yrh;vg9+ZvSmq1w*1G2YBWvHuk!$d| zfX}b^2)Ml^Z`S;Chh*@dr~21eG=_9M2fdSwpswAzcMs_i8WwJrvS(zk-j+Un`}%pc_7CV95*`t0>Dzx`)S#Fl zal;=UHTsFM#m~RG>fMjlf4+71q2ndrm0$h&j;E>T3bEzc_gA7mv1m6Xq>j{n^fArPqF~)8Vn1OWrLw zR(_{;;K-bnwo^CUy2L;8{=SQ~I}M-r+Qy@o-GavHA04_{D`d(`1>e^So$E{%#`3bjj zq%C9EW@}lFtUL4A=DAM#r{n4#}2j8?J7NJD4TkeYe)ueb5Y>t~A{Gh&@w|4)EPNF*;NJJo(YB zFMl>q{`gvtty{h3$)X*7x1OE&r2O)H?AAIT&y`RAHg0R!+FPC(tK<2)@~UYGGoefTLUuFWz^A^w$7ZBCZFv7##YxUsdB>$ ztGE6XGgEH9@c!1pkEY0;-9Fjc`p$HzWp3CyYv(ixHr)C|ZnA8AW!u*8yH1rQE%t70 zSu$Dfk%zW6%$y{jA9-x+QR77UHfVzBg{+r(DUGFpDwzL_nk*+9AX zcnjO2y8Y#~%$BygKlYKP7OicEzv?aftb5pY-ir3l6X?i|;Oz-s)^)xKVs;xRyw>sczg8()8mWHEz0 zHjv2-a@jyOGstHH8O84078*b~DIt0~?sZ4mPlb8SG&Lo0!2aHn5Eu z>|+BPnZZsru$39?Wdoa;!EQFNof+(B0~?ybjyABR8SH5To0`F{Ht??*d~5?ho59yM z@V6O!ZhM(PPr~*tFuoZAV1po-ArLkQh8Y54gP@opFg6H|83JU3AekXhHV9TY1k46O z3x~kjAb8;rKpO-x90F;BV1`3LZ4lIO2&@f)8x8@sL6E~B&^8Em7zErV0`g4|c;0X3 zJq4Zl6m*uSp!0bOI_smLUn0<6FeUjSN<3doi6E_K;)yW|Ix$E=Cq^mg#4rV&7^k3<0u*#ogn~{AQP4>-3OXq`mp~T) zXi7XuONl3`De)vdC7!H6i6?7N;>jwMc(M*9o~%TPCu>pS$!e5%@*pLiJV`+(k5bUd zvlMjlFa=%lGz6VIPC+NnQ_v{`6m-f21)VZNL0?9old++T!b6FtFj3+uT$FeU8zr8? zM~SB}QsOC`lz1hqka!9&C7!}eiKmoP;`!k<)0oFHEK4oHXITg9Vx6p;@8G-mPQIHk z5EjBj*a+hh0_}|<1%YNO*c!Hqtz#?MTDF?4Cl-hesy||fSR%HFHDZrgBsPgvVwYGZ zwuyCOpHv_3gbgj3Qf@gku9 z8t1*z2-FPD@=9Y+b2#f$8ikt0`C_GUsCk@#g*yRN8j70A*$}0{sL7lSRT?gbK>J{K z0acz8BT6SyH##w9c4AQJQ0h`AhLw(`u60sC>0s(&Cxw)brml8UQ0Z{$awn;kj;F47 zvVz&k8mdoV-{52&)n~BpaI%(}p#xoa1867Dsa}V@kCP|OP99ag6niTt5362`y_u88 zrIY7XugBicDHEz!Wbf#d8P#jD_jC%E>Q&jhI)zX5y6kRlRmNflkLR zE_UNiDOdeG`+KJrP<8jwlTP)f>>4y)**QRlvU_O%IMt)Fi)bI22(&M@Lpk-RvZR1zWm(a}a_U`Wd4W92 z5~D@t)YHmRgXAmA4dhjp9LTLKJ6d>7y{{}kT7b?DLOMGPWhsK4l;ubZ(%Hc%%aRtR zvjb9=CoND4dOZTYA3%d|m8}XsR<ft} z83LwkY1-7zo>tk~w7H#KvUGOQ$~K1pD_fm5yR%D|V)xKBwCSB)KJzK?GK@ga!4@v3 zZNQ2s`K*|d&lgeh`C>{w0iom*FiJiFr7c3hDfw&&C7%tW96nIjA0#AyVhZ1NL_HU6iPHT*$qvVs6lzftwl21}o@=1D1 zK3Rd1Pu8I1lT|4BWF1OAS&5QQ)}rK-)yxohvK|GVtVn?ePb)K&JWGKm4^!aD(-e5} zI0c?OPl1;=3G^WVO^HYEN8zC4Q&=eZ6dp=Gg^7|+;iBYI*eLlFK1x1?k&;j0q~udr zDftv$N<~-D7O_U`5sOft3ai8}u}o|e>%=~(Kx&XG zqzYLRNB9;rxblB)3p+7G*9NM@3oWGDH_24n}a1=)jaLUtkBkbNleWGAu}`HcKV zz9avU56O?@OY$fAl>AD*CI6C-$baa;`6c4=uZt-Dw&+G=lVapFs1 z(Y9!5qFf|sCpAsX71zXMt(AC57`11$aPd#^sJ2EMC60)JI0EP?7NLimqjePTh?d%m zT9nu>!nF0;6meFJ)V|UXSy22UrfVj#0#P9VbO&re^3w9ONb!Z}ti7*|6~!V(+pRSg z`J$GVrF9Yi5D#mwX^)9LqNnz`HbZxlQ^D_$0!+9J&?J`)|a zceK&ssEE?GYYl`BSDJIRPU7#PmG+VrEp~`-?Vs9L1iBbNPZj6HDD8+=TjYovVutpJ zcwIEs^0i)Kljx%TLmMaT;xTQH){xXkEpJ z;t}n2ZK&8MdTE=qnW9XL)9hM(u~7UfGPL&MZP7w|LF+FHMTqu^Hc@;dhHD2kAF*6` zXbZF+Vx4HGy`_y1heSW@Mw%sl5EHZ#%^)(xPa;`+NW3Z8Dg0ouFT z6XKW{gbhrMgjKj|^Rz(mo@lMTq74?igw!@@)5LdTjP|uwM?58NikVtl@uq01E!8Yy zi|DF-s3nM#VyL!H^A^j5yEb3zCO#5vv^TU^v0wDoHfyQkq8P88&>j%azz5|ltpg^O zeYEA;08u1*XzR2|;*1!f9nu~Ye-rh!g<7ciRJ7OL)*cs!MSmQCoh_~iKLULUKu^@Z z!6HT&tZK9X(|-p7 z=O!W{ZeL*X{V_<>9!$QEh1eB~E@B3x>U&X7^o11J#1I0#2>vyji(%q<2#UW*f>@mv z!6F^va|tV6W{AsYqJfBpSnLqKVl>3&sOSVK_&emFw&(>Z*d&@@_I?TY`w=k?(qI=s zaM1Yy_}oME1D6+w7GgNK`5@eQP5`%;z?EkPxcV~I(4e)1IF%w)_ChCj+;KD*I#Ek&A9TM%u zL~!FbqKB9TuKPh4z)YE7r$%Bhm}nOkB%T1b9TS0K8kp%jQAb$7JX^3>5ep{SFWQO( zFwsfTO{9WZE@Gi?0GOi)OBs)Y2@Z=6ViK6-j0hF8!32jpx9V#a}-8i*GT@_B-IQ6Qfih!qKPH3qRB1G(yfCVfGb z=Ag+iP{jo_FoOyWK!a#dp*C>d3s`RgoDTukJ%HnWz;X-VcsQ`^3YIsy~qB15}LwvJ5~?1d!7RsHxcSB|Lq(CygIBJ+bSwG#XCA$eZ}z z<2!U1(N1;4QPoK9O2g#utsTzcfC5_TgV^zL<9w^_hi-;VTarzTAXb zBdK#xz!`{P%_P880MsM$I5-DkoWKLqK=HPqc>*Zj4Kz;$g*$-8lR)86(0DeA8$r`Y zK}j#rvNH(R45aH0f_Z{u9YLtZAXOI-s5wX!48k-3X*z)*O+b<$5TXT05ds1<1PKCw z_@+R8S0LO6DDMG8Hv*~y0f#pr>4x_|2na&O8DQ|)MedFcgtXprX*%q|;PjFMS z6p&E!76=e|Y<#c}_OYW`E@+%9npO+Vx!>PaBm7Us_7UF`Mjp7|JN^O3JEcC{DF>f=E~Rk1<60WaEBF{Rlp+F$%Xqr=`kf)V1;ED; z8d{2m-v4jDdOAm6j->sz9Lt|&r*Qpsj-*|;etV7# z-IODZpX5l|dn;bek;9hc$k9*bNZNsel2FI69GTuHN76prZ_1IE8s^ByMUJH1*vy_S zr)|%c53J3Wv?qg~&X$E!vgOM|vL)@zj=tG)3eR~nR!k|jUAw3$gJlm2ak*Buymc{4 z(mwrlU6%amZ&@;UPL`zI`azE@d9rzyeEe3Xq&+J)WXgA!XUefNGbQcZEqd%Q969){2v4UDs;_1G*q z;`LdQ2Kz-ntXE&okb6GKkTm3f>7F6$-Ab2fo6;o>{GMUy^6$6P{d*L|$C{m>N5ddLc$`Y!V|EyfRpgDU)6wBWjuML!4F$R6&#R2kG!vV7P(*E*Uj7{e)>?gmy(^qbq+gH}Xn05cuKJqFt9pMWf z#ibUxc9cbpZYTHeEoa+$$;zN!YScTWWu%OIzNg$+tEYS(qv7u_O8L*xQr`a3tVYQ< zKMI#0w+xrx=7*`#^XF4SWqffD`IM!Hd>EtZo-ISt>>XZh&#KpA%=K#j;dujqu`4ISk}2_5BGjLg>%=t}_F z-|tcRi{3%@FK;hR7^*M&pq)(hXeZB4^;bjoDgJ(P?z3&B*LQ8y(7pVPM`YXECV6d` zN%qCa-M{|B@|B4X$(IUSs}a0R_m$=QTggWrX{AQ;QAZz?J=#AgH$LSf_h3Xn{m~Y3 z_0!GejN{GJ$i5)QTlPKDR3^4*sz&(Z_cfN04>p#cPxq30Fw&pt*+{M%+fe3x+(4>@ zp_f}z{WXyF2YbrTUN_2{{1a=m%R?saBPNxb;>T63D` zN9H4$ADF+u)P!H`duEgE@8);>-!XrRDT>E_eapO>KwkyWnG;r-yBvJeJePB0Z>}(J zaeK}D`LtKe12A`y-s44cz{=(31+`u<&%_)?<$hzE zl|Zj}ScpzB-OWF`2AKmk1emX3QY6Huow>n*Hs<76c*=xx;lFM^6@I7TvG7ro z4u*H#vO7GjK~Z=x=1wMWTp#XJ@1yXfF@F#D!yL+!;??kRkG&9nbyZ%t2j)_i=VpgL z@zBihHwqHMCFWH8Z}$s-=cUl_`CU4OpIN^H4os^I(LWlY)fQ(BOH_E#Do9Hom!4E@ zKE?;!H#P9Ssh#he+C_Ns+(fl$3ZwK7ChpzlZPlH_v=y(edPlhS!&>h*m@N8oa-;Bc zgIjoL__eTeDaXQoetT2cwqq;9zIA^lECMUTe#O3F=Gn(W+s_^r+Hp(hr}H;CtSnl* z{D@Z{=X4$ZxDSgTXjgo&`mU@o71Mx;&cFHC0KxqG{V}d_&A+!_4;M7G+)Cliyml$P zjk=enz^`#B4wcm{MO@5!w81=RgVit1gM;Bx1U@n{fTU;XiY6`%iW#(;J3fC$KCRFf z>9LeVnVb;M+;{{NOBYYC!ki1=?r^zR?H(K_GvLe`CylK>CLAfXvPfuPMrZ3|9gJ%q z^V5IDxtZ@mzRqZkgEppxzofhE;`l(|0G`3=tv%Q2F&iOg44GSTNX`(MYcLt$Zpe^( zOUwK_j|Z#@7LL0IsRp&7F{umJTBtHB!zFm}4jGW{4MkNfgefFG^Z`|)ew=s(NpyzI|%x@>38 zJzQGB)O#tCNx<)+h-yxU|KOO>eC+p4nVg<5=`Y>yTL&DC{l3TUzuz|iEx~@@Ie&2e z7=dJ*-kbPu?)Po^Cqp9C!oP?`^~L;OhbnI6F!O1ixZuUzXQX|>gJJ40Y^JIA=MYZY zE;y8ji?YkOA12@Gq2+~ zJACRcylh-jh^N7}!Q5pYWeUmszF}h=gjG!%F9&jVS z`jprat?3oA=@J~VII_VTbAv{N^@DHaq_p&SMKoW$!r^;o2QJdgc$Rh0Z;MBD9clC% z?7Gmb$^Ch%^u(hPKOV zARdTUVR6P~q|Zp0k(w&zlSDItbes{(y+o?Swg3GJ~j#Ca-#7r?T^kqI;Ls$Egs?J_|E9y~!pGC0EQX|h>hk;I| z6Y;hBb&iDJ!_}I+CZdj`naL>$!d*3Z!sJvjmX4}gVhFB|7^>(SbSzejTg&N-@+7@e z?6DgFUCACC<0wuxR7ToI8!B^e8L~^J7yytV246lgr;9J(85~bXuqMzw$X*Kzs{#i~ z_SkzH;J4!R$>P1J0MB~nR(NKd$3yT33AZv+42N$I1s2B+Q%R?bhtZ{lvodd$Hbooi z$PBzZ47l#_<^Cw?%CpO8ugmJ*9N-V-6%L!azID%$Ke&!Kh!(=VV^~$Kx!c1W90KBP zBK8zrLB0Z#uf3Ceaqt7u9OP@R$k*HvS#FzqaYQ8pyn%wJNkPMXC8s8!1 z4nN#gXATiY&nG`?GmaUm=-rS@9%y&9X84#YU2!&Vn}TvUgQwy=jce(nXj*lL1#;V?fFn$SUd$s` z>LiV?I*jwjqCC`AvnYTgdR*N@E zKs&JjybT#}Dyk=Z`lte^#o~LLC%7I&Ll}6u*6Mz|8iuP0>k%6D56VTj@jz5N2$VGg z$Ky~l4`{~ygtMAZe~EhBRU3s3&H~Wv=n8A}DFm>LzKWMOwOcB98V*#2qKJfIJdt^Y z?u2Sl0T+*{fIcxkGa8b<%L1Iww^?!QGwvs-6D{j%q~50zZwZYn&Rm^u*&JgX16unG z#k&zr;S^$W9s)v!AHJ=Kg(e05a=0RQJMeP`Q1#a{F6lH329PZgP1@}X3R*D$g)88u zI2MF+Li%;BfN{=W=~C3bh|$iL{0OjcJnG(z6UfN5Tr%{@-DL>PIFtE>1EMp82+F~l zfso``ha9Jq07P!qW_T}ah=$=v9fHvyD(@2ZBFe3;R)IJkdfaYA^@!VUw`?y?+HHmQ zsgIRRfisnM%YLLNt#5pmVFaJz>C-W^>|SAGs2p|7xS|{%{?_rJ-Le}##r8NJduA;j zQ$ft|dhIKobV6)8=V`*4ELHXy&Q8H^#RtJ4b=Ivrf*5u1!-s*bKX?yE{vCBskN z%Pi(}P}dOoyvIXU!N;odU68Rt)z^d`IynIN)J34xCf2_`{C2uN>{G*OB;aCSe)(~3RT_@aIhZKh`Wdz#rW>ch^WQx zv^hW&+8v-vPdH0UV^a%H0BZL_TKnJ;6ul35%vOfaCEQM z4{r>!U%*|zl0sYu+iw-a7P2oet;D;F>znY6dh7e~_d>}YSOsvYU0k1LD*A*(G>E^W zsSCEaJ8oima0)egDNjQkP-_tG#^T+6T0wCwU*y6`3~o7SpdXGHN9bAfzT?@wgo95? zE&Ph(7tfg9pfc)#`t@CK-Mb7m81sL?H*6}nZ&nH=8lV8Bu$|DrV5i+;e6|;o0U%xq z+a(j;q)!eGyo_?mrb$4wzj8$4#I!>3BnOI}s0F`Y1HX?pO@a*pNGJ8xd;3)8-uB4& z0&g)Cn_$FoZ3Q>(xN!>NSqQ!A*%N5My#V;RKSa9#_)*Xoumw?U+)-f=P(Uj*04uGB ze&;+`gN*52OkIKkx!cnn9jAkJ5#~&HDZ2u>g~gJH0Mm^f<;H3izz$^~o4}3@{3?*1 zvs3U%Mq?AeO4Uu(;i*->g+rf!DEY<-e5Yu8aSFGtVlE9#CSIq~S&seI;54Pnfs|fw zZscIJy{Au+?M|Np>+$!*=@TJ8X6^*8Qt(Meg?`|#WH3#k;;9tD5w6_ zj7xI>Fr;NAet?Y;c+ymy2&d2}1T>}jpeYWwwty4`=y5hm2PttKbO+p%3*)U8%(FyX zjCR?~rG~Vmgc-1vv80tSRg56=dx9x@=I$_nK@xLsBG~Uqps(yYb>H9cVnMf=v8J(b zW19$ljj*EN#LH?>rZQQG%x$8^mLwZ+hCeX(`D`DPRua;YdwO8kd?d zNretDrY23BF)IlLGsY()h-3-}Va@wLOTV(AF-PQg5fG1xf&YbYjw=3v zGRk3|cT9NUuRHSk4>S)$;IR7-fvG3|V;>u2Y9hwb9hx{6CGVjxIS&3~FxgB~gvj=c z*rf;x*#*-^z*a<|8$9NhV_Z-dH3Xhi1sx8;pea3Yy7>;oOAXw>)}DcTU_3#s!WwuO z-0K5L3)3rHF($6E^2(~MJo@*8Dr7PGx})P|jGH;3lb@yq?m4>Z3r7S*9OH*OKos>p z{F{zY*chQ!Xt$uFg7K)g)z4m_cQ9GoVPFhJ?Tg_|6xbZcsL|Uwyxf89(G|gU???kQ z^nugt9lcNOX5&!Si(bczlkvN!+6gpVtwN)CL8HuW1x4Xuz?Xqv?ud1W0iFRadLxW^ zboi9J-K5lQ&0&PK;3Fz?#w-1qZt=zfbyf3VqfH&u92gMk2McfxsDk0E38O2Y{CRh* zZs>0CF5s^@=#on{sM5$m_$4lT2(>Xuy5E#N%5T?~LbRLp~AU5ASj zq**;oP-L)|?cP0cZ_t4yOJ!)3$uIMT+^X1f5yHC10Uu-X1OT3(E%%JkaQNN`?x+I3 z1AxyU@QnG_i$1FT2)MPjYJfW$&y|=GIEL~rC(ap;kzkCBDSP2ZNc3r@)_$Mf_`U8xz zRRnh%T7Z~@Puq|KFUMItx_>ge5k^fICgD{@IK3ZV8B&~im0r$#MfPKG0up_RmRg}6 zeHAX1;50-lw8EbWys%h)f^|OyRN(UyTodS7 zS3~1`GY`>Inu}|e_rhN?qk*gI@Iez&lJy9Dq0pm_D$zlV)lxYK^EBlJcR4@k4DQ4@5A~?24!gJ0yzj)(LJN+_1Hqs}o{L0BP-EtS zNUNTGAm=*oCSxvw+Tjm#F)NvNZI#nw*o=m`J%sS>`SD-wZa~a8iuyA%#!bgY5$soi z*MVMtoeF*(CMi^K|NE<8KeP}kc>W(|Ax{D~n1$T;Z_Ywui3auH??8kQyYbnG&-?hi zh0m+_EW;-cpB4DLh|lx*EOFj1$M0f%s><;GWqg>Qa-YuxbhZr3+=iX56wgeR!mFbc zDO=3qP?TA`+|1lBr{`0V^Lx&Zm~X}>V*cnsqX&;3G;(mdf0|#a--6}~nm^ZI8u|_8 zbzqgp$8|rc=lyBG;%?7&ThR5H;Dy~6bYBpj+Gp&55d%jIAMkkOs9uSo$(`r;J^9GE z_JcYP9TfZ6h=Icf4DUO#|Cj+|22AryHDx@M@zBx+&oz9$(OVvC>aMH3#ciwmCv}>x z>y{=bM2@#440ycnsQ#k{Jw7aEbmW+b3853iCWU1L&FirE;f1ZnwTXT-eB_w0$?c~4 zPk%JM&CE6_Z8DoLXtAhKp4V#+yy^Ky!}sfdQg@Skf!o?T8hDXhTm2VPV}92isn4%( zfv|D$DXBBYtC{~~QFnY&`Z(-oN>3dpco-J@C;vG6YeG-f4~j90GmBG?#7-@2r+@!c z5nrNa9kn8aOF$SQ#)I#O*F#OBV_n63TzFb726)kjlBB)o0ss9G#{4_T!^jRY>hpy! zuB(G)9fCUItOL6`{^s5?8uNZbiQM13jQQob(64F*(D(>iv^Yj9JnI(4!Sf@WN^HmJ zMGJ&`4{V?Y_xf{tfp+?ORIykLQSs>t&(yAVTgjw5x!lH#Fc$ zWFjsIy6xiTY7|w9To?h~SZyf${VDA#$^tmX1Mt>4v+Jy`Is^TJSFwAsfevx$t-KKK zrwn2E0isIwLJgOE+si&WtP-7Uj4{s>YV2vMtOq#L_6Stgl=baI9YwN)8A%gF9fVkg z`OeD*Y16Qe4PgV5QYX%hpN!a8Vh^16RmH|q3HOB4x<-_Y1I_v%@W8 zpngDLPoT)FY$vB8I2%(|pM`I^WEt7#wo@}IWj;uo;xdU3Ivj%PMY(6S!xcA9px+8S zq z($y**OvjLM7y_)ulAimV8bMgOCr_v`F@x5DFdRnGurTBXi|hn_CxRF~@EGpHsytk} zqW~xSO%68r9H+A!L)7*U963uS2Pg33QCy3HQUbe)Lwb$=g7Q85iq+I~vDVAp3=|B@ zT-7%hFEfN@qUT0r>kbU43~ z@Rdv<-HhgNl#YsnvO2IqXk3+iMP)XJCm*cGpr+gq_soX~ga?5L$~*(kbdO|1K)KA# zx!b)JNO(HJDu877jIZ=B15ZxT@O+eG8eid{eY67&{d2dwBUm^r5o>?Q$-XMK07^XZ z@hYxG)*xCqzpg1yW{8t7ns2pdgCitklrG@skJ9%RXY^9tM@{@4$G;KyUa5E82sDe(kGK8LW;8B zqN`@9@-pjOJa}6>PD;~L94BI*VFjn^L!>c-W4~Cu_w-lx3j0+I%YQv>hanbe_vuvr zUN6wq&zLtCura`6X%-idbJ3n*tCk3@F_@tSjmgFU*$bpH1^!Y6c8}AweDM-a2?L6q z`95lNT6oUIZg90bi=bkj4f2n zy+|?k%Y0FRU?q4aq8m%Ub-#OV25gKH zYulBOTfaqiJTHHHx_wgL#y8{%teY#JId9f&ye@Ql-(dseVuy~39MOMxztIE7_nX{f zYPYnY)b1(4Pjy+~_hRe32gg4g-LBo-v60E`XZU4wnCCmkG`n?9>t`OaHh!V$%U*9Z zd$svHjX(6DrBjc#-S@9*kl7cu2t{mfY_5&K^m zufrc^DpvG6CUpJl48?so6AVMK;r$IoHW7y6yMHhgDNQgGm;T#^B5~r>i*qp9brg4w z7(8AGe8M};_@*R;$P0Q; z%n!r=bw2~*aKcR+#z19;K~*!cOZuS{G!Fbf*DkDZgJS6C>KbZ6P&J&x5mtZN6KsCS z1!F!Axd7nuPnDv}I7cNCav^iIcCmb=egPS;hAubprP*~^A^VH++Ug20|E}TPjCm1I zAc*mz@Zt!dfthxq;{d0MN8x?wD;zjMcfm-G+D^12%83x12Ptx0VA_obFvpRO7sa4` zQ3iY=UhoHMiW%<3e_%r~@h}*$FO7!uJ4u1^DFDk0OKiC8o!|RWfrkhTZvC{&==o9x zA$Z2iNHH#*>UeNHZnOoed7$}b++n=^5ezcal(M8o_wIEur_Oi zFWy5EXulY3UNQc5{fNTEkkx^}EsL)6)MNBhK? zE>)E*cT_S2l{8nCcs2JwuHOo|ndPGI&E1A|S3@8F!&*!wAJ06bY!4qam< z81p;Q$bgVx=@p4#$UlmF$XYmAXB;#>k|UgtX$62tu?gmWooQ(KA@zg{IB-8v9kmKk}bjmSVFlS4IQ z{y`);R@w4YQxPsMzk^l{X)qxLkofTcUG>7lH}SgQsb4mRZV2{22#YGCu6_~GqzZ4j zXvg(3Ym>rn4ce`cy~g}`s2Yp2+AjT~)r~GBEA%q0h^{`>B>GK69>|+ch#b+YjB5`e zcC}k!h3h5)%_xQ;McMTiGt9HwkqV?EyAk3G8}s|&DIKNt3)V)U4W6{RX%%St>jhxf z5o(}=sY3_xjB8y{#-F+;XdyQ9qrx!#;zoBM;mED_t}vBc^g|jdaTG@dLG58~;2A8l zyj}#|Hv<0RQQDujbORtRC>Ka^!Pf`_N+-ik!U|9u>coiLi&=Ys`Cyw*GR{ z#}1tP04!qOp|!Kd=tbau#V}_HuVR=Z+9B8Fimz1LJ0JN?zgBqDRd;vJ)&^_F6@@^5 z@>AauEbd@|pcEPU>H{k=Ih!2nP<@#kq^0C;pX0EMIF>b-jB72RiJPky>XzjXMVk)S zkznj5nBdQN2pFQqZ348m3%QWR@Uk)5Hq6D9#obn0>n=cDr&C>*m!M2_Zg=EXam*aw zd_yNN48(+U&VEjX0X0z@>H;GgBnIny+v5rfgQfJ{SWgKCB7;Fk|HJuS-L&IIn{1Eq zga1vkI|tlgx&UBNiO&$ATC9V5qXd zbOvv%9>PJE7LG$*xmOrFQw<{=TD9vioPSGYzB*OR_Y&p%|hIv+7DE<)niql zyZ}#NMKKlmfZzwk2xXmMqvuCW6A)%4>9~b_md(U3HV;_w6U`w!#;dOM2<$q1Lkn2q z4Kd}Cl$ye}rFBlpNKQ*~oJf0@J26^8AeB&-eT>KTBFJFG!mlzP^gjee2T|JvnFl10 z&RuH0r)(o%_Eq^eHD}^E_|U(5>Js@R_i_)bWje!~d`G1oH^@4~U5_iV#tqReXZ5(R zax2`8d54juwj246IScz{%sM^p3q7tVcgxeL!382=8P?u1qy~AdS!Z=iQAh=1{o>L6 zBprflxa@#QTNk@x6Q+)vHEwdUs1+aIcgSF|hzxlMEkm7FO9|NFk9&GJqNuq6L$_?b zf5Gf~3VwF~f}`&#c;fyAd;FoG!ps3Zu8AFCL{>N84j}BJt;G!*25tzdwK{=UGkJym z!UjeaskN9b%)&x&XxuPk{uyA+8aLjWF~s`%)4a~-2s8I$ts5nX6zacskRG=;x6oBB zfV*Z4Lw^@NM338v-VQI3vasV?$5G^X@@n_d!KQ< z3k=;Tkf=WF6*cXjsfW0X&sfF{evOD-<{lYgC5;E)H1}l zXn; zZ&O>^zHQT_>Dos7HW9^$nypK)Ni`;h*nEhX#H3jR#%1>RKj+?IhL5DXo9^>I`z+7H z%$;-3J@=gR|DXT&`JXHoaB>XQ%fBEUr4;Xd7_;W8WWMIr&Xvp|UTwU*`aa1VNlCBy z+`CUhVC#^q*ZEnB8G1Zx{T&^U9BO_^vPMbf0dtC&FdZaHNBkDu{1?JB>!-4Hz-PYZF^7cs%#q^{Okg9C*#opp-^OS>=IdJW ze6=HT%{-umIAV>G&7XSAQMji0YPpk8o5x2M$p2>#-ccm~b~nC?uDE|%0?I^#9@&{1<2Fibj@|RHFh4NyQ7ovQ*%E9jU zmfs-+74zh5$vm~E5U~7$REEc3>WtWLW*WFCFl5$*aW?X#6j!+sfyD^H!eDM!o-BhQxcP= zCa0trzwwQmOs1P}ei51A7hxk? zFUU**>&4z7)(hYWSuei-H(D=%R@8gdcnzZ;^jkV#Y&u+>eF#jw7&7CpaNnPA$br3| zPTWiz;=;p>t+Ox%LZI~O=R)^6Lag+Xc8R91 z`DFbv=~HT31T3XN=S@J20C}7zqe&gE^!yci{tErMW2=ZF{R+LN+Y~y0hA!}z;hbk} z^GSCHy=;i-`Y{@&IHl5aC4mG-h>G(eZU?Vn8Vz6VUJC$&uP-(Kf0(y z90KAw7KfjD`mfdumYMOGHmlY&ufAP1wgWzT5Axf0pG!0it&W!e_#_$2Z7>eBI_Tp^ z`1rr1Q0YQ=T%0c8+32F)UnA5LAq>E>Xfzym?mA}e696*-AkpI(1oBrfZcql_&OuUr zgc*PI*4b6KG zhTrw?I+p`Ep-mexka@YjN7kC?NN4TZ7gj;m9Rd|X9(^F7x~U{)W1SryEEtw;_Hswn zI#+3J3I@z3ly8M^5_{Cj>S}R76K-!Pb=0h(TdggLL4xKuC=0X;OA)6JAGm3xR)gQo z$kD5L0nNd%Z>oP4hC3xRgj)jCAAyr41ZzM6fz4j+Z%Gyph+?}BZzdKcM-I%m#xtqT9Z3z?=c?JussI9BBld6%s*urk2bstTZ9(MvW?05ta;PL*mse{y) zkhAQ~6ZlMdlZR{~VjI5Lqxe@NG|$zar_R%usQz_6GCo~zjwAN?Cf`5exuSb3(Zq|f zETW;1#l3}ZAPp}&k2Q&Ue3i!-gABO+tru{RS=0yw%PnblY=}5i)V^0kzZRNhZvFyf{)~>fH&YNypFERG= z!9}*Yyv$i==YE@U4ydB#b+#&JC4vEX3X=%1e|m)eaEQi9a@=&M*^XsX0WR;Z-yb97 z0|S0S4rj3Tu++bYGXw25MzbisX;Cb2`>e9pzCOv|kH{DV$v``@WRQZ_Lo(PkL^41r zNd`ar8zlpskPLjjdjkS8Xnvo3A&wxmXxWMdD>IfXUzt8Pnwm~(!8&$S)z;YZ%AK}_ zoUGYxMO6=%W4{UL6+IeAlH@j^A}~X*uu()$oJ|6?f$(jA`MB>y&`j|(kjiVejkG0&+Ch*8o1+upF7_WoIIUx|> zgT-Suly7j9JK61ICwUfqHQgwpvGE0m4#;s3nU-lfd0#}2g*-;RB~N=I#Fdn$0or}+ z#CO|jd?(=dUHFb}8t9&dZ(Y+sb~3DhSx|hPVIE(ID_tebT1&NJqwpNl2aVMkcMv+8 z4=?7jJCBFx{X~o({6TB#$ki@GhuQ8+H6OLyjjgK$^CcUroC?fw z$W3{zQ#p~)jyRnvCkxuYtIk`QvzARFvS)*cBj;*EwILh9X2o4dk%|(Ma(-GPa*r&JgN36wa4ZU;}cSEGm<}T-0KMEoGvX56( zR+Qj=w4F2YAmOFD&0{f-mnYAe7D8DzER%aN7Lws{IB~scK5M9{fd_`YL>M)RkO`-z z>1fAcMC-S~Gb)Kx@K6y7dd6-FfJhIOz8#WVn&z*X<3s_3ben*Nv=ma3jc^Fa=Uhfd zkiQ;P7a};~1VZ%RIU5BIId%bx5+K#aT{sd-Lg!@7bwsAluRjOi>&za|8ZCm6b&z=x zChX)ZA~A5Zit<43-W`4IXrn7?SEp&s{53B9!5+vY)zoQ<1!+HcnSWlQPYAi%2*$`v zMgMc~AA#TMS-oWEB&Vk5!)keTgZx`k)gf+~<0bPf7@#CGY)S)?IR*;@2PMNo5lUZk z;xy3jbhD8f_1mkEVjXDmrS32(DrUlLR2?!8z%$K+Ug^tr|1!mIS zN6-TZHBaHEoI77w6(w_yoI9sLGT)(CB)sO+ejHRDam6*c@1V(aj+MRf;v%9KtC>mN~?*^Wow5MWf0?J80!DL-K@H50WRe?nm+jnGz)gtU_Cby>vr4 zn@##l8-}O8N9^vLs&vhHpIkH#f?|=Je@9b4f!)x2J6;ZZ`i|T1?b!z8Z@w8<9p-pi z&lm~SBAaxEY|W`=a8G$nxNnj3rxws&NG_sZ32+JyBvaJ*rt zlli$}&&Ndbc&!+cIcty)q80fd^c_SX>LBPS4~xm5Cnz2kgw^m|hjI(!`(WtQx^c=Q zpIk&?dtRU?g6BSHZi6SPP#Lgc2lY*MM>TDm$0q=S`Eqe~qvx2m%9=y)6`I>Ny{9kI z9d?jpvq?lCA^@J&ECLjChH~UO***#601H(|5T|xdo*r0nqI0%cD z@5f{ugE8Jr@)5htAh*4 zu;VZIp~7#+>vU(^93sbt?}})fniFxd`Eo$8?m`5Y4s+0{(WX2ygD;n9Iyj3dpx1g4 zw&CWT^qQmNVa3s$f{*&qCqy6ko0@+J$X4qENS6-eySdHjs@4P-P6HUkBM;$`N)oOE zD`3~8{5ZV{q@N7Zmk*`jhZ19aL=v}7$oUuHs-JNLI1q&(p!{#Z!60#`%IieeAdEzl zrze`kwDFOM(TNQZ#cW%kEZNG-*bhkNdL4t5@h)?hf*;PX!^nZoj~yU9t#%5XvVW#Br`zY1zcDC|9kZHhQjCX9bQ)=IuI}j%mI-hLo)^PRP4tGZ7Vld zC@W7aWW+?|Vn6|l@BI!lMUS(dD#G+2T=OH4Hz!;`7R;Fnd+G@DX{rwq%n&XcPDc@k z(^15lyU4V88|YupYg8+i+I|IB9(O!wOCPTMtGO3HK#dE*OENp%6Nht=o|C8{b@sj| zyJuz&820cGraq|ybVWAbk=f~-0`@hL_>^mWP2hF^-GRVdX7(H_z1qIVwH+60;}A`@ORK4 zEY%@ib45_Ud)5;5F-Ll>kpvfD46bHkB!p!lWXKFB=S9pDgj+HkU_dCsrsP26mCccI z_I$hyjza2`VaG3M6hL%C^AB+)Ce}Sy6{K}aKh@uXsPF!U7-z{))CWcbuV-MFdkBo= zfk-{rupY9W>@K#z6Sh=0qi;1CW};~be6`?g-*8gfVp^ZTRmTD1p&RPzKo2TP*Ojwh z5Jk8h^G_~C>*PWS-qt@CV7%xG%^u!r3AGj$iuLU|mMDg5$1M(nS|UdGdA8|T!?&Pg zxr7MfYXp>gr#Sm+A{-_v8`? zBr;SH!*fRqWnP=+{Agies5$W6@yuxh+xsVybd1OmMQK@LZ_pUt#Tc?6qO{Nk02SG$ zD#+$8mfVXnue+nfLEK1SK{)mSe5y+95#iTCbRh3(lLxr;GMP_{dy+>^ z$X(nE({AsZQm4v&p{x|alCC2QJk*?MPrs&Kzk71y7dPzVJ^dl>$rT;gSjvTjRqeap zNV`@cMf2B?k#P4tnyoD+X5>QjCInHyAi|9ze3P=nwyE5%2-SOtD%=?bjCv=8TG6~( zA?Xf6E@G?Nh0P-o3SSy2elRhT3b~NE#_`tz>$r4ON$O_tQZAKBM;E~agbpn7AwEdA z3tFBj6v}4YeB}Beclvydp_x){z(}McLJboUy$tQngCxGA-O&7V{FL6n$49-9aubh3=N2DEux~EtHaz+yelERsB-=T?`MhBdE&4_2ZGh3zJ1OAJ(Aj^`lH*WwFuiz-S z!#N^Vk(lz4RuPISyUM@~if-OHJ04Ubl1q6o9R ztKpp|0Dl1W0W&}kV-^+MF{Zz_U3h)p5InA+(oqfE5HAHjWoO;-rN5T5%Cz8r+hkH?3^(@~z9{Sd1Vka>{q zKO=(uL>w)JW^iuRr`f)N6t-Hbl1HW#vK9(c$`R?ZbctU=>B>Xw90`NC{5Dd>U8-g? zu3FHsYNqxm0r55QatU!c;%~<_XEHyke_gsNZCTiKjJn9lm9VLPgh)MVjX8JY>eu|L zvG=J0>OG>eqS6jb92xwq8xF%sfp8_lN?U4?ncZ2*KB8gg$6zomyxHcH&ZnBY+|m5C z0o@QXw6w#t1Mi03t%S4|0=1n2O&6NBQuzun;sd;|#kjYL-vf=6j^kH7A`q$X*O=Du zxX`h(QM?uZwO*vnpuA;dZ1#$b9~M;q6RKPAvJ?0&R01~(t`gG&s@?i{)?f7M6jkmm>TiL z4Kq8wM+MvGh#xKZA?Gbbr`JiBW?Xe95m2jHFmO`{V;-TJm;@=0vfNZkd1?5nm-6Q0 zs}|Ub%TzRR!th+4u37_8r9gAmf_ss9ir+7u6tPKp#Pog&S^h{La?Q2y-WCL4k)eg? zk#tF_3q%~zD{BzSr363}6R}Pz34DUOoIov!>_QYV^*S>6J$jyo@m*6RzN9VlA*z+k z!NX3eMFh{6q~X_A{Gy4GN>b6xp6$4Nf(C(IoKa+fnY4)ju`&*1_Zq<3hWi%j(yby6 z8e^U_28p~z8Qu3m0OXZ(1`sc=fNb#BE;J<85GIB?pb-(d*f_8Nt4isW=1f)#$J~04 zf>*ew`CEp;D9+pvHc9JIueV`w$fkh=AJ-6+0g z^5^oMwScU!ydCFQ2-}=z8})nWeMS8pS`5S5`vgsLu@@DSlU>eFKp<6|YVb=zjt7L0 z&5~EAV1Ka{R*M^k=W=wJ9Y3IjayQw(9w7VI9>C!!$?gHZHstGPnT9q2uuey#UcXi^zfF!kmALNGT`;8dc(sYHQODScon(ce@RPg98gD$hQK z!84K=$%O)z>|MwcW+uorS~)BI8f09Yj`McYb<(>XH#J><5#NU9XKBi^F;GJ@$t#Z& zdLbR(WLp1|EaV$o4e8+}K+Pvz<+RhVlW1ns^`q2IYSZ;2yqz38%-eCE@msU5QQJk7 z6HPq1#fTbrvPPe;{@FWyz-Gf94IT?@yy^NM(VT0d(j~GV1>f%AZzBSRDss_6f8$Np zNn3W#Y`Xq)eA8h$nka03GBiI=buBmK+%yRWc0L6DbFu%Y7k0^`hnAt%r3A4}*CCF8Ij@MOQN}G@I0t)!i z?@qYZ-sm#!I@kEln#TS$uhKG4h5M*xUne9hAucJ32$zG_kiBID{<4?K#|H47XtH_* zi(9pIrOs|Djt;12x50av0(@22w(8SdhZL^%x`(?OfA6VE%LXD)Kg>3!qSIy~QdCjI2DbK;JtKh!m$ zrfdG8L7RKOXamns<)C)OyzeET26FtNQ~*SS_R(N>wx)i{ZjC9F1HNb^xn<*8p$9q` z7uVw9nR3Q^`a)e3X;XdzmlE4K32x`gWjj|5+jlR}C<=%AZXr9OXJ9$d3xs|ywL?&8 zZgYo%QlV3E1t4P4LI^iJcedu0Nw|&LaTp|bgB@wm@i(Hnban*l#*xjUC#s0HK<7>o z$;yilnbNuzB8#piiA^3VnPG$?HJ5|AA&qK|Vu&i4*RN_nPKX*3AClFmS8gifDEO5A`bQpTEVhGSOjky%LIz_ zv>d53E7m=c77~tUyGEuSwCx<5os$(>{|R5I)NEJpp9QgyyMmsdA)cR%6%>sF`QGq8 zh)iLlHSs5JHcxC7@cvuG^ArPv_hYn!PoH_AmUQSqNr*sU*o=70b=XI4t1W$~&gI-h zh0%ohwdFXCKv`T|0UJ-H_Nw)j{^G0t${Xr7)~S`#2*zV5x+#eM)6?7r^cabj_oC9! zIeA?npb(QFNktO{p$uTU%rCYhW0)HrLXxSfh4&h6@?+R88(OWY@VtM6%W=}DhUdBfvVU>QX{&51#2jHaC8Frx7e6AVSu@t#zWInq_;G=0IbV=09^Ez0cN zoNK2~1i313cKX}OxWHl1!0v`5ahrn$!qbpF$}tQ%jK#VfuYY52g_!$d?U#6Cr;R zNBohh@h~Q;l00e^5z^F+DMRpc$ycpHXQM`XD#Z=);_*VBUG}!>n%n`^TvzF>U>4AQo8Oec;>vvsX^Bzjq5YsRwTU% zo3^N(lU{STl;3SZWYS{9g(#LFFSjN!uqGSQbN3-i3m^Pd&v*9F}?ICLO zd&~j6AAJQ#>5g|KScJeQTf05SQZ&|t8CGOczkyhpPQ#-c(8Xq7gEq6%RgB#bNF08H z4`>(4xq??*A^=Gg7Xc?er&-RwQBWO%MA?>NITp%!N`cP`3wuKEpAe|<&jUW6q8KU~ z^h;#S?7b?xuJn8hS1+N0ulJpxX4`1R87RyMs+FD`qT{}xgI9>21o9U4J(BKe+c|Y) zDW(sOO4<5uVX-_GzVH-_+L4iaJ{hAf#I|3|j71KGKPjb9eIPGuo7T`mMi9Uql7UIO z(Ac2&x#IaFWX247L*AmStojSG>jvzXS2)cYWauR%G!r?gd4tSh36P#YBRO_D>?$?G z%@H7w6UHFz0RrvFF4_(Qaw2oyiV*yh4Myp8>5UpB%;kwFDYGIXFVBT$BO>n$&8L|s z>iH!b7@iJ97dvf z={_V4n2BryiPU{`o%o6772j;WoP?2NjF*OkSTMsUFI0gnP925(C`L(cdl#a0S>2|G zR5`&0al?j~{!%B7rc`C`VHF&eb#^CD$ZI*UN)gaUuEf5g8>2ley5OL7bA;e9$An4N zW`11%0rVdZTFmc<4WCMHOMgXB5{Rbe3#1MBOueg2GdJ?^4O4)*Vxh0ZxEM`2sYBDr zNHl_x{y+2ld~j*X{S-~R2*$tbC6Dz_adn^ti-$u+Rc0u7_#bJE8^akJl!nB?5b8d! zdFbIXSf^HkfC6zj$Z??q<%FQ|10ulq8O_U4mi{47iL&Kbs1!8Zb5xMVrhcOTjulP) zWce{P(^)21Rt;L#kdCUU@J*#jXR{hWH@}ZtnC~=h&{6r2PI?(UdQ4tcgSP(9yNNbn z?PyxF=>xm4V|B#7rs&X{OP*u%IE)NC??y{FCS@hIdp7ll!1C%UK;E0}Hy{y&QA1%b zg6{Za9iZuJn2Db2(OshB$bNxe(c)LuB6R9j(W%7j%)a`Mq)CHsY3e82n#(G$xB&-h zf*2Dr#iC)1D@BSkDZ?VsI5d&u%LFSLU#Ym`TWR4ugArULI`#@i0GdjJH8kg<4L;z1 z4tyP%1YI@ab#tT{>I>t=3r*OW+`*!2CYnC77fFnL50rzi-4kqkD7zL>Kv5KkJt-D_W#zLq=T~vhP=xBV#9RS+pDb z$FLY4i7N^f%8XJ2FXfNs=GaPdCh8J-iSwaN<+i$t3T%e4LBB3uu+UbOyKvEN9UJc~ zU5jI;#o<>_-Par6(TVGnW(U!AhWs$AmTeeM3yW{?F zmcZ|>v?GIN743JnEwk7b*a|Y{0S5#w;YmkXX>GZR8KOO9w;xX(E5KQhJ{!;A+&sPw zFu%y=tg|gEG(H}oVBgv;*scpVdAa>Ygr2_@Cn01YC66_d#VoVrVqel`Bo#&~TI#2< zGm?!Ls77b732Zbj(Tn~Ts@PEG~{CFrH2vCd(8jf9(+d@&@-awvS+LrD~a={Qtn~OSjV3RJJX)4&T2N zFrgW80Q!99k89aPKa44|tBMYm=is_Od?fhhDDV~cmgN){f{T@|7t5Fs18`KHE44#G zDkSS2hX6gX`%PCQ;e{o}Ni@ScVfO}P&3C$K1 zW<-o*Q~4N%-(9k#(6(qv;q)j4KL_bRx-DZ6Z^YWCUHogSHkQOk)Kobfwu%a;@uhg( zhEiu`-6n_ekpyh!LluWHc~Zc^fu|F{%mq}OJc7#-NH)@*!Q$l61j5Hl7StH+KL6tRr2(serx>iVJtV_099S7cA9EiJ=IHheqr+JvC9Za`B4cNMm{lkygYl6O7mgU;k z*Sg9T=WTTuo1oBSRmKCX^K*>93m5#twXv!KnK9-B^KgMfgY;XaAVSWog45GZS^n1{ ztqCn0!k>hQRO;^fh6 z=YnJGGJcie{O^XIMM)2{W3NE}J3pT_u{!qX%}=v$KG0qD<7ZjyJ&e78Q!ZZh1yEhF z1W5-_V9({Ih2d<~ zD2*MCEXKPcb(Gf|C}IST2r9+V0<3>+RV}vXpBWqJhqn=Wf#^vfO`q+j>55+C+F*kw zU~^PfRXD$8U}L!cVBBe7VU?w&_Vk^G7zema={lUTMI@@q0g)DW4TC8w6pbTDk5Gvx zOjzz1mFCg*vyyn7Lhy`h6R?dQyXg5*=WD_4wv^h}J()0ulUO4t-@s@dgkyf&<77?G&2r7^`rw&pjR}7O!;mqnX zy=~l3C}u!LS0(f)M<4)=fMBeGmdc1oL@*W^!Xe3{#26sq;VcSpazAG;i4P-47@th| z>ZqOKWD&@%f>|-PVBP}*jf#^;b|)7n3n~&|7&7iMjz&dPGAA$kB6Us zGooiy#S@aF&;3`zI5|?Tj4?* z2*CZplEOR{!a?%Gx71Q0Ar!bsL3>zGi51+6ko4EM9b6O%>cNW** zX6%{e{eL~i{=zyJGAE1Oi&NNo*$>ipFy<4h7)BtmieU*7)L(fasfExAV}>D!5g0OZ zGN7)|u?nvMb{Ovu7jsOQviU(CPXjZNm^G!0EJwD2+lOGx++f@oG)pQ>Mpzjg5fO?N zaft0;kUWT9ZYbTVq+k=zM??r1kfEp)XNNrGsDesYRSV?*X(XF88t9DfsHnkv_PPy5 z*olVfo}iRvBx2gqGjMl;N)Kqoi^EN-${jlmer94{cHuUuFS{ApJ})_V@@ZopX8}`l2rhI zJ^`IT<6oS{pgxkjAyjeI(by6yFlq^GDhs)m zXNOHu=pAA$`gsF5Mi70Nt>S=Kfq~ZLLDRB-hN_%pmBzS8kvoDGamIq`v0@eRB|S`i zn4%YuL&#*=+8Xqi&R2E#O-XF>Af(j=tQZW8uo&FTslxCoVvXCj*h@FTc;=20Jt*{B z82$2#ZCSyIsM~leu)dYsxo|{_A4G&=Y8)hVl2IFBTP_G!kfPG(>I}k`G3paKKLJ2+ z>67^tKXS6%u2UK8+rNal=Xut2cqZePNEy&S)O}eeXxs8UtbB0|jt*WPz@I_*xc2uu zXac-;tz)eM7||Dn3K3!AjsqK!DIwk|5=GJSLceUdTNgLNqBCOE30?%i<<>b?mafGT zx)1Nz?x6nM5uf#ZjR07f4ptUlw{1*Db>lG78$siKAG7m}qxQv|k#BYAb|s zHuRj`3sZzw0B0{kThw#rD0~jaX-R`e4dHr(w05seWn#^X6=OFRCyyTet4fJVUCvkj IeUiez0g4KE{Qv*} literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/opusfile.lib b/Windows/codecs/x86-watcom/opusfile.lib new file mode 100644 index 0000000000000000000000000000000000000000..5219e72778c08190d14004b2ff95f3720470adb8 GIT binary patch literal 44032 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86-watcom/vorbis.lib b/Windows/codecs/x86-watcom/vorbis.lib new file mode 100644 index 0000000000000000000000000000000000000000..03c1cf7fdd933776f80f9369bf0095e8f23ee24e GIT binary patch literal 175104 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libFLAC-8.dll b/Windows/codecs/x86/libFLAC-8.dll new file mode 100644 index 0000000000000000000000000000000000000000..f6be0557986b3ed386b0927d58fa76167e37d1bd GIT binary patch literal 62976 zcmeFadwi7DwKqPK3^2iwXQ)x4jU_0yq@|Xz*fIuBha{8WB{)f#1jTqOS_Ew^%n;fV zNis7eo6Xc%Oa%|N(%K$8+E-N22!feFnShsuOEp|75u=^Qq#A`L0V(-?*V@lqxY(Y) z@7wpBKYn~Pv#;y6*Is+=>r-+|lPTR~GFkBd(2&X0f?xXQ;=h0YPc5=XjomcLv?1e- zaV_Q>-xxP@?!60h9$4^$?=86V{+#dL`Tg(zz?XB^-8l>V-_N=C`#FU-mFL|5gE@C! zdH(q$#~YwMZj&m+pE~Ic5{b9**;Iu!rCRgi~cPn@-Bgo2>jUpYV6$89Ut}E{~ z2qYPjEQyESv&wQE&(abZuO*EV!D)rjr+UnWy@7zK&Wz;-*b=9ywI zAX!$O+_~+ZCcv+dep}#_x!m{7@*%&yV#sfe&3F=}PnpHGn|*hM`u(Hg1o&q;4&Kuw zI>UDl&c1DDo6Xb&fOBgBJ5~*tKoDyEHKFr;D@qtmzb0~H3x9(G^?;c`@E4R)2>icn z3bp#5iCr)>G}QB(*aV{3WJ6U)YtJgCk5CYpxdfP~>;0YLWzc+atHHxrW!h0@=e8!| zuS$RPKTM`3^$&6Bwf2l$Y7d+k@?9MGbSSjP|EZ(3YMY}q?EA9GwfltsGgsBN7V5`U z+o*myD##LB&*hXK+PP%J((!>4rs}bxV_dt-_l-cCIk4L_aDe{o7ws7x{)3Lz*>QN< zGrP>YkGsTc8GHRlT}WoY_)XGNSy2x1MO3;VJuP$zI-jhx3U9A0>6OKn+;(}B&2ccC z86tt^?h@X<&>k)L0wQv(^!A2!hAk_@ldW2aOqDDiU*-wB`y2;76+@Ld+#*_V8Rb-3 z0SI8jmWQRcPgeDYefIRoM`_NZ3#ZEw!W|?2q&FsQkBN4%D-yFtKFqqpgh9vLCfXzK zs&J&sYHpM6n0c4TTvgyay5NljU<0aU^=7bO3Qx9+zQ70Rkyx6jwuxeE6TuJPeN1%D zzU}s^ZDF>O(zfy+BkLt(0X+vQBDTq5Tc}lz(VAPY0BI(%Ll#@jJ96Lgge@BpH{tg& zPg!i>X%dDtw-X`|?q1-J7Ly$}>AyJzF#X|IzCtmyZ=lyc?~Zxq*cQ~-xvl4Xqh%8M zg8o-!rH->t#?ue?HN`Jl+7rtICXm&$p7k58 zZwH3*SQGJAWkn8E&@V(O(!WY{P%G+1ixj>hg|A5AD^mE1EG8t+H34m`_dglDV^646 z4EJSAcVYO!38E-Rx~HEMMdM!{1(L#k+w04;SFCVQmKEqtx=ak9LE5G|3-k%giR{ zDQNS;JLSz;FVlD^-F>;Ahy#0Lksd2IZsds7(WxLyTgcR9og?;!i>!{<#17}+g4fV7 z#VuJPKU;KOLD+9$#gZjf0K5fi#)-rop`Uen(rNTp^}8}hXpbn3GBh*%YEm9mV5)^= z5jZj;w__VCazcMVMU}kXF7vJEs@L1XmO6QTW~3`Uw_Vv+)xTwlUDjAbJN=hRw@n#G zmSkYNO?3w)PkFmlR@+6VthD9!$(u66mU;%2=e94rKn%uS|7>Uon%D{J_gzKKD0L`c1y2)Txag?o(n+0m*t3;sVvfRcT3B9 zG#-ki5rMa7nqL#QXXll`=Z4*EwpTG?Zz+;hV^+C5mGJEuEKx^4F%6 ze_oaxbLNMiB> zleMBewl|sWdlx9A_ZT!GqpehUk8y$LQwp@k3)nN-kniCF52qCPC5^=;$0A3vpvf8V z8IB1%)7ld<3}15mGwf594Z}?6pzlsul!*oz7q01pp9#>F6|rwA&`6$r1DsGQ;C~-w zuMT{cz9>@`+4G953$J#;{}e@bq*eDKGYb%!RQ>)F@pk^=4gOyE0Nk!@_e5W8u%B(( z3rL6O#J<5I)4Aw_{XFQqKo(~Px<>df5${AkO7~BNW|bSQcT99}^{r&8b9Xr3slFO5 zSythxjQJD=Bz@moxktIKZ@b4+Q5icj|Mh@RhxcY31aM3tjrUP{Hsdw#CQ zGmOTtFtFz^C82)b1ds%{-=sQd>&n>hIKNtOIY>ckHKrHL@WXFT;hg;;)c!DVDt*xu zd6PZwChNj-IVL>K44W1B$RabBi;l)}cu-l5>7pYNvo{u)>DSs=kQUfxLA~mB0C&i72&LO82Bj8P$d%MV+{SNvS1{j%!v9Y8#(3*pR=61t&%gL)@ z%(Wog71N^MvKiTqAeoWi;m^mhU=3VASxrN%aQ8X;7JZA9U5#nEyJ^rmB5kY2?Gm5t zJpxZTw9_B~&PAUbX^x1IvZN0K7sT@5F%pXwI*+WEF%XNsbDR2v73chaXzDRez?d5Y zg*PTX)n44;fDB?X0q9eB)m#L;rda*S%If!#)o+GwYFj$ci36XGl~(g^VTG=R3)7$? znSsHv+Ok$uCW&IYz~ic%{1}Es-<4Ve%@Bw=@{0eTG6klAvH-jpN`j&9b~`vU#$h$M zrLYOnCk+A(FU`;a--fewtmluAgtlc52_wtAmwbu1FnTs|e?tEx`-LXL5kYV-{R(yA? zr#CU)aetZ!WHd&3;lV8n?Gf%nez$YS!mGkneU+8va8XNRb@9PZ3zlNGi4H5;0$t|a z9}aXn+QdbH9hN-*p#{6oux;d>ySs@i>48se7v7ljZ7pyWlsxM0%AxcuIXzQ)yK;BQ z?9Ia4wf8;1(E_WH)k689gIeg1C@$RHB7)&l3qDNfz1`B?1<%U6Pq@3JJ9F=QvZTv= z@H%+tfp^D>k}grwY50v@xe?I`pV8gz^k!-ezoZUUl1WojAX{FNDc#+B@7^Z~Qf~%) zweH<9S<)SN*DOl92dcV(%F!W)D+aat@3CV@*5Z-2yqcKyGv$VdI(&JMlQ>Z<%`&@5 zw9D(Vq)YjHw_+ZqHSES;)CyjSUmk3k{b&KZj}QQJo7+LNg#1kLW4rzwdJ{lKr?ERI zeq{G>ld~&wG->CxV3-PmPr;8R{3ZvDg;q8>{Ca=-2~mZ;Xh9dazi2QB-xv z>;O%NrW?W}OR*9SNS5Mp(u&XVbQ4yK^Z%jwJC~=M0CBdbo6R;4vUGHcX<2$EYZOLT zE1FS2Gc#m)mMH1yxfa9h9ViANM5l2(Yk{wlyxkp2H?v#dA`I8IycYOmELy>==NezmUIAUF-9n{Tex4B1*A{DuP$0gR_8ic9sjR-zKbEY%c{N99{JEJ-LGTx zb+k!KGrQsuB+&5iIs9iUPahKrl=}N3U=$tNi$I`T9T90!Rv&J!6_aQ^i$)}JtVw5i zMBG7aRx#&F!?nOx=p`(SEWy+c5YKN_s{!DmV+lUkoD=_82q ztfiiqO93S~uO&gYoB?vwG%+f;M-z2O?{9PYmqgwh9ys!yjJ-GcF=Mc)q2l6XSL|== z@(t^6v-=AB+xjSE_1)axHt5UlZ?pKvh`q1Uj3n@0y8c75i{3u{M*Q}-o%CJa->25 zdn#hnKTZhK_idiLX+aD1NK!SsOfzH&D`=f2tie5tv!%b!0n2JI>kvP(r1A^-g+T;_ zt%ZUJz^pok#Ez)Dm&6|UU~D)==&yam$Vup92`5b*wV>_qpw|RJ4;*nR=-QJ5!wJKl z$Opp%UEdL(h|e-28GDCHdc~XKuom=^V8V%3_&&8l23i5bAQL%Ag0}d-l%$dyF)E%d`mpvTxy#d+su`#{r& zkV-B4d=eoy@CRnS`?Lz&kROcD-=tKKK?u;0KSMORWQq2q=_d?De3detgd988NGp}R zfEQ|w7VrQVUqX!*WTA*j6j()p%@{sUU%-qOOrR3cf{E&9lKPoUKbQ)R zhxDm}8YIric*R1F`r)C(kb`0-xjv6Rg%M}D-LXqKw#$EJ>bA~lv}1{r`w#X9sKE75 zRoYX?TAqHD`FbXK8sf`qxpcb!LoE7Zz1Pu-6;`ZJdTl+UQU5CQG%l)&U5^U>UQVDT zS*-7Q9XrXR#nc>A&7SNgRNsXGWBG7LqzF@t#IT{gwCjezXG8wOqMg<|5(*LT-xH(m zL&Pc>Tz4;pL|fDyC(@?aV zQZFM$jH1%tCGxGIey*p5yp%;F(jm+XrrC_tu&N;P?PNNQEs{mVcW#@W4$W2b3-ar+ z@)d>3!>* zG7l2oIsT{Y@v$A4^Mmq3S5rDV?|v+bVrpWr8ypQ%6r9-Khw~u8DLD&HTtY!&pt6z( z>i+wHu1+NgvII?`euJufs}f)EX+SG2C1_oLAKIT`H0WIDb!G#H79s2vw zRuiZc<{C{!{!R`$9z6 z){9-@wa5wVXgb<+I~;q=)VpG%p?VSIRK+OkwPa=onryUppUUh$BeQ+9_x0T4sCM{_ zj8-(wXzzAatLrpuEu+1!6y^DCTK)adE?M$AoLS5sohADgd_ij%;QrF?EI|+LK{(I5 zeSxMm^i$B?sx|zD(_UGCndsY`)}l4Mi2&QrJntc`{s)LvXXLp%wPkYN6GOwF z$qiBR3MjE9fV41>mJ}cr6)8Y|eGVWcb}=o*bjgzK(%mk-uRBX#r$+oO^i7tuI!oHM zhQ|=j^S-j+Jgp%}L3c~_(me0J1y@xM%X4=u`Wl;NeHQwl0-=xOV2kv=qEF;ttMqQy ztrRSIMY<{GEZM$rLZ0{a1tY4j%X7C^7fSalPWSfeq6O$=ElzLi!l|3dfzr*WRgL}p z7H3K8qBo_Rp!V!gzxpClKZd8zMv%t>{SWB9o5=^%e~-{P=OeVzgAuyKCabV2XQ{q; zXne>H;YZ$06NgVm^fc_Ws`XZ0pLPuOTxrB*(Mfqxq$>^k9Yup-iz{r&mlasIPeTu{ z=rea<1wdFf7d!v3KEIyuGg|oY^Fc8DT4M7azmsW^Sh#5r|rxZ^rrS@4?7um4z>ylvAHK4+_f*Mab+` zi*5(AfcKVIfCGHNpkz^Pk>9g_yH~s z{|Ke4reE7XlwpdmsE}h9-+y3#&1DzQ#nL2zaF#iJAlLDtqi!PG0EHYh|TZ#kQvap(j;oo_x`h12FU*(n;$Qvx` z1j|11k^Zn?Se`dl-Hv_bL#pKy``;L^DgZm`?gM!yIY};tlVcMnB=*!TqR(-_(Vo%f zyU2OC`mzOR$c5P`30{ZT{=#*bt<*{BKk{IKG3*%0asL$C##U)}w8CAt!2wcLAjY}1 zldW^+WtEXmx&Hucyic7h7F|csc4p%hE>pBm;3_O{s7tqmkpo;kt_wh`ah71 z1gE=eQ8D;|dSW|6mRe*D@LP+cg?65+iJHEs#ZJ=1o&^$lHi=&=xHI9Gk7)#2vz+Hu z{~iz%l1u8ZXrmJ(<;$(y{K1`zhpBFIu<+*c_6|G1LwAT86TlXFnsr!r)X2&O; zx0zdUFvD?h`7LJ9L0MFGD^*QPM4zQ-dLsG+MJHn@`vUUQRKDFzDgKWXXylWQo_5{|vuoH1ShRP{I{^C& z%hRV`>$BlV!PKhiuh9v&j~IA1f{gentV;qh04ETSB#;Vl0#EAr8R&(5BOXw%O0HZ1 z`N%*c{?b9hiPtvFGMlQekTrH3kQ#-tHfn0ut#g=v^k}0~DR}ctb8o~9wagQ{s*XK5 zu{$H8g?vy+Wv^B~0O&3}&FF7v}QI zNRXRXp{_CMkK0Rc_wpOBu?BZ)!4*`*jl*|7S9sdc)VnbB)gJ%Pcz+IcXd!aH4FYK) zy6_r{M_R7RWr((b@^JCWMNV0x$Lx%(E4#mu~RiE|7T>kdlhN?Emwt!Ay^TPnfP zU%TX*F(%)Au%eEGk*;C1JwiAop{ZvkiM5D1t+ej@F{UHv96zYsNVHs(*>)HOz7HX}g+sZ@Pio>F(7UK0=Q{ zix_Q82h04Ji(+L7>D+FGkg`6VW4&@Ei4zo?J8Bol{!J9EQw3jSlZcO3z1X zeT>%AaH2Ou^^e^jy0C2M8w?C;i-xsmXn^=h#DqUXyRTSG1AkB=jdn?#9n~YQ^Z%9L zVfpM#|BXBoFJ^?E*h3g3gk^l}CH&%Wv0}z$hD&>3;uOHB19Wdd%&ALE4 zV}}_1n&@cUzxVDw4<@tN&=~HC4b-x^zyYS=K(gD&c+gTA`%@yP2-Nvr6m9S|Xwm}L z_wA!kixd6szBHfpp6CcbXiG!P>`UK~W)inqdxFY;qa9JdJuqm~8rp!G&gCt8ivuII zWtU>Opse6{jKehdwwbh_{v5foCL8mCeX?SL_H2ioF5i^tFm zq{^l}^nEm};T{p04;~FKKI+&L7`i}fxEfY>X#AF(zhF^p(4sBtLOd`yTw6Ae*~9k1 z4gvN8|5JIGRg{z@&MWlFztD$a1q<4j@p>0K^c7>~I#;-Q5Ft{z!qq3`C`Cn5*UY=nKq7N>0V~_DVK2D}wID4`#CygPGO9J%@$t9# zkgUjIErLdYGW3sseNR~0$b$PBUryn7Uc7tgy3yFabl8KtTU{-GAu@#t?^p4AXRmACncC3?EZFG(O<}A6uHG zPo<#hxyq2}zd-%YiWE?s#V0a2Wu zVPW;j3L6uEIWc+#2>2%q@X}XL1G*p%6iZ^wk42`H5rhTy$J=(oyB~v z%vod8^B{tIn&QkHCZ1#GV>KqRbJ>j~6J|dc+c-0jv(fnVSF1zo4geC`HVm1jKM53pQMk*}#z zG)w}SyXzly1Yy})jBcPkWP?AUchTI8<||t860GgS)p#fQ8q~!P$!R%;8h5c8|Bvd* z<(*m(npH6ZAu=baLi}f~i6O+Lzt(>VZ$rsXk}G7G z0YN?pcczmAxintKty7wybA~c=Gi|_dLo9t;pN-O5kY;P~`g{bAF6&w*m|Kj)`BHx7M6_e944g9@~pZj*v z|NQ~(EV^p-ksu;Y&?)jgK+vsQ2jw)2q6nsgNct~py@4XGvFr7x05p!^afF5c5RE17 zLlS}M9kO8JfX;rwKEgAfjbu@ZjZ{7Yn@Cy2J_1`vvUWu%pQ2jIJ{F~zMUBds>`pyQKq4CNEte8o{OUL_5$x%l7%IpeW_6xlY~yv=cZ z+$8~}T0sVoj&Ys%L7@&VM3@}r=AyqPh#J@DXcz8hWPT3l!6|VR%O5Y??VzZ0Rqeg! z7R<8)h4O5{Od!E*C(*6B__^7nQmKNONP=mN3uf!vw~7P}DT0|KaL9oK^GZT6myK?k z9~aDI5==`{Fe`t!>ThQXW(o;r1M$2;mQ4j1?|KmQ(}ExU76gf^XB@|+`kj{f^`2-H^^W>xS#%l;I|m&D5o?0$W{LteNm6JWrinT!q|{YIopA)%KnYF&c?Pr{K&}i%tG8@K9q`0p#mwF z)P1nFlToFKHb&J(YZC21)&AMuKc}EVF6C?hst?|Hcib7Mz;D`HBfbscbfw}+aP>M+ zHJty)V`p>K0#tv=yv3b@%HXOSsD|n9J#_}EHn24K>yJ;KhR5CEIDsQChJY{GpZ0_A zoy`>qaQTg24JT1Km|GBcO}_KQP^8UbG?r??w7UKuHgG$gXS9=p+KG@r43}JX=i~QB z+U!OvDUrs2!ZzjozeU={7;U85?hsHEez^6?(@+3T2bg*45AWO{OSVVal33z=+;PKZ zs1Q(a>i`8>fCToyE3a-%LBU)=ajx0%;J;5e4F$E!iLb2vklQ5*-{4{&xCl-9c;A^^ zQ1cJFw9%4+f;I3Jpm28V+kYAga6wx3{_2AtVAJYcTnsMx)z~w+0JT@$UGWUKW4T)G{Y1_kd~ykbjl)iIvct3#oB-#c_gzF5ujD^X$9N#7WBbv)648r69y%1%O1I z?WA(CcvICJ`xpuYoM~~KaoxIVcU3TC;7sKcQoH7+2iN`JOq|4L*9Q|%!IGq)J(EwU z!6lgm=3k$KPbk|}Ye!pWoP*C+;H-bJeBex+#OKwYUb6*VKLuxk)$XLh*u3ZMub#yx z5I($jS&u>}z3XtB^tk-7MT|5L;Nb_kz-oR6wiO8rtm1lGVEc_cA2*KEB;SjmJ1;Kt zZuzRBiLNd>g-fq=POY zV;idmXIwnEa1yp%u)|zC4acF{w8mx>3NLhd%I29$W47;Mv7#LBqWqCyL_WM!6ikr? zGjZS~qeC1J1ygYcdmr2eS>VE9EWAEaP$-HmvS2zMO_2pR3f#6Wn1y|-3p{uy#Z(@9 zW3X4QNopkA~<(OST?8igN9DNM(zTvpIk<{`R#$O8VpSS65){hOwMI)KrO z;KwBPy8=6h3~sY=y0-?-Cl+I)vMS5buRXgBUW{lTIO-hK>UW~HI3e1#XZPZ;4bD{g zGjX~`Yj_UnyoJ~2^xUe|Kck|7p)_1Kl&)EU&(h$!hzNEk)!~mFw3BV8m9Zf+5<@$* z;IB~!=XJf^dH&3WxLaY9=SjsnTE6lpI{LRcVKWJSKb0Se^capoSh3t$o!cu zkv~&(Zgv3zE~Dh)$bhzNIxVcZt+}10!fmCaRh5BOmnU}r-6qpkWRVOYUeU+eQ(9Uk zADC4U`!;fsL7T8&rqwFC)HqA=B|Nw4xsVxH(SjvJ`Df``a3vt!pap9Xcl3iuEl`Ov zjy*kNi2=*Xd_4WpXr2}sw4U+Td1Aqza2hvr!CnIIng#Lb*{BN15zlRA}!BDHt9GwpO8)2Ecnj)TiDzt!3Vb!kq~e2Z%OK2Mkc7k zb0MEY9q4+G>DsT;%B$*DEXOj)ue=ibs2~Lih(S`2Q0_bMX3d9V19Uy})OQw5xTgvG zq1JgWlpXpmlT8ihj>Y~+C8DmtM=q4BK7bwK@`}n*oleq#VBcaU_CrY25T#8Ki}Q?U zQwutErt=+rbDZJ)IK$sfGTe?u3ov~CX&_MfW3K$Z{vhE{E%!LBZ_q9J)HZ{=j%ZP$ z^+?!wsl_U1&k|ML`n^;K!hn^SKC3hqy^Cbi$13DcTW?0XqurDQLir^91G`Lndp zQ>dob5NQfE9kYp}J{_0d^E0E&DOv_OlRTwZXA-GWiPSgMO*Dn&l@tg`EXl&}>6er8 zs=^PY6bAQ66a@AIo!)aWO5UAPlE6}dkM&Lzh|iEPKf-N>oe)7df2^}(!G*AM>EZkw zwrjt>lXV1sv)2}$Ha5`JCDKIu&eP6!()m#JA_U(DB^mLLoa7~6Ujh?=;iTo_qDs}%1_sRIi8V=N*c(8heOb<-S z@LAQl7o69|F_aT&(O}ao3^Ih*H}Ylr;d~B7Yj4Fy2>t8%knXeXNjM{Z+^;2I=h5h; zUSesIw^^PyOL+&N;X>XAQc~qSc?bUboiZ>Bzt3X;?!!@>??VFOZOCB2vB%lI@By)s za&a*FhX5i2RK?sX_;>Anx^<3RNw6ZZbh()dV!y52V}`G4D=mwSyA5Wo$ReAlNWS2o zGmgoW!8h{6x~fzcZ|iA-YFRSqyi89_4v*4vY9{?E^q-wVNb+Ar@@HWb2o5Jz zL&^UR6ofex|7H0@d&|r53ZTn!u0vOehwJPlJL773)Rm=T+3IH^{R|@opKHP&QUiT9 z=q<2BYvXF4Y&)55)aQGl@%1#Dae9*chcspo`k)0LL|=h+R8&AI!cF5x0Z$Nra9pzh z9tNG+DzeOW9F&c(pkQh2DneTXv=pU(966@KCh3}dizoKuXHl_;4u@g$vIm>Ey)yWV z!Sngz?X-fxXCtcT(`yrjk4?eht#>hM1Y&kitn(Ho1hwRK7F@$bwP@jL@~};b>b}T5 z>ipT$R2Z%T3cD<{MOwH@dGf(kgoyqTqD7D5ehEzahe zKQH95Ys)!ED4Im2vHT-jvLF|ncfEYrB$8Q8?rM{{_!)yB+7#EXXnU1$Nj1t&2UeiJhE&!;e0o3dOjQ@co-j zrde`?Cw4aiqK2dh8pwCo%aLM)x1o4hEFTGkwb;`0kYNwVd+^|uEIdFtl>qEOKAZy_ zD*cQI@yyFc&Sk0|z2~Uz!h1Y(=>=hAjZj%)o1oKsI46o)u`mA)!&Jd!vYWUFjZ}JT zlZ__GfW?fm6(xa3y1>F_v^LNJJR4;7xG1!=!qOClUZEK78a#$V_zgaGno1mY96XmY zMC;>9+>;J4VaseFE(jOaLxeluViA%;VH>~_b+Jxh8kj@g8Z0lhrsy*~DAdE7J-~en zonka2fXUE_N)qg#Iuwc$J-zhj9qK0BjGow&&){$s4xg0vw4H9h={zPTl5mrG;2S|3 zb$AIEou4g2S;8c|1sq5{%aU{PGsfF0JZNcRw-ELL3d(V537L*r=ft0rOr8HzzAKCG zkMnqf5qr7?L-xykBx9dV)=i*J@$f|ajgK6O^Q#7Ym&Le$9*$hHC;IkWN6_;aGKE|uMz;ri=XqO8&c{JgWa){G+AbqLjI1`D@-4+n z6o6tlJ+Uz=KU&+H2n`ycIA7RbUrPqinLo+bgJ}uzL3`J-Y$BWuES(H>Q19M3-S-Aq z)2ARSF`i&Z!?FFoO?2~uhLVsV4RB9*-V7+AB^>F)!?*4%avSkh5?`OtLiceFzi)6S z2kDN%6*LjYnQnSg2?x95W$9gSJeoqrPJsf@zAmz^cm;R|5p2rc|rq-Szj?2BkGj2M{o@_Wtk_b6a7aKazm%45Y%6MjdHAD$?cu8E$C z@}WJf=r9TIqYx?D^vR{Mht{!Bse}98Kw>%1haG#ki{%c#xWdx&;^*CO#5>Pcu@_1m zaH4ZO1|C4^w_VJ zzFdn^)Oo*N`m)Oieq&SDv#8ov8Y{){6d%nUI}?TddnsZR_wRP>?0F+&e#?Ha(8TOs@6YI8qESzRRyQA(brO}y!juOz_3Lq4I zeg;{$B_~|*@!{qDkXNmz$Q?ub~;Ux6j$(TN*f(rZrpvSV&(s0h)ogPlB|d;^@cn6@Ing zXyo$q5%_v<*_FX zd_J#ZDC+J4PE%Rf+dI!%Mn!1MsZJERD)Q$MQ1U?6(u^p!!*JcVD^SywzUWO4tb$Qm zS5^wPCG-nu6TS;z>~)~Pj@o13d??PZQDaO3J{~>nQ!?~Tz>7w)z~B-s^aAyu0!w4l zUs0EMq~U>i)W;Cl1eThOLeW|hEw!`01l830@8xy9G)WSneMnl{8$(MrQ_vF*O$GqS zUGe$Qua$kJw~t4H>iFY-TuO$i3b=|toX>Y&J!@kC2SAe;5H2(?o?IC#N&@n|Broko zk&19=A`!chpy2stOzuhg*(oK%vYDWeqi{d2vP09g&|KIwRYx}4slI|T!y-afM8(5& z%6OCWr|(S>b?Xs~*2SH)fg_O*)1r0jkVx_p50k_;Wg$q@8c8v^nH)U29hVNF(elw- zSU&2f7}6p(~dSTr$Hvv}6d0VGd_yaBRuC2L<#wON!# zZB>;Ri1VTFN9(!Pwvn(c5^Qx$6OIo~a`C z(RFdEmHLX%RI1N<3KB&#ffFGY{$gcR3m%7R%Pj;0V{Pac6ywel4fR6OBpkXH)^H0l zaGu-+^GXk{&W3EFp&L;P1q@9D&vHG<6`xp%%P^Ou&hP-GdITWc3J5YZo$$5dS~A@i z{A@Zq5V)DPg>b@NYw%61kp413B*VWF$QT{ zn**g&?FFX~dW)tfgD@R!QDkU^eGRVJd1|9P=q8ziF~VfCfeTl8D=TpF zK`~Sw$9QkDM?QwyYo`$FVP=YZc$ud(-WVS}o?!h4D5{8SEUfW zB^jQE(w?=GPzc6=Kyx8#nSW1$%toQ*1s5%ErULvF-l>cZdErFVYAm>@v@FaSWpVI# zCTku+?@`rIpKJcjyeFdrwa^F?2y493eepKdg1`DdHj}x^GRQ&|lDJq=KMS@O&34H0E19iW8ds)Fj(> zD~dZ>iiTEjz_`N?LA(pX4+6VHUe)?Gvs zp<;C4YuwCjv>0kfMR_pCNJCY~OzP994m0ctZy__i)&|?^sF8aXaikL51^sjVux|xc?wYlEx+`ZsJ(T-&wYrXQ^v4o4<|S%;4k_c}q|j6^Sorrz zxg$x+=mcO{U?oyKYfVIil4-cWmQd)~Noo#Z?^a%WlKr6qdnFeklQJb)zqpwSB5Ywn9Tqv^!a(jEWRwLuJ%Xy(gAc zz-@vh+JYP{n1@AbNpD-?ePA5R#t{)7`nXZ316KSJ!vTGSK=P227&zMU8Hx;fs5#@q z$usfPxk%N24uCjENnTYOriq(LL$zfuA&9pJdol`~`?Y1oh>1?vLs@7?cf}_RXjqzK zz`;3Qlzi(9+(kxim~jL8Nw{?e^iL3!%`<`CKtLDLWZ?lQpzmXbZB4Ch6#b*Zpmz@v zqdeZTk10ZI`62l*2QF@K66{242Z<~E6OH6+mtpuI<8afeL?b-~2Su{K zEe^{|R{#JVYzZ-pdMoM}5=TvpepLAj$;$UpW$wMIh8Z9l2}FfO)Z0)QR*4`fH<~K{ z@zDh4Z&2k50~gf{qNb>~qguF`YI(}pgp+3eB3X?-qLET99Hyf3(ps)e?`fCe9Rfoc zzn82QIis4AQhgS2c>;uUF1}VSM@`+)#_g#`v1Ys-ZRPLZWOY?ZB&N{EG(>I4{v-k35zDv4%=By}U_<=Ta@N zUJ18MdER1ow3gN!f!xHKSz^c0-(o?A-STK{VyT=xamlNVH1_Q|2B4d0zmcBa*p3)J z(^N)|bnqoaD&)-*MSJ-$(o~SfBLuIi>8p`TE+s9WM%maSVA9ut$kNhzrplP@JIa2y z=_fx04i;qv7Ga>MvnH3vG8AL30n*P7!{m{wPm#+&*%>D;bFr~`t1aZJ3R6G zO;CYeUZ!8B0_CyXe~X(tW>5=Kmoq#`^cswinXvHXSZq}8zNey838xjpDVNhH4qJx` zrFt9r2QWsfl>~D?qYX}O7`$@92N`Hw`8p~^Lnl!dw87Y2iug&noVEtVmSad3;Xe8s z8pPjdh|UjD!Jco*FjbPxlrl|*s3^Xb$BBXyWiu6UHd94y+3z7pxseLX5CJsz$&FOU z*>AWIJ7k#RP@msOo~D4h)21zYJ%iXsAmXyT0@Ol!<*{Q^6GFQY?SotUB(!q1+fu9i2UyHwFGg$l0Aa}v4m^h3y*PBjk+Xe=2NVrB zKT3k7Gl->fj8YTjGZ4y`lBRMlp{%sX5j!ktrZCQ%GMzZWM7D}d+|x<3F_p>|Td#d$ znc1``D_TsNWYWKk)a1;nXEWhl3gZArA77YSameV!IK}F}->9Q(noQ$Ib1N$5VNJF* z51@Vm^-K1sBvAbuY_Mo<;1X&=5T=N;(@w&x7P0|pP@Kf@uahYeJ)S0?Hc6|G!r2B78r5y3J}#Uww1}rofY#;^2Sa} zX>2D75)0dH28)@UWzyGa;n9zpsXN|GzOSR4oY`rSmQHHZ0w=yB)Ij?px(-E^OmnpG z9cI4gT>=WH7{c(x#>bJ^U zf`d}`G|{pKz6*#=RJ9F*Ma-vqiC6y{l!|Ye##Vm_x8oxtKd~Q&cLk}c*yf4NIx;kL zGma#@O|Nxj1P0M&`$y30W6IKnpxVWlCaTFYND=*Fi`R z;Q=9D^}vfC$Rzp`tEupGiq5%yTUXOZ)hFSuz)ltM7&TF2q^uY6jtzJty1^KczVD}T(nHr#O|_{* zQ=|i&W5Zg3u^O78(9-yV&u*Y_67oGwG&3;PP>D>V%3BHO!7_q=jz!cog;g!0ss$lq zB~{N?S?63teT}-+S?l?M-iacLwPNCaId|4<4 z0lM*DN&e@rgWtY(4gTOZnsD#qPg`QCX5lb?Wza*%&tjD?8p6U0^dpqcLI%b=ZnS>i z4N#^$f0q^@3t5IsPagXA5TPX(D~e;HtS3HPcEc`cpBybL&*P$m)7_^9)({;S%c~AW zEwqSbY=kwdZ67ta?(hx6j!rJ!;_~3M8Qu8DXI~QtDv~z;yCl4lZhXqIq#Fm1yVM)Z zAeVa%A3>KFJ_CN``A-nn-cDSx(}$s!+J6Aa_+%^#E4PEcO|bS!lv5wvi!;=}BCb8b zqh#9@Q&lmzcgz^g?oOxQpN6;FtMJ*PxxnNhHuz&ZhJbz>*KF85g2xPEUB5tB9?r)} zbJSe0t4RMk>Ylxy2v4XA+fi!w5|4lT?~8 zw4$th$c{F_{c}7g_bpaHEZco)I`+^|&qHvo;nbdyw8W1Inu$6cKCepWfUyUJeNnY7 zik|+{=x}a06r`@#^T*Tk{U0but^9ph?ElpD(oi0SuZY&34iCl$&P4MA_zRm+M|%>| z`1TBSFpZ3KzJJ6oy!A+A?jXF^fbEnuS@fdjE1N%^(RMvxMl-vP^Fv=XY(Xb7$z@^ z=5*c-@hzt5Sk;jw>%;DtxxJ{-(}(+2IDBsw?)8hly1e87&T_T4#w?9(_+%2^a{CJI zF&)tYC-Ct1A)p-^-@FP|9`>Y}M1jTko)xT*STOA*^S?*&6H^2Ba?jRc#6dXr?B)#_%PxSJ@q5DY9fagwT1Sus?e zY4n6+q;-#TW{RmuY}cu3w^^3E526RCTS@K>>#R621F_=Umr)iWDKpNeXu(II8e0AP zlt*onjzz`g-h;^=i5}E7YB%=xH^4*EmTjbhN6e{xw%@(q?9Y(_77Qf$8O|@r0IgIw z12pr}f;v*dxB=;>k!oE9c3+`auO^3)JTOc*;&5S_K8ubAgi+1lk#;qgP~(AM(L~KC z8mSRwn2Zh&)dq%3GasR^@Fg|EhOW;U4nZ6jHtfj1X&Xj zv%VQYrIF$5Pqnz9J*bA>-17&;6vb|~M7e4!fK&Ab)Jf`*zL-EL^XXoXS=;i$VQ)9` zi37z^amw~JzOHFHjN6I*Ttr6M#7f1R6YnzX>?3>?C* z7AOK|j{cs}GWfzEMjtrv&Z5An5!H9%iFZ2r{AYAoKKcC4*U?N&Bzl{?9UFjLA&O!E zMCK@pqMq1`RF2z#%FVK%z$_{dRplv22p0VkcZoI1A|&)9oDN>9_&M=1`sA44wwd1AAHio3qxB?2w@TNF5nr`>sR;bm}cI{LJtg%`qT z4It2J7lqGH!JUNX!=72gh-b_NLxkKDTgG;W&i4gd(c6m*0_(qz+{B0|!&F!@?Lv|? z#S0`$C7dXaG>GEsp)kWFegd}|YXwpE+9@l_gOUnm0+|bU^9wFyV|6{cLtqfs6>mj=?uWY9RHD0zW?Chd3$a+RsXo!~-y;2UuMv^D zcTWK>ed?)Xjo>A2Ep!*48_KB$^xJVQBWpcS(LYqf?o(s;0L}fh;FC-WjHMs>@Gr2y zP2(#*JJ*nb0KQilCN5!X)LIAXYB*WCqrk@TB5SOLlk`-m8Y*60}8oc_Wx=yP$af=-K zE0Cr1#HrLVdC1HJb1)bBR}(2PQ=F2ONP&uQ3hfA}TC{XRwT@A9Gn_0V zIMI}7058$x-GHxD;RGpk*s$5OcTWbM{wV{m=P)Yr6G%$>*JwY6M?9>`Bu?5Ku1!Gx zY>=AvoF<*D*9a&G`HOhJf`#XT$EU2E{sz&+W?31bX^GP`L{|JXjcAYk@IagfnXcbM z1aa?2*9X|JrB?liThaP>5TCHDWE$Aco2tzweJve-&0yR4AfpG!08N1?UnpywlGbs{Sjx2okD3z=`B zT4&*^#mcJwE6O?x*JTyRYB(pZR$PO;=8UVQ+ zxb8=&6`eGIUvF>9d#=wH76 z329-N469^Y9iDuiToRZfc>^uFj4TlSgM;%(sYjM$DdwSMe|nnM9NmwIWn`|{efN!5 zgkfp~CzXeJjD;E%vOJpaTuH-l^(Sge4M$2L5zNSk;-|%MDL&XnE1hci=MjPijumWS zm5Yv5;gU79QnH!~ZX~;j&#+9v4Um#Gd&k$ioQ$;k6a7b=PlJbSrc$^uFMTU#g3Fy$=KJQbzH0$jGnadU8$$E6p1U8k%5G=HUh=?;qE^Q%w?Lpedy z0zXH#VgVe)*@fi4 z`om;!RCC^L3D-1w)^5P;kj_B@N8wKl9C(?Z7Pj4ucvusYjfUZ*Puwd!YuBst=mxZ} zG&))3>%11uqa5aVC5`dLv^*Xpwfb4;1_IsJP^K&r!A%x?thaS>;NQ%m2+xQA2t}0M z-fB!ExOb>wHn0Pq6Hmjc=Sewp(-gd#q^IGj^54)hD9^p+MjCD9Pi>rhc%NlSaQ zqTaS70qq^yEprFaB^!BSvypYG2%jER+OqIFk`Jw6gN$YFvZEEzDm3^1NfOMX1SU*% zN#6>e%QBR0K}3xOo^VyI(t*V3v1@;nAmV1Ky+zfog(?UfbXi18I@c;S;5xj&n5=UJ z)xkziNo`UCSiS47qvm~_`MANN(5qz;dN7#vAP*k`g&usD3ew#@b&1UozA`S46RgO4 zX%N{-S-5_R*e{i6s0Y{Wp#B7PlW6t+Z&NrEqP|a848eXdWLM5q#fCzYgV69hFso04i1w znbxy1K|viQ8*Qq84}+Oe<`#=ykQDmO7JWK3rmBy;YY>ZXI;-K?Bh_g}EWXcdniVdz zF2+n0y}Fsqs|OSP|M(y-tI&0DTJ$R+PGdif4l2;+V597Efn|iq?V^8*QkwB{m(ec; zIBd(ivdlYVS+?LKGNa!X%@dIx4y?k8n_8R`d@x&V8IN@NLLaR)b-s=@W#107@sHZ_ygIA`pzg}bDL(xg zAHLxw5?WKFe>mGmqT4tb81RP3gVw;1Y0(wN;~Rpv_~ph)L?wsQEk6~7;g)I6KUBx$ z3&fA;$i<0ub6`EfVRy^ul^ZCLvkcuq(_cRk4~W!LaSzN%rv6e7AIG?rkhbdI!VjKH z+!OoR8^AMMZz7W8O86k9#Z`chV%O0ic)F75$B(77IFGX2yfa&7VL+j=Ib3L8EZJPr zIvNaJY-4w##c!t;p9-3Iyrj8&XaGBt%58J>lcD)D#eae~r>2T6Q;1$(29aS3t2Gdr z`JA-9B-+h;FsYYZD5EWG8JW9l_u%dm!t#o7dd%3xH_Ugd}ikDB3H%!Ij zO!V=v!;joTBa6K8u_<`0GECv*_<-Yn3RpY*kjDtv1pOf97OCQD zi6LG-Ro*Z~F_MdKAfzy|8riA$gD~XaHePyi|9c7+361Xt(*6FhcTjZBGsT{J-)J*m zw{#D}k$w&9E!;;^ZslS>{CF4dkNkIIS z)A1o?1k|?Y?Rft2U5M>W?$6`++v)r+PQjmoFA~?$f530XS@;`XM*~!y47KizPk*+7 zsvm+5EIWn_;+0s`d4am#S6~kKEeIUSpJKt)3i2GVvrJb^$fJ-yw9wq+Z{*F;U1v)h zohjHR-olvze9M+R51cD#_zUGfP8Fg7vNEuorsOUKdf!A0Q!x)5qROFi9LJy~z|aAz z1Y8*+JQFnoPP4Y`Q^wzmy;)JR9ht)0N>aPd5_La8Kn<$u=*k67F5s_lw+Qbm<*|7Y zP^KoC!n;Ob8oQc?C;1!=Rif$LFUM2d$xl*nH*rn_NYQ1abD*rYgwgG}$L#Z#dK66t-x)W4NXDB)-xr z!AR8_No3*+5je zXVjsyz%^KLoJuI%E66~dB#yj?`1|5P9Oeb}L&xmI3*4`D^A{Xvje9kdU-j#R@ z`vkIT10K$uA;J$(3R_vh+o+=XMxL8T|(omYhc6ch078B2oC2Gbvnfq1G@2 zZX_C)E|XP3=i?;)1vlaA?Cx48?_e&-$J9!e1o>pbA;XUebNg{&d=ONIxQVbtryO|R z5WyR1*fA2`b@ci$6oXq6&8ogPSHFh*~qLEwA$aG&xmRo0gZu?nXGCjgr;@CmUvsbj zqIUxvD`4_Iqdw0bPvdX1O9nz8ZD%;S?H3>5PcrYXdFvkOehV4z?A&0x2WL{G`^o+H z?>k)6zW@HWq`zI(yl#GT^kK)I+#MIc?c^<%rP)iYPTm-({({;dkenXaF%)=v$obil zQQAZQ3#2(e!M8DpL}kOKP4raKdxf~Bsy~{1yj^o>fe8^6EpKPHecHD-*8Jj2ZB$fL~{TO*&^b}CkgwBPF zwaT6)-xd(@XGjvaGL?R_;087i4b95)+o4Ag&w`9Re2c8%ukZ@+Jm8xIHs9jdlY9Xu zd7i4SjmBHyU7@c-Me(LMte29b|2WAsnogwXr20^9*nPxIPM&jDU#QiWv9#AaSwvcW z0YzDm&Jqx^4`ml<@^O+MeXT064GD&kR(=};lI)k_I2s#QbIH2VRnO29ZC%h~j0o!ATQE4zqKOv!P{}Xp*M(bjC=(ay@lsMG`JeB z=NT-(7;G@piImRKRU2r17Xw=Cyd(>K)DzsDPzrv!!{`)z>`$HfgQ3;xe+z{4v3VHU ze@76q!0Bq1M(fr%Rl!XLRdG(GI?bTenPsWp34ZVpT;x4lqz7+lx3vND7L+g|iT(8+sS!kkn9E4x>6(#7XmA zPM$=SQAu%MJQ2A|a)S{<5M;eo?U2>B|6_3K-sqzKG(`;V%e2?@evNZVLLy zY)jNkI%>3bJ6c=WdhMrnaTqfcoY%k-CmL@@XNwRbMyO;zdMUoBOFR#OBNrRr9Tl#xQ(?lkEoP17{Ak+h9T z%1tm$o0JC9q~uas1+BI?#8RgoQE|jMRMBA^M^RDHK`j>r98?rkRGdLX4N|o#N*x(E z|99_QXiG!ObDr<{zVDpr!;kmf>we4HYp=ET+DLm(5gob+M#8A~kc=#aOm2%6etN>2 zR@5uBT#wVr$Oxa;-Y#uNl+FWsi6&cwkKE1`z9Byf{R&S{*Lez5O}u4(j5$&%hm+0p z;}`}T!3V5=&Wq z1*VD==E#p&U>4%o^!1hDT{!OJ^S+o%qZbqOF!OxY{jlYc*56W!#EyM@LPXg z@8J6952>4rZT%<_eA-}BBo0rITY8T7Y+E%myjjT@$IK6}nu*PCq;86gu{^xR8o{`q z))TJTfEr-(M=+=9za&+RQT|BFoFrLz6#kD7pMUs5R5)D^6RwBd2+w#olRRHao*U(l zXwWw_`p>82;wrrBFutC7Bl^rToFm&3Od8#?I4QZMAc;c&V=*Vv{1zM{!rQKGF(oCo zjKqg2p(M4n;p=z1yN8{NbC}Avo3n5Mmy>`fo;9BC6woE*J6o-g+(012I zCo&VWIUfm3O#SA>ftI4h@~2B1W8P{hs)y1{N)XC2Qfi?rC&dG$jg)FAD@budSxHJc zlvSk6fwG#EnNZe{VuP}l6f=}3NijiLM@kWt^`sO)*+5Djl#Qh1K{OS;dB#1&B?vNq@?f{O$WPE zcT}C=@6u&%3LS0wY#4T;o`;tJs^+siUFa9N&r{GX_s;8*SIj#i_u@mQ75Iedg8c|; zk&0ff+Hu?M$^5fm|1IOjw3+2auk>9G72aYP_fjtTG!(a6@rgsl7z`DuN zy|~qi&802;3r;LQAci7@=hY!D9pW+~E+gXFB>yQEAvbN7HEl}B{3Z11P$OF-Uli^X ziUoPcbF$bCY>p?rsZ-X@?ZWX;Y8JfYL_*6Lx@g6Gwk7USQn5Sl5c;4x;e0S_JL`bc z?i0cBct>GN@B)~h82vCAP7D2vZlik7dYLow?v2#h<19BEq^603B|Ch6TV6~2Qqu8^ zdE_w8J1lEYW+R*k=8It5jxAMf+s>hD{07*L!}p>9kT$DX=p=E9w0Zs|^JA)4V|pPX z!|sFDx%2{rRj@q~qGP7b5eD`q4BvJR z*--&(AQSoBS3__5<@{U6w_HF5D7bMgW0FXF59hmSl1V!e8opr?6s%t=aGzcJ6ue`Z zl45w2R5Q+&jcJ`3j}OlywA+6bLT(a9)Y&b+WektR0U2H}2zLp)8*zVa>P~3Ai!9{L z^lpVXLrb6CTY8i(U$}$pnlaYy3~z2Y{{n^_wh0%lLU0o|w=9XY#$}O_7$yRgH`9#3 zqB+9X`yPSXv?czKPb{187BN+U4CDc0i($ir7{oN7N#O{c`EjlI`1ke*eXF}^3!UpI zdhx%5vh6AKrfx2@7VgP$CmeTUoP}uMSllB|_UaZP>_hYvD}PbYtIz@|EAns-3~}ql zkSqlng%opmJ&D-Ef5D1Ur%Wgzb9E;wR(jhbGJ_)Nlv%3B{*2l-;;Id~6aLEDSED*{ zBrtld6Q7~Iznl+qG-~;a9Zj7$Pb5j!TDCUz6DZhvpA@O4{a2m%sQb&bE+!nr6&ik6 z6SL#``U@Kuk6Eh=9U1XATs8dAlx+(Q$3!Rn!nVaFH6!Ymsctr`heqLs3zFg@-5BM- zwhLx|{hmS;Z0X)ynk* z46Eo8k1`}MVb$)0#Wuql(R8h7y0N`lFnv-qT_>7$w0i{8_2T8$_F7zq4cps;g523& zFUVc(iv_ty{^B`}(C|FHH=L6cF(c(d5z>2YOKZ`pkxLsg7`YXb7St`to9~7x$~1My zt7JhL4hNHDkybd^rjJ|on#?JlC8(DvHsB=^Gcvnv7&&bjVJF$K2@U2T7|bdsr_}~$zJ{<+Bv32LprQdz8AVY zoR}0DOHceLcbZ6mC5k?higu1p^>S(?t@^k}+XN|lbR9|Qh$bveoCjx_d&573o<00* zWEQ+jcREoB_a1dP)ZJ2sL-u6hCCBLO^(FD)xkr}17e<5IPjw)@p+ggmp}pZHJ3~cu z<^xSLhP%T5Jo+Q%np%q^^oqQPT7vjK56vFZ11@HKF!h6v(c#@8y#7Il?=CqO?wlKb z6Ze~z;+=SFunr$3!!#x4;pu^x9OFDUqzUfOi*(}i$giN=@47N<*cEc%4v=ZsDSx0N zbM9XGy_-kuS{oA_iEvuV_D=kGTrs{%hF5ZSVp^DHGKCGEWqV?0k{o4sVO{DI9& zHwVv|_>Xa+eL@KaCzF3M+=<$^>rAp% zPm&C_ZzChZHinlwCJ-&N2_1dgMo$~*k74lWc_23!k z_k#POuL2K3Uk2F<`CD)Y^rqVx!*LI6IS4~v3HdPO1K>ZPuLI9Re+|%voXvdO4&E(g)^4zXkGE$RJn<-3q2d zp95w=FM=$FECl(`JHYGE-vMtz{{-^ykbA(p(0>F!Lq7(7fgXYU2J$O#0Q#elk3&8Q z{seskBdYa#yv`A6^w^v@x`gzN-|pm#(53-T!V0s1cRKJn!@@>eiU=wsbmI7&V`%-EYNE~2>NZ{X6Oqby^v1efX+dVhnxa_13eou7m^35&_{ubp(lb%q01mI zfE*5Dp|jx^jz}DL(HONhBQ@!o-=x$oy0yWxpu$yDI#p-0&Yrvft8Wh-`}K#P_Wt98 zceieN^R2cA{_x=PmOGZNefshC_0PTh%C?RjZ-27y{r66EfB*C62fz9H#dR;e`sXJf zd*pY^Zol*16%YS@0ylATc8)Ub%CRFa9u{}Oc{9wjZklE?^tAf)G_KZN@A3q=2~}>7i*r}{yc4)& zb4elR^LiR4GQll((vInUbuK@bT;=z9gA;qMDjbyyCNh)DQRQ(3xmw3O7b|u--3~6< zHF@4-&f}Ee79sC@mCs+}@=po)JU$pRooIW~ z08K5c{4S>BD*Wzw z)j_TjNrizE1r(@eMvo^%=@Ft3k|<`7^Z4fZf(^AUW)4+&;1Zd%218D_@05*LGvfbw zU&x$AzylV8yTAir4cH340^K0?OPO;dxC~4I`M?UQ!0liqcnrJ@tTu~5S8ObqTFT72 zf&ybnA=8=7CZk?wGnSSxtHChMrpq@O*z{6MzR_yemlhWrN^DGDX0R3+3^ryq>TP8f z1ErAvO6JspLSO}Rfd_=ZREw_IU@s{v&No=>wpnI_y|)SajnnL{x?;1b#|vA9Fg5~X zNrAy^z<)@C$uQMsw;Br!%wjAolGI{jfoO*ND%^L0e}Z%H+JL^a#A?&Q<8*^1ANeb0 zQ;jnX1K^jnlJme<o9qZOBQ6BTwYaB2Vj5B~;~>ujg?S17Bma4T z0wgmp=n1zRI+^7G3cE+=pcC{*<74`xbmmELkc}V-P<|-gG|r+h2y#nsK<_YBRhb-m zzpKjSci}h0dE6CKO*%c7Iyrr^f=g4RrYn?b8BDl@`+}4L9akB0arjA~H~@y6fBlcLh4giUv-pR&xPIO|8d;6bzaN#3!Y}8>*>5-1AZ!! zIlln!gV(|H;4yF?SPDYG1_>~`^vWG^u2OABzXFjy?578vSmWmdbX)QWC? zR*9Ys?lxanU@tQ05C)aN;O@mcklv!V7aOg`I-9;|X#UDda38Q5=q4$po&0rtBXf3w z#BXIz8yGPD85X0BJPCQj-N|MwDZ`y~aJRbrQj3kPLb%(bg>5pF6xxb<0xz8wtql6Q z6G}U3zWcf@E3uZD%}5Atp{yI};J!l}0RyJrW-yt0rDjk!Qc4DO*C!QtCPw^Ef<4jF zK_i;M($U+^nbOhQUB7fBbjh4Nm;(mP1BP7~sPwP;f$P4vTa10|rBmUP#%)pBN^kdK zQ(-HSj;-KGwDcHDjQDAZ=|O85FwMQ)^vW*=g(Wtfv4nnUgZeX;OxKw(M$_v|rhJ`# znso?%iVel3mRWZAC>6)0Vy_Ujo%T+r*ngB_%!skAeX0>d*+J8&Gf@f7vQs!lq;@v7 zaLgBdkM<3k!3J;yB>xble$gXX^hNfm=)8&zHeG?vri+?hp}tPJ8Zdpm!V`Ncp&J}H zFG6^NtAXu@(uPV43wugAN_y}+5`P>6+6(PYEVlve&$dp>P=9@DgG#gSUp?w#4cHEj zfYCo(+NuY zp~p3Gw9^<&_ZhtW3@Z1n``5OcadUVEE zal8`)>!2$@gM5e6>30PJ-1u4wkK@X`3%tHXUamIa3ORjvX7@->@mz&Fh*^c3UGP4c z=7G=Tw$|?p`tZ2UVfrFKgDJ^RPnvtn6q7N(P_Lhno|a-LN=Z+#UT?ZS1vgns3Lc;f zVGPHM($nk#4BA}I+MqurS4f6NBP7RHl?*p_18&MiI*UP=?qHKAPr<)=m6a*!lljTY zlr)7RLy?-QN=YNbDHt49x#vxBr>irjAm|h^=oExKxsnySg1Vruro>U>(s9WSsFSz= z{vqp#D=={)ca??{MzFne@jqKnIZ#nfIh;KvhQ&ZGl}N_qan40C%#2sDIM^gaFpmz_ zg4JLhcoM7u>%j`J0c-_(z%H;IYy^A3POu;B105v4!t*fj9Kw14C<1w4EJy?#NC2Y& z57ZzD;y-_6f9)S1!3?a_zEPBi(w{k2UrgdfH-U<7!OLoVz35$1Y$3bVM;Iu zG=mqw0WkWC7&aB$0{#R(1tYJFVH&UyJO(}hBe)or3~mA|z~f*ecptEJeG z;8pMq7>TWqDZm2iz$(xI4uWCV#IOm#1cIOyw1XGGhu~*0Iw^*!z%0-J?gOuZZ^0Gg zV^|iL4i#gS3IA^vkNdEC&&EONOln$g?X)AABV#Qc@#Dp!ofmxW9 z*;pBy&StQgY!=ofZ)9`WTy_()vvTHO6|9munG5Th^H?==~^dxHnCiwiYJ04rl%I|+KW_ziH<}J=T(*H(!ExH+l#wX0V_ezvE==aq& z=zX*RQtS#=`5S5jgy*>zT{v9N>|B%->Eo@|T3YOqYl+R)Dy~}%$@CPX7=svK(G^C`PX!gWdGL&2v8w!j% zOgGqcrqaT*$Su~Y>}aT%p%_XmXOl}IRJ+mIr)fql6VbJ_ayEooI_aM37pqc3O1|i6 z=v6DaH(LyLL$SF?XT{3kkdt=yMb)qG>R(h8xegP<(Nh2$nhcHZKw8DbJ;_vRIa6MG z9MXIag*UWdv1U1>=nHVqvlz{^ra1J#iwwf*=ir&6^#^h7b;t=Hq~v=_V}`NdjQOL9 zQgf*h-L%+Eie2lO%K4NJGsYE$qEZu03~W-m|D9qWu)KDiWcFV@Yp=MQujJVOlRM=IUEcg{2UDNtI`%|&lIy>fs# zj2 z-vLHm81K3qH3ir=;B@&7e!tIe4LX9MK%a4NA4f*78;>(*c4HDYCk*Dwf~^dLxv{!j z3kG$A)bt&=_erqLAuVNbJ|j->`+`Licz zz_#M<3_EsWMGe276JagAZwdma5@CrxN)k@l2Ymj1sju_-E8KxfUkyDJ+kw9!N+<)l z^rD2%!a33&I?a7RXz+HY*y16vGtVVuu%BI(+e^FG#CvXkJM3tSVl~f&YIFw!c5Irn zi^Vx`7=pu|`i|}dTOepM!R|OYn=q)`Ky(*k#_iY^=oYr)4VXJhS&dU^$3DW!1$aJ= z9voIAe4aX&(;lE7A^xX*9nqclYF%e=L_tNj4*G%)k5sTxGKz`|_Fn4jS9yXpZQUF= z62aOxZ{A=bkdq;VB1V3OsLtfT>smChPpsQiVl~JfKzT>YNRJy@aPr{S=Cu2&>^0K! z^qGV0Im$P3N(;VwEBeKAv83>m6U8dX4HJxYC2%M9l)X8(KBI3 zjT85}lRy0d9oN=++|pjy!DB$)Yq8&M2x*aA4lyw&T@NKS)C#f1*NxwVxQi=Fau&F2 zrN&|xZdI7w{rBJhtP;pk(44*a*NhiNHsIRU%j^iucJ;dMaZ8dvM6@dQ!Z^n&PDW{WG zk#$&SV^gu`QoQ)I&+0PXqZ%fy(VMYg?yAI&%&U4#gjIXwg4yj@9l+k&dUue88Qrj5 z7y!M%>@L6Gi?zDHG2wn8ZrycfU?uRp7`xkt6}cy3@EZ=+U=WVCX<{7}G;p%UR-*6n zVQtVJTUF`7K7PC<6kAm#j6CqpNEPnVxQ(;%yHFUyy&Q{xg`{-G z)>R2xG^>P)qqfwKX$A`>rqk1eg%UU#4g3F-)CB4({lT8tgjD_S{Vzd$7jL*?q++5X zQ&FH;rg%=#p%|VTpL$)YA~jywu6jdtP<28zL2XjcS1(mB*F2+nU-Og3k$Y$E6S@0x zQFI*E?jc&z)}_6jb|~$x^mXa)rXNnP`Jsl{vTM{5fY!&XJsW zO}=KfrcJX}!BhK%DGiK=C)=Ts5Z1!}#zN&QFl#hE#oHJKx_va(*!x<1>Vy(0U? z?2obynmaW+G{bW9a+l;jpZj_4gOtujp{UqB3SN1S>VDOo>gDS7>PcCqtjn^~vrBVW zoA@4pTv3zta8`TvE7@OUFU(n!!&ZytJimrdQf^XxpjxP2L-7*fDDG2yq4P_lz)#qkjnW@a2mN`4KB6EJGKXY;Bo0%VE zevP$tyf#8y;Xas_HOO{+COL?*FL3vLHnxq4ei_7 z543;RvJSCck3<3lQ^YBR{W<#uBbJ~XtsJXNRC3BBWwLUTQlaFP`!fz^L^3)v zx-yPrbY~pHGI5+rrixc3s79;CsuES4DoK^Bnxs;w8dc4x&E={#)e6;0)jrjJRf2l7 zdaOE8oukfE7pRNWE7U91oF++=teK=yXn2iUlcUMg6rcr}G-i!WGgC81Q?7Apsx=-> zttP0c*DTgFYMM36G|SPxS7=shR%upi)}W0&sadC4ui2p4s9B!dmb)T%Wo}pQk=(`F zMr|{-jV|mpfrwMc6!D7XiZ;axMPe$Knv`0e=1i+j^Q6_L1=AQG$IJM5K7k+2kL442 zj!)wA_yWF&H}PiP#?R#E@a4RdujV~`Eg$6T`Ne!A-^?%Lm-B7>3VtQOieHUZw3dI8 zU&pWKH}D(z4t^`Yo!`mt;`i`-`F;F;{vcXXC*Q>%;k)@`SZI$^%9QcSfl6Af%u(i{ ztraOvO0&|YoT;3nELS>})k=@DRvA>*D;FypmCed!%H_&7v_xd^-+%v4mB4=iZ1<;J literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libFLAC.dll.a b/Windows/codecs/x86/libFLAC.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..e4db2a88c6e75a6fec761a2b09f7a15bdeb8c0c6 GIT binary patch literal 98116 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 TrH3g~--}u;0Vqm9LDT;MgO7&t literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libFLAC.lib b/Windows/codecs/x86/libFLAC.lib new file mode 100644 index 0000000000000000000000000000000000000000..1535c5f9213b80027c1af8b8f61041a90b432184 GIT binary patch literal 37070 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libmad.lib b/Windows/codecs/x86/libmad.lib new file mode 100644 index 0000000000000000000000000000000000000000..74501d87dad0bf0e72de8c945634555a19fe8c72 GIT binary patch literal 9732 zcmcIpOK($06h2AHD+H2|_uF}q&{7(LohDU^xT=#qGqKL02Tq79|5$!254&sXx~J6DWu~p z0GEeYqI7mkxr-%}cS5>W0J@$7bVsE;z!IgWQwm~xn7kL#dkcWeGb~a1W~5-7K9v4; zDR;1B@>a+I@^E>9CCcD=DUY#48Hz}`hb5B_LLxXOF0Zge8NMV1+YF znu*v-W!DQE8l!X*l}-IzSlub4G)`Mgq??K-HA-kEBL7o*TO))<5XJNscAyQ3-1d%} zUf;lRXk#*!$R$&*vxY;;%eS{}ezcwqg|%ly*)yqpKE5u8>ofX$c8ggtB!%S$jazf# zt9gNtKWSYueOuM>pQO%>XHt&nR6-1kjimFj#*xZmBlTPeoIMl5nklMpPIcYa27Yb) z4DdUleJhg>tKV0W zm3d$7))HrXwleQz<(f4Ngm))f*l_rK%kfZyjU%teVZOKHR{b6GMAv;4(i!}Wo{tjM zhe^uiEip{BF^ODeJMPNWBXFL{k1b~97NwBfVB>H;5`}b5E;9kuHXEHOZWYqoTRUO` z1zOu|bT+jfSAH(A%3>q)DdSza>cbS=batIG%J8~IDh&C%JropSSRh6&Vg!AOa<&8DAxbw!;=3sCP*%DCo})xDnm=F>y$9=1-lN>=1$c%s z(}#5^?fn3EP~M`f3;?`9IgiouF-l|z;2z2clueAhuTU-xV;#!i2-cx|K*^2*yg^wU z19*aRavb133I(s;RRtMKHjs37e4 z+SqfbA_LEqd}!RlF@g~D?(x9}+mj%6J-+{Is5A!d@HRS;+hzB*8|=O-+bse&T^n3( zi#3yGmIvsSr!=+Zl&(`=WigXoodKvdpppuPS2i86mBm{r6y{}=M(U_DMI#Ml4Ml=R z8HGjj30?!?dQZu>19*RZ+JCnB>b5hs3&U!>4Ic0te*HSQOy*^ zOFc9~dZ{+(OhVhVXKI_u3$(?~2t=qaf23xUnk>i}aUf9g&pQ>(@Gu^U1KxPU)?SBfm>q2>IkbTVFuk4>v8ObOs`l>elm0n2%q zdMa^v4j0c+Eb5R?;h1$EB2VkFY{NLso+dh|NoZ?1fJW9Kd)SLkJUezZop5vc+*%?4Q1g2WK0dp5@i@PfQN}`3$tT3<2|f*fNwmVaV?{^w=|)K{xTh#CjL^-{pC-5 zG4aAs(qEEf80;tUmouu0`O6(WekNJ4KROgwJU-uEyn zwfS4~$6UXGa>-;R9Gf~tMl3cw)}bGhk$I_5IKH5n+(-F%qV?&x_ERpN#)agHmi7=l zVq-XyUcbr@U$eSu252dY%U6+2U!iv`6)YW`G8EAv3gQN8a6 zd1Ir^ScA0|EA!PxaD<0#K9#f^L!?SYbE^IkW34x~2{+k{>_k8b45bpbXqoXbuRNmI z#Bt-3@f_7W>?{+CC&)jVJsx^cGU%#~FhP7RCSOhbKN_(2x0-x4@ctmSVR?0PvITRB8$z-L++s{BHuZmE GgX(|6)-7ZJ literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libmikmod-3.dll b/Windows/codecs/x86/libmikmod-3.dll new file mode 100644 index 0000000000000000000000000000000000000000..435e02d402a61a1ba6dc118d8a7e83463778c727 GIT binary patch literal 180224 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[h8X&UEbM`kzw zk1t>j#F)bKm@5yv0$1a&wsbfSLmyWB+0xz5udm3bu<#;U4h<;Q0QCUo-~Wx}YULqV z15O|=V}68#Oqh=yAsX)i<)|;bf64o3CCLVwAyzi?-R^K}z=Nk3%S>5axDER;s)#Zi zg3FQ?`Yn=ZYoEbiUi}gJwtQq`^OAZx^ALyH*Hvk7JP9)slFvT`8*^m-5vvgGmhio* zuY7g7wzdre#=78JFjCBZ6Bdg3U3|Yg#On?5)F!U%3m_ivwPFmCt@!5d+DDM1>bdyG zU=W#~QFJuPgXCe96JESo+7Dadcf9h5ru~qY7lsz7xFb`1hp>3}b`|;#iHi@5ea4qB z-$%~Kw$GDp@yit7qYSjrq(6vx9OjJpkB~||i1{?r+Ye&WH-`^mK7wC%#b#-d*@p&# z6&?Z^-(mD5x;^Ew`8`}hp z{xx;?8mTAs`Et|xq?3D3VIor+dt8Vf7@-vW*)>?dlNY4Z0kOKDEM|SY5L54g-+;nd zKmHY_v2IKiTxyd3dXpKYGpf^$lKa?(VLr3&B{*h-9XCFX8~c4RTb>|Ij;-B5-$E)3 zY-50F8Q99eHaqY`1~%IPgMsySUG@G&gAM|KwfcP)j_!r&ZoN zoW%0H&>5YX)e_I@`BfkO(;5#dherL=(OTnzoTYh*qG%zBN-GCH(`p7OCqbM@|T+OyDL;9GGbGSaT3)_Bw^NR?cFS8Gv) zcM-TCM;^Xl;q6O8FHXz!E2MQ7XfghMOn0DpQCfT+<9Qn><7s?BJf}jZ@(UPGg9YH% zq{09655V)0&PGIZ9-=MD?@8d3UbRX$CN142rlX4pcD14TDt=~K{7S|*1K!)F1#%)? zMaKeJkv32tn1-~UNSBicGRap&xaK&8eva`4faA6(7?SR+oiy!JMu#T@26w}CDEBlh z>aM_oX&*_%`6S}YDMcX8R+x5*vDe~m7AB+9BlaDbY2!XbigX&E2_i^xC6hd=l2`J3 z4Ze}b-&OQfg5=rKMp^e!lR*H<0_A2g?*r}h`9tpOq`m=f7(?TLzA#5|PBX&Kfua%; zck@jh4(AsjWg6MGSSVNkK1rZgY0m7lfQAIB6lW>uKYxS8A1dHJBwklw*^&{H6sx*X6cu_e&LK7}|e(4s!jQdKm^khFRF&}SZ z6X>5YhS*Abwv)SPgx_hkoq2Y{a2U!=WGk6{7_XO$;UI+R*gev6c zj9v#EQ(&cOHb*(&@j^o>m{ZW90(AzpgZnv17+z;kJJ7!i)EUzb^pHTEvFkv03e*{+ z4)ke(PTsu8v# zoH(Rz0WY(spG8dC!#&7XYYK9B5b2q%kb<`Xrc^Y4;{p=1&BmlI98;G6Mfuus9}3|XtH0juHVP=tX^lVN*xO2R+30Ms`XMG9+e&#@3vC&I zqTqtC(R9-lWEqU&6b|wn`PL&a5Zk`tYB#Fy2R65*sy(O#aDDs9+n>tCAFJ)Dq;t4g z5JOXnPEc$5KHE5XSLkZCfl{EMeyiDC$~9f-ww(J#RR+rnVM#t$c*I;Z0oLO|=FO9E zSSfrCO3%#kPy7*`tBKz}!ulo)ScV}UC{^k4D03n($y}5VGUH)CR8O>E(lpC*Q{75- z#Ki&m?4_svfHwGVbQQbtF!Z8Up&fV`0egcE$IoeekdUTXeVVu)+D)X4p+5x|!mSgP zZm-HIGdH|Mwyb-a0s$swsI;o!?oa=ai{Y)*QI*dsrA<(QLN!25uLo5b3I%%(o=WEx zk^{5B3z9}2^poif*mwEEvbB$~|E7TTA9td^dr;P1KN*Z_D9b2V@ugpXJFX!Po$>K6Ue zrK{%X@q0~4Z8k6`zY!?!UkoMVGTSn1>|bSHl_9hgRwQ(GFY@TA-$Ak6wm*Iy`!oI1 zs#V*Xpa1#KFZm=6|7Z|2_8Scq_&xNQ(QpHPpBOJcFoGZu^;{2^i}5YdYf9raSOd^i z?3hZuqoOX%;?SLe&sXvwlFiD~CRNOy4JQj!W?C^n!+(OM)OM<%v)dxz^7mf(#hq~N z{f?ojai`A;K(r9Jp9@Kpp|pvEb4vPkW6pYH75$9k7z6`Ikc18v=y41UaX9x+mFOif zPsoSdS?`~^n}w+;-Yz+OcB#uj`IU>#|HIn%2S!y~`|l#25QH`aoM%()JS=|K`0*ku~dwW@+EwR?8Er_;Q z^+_#;078DzBv9H$v^I*h2>!V1(uzL{0g-$^pEGms?gr@VdwuyMd*}C=nKNh3oO9-k z-@be`PH0=^0$}Q_N?<%`y~xppZFuy043;xdWJFw6P`EoK>}B(0KeM^Q+(@hM>eQAD zY+8XjiA_u8*Tp7}8G8&dM)Wz2O$_}D*n~F4LjDnC&j3;4Rw6C~pO{7Pi64SbRvn?K zDXC-5*>LO2Uo#<*kuA&yUP>8|ip!NA1tSqlfL%`O@GQiFJt=nbY-C!wQxQ@VDfUl( zrvmd4&~wp{UOXx%oe^dG-f2`j8yV_S_fF4gY7;CS!-e|5qgXtxDn<@}wirW$dY^L{Zs>`wWl z&&1L>x$$ZKMGFhR!tHi(Uu-|g&tOcLVG>wPFE$x$xHZEE4yZqH)p)+m+rd4kN1f6X z-Cgw5Dgccx0wJ6F#TZEU0ECSZ@!zT_31k*yK@@A=Q+QlSRWGX5tXcD(!77g>Z8Uce z&Qx(u^Cj=0L8h8#h4n`;mzMAj4$j{NSQO5aqcH1k$A9~pDRSL8F$;l`E&OjJ{u4!= z^;IWPd|I6Q8DG452v08N81;kW394Gc`xe5aFE?Iy8;jOY_lDoTA`{P>T@?Q9YxMpi zX~Z*NdaIlEG}3_Hst#N@uVdB3?lDQgxEnCStPN4gn~CGQ1Hkb*c4sPVHJH=)!wekn zgFFr^qH%maG8xOsZzR8v-T>4_tBD6Y4dUTTeVjG_H^b0m@>zQRyEy-e#~V;vPlg-U zktm8)qSZJcQ!X)UkR%kcH?$+qw9&_>kg7e3M8%MrImx$h25KlkmC5e_)Wr1sq*RIA7X!HAI`#OFMBu&10(wjHy3GG6v}DMk2=zm5U=_qmZbO0CqO{2N}Jrn}F93Vk5pyPUruMGc|x~r-K zYi1!D8m(cCI}qV&xI&Y%^uwS!?VffVAZd|;0#?<5wjAF^B4saCmnzoy$IQxtO-CDF zWdw+phx)SMq{gnS@I^-(-^?r#x(h9e`8`@PC$Y(P&#%#bTaG^!$K|OM}$^XyeVS!9s*(=ZA_t1;(o965N`I*$7?_u!Xc;&TPZroN9&kH-1bg7=_wqq-!fh(_UTkxbVE(>39T!lfd~|?hb+K zcrE};P(74W?j2nSP_GhD|G}D_nFyUN15`XQXAYjf)Rm|)6IUZg8xLn?AA)O%x#7d( zFplBFmuTa*P+9o!rNK!@8$V}WpEJp4D4=^YH%L&~nLsOoc zT4YuE+jBTln`Br9u}4X&s1$xxZM+oCh{kS&=n#|;FHzksSNLUNVHL?@b8l+NJ|g~W zLPliU2#8a$meu#1VqfF%({Br zSJ(Pj<{=5W=!f7cOLd?K0W2e?;fJxxz6;t3yfqcsKhdmur!BCr(0+dsv}g)G*o(k? zq;o`JJg^rwB02F6SbzEhd(F=9+Xl8ZSkqy1xWOB*c$+39d^V#qUeOWT6&#W34|)ZA zkqn1%YtDZ9AdB*hM`Mz`p5O%hA1=ludvT)}U}YGSKn&s ztjD_qpmR{dzD+tmR+aY$zZb9GH_gtyoTeb};C;r#xMjw&cYx86Z4+t4m+VFoD)WS1 zLLF~s*myusN*j;hlZfAUY2a-%OZyItRCZJCe-r@yp}OPkI)IU~d}#{BZ4WxK*pKmR z)K|RSzoH{}Cb}Kit9eytk4_!~c;KUsGoq+gEfwH>5y=tg2;b3RC=F`2Pu8p_(2?vy z;=w?NVMM7RCb%OGC}nCKshbc7>yJ|WVBkD$fww)$AOa_X#GVH!foMPV`cc-mvH{-O z9-wwX9ec2tgkj|APAxrd(t&NxPL_GGNL*!DRomQmeQ8$Br6-w{1vn4;JfS!%;Ws}) zLkzT)4)nAK)}vhy_tU`oMrxZC;<0fcpSLq{(;2E^xo_pSLnz%=eujHOv*{?`6{!p4 zIM!#`Y?r5Pwr^CKl}Me-aw;NV6FV3+oXzWB8(I?MrUnZk-dr^AEa)ayHXZ6ZC$O_8 zus%||{%rL=sK8?l)BT|sA#xDJRKnjR2Hcq+`zg#02N%ZK$~t2r-5KE6VY3>4yjFs%-FVf%7&;xyGDC zds8j5)(wH|MUH66wXtj&K*F=pn{eE&U5|26X}G4O!!WG!<~J<}No`_XxvI@))Vz>BTk+qr0;rcXS-Xv8{Q}fJ77=4Wy%> z4bcEw)q)+=MWG8sW%?}&KuJVTY{ZtsEiHN&TP;N3V$`a~EchioHG?KnyjLNeIa4}g z`mUU;;WI1Nmvk(AyFJhZbo1ErP$TR6CF-+p+oS@tP!Pmb1YE=~@TN})QYNO6d!4e} zycaoFYZNMQQRq~3B`uN+-lByGIGlm%egYbWN9&6ZVuBZplif7oTW7cMs!RorpCY92 z{a`X0r~qK6paoriDvFhSyl|%;ooOZA3!iNmj$SnKpHgW6o5WOi4Z5O6>W@_Vh}Ix; z$=7zGH<8veaHe)N33?boB#r0=01}wI@e8O}ag8K^VD0S>P_b3jX_mp*wmi$&whVh+ z`4C*~Ec06x*tlo%8JDxYyJ+}3nJ>r;Hm@C6(>@t02yatFc;Os#GR%P6&=_S%?*3 zEH4CzSTYBrvS7Ty_q5e~@({F70w+6J4VEvtUFoB^^t6nbv?=)zY6#C80>9d0xOroq z^RO|#T1v+FY;N(cjNXV&1(?MLQ+-#cemeF4-;4?z!2vs9+EQ7+s)#;ZPtJPyeaF2}1sX-fM19dH1BMo#btnrp`_Xl+wzFVdG{Us~(Ryu@Ji4ofmNE!%)?E0KALP7F|#v9QMvwU=W`8Z_2 zst>&BUQEIreDF{+3$2P*%^3r&+Aeb*-#YvYZ}A7ZzJyyN-EtkO+|gr{=N}BblA8x-ozqvSYE&~6Bba4AEZMS8B%p2>~ah$*yVJ; z^dnoo`&EKwHfu_J_Zv&-PeoTsbD$k5Wkxnturoh$Y~g|r(-p}8U5yfUpXZ&%XE4~; zg=Hdx4d5pf+p9QDXm;|x43KyWXIULa4m=AbY3j_$@;S>aBW}uYhlk3F%!#z; z_EfBY0H+hG0rh%<%QaMOk8@!F+wFV7h^_*!q~SnMllN<~DC(l*0!r3kK{ZJwHo5IqVpt+xOg`^Nd20wUs8 zMoeV{d40!#jK5q?B8Sj22}OW=$x{VI5>?ye1$H^AfW!(ex@6w&j-ma)OTEzaUB@1z z@os>S2yK&6KIPWN3^dUF7W-p`*3-3MC-zmK5zXg#)P*v!c=uM4ZtYPuQQMS3p56QV zPNViGV0NhZzg(jwh;;sN%*C;$8uO|f;0d%-e#`mNTCVIN3tBPQV$wX{I+7`==3D zuwfJfd)&cZ>_qK#qCnd+KI4IRoRIx>&zdoi)YuW>QK|{7wVVu_j` zE6@OYtm>C2T2MTYR}`&s;7}^K#~<&3vQ@D_D$+ zq=tMnQ0DKyAZ`Y4#L4qK)jw%RZKSeZ-OUxO&%%WRbRD4cueArBl;%Ich=N?n_gnbh z*dHw``}vLi+|Oc|(vx0kF=(V|xHwih+W3QBaMR?~s(2QnJxKglHbFS7{5XVOfHxS$ ztF=rBJhotsRqNoi`6dc))m0n<-e4!^|P;(K8B12&?ArXrSu;_I_aoT zH9Tyj_E-D)FxswK!NCbEgxSUNvHiJ5nD zz!1@@j-y6z7bw+|)r2iRFm6>rMXLv*8M>(Y>z8;{+Vyd-g@?@3iST4{{gNCfF^9FK z6H)2)OLCpW+{tV|rh&66aH+ZlivVq*eKb<>!{2<>#Gy`_VSk9xQeFhkKt160n&=q0YZ$x?1R*y$d03!#Kj2p{m0{!U#X+sbT zmQzBc_!R;;g)^Ak3bqEVbFBcFmPpeV9SE)m1ZbASfee6J4v6+7L?>wnb+mDLuZ40S z>aqgsNJLi(?>CGz-`McVgsMl3Ws4AH1s<_#AA#ot#N!0xh3k(TE9i%bcW4mAhlM?X zMr$A1e`suIoe)4_@w$e><5?29%+}_8KJ7TJd0&nY2A?_Q;&I8pkqxa_ zZ&j_!UadyVLjY=@v_j8Y)a%%Yy+^>S*JA68?#3rb3YWETfLPc@tPPRLKj5GE zV{oU;;FRq#cx163hQ*un9>P$>+rKS>O&Jw(=_ww7cyS9143%k54E&LI*9gOduo5Cv zvX%iTgb|;F+~HJTdp;_n&;S$nefgB441SAE{6*&7!6J8>`miQ?!Av*LITlzyz;QJB zR8|^xc$M}CrqSfnLCuI=3SiDbx`P-Kn58BwOC=^V)#VgH{_~JOV$X7l_*vv)6v=#F z^mEJ<U@Osoz(j4r66)E=L}6FKSKCX1Ue9)Q;DuaG8y=|lPqh4uZE})7M|G<`I&gpi z*3A^Qznbkc@EQX?ow6MPEN}t4X$=b_Bp@{@fScAZt9r&o{DDDugu9UFmD<(oW&vV3 zpAeUcG;TwmKcF+=m0H!d$Z8y!PG;P&2BKqzTt*THj)*j!%_^M@$F0crJ_ssgy3a*8 zeft1SBKlm-2{_TOsOS;BqF++c=l6mz;PIUz#hUb$LV4Nd~_(vmAP-S>O?U z&`0*9X3^Xt?2$_@Mg+dk<@W{Zdj!9S;M>?xITAYZW;=g6U3)A!MbeL)G1gdoIzG2j zxnzzn0_LseKg$=J1>qTovf>^r4<7u?W=V>4=gygB4UCPMi@a>!s4pEg!tjlW`%YD5 z2QfE%dZlx0C>_~s!+Q!cP3fO=vRw70BXyQssknIiCc$QXt|c(Dehy%G{m3d{)5T53 zhMOU{Q_5s5e)5=J4{>-f0P0#%&7ucJdQK1aIXL7Y`w$kUY=d4S>0JnUQ{P9z<3e|4zYz zRkOz@FM}0=Niw;<{3tEM2BpPJG@@aBlkT7MN5_;>@>Hq z7e;hEsF9W6H~f!nc>upWG6`+f?C=KPbm51=N%S&Q1`oB7dt{<^8~2=eY%YqsK-)Gr zsx)8_fX1AVeNl+ZF|gQ;cnlF{Ant~jN_eRoo-g4QPMCxyure!Dmlb+AEA$g5WRH`2 z9+B`S!p_5WqUtf(gShI|`8rXt7UPc&`x_iuZ=Z?opvS7JOqyu-+)v|=I3ER_T@abX zwGBT%mmfbbd_V(unOSWju$E}PA7~Dt09Zj>!?gl&I${khr6bnB3UyjuiE}az%`sy` z)nZzAcY?d1L)H4gPw;^8sg&PlI8sHVFNk9xy{&q&P2gp860ykK3jx_LvFV0uANHwZ z%h85@4hKN#5B(PR)uIfA^bkyF1XQSRET;o%E$@*f+lYCWoe@q4ag+itz(+Xj4R?b{ z+aMIfe32+tLuPU@TG#c_0V?CcqQH|Dak%&(9-|+`C4psFhB-hlBTYGidZ(uDRO=Pq zEA|Wz&-a%OpVPNZ-uv(zY%L0EQz*`2rjX-cYiV$Rg8)d1?tb7TIU~oeK;M8A8M%%6 z3?aTObh>q?Jc&r-#Z^&nF)B-stEaLuA4gT~?l zn{2Pch&ai&5xqvf{){g*gW@kY`8D#*GNV&CqselF)f$yaAX-txgjGr@$94WBIe0z( z4*6w!sP)^hf>1#GrAOR;M{pag^DWRj$KQ95u-FR2;CUIV3&I9$JrtjtrbCF zYAE;06)zaZ^ZzvCWpC^rUFE3 zVaBn*pZQMauLNlozZhR3NaGGO>OG%W3STMxAr zp{by2#YfVpb(pde@M`Cwwo+tKax?QlwCMrGm#U4>)p+XMzQ`7~0@q>{_$fZ9jE_8U zCW@dDy#v_KySCF2vI=NZ1UKURmKeDIlz8FO>u$n#nfG^iAORodTlQD+l-nk1T+F&k z#H6mk)5Mxuu7sbS7^)_d2{JcTHXHorM%wa7AD2Fb9qoeCac2V}NWc-tElnH%uZDPH zDkKtTN4Ljg*DxXLIhfeH$QAyqCpbF%8J;fw6d}+iHWTkM-@vI8zU8p@G!TgD(e04pAWVkXfO+HL)ivwIs1_1&I85ogC z@GuS6pHjD=>!KJ3vlL)WP|?fRpt!SQ^=%U_O=I~tKzNl7<|k4MXDT@Zxd9uG6<7hy z)1C9>+BJZa7PjyUGZ7h!n`C_|WLJb2vYbI3Ym0*Cgy;7MHHAaoA91PU1?b=@ybQE; z7w9iksyFn{Uj5C<6-S}EpP7?<77+2g`Y-z@ll@dFGP55`-Kck3Su*zSmB59x;YZa` z^Ic%e{=1ahk7_tA#vP4BZ3C`reDaJ;MB1K~%MRFFDAAinV_eiOPX($N;Np?i?cv(y z96Wh|yB{4^sN2HRs{5;3wKM)(uLVfUbAzrj3X zbRNf&B<-)7M}Pln*1_fRH)LMT%na;707qM?ze%cqJ&EIQn)VR$72?vaMLC7!qI2si z22-j=&aXy}Yf&Xfng+4~!^r_7Ak`*`PPud1&5Ro+HD%{>tQs=&4L?D?B2_FrugDYn zLgN4eBlI6OpWEi^?N#+eldf}4P|3M+?J47=D6R6i{Y9>6Y?JK)pc=X?34s;ix#xsu z4@fP?<8AC))e5UZF`8CrMPlf7jz!|upN&bo(TA1NvG3?1BieB&GWm~q`q4jo{CCOs zmMafO9Lf;AYFEN!n+~xX!s!3;LzK4^Y>6Hur$S{bVx-xfQwJaS5v zi2~*0Lj#j|g;*Pl)Rz@$V?*tF7se#Fg1Uk3>ubnbjVbdF3K|9!?pf4+AOX;@K8Z-%I{^Tjo{%n~8J?(VcasL5-_Pa}|`7omL1X%|<$iTCbp_3V`z@Cyor;(tGP*=%8 zZk9@p*fjJz3lWUiT_9)2WsH`ixE1IqhRk`VHax}+387C_O^I=FE3mB;mm=)*@%)9mhK2Ra+26ZYq$0UZ^hARYovSdoS9Hs z%mukW8EY`*p}|}Q_DzpL{r5CVtwm0ujf{N(vEUMWxjD7xp=)~5V91ZlIE#&CU%*;4J&TY1q$uTQ1NHUnKiX|T)ffmNu>V~rQg4y{P8M(9c-3IH*CSj4NmEs3&H zV*{?{ZYYIC$aR;S6;Fb?;K7;Zz4YXA<^(8%ADV%>CRBA94-I9dSxRtg-e9N|$dkb{ zFj!(-8H=^xDg-)Vg`Pw`=KTXp+Kk9{MAT3l>@8`Zor@+&B;?ph_#=T;BSbY$HIcAC zSZs;_gOLE7oSwv#{^Azk37|Mn(iN+ORCt>s&7}?WdTDI9*8iPd&lGt)hdyXNGQgY( zv+~J(Xc#2}UQ#(k_(XB>z>qFCQChiSm2xK24qhq690`YPe(%2|65Bwmr5MBR3{VZ zZd!vy2&B3VOgJr_aE6ocWhNX3SvS81&s&>YGKR!OXVrP7c z<=9f$;CSx&RtB}}{V%*t$(N}WSN}y^Cqgc(;>oT3IcDQ|-i0+@(vJkuj3*bv7#r`~|I7TgU}iSIeG+4< zyG*p0X1O!fO=u7AqeL8IYut{WNbo}4qFpC<4Fjz9fQ?9ymHqtDI(g`yg5Vx0+euW> zK+9#oK|h8ne!H>XgS0%dv-s`athrPnTr60BTEk>>`I=XSEU$MX8;)b#(NM6zV%+f> z$xjrozCvw8+CEwMbZG*3>rF;y>$}L_Z^UAy z^9yyx`N_@yoxY20l5Hyh0IO%|fQJD`-^KP^7&4VGbxWPzYS6b0%=2$Ej%N z2;f8yQ_)2V5Vw*(D%#O;Ik`VXbEsR1VsYa{_r6O-J31~Wx>-d#IxZb8Y`Ri#xiugT zyrJ{jxf^XSR5gt51>IdL`pdnduT{}wdPQHRq8+W51Kk%@w4>y5qVrYsCA}*7N450) z(q7STsp!ijT4u@FI`k|}BzD|{Tq*}oDG)k^MoBW%S>xbQbM#i(4us^;42X!KPgyl9 z(hPrUpL&0xax89y27d<$rpG%6_n#`q;PaSg&PGPBM|-kXm5VGa)y?Gexo&N53`>KI zyEG0rL>s1$f$yJ;yNal6EMmlP+Z;r8*1N+C@yj8mvwI_LR(6W zWY4?~t;sqNR-O)(GktLg4B&3gJzm9uwVl7oJk^;x`@k*Wo(2(9YD&t6;&lPC zUA_^gfQUAn%2AHZM=$Ne*P`bYra^s((ZuAo>9qcx~wYo*rYe^*|WA41Es9ZP{$>OF+H~ z%#3IeGw|?9f{neXEy#l{*BYuGhGqBbT zKP=&A-SA=wuXDnr*@5+0p%=44^;w|}PRPDo>S>U$tM#KnpdhcqopfMLup?=e-}z2o z5*6<_`ap-W+WnkFsf058=qWfN2;-J~5oSEt?7C`^zAnYC+zCprf_WOUH=bsqkH>$ZpubrPXOvrjZCyS;6JL zg_NN%luMOb{s;(OsFD{7aH{#DXm9UD?&Fjff3L*lvkGV>s^d^e&^Q6Q2xfP65iI8D zB8=E?L6ID#!*YC^A47Z)za3wZEi87$!i$`_!JHni3ke}7tlyUPh(g17Qpx zPF3Fq%9>k(s7a|HrdictGeL!%RX|7*@IqF6SPZw=u0CE6rV?gIOn^1O%u+Cp;I8_)n6Dql6F&a0nHFc zjoxu?2m2>4)O`8q##4~g*obwM?QAJ@I=0vMinot0p6D}v)U1wyz4SsWs?n3J@jKjAEDE3FZv&rLz>Fm`wExNXZ=bv{8(by`Pog zR+wx$+tX}15UvIY1RU|)@#wdN}JaH<%(`?9TPCE}ipxHyH!nUwjahvja0_m~{ z(ai#~F!hBB!|lY>r$%Ha#hsX+LIH%q5-X z7WySZauAO>;#Xh1F=C5QOY%5eGxiGfTfK0H(hscO|uvw76Z-VS(pgt!|#lv%Yi`_*6tB%Js0(&MtnQOEIf zm4LMl=F(HC6B88;4wsPc^n2emPD$jfM@~3{a0bo(g@ilY@WT?`>4q0exYG#>|MO}_ zNKM?u@xY&iku;X?L$lzpUUTx;Pof4ybU6{4nT=xG7o6BwqyPo?_K0JuFbno&l%Q61 z(dSPzPO61*e|-z@a98ezdyj3tn(O|`-<&rKI=L}zko(;=1)lsj^STgGW5#F*@YeR% zpX2Xew@}0V`g5!RZ}j4S@)DtiO`F(0Tp4M>ki8O?&I%FE1tm)^CG(VZ$tw9(6m)uH zzk4+hV*u(S&SQ@3Z7{`B<@bUt6(4l&2TKXX_6xg~zAvMkBP>uCaAEYJGoro&Rng}*6Y3+yyz0bbtfP0 z%4_9~ePz&r^ipKEXSjfmLeO#SvOBt+u5{!=&1&B7G-Kn?Tig+i?F#ivjZHi1uo6tb z^-uH2)M?%>D4*b%#<_@tdq98ES<4}^#7m4@!iTSz-B%r=uTW?-c0s_k_6UyLT#6n$ z9FkBBIXbH&i-!-M6@6dc-uHyTKnjJ8a05cps4cIptc&vG$ zF%PkLYsAi#$G5<|?GffJFNz9D$~rl5>H90S-R zW174O9YikHtbveCm(1<1kxHG#;b2i(ZeqrM-kyR zTcGk8)ne4|;!?F=LgC}5K1uG5o{5k2!!t|x2G%&0Tq+A4B9$hAZ~!Vuj!i?aT9t>Y zP)7IX1Pzy;xZ(9ePVzXG(510Bo&N3h^R?ROFVHlhMpp=hy*!Mz=}8$8UPKVLGd%L$ zi)05`<%L9K1A<64*SKZ|>)@65$QB|u80=99*egGzq=aTs`o8zgV68DwTn}F-$G ziiw_#l#EMw$*(Y{8m@jV$*WLlCWgy;$%uG@$eN@SLQLV+g}MFU%Qb(pQ5d0r?LKx9 zIwwMD5DHlgxdbp={Q50vON#@2FQBep#3G(-9|r+y6miR<5Q(f(Tj=;{?1PIJqvKnnB4 zPW;DekG+o)GUUbEafpP4e4_dhy-`7}0XAm}y8#AIFZ}k&X&XO#$8@AQ;t}lqSALD* z$DAp&eC1$}r0-4mrP7EG=)KSNwZe?a^q)Q;%iqY3`ZU2(My4t*w zK*Rh{1KPqtHy5V+OEd#Z+)?5ZqTL@Rf_an~YQggx;7Q6*z&y)}alRs-dCfAP72~X# zWnlPzjqSr&_7eWXHp__al#g66GWZatCz*@lN6iCD;FXZ0sXXQM$ukfE;j*4+)u|0} zM7f(vIn(GVp%Lrm%men)rL@?bVC0;@@Fgs4WSxe?2 zVvn2rbL}UxLaKuNuNHy49B^vOK~pb9Mu6>qPj-yfsp^-t_*{oL5t;(uFF7%U zV>92#OVY4b=y!Wrev#u#E*Zq+A)*x4Uuu1R8xb_IzZ&f^=eL}MD^JenYlqI&%Tdeqo*jk8=ee#UPb-m5b2f@M&If$)=!gVa<#8>)x zf8j-pmk<`*K!$y37JaS#J0Eg?2??R_cHB+VVFBmqOEGY zV1dG{BgE%qi<{txJNro#Uh&A-pV-3FU(Jv-%x8c*CVVt*7|?2EMyJ` zS_RC7{tU4u=NIorM+ZZOVLvt=;BGg&Oi5O+>t;PSHu(e)T#yOD5p>vrpr>-EYR7C% ztycc`DZd+R!X0_&s7$4tyzN0(@L16WHyEd2d#>)bLSmL(vm#OMWglbXFyC!bKtF=zIe zqm9opojfF^hm!smNrxZpyxE1tyRz>qQ-0W)W@AqzKcxNkI&z)p*G1@;7;da$L;<5= zsv(p%(TFxZ&U@T9Hg+OSIR%`kdX~XyRpRPI-Ydv3@oFR556ipe5xByyS<{3l976bm z2ch$f#h-&$!&e_8dN00IJpkhd@P8_|8&xh*@1dj<1!2Gwul5St8DYCnioBK?^*I>0 znl*1^MtvYrZ)QgQS)$&`jM^qqdorVbEm2(=QG{r3ukgO?aLuAg?0ug1iFfd0Ea`*6 z5!n}<34g$t4SDP%4vpG-5koo>aujw(T~WmVv-42YQJ0J)f~$Sq<*|cEp(4(8SjQeZ z&W7^{wYo`*dI+*}Yc`MY>Wi}*@(2;M;Gw*RBFw$EWY~_)P$a0_w9m)hqx_= zqZ>cPuYEllg}zb7Zp}#aYc`b8d7SPizQX?3=W#rrn2zr>euysgKLO#^erR7AvC(LM z;_*iN$sdC=vj5KgzR7GeqF=>Uzy)#pI4}H2%58%mj&b@Ee97$#SkL?h)t`nI^oOUg z#vT0Np#!~`i3*ZMs13vN8shB_P>l>*lc9Be|#ASobxT$!=&Tb^Re)2*0?y= zxF6}8i`Y59I!lUVA$NsDWg+)v5|xSECqP?5zlnlOZfZ|t`(F|3^#C_2u%1_(4s|z?>A#);Ch#t;JXQQ z;*j9aVP0^@T~1i)0~c7#6Fg5^J)uNZR}JYP{X<^qpvKl6Y!CAUq@g&K+m{{1s5oH| z^Rx*9_BY(k(7<4su~iX!8c{zW(S{+z&=&QR%8MX*`l+~pPl^3L1$mx#&YLjuxF7OY zs0n;W|Lo**8NrRI`R7mn1#{)rbWiud#%0eupP<*%uj0Mk0_2PjIAy1wy37 zLoL>Cqz`ia&*q85t;)7--nU{&tmf*;wT+p6pu!9_ID+=OuEM7szs*oaW zg-#5ZG!^4_V*E~w&xzq)#fI8)oEYv<661AZ0J6li6gj{Ysc@kaE>vN^6ZSLgcC#BC z2?(AO#`1%{$O+kBM{13J7@4bLhvZf#G=?`xc%YmAR}voVh98yiP&fPo2^TqGX>CMS zNG%~*!+=DYEjpnKvT}~h3XQV2;$bdmXwtDF-advw#LRG>wccv^nLv?)VjbW!V*Ri^ z*!#ZjEcUyVDG4VMEB!k#99Q)zlymIWP@9hjW#2gEMb=?al~o-BgLn#9+2+XDyK2T*O!9G-!}VwPSw z$|y*u&A>Yi%ti9q0IMQ(V4v296LalFUe5}r+dwnW9ebTBhI0-@^36q{$`yz z<4YdQpa4Y9CG&bm%tu6gNp0`w1-&EqzKzqqeKE$l#*A(VXGWf_BOgK}fElo$GpmE~ zC7ui}RDkjJj>thod`WKaXkYJ$JVfAF=EAe)Vg*m1jEwd&9qC8piQoyOobm)F@Ih86 znH92~kbU!5wzP!q0qkL)V1f2c@*N+&BE1JD1oj(I+yeKkUWFwGy|Y_#I7;#vfniLj zF*7w=HIIOVsR)(q5C}!avg7ikMmNr$hI-S_w@a(Qmtu)kWHFt0h{P&#myV5r2Lu2E zRg69LW9)tPRVnD!r4#YWq4JBk58{=>obP13@@(hZj#mzMIx5QN5H?3mqw)w+QK{Op zCWPKGmi`g+swZ$@Q9Iu@Mm{c+2?4lwODR57_An!M4kyz&JAHIM2u;%(1~VRATuNvB zf&G!DQXww;@pK$>H1Ep;8%4&+?uT+xiu|+(oND5+To0D1S>0*MOeAk1^=xxVLXnI` z<{sq|iIbBAhibHxI@=gvSKE}kWdbKujJuJ^#&xg-!tBcrlii>jkHX}a@r_F(1b+T` znA*UbR@IwIApUy_eX6?DNP~Ao087CFb&t z*Jb|&l7d_%xSF!;1$=9c1*L?+s2`d$=Z?r{!;Ix0!wo~C{QXF`Z%#fGn_b|nH;+OA z2*y^zW9ua2=Pms@*Lp+uT2-&Yb!dDj^xx4T;U7Nwtx|7`S@r6u_SEvt7ob4u_nR^P zo>bfBbNJJ^`7Hi4L_Qn7z+bcIaGp2v3Z!hs63A77@e6*6lpF?9%b|+M*AOos3Z!9& zA-a5L1d$=R6(ePL<2D56b^u_88w}zOTs;#Dl&?K_Bf%=9!Z{B!U=AWSav7ElHYbm^ z%KUgk#45`-Cl9pB3i;4TeVH#l879=sXKcU|BR;ThWqCCw>mqv=YWR&G26qNxmkHaQ^K3MQFuZV!kfR3n9|T#fI0~DA9ridBp@XnAp^jCVp~m<}!cjj>@z$wx+PFL){dOiN07j>WxIa?0n;!_Y(y<6yu9XqAx5 z%AIPKjgGWTX-BW%`A60CQR;0q9^nTEdd#ZM2h>Eunwyg*tDn;&B*U3Bp#YgvnLWYI zRO$%^2hOPkZ8-7tDn!U3^Va0xHrSIm<&%=k>0$|;@-T^V)8zzOK|jKWhGq;COGBo z{$FDEqCd-Gg#ID0MSn&{sN5B1%x)yv`>hmpM|&~Xw^N&p15rIIf;>@HL~r(Jac}l$ zaUO~YysRt>-mh!WvKXa+jwGY>-@&`MH#AFnN5p$an7t!@&^y9Hguu(n0Pp2af9+pk z+u`^w%_w5m>Bwb>EZ3VD_KY6S?3XyiEycTK2QilX4huI^zUowqfu=PG&f>TA!41JV z3*J*AiH&nvU@=Jw)hRsgC<%o<7Ox4LebVLSD0V+6S8wWPEPoD6O!7hSP%8IH4q6|f z5C7sps|{I`KXNMEOc;f`LCuM&ayS^l93`M(BCAf$-LDBfd5DH#F5{G}MuIrkOKt&$ z+YI&qh5+JhsT?WT$x$HrGjK=vOwK}!z5LJ1eN;H(-$arq-NS9rF~D*hddAAn0dDZ3 zfa3VM%1=d2CSDzH34W<~yOgAj5%O3o>jndGWDqu{(C&DjQo^8rduz>#7cNP?>`3+s z(T{BJs4MV30J#e)8E#U8P5D2a#n3jG5_81_(%fY`>Kt=)Wc+4`x$-K!lqTc>i<=Sj$3O-39ycPv1Xf9(2&YXeg#)yIH_61pn}- zV{E{MTVBz0pFFj@JD_;1eFw6mPQsDp9~D=b!G-jRSM7rV8yqAU^|#?gpS}3>#j84k zXHA61<+UgU2r*hS24Xx!UmNclT{sc` zoW~&_R3m#M@SW5>Y>pp!CNdA6Mm6SKi2rzsXr#*1!6ulO9bAf*GS}NQ`|I1$o3^}? z+INiQmvfWVuasW51M7MP;KV>?nOr65j|%a`u%>-tM280Kv8Y*ms~>E|JD{^v9$>x4 z?1H`Gc?VzzC4GGqXL0e`MDKCPc?od~6`)4uPQ8T>qJ2iye`b+Wn2$wt=HbX=S1{#M zY^mu+QhznO3RWTUyyx*xXQs)yy@HwBC3C?#W}rqV^%sGc`g$~c4vS>N`@zj9^+PEo z@Gj=3f|t2dZ((Tp$SrNx@SsVQq@G?!W2=#oX{Z)kkVivqKg#-I>9jAfNeL(g74z=Ye=2}LL*FwSBEADGeOKn#$CX-pW4gc^DOY9Cs{BzRmK!3&uF z3!Yqw&ol|AD2Hv;GG#qdSf$z0{DCh5lgZ_6h{1f(XmR-_eDl#;Tv+lp@v+;d5iuPP z2Ix|#@m$pCOz-9!bz2%pY}{_z&zbgvbh$5Pq(zu^PdW|fC%4?4OuG(g%3hAHqprdM z(q2AIv5uksk!@FLosRv3sVXvyYSLM~C{PE@XLAUcm_U#hOF8>H9Y*^gl~f1 z9@vQzc#UPd5uLy|M?VqW9h#jy3o*U#{5V6*nb1-xv?QV2tTbO+pdClTD!e|whc_+I z1`Oum+Q^7krdyf{Lul%1o(5VFAoI@x-zo%;qC>c)foi<4X}2b^A7TXqtFWPA?`PP+ z{+fQLQvm_YFt3y$=|0qsIy|AT9%@Hxp3w9|?Z6mM=;lN1B=Mo|M&8HsptmCLu|Rt^ z;K`|oMYA~>(W;hsZm=OcyQ&q2>A_$2PGB<_qTs{X3Am4yibRg|P4ad_Arvu4&9lCro0!w!i82K4RvCIrzU)1nE&q1Wdv7IAD?lIXT(;kYo-M zbb;8%qaHXZ-j%!#Dm}%@Z)Sgt#&)VxNsP(IpO!4gwD-EtMSACl7QOLOv+6*k)n~SV znPuVBg)8Jxv2eW6_)*ER1s6XusypGsdpNm9<6%YLdLVji@u83vI8YMUUpw5`fMa=1 zO-b|oZOD}R>mzxT)STymFu&h{)V9brzu4hA_f@J^7h&e;bR|6Z)aQb}YPi^k1B6r7 zjtPBQEi=NWCo}G!(Vpi;OJX-ZGZb98)qUs$YVY0?^Mdulxy9&~Rqv z`oUhe%c@)F)DEPwHv+;*0 z@xs^I_(K$V!R}2?#kw1f(H{~JJYWNu~_m2`Nw|~D@{iB48{rh!h{}{>s{TdF?-TpC>{d>;oA0=h+hbTZp z?0>}{;^_%r&&MCiQ(sTVAEJot`2GrgaNK6=_3 zW}xW{o@ZWz5@{5K`*c|N3oTmyTZ}x!QY6b>Sh(}{gb@u8Mrpt)WS?>d*0$p4R0

    nVs%zS=0iqCSZj2(|#beV|3ts1i%(CEp=gAU~PW#E^s|=-i~y# zTV%b&74KTZI@0RXtc|)?7hr(JS{=rrlHExDgIKDr<0y@*vPo~1#`zYN;vnpm*yaU5 z_I4|_9jlI5nDCtrk4TB3F~sQp=mOtn0Rjgp-S?=Wg<8Utkxy2D@pQ1cQ}GDN{upva z)QtKST!?ujB=$uRY9^PFd#(Qw$&bpCMZ1G(+?Zm-9%GMWu(;V%%E--LCYcl1ikNgV7E?Mo(j=DStFv+d zJ2P{f&pH-5IjmuY0Dw_D5e1#{Whw>==@mUqMNjP&Jw`=O?-hNfigtWUIX%fy(O31#ohp_|pWzewuB*}G;l|<>Ou!{Gu?Zn8D(`N@49T|u* znR7R&@KnU#j^F7$o;kPTw+z46D`p9n1i0BoE@*NkP7Rz#*eH^jmg!WPtkQ`{i!@D? zclo9!COTJz}LW`+vKT{=2LNvKpR0n-?9m#D>kjl654$d)&BGnR7AHBZbhZ& zmolxMT!v?OO7F{|Z!o%|K)uszt z0nH>Vd7d<_AG9zE*sUOhxC3_+G&L%MUSLF{D+jP(kzPA`)9B#=YBL%aMgRcpv41~K znMxeOJOMZs)83_o!YQj!41?LmSBl0XmswB*oRRZLBe(^QCv;Ay@vy*=96BCRuuxr!)Gp;hTKXAZRP^_f*+Yr5b2kvRhv6{R%6RQtCTiW*zX3L<2dZ(4 zw2g+-5V%e=bjmlN}<$tg{jGVfe50%DQ-&b15AsW zvka@E3og+$r=sqLw;HqS?rSR%(7PXgxV=I+lg&a-ImIY|uMDVb%hOIBSlc{WM_ zKO3MaRrpze2>WXvI>BRL9+GnbDmG5%K9%U>_i{wK3fHf^BuGTUS8skAC0L3gnXx>1x)x)kxt@z&}_e zQ3>0t9*BLwU!ar%wg~0mj3`SVSVegdZ&=kHwQA{{7phM@9r`6cd+JC2#JyhL@feTO z6>o|J<(i_ic>5xQ*_Cw3Xu< z6Z1a5w4XJgKL^Vrz2hZ1vkRB#gkELNPw?HI&eYq`Z)_SI1`<<=%h`Y+o(O##Dj>!N z3mBS?kRUhTyX>w1hCe90PmY0A)1ct-;VPe1&gZVNY4*&-b(?`V0}90-T2+3Unw1T# zhCW-3Z?#oA6c_d)dkRlbKW39-Q#uqVqi!LR=30S5g+loR@o_Ia3WK$-Yl0v-OFk(0 z!omT6b@Co$>xC~EKU8H^dve$0hr=V6g!Mp}X++e-^etAF~f_EP^W`N?0!A5W76d}*ex2g-RQXwY2##IJ%G)k6q z(YA5hz*{h;8UDXGe}R1KI)Z>VsVI1S^dWmMEZYDyXW59*nQs$`SGul zpZo*(k&YMYj;HAj`j67-{#Pdtfs8ughLNNez1yop4ry;Z#(U2;eaKb|HD z_)5R&j5oT}UN!=CdCamRfkE~o$Nw2R4H0d=RaR6|Ho|zEXy)K^WPhQeHdX~4fj}d$ zvWZj&&x0$Q&|6~L=iX?|83EGtJL|@xlGkcy!1kSZk?@^T(z##&LelUnqdu{&8Jh5& z4SH-&8{z#ZwmXGeL*B{poU$3AgAl1_(I(Od$WSufh5-MBx&W!M0%wevFr%o}03zct zYcTI#_>P9!QUG_x*Ueu6jDSsLA+E%p8ad((4q8wiIg%3`FBw=y#>1LC!rN+19%#N% z(lURHHMyvyWx)V*GWw>fHE+ge>JucS{!I8l61O6IV(4J=jnqzLlw{zdzMx55wi+GJeqgbGrE;3p}X zdB0hecj1S*gAL>0-J*v80r@(2gHS#j#gqYn{net2Q{(Nn@0N%4D(FsgO1x0mx1OLh zCDrcun(rEo0oD9@vGS;O()yX@v!gwt>vLEmZ{?rzx zgcmj%`$XDuNFX0XX0vNXtZCu1G#v+wH!Z0EZvy-Tz+Y-RA#y<@rdO0{?$ke%^oEJ~x9ZYz8=JU_bC% zSNhFBKAZ#y|E=+tD;L~YHx>?8%(xMJvfYo*Mf<1;1oDHR_G=}J!v)ZKvh^eE1W)8< z+oJcle0yec(V}qk9)CYLM9~-Ldza5>-~J8}LP1a{>j#Si#WGsY#!s%_6O_kwefu_4 z1*g=#O7~h{nzh1G_z-ik{gLeZ?Xq=o^-a=b_LLh&8Uf6Bm8peQ%E!#D4XBoIa|p=_7mIhMipKZ*F={ z>aDE(k^Cahf1xkBS)>Z^An960>-Eg4aIaT4m6Lky`163se&@yj1*j8mr7|AI|p1(;*L*c-@qE#1iTV^A^T$# z!O}{t<;wYs1ZZ^N=EW)Rnvak-Z~*6+U$?XYY^JAodEg0RCw*--f!#n#}X*`Cu1Emh1?goz0(H zIY`SlTS|6>KIJfg)b+1!t%mCh)S}Kq!k@zx%I@G;X?wIa!w079Ja|5Gj#`Lf5KB$NE~7f!MuD@ ze9(bmJcijkpe6-F#T8cuSE2C)6$SL=@MTW%BQZg%S@GA^kP(D+6{ z9=^r#B4VXxV$f3=_?W?Oi;SCEWfA@xja~LU zrgULP&^sBu9pOTdE}xUynvD-=kNjE2N*kdV&oqA|_|RLvP>Q9#hX0P2FKm`x0yz7R zA7fQz$ro4x@&*2+GLR<`QlSLhOhaQA7VhLrUVmz_t`Fli6RJ=! zwAJ}=pZI;)hRp>?#?~Dr&9&bSPnw3Fh38acW*ah2aLn)l-QrBmE!Ol(a5XsQv`Myb>QRtUlwkw^yi7KJ zaXz7PmoCHupE)Bmp7>;J4SdES8pP$T2OSI!#Yc+&X5s;m)QqK`#_GRHf?g`aNsoREBw*zb1!uPdAX#e_QKUGFeR361;G3=PG)f3>&${R zbcDr{({BQsh&@S%$ukOmK|($@+7#Sj)OW%eXIJsALkHn|X>%q&$nlq+>VX)erIE%~ z=@rjo&OqcjBs-gco*o}1+wnHt96>;?kRh`Z#COe&m6aY z(cg@bhK4~;IY;`YMW0dg8@vp$Uy}s_jGS}j!Mqs=_=5f9&i$w^vo%p3HX1vDwx1c# zcgA+j9oKxMZ{pD~57623Gkw-Aw_svK+=unvCe?=90-uFbPe)o7rrJ*g-#?p=%T72S z`~Q|TA8EE=w$ws#*?igH@9?v#{jj`}>-&rE>9!)dO`-6WA0y zN;wc>TguaM0HaLQZ#0%)N(P3@#$AhdVL#G`qs;wX<13}*kbzKIZiNa<=0Fcx?Z0oV zGaA>TJ-=EXJlxv6L*k?j%Ua)A(kPH2(uvajdag43+af+aXBS8YrvaLOvyqpD?$E9Y$&;6wreHg6? z17GrVIt^I|X|n3ytW*{*rcvb@N$_LOPwRKE-z$=rroC8*^ZQm8LvGFeBop>~d)_{t zzwQm+Fb&^ozz4%ty=z>e)dg7tz4Ze^st4MZXHc91!9TkD^9sr3=o^k(uP510?mlim z8RWonS?1EP3V1Nt3SfJz$w4p+udBtxM$+5IYK@EAU!{iE=MQCn_hT!*7YsPkHSwP&z*&hSQp76Z@mG zN%M~MEUUrbLilO$2G4c(ck?ytG}QvmUwJhpuZR9-jwetE&eV`6_ zXo&bI;Nx`5F4nBM8hc>Rbz?9icPafD#|Oj2zQfl7Z=tLZ=o<@BkFt)Uc^92D!{3ZF z+tVqIOjXS^r=Wxt{>a!us*X~L>jtaDBz$!B*h5M5lnNDB+Yo~a_=1tM9x~|@02|{R zkEQ{u>}!w_6oBV$q}}c;zj>MzX#P7*pPqj&eF_2szJzJZLfqv@N4-QizUS*!9egT1 z-o$@a!-We*1J(RcBaoaQiEE`u|JTkJH#)FiYM+hJAtXXnH8vX94Q8iQ~1RzOw*_tesnytwPh`+BS z>1Cs*Q|0J`&rJLfdhK_Pm8Xis`2sF5tp-#Jj}cD2o2WR$1iYn^I31}Dw?B@)PK4^C zAw$r*H7Jg>8!GdSejnpT9;}cv>Q<9##J-GZA)g$V6@Sejm=OeAf*JX&M`&iSPkb0p zkC9_NLBIKNd=P0aUeI7144N2pm#Sb9eXT-jR1Ta8s?}-rG-ca?1`EulKf2ct7MV>r~ zuOFs<-~eU8osqph^ABd#I{;Y0J&15;@Ao|c`(VJv&BT2eb}R4>5$+Ls^U^_yelU!NXR$}FxwW8>mMv=5A4BAdV*x#*gily z)$D$PpXvRB{STu5in;4vV3sXY@xUv3^4#(73G6u-*n|GpNdMm?8GvdW*B@T-%|7i|#Vft$1MYZ~ zW1`)tT!yA2-lB$PeOwxkYwQTTB3<>o5+9}qrsuke9Nr<)nanA{^n39L-}OkqdwsDj zs2UJUsp|c34slL;yub^V6L(+zls3PT2d~~Ffw_A)`V@v5F_lN50%8!w06wDFYN~x&odK)@1CziUkI`6Pcq2&pZ;bz4!OK|I6n?=A3=@W9_xqUVE*z*IqmJ zpVTP)&POTneu-WQEbfF*=_n>w2H-2R$#AU!>+clTb^zNItgoWVln7pYED?O>>oSkB z;N5}%x13zlo-7yWNV6A7tsaW}ll3#H55N>BM1OfCt*YR(6bPvWu<o1 zO8(dH|3v;z+5=CH&cZD{v49Q2#wYMDFy#~aQEDyunrS$`Gexfn`8VNTFaW<3q6|k0 zHOKBx^slBrThgIGRR31`~1!tVhAN%FNi40k2 zMP}i$vbMs^LX#Yysd;4BA_;xUT;7J6n;DrlzwqfhL1&`YS8ycoAG+N1__Do$8<|GR zfe9W~e+YZByX4&@Fui3ay#QqzEy8o;x3*Rj|E-WPy*E1}U9T!WH2jH-N3*`Oz9(Tp z1w9nW!d@U|19pGZ@#|56i?h%If_I0tT_CXP_p84myBipeW@obXz*!Sxc`(NBz6A>? zZ#89*TPQku$KRNqx)~zdw4}JbSVHgmL2upt2z|n_yxYD&nvOLy(*!bWI|q1$9VkSR ztc)}`sZwU?(|^}S3`{s%{&f@qJ#axpL&C_fLT)yKP>((a1o3u`dL-mRR+ed&r# z;7h`u(>QX_ApDQg=okH%^T&vRXg5P2ZKfYPITrbtq%=-3drR)cIe3SG0Z;TREEbQ6 zILMX^lXw)lrI=gR&DD5Lzp~LI`zT~YI&t27K~IU>Bc)*6POe|BeC5iTCnu&Vv1ANC z6Z+UhP4Jh*e2vzb_xK*BsaxKt<-yYuLTh^Y6l1wY3-YZWInFhyadpen`iOu353zl% z{4}5IF0eTTPJ&j17YYHzUJ?1uZVL=A=n9Mrt>`-=VAoj+|lL*UXK(#_uYyOQ!SwKtiEy5?tFa&s5=faxKU_8Dx>4e!Izf)waP+Oz#yp_^kT&3lFfK@E_ zL(UnRni+3%Ypjr?&x_fTTZF{Au;6f@q`y37ZJ$t9ThtWpJPCk&b|G#tVTx*7m(zL6z5frQNB!{kmT)!F4z)o!Frj=JE?L9E^1 zKDM4$x7nIKY|3WXd$}gT?9}dfnXF?W?RWH(*WSxhPhc_AKl=J!7o&6Az;v6bF+R;1 z+Zcj&DKofnts!EZD|OEm?$a1HNxtX?srqP!Y*o zKM|VY33k&r?x{MuhhCl_dDz2OdChe&6_S>@vyluMuHJ4HF*NX;a7*$|Lq|pi54CxR$N!!te*m9Rr8t$#jul2?e>XMv;R;#atw4ei z+>DJ3=|baFbk{ET)?RdepWX4$VM0`P3mDdu-2^;|9@$MF{0E(ig9_pEi5`@i9_-i8 zQ4u{^wg?Z~ZNQg9?iB|?gH(mLd%GXSl<)qo0{`2tD$&j{ApTk5YW^DhI6UZeB|hPDNCJ9w&nq z{VJVPq{Vizgz!~JHjhLk>_$@59|dxTzd;0Jw~nA6CXz!Mzc&8yvI;)g$!JSxbg<=y z+cNwW{ZivtSN;QeBiPH83h-Laa@3EL0Q3y|@p=f0}0VWvW&spz>s zvBe9RMbemD#i@?rFSt!?NAvWEVWLp-oJbxa5M0L}lQxMHxkDv;5m-Q&fOy-Bbi>?Jn82B#6!*Rnm)=E1*Xt~(a$LVE6L!dLS=b8F zD*l30tPvqt?OAqS&NsooHR5$($&D{dexh`aOs*aBfCq5o&WSxB(FFXQU1i@sX-K#= zLjsAuxuviyQhlOCk2Ik~U7*mEIV&J-#Ww?vQk1gB1pSatjxrq+A0@Pv2KKlABs4^3 zmt*{u;c)|41T*8aOf*otgOFlg{$#Y3WKSt%{IWybEnJd411i>dp`>RP;$dtxbW|0L zl*X4ozf%EAEWgj5M#D*a8}5Lzg%6%ibkT3Vhi*T+FL(9u+G0+j$#pm%u&0G|a~x4O z3ijPHrY}1M_qba0=fBn;_LwV&YE@7>WnR4j`)VBGDq8d zBRt{fv+WMCvPp$4_TKn&1IOQPS5vp6R&$4noif$#Li(sw6qLvHlNlJHsc-6=oTQYu z%k^!d`!-MCvU#H$Crdc^rcu0jteOV?O8z`@B;_?{F*hgCUGlBY@dUpi=RY#ZkXR3$ z#gmiY$5V-zBqh(=e_&Q1uV7JbER?2MS(yZ~CggQOK7F|i2{tMmb+(c@ng3U<4z3YO0^52Sx+wsI0vPhDp|$9DC47xS>jqvmnZdQ z_bmho!Bf@C>aS{3eMVWov9mU(F2lkQ@ek(At9=V68{xq4d+}8AXR_x|*$XoBrQus3 z8pX;N6Vl14c2~5VzS?bxlp+ye{!PfQ|JGWn$F+Y_@rsgT(@O^067(odE!9lE_-{cA z@EGAT8`~?VYBWAJM@^D9=t6o9h@z+q&xKN9OS z@pIIvYdf&?$)Xee+aD9~Nf?4;!9aUDe9fB47yq4s&+K0sfBO6$uz7p}9|ZvLrSy7& z+3A?k`9*(kGWDf@0u3n%Z;1gafe&r(AB@j45s`F7=|LFtu`UbpX6|y)P#|y5LEa#x zEsz|wd=3ykC1v$4XI41~|qn6VZ4GJLJT|)gV{sL9c&J@-E6NRrh&{RM$S9X0`uU9xT`t_+Z2Te43aeEn40d3{+fNpZiATdv zcFD=wbFNY$s5fb z;AnX9s4N2Vj2iCdE3z8e!)+x6ovUAUiYE$1EP>fa3zv!fEfp@d8qSe5-<+359X#Fm zjSk^N@cj6P1}LFd-UTI!jW;45&;0mHAWRml=ug?xw%ZV$dXUSQ1O9_St5HxHy`dML z|1RX)Gx$v2eZhQJKtxpU^{o1$-X>)45JWW_L=E0r$OE`qJiK6s-Mad1rc82K)Jk<_ zoUl_m01{Wtu^Q%Q^|WLLzhl*x;+fGovm$Hdb%Z~|bk98utA=ssxdb3D%~DIBltz-3 z$>Y2uGZwo8IYq4zd<2UPfgX|!!`qn)D-TMbxXWY;c1P!YOn*vwHf=2;=6K*iL~d#G z?)V*0mxMBndL5;zM9rZ27c%pIcy+(z_+Rr!xx5e_K0T#*<5mstV%@p`5f8EM34>cnMPh-3Z-|gwi0m&{D|iL(XCI z+$_)Um}k$mJilU|3+4Hb<~bzKEpC2!e%d_C1+CFvnCGSPywOePir45p=J|l6*SOD; zeyf{@TVJE!HP3PbZ1h_59Fpe>^V}@Ya$X!b56JTc<~f%W$kBZByi}e~G0$>8Z1gzu zyh+*}$#a4`V&F6TS!}jwQbPAKl#lO7BmkV0q*Lx65$4QD7PH47C`E0Se>5B+H87;xxzjayM z?!U*`uj?)|qHV43YvM}6g5%FLN)1o|t6W(it(`QI*y-JN%guiXTwu4_-FY8U>*{iGL9qLlHw+wV z&msO{TD`v+dMvOa)LYPfGk24GPOXC2g#C%08V`l4$EMM({QdN=^S7{C&Qmc<^7ng1 z%Fj&RkT&yq*6K`kk8swm7TRfn{g8(IT*dAGA^CF;{SM-{hC6Q3jTgRd*i`hC-oaR zi3o8BD41D)@p^w&WOrsuaF|(Byn*ACe@hVj)^PJ6QIO@pcqL2* z(|+1`B+rA^i{C3IYdIR09oZLp)0)*6sW=>{q@r-|q~#Ta2=}dFasT84Yn=o=d$bv( z!^LN@dTl`ju=j=Ev}JoE{{ zjE*zuUrDCN%1B8x^c?ksrJ;>dA+iJ6(7_<@=oXe#bvB{>X{pk~Onv#Ol*7_>-xLY= z82!?>*;L<;$dSJ%wDPcry@Q%o0_q5I<$`eSa~eH;`Yr9A=$-~0x<5^W(^DxM3}%l@ zrAQ3(&?hHZ>z}7esk>&n$#YgJ&(}#wbn;2fMkn9pfy!s6vduIFhow?9WKaG6(6h%2 zkuVlr;DPR)OP1(Gz)Q$Q{Uj`Lmiyj9*4P&eW{7s1=*(X!$`sg9HB*_46~2=MXPod8 ztNw-1tkE7T@(?hQ1sh8?J0p>ANo)Sh5n2heCM&j&6w?zyB)wQ*dI2|1w9`Nq@IX|= zPeRsuiIHHg2=nYWSfxT(vL|-8sr;N&$(bgF5}w%g;3E94FEGaLI;ES03pPo<>Mnc_ zlGU6i8HbocUzX20DPsR14~?9WN_kUKd{ZRFok~j)TVh*G#xqkHx0;kmsg$3a6oM!v zs=wb<_O(=HW2Lfhm}IHUZR67;Bwu98bAT#QzQUwPc^BYfP06~46!ntOOAA78abI(D ztuN$l_Uwo~1Uepdc`#ADtm;KVD{cge-@}j1K*qjCvO4z1e#BFM{=j-I)(kis7SPH} zP6KdT6tg3=lDj+aH}MQc7}JBUcT|5OAVuH)rhya^dqp2P$Aae|!6PbT9V8@VGPizv zM|AjhkLQ(@M>sjNV83q)+Y3j!MlP*m0U7B*`SAC?^4;G3mH&9&X}MUXv|}qq0Nc%jQJG0NXe56TSdx;iTQbb}_*%@;Y|E&n-`RovaAzuPZBqF34F_ zEJn41)b1wJB=3nM|JbR;ud#TcFtP+NKq}NznXS-=$jE z?zS3UXo>o2vmyXuHQhI?l@(`$)pX~uW**>*L=7SMFu4Z5G%RpV+&N zz4Hu5JkU4`DxpxaBmVd7?uZ}XF#p6z`MZ(IcOw3`c*%|UJ0cS#U*zJ9$Tfo^WnS`? zan`^;v8ugn2HrVk`w#%~Qa@CB$Fc#eoxlMJj+Jvq8i@nu5gX73M92Kl$ zvei_Sk=R74vde~3-Fp;yYX%TJ*gOLtwFeFDUFUvzXNLb>{lZ`U5*QRZ?f-;6_AcWv z`edu2$X8X65ts=t+if*moLN<{`{rS_MSXS)wez-k_{~Fkm8LX%i`7)JHVHxKv`^v> zS`B5H#J4JAh|7k{!|?cTU3q1i%}x}-I1nK9$b^tveWBNCs>rNvj`&}*syR98amo)` z^>n;tvo})yx>fy#q*Wf=oWVYpe!G&`9+#qH&m9t}j7KWox69wQYOpa#F6Ta91=zM?NT6ZC2irIi1KC8N33RUp2Xs~=-|1;jL`U^Ssb6`e` zb-(|8ps*Syhdt%*N6O=N<=YMs>6)b^~ZsOz+d7K;(woq;kb(NGeo`*oKFVijPr{JS=GA)O6220HW3f# z9o6iw)mOehqcUz)KdvB`$Jw4^PQP87b%#~I*J}Df2H@4^+-o&mkzqBRZ#9k9i6$HN zv!>|%+2&YMzh2ay&m;sWdRYjqbBU-xYBl-RXdl_MV14kvf7Jhe#2=64>FdG_a?@6% zB0i%PAyBa9sdyjxcMX^dXD~RiKQW1_U?Dw4j7qLE4?z%CU-C6w zc27o3;%&%qUz%lC9EhFC+kpKa)sG}>jJ;P3f^A7s;#eG{bSO{=gU{bHhqGG8+wI)9 zQIK`->Y-Hy7v1YyeU{nTC^&L^Oorl6?E(mT5%jtTLj`o@yO-Y~{TwIcJEi1%l|6q* z{7vD<%=jLEW=5dc?hqDp`r-H4@98~>6JB|(_TF$jV?}}a^2A}7&#>B@OIzN|%-ikw zYL`~y;QGqms4(ZJL?-go>};%CzRwf*+m#%>`w(lbR{6x?{l_kP<=z7c&ly+$i?A`> zs)qzQY97d5RYc^@z;WT;L4i|uazq9~uEhb9A=`lBxXiQD+TH@Jr(}TI!RQp89gT9J zEqWiz-I<~RZHT{&LFRevHwRYZJc)1(r?oq8ZMHiPcWsDo8#o?v36n$Q-uJ! z8K4h$$|*&{JjwKR?^ojfBi0vIV5mVs|bM!o>tGhnzexDJ_!*tc)@75b~eoF0NF*r8#hUIx7o)tdg3oHpA865Z)`b6oh z+MMIpym?esJ@%=4qm#fK^pR85UixK1Tcx|*fbU~B1BM@Ij`^m(5Py;kT)-}4cMpRW z{E124Kr*V&J;yFi?)Y{xdR~Zq2dwqOhadxc6Kj?P5W#Iof-Q+7LUgnk!g_)utDA!- z9d4Jg4os-43g5=I*>QkPWF%0?tydfk)znDwoWOf5(X5E-k6<5(-X+tsf7XHYpo2>( z)lXUDQTCz_RiieCy7cw!wJdkt}jde`%)$F0c;62iu$*5)1>8#4WC5Qhd$Ee3`P&%s( z>O)SvHnHE6#HTD15Q~sa^t~(1c=deFcokn{$YxBx(b4q|QrQ=65HcAsa0&ZNiaxt* z*nbl~uJoB1%ychf`KndF@Oo=|aaH)uLD9*m0leQ}y2e>r>5$d5M~>6xAT3rAEHpSc z{9Z<2C`0V7wq%{cZ>F8;(f@k)$b_d3-c|&xfmX9+c z^S+t1za-~Jugnjf98;`F@eT1mm|5ql3)<~m<|5jDGNUUm8vC!AkGSP!M+|U2QU>~Zz~(~U?Zr0=kt~M=LnPleg7FNXUopHT=&5nZzZ%bP zCHwa|^z`jCdPY;1iiE8=bHJ~uX2WouvW1374gOty`rD{q_t?aX(sCm6MRpl2m@>M&(Nny zKGu3RRfP+cI)zvHGj+L=MOC_ws1ZEVzDkah=fFjEvkucDw=nC5*AJD{`z@~trtwkq zZWndtmQf+$43nx{Z^XnO&RI8H4;m%k0G1oO>R9DE9^ zKGU#n2%klvYr;>=|9-(ftNHw=i9NO-ChF{ukM4|J0*b7Lb&|QNV4Y;-+6&U+yV>!Zx-CT8vqH<2PgU6u{GHc$ zxKS*uv?mS4f03MD$E2?b6-r-YX7vS5npL2lVI=MxR? z;>!~5eOi_gX=PxfUy|HP9|a>pVmp^&fq7j9=f0MF@!MwKw z1W2Up^6cOx$k~`-!V!U8_77K@PGChaY2jz&lPB;)GOd$u;ohTGb;vw%$H*P>WGf{k z=XXN-Q~AOrlQ}(Y$c;MD}_7(_9oi4yRGIRjb_uGOaKddMI-53?M~`NNT4Pl~$MR>fBC)2&pQ88{QY#K&v2le0 z>=I=~@qgpX1IaJ0Sn!S%EA+&KpYeU{ns;UDTh()ujm)467(JWiqCj(`z^cB8+*WPt@rR^F$x`cEOJ_>dbJ)$+aH|SXg=@3FKw2XlJqTMo%r2WHYGJpR+YR|j5$laq!+JA74N2GwvT&)v@^d7~ z!z7>~2SHv5lt->!5ZTrIz7Op`IG<$_?IK&%(juDJBMMY04nCzt!r&se1GS2oL(u<= z3KJZ~p>~b2gb^ZHTi|zil8;N&_^j5!@|@Qh|5fN?D{w;Sh!t$&^G~g&MMc#+Yl}V% z+{?-;c9ZxWq~BpR(XxOLTfu}e_C;Dv^07p#vQYPvCy>`wSZ51X^t+++g)cNCnWw0s zJNgF1hPbH)XIIs6?YF|*Mc5Ua8{v1XhVDQCxPYq{T^Q*AS<2jIS+bpb&a6>^B1CjEYWF*>Y3b!#m+jgQ1AtunCe>tFQ#%Kq5nZtJ({UFtV(N1{F#LQKS2MOQ7&U3 zc8t;K;<8yUw3{*`qxsdQ*w;kJ3@z_c=JnMmb~CE?uxtj4#VEr1Q9LFCORv%4vbhGb ze&Ip}E8J@>TL{URc`3GYotLA~;h2{R{q-ovC1ph{p5e+D1LRRw>i5|{iY#0hDZVsz zJ0!zGy@`dIAW=nLq@rS$M|rOG74GiUSBJ)H7aWeTak8*TXV2aPO0h+;?^0Yc@9vGi zB){7hRa8{ePDfqGX55WQGY|1@VNuL4`RZHeY=dWEDck#|^h0e!MQU!BJ|KR4jclLg z|BD2J#4pc|e&s@#vKTgS&QQa~axrXVr5QH9^%>oHCQH;n-Faw2cb*~&aG^{tbmuSd zqPnx1T10KWGGF$^Qu^|1k{#y#7cr51JH9qCU;EqZa-!?!>Uxsm-?L8ImP^lgl%P&&4r%h2s&9Q7xURo2= zQ=s0pI$`ullRNwIUxGcu^N7h%G$FLp%hi8AZXC>PE1EPYzqxWp|NE<2*H1$B?X+XaWJNAA+jtdP*mF+e#-53Sz}6WfQ7DTxs^x^!g8% z2{#Cw9VuM^FE}C63KM{N1*f`8)E;9onk6gWfc8+(7Q}Y}92TU~gazqkvljMiTaqA+ z=FieE@!dpZ_UEWcNer&Y&N@z_Y8x#(s9N@^c95$r4vJL9Wej5E&k-eiWtK>2xE2u! zelk-8^&0GWFht%JXTt1Cmq(KLO}9TBE;aNB+xd#IL{Ef?eUBa`#KY3WvC@9shrT1F z-@|m%Z@k5QyuW?=!DH0lum~x&^!vIzmX;*-tIyW|{bSdkK7Qw!`jIY!r%~y51`Nlk zW;ps)9T}Kw^}f%HZqnW){Yh`H-LLpMp7y5D-ggu288Sf(96%;6eUjSG^D(_PH7=qKj$(b zdJ0G43eXe&Ax&lkKy~@y+I!`m!rId5+?p2s;LXph2k8Qi$seL{ZRr%r-z51rx!@(w zml=9ZAK&+i1%EOlL#mxN2bQp)U&ox73%C~{3+$d^AuFKe_3X>-6cbZ@2eT!c%knY; zvp0A<^Ex(&vwZW4k#d_J&i8|LHxHR1p~$-OX+P}Bd|EU&{^Pt|wQFUxwcy7SnASFXjJJKZ>^z`oUd|5CY%q|@?wd7aU&eyI)W)?h_DIO`jn)k(3ztz$304Fc9A@ zM>3`KAXODmXOu!!vde+5>w2vIW5TvL?InC-+zqtz~CRL1y{U=m6_4t zSKToPL`vrh5EEE`6ilOzg>ivOiF&vbJKCyyhYx;tg z_y@_Bx|j^ehB<}M!=tL!9DxUSvV@8o2CK8kPOMzX?S5hGahnSMMEM}n{pe}mb4XoZe&4SHGvgdGMaf^RTn;BF=gU= zRZoh)>DCY96#AzD!w*bsmgE$W`>PUDV8D18_)Pg}l;0-X0t4qm!#^z#y|{A22eXvV z&oqm?s|p5Zu~1`ES7AVwwC|{lkhL{LOW2u2MsO*H_1~&j0l_UBcphpS3)5~kB9hjD zy=OdRbq>}3qApRdYgy6^iL{#LTkp%?FE+79v=Q+^gtDxf@54xOrl|QQzeM9#!cWZ~ zbAHmu8#>Klo=qz!Mn}^-Hji4l`a-ostLAP%7sfdp56j5>)v|1)FZxT7?N&08SBZDZ zGV3mBNA3mIxQ;lhSk=#vlD~&Ohj<_W0(%0jD{gnnb6SpYB%tKh)AM(FJ6DWC1n`Ii zCqH&e#?`CwrOJ+6y=nj%O8anTtxOLL!XG1Dol(JEV~c#?w2Yxf8wd z*Lm6>x_08x_@8;&9hy7A8-IbP_RzHxj>cO;7mgnke+JcY{FG0#G9ty}dZOIbS}oKCknjG+@=2jGyA_yo1|H#!mu>R6DsC}~4#q|`3gUWwkSqEwnf*`3fMqr(djZd+In-mozB zpdeg?4Dds%e%@_rL>jgH48}9(9uA`HJWy4K%!&QH#Xgd-pPLg<2sKgfyVzg{kZ@gO z;SVG8Zi_z^+Bq%0Beb(Kz8$~ajNf`gJDcOb5A9qU{|!Zv^4SMmxPpqgtAq=Y?Bc+% z)|#F6!rZ`boF5RleA&;Dq1c8n``wr1@Fjkq%*{Go7xo0!)AyTB_hcYYWP37V5{)-9 zZ>1WXLOX9#gHmW`VeA6ZLpvA5&e7kH#ut$8>_bqXy66e)0K~+k*>_n;8(2rN5V`^l&orgSdxe!xg*>=blE9Ne=IZUqE}r+ zb4N6De0NnHxLyFRK|M0hMqrNT+qIy)GP)UdaV}dWrx-Ve6Z^R_%*!3H zo*h&E&5YJiw^Mr`eihiUxbk1NXv(DS&A(Drjdr_ z1~6Iv)td=pNd{G_1JO16`di42d@4(_`aIxM>XWeRRpB4vtoNU7MPs~Ty6VU86dtyz z%Y}xJ(YYI!jiZG~e%lHMt<_NYbtmio5NAES z9b7Eu+C%k%JlU~p7ZXFYLuPyv(R2bAZ)-1sl6vgUhYo*Yx5S4Nf9Uwq-7&tJ^P0;) zs0x2FX7%7_#y|nYhCQ0WU8l7rL*M}G#Y9`{`!OtGca&F|xQveYCM5Ui((JJ+ugN$3 zWxvTWH->164gwsGE4*tcjkLMw!T^ryrE1eCEom#gtiO56UH|&iPj+;Isqd6y*2j(I zST{wDJw}Db{(}7qHHGu0;>;jk4$=SMbfE0P><@m`YPhD931l@a&r$ziWT?DDvX31& z8x>&Hc`{-xZ;fp$yUg42ZnnMrD%5LK+uaWx{@5;CGGOfL+Wd#S6kEMhw?g8rEeB z;ES>X?q>xQ2Dw2YYU$0WUEtk)qKFot3-%W}y8!Cptj@*dLrw-RwLf zvmrPMvEl2&^rN5R($J4*AeVeyNKSXAzD|y9;`G3kfP2&pQpck|edR-|mP`p;kB7Qv>V^;3rx^RkHL5eG|WB%|V&0dPkRC6JYwIFjQBuE;?IssgJ$e znkBqhO?BeS1sBOCWPPn)GTblOosII>YFIl}KmSPP`e4s+AYoGwm-oXTdc$%RQsH%aJ{%46~aB_*HO?|sX*NZsmH1h3HOJ* zPmHV;Hz4gnnQN63|J0!``W~;(m-S2ns-K2%Ks=ty|a}wFC z`pZYP`wvh~&J?q)=_U>_f z)lbfI0)?|qXv=DPK*rsR&|bQi$&uqLOz1^ZfM~7($#|u&UpupkQ^5VD*$W`fIT8ylG9a@H}$Xr~-a!WgQ8LF!?Rozb5x@UkrcCc_4lMu@pMS$C&=*8sxLta>=u)# zgiNd)44=Fy1zQbG(mQ))v(>O7D?S5mb6Vh{!2Vr4ayf#F_1nH z9-{xbAHC?d%RGTAV7P)LiCvL)=7JL!&Mj9t#Y>2;+HBu)m37xOP%y^-QrWgglH3gy z>aFI&DgG^62%n7sdtOOf@nzC=tnk$QWsmqaVD<$`yiPN(MZ6ZG8p!n~-xZaXD5+M> zY=N_>xR5iBQ!u3G&_vG&n ztv(w*@x}-m()q>uJSx7%xj^`itwiDyNBsieZIp@x-oX$GVWFN|An@i2yz*q=Z4`JL z72Zaxwv!U>gxn~3oZl+l9tz!dq9@p)t|Rje4NvD{(hR5AXBYV-tZq>zfuZaoLhNSS zMcHyaSWymPo9rU43Y%;fO?HZNx#AwLlLS|;Upy)%9I|INNUqsNXaQuLMikNTyn`kX$lK5c4?s^7qFl5b$r!4#9`j)GerJvualgCUmAbjf#WUoidr4FUiz= z;WPkB$urSUcvtKHxX_XF0=dzdQ#lRzuA3N)yHkrsv13zA%d0!tsi=r9rw$fZ&t4{_|8nM0IFW`G3H4>Bv7da~_|DRuLl3JE=o<~0y z_#d}w_u(h+R6K6j8mGCjQ9Ji4ZYQ@oxA~m2*&7NzY_Hq^(fjCq8Sw$JQ}W0JV(Rst zX05+=uuhE8A5^WD<4M}#HV?Kz4AU$2;}5! z;2u`Q_To{V5Pug5pZ!%x(CmM>NlwzW`#0zEDvh2mjncp@FWaND*dyg!{br(Ld_mLa zP3UPMoW)zxQ2o4#`VurR$LY&ZUV4g4yn%C&!WIs5=3VDb#JRK7r<5fqOO)rwngPfz z{`vs>f%35G9+qMb$Dr-rGD--SP{Od5;rz7xeH4e_pFC{%a!VBB#1gA%z1WwnrUzw> zk-QCM*)4w`&th}uY@mkd8j6>K#6F_=D|K(Uv00~}D#fAOv-6nR*D12wM2&X*_X(+m z90V!upLL3_gZjo5ESX|e=Z=K@(&Rf+-_hA8(}Zpx8w9#y)i$+uF)-)Qp`PODpz%x6 zwWeOD{8zPQp@;H2!!4n_PTj4@Yqg%-1t*Qz*DMiwtQJdzQ?ViRLrA6icf26R)n9rF=kcwYpF&0Czsy;=fg_E! zo>Ra@`BXhQdIKV#b=N0ZuATe=eSirr9SRmX!kR%9wtrJ_b&}qDiYHNNNIKPU+akxm z!K$Bg8YACQRnTsQ_mD1W4KG{u9EvTRD!LQ8=*MlIl}IelDs zoYnB0fSoZr4`a{fTo@-=FOwq;tr8Ll%J*-E_`}g$@16}_jm~ZTq}iD}>u}e}tqC~- zCulAK_67hC=4-~YI*VvolLu}4KSJ;f8ChbJiAQ#_HUb^3Ii@DDT^w7*=y zu3gCHd-T!m9O}0Hn{~?9jN~)r+lt3}V_tbSYR?9pkMOZsQ)1buy6)mDOhjZVX6flI zM1zw_tC^yXO(y@t!pX9QT#DHlsFqu(Pz*;ox_tU}sDNq`?|5a=$ zy%v8nP*S^4oESz34L0@0E)cn_d;{S;W{=FZs(&Vs&(4WGBEJ>Xdg0VqA+@?RVsMfm zkqfQZFu{2J!b!EbPP4FG#=WH#4`XN)j9aAYvYU zJg%3=oGJFM=&WZ9(Zn`r@1=q1=?#b`>NYUgJW2yT^C%4rGLOpAX?@0_ukrk=AMMp$Mk{SB4>|Ev>e2W8j>uvxHwz@`*;ebclsvn$O#_pRd$e2>g z|H!M<6>qnXSle4=3QmxP5-4V7Cg(w!VR4i;)4++C-LwT(}l*63j7D zd`avKo>X}dCF03etNtDdgs!T@@YohUCiI);*a@1oWNhY)vP{|kDmz>EbxWidcc07O zIl*)3&e&ly%7z8c;QLv+ytT>qyS@dK5*{HZbkW#J83W{x((n%Yt2>Z}rddfiJt#A8 zM#nM^__P$T0V(0p?2p{uA9siJKKLJo1EYpG_efu>3QEQY1e%C#5UQwejz45t$3h{>Hh4NpWJgwt{J!YU$w;`q6GZF{e387` zwFi)16bB#h5IvW#(KpD4cKKH#kybZT+6lhuoXeT@V3$>W5D~-iznbXc9B}js8{StB zshU|d-U>@7OKcT}_1LW~Z~DBgPU+;@>BK_p;^qUZ{^3DAfEC%eg6>7GV6l6(;3gmU zw%jDgni~ppB5T+3o%kwl6AdL-obFV<${Ly7Q#vx+svavsW5WusEm`tp&bD~UVKh@msP)JIS50Rs$a8A z$%oskZygkF9qN>Ku&ZC|8;+!8MecwUlzHD3;EC3&+KaOLc(R7{Jc+p=GJ8Bv-`A(Jc)CfS&X%M6;=o#(S<@rc+C`|#MTLZnz`VY) zOU{?obOtU|Q14km8I+-#b<$H~wpphlBfb9wK@Ag;$g=7+Q&n z3ihq~`{l<_pNQDAv)u3=*a~{!VaL5_ zL$Fl+Jx%TuD_~emX7=8^9W8GSwYx-w^S>RN&v(~cgqj}vemAd1J2t0bbzNSUO-U|y z7f$h4qNv#|F)ttt4CE5q_@A&qTD6a(R(K(@XlxXZYOw%%G1ZjBmI@^+^!d$J!@V*) zu(t=s0HGedZP;V~MQ?%cGy-1RdYyHy3DPK}t;R@d?{;Bt2&v-G@FTJIc{{^VtV3%g zDSxM!paNfV?iD@M?4DJ%XC!(l_a8KMB(~2=M-{Z({)THXLK<8zwPDi@H%V0<5){D5 zCyECh-TF4e>0l#+8$Xp0%;@m4`Ck_Plb(1+&msz_oDp#TLKw%ATyW$E_1^F>!%S?wp_r<1vv@Mz}& zbz8~UNrPnJjh)Gx@Xbo$n`b1LW^ra@-mqgVaIt)8TA5fQ43}xE2Qp*-N2RjTDb54J z3L-_nyl8;SbOcr@P)W)bw+%%*5YiEWSPp(T{moYM$t6E1bap z>&Zj#%cCb9eqW6sM@Hs-BzvRaH1f3c27P7KcXWxnd>GEwEO}-PcP^h5`<>vKh0Chn z$1Li#>bp(-GpL`c-6j(Cx0t%mr|uO&j4Oq!%BYt*iwZ%=?7~9!2BaS=Uv;kG&#y!i74|ek&cmI>vs3(e9IZ`q@%W!pw{g%^9tL&1|*=t(F zDgu%6s3EG zea6SSFQ_)0)jZ)wHrl$T(oa&@FwTO+YEi4;m{OBf>D@4k^p)SuF?0{!k zcp8Ph@GJ{tesf!KE>-9XDbBuVW>cK767qs;%>(#{hEV{YcpXX$QrMj5L|1)h;WlZM zAZ1*lu~i;z;_$ooDcj*sc_f$05(-L|G%uL6?-gOjcDm&+D!O1+q=5GbpJQwDHO*SJ zUU)*p`N|!QHzf0_rB$*wYIc#S-RuF(S^70nYyoj5sw%etJu7UJ@fZJcy%>V?NXLHhC;lYF=_<~2glMeFt`p2g7EDdtCNV-UaWhs9Y5%4hrSqKW`E zsrQ+4`kQT|Y6)`^-K+|URlS}UtsVNmD_7BH)yTLgLJBwpO=~0co^E@Cd}o*A0=W&; z6F4d1&y%=cIB>hnLq)pWFKp|6tBbI}B!Tim1LXjHifdei;G!j%Wd_1hEpiA&xA9|c zG99ILWX7%}!C(P=f*bd8*1*Y$p&X%PW7jFv&5wz>-o&Sm{&*FtX;*T-oAF@mxNa{n zeWn`r1Jex23)ByP13nTK+LE`scoR~VnIXTDF24CunGf93Dec5t)5pia=OQAAM~2=U zwT|qGH1~?3FMU%7aR3FKpsAVhpMC6DYTuaDRJNKfhxBu$PTEt(paBt3`Sqn z5B={eGV>vSzcbQ9EO!E5oau~{Zm7)Mv{rbS#F)P{n+?H-cgXhyovD=@l~Xy1OyB7D zso&JYn8X`ozVSV}z`&CzXAE}(=+o_kRr4bBXZHIrbyxqEw?;tlY)2{s5POY`C^kC7 z^L~52fX7MIheUMF-|zZI#PQl}CR+Vh6V&;aTNy?5cFW&m_N>}{L#Pl-%@Ci;PnY0f ztJFKAbve3WD@5E1xr=YyRI}5T&&`*o5@8%)BbsV1woA_PB}9AmjC&i3Q1BAtk?Rt7 zKN6mIy$nufY@!SbBz3mFbF+-j1M%0;`T8&MAxQbZ#z)(V{}p`fw;z(>`ltAqd0l^e zd{N)i@uBw*Woaei-6-PsQ97R@l9zc?B1urk>}-h=wXTzNmsIpx!YX^KA?GUlze+e8 zm;XN?>MQAlpT*Q(wxs8k0~ z>+Y>QC;4Zh^lAOvp!;#1%MEn#pC~^7JP{;xy-Yj0$MwH>a1F)%jvI)cDEMUc&$PMT zRgdKN$fZ6Hx-Rquui=)Ezo+0RH;C1=23_YUyrQ`%DbJ;eHU4f{#Y(k??$v*YEe2uk zvUsEJB^z&7?kLRjsQpNWc>uI4plvZO(*zL>_x_B!20*UHXhpn+}x42bE#5GYCN`R0&C#^^mup; zN&R=m!}~us9*NffH^$?g)R6xd=SP!{2YXb}f@=nhN3JIPx5i^xa(*1L9+3HQ*t%Ed z$8m|#c zq>Rjz@%$!c%5X_zreFo@H&cwiV*;My(@Vxv_4oudpEpP^#w4CuKlxeDe@VO_BWmcy zyjDE|+|J;Vr0g*esUm# z(~>wFtss9%fwlE7_!C(k0=mXjsP}87kIuyckJ5z5$7;r-{**q73%cl|$u{z8_NzJ_ zI1VrTT>F(}qqpWVJJam6#|fk(Z(( z5S&s#<^w=-K;oOtctxir;N>)@p4kyWA*CM}`OhI3shqf}A14|p2ez=Kv{rH4@0KB) zE#+oDR}!&mT7e;<2WG2lo>5wZxwMzewN85I?@q`_TEMAOMeoCwH+-dzkLzO#xQ^Cm zmlWWi&AqhPfC>PhWNcQXq+obj3Hi$ILrFoFd>zZzQRZt%>T4?*G}fcrhDJT^Uj3s4 z6xBZznnWZz^Kvs}DS${-9)X{zFFIa7XX-^SpV9A=^aBy(8rsR<&rBL>HT|2&yCmni z42JW5>FRXTk~Dhw52XhIW)sQ(#Gdf^?KS+HYyu5zFE#uZAG^J2{n|_13}b$o9}cnE zMotx#bf>+`9yy1nz-X)98$NIncZ9RY@|Yx5+T&*Mvtyuq<&2ZB`OP!+v;EF3Be?HC zOIY<8l|Nm=N0i0%_(Th%?Tm_5-_`O~X7pKoY#zo1!g}5bEm4Zdw4HV7@?45q4G()l z9Px_}6S9r6)!k=qtF9^xeki2|>bo4@$7xos!VR7npBf?b+Tf#de!5wLS5C}p;b?oq zPCDns3^$e|9)HEppNkU&0{D5p1Oa?(GcY`Q1An%Ga3oItW}RmS-WE= zD5Jj>F6V|Q#E25TlkQVgZjh74IBep=4lrj5%;TtqqpQH z^&_i(^lYnsQ1Oh;;2F5GT5^x}(VJtivcEeO(U31Ym(~Op?%Ift`Z8K}LsqA>)4s*w&iB6&6h z6y0$#cR~tDpwHjmEH`2#&J#kaNm@KX8f?~l5FG!QcsibEC<}$+h;1Mify@l?2|OsX zp|ONNLeVrR@6io3<*JW>-fmTk2Y?6)l#z_?#pr!wN$XpPlfiQC4C2nI<--YW!VN*~ zLqi^WF=s6@3){;kQ^wO?mMcFvwNsP02-;;6+skq!O*S&BFOFpv>kk7Dtvt;>3M|@+8W>y@${SaFz?3r8SP|C(p29@<^h6oqJE5)8bMR8+3gv8Ar zS_u@>-qyk&!Rdt%r9E)*FWO_Sy6yD{0@Kuie*Izot~vNHqnnt*GJgvgZeY!CZu0R3 z@R^j`-AA7p@mhal!l(0r3T-L+Jv@Fn(oxH?8GPqll8mk}U;7r~Bp*ES)23p&u~q7- z4K^P7S>TLx`8mHQA&b@QW>z8&+TF%zW|r-yIjO?Uhkh1(vE3h{COkj5Hl~(M57`gk zS~Wp9@Vm5`0KC>85!}6ZnE|&+0Q28jTT$1jIb4`!te!Vn6lSaDN`$A@Q*c(3Ui~G~IaqQ#oWrTKup3Qt(F>`CCH7%*N55*GACc$Z zN$vhk^7wOod|VzUn;e_vIomux;nWD88Ot(UsUPt!FVqWx?dK#lVMk9*`1i}rg#Qhb zOXb~Yr>5xT?PhFsr}eSx&?6YUw%8GJI!|jGJ%P8}Rby)jqpTD8^0@+N$f*c%8Tp>T zpOD=iVH+X1i72NZ+OX14TOl{Y;pLrS&+!FjI>z71ACkKvDnb$u0S~X?hGC@*`G+H5 zT4!)@j~aj?02I4_ErY~XYt~@gaO9a-Y6IoRf6jkS1#=4aM;Eyhc8rW=^`|=cu$o<@ zr?HxW@^XS3r16_vso-n`GoAlh-8sqXzD;`iR3BL1=kS*=59BY!U^!KPkgiKd+M>S{ z?5DAkf%O~F5kUaO{tM2+SwxRJiL)Rx1m-7~P_{A?nK1TJ8SEQ*Risa+xR9@XdlK0q zscgTNY{p!kwC9LCqK1d&f3|=3?Rly+4cNb{)KuBObN{*ezB955(MO=(891Y-INQr{ zt>C1`q9o>Rv)KXc9)sju=WyW&|1(pKJx&PI5wiY>U1+vS_>^2e*%{qIV-`=nf(zYP}< zImyZ2R{h(|Vqg6Ln|w~?7B(L;>0RZfWkcKjo8-C2|7bSO0KMSDnsmO z41UJPYr8)p_2px_3M@BdMxcn3XzE?A^b_c+3IikPfRN{ctVrv2`tGrxmXo>#udNzl zZWSaZ7f9&t2NUI!Y7)u1PXz3q8Bf_FRqY7sTx z2cABEB+1!d2^Lr z`Fv~_*aB~bR`pv95ND&L{#n$Yzkg=srj?76{o%BMq5DWH$La`9RAp^18Qfvl3O2pH zxUg^FdK=EARoTAF_2`|+;O%xlVPd&FBfKMnYH$AqO=bs*O&hb!5Sel5H-AxddKo-N z+u(TedrQ^LC1Fhzj1WvspyJxJR!l0?+U5w z_V=9NQ{rGDNAiei)<>H4FoyW>$}PC`%5`uzo4%XgCiO$7{HgpNtk81bw3ca&ALq8w zMAhE5x#}5gs>7iF7Or(%T))f2muPbo#wvUIiZWBWuY3!2sfHSS%wD;v$KMD+zsV4p zu6-#T3dAzgmQ((?bg8(?_J&&oz0BC#-)1UG6t-`{>(@Ll48V>1VkXJQGT4>Bf=jz1 zLFQnk1J31MhcG9jE^14~CWB0Pl}yE}kPIFFro6$zkjz0}=9Ol_Ed9JrBJEQG(f&<# z?G4a}t;=C#BfJ{V$|ANn%=EkeJMvLQ95e4G3S2dk>THyP=(K~Mq5nWH6VI->iA1Yf z7#RKkFU-HHg4gVBJhi$o1&FCpCzCt-bdoUxPwuoo-h05QmAZ#9=g6p^Olz!PI){_9 zk}273cja}MNs0}k*2m3dy@Ks;3*ZXAOryt@<=Lh?3VC7G%o^zyh3t*e+|5~bS0OE$ zrX0;=YZl|4TcAGp*4ikVlul#)#vB%A$pq80Ydk;isEB9qp4Yj%SK1!~;%53cSv7q! zq?~-KcsLe@9ujj}WkHKfPPseIvZx@?CMY9QhnA8KMAhQmU7NFnQ@x|+hTqR9wzhlq zIxC&ee@jt?oCIrReN#1{*59G^mH!GQy6=)qmJo2_iTwmGUk*tc;*!uy)K7FRv6ikt zBuUlw5*ZQBLPMfs2ftj$n>Pd7=K3mJj!>YGRvw5%Vy*>h~kL>-#u8bJz z(_LGU0W{M(gvv6qfW1JB8z(8e#Qz)^}#G*jSGoM`=SzM;!cF~qr5 z7(DI$yAtJg&8hb>yJT9gDULewdlIJ%WeOY zGxHh#B$GMzWf?me#x1co6)y@l_wqCd*h(2&hY3h6dQfd|Z#ars4$Gv%VMyOvcP;>g zn={>x-F+IbhVD#IiM-w4&i0R-zd-*q+aE~j~wRglvoBe<;=Xl}U_W=k1bRWaM zy3koL(cy0C1vz$yY~a~@F?=0z?d9|rkrOF#j5B9q_|2nSn8#6!*;(NOp<%66_9a<~ zjlP6ELgZB<_x1{Yh{zQD6sh%mZX$4sCq@=r)!!gxaH8rFY z1R8Pe5_kNZTP8a5vys}*cNR_O2yTr~mzpI|SYL$k5N2uy(BZk8>?hYw-Z}%>bas{% zIV3e64<_reKxsTFj{Q78+1Px82RWRZ^NfHjj0_{4pkBOs00J?A5HjC`ywmL$(vCJ~ zP>OIvSVb|}(35HO#5tY_ANzw{GlNlUUA|1z%I|4<1K9jBwO)B zrx5NQI1vY0xv#09d)ZiS(X-q7>!Z%`@jnpBY~f^G?4{6jW!FTOK!zpA$i$djS|y!* zl$rkM4NL~eccjjZM92F&^)>zh`Z{RrAfqgWLxCf9t#la0Ekz$fpLo8Vu#~Etkuq)A zdChXh2|4RbIqgwN%-@s0KRS}O>BMpB#ER}<@;oNr?Jn`$d{k0&6D9hFG}|0_C9aNs zsrJ(7cNZ$ezog&v{1}t}JNe)IwzhtaUQ$2!R>8yx9lxSe6))9h z)toN`)M;--)5lzY_>gl#7vCKJOSVS5vG31HeuySMh)QAKpPBs7oA^*DA6_=qWYV5i z12^d7(tDFSF_Ah$Q==wzY9e*IroJtycEthbgc*Eb5(_lb_yl;BS@Z15?qZvRgVhT} z&^RZP)*tQtC9RE%^4ES^<+&5OB;}kANzt|H(MEZ^|2nF1#%-48jZ5YEgbnii^i|Tb zu9`+Our+W>KmEX|5nMPMwfQe%!0kJ5%tr`Y;eE4>S)Xu^Tn>b4+y;b?3^vmIYJ)!dkE=s`00xT72S5Q&eqf<2|Nvt zkPnHGS2>k;8Stld=)280KdnQ~iwy76I?}wzs6MR&%*z3Jks)Ouor=t`Khx)!f!ioZ z?kn#$5{5JR5$9>e==3d4jbJbDkmGA~g6v7SIOBsqN~#W_<6Gwh-v5~(&A4g=Fb8V1&=*{F7jL@lV>XR(V_IoGew%X ze={|j56Q`ss~;Xuen?K9$?{>~ugkzKYu<7s-2C}i(|}3?a?vk zqxLT~x6Um2w+6mM|3|1m#>wrlSOqWI8(N z@(reA))S{jhubin1m8;=YvFs!Rvlm1*{Hw>R5FrzUC#9FPUS%_In4My!sCMbWi_ryY1L zNc)>l4xA$Ug{TnIr>Gr$?AgdnT{xhjKFH0MZu^qSxG<1UG_pA7KhpCJun#8Im&qc= z;N!y?7W+iDI+xHWa&LZ*Hcwc!RipyUMQpfYqm%$TwZ2eo&X1CRy?fNgM?VU7Ab2ku z#I0e@%7eP^pP9EZE3fl0sg!u)!2{8Mhibju93Sv!1|pB%KsxzQVG24|4PwbQt!CgY zV3)rg7;3-Z-EUXE&BnKL!9?;h1QO9a=WsjghbNHLPRN7*kG(g6i?aIvM?c^*Gq?`s zzU63|U~04P!+?N_ilX3}3k-{*Y{KA{3x<@_NZDecrC(4hD@!XawMcM7%M_PPO^wP7 z(u&LkwdB6fd7e>R`u~3a|9$=My{~&O`ku3W&h|O`IiGVLoMu!D`4z(7cowO~AA4ul z{(RSFm<#HP$g|8@S?I!sAFgkf1fWMRY}-)Sw$ih5JQ9*;B~QB{pmg{14h--d)g0UJ zN6HPmo0nHL_k@{Cn3HFeeSfH*pSK$~tYO}~+xYLGj^I<^{z3TeqJuk@a_a&f@>~S8 z^b{NAhG2=sxmW&ubL;MFax(Zv|*PIRRWu=7+mHPkbXUHkRV9~VJ&Q*VF2isu?z8~!|T-H@*L?B;<;3MkPwm?#G?p0|-W? zqZqI4!OInErXYLDrPFczEXKNIkxH!PC8*_6Hbk!Q%Hkai-UNB0`gtO^VhRq=-Z^HR z?Rh7k@`m>EL~rsgJb;ti$c@US$JtIW_d3!WjRBVvk5=Qj0&g1*(PP&*xICXl&W>2U zV>ZHqwWTU~-Dyu@5JJW?GLaiREBmoX#%#oEaNfu*aQ55nS=o!*ZKylrS*e27w;wZR zFMI!^xpG&Ffy!MG1N}W$mi*9wn#mg~P!fBc6rPZ#})u&~>pw_T+lG9(F zUfC8|Id%5CDsL&%t<4GaS)Tqu!t^zPG#Zo3`6 z&+UubZhP)?JLIuo3URvA>4T#31y}GhLb-H1sJ;IAyHUKd7_RwN=mkBtoqVR#2Yu#K zhd>B-pUtTg-&LLd;?!5n>Z|;{!dfwZusVGDD=9mNl~1!7%`|yv46wzZ#KBc+|BMw9nYQS@o~Hc&1LH=E`D_ zYNYwpA z4t*LQI#`iQ9cfEGQq8w}v&~plqGDN&D3|Ym`{Dr0N##?Uq2s;M33NZ0NAZrjC1FIb zdmswa@Kib@Q5*^z_8=t zkAsSie817tay}Na z-ZJ=rXTPVQ9#P{t*jwE_1tK4rg=ZVzec{}!``KH{?aIMPk&EEwN=9%mA6cjm;v=hT z59T8q*;#E83*!zG{rvCYkXZ59NbbF#3FpuV*?c+jgtw6854%k)6Ojj2dBz+P8^mMT z<}UN?T#RZG9&N`0kzMEP`v|7oWqw#-SjHS$&~mZN5_w>@93Gj!$U}H$&a;P26wY7{ zS%*&umfz^!<9K;}_a5b*$%kO)i9W#Qlm(mqVp(9R+dt5cYJS9RaHQvf?fo=sWp}st zFI(Pj@0g~Ag|Zp)EVFl>-BVD^awC>K(!w`jqy`=u6ovMje;xY?MJ%(0ue0BkFXQ*p zaH&6y#(Yb;slIuWZ7dw+uC`%bk@$3*(hacTW5(_V?iK61Lgv|XirXIb3(PNNK{n)W zzuhmRL#~;HY0mBb?E(E+%KiDX-09D9PkASVdc%UeqxyO0nLU%2dnX_8K!Rz^(o6kT zpyGP!`TP(Gg`CzO`TGUG3LN>OwIX@ZOFj6097Z{$jg7~-N2G+^Vzu{4vnR)1a~!>| zZvnlH*A}r4$1)Mm++zh8duQ#)7LElKfA|>ei3zGX&rD)}D*EOH<&Elv?;vAd?TIcb zIOv^X_CywY7h?Yb)#P>M(n}aN#4;M;9ik3C%4GZJ;9XV7z1`^~)nFx?8SA0mUJqfg zKXuo9_)MeuFpmD&Z1{MgfRbU}JU6h!M+f6Ae z$h=r-9&ny5#d`1jJuvj0gp$(QdLDQ9unb= z3H4@~y>soJ!sQ^vD8!o6%4N)3!BYHQ>ceL{Vg+T^%3ToGJJY6=k@HH($^87IP|I_V zOEF^3KF?lr2`x-o{h&%kA7JaAsb=ruAjra9>ggN5Z|6@K$b@@0S71-{3aeCNkl)>( ziI-ToVwJ(KT<=+Vh}o2K z`!!5o_dOdsd5?;vu(;kn>37S!l4TZ)VLo=U@K~Sk2LUOTU%!<+Ihg!2ol*BmV6&ap-(wo$PtIM+QR z%$_Osny=6uv+>{_{;csa=ilcSdl9ubzt|4lUGocOA@a*p_!-leGMl;|y=$0>&ocgv zM=aF;ibt%l@9>C?e|Is1?<4Cf@);{ArIye4YCLhU0RK^GM%lfg*ws-k&w>>;r0|P3cb|4atr>tHwsnYQbOpYd zg};hH;vD?V+J*-9nF24H8~awj;?fsuV61*2yNiT)w&mfs=6B|^U@o)`i$TxUncmKP zvDwtCW$MkQUTgWSrcB$=)WL`rECLTC}>i@V_f z1uBG|nLnlEk6E#4E$&!@^iv)|nf$y_8n}D?!lpbFzTZ{K z(uDU4@teYyrPu({@ZV1Smx+)y6tX-k3z{Rh4TX#g`K9a^eac4|yrkrd^6;D$JUQj{ zQog(L9DDXGY$K*hT&PI$6Db}R&t0MBe#(}ofBuYi&F-F62ama2Gq?uK!i%h|=9E`= z$CHFd>pg?}c?Jj7tYt5TVwV$}@8Tv06Wy=rhl+xu648d;LxXL*>DczDIgKj7SA{L{ zMyGe8*_&<0?w)iqJUT)e-$en*=u;jpKk5zdCw>&l8yh4F_IY!9VFBRqvk zj2+A0!FHr)H|}5esbnpy$ zU75OzQXg~oY?~2Cvuzd#?|E5bc(3w>D8uN-#rH(BA)$wOF4IVKZK5W5jx@;))9*X<(e!;$e-Kv zOf`Gv*lQxtkpEBcYdFFa`4tKs=NHq6qV?WVruT9&`#W3{yI|HEqix)b<$h`^AyaEMg@6iV-{KF4eQ4y zmkU|tjs8rz{3q-Zc*fv>n6)iTCL!+5>MT3M@kVYR$v0%(v%R>vfo~1n-i+_z4!*4qr<-xq>AfTS~{+YhL{oku(mVlm&YyjNsd0Nb8Sd_lFUSFnEglU4hqu zq28fpJo)M=*ushi9hz9Mn6ir7GAp+-dp-tx3N~??eiod}ZG?8gyi01&0p+Gs%{|y? z-`k{+g@Mi_##7s74fDs>LMxdszd*h+k{J1g6yQ)Z-d?XMzl_@VUkAft3>Jg&6U*c7 zVCEwj??PNNsPeYt+t;O8ED1k1Dd!q&EKG-4xwM*9Rd$%{#mI%K)Y{9oh0AZX_WG4K zFnjiSmVz|U;->!M?HDgHwkE;27+*%Zk>{ygDBGTgW>qBGass?_ve;7)FA?3!^VHrU zVzw#y4U0c#AuYzodK>aQ^^!B5*M$r>i)-;t?%Wo_`kcN#?>0##USDSM3wg_$ghS5) zWO`3+I8&BYawWW>kmXldphDVw>$iqNmS;$l;}==iv1Y)s$PzU#*kg@2*mu7mpu$>W-zl&S{NRI0Ro%M4GN=&!W{9AXXE$myzO{cKe6|gCKn22 zc#CCs*FAUSeeZSmM(kFx599jM<867zKV*&(f+w!Ln{H+y@heR&0c@+Xn{>5`1e4;f5t3G+IqY3ykYvp2wUt! zb;kx1WN9Nhb;Wv4QyE;DU$0u!bbBZqJQ1CGdEA}4dc|-2av2HV_kAA}o;SCJ6eNOE z-40HDcW|o4!J(Q!eu6(G(vlT5f1p>q8-+J{7yF5C{s|M=9Zq2tt0n)ml&VaHzz(X2 zIo&m173DD??G0fJ285 zK@^?{zA&O`U~ZGbu)xOOR~N*#!YcZm zw&IQJWJl#Tv!=yvY2+>Fnho1 z@9sjOv*o~S!ShA%8J^PoA8+A}KCiH>P>6xhz3=@o<*oqB^+o=kBbGlF`g;z8)5CHv zdFrL+^aSt7Jzrkh=o>%AY$vuxfe;kGh9y<5>XprKOPEzK2)L*54i_4WbeOcWxHlxC z{BvbH<9mWP{PcLE|IXsRt6i|Gg_5#cIs)S#9hnIbkk%1J>fx743pxTX%__1>j>c_?YT? zGc54-4{NP0n}SaPh{pG@xe_;X@K6qyrDMZn2}>=%EDXsrf!$NDK8-V{_4OD4eXpAz zDq*P?pIg9H4^Fg|5mh%LdaH!xW+xNqV)AXA=y^tTsu9ss+qpYiTC;3&q8W_nz#Ssx z(g|p9cL-UgIbj$h+}@Z_eHS6)11Idr2sbt+WH&qRgvj{A34e$E`l7~!=h1sgd+)ie zn1t2(At0`)fb|{!ti-wh&CLI@#{SpdMaX!|37=+!a~l)pf{?RSEJPF@C!EX(r#B`X z&IlQ6#n(wNc5*^JBOKqD@DWDHxO#VKHfMxG8WXbTCrTJs?=I0F-*EX!%+HWPR`=Gx3%`fK49tH?HT*L} zJ~Nz>46~WxfMiHzhV7DJ5;JU+3?rGLNHPqB0VRreRCtkNcE+p^=iboeF$r?tU)p=W_t!FpnU#|&5?3`Q^~!TJ8HhQ>{+Pu>=z#SFAzC_`EMRwxnz-Nb%X!-bmXXcT3nev|Yn2hvi<&zuaQ_ zXJc2ps%v)qgIi~KsT4Qe9DCtNmzu8#^|mNrdR*PQdZ`@mOq3L%Vk4NJ+yZ-dqC&>Z zm}JqxOE2N(6VetNQz9Hid}X0AGdj%hn;r!5r0SQkCssJQ1$xm~?%IG)MS!6C5bUdW zF-M+O{$?1&vH~C?yT@}fH$Z&%@!+0OGrHo2aZGIWm!K^uo9G^e2eR<75_kLjdcobg zFmi9qjL?SM6Aifss*6D~8X;Bxjv5buG2$V zVom7w8l|U&x7$XRX%?aeBUH&)264=j9^IY6!uHp*xA;5WZMKv^Ju)bc6j zwiMETmp!}ZHE&7CA>PA)p^yg`yc@DPwOp!O9 zJz}bIjL1W*;BC@`#~`KwRSMIn8A9QhTD*_m8~s-Po&c1B=q39Icdzlf6TPhVN0&cMe2`QJHb$IRA1I zdpfFc%tl;i#2C$5`*6%_5etU;?x5r1p1F!k4!?s#=eEjQ&~9T`?$xGW!ZhznzAX;V z#ABI_mWBD4fMVat%4EA9Iut3Z57#W%efkFrk-I{uoxc(EK3t`Rr*A#X=VMDQ ze+F8wgQXn;%~ETbya(^TgyFBG3i&HsScE53n6V5(gF#RcF2tbs;ry)#4+xxy(WMOS zt)dAd^|sr~^x;9!6Fw|gasgeRCzd^b*5H+Cm?FXJWn{u$ii2-a6?P`}Zcc4L*KFkDz)`vFq})(0}P z^yvXlZFMt{Sx$MbPR&mA9PpgMrSI~JNVZ9cHy7C&YD_imXDjMXK?J7`QZ|iV zwa2(35@JDoX3kM%>F)g6?pVO*PPH88bwT-RnI-o!-cD!VG|zoobMVp|SoMpymDyAU z4}M{v87kIu)wrL{;=bgm8&fOARx<^qg=DjGt~;H7oa(-z!K`~bBImut=(uWky7l*`Qe_(f)U{1>kOk?X6Q;vHCcI8|5YIet9(vZuW6qUDTd z|C~11^}(YtNG{%B-mP3(kNz;KhKYSO;&4On`pVU=6)PHgx5e1W)F4SENi|DqoTQGI z)Jc*WDyeo!jgi#hlG;L2he)bQQuUImmehWd+EG$_Not^^c9qn4NsW-y07*@f)W4~zIcKVXFnjTO_8e#;Z#B00+e+raz(*@Y@;;!{4`dV!hIP~*0so` z212_PxdMUE$BSGMvC&bg=**tEyzsLEYCKSD zDsqM8%uCBnS849`(>R3C?A5LaAkU0=0kRgkDxq!}Smc@t`y}Qb8#PRY#Pm<$iJ(;2 z`NEhB{Q_V`c#%s5ghn84s8!KLu0aXe2^mS5X~{m~2dGu>djU|5EONz+K>DG^11lyM zxdta^Bxfh2sUlLRrAFuGq$VOObLZY2$g-T(uH``B6r>$c11cbtnen#)Zf^lwV2)vS zE~rzH$ES*1pTWKo_#FsvuXY6kp+Msp@?c&HtXPUL^HHwL;1~L`wJ6{8glUyx7z zoSiT`nHc-sD2BM~gv6Q2*(%V{n2ebjnR7B!?nZWT2{V%=8XA<4C0pz+RvV2waSI089rq0AK&V2-W|a^YWmwU2$ra zYa!*~Pw5x23CGYND$YZH0UQH<25N!pz=Qnf!M_jjZ=?PKq3@s`yo8RVFIe%@CVcaEA}Alz3>Cje)y>XJ)k;(GyrrEet^I)KnuiwDds8u z@G4hjCHx+RJ5U9vjzK*xy0iF05l#&Ja6R(J(ij7}c+h15wSWrrSwP^|um`pP>XQfu zi2nwB0o35*gZNuHRph&GZgj8uAV2?KvKx`9ip|W;NTLy$IZRbWWT(!?05w~O8Bd02 z$M|71S{PJ8;hE`KnHY#vF!fW7$wNz92-Q)uW27RGCs&n*HH zfI+~vP8df!V~!O)hyYa(pR9!?%}&Tjgx|YnZER>>)2GNaH@L_(6JYvLl4^k33Gf4I zf{I)p0q3FL54;aB+Lxie2K#BiP#_qP0hi&n6_^6BG~WAnJ8faH6NZn8R*7>cX(l-q z)53q5Gx)+O>m1stvO`{bbvtTX^-yK&%D^fmDf_jGZ&}=;x_M~xqGr@At7&z>^nhAL zo}#^Ci#$etRaPv+zKU$S;1={keUq{#-X`Ol1U0$gU+Mp*f1dv&f2)6I|G)jJ{Py{6 z@_X5Dq2F}BSiexe0e;>5TKe6hTKa)b(iikOZKZdpm|msl=^0u~b7>aMq-2^(6KM>^ z&@dWI;p8McnaMy}dYt-GUkak$^a%B!?({HqrGLw|FMlX90$AB$f}5J*PR`E2JjXW& ziV2I0qo@(FaTGgp#9$g7HE0m12jOFPVWSyTLANKkDqjr>W)8PnHtWpdxHb%P6wHHl zKqsJKc#-Q0Pzf9W-Ul9%P$;Rhp-u&c0D~i<2~Y*yHxUkI_P1zo^q^S8Q#GN;wdaW< z*Pp<*K;KE2i%cwXwSjsQ=0so^kPW+Mfp?*Q33wj>;c_6 zU~rt40HiZJAu~5U<@S_B8%$APVVo)`Dm^PVEhpLM0(;RynlGwU15_&B46~DSa?pMr zyoRXgm}nZL9;8+iw6W|b3O|Dw zSne7v1dz9A4PT|j7Zka^d%DPFgIWhw`Am_kKM)B_26BNy;0@paa0_?`v@Zfx&@=xG zCxL~)E+7T)*;gP;rvD9S0A7W8GtdDD1Ev9s0Y3oq&Yy}adF`y~=TzC%?fHGodpW$J{BFBXd zA4ahgBO)lr-JfFP0M>Q;766#ired9&EOzWZTlmE~hd~u2Eqbs-iH=aS9}Ur-gfLAX zRo9N~+tNoHiVE|ebZ1OYgs1n5T;?rBu3rJBZ@0O~bp|TaGsu7)zyZnqX-UuQg8)X; z5pMPH$MlDwt_Qr5IS1+!fDKqCg^>kyJg^bKA}1p$Av@_V_UJT?*pq{73>Y?mqI(SM zLD7%mXVCCCiX1g7X_y~%Nn20_`O~b=RN6?7a=vWGihzaKl zA+{a@u#(FK8+}bn8j6yWQr(%^ygU##3ttr!mYzB-L3Mjo7R+PiogLldMB!}J7aJBG zL$NWDkrX>Tas)9V)&!b2|Pl{h z%Y5BUfqkxf7RL{wxi=iKr@A|&2h!;8ril$7jSPp6X5&CC${zs1U3m|_C!_qM%Hf$A zm@2u^)w<@f6}?vU2;aV(j?0~&fOd`08d>t_9`ak|Isj}276I33m8*mQD%UOOe*#7T z2B0hOGu);@4Q#;v(ti`b+(J3VjYnR_-Xd}UWYw@#H}c1s5EqS6Ts;8e z5K@f%jK_A7296K1=Tje5;3`*SYpm0O%g_rz6i^9l1(pEGK!4zha+PZh)aRi7caaQQ z6bp?(n+8-te8DcYOSJs3*r{W2uFoZPX%jqL#Z=C9Sj;Zr}4ut zry;n6&vxr1RZG2dR6%nRa#X$1ArgfdkuN|8^aE}hR=JR>@u=BsU&+_8VRmtEs#Nqu z82kaf0RgBFUFA9t>;c{d@`35VPXkdlP!CBe(=&W@k2y^;hd~W$SemN2U1?Ci{JOlES^l2jR)ZdGPha)v59c~)+6 z4r`|=sn|#znG5?AReExIX7)Uan3s`|j&0Gj)Qp*_8PilL37|>3n@Hu(RHbDmB&l)| z(zC>^SSb+ELNy)bm6n`yFI_Ar_a&62Cp$SYb6Q5~e8hk`Frv!MPUb6sas{gA+! zL*@tj(ljO`!G$72CCo{7gIO8PkJ@wA%okQ6VTz%g= zztEzr|Ch$x9^!D`g9b|DG>scGF%0@1NOsoit6b%4(Z>TF|Fg=q66Vi=uYj`vty$&j z1vr6JU_R_dKwSys!p~b!cK{us?+LfQP)7h)VJC-bLzs!cGtl41C2Sbx!7>!+3#foj z0A98tyoJW+SZvP4#EJ0&4S`?OR03NQ#LvphD$A_OP-VoY=cSd+q?w^J@>0vD)AZ13 zc`0SdlpLCrmssUex#APb;we6KYVj1B5<0nf5={zyqIe=rjGs_Ep2o+ID;ujCn>VH` zEme=})1C981WlsAbchK{R@iys{rQx?5qSbS8>;LymJ z@c6J5&N4@!J=D6zOs2a%!z6Fnrc?Lc{j}zgh@mlKC%LAj=geJ{zwEh}iq@=q>)kC| zca)azJNQ-QiEq9=|NVuZYcBs*d*$l2y6ZP?{{0WT_=~?=xBmJ2=8fxh*REcv{q1ti z&lkQw|Lr#?D!)3oue@}})-CV8wQfz(OV2IKUoE4jef6#g~V^I(($^ z=&|D`zCQWQ=`-J+J^x+R4?q5NvAX7$%fJ2(9{yEVf8*vqx61kk(7B)hy76cLb?hBL zrbhy3Y>xoS?H)iYy9Lm;E&+71QvlU0!8dCtRYZXBITLjQA%>qc- zG=Ox90Gc3!Tay5K!!Lji;ezR(|0t;Q-wGOdLqRj@74*_I1$}l^K^LzmDDV#jS$|hh z@~;Yd;S%g?6jbxGg4$gK{RIVO{h**VRSG(EUO_j`DyZ+b3Yu_QL7s0EwBu_9{c>DE zU5+Uzx>7-l4=dlq4=L&lEGX<6JR8akP z1wHxGOH)wP z30_~>Dk!Xtg4VWH(BDe%u$6*#wop)~<_enE6y>1+Z{*;sprD)n3Yz4n zpwAoRq`D=i{J-UN@rInDuFL7YIytqzCa2u1ayoNGPR>8%^akW9oBt-KS(oK>>KEA6 z$mz|W<<#n;oMvB;)A=9dH28Zteej)}I-i%*(z9~9tqn)PAL$R=gyq7B9-_nH6$s^1PfD z7b0G-oaQ|%r)$fQ{%7QLr9e(uOXc+YQ%KJeIsLj=PU(xFE`a(Z@;(o7&y~|3v*nbN zE2qD5!cf?aaj5-%sy zR5^V8_TIuzv* zg**?IQ~V&LCqhn7h9ka#h$mD|y`6H}>X1{oT~5cWa&lRaCzG6>GRmoq0paN6WYB`Y zYLwyQa=O%CPK)}XUOWc3U^$tCD`fT!K%H1uJVPgmr(3+hK_ z)SZrUa&(Z>*X_WYwsMlUk<))#BaA>f9c?A2nJwicYayrNW+=<1ayqF%J(HsxWpaAE z3G(hQ$L>DLp+QF7Zpmop-!dA1Q$}^yWwf$hM*2D#o%l;eIag)W=1&=I{X<4^wKDqa zHyOS1tBlN-Wpw5j87-)h(Zkg;D!(YBq@QFIa6v}z{ve}~-^=LgcQPtEFC)h}8U6UJ zjFz2|(SXwk_Zt~Kc~V9_zn0O#<1)%RCZmo=WmI-VMyZEo)cPx==Szh5g^XGrl+h;@ zGIH&gQHy=h?}2`|j9Qh02A82yK9|u$r83&}sf^Ng%Ba&08C5`JGWTN{J+e(k$3BwL zk`HC1{y;|GZI;pV@5{*fo{WBfS4PF}$Y|8tGV5j6z?M(X|(3^xg`j`FR<2c}_;hm*Y#8 zUKxcyE2Eps;O`k3r9UmBM+;*HipIu<+{BcnlaGHM;}jvvp>S`hjM-lbt@Qt zgJd+fkBkOCDx(g)Wpwco8GYPSM$hz+(KwZig1XD-MmLmKR~fD80{@+56xIoGcLZ&F z)Q@&DDr^g0wLxAVl2OyvGCHS}(TA-NMoXl+1q-t{2EtCs5)wfkOTgsMA$}u3i!7$R7f| zTPx5rzr*b}ft=)?Qy#gKIBhb#>0u`4don-=L;119jT<>v| z3e@{Efm(hl&|kQma~^kU_J4vnKNe`!Hi4enDp1--i1$N*!afk_u`L3%-z<b0D3AqCOlY?|-3-tRefvU3v`aV;jZ!=H_(oxoF0v()*JkJnl zS1NcqU7&5#1o|LFp!brIh9rUBNEE2VCD7UgfnJLjsA#G{uS`K6C!-uE3H1CED65GA zEuSE;n+x>pIAAPzHwK6UVu8`XDA>nl*!T~K%4*Un`3D1d(st#W+}RKia+kaJ{}YbKBgJOR85yL_lm z0(QV3_y=}ZfL{UTUJJVcmB=SB5ts|S3VaN70Pb6#lHdQ*Kb))L4eb9pzl`1=|HMD0 zHuit7xv|^*srK1m--aFP)3~s)k(89+PN0-@x60>A^k8|0Xa8@LXXt|6m5$UN`zvj! z4R%;sV~0h_Pqgl&`5v8-C~sFZHfZOlvU4+Vwu&7$ap%$6j8v+zsoCz_gtSq)$=UOy z-D9@9ihXGu3%Ri=j7_zKq$GB@uIin|!d5|SMil+b%1O>m%EYcP_VW_lshJskBQ6K~ z!)#ld?e+YRXtN;nnVFcGrot&y4)ZMeX`KH4!=nZc4i6uv)Ao-X(qGp?=kg(B_5$tGz1`K!{ z|EDD;_SX&24>0uCs?|odMq}!)WtNZQI3y)?+T*D@v+;2R-Cqp4Kf)f6NQ0BzVeZWI z5eezZVXB}6X#1&h@L!B8CpcKu!=YjaIsgCP|79FlBmi7qlMqzqPw~6` zsc5f1#Vqlo+B`psndwJcX82Ja^r7=Wjqgnc;u-cWPy108zIG7^a}_`^7vp`37|>#I zO;ykMQGA*omBCLfUZ^N$bTF%*fc@M4lmui!Upo;rzzXQAfGzdF^Dz6Pe*#q35RcrS zs(?_0U;Bz5RlW#!s4A#=D?tAO(gCP%A#6W?QeQ_puoV`11F8&pxd}JHpSA$Sf59)p zj7L0Wklw5WUGd+Dqm4fW0%Z>&P9^vNbxSMw1>&0{{+4h9PgKMFDG%R(Q;&i<4m2bE zX+<=`fEo%_JsW8m3!2CLsS>m+82xbM6>2R|3A!yz54&O@6o?1Ph9Z7k6DyvDJi4J~ zAbr_LYcBGa3EsnA4ZF%5q!sR}bx3D1codItN)XO^sLT%fV%X=wz6_uQxB+=U89*+? z2dIEzpo-}ep#rKTe+mWifHI&8P$h#N$OGo1%oYH{r}@)RU@#B`%!Az^s6&9g`~2w` z@H21=Xt&>=f&l|C7?=Re1m*zG0b5;BVle3V#X$3_uhx4oC)a0KCjWD}dL5 zcYqy01@H~<6YvMn^Z?QgXn-(aB=7`~3M>G;!0W(fpaS?7_!+ng1RV6I_CR020mK0D zKo+nBcn(+%Yyx%xUje6qpMXCB`4`AD&~=m4mIU_cAlfCwNO7z<1VrUSEp`M^`a za^Mx91b7?R4(tXF0p9}R{H6&BSi@mAi~?}#(F`XbEvO|%Yb8eQ))>9pU=(kM(Yyo3 z^iI^7xIWIe0g!Zr^c5r?b)<*nqY=jj zX0ni#Y>qngR*ScuF7_B~lV4QwmMPAx0|Afb?Y=rBeoFQWj(}vnhw%luNT|4rDXu z(R_N67SKXk1X;~IT0&1zJ}spJdYYc0W#pk}$xF+r@XqlY#^0p0G$sLnW80}=iEfDQ z`b-h2IqcLB=hQfZylu%3LI=(pnVpmhG0nTJ2W4lbhoz+^Cvtn2dCm%UCXN zGL@IJq~|5kNDm%1GWpoo$ck~Uk#TgwoO_IShXD5n1OnSe;V?GQ*zl>m?|{mC0I1Af z%=c{r@(sNh|M29DY3}Kb%&bz~c8$$~=-M44Yj=_}YBrjP3m5IUbK^$Jd_y(`*9!)+ zr5SVQMTyn`ra?+5Bax@nXBmSQf`wmWy4xk)$gfnCJ{w7;olz{Eboo& zP9^b$9Lp+3V?!3I7|i3)m-w>8x}&LgXUJ!DJA&I5zUt4D%6$2f$|=N*aBbskaErS$ z;j_9shDI3>33&2vYgyuxvS&|CNKHxM8jJ$WjB6)c%|_j0<{Wntq*AzcPQq+aP0iry zTrT&bC06)T*<};1Nk~tTG&%D`O;S#}s7Xo47B$n7B%5h&$$P5L7se+ZOuEJ(X^>FS z1|6lSaZA24XG+95I>{!-=al1~D-uJJSkk2XY%)?so4M(fo-|dGRbo0mKr=gtIHjOU zaxD|!VOH$^?rgE!fH5l}BPThFIiQ=X70@1d7zhHifE|bc zh68cHBp?Y$1KhwOU>Wct@H(&ocpumf>;?`2CxI&97l8f!KQ&#D-AqbiyB}e=J4@jh z$=$qTp9}LA8kCwLIi9;~mxL(Se{^zMazc(sO!ROQY0rt>`i0OOQ4gODADtjc)MQ*j zs(Vmob}V`?Oafgq7@3}?PQ`pNGb5Qz;yg4p0ry0*-Sja{6(=9m%x`LHri*B>e}W4V zeH802%~@!we@bE+?tQTZV@gU|ZVq+~68%%ACA$-8hJOl^v!pct6wEafDa#)<7oG7e zrouN-Mk7?AJ9L;jgYno3qziT>b`)dbkr)cxEFKFM?{;Yjem#@;#YB*px zY&c=4GW=%v%ka0MiLryR7bL)7`l5A%^%Lu1YnAm+tK4?nR&5(% zpJso-e%xMX@8Ia=&^fG*SjQyCOvfz8V#f=P631JPZH`YJ2OUQo-#h+t7(<*P<3gSe zSrxJ?WM9ZHA%BJ33Tf)>=QKH|JF}g0olBh0IoCPgc7EwR>a2GD>AdO0Vv|mxc>LAP z)$P@N)bZ*}^&<6h^*ZqJOZ7?hS@kXOv!fzMK9Ly+&`+57bZ5XXsb!%k<~< zKkFOxZ44s~;|(c>XALhHJ~A9Kd}Hu}du7Ix#y^Z^(?ruU(@UmRrjF)6EW@pt*7s~@ zZC7ov_9yIn9hHs?jygxDkVhb$H$G%~$m)Sxs@>bKROs>{_!)L*NARM)8M)c>fPYg%i%YkF&Rnt_@znw6Suno7-i&1FrU zMxpJX4bnQaqqK97w?gfE+K;v6+Jo97+LPKU?M3YsEWumq+UvUO47w=YNL`{X3$^Mw z-3HwUs99g3PW9C%A-}KaH|sysf1|&wR~ot-k`0RuuNZn6M;NCWml&Th78%zXw-`S* z9xxs@{%D+Jsxn%hXCG#idZ_F3Wf0}QYTUgp#x>_E!JZ2eanP8b^nQvKUdC~HQ zSt5fI@%t# zJ#I7D!fjEuakj~}nYLNBrMBm6FWKI;ZM9X{D#7C)Y?p0UY&UIz_V#wI-D(fD54MlC zPqu$x|I~f}HSvP|n*ASpFGpX;6vq;W*YS#Donw>Z6Gw&PxTD%}!_hXRcZe<|JR~+G zF(fBsX~@cuFG3!7j&(lieBb#QYF#bcpr9a>jZEEL-B+X4hH7KADcX79@gD6dZ9m;; z-3;A&-RHWmb#*#H-&)_3x6H}<6#Y|ruYSFLlm2u4Uj5hlZ}q?H>-DV+Z4Hka`WdW- z2*XtHcaCA9VTEC};Xj6QLxtfh!#Tq*hCd9~41UJJ#z|)-*gDA_pIp$Q(v>uJi)xu{FZsEc{j?V z4a!1`(wJ;Xw>)X_SXNoyMp@{sq1LI^BI{e$UDhwG$E-bU8rwiytS!^#vAt~D1itQb z{OJe?c_QSgkfM+sAtytwh3K3koYS0cXTI}U=O*XpXq)Gpe>iWjIvhh}2cKH0JE$L1 z>(RdrRgYIsQKzZ1QJ+2PSJi9OThu$%ht$W^RqBiCtLhu-08J}ipA8zDCQ36>VR+Qc)($Q0q4sVvH%qbmKXe;N5cdTJWW##-y2|c~%{fhtrju5s z?XA^nBedhR@!D+dT&+j@ytWu4#3$NP?P2W+?N8cE;Do=fjjj`Tq1J`yB2YWW>r!-S zy7{_1wDy;E>vS7+J9N8rM^Im{>Tc))_3iaR=iIczy=`2{1596iDWTM*iGf<43Twy&_Sw1142ecA5k=;jDR9LBh{1CS?VR~7uDM^uAEU{Q!6!(YRsDPni-m>G$%C! zbwkmEzM(s$JB^+*NN>}R#b}YF&(<&0FVnxIU#ou`b!(6Qu>OL+&|tF+vt&XB`*q7^ zOPS@UptsA>lLfa*51~~X0{ErCEK31Ew`<- zt+So8{c1DWr`QYZFWQUko9&;WXKU){>d-q992pL`<0;3Bj*lFhQQyef+S${oa}IWn zM~$2B^g3U6e&eiTbu150;6X8~Z>rm9x@qj1B;=(StxTo;QCqK#*3HH!SdJOS?`SEV z^hWeupX<-+YtT9x^d`eg#s+h1%fpsl7K6oR8EzSENwlP*Z(okSz1Z@mWvgYUs4zjTUT3OfX1rd9r@E^4b^MKJ9|NqcDq! zziF>)o9Vjf`e7C@LN`H|q{~Drc>!(YBh0mqfD=EVbi0BRG5R<3-|4Sltm|XenjPk7 z^JH_nd7-(`{F?bA^M2IjmX?m_VFz2{EGd>PmSNU0$aMk6wfC%Btrb?m_9VuwA8c#v z`|OA8N=J}mnB!+`f4>$|8S-<;VCO#PS?8~8ep4*g!=~!a>i00G`CDz&Ow+u9Jj9{B zZ^uYJQJ0L7d!gTt`uBO;{RXp@-}Tq@0fttFZWwE{h8V*t z!#2Yn!w3=(ARA+x3{dv7~a|1+ZtudvK3(T^|yDh$D(Bx*xy2VmD>;7zqMD}uVZUp z;b`S(=jeht;26}=62~6LHODg{XW4DREqEsgecfxC6PoXM&)!TMh`#MntqJp&5!yIy zl6Ho6K4!lww6CCd+ob(WyIXq;vp$?6d4k?XTEBw;w^9X|O9C9UTK41Ht=gj=7G_j?WxlpymAL zXd2Qhq(AOAj1EZ+Srqa<<~l!y2+m#@pGG<-IA=H)VSL)){KWYitBYks9Z^nAv053V zj#W=r&sXQE|D)cjK7i5tmb#xtgVJlN)$aL)7 zH0e+2f7Qzjy$r(*7Y$bp4;h1vX5%odKlXxm-x@C%Wu_J;jcK51v?LzXWC@? z7&Dp6CYiapxrcd>c{t`X+2%LQo6U#JznE{D`&jIlTTZjgwk$!d+-_-OHKD(WMSptO z`iJ$3?H`-W{*&F`(c=Fo?@Yt1sM0)sLy#Q}A=nXF0!EAwwDvkxb*c&^LIjjFB1FUx zAPUlHWD|p+1c-_XiWoFVK(^6{pb=0bi$W7w6cjK@6qH2-x>*bo6_I6r_u9`q-821V zraz94kMRR)ZqDMCbBvczpf`-Qw2|lp|6(*XZ!&vwvUAKlbDTMm#PTeY zyOXIsYbIFNTa&FN)=8_WeS>Y--Rz!rnZ4CsBwiO4;sc)Gx8k&@6<0Woook%7PG?7V zGMt`HHZGj+jK!&*a9-xAzT<3n_Bkh=^G;p2k=vYvBiw+L(}&zX6nz`-&UY8P@4Fk_ zPu%0~Iky3cy@O|vA*XxadS|>QvW0BPbegg|nS7XhS(eEUQNYjTSE$5kd4=D`SNuNy z-DLBJ{USVUAwIs^ZyuxtlY=FAwt`=G4SUg*?g{S?|4bt+C3SvCda4O8MLq3cB*IEQ zQdeoNv{OuFfHIC&{hqQx*{vK?x1|4RLkex=a~-N-Tqk`kYx53MB+?KjTQ|86i1vzz%x)M6B={aJIlxf^|0 zNIKkZHL}y~4Er%s&-Zo)lQ|hrT<4r67hdlU=SfX)u=5MsJI^*ZZsYt9RLJDx1r8@&=xzCvTH|XgI^6AwZwnLUqlW;F=&M z=oH)%+#ZY}Da{XFBjaxkYMK3J;dNoh&?D>j4~K+f!ou*?aAmkF{4zWd@|)g7vUui= zm1}6=LdhiMk5DEkMWm%gB>Yd56G{_0_!4!4dKiUB&|1Y(>mAwy+9d4>n8sqQTw6yo z{YI;Yj^9cfeMB$SD@aoZVwto)zBU4$F~@kH))ZCiCMdOG4nn1;)0WE356u1MFXmO2 zYyC|3zQ=ye{@6|s*NZ9QMX?(-)ltxgog(K2=J+i%bQhWH$5@_hLhed&Z*mR#XQn#< zjxo`FlKi!pceB~8;=ROs&Ahgr;&t`HQP?C?v?F;om0uiF?RA*4L37qauA14nTneLQ03uu~~oFh(+^Rv^8RG8uZ(Y-sS9%I~M zcLCkAoTq*cezb~d|I9l=m%mE3Ml}L?2Z=XdJ|bt}Y_H;N`{X&<&UgGSeoqo%k^h1} zAC?peG`LD`@JR4TIhnQyH_8J z_RfcYY|%fZ4;?4%b@+Q`IAX+^ZP3_&bdY1_Gj)s2^PKhvt;P8MW^0di&^l#ZuI zajn629zFaedUyqsxX0dWpRq64^+kdZq{TZ$wz!|>GYyjVuJ}k)i8jvlWaz%=#1wRP zD^%?lr;d9qnYj-{WD*nkEcrOa3upoTz2V+iRAH%C;cb#%%SL`n60yrO7>K7m;y>-b z?CB`&gpnM$Lxtj2wGJo;X36wG3S_Bolit?ue~=_PpdS2%Qg zSl3wGWsgzcOfyw86UsFSM~Sk-ug&A;MY9pi@H!IED65pVci6I-l{@T_Ov*F%LO%5e zkcZv&0sDykgI#N1ChsJQKX4v9#y)>9ktK3qiDSeBa^w@@c~0q4v0SVdn>nr3;(+*G zoQ#p9%c7ps6k5@eR(J!xWH^q~l~jEP&NPA(y%37Dg7bX9`QAB=x}J9~<4vtO&m-N3 z=uwZyChBc>y}QZ%%&m66hb8^s)`2Cp@LGClUT6A-@7?7M^d9g=d5?O}d1a8Ko!$xW zEGl~yZq-(%%9~|~#tx*5jFpq*N|Nn5xt%uhojfBi$$EaGpW@$u(uUB@91_;!aHXaG zauoKAUrLHtORoBwUUEKY6t)c0LMzM&`-Zvn|7XY$Yr`$@%&+O4r^8>PbE?Ee`th!= zQ25Oil%dd)Lg?Q-MS%j`ii1tXzm~x;w~>}>)Hv;GP33LgrR8gn#`y3iZMSv+FZ)ev zt#^j*b;r*J(-Ow%6X74T^aaqV)p*->8qFcz_IbUYk!ZAm9$P5N0Ao1)VVW_M_FrM_ zGG>^2P}VlqQk0^ce0CD*k!ZKEH9H_fY^E3NwyW{DUm%?wh04zqXNo>3!*-_nu&D2R z*r3hOvell3ItjW8LX=zcRAI$L>D&q}vFEwY^)tY~I5o-ZNgQx0bVi41H}t zp6!Uo^+sW*$d~98`|0{uli^&yo8K2_8%pCXgyF68zwoaN%pfy(I4H%pn!}BI&~-_! zkw}-gNc4YWnFPu0X57msEHdUAuacdPlS30An>|s_$z};z|10wtNk1OF%!O#ICy}18 z>e{VspL0Fjo`j>9kVQAyJMBYuLvbx+tq)}Ue(?})^PG4Y#@5$a=Dg2TMo;lY=W5sF z6!)k1=DAbcdC>7w?qxSU#xUnHZ3j`fM45uZN&0TKyr0H94YILNu8?bCmS4(a@=CJ1 zU}C0*&*QtBn3ylnv=fjvJ{0E5bvSDyw;`gYd)koPgltS0aq2iyQ4L?GbI%~JHZ+H-Yo=!GBL^D38)kh^% z7*ZB_eyl!CpFyTyMZ?;LW*pFK^q=+mMpNb})iB{7y-BLWj0fOqhhRqa&`!s^-5g?0 zz?Uk?{O4(%$yP@+q#K@;YmKzV;7QL|bF2lp(gtfUJBZU<4@-h=swAo2_MOnpp=jzW z=*zpb(XZi1XPLSHH64kPOylX-bJ{yMIyXZkhC(9d(7e~j-2Q-b6vw%U<0QMo+yb|$ zm+1B3)Yp0qWisy4jRe)7lf6p*MH+!e2FeWjz&4|4Gm{4NMz{(#^kK-QR_=x2A@ux} zVwX51&anmQ>b ziFEaE^QY57=0TyC`)mA4HX%o8#_>?AZo!~nB}C&>b_2b_0bxGh!QSZm9{v0KZjCww z%9Al7RZYTbuV%sqR;nMVyVW-AH2SmAIDiV|>W}F&akXflsOCLI&v*e@YO`_CNaVd3 zw1x%dDl$}+dBPOdEo_1Y@h%?cZOpdjTJvcRSvaL&txPzoM#2(N4 zc+36_uD9Plh1$o#_F9P>QTp!UE>VEO7mEc@=O08vlsiiHhSMXybiN~jU4RTVb3IZ( zf8NS`nEx+a1#Is1K$Gu>?@#sq0@tr1Y1Me=p$k_*^;^phvXgY=EVAx0xg4^;m88|& zzs7Hi3a9%$P=yElhx}P2-DN!0x5)&b`!@wf;0Lz`1A`&KBuLTnU_Gs_Vc3@aQcpH7 z6Jr^yBzz^7Y^$Nz=c3QLkh{=)X`$Rsk0?<#vvs+GT}w7x`UUl4SoGge;O2B*SL>!_ zab`wq6SS$?4qWx3mKviHJzx?!P^603S*b#EPwUBW=Z+|DPiVxwZ0n{N&%-0iAvHBd zeJjywMJC%}wV|ykJm(?yYE{glDV zGUZ*RM!8iTz`kq?IjJ*zJzslU`&#=OIuNfn)?4YdN z_8(v%akzg=oZlfu&V_rNa?$&d?ocyH((|-SP_9+c-?^fkyW)IlVqRmvBl(++ zaolU=iak&4J{ZA!kdj3DP-Ise_gW*7=E|Geg8=Napo&lVmoo)+MEgypVvzH}T z%MB!yLjRKAjZQZ;NML{ZIg`zQIKq7s{@P6W4@Fl;ktzPBUPUi^oG$#P)>7A**cVWX z!}@iGFuKz*cCrIZHHXD=;EQD6_tA=mRvSKBfi=xqgAF?O2`JB(&E{7NX zY!4UtF%?*dGp?f_d?CIQjhz&S04FIM~*FX9>+hsEJ)@)I8>fjcaG>8%V=CNjTosBOtVd-W6g zjpUkM#ss5;+1zFfBgKAcwzDVlU9ND@^yFVXP%+-vL<*`A_v#h}I~7m7g4R2)e`bvV;8KA>R2Whaet9oA~J#%#R|nA%;a)OhmB0{snrgI=W{ z)i1Ku@4#I5F^1rTFTjGg8dYf4Y2!C2c?+|>X_^wU(-XFnZQje&KR|AYl7)+VS*0Wl3gTk z10{hSS&EXXq$%l&!k$+uUD)+zDp`0*HhZ&NB@Z5y&;D$@QUDd2!TpTcN-=I)3Ljd= zJKn|)c$ZSed)}|qRU2^sB|%Ms7`0L}c;mh4JpFLoL251=ssgo0ok3!qtroKrE>$b( zK|8qhP=!zJho?5sny@`c(vnfLRBk||YYOfxxaHA>mXyiXCo8s57=fdW*2cqBCTq*I zGPVlkP{0ay3mZ8LN3`SGNoJ@Pzq^2sr?C@Km?oi1{Rmv(Bsr><4e|v&m2Ihl`$;3i z$Rzb<8U66|K}Ifnm=Q+4F`An=MeG1)8nf9iml&nSBAQhhHvqO7JLp$cu<-qC1&>3u zYK&TTYZuVjG;RbaBs0MrcHw3~CZs%%`#bsOXqZ<4O{IuFK9h+orn8iqi`Y(=nJXY+ zYs?CBy}6MY-Nv1iU1&}+d@C3ix0a1yGlYHL4iytAF#ZJceX`w(bCPPO*O4{cR_9;~~(EYT5BldAN1T|#P zbI_KEs4E(fMH57lNG6e{h*b7g>Fk{ivZ#7q25P=uY-C%rO&k^kK8SXfr;lL6KN{65;Lby#UZgLI&D;v3+*m`aU(eQ{@}K7K;D4LI zh*{Tcz(y>A+bPNH`%~D}{HvMFGW(&BgCO8}X3D=gL;vnuE`YHY!gyz}fu8LY!x~Fr z?#rAq2vIrxtb#7M(Wzu7y#xMRcwBWyNK((YMH*7j^Sj6lnMpFwlKp7>gJiDEBdg}4+T-boli~P9P|lf9fMQ&}lpX&v znDPo)9?hnO{A?g!qI1*azmzgXO;yv>bnXorFg~ev`4`$b0`KG>oXyXi@g?scR5?1c WMgK#Y%l_AM{D1m>_+I`${_&r~PBY^G literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libmikmod.dll.a b/Windows/codecs/x86/libmikmod.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..a4e57f4c1702adb4e12700595949194cabb18058 GIT binary patch literal 86290 zcmeI53yfUXS%A+@65Dm%)OB6gbzbYlc{C4a_Py)6Y5a~8KQ_CzLkVR)-nqM;cpjUX zS$kbd8t5x6RTWhQgg{k=A`w7?po*dhf(Q_ys460e@c94ppZC3U zd`}fAclPX+{+T)df9{=g?)~n$=lth!ckZpU=g&W|@%}-38yX*<7#=B4O^pl=mbuCN z92^`UFOSk5XE!o7u!FH3n;E;|6k|7jkL2bbFov>okmR;KjG^2PaZv7jn&hKD#~8{z zFOb~#=ZvA;|F0y&j4_na?Ih!6#!x07BH446F_gV4Bo92x7|MgslkC637|OxFBRTvg zV<<;AkUVlTV<^YRNlu<%4CT=UlG&#iLpcp;M0xBtNj~`!VodD+-LOO#u&|<+`cStTlno&M|FUe=>jG;XBYa~yD z4drvYNWO5EF_bTTo#e}Z$r#F4;XI;z4bp(}ESx8lufugi`Pm&LKMyvPUjQ4*FMglo zo4Xl9`PLI8zx*6yD9^o0@++`E%CEvXMEUivko?ArjG_G28zjHIjxm(q862{${5OjUm^J)xON}|Y!^xCEE_<%_M0T@z=rakgCy_m zvH_I$Jx}uf*Vq8cmhB{4XV?JBwl9)we}N64?D!tZO&iz%$}M|Ib}q32l-r&ox%~|` zfO6N(BzHf-22k#WW1!r>jb!K?8$cO(kz{-e8$g-dPqOD3Hh{AC+awRX#RgFJO_Cf~ zVFM_Ko+mj1c|>^__D4DP4U!YDuz?e=%++h>8np|JR&{P`Eb{RNFO3t&X9>DnfFxHgEhzRfc(l zdJ9hLN<-|gL)y69teI8{8s^4|W#&P{T<=zcrrAnar;9l$)aHeXgoWptg4$f|SbI}Yn=75m=6_SrFxx4wI4K_=pECERAm6*% zzBqTO))ZD9(#Fa~)5t^0*sfeMj1*GFW~*ZuDWr^5)5ZhJRH-e<%Yf;j;F%WOOLMc` z*3y!`;EqxU;eYwzOpW-RbkE2V%Z#GcD&BOZ*{n4eons|krB^WzLs7AuH0SXW*#|W& z6niGA)Uy&`>M7=Qz2Y2?G-N%Z6Kwvap;qyxTb)|B*1~ISBo1O~gN~b(XN)TKDyES$ z=dgz5%z?Sb+O=-7|8h6M3r_!UD*p%-7Yr64n$}{hN@J;>oNi)) zYeuuwD&Fi;g+Hz(q_nrts#wRejzvlxCuuHr&!_(Jm{3DJyr>Ag5l5?(z0$^~l}rys z;5vwLw5cCnDhNLgtyp>rQdaoC$^%*|5x{KBR4yG))YCr0V5^QK&7@tMcaAC!q>T1H zho`fnqu!309nXrDomj3lj-^sUXEV!U=rR-Nq%I?ADqX<7s!WQ*k_sYk26whjhIBbf=QFL>no~(*sU^== zO05;MONoB6r_@@Z%Psf6wME2!bUA5XwhNOii_lF&b3-4(I=F3;@$uTIa>Y@K;E80# zc+6VIv`r#DUMTmFLTAKq&Zc#B@zy(4>(&$F#t^&OCRgd)B0bHnLEkJ{7FXvaT_uU} z!U^sT)MO`}YmMXePO!2Vu``p2N+V82;*=d8fio?v?egMS>?D;sc(PsPjY21uQ0sWd zTh-;dduPMpq+Z87a31Pj2~--XG3gxGwx;%)hQe95pL&{w!7R5dl?d#c??Ri`IR{dC zymkQ+KiBEDlXkm>Z5^J}lv*pQ%j)^(C`GUhmF0R%JzQL^2sg4KNu`LhV3f$cRgmx| z7FF0Z6|tns%*#AfX>0S9x*bz%#jX$|op`AfaZWE)EBZ;`C}j}pFS?rJC`Hh&AX#VL zHi`H%NheWt3tOi`i?vQSY15^5uI5Z)8=Zad9@ck352K?#gwQ-xX;$k!_q3xp`yZ6< z81qWWbV{SM&%Sz{lB(*Oo(O3Z9o4h1iXiqqmcEXp5_YW9ojMQH>jrU_#n3s|g(`*0 zzR=3N5=WcbV8oRt$)X42N`r_CrPP_E-7#8}83v&;YonG*2AY*~_2lGocWK$h@sMQ_ z@hK^X+pWgFdadG~`jpk$YyV{^g~6+d_pJ#D?PXZyUbRlo#2vJ4Vh>pqT89_PYPnn< z8Xel*5*hR30Uh;L^%9virZ;Rc-n>{|Zox`Ev_C^;&-z$Z={ z>cQ#lY~?E=-k3CCJm?5;HWhC|8aBg^Z^(f9E?<#9mAm-9k=@`fW@dT@AksBb!~eNt zYWRO(jwn}@BMOz+4WM`3&B7PG5zirPxzFLq2=%QE4(fCG`*8g0K;TTub2!X{@UayH z&*8T~aHI68bED27S=~<+PhAr?28H!GbnSSS*0W9UiRWZJ!)t)&a=kp4Jf&ATyZqnN zXBYRv<3nE}|D=x+?*Z)PJlK5^IwJ0iAjTGI`>;3InccX8(f7hRFWw$ zRwnba5@9LwWn@Kkg5tR^4kKZui0a36`*l5JOstWCmt1Z3^W_;NV~KjhF-pIZA+n$f z4i)y0F`l1{2%j%sLNd$|4}zfL5EAx$F|(pDv6UWH#`3c=A%@-YwgNu;7+dYN)Gu;Y zaO4YZ#bM-wB1O6mvQudAtHfY9no$RVAtLCNw1@I|s2I&p#bla_ZBPq*r)sEgiCj^| zvUl61lwI>o)lfHO$5S;_Y*AjVhWZ6gg&6N7(pMZZwuuyJGVT-_{3@{r;8V9>8fw^< zghMGje2nDhBf?tg=aG*pxm)p^7l)0oTB*o_DmPTvL&oqL8FCR*7D$6|9UTIAr*}UU!BCm#hSO%$3>U8 zz~yK9oQuo_bv#_Gc{_bvbOaZ$?ohvTk+qVNhl@3Dr;m#^ae)g?^*I-rOK5qxSo3!J zxOkGdz?H`OoQur0(>z?Pc{_bvED;yD#9W_qk-2D|hl@3Dr;m%4;G+NABeXoCYL8IR z!^N7n)5k@VxWGjv`@Fo!Tqe`QMToaEKCf1T$>l_g#zlZvOJ;$_{OV9|D#~lVPG4zJ zCn{ha*?y-YV_{qm6(PRP_{xe4oC;h(xX-D`S`pbpMTn;}J}REzRN%_deNIKzQrI3U zLj0V=sTEXKdv95dQvpk)6^@E6B1L-E$SpFF@Lgi#@F`}EU`-;u2D*odH6N#OD&eQy zS9YE=!Iz5X(fYEl44KGW{66~~9DKER@~*8%Z_v0aeXbZ5ElRHwGP*7 z5N%`j+;eNSC7gS{H9OuY{uOSxp4A&5H)qGgn}}~Xm;FugTYr_W{NL>udiGhZV{DP} z^;6Xg1aRdmlyyAPyG;vbl-A;sEfZY5i!^uf6w*hDeFA>aa``GNqCm0p*JDLDzJlIR zIl%upH4!Z{3kEZI{)@^C-Uqm8W^N?~|12?d%NWeaCy)jPG?@<`K}&wG=-ALuik5o; zZY)W%R{E1A%(cdy?ki!gH{uy9^QB6d?b-2CCCsha@l*-36;hqIgh?bVYHjr55+m11 z(8S!!uMmBd*a7$&LN8( znH?7%t@qKB-@iIGoGy9FaCcv=kUSZyF(*%iuOk7)HN8wwSJ~~S-L#CxSMewH0+-tVPTn3#J z6dA82Dl9<(Wss2_iyuqxqbI;`8*yE^BIv=l1>kL5)Uqd_uFSJyF(WiSTJrmIW3DTo z6|~@+1n6aa#U&=7uB@|TVPmR&?Bw_Qjtz}P+s>NP?5LMD6}7baFt5>=HJ!51P#Jjy zzC=w2AW_+I=`jpGe)4;WW3K1?xWSKjsbyiGRsr=Kb60?ky@q`Rd7< z^368-`K3DaIQz$~=T}yHOB1HE>#YGz26&t!E|1PAl8la@)lwcAS#ruF%i=4K0({RA z*P~A>im0Efs86$?dbHKgCCZsunz;qOz2x$T0ah3h+2b zT>qJ|IFkKd#pNidJ%$`PeP7}^W?6g`1^A#NZjU``QluLwtD`*ztmrJIizCzKBPqZm z9r0-SX(Va3R!^Gq$^OgT1Sj(qwO*9BH^a(~2FOwS*a`7Xr+YJEsZ*ci>?GY2%MI@I zUlr__*)iC$)gE>x0{qhDsc1)!oe=CCsMPD{D)Seh*ePtegR_rt({<^)Nx?r$Y#)4M zU3xa@s_aWiTkT^f!229=sdG%T zGrLroPw)mVDm%GL9S#X)$3;hKedL6AoYVfFSVnFo zK4wCE&hgfdA2ygtnv31@1ukuJx2=d9%1(+LsrIpx-`_ksm98JhQr;XzcChyc2N@Qa zn-Ab46gFKq-bD)jSz;f9Z>$@utY~Hom5-MIzjDMqq7P|aD(!A@Yc+X$Lrdr^;U`F`WW~;v~7{|%uzS-*QFam7!)qA%3=InT?%SNumvm-m68r-r8 z{wwcn^&?2k(I$V_&AVTl!7@T5hMz4=5v@Rk-@0^>^&8Zd7`DSTAAJ8FgLH6>rt(C7 zpK#1%97Zw@trUn1k(eKv48FgYjQk$om}@167_}StRq{NC1zGcA!4gM z&zSK5FK@)7*AGfwuuVBrxpX{f6t?A@Yt)SZ#K?|Kj%D!i6X5F|POtnH%cz?J4nIed zX40EgDMa?Lll zIfCqDBEah>p56|LSJN)BcxUFwk5M^1hpaLnroe!?V2Rs{-7Pp+||M!6%ilqN`9 zd=!OvhU4wIe88j#Y6C@mYDv$Yt~=j_MWxupirWS~nH8R^)^-AX!x8sBecWUQu0TCQ3B}Y7SYL8^*RBLguo=jJkJB1#9XkPk%T$bX+7?HC>=njOkc ziXEx;v6J6p9CKgQh{29pFs8s|Pe|(==Jl#9r4TYKK8o`Dkz=N4SW@)pa?-x678NLL z{U?MXGfOr_w#7$LfOmN~-QyX{sKFsg(R4exsP50=_DbYht4ln~tSs3WIVKNBqX8c0 zh~HIRRve+PxzFePN`5FS4mnckViQa_rasJJCkNKdNb#HkvYdLKOjzUYYOZQW(kvl`}Y8KsOd zZ!4wskrU#7PLKJC#s7S#Nsg=*tfHrv%u>1{q%9tbM%KK~SeMaT_IqaUFe!q%LQ&gg zA!Fq636)vx;YuGf`Mu9E`+#mYnE}9x%1nq42${*K==kStjf8la(>qF-9cv+o ztk|WEQu>$)@GwW*2D^zJuU&we{OSR3R`o|<@3>iU{+GpkkZFYe!ucq#C@SRNM_mzysxn}kDL{?#g%IfOTmrIjt!31 z`p8-HFy|?4c1Us>1Wr+@2`OzvR%~dL(#K4G4|B{dsE7&H%EsJWvoSX(u#u`v zNccOAhV%Q5N2k(^;2WjhDMsEF`MVk;J>H6yVq|kRONx=L@PAihao3GSG z8jHh;d}oB_WJshDze?;O__R4uS+P(tv>sXl{K65>{M@FfSv|EDU>|Gl4oXs)iOfbS zVe1_$4r3lH{yAFAC%0%vNR`_8)}i1qPDDa&D#^@jg=*vAjjn4Xeh)FoF1hf zOTW_=$JFc8M3%ByQbr$3`TfOXqv^MV zPI`Ph=<`9pp6O%h<^Mx}U5_`9r)Hqz+tYD#d_b0O=MAv$&W@*iJA)7>?+oYE^%CTo zQ7YPcJS#RmLgnKnz@r`U$~_w;FGriT?y2)Il&adHrv$Onmn-)OZpMHc%;*FMq^oF?pno5vvRJUoLufMEf<-akTD>K z%q%(l*d`xGA>QaTN3nRLuaO*4UEpxL)!0|BRSMl=&$Xh4s6V^evT;gVeME)$q2nd0 zWD~XjGAy1{Ytpd$qSmOxiPG81BFeP-h|2GQ9vdDTr0wj+V*@x-07jHT4|=be8?twQ zgVD?G>)qdC#KWpi-5*dy)jHfa%?`50({dE&+1^3q}8y}hIqoMMKx-TB{geIDYKdRf17GTlmGw# literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libmikmod.lib b/Windows/codecs/x86/libmikmod.lib new file mode 100644 index 0000000000000000000000000000000000000000..7c2406b9637ec82e8df79c3bb6fa7dfc618998d5 GIT binary patch literal 26898 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libmpg123.dll.a b/Windows/codecs/x86/libmpg123.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..17c881fb6106d3ded4484ff64fe57ce326488009 GIT binary patch literal 59732 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 yw-i8vX(0r6MZ65V27NcnJr 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libogg-0.dll b/Windows/codecs/x86/libogg-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..18e821c2f1437156920a9bd0ac29a08a831e4650 GIT binary patch literal 18944 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%0Dlgtuy3EqUG&Sm*~EJo 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 z�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

    ArK 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

    1@A)w1} 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 g<`GY_Xi?>Jy*`uz>% literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libopusfile.dll.a b/Windows/codecs/x86/libopusfile.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..ee3e8e3125d9618ee73f57288c4eb2eec77e69ce GIT binary patch literal 34372 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 INbvms0NY>uuK)l5 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libopusfile.lib b/Windows/codecs/x86/libopusfile.lib new file mode 100644 index 0000000000000000000000000000000000000000..0ccf0e3da2d029b8ea9fb3735673e887afd21b75 GIT binary patch literal 13276 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

    =%pZ_p{IaVA_2a>0@}q3*j*?f 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libvorbis.dll.a b/Windows/codecs/x86/libvorbis.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..8e8cd8362fe6863ad675cd3392a533fa3abaf411 GIT binary patch literal 24908 zcmeHPOOF)S6+SeN!4pg-n71)*Y;Y`u$NiWd284)%jhxsdk%g?hEEP4=J)Ral-Q(^a z2&|$kvWUE3;UC~dR{058Sgaz;i!8FVys#n`S!9tPV97b>zF&2xFRRiNC7pWQb8gjr ze0A=ruWr@3Yx#I>NTDdcDC^=DJ>QwXQ7l9Czjc;19NEZIg<;W8Nl4F=gastyyPJPYg%pw5E*@s-}{{kR+^&*!Ge*qx*@xQrT zTmc}tbdSs8R{$i=$2+EB!oO>d@Y}ux@>2;N|5x`@_P#+Q84757x)|w3lra=Qd0V^Y55D z&@Zcl(c0Zev6bGvYSG2iHMS6(y=lfyFzG*}`^CHye6_ejf4DxvJIw1oBi*!I8}xFw z$C#;5n6^b_VfKbnWe z-pT2-pu7-t8@RMr7Dpm@GGnGrgW@H=US7f=3YXS$n{Dg$JM*{p?8UGN;IAnA*xvp< zi~Vjs&Cf5fLy`WeJW$)lV`0~kNtFMQJWyL@cUdN3-~kv6IZNZQOi&@o8;wN_Nx&@6 z9yHo3Q`nVjW(vCo)ri-M*N7k0;6+S#LmCn9%(FIZG-htYcALkcW*dHi=iiTlEh*cu z#SU?G6ouOGa}-*5`BdAeHso4&t?X2vxEB0ax1p=2R+@uDxTZFl1L^~6%Q@MWtfV`% zF1xzlx|EB~53GgR4z6lIrz{F2RUcbnCr9$-nR}trFpkH5b_M~@!qG=TFU+=B?lsRu|7FrztKlgR$oduE$Zan#+!YENfSDXgBnzs-A) zYNKpe*{S92JC4rGG4TTK(L#Ej@;W=_s~Y?ScVtW*eXa;UlJGmXy*xW+T9*y)$1&5u z;_if*gGS%QFmuGP11QGKnXsLQnb*R03N!eqI5TEmm6&m!zo=hG%7z{C*tBTu;DfeW zYVa%Em)LQtWJlzll7@YEEC7L}&g@uP>UdaM!T#C_OAAJy#;|nSu!~{oeAv#z(qh<7 zVX2PoIjjG9MPe!RNRH*)9q|l}YAL80a zmaJA0uCzXes`l)ts_^(%51|ShwFo@x5c2>UAt}d=#^l?Rv+QXRxrH##>4p*vL zMUQ)iK@3+39Ql&ZB2pl~tX7f3()yUUO5oI+ z{u|><$XoBksqZtm?HH$i*szOn>LKlb@}ek(@ARr=yQF|R=8+OO^a^{VV-iz(0&Ho= zw-k@0t7C)6Opl=_fh}+PZ(yo2o*lK&!{@G+m4!MX#xBi5HPmQE{_|a9JYy&cP13a# zG5kDZ#*N0s-SFF%7cBg+NRv(GFDr&p-Uc(M=qd%=kg1GdshPlxxBS?;Dl_YjNGw@j zPn0(@Iwfup?T^%>2Wo2YKCWeaZB@xelB0^@D1iyDa76SYi6i}C&8~=ubaiY1ndvd~ zB=Fr8=8YC4dc>zi)S}`etkR+=g*Wo6WuqyikD)4o<*x8d-yb@tvOd3KqXi%5$~Jqv zj%A}ok8wA60$bZNedV`!iQgW^zDZ~%aNRBcDXuD!)8Qbx${RVI78uf~Qe-S@YVZqO z%gD(>mBUWDx|p9z;I}IrgFo*giOu^dFOpJXaEX?{JSRsL!%+g$U15)O$i)%oVoDo9 zJ&i{S(Mu9YQWrx~0>9n%S%Ip|m-~T>B>dW){Rn`K6y=PX=qnvs^!Rp_C$M!5KESOz zzR79@qw!2@V~9%Nyjx9g24+>FrTGA&sAI~?S<=_3v}iP`PvSAP20zDj08It45+W)7 zF1MM$d{_9*$#W7#j0EOC4=F2xQr?^x)v;ZXrHFW;Mhe?qT`zRd#*c`Pc83?@P?0f^ z`C}wo6GKq~*Ii*=X-=Ui@S`C%I+Qa)s$lDJXTaz;G=_ggVcB{1O?{+4dP#FYH^miS3oS@D!IW5B7B zjV4bS!_qU}n+*?Y6`p;v&%+X@E6a+d6qZTBB|ulYx)_oYc<%~-g|gQ}618b>O#cup zE1FWio>Pd?)hh5#ra=r>2|Rd(*~^-TEAdOq5=T%e?4`n${8OhDm;2fnqEh&9|9i}; z#N>N?M9H6_mey0H%umsnk<}`2RO~^7{{uFLssv8F>9bK)nFkIos!Hsij)|yHa|f4H WoJh~5Z{v~V!zG#=GTcZGW9R75!lJHx;t@OobKek6BIU8 zP82#IASNOrBp{+(1eAUNfdh)z5g`!??%AE$d2H|QEeBiG8comieA7MCGd+Fd=WI7u z{Gt6+M*q$%e7BTcn#V%tpXSxM`33&(&2|8|0?_pepr-?%_aZ>wW1sqa0X%wuCDK3} zr(G-=z4vL*1@P!CmPkWIPH(V88eZk}5=*3!bDW-Hi8MOP=@FJlV}qO?Vu_S#<#ZoQ zM(=zYM;wn{V~I4e&S?)zq{(GY&#^?BI?L%9mPp6uI6c7sD%o@Dw>)li6@;u3alwc0TXfB#;U>kaC-)ooaF0 z&fPA^ISNs&O_yfow{oR|EiLK63m(y1GlSomutBb}wN)tBm_C6j8c!QpX|ZbdElR@Y zlT!Np#aNt6N@zL=ffy}*-zm8FLbKvr62WV;a+RI3Tn_=HwNcXkRGkZ@G4Pr&O?N&X(MpI#cWKls7BBH&&fLq=d;1%jnDE^{3XvYtR-%;b^1! z+nbn6xIvSv-YeIN1@%}`ICM`R#3=`B9!SWR2+5*d+GMUwh{~n}S!+8+nl(nrd&e6& zZGY#mrU+Rl?{^`PWmA-_dNfK?5gsKQOZK+9!NUy^SlhWRT23@X$hl}6LN}isDO0W4 zuJm9zNw>gTA|&xN$BV68lBb50RoXP^I|aAuRLWMh<~n702%2n7=B`uDSMCOS@oM_` zDjURC7~H_CE`W|6fQuMWJnq9Ns~_M2QriH)F4B7>7o(oHNW~$5H%P0)056fwjQ~7F znjHmrgfut?@DQmr18^Vd9a3=|;5E|v1i&8B@+81>q_Y^&JVTm02Ji%FY8uBt>YYJ+ zqz;_iE)oWS&;-q}5B5VV9Dp|X0@~pqbikKz2o6Ih9Dy!43f<5Hz0e2!FaU!v1j8@_ zqc8>;7>5a%gef=%(=Y?GpKzoW^stYNv~<^$!IZY*g6$tfo-0JO*Bc4Z;)L@C(Dg+y z+PEo$5na{`Q-}$P8`X<4G!dmGIdUK+W8mt(_^E;GxxzKM6nC>GSI>>B3Dkd$YGU$W z^P<6+D<;+b7lD!D9*Y=(SXiloxRoMg>$+niWK&!j+6ZaRf8n9Qg&-KpX<@w8tc{45 zly7PEt_=qBO=u3JKX-(~N4{vZX9*umdwgg-4N~#$KvRWBz9IB*RP-i?<^Ij_MOQ6s z*V|N|<}FJ2%{jUsbEfB{p4Q>$TA#5J6?56Jzw(A)I|s%II5K=S`&!aFBb(^BG&<;% zfn#V$&G2%1!v8}3h3ADDBICNK&`k-y_+X}oaW)U8V)GwLZscUXR63QE$;zG)Ijx)R zD@`r1^&D_0 z(to_(g5@%te!=@KayCXr0Q(S6^ke*G$h>IAvKON$_8m5qnuVjC2awOkWFMRB%wE?O zC+AkGmCagacI|j(<BlTe-{8v(JA4tTTJ@BL>$!7_T=HconG?@##fL0~c| z_OV$ugV22$z?*kba6B#9EL#L;f%QQK1bwoS!}u6%1|J(8;QOG?uzthZN5^xYbmz=v zvpgHhc22XmbN<2E`Lm{XPF~T4{j2PpdC|mn4ki<|kL?^b?&sMN^{g>IAkgj+8Oe5I z*Ccw~+|sv-?R>9$jRLSH;#Y{*L?Fu8$AmWOiTh|#9Nvbm_$0-> z6xLP5Rt63j^<>-#8-I!+KV(cyB*t9 zY~}X?10(gG4z4r9moN>4afqU?eEge`sZWkWQ|EJ2MW_nBM!v zz%l2Mh#Tj(9R#lb+GrS6T(rijVloeNb8=OMg~`Jr{kq1SQHKar|AE)2u8T1qdpHV} z|0dKhcFY~v8OBx~sEs0LBeb5t6+WUM%Lj17h%tMrOF`5g*d}QDJr#2U9aT_`7kuNm zBFr~Dh@FewCNAx?>2-}+(;gF(bXh~~#M3G6p6yi-LpcruDE$o|w}1N-_$Z5TJspGQetp6UCn$YUfjPbD^t9B1nciR|Sn8^(=$|BgrC z`pHle+NdX=ClU7qd!tN{$THb#V3}Jk5j)P>lM1$x%r#-t-;EJ3Li|Y^vxhRG<=Ns8 F-v5VQ1wjA+ literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libvorbisfile-3.dll b/Windows/codecs/x86/libvorbisfile-3.dll new file mode 100644 index 0000000000000000000000000000000000000000..7eb9b35378c3b9a30f32c654df651b60b3a6341a GIT binary patch literal 28160 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

    d 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 literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libxmp.dll b/Windows/codecs/x86/libxmp.dll new file mode 100644 index 0000000000000000000000000000000000000000..9ecec3fd17d8eabc32c698a03ce121405b1847f2 GIT binary patch literal 408576 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

    dp1L3)m z!4B#|g%mN3$4^k)exguvku{`Kip zHlso(Q&nG9zJt@H6n}dL!D(C&PMlJ-g%NcOlSER=SV;8!T^)agB^bJR>14jo53 zF-;}BBvCG+YZq!&y7nWIeqxicu31eo@)5h1*rbQFGeAp7;>KfXN#yY)w4= z%1hpkkDOw-WNqboRErrK_|s|(ephn|#=HkFh#)qyKAv(IDO%0CcdQQ$6*$IBzXi>= z2yCaSw1so}6Vd%CI)3S2>3G(8I=&2>kOO0yudu7tTw+Z&iagn`+*J0V&FZg_o2sq4 z9rS?xYJCv0cUg2~Asf3;=OEk3HV2U1jOqBVFcxOIbujS{o#|f5r(ZHA4u3ny%s5ql zYGlO+oaqdiQ~d2&udA6yk80YgMzj;xl_;Gts{W0s?_v}{d6GcpooLRP6mX24Dk<8k zKcd}%S6?y&0=9#=zBH?4G05`JZ>Z*kZe7QnAz6QJ;=<4@nP}cK30oTW{$Y|2+lrF$ zQY&Lly3$Kb(M|x+EW{=^*y5{s8L|o6hIxAo(^!&u=eTIUFO{C z7Q@$%H!KROaReQh<+o$c*V>>3pfSr|nJQQbt}>Mfaatvj4z=eO_^G`UV>FP_^vQx4 z+cCE>dw~<0Ht=#=x;fpPXauM>VO#1NGa!v^;yWgyv3b!-AHhTSU2``~T>3WS4M3yv zEkj~{xiCGYc+7I>)2V)(RO7PgwN0lbM#O=)=# z3Pz1hz3eAYv&)88^GU6!d;^7OOt@hxy^uN?pGpxw55%7i7?oxon@TY{ zl-738sBl?_e)u$0Qqd=W0SAXTXKVUbN1%!e%T92aM;fvW2$nuMH$R8;cpB0rL77yH zmGv674rP(0Ro)1;R-x>)RgY5?4O(100r{xaC^nOIfuG8A8oCr-Px_;pileWU--iT@ z)!o+&BN7=?^G!g7(0G?#J%F%OZCjGwkTh5WA1Wd&;7_7;X~F^_>owJeQl!w1AB&G# z46y$myI!B9R4O%S3Taty>Zg*mHD6)BM3c0PA}zDDHP=|MU8$s)E(@k4ZJXVI=AIhU z*Ut}`K~IV8;6h8doglMyhCq7QcEp9&Q08HjL#yfFBJ?I2xD(W{@Tmb{3S!mF%@vxfIzJ=} zsE#H=awQVfiY`g>ZAAm|r5rcNCz-cRgs&fLR5#)i*G;SbAZ?PN6g_3NVH`y@wpaw_ z5Upm8U2jZ^t-1ntIXe$yJV&;vRcHA7r~_JoX;HIi^?C3#%T3bjll^(1&1C%rQg5=N zb2W7)E#0e@B$&1;p9b8lLKYI?ZsN0GyhOo)*IW=28SFO@F;MXK!TslgY9O`y@bBQ* zV$HvnWcVDCsq7?520wD~lt)S;wYa3?5V;^C+7#;|R}PpQW2VSNlVh9r?OJpWHPOa+ zjnIK*j?yY`0J!kc5alV{1(wFdOQ}NprIGC-dCKckMsv8K4PaPE?ot|5!=a4raB5PV{M=tuk2mwK; z+QNv!X`wQP@XODG@cYimHSRpQZj9&p1Y(4yY738HE|?f|Cd1w&>xFyL!xsU*3r+#t z$B-%DtB8rDi*8GgIPMrsKnHE`dZJ|A3%=HN@A(7J>^5ZkZ_sNR%AU^IXhd&S`4%}4f=>{*q@HBoba_$(0e|z}H z^ig5o&PQV%_i*Hsv2!aPC4*tUghwkw?LdZC;u+R8F?B5f3Fc4C0DA`WCuQIbv48Nv z*x7==%{FJw?T?>St?l?{d>vNBEcMN{k^HcO!Nmf(k2Tvy|yz$C2xf!1onA9&I# zH&9v%L&WTxKfMzBsoJ(m+grn4M}$*jlUM=Ox~K9(@V)D;@FdWb_z!+MBKoro2%85- zA$sXpE_K86VY3qn^K*Q@U0ZVzN$u0il<%OFes+|$^4}q}1t~jeoKbQ@FjJ^hCWV+h z+3kB1^Q*BJewu-WcGs~b9brETOD$9IAiYVbL6>WI(~yCOstN46or3NVeOF&e1=QfoKS|&Wn*e~Up6MqAiBos!SGFa z8=HUET5f4O%aJOiJvlS6Mps7@zC0WAowF&<#!^ zLQEZ8_3y;?A6qC)wFfaB;nALi6TP#rY&yMMTUijrV&F8u%g|ObcnnS(gt}EXRR=4Y z*njx`A<%9kzwYGM!c;o+!8xQyeK&gLyWpz}`HlBO$0~@dbj1JT=ItyroX|x%Pns5x zD4STL^Bf}or>Gt=GkY}Y9j;+_0IaAt8M~i68CF<(M(XEyRG|rYI&xD9Ygnu|C!%2J zdH{&Y8jonZn!ni5#b42aKq-~vWbhV}cB`U5sFFr#^UMly01wEZURGQMGoR+$j;@-U z1bJ`6apdsY;e-JX zNCBjY3u{^?BJ$B(F`);2XjTJh_erZ#8AX?D}L-MYME%*?64H!q|!xe3`D*x4@@UM|P z;D4ZwHY0?poClCV2nY$mQKrO4h&A*tG#Plt34DNBGTzm-$k{yos;KxA4#a5{w??BY z(lf+g7i7aGtU3i*LO9?FcI-_6GvLsy{A&RU&UdcHFv6KR6S=mFOE>(5L&?Z)NDxnp z)Kp*%Q|DxW+&_?j?m~piA4ACdOtJndHn+|-U^R&v-Ti-(|gdzl)MXr}3 zN8oXsr?|ZZ&<1v7T|A5(!sl>}bSKqc$*+gXLi6C?ppz~{BA{Bp04>|Op zLmh0ksElm6DmKvHB5}8@0u|r{WRNe_i6UtFw~{?X#E5FIJ5YIt;LT3)_c>lj9kP z#OgZOr+%jPBs(}$#bEhU92PAGixf=Tpa{FevzbCF2{3_v0G^7eGuYpp{#EM28AdEu z$J`Jfwrr*fAX|mQhB%Lkzk%_SOveuq^oBxjni6_fgOVWduH%VBi8qTJ#{F9zs+t+D z-sOn;RVciq^(~gNvj!M*$M}W>^j$3ZDXCU&3j|STU>RXTYqkrTYqkv zq1B|^$Rb#vu?W^?o?N*uNULebjX|C!aOc2XKvU5M&OO;*yE_sjJI|?YNqpQ<(Z_9p#3( zPDDmQ3PKCIoePV?v{Z<^E5J!il?RzswpgC6$Wy4!2R;Joh#k*KF?vBX+{d?$bI#Gv z-dZ+n_pNMjT4rE|9Sby2ZJ=l~F&_#)4unHR!u+bdeR#}9FrN}CcsUwvo<3}|Y)n|B z9-4x7K~o7V1i>{BFH`)NaWsgB6y2$=)1`M9&HA71SdU|7ihLehRbQ=aExEj&7C*e zL67Uv-5X*Dq}G<7yx;RffJSkOE;l&a2 zP9JGC_c$s$ycfgjnXLDZTB^aB?Gf~?xT^f|s?9uJDPrSc-h4|4A?}7e)1yaQaQ?h2a3!{_U9v<5+XvS;*d+2=C;K1 zIS_h?=fb0VRD5d6uoq4k20+n2(1t?u*!iH*qfP+iNiq8U`3cREctOH41%$Ve+2ZkU>OgVIh^((9d7&&DDL>Z zqXjB@$L1vOXU;2zx!9|HnsqKiIZ<}yIN)(CRUx+sBt%z?)p#=RocXHa$P~7%PCG)> z1MpQD&~SVRN~Kl)6j*~Ie*JEmJJ?#_WpND@hL<%3CG0SnxilZ=U~?6f3dq7s(DuF^y)Gtt_gQfK^xF$UPWOXE6JC}AFC{)h54k%Nzg6Le|l42Z;2n5OsN zt*w~|EZ!W2BbM>H@rGxF9-57i#KHRL)fLS-H;zUSmd``&dc$_&&yW63KJL72=S@@* zoWovmL0?K6rFYQ3jhM4gc3=^tFSO~DI$vEN1zWL(<_}{O>ieOngzWXTyeO^y^wlT6 z7sAD6Mq5@_{i&p^H?!)EWA^r}y_)}3WDYofy8R2~f4V;4C=X2b$qJ_TMA+!XJ!rCn zwBy^w#l>0mkJf();A3Mg@Ypb;_r!;ifz>r+bs8-@p8xG{ug^zn3yQU$%4(>s!2s9` zq3M6E{%{g{k(Sk-3)q485J?pSf@7OU@Bu^GOL=e$%$%_!OiC;x=!99+%LB#k)cqV! zur*F%DyR1FMa*B99M;JFGG0+E70{xiBj9KVq?O~G8WgH8Dr5vwlKu)d!pA^>s4((c z%zv5dL)xW(3=l-)2e`I;4uVK!U)DXr$mAwU*zGm77P=^xz{84)0YA?Bf=f~X zf9Ri(fzjqLd*KYJk>fzDBg*DrP740oXh0cqo+n1ncUoeD>liFbUj989)qu77E@&TG z&9Hu8;7p*jRrW@9gGvy`q{V2%5)B17&h$M|Ve~Na0el0zH@pBvpwKxLe#*YnC_|o^ zpVHTu>PbH%3zIz~M+33m7Nh>yue8c($ij%}mH!LXQx@P1_?F*-+1*VRSl<`0G~X~* zh8FKbWe(3+y|f7n*1#~#+;C>kMQBv| zftE4T;|40HIolb?b4+zNX{&z2#@$U>ZCLFMw4C`n!tn|lz09@O^G~ty3>3Bm^80a! z(+%xFE~Rig zOXzec7*MZn9;DCt9hYGrFB#{lLHEjm+LHlCm#Zr4yzk<}^7O&;VYA~h-1%`jxvbB4 z9Q{f)?{yftjsQp($HbEi9KhugOmy_vdNg)ll6h4my~>>92;9++FnUSm7068z{mu6g zU-g*xeZw15R-Qu2fWAOmAxu-Vos<{oF9v}Nz`PXPc9xft5Q~c@G_fb#duBT%k8NI{ zv;|YmvSZKle&wJWG=XgkcO(8c;D5bM(Y)zxLeDEta+y%jr6k0(ebTHx% zCw6N+K>vXnRQEe%no`v0?^>FKpeXJ}v-A~LX|1;6PGrw2ZL*i9WR<3B;?kivEgPU8 zK)2q4?j=G8SUP)*(yiQ}jnRCi!vZ z86vUP?-&(z*M@IkpOyZI`kYHwa}>67b3ChFZj`!pnqMt;?ZvXE*wu)A ze1=KTd`nOPwhLO&Q22FW&lcl^QMkn{*rL@?tGCnZ4~^$0)%T>zLvnpj`p5&b@z<7h)-2tcRk|LBu}wG17pynD`_O*p!!H>p4R?#_ereV<4V{NacFH#% z-!@Cvqv_7?wPlqevbk3I79Ba7mL-Uu(iY=mp83>|llz)=U9~4+2V~QKUdolGpJ^ z0p&FS5di10)s0!W+swNUjXu};@MipMG~JtLUDMe4?#QBNnQE3kXS$zNP=p%+!r4ZD zQDe9rPh^gA3^7*H1-Kufaime$LJlFPkVoHthI!i9rnapOqTVRnr}vzh>P`>3_cPVH zGgDi89Z(Gsqy#DTQcB8Y)D5Y{hVK6rd1argOwm{BpIr#oRA}xe+F_=%t{W zMgd!R1O8ZSj8jNOUB*#Fhw&Xks^a1ho`Am?7e7lrAs6>*KAMVy?v11loVPR!+l+$s z2rsCg1cEkbfv*p6@iED1aq&(dN$ofK4g_Y~y`CwBjoOpwM`5E`^pdM+tETf7Rlu+0 zO{K`2RrjJ40I9SXb_)T)h4En6qRoL4?25HrgUADwApF4H_+~LIJ7UQX+&)?)p>IBm znkt%z$pIP^d5s>!<@IwYEj-4P8@M_y|!eWwyhBe(0@!YRR9H< zUr}CLs%=eG{NDLzZO`kSr!Z@qrQ_`lrn^?#(_s{14&Pw7Ykh#Y)|&*|S>aYlbodkA z6LoL35U?T%AZ8(`7IyuLnkc{nj`;?HWv$Hu-6+^CF=iIF7{`pl=gflVJ{>pjRNPF& z*s|U-i#BH!RSGwwd_iT5o45G8g|D_KZhk|)oi&Rpvw-sNwS_ytH&y8GSZ$S?=mc26 z+R9V-J=@?fYz$}P$sAzpah8lxj16I<7&|UwK9RB4XSp{j#@^WZFgbZW*jNDtA`?Cb z??V`EAXvWzSXr;i4|yaffvd-Yt1Skx7>2w(a^t7v?N?DX>;^)9P;bO~4*rhucKI*j zy!|Y4g11Ljox|MLK3D7q^Ldfl4YQ()VxG6OZHc!{{YKp%iBotCvzC+M!ri64rEXmO z0REVo?_B&XD*xYl8jatPg7qmp5tDIz1>bRWFUR#U&ao`(LY6%kq-f|n&rvh?UWdE} zc3Ql>a1pyidIYbW5&(V88=WB>fx&_+AL}UCHAI=gla#k!6YY;GULN9|Ab6A*R%bcQ z$I@IMFP>&%MS5Fc+H6FV3*2KzJQG*L;;+Cnx!AzrnEXutOb1@fORzH1woT7V!U7et zASt_}*tnO`+e}nw!cxn<3!LR_Mtl@|9iR&4%aO;(%jkbh|63L)s+A>mDlXaNI^6v% zZoLd`0tsTMIaT6}v6zgUm>czzsn*=+88c`e3c6e9jV1VyyOT*m5MmH9?tRih$neyM zp<04{vA*%tV^$#Do9>qER%kY$INVO&Jm<7+$J2pai3)AX9#1RsN>cvF%3MLP;Fr9r0gSKRCHTvs~pQm z%1l_{eC~~!?^Zlp@MzmQrWV#gAP3#+Q8Cn%Yo*L7wgPNOJXh$Y`|aqf z-o~}kK#xygQjF!niSaEFEJV`txz7CFQ#d!;nCyiqvzF6q(YF}dJ*MBqM&1psmtnL9 z3xg9WuPBv)^IQh#z5?ig9Ke7{V}s#s3)9~nQigNq1Avg`2&}wi;UyQSrlFzmBSg%Y z7%R)K(Bp0=DuU)c4TKnU@52kGDa`Y!F!Tjdpy2LDr0zQJD7|T#(IV^>aCe11hAR#^ z`6o|uma8*PAqEW6v8-Wrp`-ZhcklHl=T9x#znJ$<8K+q6O{9|?mObIk)6Y7WduCWo zBHN;F1V`VT>=|do%z9`bKXemXAl8lo0Ia<%5M&nHZ1+rT@1Nk_i|KD~;I3%rDKvobNDPNlh_Xou{DB+lS|f1zP8PrDZEeNIC2-Dlom_S#N>ds0FFP<_aAs99czvd_ zlpa#`6jwpZ9&T0TzjOxb`3Utyx)bFW21?>L=TE|zIPQa4hAVgS`8VMol0S*V$JE$* zPCrs|!kubMg^doD6dc;7saHaud($i(5hFlait(SX4{zqY4AA?U2p%iQd8yjkzu+0p zG-LWI#$&w(J^d{t7+B@cm~GCZA~UtH%;@~HMWmoEfQ#fgUXOj9MlY>$I@(fmY5*(jH_FQ< z+KhRV9v^eUy+MSf?-4ZK=T60X@Jc+zySot$Vg)Qt7`aA4ZTm^Agvt48!Uyw%-#Fj1 zv2~bl^?rD#ehpR7fVwIOr7W)H@sH zP+j#?2$&9I-h^;BO@0q~x~&4;psj zd*ME#-@GeB`+a+41lg`FBjWa8j|w4WrskHq`>RZM2rF|ufz+$*bHbV(cVzm z1xT@wA-sX{cN^`IE3|DR^k7ody-`5}kpw}co-r}F+#8o2BITg(o=eObnUEbR=8Orh z85v~`{jQ0)i(zU(UFjFhq9&-oS*If-)hYq)VT|k;9bhzVlt0axi+syMlHMX>6ek#J z98N6#Z_`hnS@zi>@{Q$r$YCH$X@u4jD6-$UA9K>rL5AhFay6=bVQ!dP{Q}fbF93L8 zyk@j(fm=YH2#+xnXNwsX!f!VVpUp*oU4+bqCH60*&eTTs{GZ5e1SKK^N?>%tAxvSe z!lp6^c-T$DzribMU3QDj!dF;nVEj1IxWN>cVa}iGens=GWJN_Uaq2%AbZ_Cm-qzl4xVOSGTKE#q??>G)`5UmYm~{VyuDTB$MjM{}m*w)+f0^mtif(UlxwkB9 z5C4gE-jxw91Ps9$BKyPHNQ+HtnBR@r^9Sy4D1^)8`+>ZuYzOyeAGjHApUV;XZ)t{k z-*mlUgnqc+eh++LyyJ0OZii$&T5;Q zd*`y@M(%7hop_A}tGtdNHuEBoUh5_iiwvc|b4(ms5Om)&9f}S5l@iDwfm8JM+}W5Y zm4`vceaSZ3D;p{f{}%tQE5yI{5ACo>0fh}k6^HlX-*q?QAN;uBXohrT?Zv6@Kg7ORg2~d9CFZuk<(Oco(ld1P>Ww+c+r|9MP z*Y^+8c9%QSuthL?m<4|k%H0gQwk^L7KO=0*=NHxYYw>IvK5M(HScW-^tC;ud<<}z9 zW${dx;R_N*#S=!Ugsb8SSE+=wcmi%Evh)Y&Tkp@o9Sld(?m@VQ=+&TvuT{Kjv-K>m zk9_9siJ5wn(^vO+Qg=^x5kgNN0qJ$S>8a~H1k(RLaEf%Kz_U;Gk7PVR5uDJuT*3;m zD5bn)oDKWIIT=RUR%;y<^Z$}W?DnUc_dvv8zDP4BZ%D{fC?beKO;gNNET~+mi-u#V z1lwhi(L(#Pa^ZMin$WUa%TGl;2xwD&YP7blo>_+K!`pEr5B|LHm*BOi*v!N}^qw@} z7dtlV>&(fSCK8MzPSya?J#!a(l5iG#kl~LC9>bR+%fGoP@79+gPyA zbCFs3B=drt+%4X5J20)o8!C-E{}YWT3O%t%r&>9Q4+55Px!Svh9!?W3cbwmban6)rtM3#pnR!Cpnt^P=;np-W+gmnR&iW?4M_KqV3#HY{fU-y#+qS zZR~|KxqsQqX5m3>2p>)gwVaaS0iuH#pDDn(RvD0~!kK-5a=XdZSXywv-E^pE>zo4) zu!Q5_F!ubQcdJ5y!U(%L9c=*%K*6D5Qv{h^EpN5*%k}&+{u$^1P0O|;uBOpz?+6v3 zX+|gQ!5ylvtjv+7FOD@G`aOg`=xtX0sbr(D&ed6(wfnO`N>=lL{KaB1i__D`ogv69 znC!le1~7k%UKZ}ev^W@l3H+pOBSRGr<|yzlu2!3xJKlJI(dc0ATnH{W;S|B_otk6h zrcnr4gcXm^%EeTu3FC*24-n`Md8&hGM4-^#5H{nudW0EYUN_Ot+hTd_pmOl~W@^2W&$~y6T^Q1$m#smtV6_ms+7Vdt_-i&+(^7-{S zs0A-u@B%XI3jHe|n(^>7AG$*8_@mzm3c(BG%i`y5{6G>0*3Fe<1Mzn88JgFx@PVq$ zNox<59am~7@x40y7yus0ivCuR4krOAu)QN^HjhV);ZEW#o~xgq61 zH-Wc2uLIo>u98nRAD*JOT<)u-1I#;7N!S)Yps5IJT-{eC>cuA)DJU)2@!yLe<^ zYK5;p87R9qUEe9?y>)2nUZ4&7_PfkR@G=y5-vD@|KY`ygRow^~Fwb1avRLML?$&Bn z3qBbFKxb;j$+IZEe5|qV8*vx}EH!Q}$+T>=Y!j#wev=)5)da1pOtTD~g#j7WZD?j= zEwDY~RMQc^iXE_yFtJ<$)W3xz*C6^=@M|^YYzEuVpECs>@;Q5b1Dd&19wo(dHDZr2 zXH+NV&bIjF4ViupIfY9n5N;g}#{3Q9_zC?ObzlfgqJ9A1@$VK{pq@vOF~{3Sux0;Q zc|Ky9XP}s4oxr+{Nr&ATG%U zIv4$TM>?Pa5cCIxQS9Cjo_UT9G7`lpCgVb*QN|qoldw40SXXaL(t#Z1ADz)XD9WO>1s&I{$1LmeIO@; zI!VZTF=jD=$^0=*f>685xasz|13rjlPnZ>wSm!N)=!n|NZZp06%_Xo-y=P4zd(d;} zFYjULICfgpld09f_HQB8G}-tpT-|t03rgo^7_peSqZc=Z%@bp|3W&qmF^F^k4VF-CIV(S>z7S4pCY8t;Uc4}jDjQZ zltJp}Oz#ogfL7YoekzdiCDYsMn!I+&J6Ngp+n2vLKtHIkd^xmR#1=hbu9|>)Oh*;s zkP{K!BXA*tyX+)WUCpPvIp#V+*y|O4W`q%Kk7sEntmFOUtNC3th; zycuY5Go-{g4isx2N{=E-Afm=t^r%%XA&gz26%ZG~mc@9#0A211bGOebjd9pXnFeog z-(yI|Jw`$;q5Zw6bTDv2&$w>{*)Zu5(P0-KPoeQ&QZ;W5XW{*v`RHCFNEe!kbOFN6 zf<Jhq6DSsV73qGs4V0G<_hX^o;^t8B>6#K+ zf55%&5bR0V6HKr_o2v*|_eb4D`!Gbyzd?L16nq{qo;e>r*Gl)v-+N;G-5>f2)J(3Mf#4WF{44;iDm-GV5oV z6@FQTZT625#0ZME_WQyRZoC?n^(rIU7WA5S?e|^fk6#KrJPiV(ajLEKTLH%=yg+g2 zHRp`Cw?!^0u0p?a;mg6#)4O5vFFMkNqd6}^)&R}>yB$w=)pw77dd5_5$h$x4-k%F+ zN_$~TcAqMP(#u*0@dMUNSp{7R?`xkSi_sv8!Rs+@G?GO6#P~?jhd|ak6tZ+Q-sO1O zYTA<#gYnrxFnYTWbqQ!a01d7T0$ZdLM;M;sFjynx9c8YPL96p(X))307mDQqFMQQU zTmbaKTA79sgsx?;~AW_7&X5k&4?EK!o+DlLBcguu{h5L*WdJ0mM|d?T+rG z?z}VI^<9nK_1$~ldawJ{u5X;_ezp7ZuADR73(j=gyK^1gIsHi9*WKE+_pNYuI-YNH z;ANy*hS8C=T| z*3#RRbEJF05mgIdK+~@Rj`_WKh*!~_6Y6e#s{sqj`A53*Lfv`q4Xz0t>s}D*%6YGQ z!F&3L8Rt|M>KZB4S$%p>4`qN>*B$^y2kRriCzdq8=bZYpNxnW@p+=OZ>4?-qx^}1W z6k_bWOLx*;-O1hggYo+y@q0xVu)fg3FYq^j-^=5evDX8=7=!%&?)<^%eURu~*xv=L zFSO7L>w5qX!IQF?%8HP0&~n&l`v74WFMXe03%M zf-C%faD`D-iNB_NF-ztmwC=o^uD(E}hHk=Sjw$07^(v}t=or*i>O8MOfF#OKsV7v8 zuQ}eM3AK8Dn_Y)!$N)l2DWPPX**B{R4pyt?qPaM>^Ad=?b# zm{PFpc-wkyP_J#)>x+DyCzJ)a zL*!bt6}}YT%}p$#ZZ4Y@`e_6RYrqthgf7YaNY&A$uLf;uYp6OJzKzHaCx(C{Kd`k5 z>Bh_DNGY%7vrY4Tms*P8CA$?;Y5qfIHNP8gw@1srs=}aQ^dz`PC6y%eWf`R|bKXNZ z3SQ`hcRJifXFO!bH6Tfb?>R!}lNP2}rE%(qp+PF&8iCT%<3Jkpe)GPEvf%EW!eYth z;}6*prwM_yo|Os+G~JOA9C{bqLkG;4<ihyIL@$zF#tzsvjBvmiNn-M7C-%TF; z#R7$&%;~G{H+=U?LZ01x%Fnc2d^cWx1b=yCz|mm%zKdstgm#1=ozFL3iUX2N17agL zn37v21f%k0?g&JEEU$nw)$?+PD`@Ou0d36;7#7WHR?Dbyl2!0#LMY#+)xg8T*cf0v z<|bxBO7e(eec6l>%z?l99Bvk^o5mV;_hXENq!AFoHy1gvBDfTqE{XfwB!_AyW+Rvt z+dy#L$t<>dO&2EX9kiJl)wA%yboi#j{$vDZvkKpx_#66q82z8k3jZAk5zI~eRE&{O zUvuMMe~qujMt+j{vb4YJA>=E+1#mK$tLfvbxr?6^EM|buxUPAGUEyojba|gU?i!;y zM;`Cgva_RbS_w?U>ns>JeN&iTc^vSXo0wg-rLYU!+?Z=FeeBV$NhCkfE9}Rp|J-k_ zZM+OxzE)HfB`E$kY2N}ERdMydn=H7%!i^dQYy_;)5~bF(_?0!FfsjB|1Qif1;G62F zU!|G=wj|kP_rhK;HwnTjwyaufTYO_B5FUXf&?G#x;ZfZ+3QS`83rXt7K2oRI+0)1 zVwB7L{+q!Lqw`n`wqC?pePKV-FDrzxHMnMEkurvUJN|kt{?+gt8HVS2p^+&BN+!(( zot7)2ZJStd<9_l&@cXPyM8ka@LZ-a=&PKJ;_y(nH&07(~TqTrh{Whh}gv9!Pp;WJ; zI9C)!-bgeHl%gn|0~%EcO&io&gS0AVCXozAnb4{Pw2GWYt0h9Kj8$f}@UyPCHDi8( zAraj|Ix|c%dc#7%W!o^}bSwT8)`hV}j(lpB`PdFp+~wcK3c-9sq2xE}ag>KQHL|ey z`fAi;j4>3L@-Y})ctK68m`_0>qsd?IGOP~FLG9zrY7U0%oxx>Su#{QLXoZ1aXBb5z-0zw>W$_nVFlKl)q=NLaQlbm50?{U zh{>=Dm9}ZyoTf#ok+s*m*UIR(IMvEHi!!JmWl%M1^hO#3(rl+$OKchg09v|pe-x?*i^z$`VH1?H((1v$;bE>Fhusw%_!Tg1VDTdSwuM2_%ikfsNPVx z??xPUO$%}rRrYrBA+$5&SCI%pudIgnZem)uO(2O-h^K(FvKn9qf=uLsc}7Zn0E>kA zwYSp=JEGM1ag?*`dnfi2*4Gqo#sqN+P98C(V8tx6j8z-MMyV1kxXg$Q_3x+9ox~qa z>j99$ym6wo;b$%*7$!78-CC&=7^(?` z8Bp_^zcDqZ_Ffbyc}QEIfkP-sgX+?lC}{?y92TK(w6Eud(W{K`Gbj)rgH3I0-#1~z zfNg7^W88;CUFLJOCSOe2WQ~$v<5~5=_ULO!HD%uNN{*7-)U0a`z}(V5B}WL0{U{l}rkdZ$ z+(ne~wS>JEx5k5tp^eqGYY@`|7~YBTnGC-4_h#r`#;FbwsmzM7-Ri^0vOF*-4dl_- z$MWnlZ<=pdLy#M)2L8f`WuR$M0lBY^avV)UIK_0O8G0Ji1J6TAHLF>|JlDGmPao_u zYvpT_%iE04X85&4Viqhr%`oY6>{oD1M{a;ednDjCm+m1X{W3yQv|PFjLeLB|9@fzB3-a?Gd&3OG9TqY(a)I@e5x;`0JH$@hxVEZNPaN z90?)d+ajXDQH1ONXP8^6*C5VlS&**0kQ927J&>F->cP+1bzi;MtqWl30dFnCi`Uu& z!Rai-fu!Kwng-1ORtD0kW?qA)kZDHX+mz1nO1Ss}I6_C9Z_7C`{5T5Fg!gs?AOaZe z-L?2oq7D4k0ZnHlhziNK+ zm>_BBRVaifDe%__EyG_hn0^igt#p@~yV?8qbtdNTrth4;u_^w)(R6Nz{r}G2x5@l{ zSq4y)?Y<#OI(^steHl!cPn*B73HpusTkVEstn!}(WoO7rKnPXqB3*7sGtV&7e`|(G zS|fcGG@@FvyCEE)`o8^v`&xuFB9tu|h34e>mQWTp2p&r(U7fpNos+J{km^s`C)kn| z*LRUh+q76N1PurIP6#N)Xa#T<3;^B`ISqHJv-jB@OYa$4;B#u$x*#1Aq-VL!F=mPp z)n0uQ4zgJFaZ`B1bk)FlC4t~^1k2TA573*_Is2kc<0p_G&M0PHn>mCb6pO^?b7l~> zr6SRXtg7ZZd*xS6o;3qzIy644Mb_Xe{-6kK(k{V@HxXGS7i3_d3(etV$Ox=EK5*h3 zJG2tnse7-&ucp&P8#X>{TNb8(uv0f5C=d;P~YKh7I4Od{@KozhOg&6?Sa< zZON=>^VTA;9%-jokJKdNsTVGKIL>*3{APvOO*pAequpd9mR97vsi;1|dBW|A&%e!i z7l>-0h6_8{1m~p*-#Pc1iWljkjVb?*^G4g8M;kbuIKzz8Vk_bgA*Ea7lV5oE46PC` zF*~@lw5NsIQxN-Ji+_#kPW&zY8yqO2EOyTH*%W0m1>liai8ZVdNYikZiIi%F6SIJ( zpUXI5PvJSWWa;6#xBmZlZsv#od!AF%pX^*G?QyH6%YTwR?4^sWI#1i<}IP5H!KufM#mD6h}D!%czh0j zZMi6OEBM7LT?1Dc%DuH*uluekP_s-D{M_%6t`@d;cBv`N2!BoB(#uA52b)_RW6ZSq zcqIo#oo{naWA_BT2o z_oAsGR>Mtvq+A?zL|rSeSKRP!JD6dezo&!qT&%MRe;j%0!J~&sOuZr)TwxrI7TJFoNp&_(ND?ycc0T z_p-0lND8?b7A4e}HVwK3mcLBaDxMP>lRox7NbW@QMi=x#)CE7`_#6Kd=+&(|kj0)- zmVF;8`RM|p;$tMYo7}!2?eU5P{(7a)G)t`v*}=vMQ)ky(8EaMdsIE$MQEVQ@D|$Y7 zHQ*;Y2HiqJ7haRSFZwz9>H>3W2Kva^9Ce^yuutw}2_1JATt%ZGxN+ePU?Wx^r zi_>67zM8l79U}XA1tLaKm;IH*DvyYUzEoZHv`(Xb(%& zO1bsi#MQQ44Tq=t0RiCSE-m597O+P*xMt4d0HS*yID)^48$PQHeTU@aUl`%AMk7?mk5?PLf}YBu1$fie z2yJ2RFp=PtPxP}QFgcUnghx@ z^;Q!v&3cLz)h44>+lyM%RTaUkK;&3vas0hV`+UXG@gHEf2tkaIc!q2ykuF(>1l{;` z6es#D4t&v!A>80V)Z8L^{l8ln+fo}MTZFZ}SEG|xQx&&+WsR;?I#4m3e%M3B7XJ|s zTBP)G5f!GKkeEN8wiiy(If9JpH9%Dzl+<^oV&j0HVJ6joj6>VTQL-1$yANDn>s}M5u0RLJ?fFq7;7!HrYUt2cWBT$V=sm&gMwTlIx zwaBWizZ$C*maKh=C4W7Uh8;C*jO-no26r(GYb6tvFb+$`T8YsK!(9E;2x@K$r|>dD zd&l_7y6!5NSGAAg>9{L0*^T+$4XJdC3!jMFiC14EjGXMoT{HCPP=DO*jTE(*VYbbz zCTMHoPrh#daWvNrjbUe`KmNbQrC>N1xzis@gWWu1nGA?XB%B;U_+cn4#Kx@cg=k8O zHT{e>Qy0RvrC1qmXNRgU{sb74$Mt!xs1wJ|4Uru)?kx7Dr?x6{q(T(xMa6 zQDfp9eJ-oNhB4Q$CBve5p6Gb|=LUd=Xr4Q|2jzDIw_VX$jP}>3Me^MK?P*as7^q7V z3Zd{Wg2b`>Tn_@Ou{h@iz`1U`Pm&X2TQvV1;d1g#tm93P2!2aK!U2s&cr{xqT(KGQ z6GMze{GZd9*9?)MSXj9*D>8(8*0JG-RKN_87N$=2Gc9rz9!`P1ttw;}fKhPl^MfeB z3-AKX3=7i%5{@TXv{n$YcLUDiq>HfX1bOKS%QX}wtE&wJ)`yyG+)$r@iA9JOONN;> z;Un3jhKDJ1aJFJIB*Gg))mXXF`P6> z{Di+_ z1T9yzq|qRP^eI8ao<{fN)Uv9@I2R}Ccr^^D?d`-J&PqD>HZAgqKi(J5Tv`qUwTi`@ zxg_#g z)ZUH^iv9NEl=W_WVK%McHJxLvxOYwq4}BtHdAlQ=i$KC&H42TB^_XFHX><~XmMJ+c z&x&Yx7E?mZZ-!Y#)U_eH)43}ep3aYn8<0C1o+b&$q7#p~Fyg}3Nzxcs)HQ~mlkpiZ z03z!ABARk7hWhyLurC=(`x2diIWnWS;Dgn}M#QpzcSmTDdu(r!dh-rU-Ob96>oOaReOGea34i;n*eGn8Az45gmdO3_;mXVpW9y@5u*0jPT* z2_eNe|H2dqc0gGTH1VNXJC{mWELrSo-1=y9`Cn!?y7`KL-Tjp#kWVqBH{?K~RvF+V zUi}QhidjsHy{?!KeQQ>a!Kam8X6()SM>ISZAMtV2Z_$u8SSKZL2_F#V zJQ1BK5sNrPZ;eFN=N~1>js%dFNPF}&WR67c+`|`HePU77%o+u3UE~9?2WkW*Z5$3q z?%WZ5BQl}o-T1+#=pGxD9axjWyy#8LLP*EV%r<_;PRg)H_XfaPk|Gcyv2@Ud8MJB74yLx>WrJOw&L~*f{M* zuALDTO9L@68dDP{hC&@kkJzsB6wZp|Lk z(LPPvaIRUqmN{Hcz$=M4@d;c+apT8rjOUj}+b}c5-w6M3Zpq=29I4FUZ%>2QIOf4k z=Xjc}pS)t~Nhm12XIVLKsF|UatbF3x9dWL7!0%9Zpf|BSxgNA{JGB(B&In`!?RG?U z3GGG)?t=CVHp^g&E`ObrSrVd>fv}yo0d#Hv*_3K>o`iQoRk_s##e}NL1S(z=JgQok zsus%0|FT->Kf9>v{QIhJrKSX-!n!^FhBW9{vs_T_ybW5pgR@ph=%iFq=@+GKnyZ)d z2A{2sNFO>Oo!g8KXrFCxoG42zYd*vvCtGWAc}JYLKceGt@*->O@fqO6yo@N+v>{++ zQNf~bK&jkwa2MzTY90I#T)8uP7UH0orA2Rp2A38cpB~LiM=6v`14Ts>w97&K9z+kI z90o@8Mi&dZqtjf`+uT$Mp%_9vl#-y&|5Vb=lCJ19cl0)@qj;k_K7!bS4Wg-n>>D%{ zqymik52|`GcF?Og3KiR;!~CD8MW=bFWDfU#fdfxAT5+G|KMHYd?{3Mit7)wwbBDS3 z_ulFD)u7zQgy&<#j4FqKk;M*#9m$bk!Dw(q4lCx&Bc0P(`i7^=Tk|jfA7?JXg zOQeLcWD%AV%7$r422<6VVhL|Vd6)1`jTWGBGt7^NnYD{hQdOQ+TgY&Tf1OnVH_W;O z6f{-@jiGVtZRX*ywNXCQfOwrlDSj0if~}nzhG{ye?l^SDGLXf*&84=0;(cJ4h11vH z(tt&Fli~wDNkGHC=NBLW_K}W#%z9*DRn7)MwFw+2DFi=-ch(80T+61QEv8t{!LU!U zZ;{&wvtdRViyFhsOLPX!Di!9+rruW%WNY3^Lg1GQfiJkd2e*2BB;)83nmW4h z)V*{DsbWe6W`)q{@j@hLMJ$)o+p^$cn29X;9W&OFX6lUC6!TD17jpM^Hs|OBqE*oT z*|Zoo`kU3vZ?7!-I+qf(5I;WTEmkPRSRpML$yr`)msYWE8yo5AtgtN4g=MlDjK_Px z7{U&5x0Gd7Fl0}Q-zgfaz+O&J?XNopOITVc^27C~L>POGGmO8GpmARCGsD6Wsd97S z+xH82yC9Q>6}YeBJAmyT_+#dcn@Ax%8Fe`8yc6z*Q2<*%rNcY^UM=uFbR+$IW{N2* z&Ff(fGNmoy)dP1CisALJBdfz-+y=+lF{7MNOLAc!juX$KBXA3WiwS&1#avyvlAB=5 zD!CVCz~f|bi|JZwxK>QCT<7NGAECb*TvRyV&2KA(Q_C1$L`ue8%%5uY;nC8;!O8c~DBHc`X&4?7l-rdTD)}(LRrC?7$5&B zA1sECIr2dpSc}n z;zVsCf|>y$;yn@UbVNjYBB;0^q6rafYjKCO~M zab#?j$}VIf<{+PB0Hk6h#q$6S1hPh7iQ95B-LZRF-^>go&y~=KoE0mtOM z_q`&qtN9^kcH(3@)tYw7h?F(aGIk=TpKYCEd2R#X9P z6d#Ogd*av>#HA+3tx|DcB$r*S;#v`xpex3^eV>wEGFl7I2AuX&ke~0UOR_&gUV4^F z;&$6+@P8?mtG;r5f~!p+f9TrHjHGW!}gO*Zl-nt7AqeZ$B@ zcp7eTqiY>t8&veV4=~`tqbY9|Bb)Nl)z5tX(7gv->z#IAC-FWMM!fkbT3o7cF^TixbEY38rtRB(sc-@Nf&W0u>1pW+=jBAD+n7Nr@J zUAXX_d|R!-CH_IgpYeoQO%nt|RC4-#@=Zd8kLJW5!*y4=e`?ELFa zUMX;E=ao8K0+?F#DXmZbg4q&|-u$tlIg>_cOP@dvwIS0PTZ(K~`W-OWF6t}JoZHQX zxPYMP4t;!27(Q-vGCusIL(f(ZTf41^>hy@YX7v zf}G!Md|ChbkophYdD$JNM|X^enfY7UZ~9N3w*Yfa4ZAYC)mQw1qv%)gN-?MA;fsvU zyx6nbC<*HlWwSesx6E`Yoc$IuJ=B_01Rpw&k`L$rx^N(gR*bgL1`)8wqcdDZIL26&;A(&77k%EqJJn#5Vj(_MZZWY%oii2(J(a zU}JgZ>HJ5RwvpJy$)z8W(uHRdfhoNu3lGRm#*-L$kR3P+a#*;47>PZK2>j&nhyDew zWT4*P#rJd2^5giWSel88>JyFE*+Tf)Gk!D1csSR{qvI=-`4h^h*3)48Y`EQvOrRpyh7F-#`%CtKm;1oI@`=r!6q?oJ1pHz`W9V?>n{6@iXg?< z;{ghySUweQ@d%N^~Q1=XI6LVcCoged`bd>zkEIwj+#Iwpb@3RIT=d9pt zhX0r82u$$qFKsurN^LU^Tdu*z64s9!WiYkugC7IaeHy|8;EvH+!Xn^n)Rv4IYHQ!D z@B@A1_S6nAuI)$e9dQjPFzCWddv z-$wlb{Kau3x3P?B?))_7hn=yd=w8t461Zi?pc`Q7&mbGGyE+w&*m{tpYzJ|$I~haj zcWY7#v)8zaez?Y2lx2ojq3ir7okhcN$j4{m@$^yPLEtzxR}0V?p3M)NzR$2=7Q4Kf z)fO7|=Ws4wW+w1|Lb|n>n`>`Tzua`d30&XCJV3VUiu#VHSaAIhM#sFIz z@sU`XQKcDy+`d{S%+vI<<-?1Q`!v0;d|Zi-hc%sM;J(@%eB7()N91EHKJL+U-kE?tn!XPob_F+Y0zL26bY6F`qb4E>&PFZW1X9t6zr%JNSHW@TuP5T?htc13B1Ghj$As{?fHbFn_!57uS z>(5-cz~?O`6Qsr_AX;TEr0wb49DN;X)s_`ww%JR2*CC(1XzF4X%W#xbgN^ zFVfzPNWmsR!Khe{Y3{yi#t{NuXCS2vom;}DROD>5>)rvvD|Q+?LDN4VuO?CTPra#m zn!e*3slndVnVL>tJIQ7LvnMqd#$Pp|UYz~7jzyapu$iTrRw4F{A)A}!DI;@%0*7jms5Qu zgVlaa;b}-*1tjbWX(9z!x<*)XW?*BPHjXg1Rzk^Nsa(7Y&$%vtO|kS^S|_ zS(ybIL{#$F1!Tc-I2)m^grF(?p#t?R{?taP*et=x3fxY0gFl=H9 zqi}-Ua8@V3#$GwK&9V=I_kW_0Gqy-m6pj!cLlgK|B)H0u5 z*Zy~#Z~pL-%{PVf%*WYRDxUu1hP=!qafe75+eFi2sP9Ix(^c zX1vq@Fq$rNCkBEe{ysDE-d4fkPtY-P2N5Fy$K~q7-r3`niLf3Pu1|M=;D9 zD3y6QudFTLTD~L`HUed^Q$m-B1xCqX8w)M)K6PP1)zD)oR94Hse385aF0SySqG@l+ z1O?eECPl>$m~&x=%&L52bNVm*Sr5?P3Q+Fxz&JkEA4ra4QEh?7lL^u?GOV)Nb+hH-w1RS#~M~0zHvbpRol2+4>;NT zoChJhVGu~}EgYLn*~?gu$oSyIVYsDOm!lH~tOw;+%>#0&mt{+LWWz8_riNN(^GaB& z97IXH1-X<0@MdvlgI(y5)FV1fXgz zA4|>N|4B|QkGH-|3bH)%6Zitx&giF}LN(FnbV6R#G!Qed-g^!(@(hM`inbDp|U7Ii^x(%Inpiss5 z1G?RZ0mqJ5L9(hQl6F-w-=A5@*KD~x+Z%F6+<)9za;ZXCT_87h!ReUmO0$-Ey<`0g z?^GGH_9AO(YeI%kQ{82Xfri@0R^`of(@3w8i!6dvFnvt#44^v6l%{(HJ$a%JF2sc{tIEb$JZMueSZP}AI}(Z+GvIb`juB>?gfzO2L;{O2wh*{1E zQGCbG=gb6Rh(#bs62A)(q7>My{zE93v3o(Mq)41=$IfB=G{*PJ;pp77*uS80bk&Jm z4;G}`Kw^mWm7L=Y7M!aEo`fJU`vN=d)n?=RA>8Bp8mFjMdOth&t$$>%90q!vpATyR zY-yo2LpW3@GvM}8tKb6(cz!og!xE~3YQ;rg8MeM>5eQ#RLTT7Uv#@t>djpKu5TB&Q zL!@8~$HoJQ2-)nT&Xd7Z8=XrLOWzyG;&-r$b0tguRKx}I`X+&mbwITZ=ADs5qS$+g z>Z*gd&2t;oM5r(;xx`i^C#2tie&dzGj;C{Qw35XL~p!3yUc@ zt^prF%d`MrnN!1#d@qg?hQS0JQVe8ENZ~vGKspCe0EeUaYZPQ)z6zX!DFim~h+tVc zkhb-K2;w;L^H+6+R|K_YUBUW>A?^AhP=b-H04Pz7UKF#yLd|ApSB;_XK_**WZ5FU1 z{wQp<3bFQ<9JoJS%RW3-Et&Qm`v(l|Z=MDd0@fk2xmDc%suo19Pjhxg3Oo^ItC3#r zE5ZGh>lJlWcG0hWC|#VHy$@Rpfc=jgozS)N|H3i9slu<;<1zs22r(~S6bKQu`0dCK z>+*H>`lptZaE6JDJ=HBsMUKXTb5blGWl3xc(`nCHr9 z*bALA&Mh9?tHO3bPe(<=JCHs0`tMa2;UyPzDX`&?K#$u)qQp`Ymm(O*beruQ8blG2 z5J)urwikPb$v5DE_-J??1V>coU)$yK!Q)JH z{VT=6-?7Y8dnY?^gU+9M109}u&|naZzRbU^;dhC`%S^OEycb%;I%a3OTXjhc7cxsM zqVtzvKRcX4%O;+;=E_$pN*lG zl(h$`SvFFW|DTb(VLHlY6Diei!-V0$R`%OZ2#$tPgnmOsj=|K>bK+)naO%qyZb+Z``B6!z&Vc_%LJRr zDraeHx2$o!VOAagzW5`{MbOj>@i!Qlsm%U37V$x6F!m&4KF-TSIWpnk0UIo0b3)w9 z=cOC|s^vqOX!Tqel!=}%-lk-i&ueiVpjGwQS31i zPODa7V%Fvc(%nGG3=ulabP=Y_9CtU9XUF4E3wjnO@V66~F&X)_r32fMZ%7YQ$M!Ox zC8ZhLbC|J_@nOd2q~dKlt^5Gmm|SobGUN(jU{7f?dw_*xqt)J^>)NhTg132Mzd< zHXmv*9E*{Yu#}OVSZe{GCv*#K{cWB=YvIF5tCj55*hm)FUu82PHxu*cS%`%?epb>r zjdlGAIk(q+2p3-Dl$0+ypp)(ud?;RddFr*Ub`X2E(3g;@p&$zLGT>oJzT~@I|wftHi7{}`Ock-dv8{&}6 zO|H3QLgvZy%Pe|E$!>d26C}0u6FfF*&#E3WL);b?=NRG?#hjjI??G~>WH8Z`9uqY4 z@aoZT)3Z{Ea;d^cUEaYS?bMAfe*zu``P!w+X5V;5!KiTW3 zu>BRA!a^rSmP8Nb4O9g3E>43u{vkR?i3q=pG1#7RFnVPWYn8=VM!NAX~z+H%-~ zVa6?ob760Yx9fXl!onvh6Iz%oG9g<8F|%7P-*-raZ*T3JwaiT(BPtL)6||_}HP3t5 zJo%d>1I#chi+uqV(|HgRoPOpf$R+1ein*=y8)NUU0#<#gW&R%1Q}WQ-fO0JL3vftd zL0@b<6yW0Y7}U(22mU7KHtgJwA@{td0{l(hP`KYttprgBXRK3Ol7&2Gn5Sfk4GXM> zZ-5312{#|@N!HjeMR_yC*xo{4eH3v-pP$G{Qz>P?Juo@+xAwN z2iVEP&LBp9I(AIz?pR;M&NJk(+vMmkFdZX$C39o%AR##;hz|OfBi5FC_k4(a{>_ge z#-ZsS9hNVa!q?mQ5@{{iTg~{i8@Ii$nq|BpqODcVK#HOpT?NH%q%KsOf!3<7R#O^f z29LWTjnT4%q)mxUf1KUSI8)|eh&3Z%&BpHB-cRk$$YvJV^D|`{hnucjqoArz}Qa+b`C(Vh?UY0C??`3Q9POP4?UG=OYS_Q zfDf|sp4~s+2RIpjYB#fD9BajL8ctEscsw2!`;QR%B%#+oDNvZi2by$ZXAYYjJ1aR) z5%XA*XW~#inYtE)33j2K<}gJ}Y?KWR>VE(b3@%_{JqRq|zCa?b8xE0M&)8cKJI0c1 zfhhb;wRgX8$FQ_ z4BLkaqcN< z>(34BD|}eVDe=4^P(qmVj4idB1XG-A;dhev zgp%Lwf47-Q_Se1AocJcNtyN1&OcT5l7{Boe|4In2*l(93o~CJ6i`VsqD?u zhVQ$Bw{NkGa+`uV*LFCYBnhyl8}nHT?9CNlE0p;+GQ!+$VJ}<}hn}!_W^s1Qrxjw=3I z*spZyvtU#Tvr25IF~Mb;Q-*lqDwxUB;D#6h%^F9zx`2d}=Hhf`#93GW32(|GIeXtm zAK+Wzd+|XI;5j;N_j2gWPbP4?3ihm7&3IGAd&-?} z!i3LEFU#KP+@CXLNO4}Y4(}_t%x|<6)~erVYfDdCt5jRluLoI&EZ$D4f&4ueG>MWdsw+Wo-wL8+`e->KZ8#8 z7rQZ@AD8ZiQydcMv`*(k$*^t5Tk|@*7@Ju$(zo%b*noEhzzy-QX8oAiBnJkvvxV8o z>abVjLB392fPK1TuJNI?6QY>>-%BG)m%)p!`0K|Uw1n&I%*jv3pe;^U-&swx>2?>7 zvF&9;tOMiqJdRg?8;tAvYJt8ygM>4Jz!V9%w7@zbhnMNxi{G?dSBv&ha_=UNN4&Hk zqtK9nZwkqxB2lc23E_Rmr=eTpi>=vz(<23tdPEmUCp=h5%3`0&JG6bZ@ihpGmr$y^5 z&rcKbM=`xw?7@}Ws4Mt?+m6I=;E0)Lr1|SoyiyT1x)HPZ_ZV>^%9S)}|3Q^qpjL*M zu-!b~qQlFaf z&qd5P;6?J{+n{VD;K|$8|06z05N&))rM%o187VSCo=7it=fS>_+kHCoi zelPWVV|$VI4LJdKN*oh-ggE`lV_n8}97N5alTnYz3xVN+*nmjGX>dD~>-Me43iwF( zSovwprVgVZQDRq8`%bp@wx_qA_nU6c?&gia45_ZzgBJ(#j}$*(+lTUA%x}e_{4v^? zXYIE}566wZ#h4t9WSztZSspw&0Hmo@JS=KOC!?Ri1b7w3Y-zJEbBdHBc1szq`&wZkuG{MNuTINU7^7) zV0D6jS^|H!jlX(Qnr*lnRvO4;3VquBJ@38Dz@E)VH-lE{38#a3lY^brXLu{Bg;hpFDHr(nwOl$I^Mp~iEOf~x2?~&DiFwiVIj3&jr@8jqr zKPET)0?Sa+Cg3&%@tRo{U*E+n6ti5vM#zm7F4Qd69UBf7N2guk#Es9JaNym58<5T> zTsrV}lr&nd|1j`Jbyt3jSPn-`$Ug$Lwf~9lRpI7?_$z&DCt9C>B=Hgw76Ajv9bz>SNwdnjBnlDR>Pb2lG_sEopcQu$-hD7RU9O`~z&e{|?e>lk`t;0G5E5o~7 z4}r;I1at%;dpu^hmKC?8aweYQ*23Fq6}fQ;cmd|J`EaQu%rO~v0gx*Nxq|uc;_552 zgCRlUf$5a<`3L8X!|O0h??#O%rrg^A=PytYscp3J#4T8OYa_?0l73JUb+W=C=d)>= zei4dm8}hLsYUFPzI-@Cn3syF$X^RZvDeMv`G(wG{JEchQOU&1Jjg~fD`Wt9fcRrrq zJ7AVcTXXVZU5jeK8hA6S*{p(EjO~$k%o)v~D7!R9)s9R57YJv{fo-|Sfn>964Fj&K zCI@50MimZ}h-|A}Vv#C=eU8@%RzF&jX_vx7Vy<9fzAAcR6#FcHq@w_U1p~ zR?xrWI%t$FYRXoWICv%qhFySMxeWnIX&XAlg^)RCk03D}tXQblDK}!$!()#P+Om&; zN>lz0zy~e1c=LB?*4Hut9x%&UYw~z(%CBQSVS_^mfZlD!J9vCPYZtsj1h%l;lmk$$OaXo2TY zaiFfyo zM`~>FcjguL^LOGlOfkTA?F!Cx#UDnfin#p+(41qPL+diTMiq-2JzV`bTJJ3EKXuVW zY5oM)(fSmAUZJSrJX-JK=f&zXd|_f81dDHshYtTQhBKjgKuqXibDhf zILYQC+;^M_((b}~kFDva>F*)G(d=*2v>#CE)h zm|zR;tbh^a_DR2m_jPCLYa!(t3;Lw`8q$I@HrIXN3eMORoY|NC=sS_Bt*rN*=!2_x z{hIOoL}nw78G_AS&6)j!1*yK`O%5%15S7;5v$+qhaBfDqV1w^OzoIl>NuSiB{>;wq zo>$dakm88*W=^mrQyb;Z)I8II4Pck}QpABxjZPe@U<72fP_n|4I_S{+4$7Rw5(gkG zw1bWK7#$64pCg_#!Ai)%+X9U8eR?~h+S?JX_BD)P_z=P_U&Azp_cM%Q?M(;_@-@u& z?Rtjso7Jb!w`(mwU&3cKvps`=n}H{A6w@8g1Q#UD=W71t`(d-8)*2z#act>1Aij+% zEDEr1<3~9g2Cq?H@9ad=C8O!%{0f0pu>fh14@%U62Cl&{qqUe5 zh9&^}HOqtv+|q~OFCVu5-C7ieQ+KNai6Ek9>jgxC2KbaIsJ;v0e6pqw1#m0GVkGbJ zum6Slpaw4kFd~18sgICA9jqWEu*1|xN}$=)M@e9hsb7u&WIwKa=s!jC z`~VP3or85XBHLmP|m@b-OR7?$1afR2opX~`Wh|gM9>f5 zyA{O+6dY}$xc7C^U8{VQOsGp|aV85%=Yd2Y-`vw}i{PcXY=?BV675o5h)_7=n3j~m zL^9zPRpS$GSU42dP{L?ScY-r4J%(yFwIBjpq;Sb6GXT0tx~TPS%<|ZVNNNF`SfIf_ zMhi@xjfIPc$(dpXcm*fq5b?FbG5)nqkl^7K63y%?4gMnnCl!<{Yg+fUN;G;{Y%)y%bEf5pU>B@9{1 z+RUnTfFr`+`8G8JE;U9X3hfsClvD1#X9-vS5)c$Kv%~KC@?Y4QBCg|*J!|wrf%-b8zDBCAPW6?gzK-L^)GxtbBalVvoBCzyqf0(GIFORUHHc2@Q+)K5k1N$j ze|*4Z>?(X=%ROrlKi4-Hm^=entQa;P*v`met?;77AW=17WUxN}FGe05qUWz;@8%6b zsM^TOz|ZSO-UyqI^G3>O!cfAMA~FNlePGnsm$v{TA)Tp{fabC+QrMU}!dyL4h-mF# z_S-VeW%6yV97zH;O&Wy`aX>WJ8#j*xmLo~5HED$-_tvt&-jm3|afm}N-G+dS2Am9_ zMUrsxZ~RE5*2Z6yEF$k-3jf7?gsz=Dx>Xhw5)pdy>udg&qsSRC zb4S`zIz87)uQL4{4se_>78_rz0G1|aj(u5Mx&7L*51n;T!?!zfAueh;jZkYZ`JKOX zL@GApDD)R+dSok*YkSBCxp3Soqskvr1MvqCF-MznHQkGuO4VYX%@^Snr!?1Jh zvkynHHAsf`3dpHVw@X&aJ}bP4q^37gnT60B;7I20vp*%F&Z_+eNIvYF#s2;oXOuwE zWFTAM?;2e4N%m1$uiNR>cKV{8bWyGH*QlT8)z1s+=SB7NlKOdB{k)=naFq}0YyMjG z^P2jB!pF$h)z3QhQ%#{fPU_8HpV&U3*#6-^(9m8|#U23-IQ3MZ4?)@WHuYuR!lq~* z#?YKK#@x#>ZeK78U>TqPqEV2GpO=h+iO{Cj8Z$>}>!&<#RO|s@#J_ATp@xUhE5;J; z03!6Nv7}9fUNe?7BV^@47aX81@u61#2VH<+jaM;45Tj;I|DTw%YpaL(*IkUi02R1` zM*|AUVBlc~v4*u+UgqL{Yau8l0$p%_$$|KPp%?8n-rfBXR8#FEcv%b=qrfrtQgDbS z1kiIZ@MMPGgtVSB85_V&0~M9dMW(V^mcHp1znF@v>G(Fo94l0n(pls8jBpI!7zNx4 zr>KdATQF1B|ngIYPYDigdZ^2mNBUe~P{1MGw0Q8hG2^?vkM;fXI$-qAA{p zrhf&1mQ;>@O|$egvM)E!bdL(TaUYB*aRnPD8e|Tds>7{Q545(wVSA%>(Qo{NY zNY#Ufvq(0xpVQ*-jdyWlPeDYcn~+KAF`LjCcnV9cQ)?;0686{Ci;z;*bQl!Iqge|s zwcpCR5O2>hSM_2f`#*)XEb|$ED{G1&r%}fIr;NSwBwYMy_MZ(kj0A^O%|YyMnoN)v z*&uNhRDtBFfPiEs<8S_^>x}V}6Ts||V{#nCe+a-d$Cp;?hk;Ob9j;;STI_DW$P5Xi zNUXMX`UGb%-6?l8nQig=Dw+I4MdA53x$C3_+Q9ZUhfN(7U&uialCDh8jK6^|kvB8I zh05cF2W$j0UnGz*#p*@&fjm93pk^BIM9;Y_eI#Ln>c#ya4>zJ|xR?AsPTHYaGexI& z3MkhSUM=CvCH#zpM@#rQ{DrnX20uZ4jU;#_;du#p z?YMJP#)w4zryc1~k?%<419oKlCjyc($kKmlN4}*Z4@%^GJF;FyvfC{EAv^LV75RZg z7TS?dsK~<-xxkJrXJlC|QF7o4q5d%fs%Mr?!agyQSRJ>$c$pHPtOz%CmuB(PUrP*g zwWZ%vUxYneTe1R^@2QRGSjW}~*3(uk>HCeHLrwn#x$ukvlB7a^dwSVPwfcDjDOM1I%ZPYgGGJ>ngx>g1fv<(&sVXO)=s%9Dg27UMorIlSb59f#* zIvz^NK8gsEL3=fdN;bYY0vX>n%2%qaB(L$8XYheHBN=|Q0|*-Bs~D5##2&iJ$DYH} zP}sW|T6e6atf>a7gCFW`xm@WC5hDr?j}jc3z6R+^J{)bp6O@JUD%;oJ2(#-maK?1B z!C8n6iM~M?6tX8a9b%`17qNbb?;6~vbZjM!sEd#~6x+ukdfErs^I@Q_=zG^Mf@&SO zf~CfeDEchBE~q}Pe%{whao@(mhwixFsAlY@`|o)O9k3WdBjm&1vS$bp9C-57wiB%LY@&@i zizb5FrqI#f*}pXFz7}2%+xY%aoWATenm4`g*RDGDDK?|0;Gyi{^(Ru{NOC!;PBfE% z4mt-w&q@HDTJzuocaI>m=tQSx%7b^q?tE`b zI?A3+psQpfc!S$h+b%#YWJRca;AZ%1sgKbzgJ)14TNBuM6WS~*;50QzoDqNBSm9j= zSaA8sKAh&&SPlM;=sPJJ=q_S>>=X96A~T}xnsYG zCFQsVIWXFpgW&e!6J)@edlOmT4+&6F%eeBj_@u>b8gllor{xnbZcle+>ib~#B;V#r zC)WdT34x`-^t6#mjYoU2NVi<&=JIubg@7<6fOFP>D(OKB*zVY$=80kxypwI4;fB!& zD^)0XXFD@XS1IhubjEXssK9$nt9%gb5~tY)Zb?Hp-30|;-ndw*wxkrH_;k?+MxX#@ zKYgf>jqTjXfv$I#WEstUaQbk%KHlW;AqqGY`0G60zc6cQI~pRIf0@BfAK`G68&9Sq zl)ba6Y=_K~&52!btC}8#WQG?h0Ht9IYBtI^&f`D9CSTdfSp}2xv_Jzumz|t4{(6Mh zBWy%2ayVucU^ie^fflGo44r#W6~Kd+Y{Wj>JSh_&c=sLVNreOK(Z@yt*0kxf?Dv8d zBmE8IiRMk)sRlgT-34XVgLi2$of9CpCg!*lbvST&-DHmd`q{*vO)0!cTXF;FtH2fx z)|U1Kp#|Y-nm!dNqA%D82)yJ5=vO0$NOqmCCIGA!7>y{7ir!r;paUevU~4;${lD&0 z+kV7B>LxWr+PuInoZ&8eG$C!0M2sFrVolL6@BbybXPX+Hi%?I^gA0F&@hd|a@&@CV zL)ob1C@%YbV${YTC+Os1Gy!&XJ;UfCBD~=n!>EHcjq9Wf3m4r}sOeNUDBD07hiar5 z+yTKy{~?o*W=(Q(JV$n5N}E9!DCJDm0++Jf6pu38T`aqC2z^GdI|jV6pmQ%W?t z#$Z(blbR-uc?|+FtaPHd)syW%K2Qrh4GgUDxFUZW4)N$!u0NPXZzn9r%SnQA zM{m%DAla@J_9}5dhz8YMkhr`*kcjgV1Wz$%V1c0Y&Fj!A9MsB8rMIDX`iMKz-YNY| z(xup4gM1=C6zd_~(hnm$I7_7GiLNfJ15-uo*OvSNnNMx&I2Y4m^~cD?$I=~`$O3f4 zdTQHOlEC5x8!_?2YQHgBse*IrPnTN2P;`xC9yQTxe7S3M8n-Ip7C2fvF z744?a(0*tKa&N|{aIn@Bsc5bKF4>@t(_9k9Q&Gn^{1+ye*sX9Pw=2H55P8WTCfu^) z7q;Zq=z`wdRKaEHJb9|C``Slvx*-&6#e^N+!Ma=faK<6^n2nJ3B4;~}kEb%>IoN@B&{VALBp23GPld#4<<&CEWEgS=64kjKq_ zid$w^Kypto@1A4@+|Ei1Is+aBqAnHC)Hgf*ag)G0MM1Ai?@La4FfQFvGV+AUTTqBSZ+fh1|Z=a}d5x5=o@%L{0TJi+~doZ?o&Pw+oCqdtOf`dv806hn~7oDQ9CI?Q#k3}w!ws0LF zgb(wt+~D982l;IJIW17e*wtX1zP&}wIX3}Xx6Ts&TK-L2uuY*ar>i{DT|xz$>iK5; zCgy44jwNnls@7iz!(yUibYgI5`b@z7<^a(GL6!B6)3T2L&a88ob*qpD6Cz8f39*C1 z46}x?t9TtIj%w#W%&}mv-jDh}?(#R{?LCf*jcOx;>}!dYe?ssk=AX^jj#wX(9>oDe zv$32T5F(;C`4AF)0V9A??tNUD!4+S2f$w;U_Bix8-|DdaTaiYyx62V_>*;#O#dunqK<5Ok^2pNDe4q;Dav?;?HbIv8b-~>>8 z+W;Gi`8c8AYy}%&fkkjKc`Ey;nqfqO8;2A;Ks%qyk}?vezOBDZ^*LpNL7))Du!$X( zxdVQYhX4WcOFDinox{ancX@k1EVhUFyM~pXInO`FQS=X6NJ!?RDqFjztiTdEhs^UY zy2Me`;al`WN6Dvl0Yb$NGDnV#ljfWXA_cJk2{3k%7RVil-x6)<$0Q^8tH|x&L>jsb zamuAUa@P_Jg`aqi9NOyt@XkE5n#iyRE`->~P9Qa?%Em{l9EU21le6duaVq*4JzR4K zV4Is+11{|VfWP}{HLxo8vD-0j6LR&pK4z5(RD1O#FY9g!Ag0};*d<2>Q|Xr=G$*nD z7?U(cml71cqq80`0cFTN>v>*u9dWjYa^QAk11(QLeA`>E5a4Q?iY4+`LYUwD9dY4B z+9l}!jk)-sG*crZiNRm<61o>G0w0QiFmd5@^K;C$C>1DYsUmmH z)c|j&>eG-%F?G*=6T}SIhUZaO)xuAw97wgp&g@zYXjp~$J2frvXQHUS25Esfz6$)? zUDzS2C`6-ioC&?kiOe8QKV0%^@W&n)HypxGd!i2NFjV@)K1wd?@z=7a(u-EJ4(NBO z!CjeJP#=Iu+Ge$kI%90gg7aV}2M)>J=c{Fc6RU0==7;xz^J?xQHqzZa7|K*G`y~W8 z7JF5@Awta%Wlb<}4m$-D6E0RH40(`Zl#RX!9U$7WMSU%))q^yB2r8>0JTaBiG@UCF zdn9BccN`PE-J1SdU@KW(F<}fYLY$aaR7?BP=&c1##LrRR{R%xC7b06+@RNq64Y#@l z4J=e;<99@wBgI%H8{9!|gc(&-;kb+y$f!Hhwqnf@dEi<#PDhnc_Q8WDCH@7U>nRjwMKNhNheNu=T0x z&$_zfzri=O#NM^?6R$&SE;~)P4j?N2tjgHCtoG&wFqE$$09TOXdiq+IsSIghSStpB&K5X8w6QFF*+#PPxn$UZ(_xoB*DcuiYl+j< zS_PN>_RNSXWMFug`%tM?`D@G)z4GHXukohTDO@>30K21+_?}Y{qC{~d$SN1 zklfHwYB-3Lsb5cjkU1dXxrLgA8$Ik$FhJ*yi;4c8@!3z^oZ)t ztgagjCJbj1M62D~z0kG5{XJvQiTZ5P*dq=<5Iv$y^qGs)_nEoAo=;63MO-@TF6gsH5q51dB;_!S5+BG;coW7IOwu5WkGn2Mi* z$iOz1lC4^3`?dZLpZ0IRD;`F?RZDdU1ZYa9LewM*(EvP$^2is`_#;B9iy&u#xjjop z;?JQZ8!d+#{%#lhsv9C*1VmAPf46%x`Jw0l(R9R%B)cqxA8Y4CY&32HcVOp#JP3ee zozN__QVBYoVo|LyeJH4u3+>f<*#lDQr>!Q6hOgGv4}OZ3_Z*zv&IS-!YvP&$mYr(x z1W6N{6UU+xCL^o`QVME?vqLQrWW9bF0Lc401-QL^YTGgF&f1zQA#!u}he&`zImInr z2;k=#@oJ2QIEd74g`!5h0;6GUDcsM1X6PB?r}(ZRH7M6a?~C7qC^RzrXw50qWxOtj zu$Bmfop^|&$c?Ss#~G=Zy`Q>a35-289t?a-7Nz)f*W>~&R3IMoaRuP7%cV%QE|uIhTH#59F<9}jcMgfFqIO_D4CES5UgtA3fx0J zgm~WP7k$DNZ(u}`hYQf-I5^`yKrMI*JPC!Ge9p+`0{t5wY$SeQ&N6U%f*E`=tzEsaA(Sx3u}q?r7{K#H^hqhdiIN0Qt(Kl>VK zbZ`-H;DB2~ip6I`qHtORLAk_L+eM3jLi^KX^cojPWLc{Sj;ldz#i6@M!*w|P0wwfT zKp_&s2=RdgM`juV)LBBY(P=DnO%?=u4W$mu<*A8bYYzu7awK*^isNU-Ceg$GA_tQD z;*XHYzXx#f(I`_h5+OyoTJlGHI3q7dq%E+?+wuO4yqaYk3|-6QDP;ZSlFTQ|YGyO} zeQxNY+gg>5KzSoV>@_RzuK3WeAUWnCn^i3YUJ0 zNA{8tKbJd;;_L-mYW6L>r*tkFQ<$fqMB-DvL_<-dtlc27(a=BzI6=u)NLBE3zZQEZ z2rIzB^UM0t$#o+pvjK>8Ft*!W^z3FbCnCQ1M`D8PL)jI3BCZA)WdL}s z=5}OL5+*R-GvOWi?Rc?MWPK=~~YG+n7a3!}uRjL?kXepaMGFI&#qCzBm8M zZf?94O&MFP1wI0^l$i;A3Bdd^fxk%}x{n>+p}2o@9`;^q9zu-q6p#Dj5yaP&Gsk{# zj43$ORN@rYkDx+KnMkriiS>_xgny^U8|XbUPNN?P52&~xkC;$cVr|2!9|8~~ zAI8XHbQ8?4LC6r)HzM??gy0WcHzl+gp=A=SXZ1|cDM+aq!2*6c%g6o-9*oWa9=J&**c4r4O46qIv*u-% z=dZ|%Z5Y~O!4PZj3D{w+V9D(6_RF!f>N-Pvx^A+SUV71dP^eEGGY3{A8Q^SVdH?a@ z#@|ZeNowM_W^1Z*Y;^cJ!82_)js-4KOwf)nE7jX zr+4A4+)u_d?dOL1>4VKrl{hijb{xbMvx1qp+qne4W{5P$Sc|#;z$GU;iCuQ$S*-o@ zDaE*rrT{BZ;88KBjc8Q~`3)812o^!W#z!_x z0#TC>SZNh8ECDxi)L_vuoJ|<}uZ4JHQKx%4>8 zn*xQ*mH`lIe#71|6jVR=8_Ad4eDrhk*^v3R}%koDz5f-lMSpI zxj~|!28kMLv{8x0mMx)fJ~lxmh)NKxD1M=|Xn8f^LrJn>_rhK-H;G~tEmZ7_l`5@N z1(uIMLTCbN+W=Nkv;sxlHPkoOng&Gjf1We5Nl^Q~e}1}|nLD3n&N*}D%$YL;1AMMO zQo^ioMR*9!NRR-AWjn8>Sr?$ z_E>r=Zbt%kkpo7R1iRK5n*gxtO~qqd02 zs;OJv;^AR7ziIgtsE4BFrRa6Aksn;;tD%Eq$XPcLzoA1Td`rn3;N`2g50h~7JG4eR z1U(Pia?0C1T~c$VVb1a59*#u(um?j#S8Z6d_s~uMX)pRxoUD7cjj`>(RcN449rTtF z(~AJ_%0|p&gmCjXIqw|UAVb7KK4X0_h*`w-!{p(j8SeyIB$enUsSuzLbApnlw# z4gHP~N{Z92ajRgBNFKl%ST$Ybf+B*uv*vE^raveIl1D8xs$`>Xq6w$vz2T4`*8^1B zSPQVTWRkU65HLI&I0~M+75%tVIvCiBQaEf2Y{TDl)fStP_RtnmQ=@H#y`5NcLd4MJE$ZXrjE~25W#7VqGc1kh{c?SVOi=oO$QGt@l1O@y3nU6U>d$ z&vk5XI-ab-pZGWwMz=D-28c*9eG*sFBi?61Jpg>G%P=z#3|4MI=nR$kdjtncVk1Id zQx_G8UetrF>R7+a1-q`nKUXWoS8Z8(}=us@FUr$O~c1{{w< z5z~8LsM*?Hb12B1$~gN#b%jrvyUF4g{|rJq?}S^}4&a0VFD0ghn$mRUZlh{&sJpsq zZ?qaUbi9ezY%lSKtp0qfd>$`F1Q$_Hv7}8@4G|}Mu{@%D zBkEm@Iay_ygDesAW<+B4Ytn@&2q!T0ehDi~ohf03sgy$#m|8Ajg{gBTtT1)HgauOr z!9FzoD_YS&vjSlwEEe<17o5VTf=r$!aL^DWIjIm>t%5A=(M#t+lw-6CvH?%_UMm## zKtX~c|K1aVm*R=I94R01-tSrJL(S`)=YC(XV^&{6ue*_)+a!`dnsmdKhcNQMRD+$6 ztAnVI$1T=?eiTI*wFM{w%4#B;4-nUi;eh=&$%wG!Y#%88nutKr1Gdtfba~M{w+XK8 ziFp_-<^?D|32HDUij+b&p%nA%zeJ5ow+TXds`tn!OJ+QX1wqRU_8TYoj976}kHZB% z{v=642|BazNyLej>~{Qh-_fa{x9XO^D|g65*-vT(a6_4;{#i@%LtDCK+nN(5i2 z5#wB(H(mum2OB9ZVZA#9K9TS~67L3KeOusBG7csrHTvN55&^a@&43witn1ixMJrYDUSzzqBy4!_)(9FqiGOaI-)g4)f8o-yXp~KBOJgu zAiKq{Mz4d%V1YaiiyFPCa6Ivx|7$F%*d7Rfqhy4D2yesDWc)=GRZB+vM^L?K!QnTU z>r>f-xU3< zMoN9wIt~O98nHiqCO~?8BjvlTqu4K-0~xG%h%VCc4QAaP{~;n^DPFW0>Q0qy;4IcP*@G;D z;zL#5L3H->`m}h8ih7%#CpF-Pv`?w0e81g|o27gR zd*O9JD2Oy%nRQ-|qq1b4Enf1R<2hB7r#laXIOa<3IR$cW=k-$LXP?528w}5;aG6!YqLnFc%}dhhaG0 zt~vU?HdYvn@CP6aUY1byS0WW1hPnWjq+&Rsudc-&#`w5R7CR9R2*41iL7o!pg1i1i z03^?zaD3Zam{O-ACP#ZX)YER~BzO50x&^sHffEDDUqe|pRBAM`B;XQq*&RcHCOdMh zPEj4|`^)qfIN4b@9x^|^eJHUq9osFj$vW187!Z_ENGkaK*1YV2!=MN8 zL?Sw*XQz?j#0*`4OM8s>&XUCROc`b?2vX;0a~TUSrZB3O$!nw^Q_!Sd{zgl}Elg17 zwiipntxV`YXc)^0V|C1*;u9y7T>Tj=p1Ps;U1EfeBMVCoCNMtMYCRc5Nn_z8YHik= zY#D1YkFU7&sT;FIK0Q23E*=8)#)S?vIT4n%7E==knb-Ljrwu1Hk5R_P6}Y-44or1> zB`_*s-e$fBeGPU0>o~t^|D^O+QBgI8sA}p(AWGnzus;vsQc6^Dm0xyz+q=L^eSpX` z+;SPV?L(%KP!&q?40Ws*tJG2|wW;537<`Wq;ktO8BFD*hifk&hUW z%h=gpa!5Rx)ho%iuK{v|S7MT2m)5rPe6jk@Uyd` zsVE$39mN4T;j#ClY^W^@F|WNsO5WBxC<{R2l&oL{_G7BmA#9cVUX}<;tfqy#BwV8u zfHZJ4#)blc%Wv`^_nA_!ss%@FGSwlI*|N0pYwZh|Y(=LaPFocqbk(JvCgt!Vaurq} z*#BNZ$N}26&2w=;C6kG?9zqxwXu?;_M|dpe8XS$j19F?Dku*en@HCR8o!40j;|=eI?Dz3t?$Mf&UW>g(<73^K3BY8^4B>DX$C-HBM9 zN7ZV|rBY;kK$W|TwT8O=`s-(U0k~d$y$4^_SpZ6mQEAhW2IZnCE-4$~%Wf>_z*V*b zip33oa+7;BG-H7YCAN>uB|Z;6dWn^;bp=uIi7)@%dN!rw1P{d&rN zp;9WCqIlg{fReW}W;01`IWE;nf*p!+4An`*4PDTqlZYa^;9yld$w;@?vsHS)+r_%r zpOA;`1^bHq7|awY;l5(4kx5}Y;Ktk$eiLjCwPg8}(Qn;9ktu!wzG%kyflJMH_8x1V+r+?(q>XotCHgo!R z8VfSO7O`PI3Tc#F!KnQgIpoqHKEueLd`66|&XetfmR-NOX>Tn3byz`-Ht3&T0@&!iGb$G=Y~|1FBP{d?ZY!0(e1?cpriqtNbq{ zQPI`O{)#2HlDBa5(+w+dfVIRH%T`~vQ9Bf^5YTFM1jp+$&rG!^Mfg$ zyC?P&>=h!-o|HWI?B4~Cey#4T29KUF!eh~X@F)}n@HB}-yvXa~GPJq-QV`G(|9B=7D{DopApnLLBe=kCe#&+$aIpV%I` zN!f8j)4u}<8!1ej6)Z&^ye=0y1_N(;C`p1q4rj|JATyRsK{`;15SNdl!h`KX?KJidW?9s?9zlWJ9tf)N z$3!qXhwm#%u*N!4u&oyBqn3S!diTx;!pV@R=n&hEL)-+Oyklg zO(?@KW!t278st{mXZ4ti1P3kdzJ&-+VlDOXQTvlu+;J+Adxg9?KLN)9=l}LP0B*zS zxE-sx%mB~DS_^SLnvL?ZjsG)J6e{7c2U&lBI65kKy8yp-r8~Kkc1$+aCaO0g&jX%f zjAjc^?WYNHYKYwXoE2UL6j|41D5^3aMw@*`SPj`4ZlZls*CwtoWbENJh5zK;qJ^4o)( zKqMQKtB~nqr_aE?Vfxq!*Y<4{m$G%(x-L>Eu@S?cIi9@W>@x(!H9Oe4US?6fvyMkB zym8}^YJ_cw#KL|=gL-hi>s+i74TqY7Qdz|x(BilAIOe;oQyck=?_VIuCe2$g8{4F6 zuC}nC#i-OJ5X?gC+OH($tl&f%TH`!GE67&-?0|!gjn>DPQ z_W)|R;&r6@aYBU$m{1h=z~%4gCsH`@*&m^^7fFiTN2#NHtn8O8 zfMPV@-3UR&wP^x=tOzYnHVO*VFJr=XTO0tZ8^7C%DR;cWjTu}fv3haJis8~{0x2za z`2eb&FeP-%knm1_4T@EyY|LV5$|8!k9|jk|p~?fu8@sOtJ%KPI&NDU%X0WrQUG%et zU$Okx(2qu|f2ND`o9^nP#>kh1qFNmUpmG|ARl4>UTphS4Yh26zu3Lj&eNd?VC2%s3 z$z?b4o8FT}WJ5yM^`QnN{PL`jDxey7zY*(l3uB7RVHu6p_6BaLfM+<`-O1L72C^k5 zF=8Bpv6yR|ZruoiF!!m_9L_pPc%KPMFkU4IVz(gq^id4G4_bwpc&S;n&JCz52CVTO)gZPd|g0b0m~hoaRStY;Z|V^4&E>Kchc6Sb2SoDPrLu8z}7YOtV#0_(Kg zX5yNMG_6XfN33om@&!wRt2c)Zc3a(-?6fB>NXT&+^_WCx@c|(B8_vVz#Hpl1L5^PD zgHgs#V3zp~(89~nLr^@6!23IO?{Y>`etFZUNx|(GMetgM`U*jRBQk{!CF9TrS{he7 z4_n;&>xu24W%3{`o)3^DBt=+Z8;jDAV63nAgE%8}kS{s2jNq{< z`ph?R`44hIN_9MjfVdei85jpHU}6L!0Hc7$CuieE-4(gUMIbh)>UWt9A;SiQkP5ibDG2 z_5ZW=Fl#+=V}7w(aL&P^m^h2+Rg(S~-j!&cnvP{{Y75HWEN@v&7L5Vc+YE3)%_N>h zbzHN^z#L~jW`zJ#HFCYu+RSM`|l~vv1kZq0XA1nmyv^B{U}y~3OZ(5s2nq`z}jVOsCdt6sX4J0PGXEj zF9SN*IsUZfM3}wmoShP708qN5Re(cSp@Ud_2_dqXd4M9GVQPDL80^XLr2T2(J%(A1 zdRjfFW#;>uAL?*CW1J~Tt$z2ZW>>}Yt;y6dDWI>rAG}HGr9B`j<uY z?9oCD-EdX&s5H$-_ZUEFk6Y32#AqeY3<+%`k3fOe$=s-*M^49Ahc{Xo_R-%pBncDy9 zFx%wFLTw&r-An|W8;)CI8u|a>+7Jsa&a<~j-(Akl?sB*_P@6&PovM#9f8fKlvTI)$ zM4RI9x)tDtv>{3ZF_QFcuRg_ZZC3`8CBCE8e-~b%Gyo8ZWOlJ|&Tsp=4;Xxy1U6SY z;52Tk_k)yWU~2Z#tczT(4}J+w>9Ptu*1i-9Hf;se5aUm(paX2d@WeLeEzNUv2Z|g`&Krl#p16RdC9?=h8t042ZFB*$$q~ zZ=pj*bS@>L1Qy*wAhl8ynPX_p^DQUPkgMSM&~V)DaZqW32mMN%sP9#!HK zG1jQXK21z=kVg73q;9-EgL2TX$_&vM@=ZD?Y=>c^5g7y&vRazI8UTOI>TG_|e6~V0 zky<;W)-d4!SiU~g_1(%GYJ0onCGeVxRIEGZ5RwMyU>=eHiayz2+ztW=9=I4|9`x+X zS46E6rgK29)YwPMCo=;X?8U0(jWn|~YR?6qvmYlW;PM^pY}XA#9;0>wisJn~&qi*^ z9H#LV8FQDtP%rZE>VQPrL{`B5R=P*q;ejYe58B51)A0Y0!brmztPi1ZQ>1~ihY{Y7 z#yle<18^&?p((rz+cw_kEl)Yo9GQT%*JOzkJM#=0_DZDbfG5Y0H)u@O07QmaqkL)p z)Dt>rKua>`o}R3Rl|X^5YY)Z3FFURL{kkL@y~i$Dk0Pi517I6at*l z-nElFT2Nk*$(I;Kd_9B&Ow|3637+^Q6h(MOWG7HZj@c6l`1m6gevlczufp(21I?0m zC$kPi60TDl#-c&$93vGa>vc%8W z-ewhkfZ>-__&$dJTZN}H{FDmc%dm}b=xB;zE>Ma0L#>n%kY<2U_^kb)Pa5rZyL$odM6Ith=}d^m%@)qRF&BAK^uh_F+$zDpf*FR zrY^#|u9x!n$o|Z6ET;}QX8eZoz<5;=H-A$kp_B>Ad(;b3WFjjEK%SP^Bpv&{WS*j9 z!zFeLi#luqrpORPj74t)_i7qhgNnCGoOP)9dc?^CRuEXWJc?qCAA)_QG+HzS8%t@h zXb284;iRExNRCk}m-ktSkhLS!?`bfdmIdQFR$e|-RT&yTB*(pb{*X-kpN0RkgN^JY z_Lg2KPEP zp+X9=6%^yp5hd(b#K?m017<6|1Xgao57;T=|JM6}jlc~UX>26-oSlDM1d?sXDOY^! zeZUKYm0zU&$5#S(z;Pnrck(NNSdX~>n7kEi+l8&i8gNiy&_HdvJ*0?Ku^a@@x3)Wh zWn9lMLccV+Kl0z)Mf{RX^ESvtqm+Iuoxs7KA@&uHbT!(KTqS#twVc}`DfJ42J_)|c z;2@RbHHI&c7PjY#=J~j^lL7rz%3!; ze!G=TSRF)gnv71e;NRAe3#d|N8%lw#uk~At!Wa!CyjKtms^F^#QpQE=pQnl zIMUa@2v5E24Qv{mQf|q?PekoYm_r_yV3)lj2((N1^qz~by@)hzi$8LE9na9*E%qYr z&)uzk3{hRULwC4&I`Wy~i)~!le@VKPjE=lYObl4DjE#^-YA2q(+fw&$duM(<*q9Xv zY9-gBsEg2EDXC!w8zdNE@Y3fvsY@6fAwh@1bP3klr9ljKLZ&@6Y~7w^mqkLylA-Z3 zR?zOEIHxO6>n=Ytw9~!&C?2#Z&e?qod6AJ>)(0H*IJ@1zF5Av>b{w=GSc2_B5J0f5 z%?7R0!B|0>8VwN|*iS?z_(x#rvTx5c_g9^%Kq+cqTl}S4@L9VgAGdw|`*PE*<@1Tl5Q4Ue-()Vg{bz3~M#`MYt-mO#$PrKq0M4uavy zh}iBY(7+aa#f_!m@e7bm^-6WZS0|`kdn(c~@+c=x->}pZex081x6v7U9XpQg_7=>v z@Se?nb`jukoYnZG1vl}5bq2Z#lL(k|5(B&7KLi;%#(OT3hZ~2`GiN`oRwN&Cb)h@U z$b+j3`h!ZEUDTSNj85ezx8{3Xc}Drwd4tNQ!ShHm{Dm5IKcxKF!2Z~a)}RyeWMrpv zEfiJK5~O6&!~Vvp6?N2&&yQ0QjhgS%1TtgJb8mER#D$&tiPf6 zJ;tVBMLqh!$M;Z0M_Ap6!2W53x^jxpnY1F0pbl)+*cYSjc0ke&yhfLK=4~9grbSzr z0xWwNqFjIjgW(wGsO2dq&+qNK4X; zYQb3VIU5f>>}&O$b*e4br16>_(%xT~Jzux3Z544R)b5hscb> zJIt5xfvS0$G-OWHI|&-po_b5J068Aots#FoigpZ~UZ3xKqpHAecmh$oXfd833^Rl$ z0veb@97zS|CL0y+80-E0sVN^Gx8a*d5mYrUbh9rYkUnmG>h9ig)T7ys6prG$1a}}}audooW)rN! zZeT{3OHK3yAHi_`jEB%XtpzCtc|+Eme9wSL!2s2Q?~Uqpeci6Ewd;a}m~>WmU$Dog zXr%5|bU%KK^0v%y{B25pDwu&bRS>@3UGam+l;H8aXZ#u|N=s2YAhN`pkU^O__x{Rz zpS}JRAoxNycKZA&I4H*Du>#;9TUQ(8+Rl!zHRIH^GRmJV3RU=aD29tw@wV;4FL^iFi zLmDsd6p>bWEr5DeBomtixlv?Wo3brOsyj`63&ykN?j%=#OJBh%3`kUqK-j~d(45E= z)X3n{LbF{#4UW2KID}s=HKk07l4ONl+kU%-f)sUzJHd#dm)>QG&s$3# zM~nXnANA{zs5~13T{BstlibT2*x*M zoyJ=UO7W6wxxssH$!^P6LZdksUlOF%cd)8#1!6}qPM8*UW7*NhxH=-o2$&Ulq7wkS za4^rVoSbPv&T6&=k=5d8@Bsk~}4 z_Kw8-`r9sv73tV!iH*~--$`t|jy)@}i8}U}#3t$3h0>cTI(DYSZb7VBI4Z0 zZ~#XeLIwMD_b=H)&JANJARS6*bSO_vBS6+$5lKtomk}9`@5&XgEpGr5wBZ#oa(8h{ zXj@_gPy$Vg3{Vilb~sb;Y;21+AGkHP7jRQ$7r8TuoO7`vX#5HtNXC1}_i>4k_k8pQ zLcQgeloc=K7iB+ot2+;S#cavA2UU|wt8 zaJI@ghUR-pWW!gLz|z&6$y0o~Jm_1(*@`p29mm#G@^wiA*l$b)9DY*&)FSkY2VL<%52d0o>5Cq zLsnWNlvgw`3&PI3c8$!lyd|h+yZny?>=S}AVg?9`gX=N>5X2@DfjLoE9|f z_il)QQ0UbhqxnU7hPGcF=1GkVZTuB|9WK7% z@v?O4*lTit{a`W;O`*!vf$+Y=gDVkI4D+AJ-xla(F=2K%!jbHj92qOI#;)wNU!^TX ziPa5T3CA7J7J8fbu8Z|Z zJk*nH)Q$wuDbA+qgEQ{$6Y$Eh1L@eC+Vvv|FFxH>b2JDt(?@+8VoUMSE=w0^(RDF1 zTRV-2xOd=tb}5#K9G18Xq;7xayZyNIBxKhB$9%R0j-bmfWn#y5;9~h4V`5w2F#q5@ z69=!AF}vchS`XZ9YU${&k1OruW|kU)JN7GX(1oIq!qwvOtgJ}*42F@~ccTh2c@T@H zU6#i6tqdDHyEF|mY87X)-#hBKK^LtVjYTb%s_=6lYDSMAU1n z$!4z7G~}|9S<$16mvtfzjI=zD*?}W%g-S9i%(k8oK-rUNkYS6jJFxBPT!i+)cAMvID?Mxi~ksbW|!UBOjmWvW}#Rrx8mMoHNy zsHBG)=GWkR2o2dbk(aOu1sQm`S-Ek_ZMqd@G(LuofanF{SF=bNWb>x6Zd7E+MGa#) zdFifkE$aTHj0eDw@nDAS|L8djgRRBFtDIWV$LEgppQ5I5s^LEP+|2Ey&_hIqy9@U) z>V=K$sZgHw`rr-x1lhngAX6q{Obv%s`5~}59O@hT9Ean8za8L!*!fw3m?}a!lQQO+ zg1ItvbDs-U#u5Zz)Usg`fn27L+Z9GFFVrUNWiT<1v2pf7n+9TQk2@8;F0acDI~naT z!)wFk1N@UKkZriKj(TU=K#PNl=R)S?Aa0Gk)e?VM0)iV;e zAPPN^$xu)RK7%i|{|R;DGCYK+9y{G^;==Yu@K~x5{sS5io4Vp;*bSJEGkQBLP&N)j zNR04;e>ZSrA&OfREI||%HD@oy6nKymy{i_%MRc%Cz$bF(hT0{eFMcY z%o1B%tK(ux-3c_>6Tnh^*jE-a>ONo}O4D=q^wba}a;Qui-0)5x6SD3{rudKXBlvTo zsp7XZ{Ks*xtK-+x>w`!Avj+!{PMmWlQcewa_{EC>!m05epsnE1X>(HfrRndUI9zif zVHWcT=e&>9-vv8n#bMXW!{grvJEp~9q}y|{y{+8O#^DwYwd|?sSRip;ZdD$)L$pQB z1#*(2D<8C%h%YnSV*{1ohZ{DM+UxyYGn$1TJSlQkIE~!Ro`_RQOk|pVzVb;*T_WC& z!fPV(iX|zEh;{@P19}%c*W067-NR$Ab{l=EJZ>GC+9DUII-XMWr7nGcbhGT zmqHb4;|Z_c!)IY-i`^l+(1eTTFmH}WN8^V$CLP3HWHlg9{0dEij&f91G;P>k+k?>wc2jYn@vlzUEnJEbK$4PV)2bV}kI zAHqdz_|~5IHZ}2WhHmdJB%n^V=gQFSmFo5;B0;xzU!q)YZ=Gw;)9uYnd^;20PH7Q( zt|)>2C%Q7RV}JB-=m`$kH6+Nf07aY%Qk=bA_B3-ZpuF`Esu04&N!21+SK)PV!csj} zz#J2iLz?I~+@}xQXmIW!kBycYquj*v(|s7%cgSOv;IN_YK}sGA9N#zyg|{u|D86-m ziaTt9k8^VKlIILh=x4qmoCWuNhj8|d_v6Z}X6qxoO%~##4ykj}APcWSbFJ<>l)N>y zrPcil{3N-c;+@*kbU_kRyiFH)^!gAzz~15h#bNy26vNNtZAb76%zU5VF(;7;1X4E- z9D#h!c%s{iarkwnwpk4m8KoS6tb&$N0hh48DA97Ju2{#I9ooWyG@5 zghU+p1aN8PzEYl@aAvjlgO04QM{j^lP?@*2Ad`OiQtj}%BK86}K)Hp}e&747(`!9V z%Q;l{3HWTeK3h-0&ItV~Qk6iTuixZ+8kdN1E?@Zx%+<;Zd*2^H*OZ=(dM0$4M))!W zOn!JAN;Or^*(3|-zG}})#-YK0Z9Nj5=BNy0+rw-M-*uZ zVRGe6Ko@yM5+E}2;^&EEqwaHz6-rk*ELCNG0k|Ors-Q$WzXP@aF6Q@nJlr7dnQR1B zs*8pqjVHcvW0i`a)qKfrny+|Zz9JkRmL|){$l)v0@hrkB2#I_AuuOFXVNDta{RBsZ zP_|L~K9_+~?+kT~PcFIZJ2+`s(5@IeM9z@u9S> zZp6c?o(CU^OZhNDNsDsvb{eLzVbBpdFsGQ<3-mbeEg%?S^AYF^vt8m-z7p!>hD!hI zPYJ!PW`lZ`Kf^3&_!ll9ajn+Cze-}i)$@BZ0GYr-vjt7T1nz9TUn}!Q!b7Qq)n>!h zP@IOxa@EP}sW^y!ZWgudMyhqUDPsh<6rSj|#6A$j@LOk`n_M#zL=G$Z1b>$;<8M3U zRa6i<=2!N&iVW%sqytcsbWEFG@7&?G_BpB5vO`S%4|_#8OU2}B6Z>PbZ?wAMhqn70 zcJ@z1qG*>?^P%q>`n9PGyttP?O)jCGat~ZH%)HiC<-&tX1s^WKn_HSBH!UsK|51`8kbbU z&ffOb@t*i0RE~n1i3CsrEmJl^!oJn}zBM}-5%?yKU=!`cFK1zeZXf=s7Z2ucLxtc( zGHX!(bzH9SfylYlk3oR-!vDSSpVh*|=01ZGC8_`{G2d3@VtHH!otSp3@9+0BzoPAw9Qi%sS>ZoIj#Dk>3C* zRYq+NnvV_O(I55`MW&lChbw>(ds2~xzN5$FUdU;e@%p1&NWWf=lbCcI892o0@yDI0VQ=P(7 zVjT$fm>iYv`;u!2f|JHKM!p+$*h(veBQ3yZuu=C@rqDo5Ib4y6`!x^*w{23fxQ#-d z+Q${bXkBD^awZHm{+_!B7j3%0z9<&U^PS{7dNdc$G1 zOpD_D4MN1aGEt=`wBus{0S&gmB@zuxH`Rrt_nBoag_5q)|s*6 zi%N@>^mrN5eu(P%_j2GCc9FOIEq62_$_lyPR{<%MC8vrZ?C5|ag!^V&jQRSuh1gMsIzahWjy;@&O`5F14w(~>V z&qsmz|F}hNKX(<3NV5lsRiiZkkxT|X)_~moI7%Kt?;FLypn^;Zr86YslYO97Jj^b} z;^eXdomE$2?w!^E;qL9ztx3PiFt+W%-R}IPP;=6BtLRtf75b)jR`0iN z_ozr>d3NvuL;i};`Hk^o zzCuTaL8OLpe2Z+~Qn7ur-YK7MY<)wfeeVHhN{>C@{Fc2jYXF9I$xe%78#ZSY$u0@% z=kMDC!3zD>z}TR>zwWUoc=jF$HG5APfPq^RJU!n2{KeYGeHk{3YHL<+Cy|T3eHUC* zGJj~GCzS2Mq;Z<#^FTS@?5`+fXvByq&!D!VGR?kr7+-v!f=O>H7{;lWj`yMpc&0EW z_6LpKg0&Z2mpmfGl7Xe8lrXQntXMYijAz`l9+iw#?<9pL;HgSm-Ibi{pU!(5V_^sKr62G*GHR`BQfEFvatENR3yCHIasi_#c zxa3evDlBHIX*?9`o+pn)ALe-0l6A;X(0gxm1Y(zTA`{0Fy8|QT;5kwMt5c9-EPu!} zMk%DIO3Dyb60KVW;7nkI`ZEoB=vOPe_LK~Bf5kw19A==x5DGw6y{BvQXK*sK@~Z&7 z258jVwF`sz05TRy*B`*vS?(0*oqYM`gjQAZQ4pu{h59t89=W+h$=KjFa<#dOsr12; zb7(H>??wi7KLN>hMm@jmlrJzPN)|wEPGj4UvTA^fr_lG+{J&Da8R+y$myNocfV%(%HoIzrtLZ-hKkSnKBm5Hj z?33Y_q(<=_@N>b-(Kq0y9wns%?xUW~e}cr{S~kJz>P5bwpGyfoc!!P>XO7Vrgg_$K=L{2?e9J zI;odTzM9P?u{%+DqK>i{dvzWf(#H&DPepc|>zq;h55fl;weThhBpYEMgsUfTgpa{2 zL|RSd5yfFVXxk3NuD45%IH@~1*QE!nKZja{44;me#ZL8pW0)ULg~+5n2(Se zDv$W9Zq98&Z-VF)U!w>e2&M=}3>@hwvfgVxmNcg9h!LL37E5Dx(Qa(S4p{m4WyFhx zCl2>1z-q%Bj=#-cCAp^_iJyTWpyEfRcI6SEJ7~I-69bk;sNLV9AU{B=^;*Z84<*|b zF|AQ9?X>eEP63v*fwPC|>ym~&z#51wxG#x&bgiD_R&#Sa>5Jz4p zC)%xetkplz)$vQzS@9&>l;{#60vtni`l3WbqppT>p~A4`S0}k}9FW_jgrF82zSkg6 zSBtme=Upvn6=hv5nH5)dwfHMC!ut)2H-*4xuP2+m^I^!0#RJq;h%%%B^re#K>DUWg zyPkxehXiPXYpbmtaV0$r3KyncZYYVJmdRt(n`Xj|Hj3}gHw6}L(<8G9!YOJ{5sV*J~TzlpJ{KBaxTPZ)8b zUAjsQ*>@WZ_Umo~!Sn=P!KX%s(T#U>$q{bO0K z6Z9r#I!5>)%5D{Dk9e%k@R7Nlnak*QU_s7Bu#3d-uu#5+%$q%|6Ew_Sa&P{Xk{@S* zRzbSXya<^!#WJf^k8-5s2PAzZVy=!cBCq0-%Jw9+cP!2U0f!Eyh5{=`VX3q8an!oX zN{@iT@~zTUz6fhEYUzHMyuD(jy2$5#o7L-nm*fI~e4{ zSj~mJ2Hde}F`zM4Bv!A(UET*L8Y&;D#W{}WRC0{sY&)>ZevE*> z306w`Jz1e0o)0q8SlI}Sj(>;ZFBS=0`o&{*z`osh76+Gmsa{isxRv@l)+6ol*fda!bPsTpwZj)^3 zR(QS8csF;g=*2|z=#M~mj3&bML!k0S{g6klG}HIpzXf^vGyaaB*d=}VQ=;)llOa$j z6j(m$+h`RrM(WgT>N2}>xxJR0*cNX{?l0VbX)Bab0wJJDTm>?cZPlky#n0d8 zIw?26Xe*8Eb)Z#-*RZQ>S=VO^ZpQBb zA65IQnj@T3jG_%t!@ssb6PXsrbQ+d%D}W1IV)ru^FuMdX$So6dFf?-un5aEBn>&F& zFgPw96dC>vgDjNp3#7Ic&?duWELn-vw!oWgfc$5zFg08;{2W|SzfIBcfL->c?RgCQ z10(ziOVutyDcOAt0K5rrH-{A%QFYL-CcHl4}Unh-4UIlQMphx;ZGd&A6 z#yUCxADkcsVp4yk?|bDE^5!@29qjW`v9_OHk0f+T4N3JW_FKtOVFbVWpE=pVmNaQ} z-rLNnDrJjYXk*pL>1v6S;}JFh$M7G3Q>vLc1HtL_vhA+fLG+g$3D3{Uw#3Uo8lwN@ zJSRJzVEiml5yoadf-k-B-uW$f-}WHk{m?Hjsn`;~9$9fJQD=3=_p#JT9RxDFVt@M- zTK*QucX;7BscWxm>I=B~2g9KkBACpz{+_@ZypRbX8%utT=Iy`^qSP%{atvE8>7);u zz?OK7$4ZJke+5>BSB3)7Ey8~*=?g4x z4J-xDTqbz`77^xlG~kr&d)4a%-cqR7j?RcFO>7fNTY+WxeDX(NoGZ3MK0fi?AA|S^ zRLbeN{=2_VlkXKnfJnxo{g@#^CUj`tU%pj9@aYN^aJ6(~eCw-B=3soqWCorY z<1*LOrIDc}IMi4g8EBWSEa?d>_mwRdGbfFOOF)Y7Q%=M74{NGL%o)9vf?u%jQU z8N}3kL@v+W17WdbWX0eEeq!Jpu880_cjPg)>u!`QI&VZ@ z$_AB^8EQRWE5u4hRzKNaTiL6xIB7qeVRO9xe&c-rHDN7O;~n*XjrZm&I9~sEjdxVv zc>Q|3gV{?DUbRe9x6!z@Ci|2zQy?hu>+vq)qRjEi=-<7o-*_dZO{Mf7@2LO(@fP(P zZzXE#9q;J>YrOYe&hZv~*LX+wjkidT_k8y9e;sd;9`92#^mvOnzwtZ!jaO3MQ7Qe$ zJNiG3H#&|eM0|!n2n2a*2jFV+w!pHsKm@5SHnbAgFt}^zz7JdsmOqJwtpEO_o*Dmr zf3HYvg!h0nV`oB)?*#)cwjvEDdeO|w_TIUzX{5F`>x9Y+ZF^!bG@=2hD>iV6)$LKjWS)Lrx-S9IbSmAoy5$yBqW{HKsi@mDMj*zMRx)qbxT zQ!J`mu(rc%7zU6khlY@YAhHnlQ7@|#F&h46vAuxIE6?>e_a=$-oszzcQPdUtgG5&*qQ92tszh|DL{~$64lJi! z6NI#7S1zMqNyj_jo)9;~KVvYkiW%-ekh12@_?rvn`P%oSmmbkMw0UG(1$dum3ornsS&&Y| zyymW|n`nQ(1b2^5xSXPPEY9I7SOHFPbEB^9rNjHn4Lh*RSig5ndc+9h;<+o|_vh+Z z58nAkMP*A+moKe4iuP@BSkI?^8(_zL0uty9N?E+^gF_9o9LuM*j`x%7$GPva8s;-B zZXIp;>P&LyaG4=53#{af*;rn&$alvsI*6=j0^)H4E7IP#CFd&ldo|m+4NxWasS;lt zKrV>OD!VxIu>4s}jv9k$@5OT#mFOUA4;xXQ}R*T~!Zb!f~+< zoe+Hn;J(NH1Gfeka@9|88@_K;%e_>O*?}drF){DKhkDy#N$ePGhjCxg+1W<;RP?C8 z_jdImLRCPa!BV!wH_4k-{Y;J2N}W;(##AF&M8hPG#EiQ26nIKkQ#IC+O=)YDS|Y%E z_Dg&v*-*O##edBoCAgfanv;@~MSj%9-6=OWUXmw%IawBbv%bM)Rj<6EJ8wkDmO9segr z6xnH)hT&;1pF2x5YX^lPi&hQz9Ou14epySrjzsPx#D>Q4meWS%I^FPyC@8W6_xiAd82evLrl!ac{@tnxB5Q7c;Cm*{e{gho&Acyg>;NlZ#TXO!H8$SJ`B3XI=NU{2 zb8eLd)%pRp$Or9#UxH`A(ZyKoL)|yZj2b32I*?~0c3Ch&UpH3X*~TIs!_$+_ey6f7 zw@X~H1Qufw@!b}0EP*AFd>kDGoJfAk$^C(!k;`jCt;wvf=$Qf7BZbq)60ur62={DI}i@Neg;Zd&|$k*d&_Y}9VwaC z5IYb=5T{md>pG8w{2r??)t(xJyOm-38Qz0fSI2FUNJ{FP-XG-dNo#O(sqy4!17(q?(*yC zAL~(2t#SvdZ-N@()6lZI4Qhl>M>ubevG4>)WNirYfs~#QNs5HO=JX|c*wvg=ei7^Y zzN&A6?Xa0b5EF9J1!G@MPk9b=x)V92%ECwi>y&pD+GEcj>tDdD9)by-a2vI601?^W zJlsJVLAsT8gi4#}#1s#;Ov5S@X&8+*YYue+I?cyGyAI=#hHU%>4;m5YV(HS((9z*W zcnX<W0bPZZ#558|>aX}AoUvNVq1@Qp@`iZ7^4-(hb#Jlk) zbTkbfZIB#nBw&Na!b^cEsyFmJ)mngS%iQ`SQM>xGO3csI~ z!_)D0jTWDJV7Dq55lOVqlJG1_3j;F?Jop?GU=_5-SJ*xbvYZ}7xlb>~tT3{&AQ+oK=5A)Ae4o^3m@BBL?|*qgi+~=-%t2PHSaM?|m&=lJV7l-I zs2Jo~aY~VMC04?$h+TW5ToR$TCq~DpC~<_*92Fg}qr+8nf{qSS(TO_RgNkwA*zlxvQJZV?6Aac(XqEBcB_u+MGs+>{n~#TD zxB`;NQO2Dc8aOq$!N4g|tDq(J;Oc4=Tms4D*g=dKE(_5YZSZv$ zf_llQn~ZSoE||tSQ-EfMxeFM@%>$GL&?LBG51tE+gEM0`llleK`RwvckKT3u`{*n%)zW{3kq)x0X4 zcTdHOp~X%3nig)F_uu{W1u8YEqb|6mlKx7d4tW>%Qy>SSYuuk+cMjyf6&xeycr0TA z7|#3^j5QF1AlcaYh}Davg-5tR+FE4V1aySoS>Bk8pM?ellFN~XH!wLx@)#u*1AP?T z``(|XDzF-CKAtMzhLgGgXmQ-&6Y+ZPouJ2vhZpQ{j1~*e6<*>H}h* zY|CX{6grD6V-uzS%^yUvD(m#KL)!Xz)-2 zyb(7{FaSAt7PUH6>BOWjCsLK}c*WL-wI5%Tk6H0Y`F3-%aM zN}Sno1Ct=+=ZBJziJ_v><6LDue0~`7{Y)R9KnP85a08b^`;fhU56HNQrWurdx%V z0-EY|`Hgg{qpqPSF9}ut(;#(F(McsXc*PaZVM2td!Jod-3s`F@ z6#>)&02MkQT@ZVpf#wL!0fB{kixPCPSF+9c8+TmF6*U$FK-K*QikRa8S$MqT@`?uz z7X}bjG>(fgB07laZ0alWx*iNI#K`VkP%7KI6z%0U$zx>V8CLn)iV~|g`SD|!^TGbe z4jO|9IE~^utam%Nae6OwXq2gK|~wz1bhLuHszd{Dl* zEP44;dE~lGnq5Oyf{0V)9W!M6Qv@DJpWUL{3$a>k!F<3y7O>*SOU@4T;#K z(>a;bI1CYj_suK5rU;U%3QUmFgH+^ti5MzECuR{dO+{{y$Y2$@Q6guk$W0O%f{0^^ zr!zD$Lp71Ea!f{!O%%W)=2=L=o*oI7$^KxYE8z?YPm^$_gzu4XmW1z@FyB$M&6yI; zk?<^pF_MvpK%qS89|D_)kQgzqL>d6~uta{KBIObpr6Ls)xe5`-oQ*Ic^9n91qP`y@ zkrx2D@g!GGNHh?5M&lEvSQdnTO@OA6c?@xS#lw*(2-c4R$ z;7v>4#9wItakKR-I7YKSMl{rv3D=4e%=f)s9qTI0aYJ8KI1+ogfo+9!2;>TV0w>dU zh^2XnQSq?NjM~yLUJg0aw(mz)oD`m>^mI!Z4T?`qml4?uCYHM^*k}QkuJSBnTiE92 z4R#Co&)vixFrJS|VHV%c>i2VZ$$4{>#A=0|VPL)ap`&xEKI7Zu9mCe*Ddy|Qc5<5# za3jF4)!3tjOMRFJydN=V&U^L~CJTm+^^^~ZJR$j+ffJRzv!m78BA=~eR=6=6^j*^N zp7m%})Q^#2|3c&r@0p8xkK1>5TZNfms^$Z@OecJa9I4p%&p4kp`M;US+og($d<0$u z79sBH)XIcYzCKpL<(8~q!+6ab)^SBZ!pAw}4PIEjYu>P&6`6TNO*0kA3Eq$f@rH9$guEeQo~t6{2@x|xMM@BuIr@?O_mGkx`D_U*lFyN_BKeULRwO@4!iwZaOIVS7o`f~Y`w?+W zRu`KJn+H-WkW1El#~g=b5~+I5fC~?XQ+!=7wHADd5)dVY*uFvEAgRRWFr6is$1u}a zLJkj7qgSeS`f~+J#cboywVc!|4fDXikbrX$VFwNDrmzD@9kH!Tg&z>CZG}0g3(sT@ z1V_L$a?U_#gOJX_BvO*#&hxq)tg0%5N1}W)Px5=qJ@|S7qMT*;Ln{P<$Rt~ZMF??* zt-{d=aeA%7yr8%?gb;rjI*Dgyh8cCa2qlF3iX+yeBRev1Wiu?&K2*$`$4ShMQ8ISz z^&vc6AzNhL?nOzxv3CkY zuk2*}5uYGp2=CsBxuv}Dqc6aK_v3t*6Go%xK17mxH7?93@>ym09zPYCq3?~zvKoIL zr~(-haF!z405TLmb8*N2-f$IV^p8 z5-Ab$WBj6nPf6qx$+Qf=WrViFBr8ADHaR#eKMS5iC6I0B=X6QYG`X2> zuaKODI?*rp3{;I)flic*>zRo@-pIMG~0tpklA(QPDK-F|y0yy_6 zLV)%h2SKe60YvCWzeo=DTJ~MlHOZT4hs6#6A_TD~;caCWysf~~%%hnJB7z>Gp~)&b zRj&ljn{0`@As(P(r$jngQ7cR(Bu%*1_wtFCJ80) z>NyCuTYSS+kija8wD?$6l4DwKjj>N1FY3Vm#NHo&gCb|F%7_t32m^vr2eA`@E)#Z|FyTtU*1 zePd}VbR^u|K?wi2P^}Ktof&^MnZSxd=2oB?1RU8Do)$z z@?$a`HiNq#c%DguIDl#(&US5w{^$MEaTyVZd@be4P6oBuY;GVHBD+y~(#%_=$(I}j zrq;fWH5okl*(Tp^WBGPt{T^xr98{pXK2J21ecKPX|%>$Y= z@I(LAWejeoLY8HNSVp$MGFr__k`aCs3%J#myMN3I7BZX=9%uzl5Nw5dwn|g+J_D*t zk8;UH04m|}ss%iLnJEj9I0NyzJYs;aUmA-y5Q2Qg~^6%V)r$sd(%I z{2+IK?E641YsGCCo1lCUg>eblsC^y*yI~^JJ+EM!mQw8dyd!2eOhZcUF1^Q~9t?Qe zj^+eUf07Sas3VS$kL~T#B2Wcl$Dz5A!*eK!SP490^N@T!>qHPKfn&98C=GRR5K*J<=N!-q!8G*gj$}wk zCg*@Ncmrc1g>htsjLC5UDfTMFlup-Oj+;B??Wjkd)QNcM>3b5QnMBJ4sYI>t_wjrB zg*$JaVXqj6+9{N#APFa(ue)5?nj>26T%JDU1eAI&>Z$J8X4SAbCSntNE4nLNX&LLg znGJUUyFf@&(3-X2I8ve`koEq>z~v*$CiE|lyChC{5al-0!kl` z-EU%&Jh7ora9SZHYVsYNCy@>2M@J3k{!S54l%8t^bzgAjgO)G~s=46sNg^w#qq4)| zCO@*`M@X~G(ekB*G;fYnMU;MM1=UuTnS-?EzvJGeNlg(>6IC86xK3&5$PyuedGf7W z5gBbu2CE=1wB661{rP{u+#A^x9s+czW#F||ll_5+f<3$hM&e9M0(b<8otU>;6dxVW zojiW*lM>^{V)ZeXCU``0&cogVN5*OczJgnC%gJJO&33qfO}6FpvZxEUwJ@a+sL%oV zo{x*}xW?YlRAA+g3^n_G$L9Yj-cAu-7^G}b6>EBv)sbsp>W9(g(R8#D+R2yEMF*sH zJ8-=Kc17iq((jl-H2WRuoe$y}lCLm(`q&5<>(Av#*1L)Pbo$tyYU?rKspbfzw~E5r z6@8%M!Mm|V0)9mAzkJp_2t5c2i+macOC;*ILG$PnD5~Q?Z}*OY8P7gr!95>wY@}EC zW)-$onSR~e!SEea0G@eHiAtM)1WcybmNP(bt!FXS&bS`jj~?TYcU9rBB>u%wST5d1 zgOrqXT|p##IyJs9j>j%Nso*-uy!`dZuebd1(DtNIhceZWj2(Xsbq_Gi&!h}27F^IQ zH6NobcUtrVEDMgKwd4KXKi6D4isKy__j4dVt~*-^Hc*pZf2P+QJ1farD-aCxL2W3# zx#SGRT3X*1O~)zIQbuab?;Jv(La2iUq9~3O zaLA#K6mW(U#FYnYF~<{MO;&;xU@19U{CtuVfY;OWKRslHL07yJlXd!qZw{RiZ$~J! z(;pv-?Rlt?EcFz_d>urCr*4W7gKA)lit$7kvEL&GUd;1fyd^UZfBbk**?bDg&`}{u z-y5#6K`2|{6#}U>jkh6%C~lblCAoMqj>XEnTVgyJXRM4dykGGD2z&d$sH$uKJAnZM z22X5J)FMX3HdI=n#nu$4;Uz(i{)JXnI zhWHx4*?XuME}eal#kf{Tz!9Lq$xB^9R9nrDuKaNX|IfR*QjL8b-8N?hZE9AN^u;LC z+zaN3?YLQTU~gCJnq611JJZR2N+W71W)X-N9l->!{xG0p!zA5>6I@FI_tb-)c?e9D z1-pycrf7o$E@w_d6ce|%<8%1u2?q)bvZEoGk&MJH;}oq6^mQejdsU{mZI5tNdbu(N zq*@}e35I(QzNY9YBxNYZCGUVh>i5Q>#~7>g*BJs`2?ao-d+35Y;zSnQ)zk9zZX8F% zpvohq{+Tpzz#cSZjU+E&^zIC6V`C^R{ybK zg8O3s#$keH`j%mG3usH`W%mDVXJ2_$%|@NlZP2Nln~Sxd`|RW?ZC6}Q+#vfIn+tIw_$8~;{8!I z4^nI-Bh3}F7W;aFcH#NJ_9KQW6KO!(kG0xuI9>@DN*vFbrL72-2O14Kk`HY^c3|b^ zbRoe7rG+o{{dayhmEB~zGpi~2+AJyt=ia4%J2_fkURf@$V0PLNna z{>yBbvMXK&A*S~iF8PLVYeRt$A5r&VL;PwMX)tRV#F7;iaTj;)sw(r#DYHGd@tCCo z+5-uCfTke(ZF;eIx;MmI`5#Cek}C_KIewGsH*78uAz&dd*vmrRi$vFC{?VNW{%}!- zAz)`;f^Vxt$7q^05fB_$J;h9bBoL}E$iTKE%B$@&_kUjcLif&yx8e_^AK3V9)~I`} z1mD)xC)(%6E3|Mw?CaV~-9ZWN;ZE+?%`0=Ip6JkW&voE*b)Z_E%UcXc|DxVxCRp3i zo5UBo^}n&^quQxCU2SaDCViiG*ZSr4o=R2+~$dqS5*8pIQzCIbsf#j z)@9!|UTb4fv0Mz8*-{QJk=s6GXv7mBFB=HPlv(mQMnk~zg>%;vS>%8kImBF`49ru* zsaktn+vR(?`|j5FHST+hzJK7ppVIdw?)zzdf6aYAqwgyB-K+0!d>Xs7%B}i5-#(wy z=XjUnd3_(_zF*LHvHRYp?*jL|UEl9gl%DO>cgB6ctnZ!fdzZd@-S=w);IPRB0=g6~ zU;yGDPG-F=+qSsA{~+>2`*0DJl`9NkE4Q;)h;#zX%AXJ!%-@OhR8R<6JaYPr?&k1xB~1sThFy%(xs{P=qiSc5u9q4cl|6--z*X1=%co8IN}atZ--VX1G|KlE#8C~AZbRm59O5UF z_h_)DrpWwa5>2jDGZ;{f)3CRd5!0-u=*nV0_S0xPUiTVRJq1UiDhF)smPbj8a=^ADl*=%za$eL-g+q z)pyaSh?L*zqvf~SVdvQKRkjLq7@Fx)$+<=4536L|mdHuosGmBCs2#vLn8`TJYxois zxg#Q(<7Br`CfXm*9#aPUyM9cW9Lk|sn>}VCZ6|uBIF(k=tOAj~71dldA^)nfoKhM! znbO^vJy*}@QE1*3irP?B$#Fxhiv1H^FU}mf)QvT?8k?jr3zA1_H=ftxMj@j@EP$nI zj5+_}FAt!DRWUQnsVpkDD_mZ~w<)YP@+&x^i;J&zU|222->jK&c&{)@?L56~(T<|(l^DxNYQw>wst5nqG zdndXsZ>K&eV_f}x#(gi>_e}M#GHKO>bJK=xV>O3NpQ;dJxI}dj_=vVD@6$|8j~aOb zh_WFzAA3!bLIMYs*<(tvvQe*Qk3lREG^QhWvj4dnsYsJFrYw5}pFv8qrYgUJk4Lv! zML?zza+vGh_cAp{{bsQ`^KaqK4BJJ6vUjn81Gn47+X`f}DcNA9qeeUir?D|8P$tn) zp_cCX5qgPB*b=(orBp6^Bw=l7XgmHBhgFvm528Z|jC!$b&&uET7dD!ChKO#oD9?(p zu}tNR?g$S}UH1!tW*PdxHF3V`I^D3HPtULZ-{67IQbba)eI{yc0rfsqQQ8cx!J(zq3R2;@-aQmW<>2C)Uze}ty!D-18- zzm{(}n-88oEH~HdwI`v3im#%26sh*UVeTEHa5lHS&0KqrwNUD%L{eO!!b=4NqET;K!ey{E{ ztDoHXNq;4lJ&aFAIIt{?Z)wGhWmTDLMFF6W#yEW zFhlF=&%@8-uX#M}hHkN7Q+(4Y&N@9^qPjk>x}rW5W+f^-Qs0N&MBjE7+nJUBb#?9s zns;kecU0_Z3>NeM*5CLy;6Bsme(n6Kb=28kQ=`VJh|}+vm3Hpz^XIy>uPg4;io5V@ zl?z;4rQ(iu`R!E!2NYQ*2^ou>$dP#$!ZrQ;s`LKEZ}~ZJun+ky-$LHJGwQws-X`QA9HlDjG(=spxlE^jj1CUK#yf9{nzge&nO_DaU z(x$H@HlG_^F%UXEM-JPY~lz zp1RdInz=iBdn|+}dFu0uaZclQx|lyHhOHx9@u_jH*b4*2)<{N>P^H^0=Vk)z+ zau=hDZ9G9u;N+otd}P4Sw%c~)nGT9GN$Zqjt@Xt1r{LZ;Ye@Fy?j7aJC2HAS=vkdo zul(irsNP;@|L-I{J4gL^CgQuQko&EucUIqWf&}yOO}NGGh2hoJX7N>95!|YMo4-OC zy$3h>E0PL=8cP=&-%CsV8yK09V{xycn#q^13*Cjj2T=0%jR1;fqxDWc{FdAGKXnWL zvnE4fHDdT;$?j~~pLfLgphcyFW)%utnzM)SHr!%!+xc3|+pyKYphOXxS|-h3Iv~Wi zNu?tpXZ8_ghC$kz&0%KH6sdLavc6lQw-nye#A$J1&aMXg-I>-Ht&=RJ{X=Rd8}f7$$chmhTsBqqQ9D;^*i#G1n9 z`{JTA$(>8Vrl*RM$pFr%G8eNV0m<# zzs>W122zEyhGwr8axLP8rN`s6>@|K#;hG|ohl5*1wEPXa1BI&aaXlY<{c@d=xF zX>hL|YLB9@k|*!sIJO$qWK9VhSvqgZDTLgN-oFBi)90%s@U_RG`yL$RJ42uI-Ew!2 znmj&D-9SX8V?re@j`xuU_4^lS3ct4JT4(vR2=%02Ec0TNXCry)-=A~d`4_Hbbh@K5 zT>&(=$WE!=nlV)1gkEP)8_RsaoJm1eA_du^F6YlQy8Q_-gbD3?_oK>f(SMGVG+E6D z_+ECZ%`e7KN`MZ|r17BHvL&0_K%<%E+kFdPzdZ;o7ld!DhJhc%R*PUdp6U;5Hr>@8icfb})__28MkYrHaf$tjR^{kPX`{fsyh*i^`vL zNcqc&?YABV&FZ-L)Of2*y@p(sFV|4LMyXL;v&L&2*ns|Gn;WDcx|nbe$XN|!_ZfdrP>H2@>|e8fnK{99Gn?{z?!8mh{=twAVY zR0Q@GSxyzWDPdIB^XtW6yyWu`<_)_g=`bz~$|#}HodlVVumCiC7e5q{mtF3(QzEbz z+8Kp)NakJ@jvZ~qzEtDE#wx?FpW3DWdm{fTc`V^fLGhr8n=#Gp|9#7mgkLdm*Y%)X zrQNcLo`P>t?RY7Vo`P2!!5V3S3cIj2(87Y$PY`-QRA?JviNHnc^X(ih@aU=Bu!3x`rb?=4NmnL^P?FMLbBPNs=A zMqZ(c$8S6!v_^!;enw2%NJFqZ4hXWZ!gd&cH;)*1&l+0LpR%zFVy+%CBMhgcqoDoI~+%1^;2I)zZ(Xmro=(A`6W_k?$ zaqE|t#@rI-5p&U#s9WN#iR*`!4yoP7YhzCeyeu;g{)BuHG378uOn=_>n)Ia?NAqWk zweQ~ag)s)ZHmk#0_q`^oqhR;FI=hFi^PTSP$i%8YN7f;{&6eHeVzbY?U!vQxPxI}d zy^iwz5yP?+?;EW zv;NyQc{g{QvB~PLPWHWc2t4JDV#5}4%QaFl#6Xsie*0xQB9#f>dN<^fV7UZGfjMkh z#Sywj2+22V#y7qW9PpynOErc+-$CraJrZ>wqb0YCbTlipwn90=?2&1_h+iwL*z&D^94ZF4!$y||zus2YOCGNb68!j{8rZ6$#*&xYj^jNcrM2-^`~ z_7}Yuw^obBzrh5)=8iCyvYcjH>bs{^|9|(k;LkeihEN+y{kfOe;PPr38c_`?2t+*H zeyHz@O+mXw4(xh+-%PvhFZSSW2i$Mv5|**fYy1Y&oY)tud*WY;_C0-I3SqzN!^gRaDIkbxJdoukVK+uJ27vX>R4ER;WI! zY-3b}$In#b2I~N=c2uuc+OeuJ5>Z?7m1U<<)8eKIXzk-)CAZ9;S85&|J!(wy zsh&9{0$+9$G<*^Hl&wb4ED#!ro~CCCiZVlSWhms`G2clSr>LX1Ns^Itp-G26G@Q?5 z3Nxk=*6$h7?-YKuU2L(BRz*kRouNTt7bfNwCzdA$&Q`LpJHHMxPoRO;=J7#RQ_!s1 zG3(~P|7>u(WI_Lr-kRj6r3sJ_=yv+IeA@Q^2ydl@TagC+1>>W=KaXNWLLiRNR7=%F zZ$t7lskI_`Zx*VLeEmTs+DzCSew$Uu?RytF=>3GU$Q@U6M8bypl|g!lo?za(oLIN4 z7%@*oMkb;M6#)KW)$Ukuw36jqastNgAw1M(VmHU|*$1m`wUGgC?&Y1oE{oSLmJwO8=J z?=zT(^UF(kOCm~>Qv8&9%Or?THCEs?Y!$qOluAG3dDrzkYD?VYC$-_1p;dH=q1Zf6 z*gV2qwD@*L2k1v*SL@tz^!aWMCO_${7T5*`)*z4bxZvon|Ui z3Ot22xxGCuI(|wXrozzXNI1%Ywr{YO?F`QEkx^iu#sI`jW0O5xpo(Y-{MNoSQ=f!p z;Z?l>iHQLx){11uyoLZ#4SX0i%c+aJMs(7mX3SK(&D4rjs$PntrOQAXF!966tI@&A z2b4#eE5nPN=1PLVM`^CkIU+)u*Cjbfb7jTEt9!qJZ>ZX#M|de+bLg%@Qm?`z+9d>p zB0tLyZY_pp1&;S?8rTPEkgrnnfQT^*-)i{41%BSfZBjA+2hfFtq@H1n{Ms9kdFQ0>h->=MQOQ36Z427yQdM+PG z9>cKJMRjr(A@G&;jv+7K!)~Pxo8xKfq;*Suy6Z3r4XLGoB4|-xg;KtYyiV{Tc%2Jg z9|eEtg0)fbVi$}@!MQHDJPLl<1(Q+mG#6YE1xpF4g=1WFI*K0Qf;U9L{lhKSd)w&f zjl^Z-y^rsPD1EyNHbucdxZurE@GZtGsPDm)4+{-dx>&E5G~(;7pl42LDS)}17mnGA z^HmVuei;nEXHJ>o9e4u=>L!u-o;efw&oM}a{#Ur&`^JzOGL5ElV_aa_@ByaDUR>VkH8e85+r5oX znvS*VyMgA7=!GGNG-a(9xsLETjU~CvGSqz(_Syhy4sXgD) zoRernD8m%wn>yYz_5Pl_?aqUO_98H`;Lj$#3qN)L7=bM5L3)FC|^1pOskq zO4y=cHjP*}s1*Y@XZsX0D)ZSgeS9XQAx~Kl=zZMnc^0@pzg}e)chScG~#N z-7eS~1)HJ*tD|r{3bzsFjJ7{iZ#@56V5QREQt6bqBdA39s}{bLa9dp915!BwI)gr~5 z-;fW~rbnrME+}=b;=W!Y4)vQf>eT%G_a-i*k@rYMkp=J5pNy8Gds*i5_hGOw4 zG$>ZLrR58z5GjkF?uvIW3YrxWgzACzOvwJKW1Thy5{d=-i5J+~PXCF4yAH)`M^$)@ zPY{mR7JFXf<9vB^Z1MDhxVQ3m7FtjuD`A3n5yTLzrf6|}?GZmZvic0PE41dVIsXW6 z&BBrFa-Piq7H@ftW#mD!7wv+v@+#UHCjemJ}1Sn_z`XLRu~F&gsql06{kdBX&xUH`KbvHp&$s;-w`@GtZ_gg;`?dt8(91t->Q^TbMbj?n`6f5MRkj~eN{AUY0 zt6PG0`3RDeyQQCZF2c&URDX765NpkyhBq5 z9Ph?=2Lt;dwowtVf5s{QlT%yO9p6xO*_1F8A#ufncI)Vx!bE2d$HOUA-d)^GDYu2< z-Kq1VG}z2E$_YAx$lI|{lg|aWj!r#7A^K}oJEIu zZvq0Q9b|J-?PJdg@@AF~jdYpXJ4&*}c}=u&={Z-YrrF^X4qCLBv;Rw1-TO^zrQXG! zWu1N(*wzNUrO1QR*S2c@I1i52+wIz#K+n?J28W>$Y&$9Dj*4(g*q+y@I`TFMXWoWl zwuyK+zVCA9 z$n;B5SY#S4gw?_>fsUHqPcRHe&-5+E^MxF0<5#NGh~49Hb(p9oi@KBycB-v?O=R;T zmW4)%erFD+&k>b0wVdXv{!VHjQbiMc&-Cl>QTXl-PPyOPcA_m9e~UYbWLhP50AYyH zcVW1BKA>qeRvp;UVzj=3cJ-e$X#5xL@Uge{@bZ2BrrKeCmz`fI9Wj~zb+ymJ=Vs#4 zr`W$OP8Zb14j3X&uvyrV%FGrdDc%VlHVQLPE~OyRoy;vSVpN){H>5iipUBhS3=n6!Au^{G(d0_JHH}=W+N}GVJ+{UccIqB z>0AdYtt#7CMWE{$$G(^cVi>8ECr%zq*!WResfuysfdJ+;{zKHPCQ`o(;>UW-jBbtw9s6K{HoGcp>SRGCZ(WG1muyfYf?5~wYt68EZ zlI7u54zB-29n$n0muWea%S6U*+WW5m;Da2OsiB1b3hrc2jsGlGP<>P)6e%k_^gJGG z=ve(h$7UYX(B#v=!6av9llFIeX}yo+cj94I#zxN8rz@EE3we_W5|PG4FbFT+VtS-` zU(vEYXK3=t>Utw<&+QsvauFE6Zz!ihIfRez!*5Ijwa52ypZZGS@9J5xRh+}=VRjzT zN`9T+D)6-jb7w7qsJji~KW$bQ3N*3ZMBLR*4E4qQ&7D2Q9eu!iKs3XqI0mwSpMoWrGkoPROVGe8CG^*vFlT` zKK~)fKLF6*Pfjo=0yqViY5{3l-_IdJB8%f;!b)k2ZkipKRXmAdl^!zLrQ_*QJt ztT5Xj6CjiGsI z`4P^RFOSm!ukl(S?w+Q%S5^EL^%6w@iD9b<02;c{(OT@90{e21s{M&(aix?~!92{b zwpQ=RN&8$V9d0YaxtDtq{sfG;=$WSnu0%;`50m$C$K-wH|4G^Xfr>1QhL*Tm`fE~R0fUTKZjoUFJT6gTVaxs}x?I~duvl7v@b8G|g% zqx(=KTol#T`_2db>ul!=z3|@Y@;^8uIouJpLrhI3CW;2F1eWHl?e5949;C5 z>tOo)_VxUyXwYmQgZbq4pvAH@ZzhWk4o0bwRl8kN_jE_p^*kKV2~x@zwAslIG=Jgl z{HV{>=X_p0>hKQ}JDB#54-m>a!sacM5aTQr97apwUi=|BQWD|s-unOv>f_!D9X_k| zT%O`Er5fCtF-GSKfX`o;gF)UHC>#fR4bQ&#)MBw;`VU-swlGOuM{#T3vdva3Vm zm91H`BAX@7XlKIRqnrnM4WvFLa2e}0@Q9?Q1g$C2(UZTVtg2^DQJl$)?zuJIN;1`} z=Bacbs%?@!4I_eIh#~uq0>PG-Clw_3|4bV+rEe37W6e~C+SUqFMb*v5!M3u6Xy7%S zrfuLT>{@%T&b9i)+YFI8_y@iRR6Odz?}-*vNvaqG%7tHc(|ZFAny$ul`&EYc2*FX| zLgpqK)L-A#pt#l-r$k*qEZw5}=TW~Kp{$(DUc2v8QSr~YE?IKYIu%`*tSWy*q^9mg z(Kjv8hzPmBV6ud~>)r=Xyv1r99h?=DVg4wJ1SL{K4CSk*BF29KCik{%lR9bVRX|$+da`sqeep~mQ>|vw|zOl(r%?JvYvCA6orK^TU zw)hti_EujqR9Az#^qg8!U8!4^*cK)dv{T4eC?W84kqs z=##rP#e-Owe9eE0O<*{-H@rHQ>3fTPOBFBX87lvo&@_nI$T?H?t z&*RN8Jl#iKZJaMQ8K|HAmAK0>xGj3C9EY(l8GZq{xFznMI)AswS7hG3((U||{ydFk-bQM-#>5nXL1>!Y+2a%tC+mb)8M#%ks&j2safe~O0qf=TmBM{8I6 zCfUU{C+5ubhtEmB4uKx_-&hkw9K1$PF3T%kSY@sg#GF5Xoa^@u$o%w4lXDL% zP83mLzaW-D>WeN{TdBq#sVW5d6QFK`IXLTy^~`IFe$4@Ge;4ibajtZ<-)j%Vy6bf5 z$_&qgO*?tX=@2bF1_l_o`B%U111hhcQTti<#8>r|>7nkmmYR7%o{b))Y| zeCxnn^vqq9fRaUPqK=2ZxE5LQiurZ^Ldy*ek5n>ZWb@Jzl6BbR;; zxtOO^hFSQf3qBnMZ+5|F2<8RVoaYVn)4j?T$rzua71dCek&a|rRKZUy^imZ1wuQDw zq4^ftLFl9E-l<$s-G6`ys_tLG4)9Z@?iUnd!pyI?@-pNLA~k{nT>5;~1vLUr4p+`3 z7`9{xwVfc$df87szaJ>BCQuOBJF*`mJxTU*jp6E7%O;g{TtLCTi{^{Qs+N>k= zd53*^`fRYzQTj~SXK|vdq(4+E*WR!4PVh5c46cW*;;kYoq5^+sL^*LR`JYT@eY-}b zRl@C7!chABlECbTG%E_VAeX>@Zrw`fmFlT;X~mDZ$e2JIfPJL#$y%_6%^bbXva z_2KS(r(SzD6j7QooK#>uk+?;9SEp>+656h{ZH@?uX5n`Tc7D6Y2jMhZ<-lMXSR7JQ zm@E^(!}AN{ON$Ga94Br?wKs?@grn=c)fJ=sm(`39!Mz7uNKi*TDNiAN4rDrfyB zsjg5!1b2(oC*D8IUn!C2nh`h&^-}+h!vBE(QfGFE|KgsmA@AJp@2@Uq6D1#N-5f0* zwx_GG8o&I*(?e)q_D<@td*KB^L%U5yOtt^DlLD8#s3^YvShd?<^U5O!)3?}n-}CE0 zCbm3UX1U$YvLfe!W2N3=(d1X*!X=u@rOyKy2a}a?x-7w3Fx3)8%AfXENj!9Ro8+I* z5<-Twmx}zB+|ee_@AMs^pEKa`{ur3erg-Jm!1?=JM0auyf&ir z;N7{0>3BsM&bjtwH&)Gq^(wcG)g}E%x7K!AzV}}GV~S_{ZD%-wlHc0P|KLBh`H-XF z6Ho;Ur1vOxSy5;{3r$ZPq%7_>DbzNW@=pqr!d~rJQ__{&QV-kDl6{qwz~(oiD3j&o z#O~A_VxhamYnQ5^h7G4OBEayw$)azgKenc{62epmg;0%(jR4zw$fd>r?4MpYo$sP8 zWZ1MOxFMvJy=QO#Z zhOc)q?z)w^7W{#Wxj}hcQ>)A}%uKynVMTGO@qJpTlLr)5wh4h8Ipw3X(0t4%d;zywrOZ zYTcHnh*IDyv&y&g$jA;10|dkZFFAx63EF$9ER5BKv6bc!^ge=ag#I?S2Ik^XW_ZwU z2{&uQi`*Ptw0S_8?OF^die(Zw)V_+ijiWTzuxrN)rDbgYC-DMk<_~a6=37i$3j$TB zvvOxPG7pj#Vd8h7B<>1Wgoqbfgsw_O{C}oJ==M;AhLbJAZj*pdUAsgNKwB$xAhZdZ$k~u!r^)HjK633{7B$KfDSY>1cZ4gfFRr6@P4^F8zCckPJJWlxt z-U|uyQ@YKg&|}uQ@q|Fu3qjUR{4NyIBG#oa0K1%#)!S7Y)QsTud<$#5E?jA04cCSB zSWnPyQxIwr{qxH}BpdHxCcy7Wsq;nEhY_uT2hA?CW+B~+e*bJWIxHJAPE%cf_%|FSm_jr!1=)K=wpo(`#&S<}6Wn#G#So5fMRu#eL(PT|CC!&bZgwyY@e z>IvnIl3e_7C-JqP44MU$z-gnSTUbuz9I6)CUt+Dh$5?i0%?0sxRafApZ>A0xTj3?Y zthSdG;}=#-;>16*LaT=9^Jx1V9##zx7YqYBK}xM=Uco`&IoT1el=8j3lOj;~j_LPM zZ}nBq@yPc-?095U`e@pSD9JjNsVdC%$p4W9g89}780(#uiUz}YTZ4sSVO1<#Fm#|F z3+YGp3zWlU$$h*dpuPPjtYhEOM_nfB>TQT-#nSaok%{s=#o2L~E{dMwGEOV_=K#pg(i{kexl~9+3o{d7S7TQW^oxtPN z+uC8Ko>LBuDM$aK+7edcuTl9L3;m5yGIwbE1wf)g22Lj}m?qNZDV0${mibPY!r=Y5 zy0!||;wM|a2Z|#pjH~UVbWY!<^t4OYz0;3O|DH>~46^)@>04d`5Xs|r{=4+O+bsS4 ze7X%o^B9K5iGB=5Ii%Xm7zUBpd%`+l*)=o5R?W-g9rfMI5eNE4%;JcKVbq;&)nKe> z=#a-*Z4FIhDD725+TzvCnp63! zuuH~{le?S6Jewh?+taBPZugkS&M;*oGZ8(Osluxd4LDqCEBPcEDTx3q01fwcBtp}K z+FlLW>L^Khno-K6lZR`yOPtD*NppPG$%FPACjcWG#=tqmDPYRvjxZG1>N^EA->k%7 zSN{mBYA(t?kMYNmEbY^Bu3a#xEsND z_Q*14iXmrtBPVKL4{1k(4_l4smPvNl&j5ul{t!;`j~8b2%q)tN%l}51KeNQO70?ze z*>e_V(F9MHx3yTCrd=dXdN?zZnWZHPB4wT`!{FXVDEAxn)~eWSWFl97hc;qfqco!t zJhzM=1kXRhq#ZmTQGav;S!!%Gy0(G{tzF>?^Val92d&#E5^vXHN6g)!%q*%$LHhi1 zb(Bm5)eH!78?Mt{7Mh;vt(Z>@+V)1~6;3D4K6O7cCqpH-(9N2(?_>QI^=!M0@1{CC zCigl;sN$f`C>bfFEO+%*^})yw_gILg`!VOERpbn0`Yo)`F10+%O4OW(YA`z6kKG>V z`ZFqWQ;&0ZL22BUp_ZUo&4tyyri@8`TIcyyL+u%l+kjJI?-5?|Klw1s7HiMy8t`D# zF>V?k2of>HO?2HR_@D4AGHb}+vXBPfTYX*(KVXS{BanXy8;U)*>%T{^;A;M~s>Dm4 zNi3H#id8K8Ic2G!pTaYHdxwwQlmg0K_u!THbVe|U!{*OtQMW>vj^BYE_lG~KsWRGD zbFSk2=fM)mgsO9x<#k?{1@=fr<6QjtohDAc+No4>9i z+6|i8(5ONzv)Pr)afzZqtn=&0MCy)KLkrpZhF9^Ta^2YY`qPzk<~6(5GV!ReH0H?0 z7cC5}Ox{!9bBl=Wj=nJwesRb#KG8GYUie-kFtGKsJ;EUHNFp%soTg4Wh0E(NGXCVL zyJ;{Q-c}c*hngZ7UA9$x^whnIaiz|4G5ZEeO>;5(2TFa~#k@aI>KGSuKrsgL^5m&% z##{bn#%Y)5Swn{D=BkkiGi|89R*Vv%Ul8ULEcr78{Pd=vK5o&`b=RC#$tc`+oUWX4 zo?d#D3Sp7TnCOTbJiW%>I1(Jq*hAue&S($P{|jt`#<;|$+ewVOv>FymYQDO9jd#nYX+Ok@Zba{@LN7I$Zd2XHBJysSCT46G z#Du6K>my(wB3fw?El$HOVzaV1;|KO*S$`5?L_z6)zS9f}zT0PV-q09sVS@BJz(_%Db{ASlv zJZRRZvGU|;hHJTqGWgH>(}a*X5;D)Xj+r|<2CFH!<(P<>pC+V)nXgWsCS>$~3KwUy zueyVC;o?tq-bKjEQD&~DR8sM1;ulhb!nj+H|Q(cV~7!HMGJszX=1>#a#~^72Q- z!fWR{%97u$7*D=&tYZXcixDu1t_xF8Xzg>xP(hr!4JpiAKhCxPBrJ!jqPw5C=DZ+x#5@`sp`=lk z?%A70;LFWVO%a%K7#Ep!O(M=~IGtvMCZU2kru@($Oc`?FI5L-*Rgv3khi}ER#52qzZEE$K>lFL|Il>QQ>)4dZ%PQ$VNXBiN- zQFZ+(8xcdZqm8LHK)cULYB5z=p;@uM7YP5X?`{5H*O%e{(!SUDe{J7R{x6I270{np z-vh*4-}e^(3;H(n8&DJNf(UZPf4P~>zbl0;iy+R7nhQL$R(PCggpwEAIrTpxV*yQ} z6hF=_$?MPuJd>ECuL1VS>lsGQJ2+L6^!z{j+}xW+r|+S4qBGfdfHi1#hlmQ@KA(QA zihD_!z4fB}J97dX3=yxj=ZPRmzM5NTKhU-=_StLvlU$5HA<+v_{tg=+aX$>0!^_Azw5H$wq>l;~LI zEUB`x;U;OcZqyQP}L~{ZpDwYX6fGtJs<3D#%*ID~cHOKyU75I5HZW zZFe9=CocxdQCBASN~9~LjdkD;Uf*^x?W%WL+*_$9X}Ec1=03a`w>qWz{TITynM3W5 zxy5$VUXq%k=re|RiC<_xJd?Z3wSS+J=!}>b3`xUF}So%!DRGl3iG{ZEbt0uM@ek z=u_Y=y9aPt@GmX3UAbuj9+x`688bdC?&9AO$vWz=6I}Aw4y>!D0^k*Fnzij*w9}u~ zjHu$O|K-O;4qW@`m*870JPwH?2i4Ap0o(M}vs6Xu82*bFj8=#~=COixt=WI{C`Vjc zRFOD>G6pRw7A)8Py0A0a9))9xkevGj%N;vkFe>N2ekqTt2Hz~@6|PadKuOk~8D=YAZ~YWAo0tJM z_*G8^w)t)z{isVPM}6NB*^0&5WF}R2bXFBGC9{I%59lk_R(?$F)nWBEI)VCdJWvA; zw)!EpMon^)8_P_5Cfa^Kp(MEnu>8>f%w(iG+yi(uzw%Zuz$leX9}h_1iVv#lo7j`y zJ46A(FlLhwsVX3X=t+H>J^MRR12wZFE4Vgo!bR-2i;6&5GY zPU32IY9>k&;rGr-Lc^uUsgUDuZ89Sixrkev0hd||Q0&yxwz~`Hj zM;RrZVU$!^7QGuTk`-`Kq>Xt!{FA$#WTI+o8SRo6-yq7 zI-)$-AHG(EsL|`CHSnq+Zu@s{W~lM!Ug z`2=Pmuq(_;J{oj?dH%G6%xAjOf3AA`v>zH)E*Z^yVHVdhKCyRc-C^<0QzmasAO20h zSN>1Cht%UE{vUb$c+OsK@2W!og~*lLqIc7k@AN?X5U^%yNf*>G=0)#dO5@z>@9DzG z=3e6WbQO82wS2H%`}b77Q{tumV4)Z*yYM?phR17%%(&(g)-9c2^bVY0L}ZQojNgaI z$xYnWT%vj^72^e)BBSHX(Lf+)KeHy+m1GUE%2!6dgB^5=V<|5wVQ#?wQ|U!fdQrM+ zh?ms0nM2bvNL&+VV0UXHNPbz>4n9BFLb@zV^{RpFg(FRo&Q)~vQDpPODiFJ~2t`02 zs@mXhCnII#aQBitTjY_PkQB`?fcgHoI?oQ>o2;+nY)gyJ^Nfqx4G` zZBHjPyYJUjrSHC9*Y`5MgZbOI%vRy8{1`NOas9GgGQAt_zF*V#esC(j?2iRrat~kh z?61MH*S$4Q`Qh~-x3}gMzhx;OJh@a*=!Dso@_EbSJiTId^-_=!*t(eK61+8At{Jvg z;=Z@0W*6ssqJn`o8s3`i5>$*wdJn!Vm_HPEC10y|7mz9->c2=57cN@s?oIf1*}+@W z@t{UnmQQ+E;*x#UVE`R*%DcGR5OAL@JQ z$=tr=mp$clm7G>u^V;N&vP``k9lXu z|2~R-b)vSMDXQ<1X2zZ3MY8neG(1r8P==A{Dt6E+w=G}Y3tU%Mz0Ee38*c_7@U}t> zdtA(>w47Lowkr~FI2CZZHkRJ1CuHnY`By-Qv7zj?-4nx^I*=O#eWt%)$yAxFsp>v& zrhDeYx0dQY&aG*p8F+mCNQqbdHQWNVD9rE7{E+t6{kD|0o6O#i78e{YDZ=4y`XK%4 zPA#VrNl}u4Rk}Nsu$bj>dM%C1`5KXRL8sKhIgsi~tH?{YipV(YuytM9=M`LVu9v!- zSdG+1z9Dx~h$$#F3tvQce!H0kJPrTa?IHpx`3F#N9yHN+S6~QLiPEkKEiv^pSuh6E zO8v5$O{}7a`5_0RZR1kmfNwT*YKPoeQU~4Cup`BV{6Mxyark1#@ihTt$Ho=*__<`+)1R%UGDJu z-k6s>NM<%%0x$NWZrga&J~5D`KRFnx60;{wt3m5m(5PnnQ`VrH?buC0s9hr?x24Yb=Aj^R%Ol%#Y$qiOcQh3g`<}6D(sJ^@HNVi|l%dF}8kfIjRAO(uAjSqW#BMW7)H%HZ>IU_vRFtMH70- zsm+u?*k>HH$N?wYxu5(Fh3}<29!Y3wLhn>txnAln+H_=7FfpoBes^4hY7IFGOkgl+qrEWnlRI31)RLe8ZF;{<7IR7ECn8 z$27bPyNas6wnO(Iywt<21w;vZ+pVByR%wOsyjeFc@yDn-7GQNLAp7U>B#MCRUm|l$ z!3=ZD;}YjhER+=``JR2BJcCk)R3BY`-o!W+ekeoGta`XCc1*B<3r~qHL+~vcZ`WAa zYU~74IjIu@78EWytlQonD5XiwTNnxrBk2K-F1u09g+E6J51KcBVVOTC+671(ART~o z0b{Y}N0S`Rk%FQqoMR@KK}y&m44p9PfIG>L8crU)=}WqHBjR&YgdEM1Bg1THhu$`hN@_7O=9L z_U4h`SC0v|jJtAuA*uzn(EiLFQ5AnDbHv2^W*DsyWr$9Y99PF41I8|s4Chn9cyKVf zDLBlZ{ZuTN1ALw;ay;Bieu4TNdjSFxU8Wi#uDdV0Qr&|7GQ#3~w{m^jujpY>pBC8w zBAGd`{eipCnf+h5TfAMc=&vq0Xh7kpN8$9s!f25`_-KxMOzW>6#;MVqAyKo~~d_>(k#J z$&JHUps};-8F=EU;r@b&*<)cDd3{!7Pq}dNlSVcdOx9_@709l>Jz1k`ced|crK26r z25jeIBR>)0AWWI}TzmA#>@S3wLGwLi&Jo%HIbPb;x1jNMf%_fA6`6QUWkTiKr&sk8 zmRFzLt5ynsLSu1HS}9oUg67qm;0Hiox#dY%$^RRLw-J`FAA5Vqp6oFfKlc&sR!pvU zF)p#FEbDM`%rUO7)3f+`dsm4~?>U5WH941G<-{z;1VL?jD^FDjJ?ByQfH~DQ%i%LF zz8dBIHet1oLv=YW(Lc^>_%ryHXjeB5TgQYTJnv>|)$`9k{6YW5I03U#ah`{4{KS9A z>v-fW4oKU&r|Y-2!J!D}AJ&ouO2j9xBQ2-aH~;YQ_DgBGaLKj!AfHxqHS6dS!pV-M z-?IY_yDm|Cod0Zef8&EPapG*(AY0Lp5m|=wK zfO>*2L+z(UnS_xdV6%tlYG>at8+H9=Lony2;!u6~e0vQCrHtJ(HxKFy?7#!8yb-K4 z=tvH-YuIAY4~a-duH{XeuYu#1PO~}>5CIBs7CVWbzzQQ*^LhkJJ~ki*f4R3xJ)Lom1Me)3=*Q=@X1x)>pARBUckOt=#*)-Od-!X0x+rOtW&B7h!M zbBwC7NtzZtZnN@Pwi#3zwrXxPxOab_LlY=gZs#0X4N23)90;4Pgtbc%F^~h88jI0$ zY+%y4WQbf&3CcZw`c5*`_h_e_*ms!!)HP-A^{7mBDHJVi{f@fnoEN@W-?N@v{&M9F zzk1++|13B5_H5$5p1ZAQSM?G-L`Apt4uimHA7;}Ls3CiPqfmoO#0dtimSo=Q$En(! zhk8X%4fVfn2mPpU^ZmH6F0f0xK_H~5?YaftCh7dgv|9FD6uiuuv z1B)en1>!(pzNSF%W;F(HZIF{0=QZO-VkB9o`OO2=by>UhNLv5ReiL`nV>BuqgeiN_ zqQW0O2y0T@!*-^HLn-r)&XHL1w8(GzX+n{Ido-3i6zi!f0SfH=BLC=BMR9`u@aXBc zsbw;QCy=eG@bC*ZX*Zuu85ya9sTVVNy);wMpa_41Cu~EGoHpDUq;8(1t z+i5=j>X}??lD{Z^?M{<~M)S&`(=Q!MiNZyPQ0mHxIQ3=60&?6&#OBCF!~erW1DZi^ z^-~4C1s$EQ#>%>i{@_NIz64L=C)0qNHwk1mtGVZKR%)hdSck6DZZWzC=2qww&TLIC zRR?$Up*zv6={X!*4_rd78&fIpL$FZ)jA9NyDV<&Q~ip*E+cyj6CU`O=E z+;7~#4MU>Q=fo4eAM+u9K{sHGHobK2g%>!CN~HvImhM0P8`8$_o6+xU(eHMCqe}@j z7c0Zrs-W`Rvm=|9s45Gh~t*rVGA$EO1oAt@V<`$T3Ugbz8Mes=C5&b2RY4O3P+h_ z>5s?BBDWzlmS^92M3xT;*u!V&1mc^4{+d(b%U&(0K0dzeje?pn_~UTik`CqPlea$U z_o|_R{w&mlPIQcXnY6c=FRo%}kmt2UbODi71jpy_kE91^Fh3c3YgJdH%!^NA*MUTb z6FOv{7|b1Qoej=boE;m?eakAM+n>ZwPfi9(*8$e=&wtBQA7HNk5RDc-75u{V6!UlE zO$CIGF45ie7>QEJhEtZeouF^(&I2W=+%2GpKhvvRbWz@GLgsCkl3DOymLqds^!w`v z2v?PAfd6Tqkjiw1egx-r~B?~W+A=@^Nh zJ32TL^-tMZ4U{Q3hdqyTD#KUCpUX{5)!nZcV#xH3}YtyCUfSi;qG33B0u?);je zg(q^|aQ^Eyw89H*|7s5l0R}@sTQ3s%v61K?vLt6q?Y5){Cf__#Qnew>Qf6iJl)(ce+$T&NW-B+5opka&SWI7hp{c1))~KZlXfi-6l7Qd z)blt~nnR_OZmtC8T?J2VuLC<-!ATrDWiY~tzw}h@(m0w_MHvgd zZS`ROu5dONA1ZeycX;XhsLWfvV^3Fwms-yEp03iG@9pU-skV#ezq!wPm+s2k!&kcU zMIGtCJtVRB>?MbBr2iIzQ+MTyG8UV=GyQdVYvqfa$=jZc?kr&4=b@1pUn8Pgxyy8;DRAd^0d^iPmZtAm-!qh3~BeDtyG41PK;e=+uG zkzHGiU;d)^=n?U`FJ6$<^KSXzuIw>`gO_DTsQ4&*qOJGJ7au+RJazHfU!e&8Ke%YV zT(3RRmJfDhpBae;aO=}Ip3GP;jX|FXP(g&0!#;-f=c{7+px4VPyBj)?MTVc%1hjy44vl=)gdy(IfA z=>piuY)|xcgrGy&hqA4?v<@aD3n8+cx%7Lo&BP4iACAh(k`fzTJ)5({()nd$+Ds+dG)jtcdA@bw3^j_BC zmBojnpTmvXk0WnhL&UVYRSmiS#F8dU5%TdTvHaKs!c_nEhgr5mk zQT6EB-zVOW)vRrcQJ|>&?JTMvcMK~89m{JZ!zFDD($z^wFn+ZS@zu#v=38< z51vW+y3vq2-jLurb2$2%3O{+1j-uyGUDknzZHB+YhF{}nxo-u@DN!GvyjxA@>Ux|I zb46W#<$7tTenW&+-dneZ%EQ<-iN2vY^9^J5VOoRtk|!~lUgISG^ZLil^)>4Sj9~tH zzsZ0Tr=djOaJ4m^o<^PioIV{=e2UNPLe0orph31TSSKLsSS;U8UD+=UN<4N@;w?%% z-X-dqIAyn!49KTeZuV{*s+9SgC*XsH+tl|c^KKhB#&5Qd-!ER|HQu2}yjn5>AwNuS zbWo^0>xUR)FavJ_y_&BnAh=j6?$)YLO!UF-iu%oeU;Q$}057F|guiTawvOLKU##!X ziL;AJHpJD!Ljp^7u@d%UX|#wBGimeZyF1|NQjoM;RwVVEoF>nOok|y7YUzBOY0zQM7Nh(%BEU9ie@L4xlN5BA4AQ;xm)OnIfWIu8)d`r(igiT znd8X`9K`>Z#~E_)a9RW3%sgjZQrMN@}0Pwu%JR8Hkxq+wKTqCt@-QBPJ*>_$={6HrGKu%P7?YAPHdXR?!~#+*F@hzkHRSqFi*89fak^1Iu5b70Ja z_*$0+_$LjC%H=`4h%|xtAA$o@OQ&pym6@V>5r|pw^S3ac24bm;eq-J7($VcW^H4JZEx0+Z___D_^B)^bpV6)^d#s>#)`4JdM^O1Z5bk_+ zs9*VjKmQ?rZrkFf#IlF*Q+i)e({^k};S0h12iWF7nAqur)3%p)_?^6Was90FMUU0} ziGS6H_g8jMQ~BIgb@x+D^y|&Va{KwbX89F9CwKHsVx*a&j9j8B(OU*`wDWn$e$gmz zV)GS7eA{Z6e7gjp8alzXzE=VooL`i_vqb7R2Feh#KNZ=b?#lbJOZd!h-uYlXJ63IK zwr3!G(+}qM?ls4O5N*>0C)=?(P4RJWxy|%w1jdM8<3|mx0~+A#;npZcMNv75O1-`Z zCm7dJCu$wEq3)S^Ek&DFkX1`1b1ghcPuiOC?K}75Hw=$qdV500JC#M<6;oBGK=~H>d);YuX^faqBT zu>Pm;$ph-9+0*&E&7YjS$^EvvXmJnLB+^XdM{a2MVbZ9ytE2AeCn2Y`?Q|CNiwpN^ zo{jzr`9#g6i?^{$HzNYgWE6;TL)b9Q&}Bh)K~s+<%=EkJyTlV0HwDc~LRov1N>B5a z;7g%H(jA7+F@Qfbuu1Aq*>%IN;;B|u-4@lmRl0MmF*wJh3q${=+vu;=e{f4WIVz*_hO`yIto{w|8tZ%}q8YHUV)k7g?luwVr#4m^xW8LN)$G(naVUsbYOVCkF5GkNRU z0%jiv#~f_})Iq+DPx%i~Hr#Wm2dtL-6oF{Wj;7|P7}NNz>TA$yfU)oFN_vL-9HNc* zKVCtYy18Rh9EO?$Z}s|N8oKcSof$|z12GeFe6WX24WR%2dpYeZ&5Rba`@%jf!c!i0JKibhk)i! zGk23#ON$Ksgs=-;c`|J& z_7P&Im2xYXu(!HJ$qr7;usEZDsx|$U*BwLe16C+Ku>@`2McxR%yoOgaWqEyHV66g! z=rvEfvNeaM`a^Xm*^%z_l47k8T|r_yE&|GL6uQ1*e(W%WqKS=$PHK4P*efp)&)CcwfL((O0zY1?M!|Vg6`y=@1t~#c` zuNobuMky955iC8RcUewAw+aQjrsWG>^FlaIP(L z?i-_yOyms#)joQB-XEUATnjeh{?C!>oMHlNwXuF; z!+3Ml4Jepdip4c=E3Nz_kPvaYbU#O-?pdAeg?vYIcUPl`gw}y5WD}w6%fLTJ18T>a zq#3jtWsPK5oe2T=cVMOw$!9ZWOu76f(P*#n5*k3HF($-w$d-l(V?qE;g`+D%Or-2Y zEgahv%$kJa^Ak~BgIL-1Pv9!%2NZC$aj=jStZ&sEJ5Cs(?0?W9=r|VL?mWewO_tmw z!3`wji}w}w2@$WoIXjAaCCBIP3twnnC{em88)t}N;Kx4(DXwTq+yY5Nt z3`&8ParVfDq+pkJ27QkV-cQ;2+Cn^TGA&N}l#lF-A>-mEDfw*D_)T0Z)|SO;%x@4f z7mGzYar@yA0HKyg{=(KQrNj1o7hC~GYS{NF3MKZI+R(hzU#JwPcVyo<{#3RAtk$;( z*lOKvAFS4Q?Ss|2*FHeX1NJdGNEK+AR2_qlM?Si%N?E^S+vH&*2-S!8ey9H;8Q>tN z&tdFlO&ZTmbxP38jD#Nxp8vQ}@MI?;*-H_x<|1svK*U1~Fww5sv}tfoYgQzc+hk0y z(XK2ss61Mpk--WTP*ipV77_;VUJND~!fAUwvNeB#jeuH!{ ziOdMJO5TbLI|tYL$l7IWgRLWM?lM zKY=x90liMS@)rGHc4}yfNu*vv_~;s?I%oJ643h=wls_b~skr>5>vK(ejc?Ht>=Ld!tJlI`z7W-lJKY1;U?xZuo#Am|Dl&09|$Pm05ob{1=%8Vgm&x7*ft)aM7;62%3=|* zrus8%@78#s8nOwQyaQiU6WL!l+-?m(^IKO@6*C{WdPcAFXa6ELtK1&{s(Yc|joks& zW)VsSphfvs{7L0f=f7KR2bq5!CYQ-5bm=s-HcYv9uRp&dHPb!a@KFzO|eZh?y|3vN}vgV|%om(Ly} zXK@ZxEH=4}8#B=%N1}%(?A3K`4ayB9Uc-Yll%L`pHroq-nVVm5bA30fUaO$RRsq17 zK2OZ%h$pnRlc z9Rn$jU}Kx2!GQJ89Wp*h8f4u#dn$_Js_?8buklmDx4|HrE5NVm$YO`=-j@_1x+on{ zCW-ag|J3Zd9n1-qyVqfNcA}G^BKR|l1+Fp>W&9!7lc7F0Cp1NBS^f26uoDM+QVVI9 z{r0(I%ChHvxNi@CsMvUBw3PWP)660S+})8qS!JA|@pFi6Ih0Qo(C6IAHd_zTz6!1N zTY2kFT4c8}k}vIdbZM8en+hVLCq^tgxGd+!{V4$iOt`U;}8jwM56wmm;kTe_J%i47Wc;UExt4S$004y+_A&#Ex0 zdApVO((@@AU8;Lx1=w##>`0}6H}ibTA~FY9)68{hf|@ZFREV=JT|-bd-9I?77j~6s zQBXI*?86H`PV>?1`Be4)QTFD6QC3$Ua3+~7K;Q`y5p9&%MjL!liPCBWB-;d3qNqfv zf?F%EwA$L55Kxj#m>HPI$0vz}C@!&StCqLL5|t%@Kms%g+9iP12rdzq&M;Kt24RtW zzu&p{nM~03`@TPtdG3Dhx#ymH?z!il8w|XObdWxG#0w=tOga^M{udG6EzHr6?d=L2 zM0vL`xgSjhwwDdT(`bgD4{~93k$MD8nk~CqCZ!qn14vbcs&E2hFLaw*cA|!gOI2hX zZP-~QYT!?BCI%VRmbrtSCtD$7GcG^AFgzKpsv^~8pQ#V8;XfO_fuPQk?Sa?v9~T;F zr5bl(4G{0^8(lF8hj9}j&3KRg#PCxK18-valdBedPvuWBwzlbIRlEmOCALuA6O>v2 z6YDJ0U|di8JJt>}0k!LsCgW9;J^o$Qe^-^dB7adIhWBV@Mf{8B25lCLtWmKeyzd(- z#w+oyk;lG0p)33#dacrQE4`7Gek{57qTkZK74Mp;$h+2qTj>A zH{hEM9K*1wvPpO;NsJU2y(b!-$mpzSNw-)SXi)vTRQC*%&W}~3%X`$T$Hwsg9?^&2 z3V%c{72pt`Yzt104?lu1Tlr(Om7#29YqXNzhhK_*Cx@SpekX*VjDE+3YwaC>J6yNYtfeA1Knq4ioq8S-tRNKkZviAYHwp+0 z6V)o1E0tAm@YV88MJ6^%Q;)Dhl~V-Ax!l z?krGJZ6B$O$mPgnWB;f5FD0nRTZ$ZQMT@TR817YMwj>^Y3llRuGa8YkBBn+oPMx^T z;eDu5l^&`xpN7nGY&7`1=o$9DUW$^u({0WmUk33?B|B@$I}2BH+`>@MY+eY*#p zAK_RL4|MI~uJD9NeQ9RHL{K_$XVdJ(3>5J{`1l00W(KA+QStGy5+QWO;5=VSG;BnsLRMLYh69^_cC zM{riNlZen8Ib%Zu+v0@7cA52voI|tt8p;>AMNSBCBa3aD%Skupa_;L)G1xbK>=1nY z<6Oh^aoLWXs~SfY)M&7mLH}9YHx=aW)}X%AQqP?-&;VsR`|rU9gL-C+!ok;~s4#-O zO9;q#&_USLH8tAE(Q*IgJT%7&uv4@enU1PNB6$99iZjq^&|1;R&co%p8fZuy@ohc@yDD&FAjVvu*}6FCG58xaW43>2<&u9*vL5|=U@$-OqRSr<=O{isn;ij&Aso(7^~wj8A~xk z=1pZW>W9I2BufEM(;=rT@EOrQQQ;wXB`MCRUBwx!gsy}tQaL9uCFzpXngcju=^wJ4 znk+>ZO0sH^S3nDc;#IGnsmIP^5e7U^(R zsalFQBN3rWBx4FO5!JI|eya5o^o4dT9uauXW2UuYtZa0PMr1pWnHG(J!j!dXx8!Z1)bn}`pbQ4J z)PPFgLSsxEU&uTu$ZqLJGB-~aTEVJ2M6)RDwIssuQ{N4~P@0OJJyv1cokJc0{S4=u z2=7=d7JnoiG7FG7+(@=g&(r{=R(_hesCRgtwdH4( zPkvTEBtOk%^0W5m^3!sU{JipG{8U{An*uDUX}+UFs}eU3MU+)!uh@n60Edbpov)J5 z+EaQTj)a}NcIfl2U1q0aaK8-304{Hm z8UDZF6IsRkwCCL^aG1$R8qcEen(#R~6+FnFiSNn1#4z3!2J&TU%UAx^9_u8hOaW+)sZ*Gg$6qENSt6Sv_j*xLarE9qdGjNSN0%bvqqaEtLAEG zMlQG!{Mjl@HS^t8VVYwfke^~~^K`FDD@y@TuH6UCk*hMxl54I?_p+v)8OkbiZrVKG zL-Ek+&H)OMF+O}FJ|K_4CfC@I0KHhg+t^ST?`n;_zzgsBso{r^VP1VlemceaFgw=8md!fED+~A0XA=S~d(LWl!(-9bH(F6tvDn8B7<{kNG9`{ZJg^F_bi` zIqN(MDbq$+x4B`(M$`+VJ&{kpmXNKMTR1gKt%pLpoZ0M~M{CxFY$>6{0-OSEz{}6K zrNoxr8dEw&l|G-@?8hHt15{jyf5DW{PUQ6Mg!C+UfxZ>3K_P}G2O!nlt`Y~VSxGM+ z-E42k1G!To%}5a9VBVLx5Cxc^<)H6Yh-_Je7!wZgFvwT}P8!=f4L@(sA^;^qR|=@5 zfbwwSf}5aJULofwE4I^dxCnb?m(DLwQ^pFgkKwA~g3WSzu6iS~&IV%jamp)XxN%xS zBw$)X)a8wB+p)@8?!YUM+^o6j)}yjS1+oC2FBI>310Yni!E*!Q?RIrdk`}7hV8KBQ zeDyrXEnDL=C-7bVgjJGZJ=TZDjrA_GAYB$CWBv8Kh!49L+OMXWxTz?$o5fiiD`&;I zrA;lN+;ZbMneD0dwt)@p?E%%8T{(M>d}fuxC@d4jaOWd~iYBXMj8t-rgBQp|ZaZ)f z{)aBZaz*)%H|vM6&Q{5{aP@ z@E-_8AJz)7fKs%?r7@u&kaveJ+NLmZKD$twX$PkBql9OjIQ1OE^D~SS@pg==h0sOE zR5C7sWq?RRw?SmF8t*_M2ttoh=z_idw~z5GWa0rcmbQXy8Do&L8eoThV$6fm2}gtc z7nsZfjQk9#0wX_@sWyXpY?Xw5(hK5=?_UheTK+yG_5k+&=<PDdcoLzza z)&I0?7K*$ze{Ph8fa|J>4_>=B^zI@utqI6PrdN`l`*1zlf`2dKP3`P%1&sv*f0r!L z^Sl&w603#c&V>-vm9_ANzY?amhuKy6@2Hs9RRtKT&=3`a;}fUUkzY!w?txMt{erFH z2*ly0uS>-KfigQ(nYVQrh_%kvJPIZD=&;KWD~cb08G|o>TNc^I^H2p$d<1!R%@%^@ zg>}IikQ4pM=wK76E5H_^y)pccGS$}y6Rc(U$~jDx&N&(n&y@qQ{&n2A7Gn#*GP%9g z2Q*GD1KK%3u9FIhe)t8J%wj55ngTm97*2$eWGS3a*cE!OWwn9JQ9#$U1)~E6#$*js z;A^PGxh?u?rJ92OMp(BGmQ1xs;UH%Gx6NvT{e}7P)E;YIPQFggTfj{)QI5A2PzkX@ z{5-AN|6x1Y2OmqmicG2rW%7n2wzxDllp@uo+Uz2_Hxd#33^LE+&nZzpMbW z>E*fh=cp;#NhaW!0{`{Z&^&JES`ap`&L$gEYYTb^X7z|72ibsxd z@T54=qxTK)CRM&##k?*6h@t3xDn@vd=6@=NB(Gb&N?MhvqGsjg5+S@vmHECZ!&(0y zn2zuz&2*jsKU6lzDO#zho+}!-+)#lWn(_GXgoxk7?1^DhDVSn0Z0aZwr1;XO_;UD? zf^0ar=C|=Bg^%9=S>#I_P;R~_x@O3NfmsBCX@q4fb2K1_CKyWTim7O`ekyUxHz>lo zkNFf|ftpD;3)G-QOx*t~dolb&Fr-+OZ1+{Tyd~4kO_XX{gw$r)i~u2eQWNCO6;PsS zXCuz2{Ty_Y+oIO9kMZry!;%c&mL`@`x)+&*D-kvy#2Ydq-QfTl%x#65fs{J~q*Yhf z;2F3FsMHj383+Kb&e-e**c1>W`I#`R1Bc6(dD)Ra9z&)MLog5!TX@I~nOG|@5ARjz zx)N|Y^KhCkz|L_B*74q|j<@Yj#Igx0LUE%@-K8MXn?9$Yz6p8p%uL@G%#|MQ#jo#$ z6qHFV^ocx?>JzCU)ptAvXC0WZuqev|betwMDznp(SxH!Igff|ES^54I+2a$au^$bi z^5yvKD3mTT=ts~2vq8YbjXl~r5ln~aglD06)Sq*yGST{|=Fmb8Ho8^bXO*YXCwpTH zR!_LVo_~`2ACZye;Q_2~+C+TYCLR@F*)>jaW=*v`SXGM~b+Vw{*v-0dzDj%wsxZ_JT=5=|;yN zst~4MB&-0U6!kLFWvIo_b^xE$&yA6%Ra3=%c)B1|S%CATNZoh+!6CFFcUB+}XJUO= z8UmMZiHpmE!N4Ih{8*0^f&Q{j_j|^?l{gEydiS$;o?+%eIR>|%E$ydB`y5b8B+Ksw zw(vXb9`&1m-+9wzm3|L>1%|R6N=vt|o&Y#=`k|4T`(@d$_=1J6 z@3gA7|?kw7qcV0*rGwj!uh zzN#e~8ZdX~oaAgsAtnsv`-r{D6Xqd!>OU4=J>Sig(AC+XhU}ky_DKi}|jhMHgN^n;A`rio9 z@&4}?fPG?H4{BG&k9dQjEPdNYv0>#09{`HvwwY>YuB|flK^kX+v@}%lKNWW7e-c^X zGej|DyC{APE%nqD=EwenL{B@KY(fx&@ot>*Ohtaj|L8G=FEj!^nfeAUo+3XyF_gDa$P|1H3n<8 zFxU@Y{o>)X0v__<+t9VZvGgTXIF`Q3WNn31eKvhh6xJN4txwfQAQq5LdRC}Hn(+8F z*!M86XQ^}lK|;&e_I2_ZcuboRr5+Ng?<2vO^~lI2NV=_m<3HF>I% zPnO*b_+jF`k+%e`$7tnY*3yUUIut|o?I`OJ( z%7X!Bo3AI&3_J_UK(V0j{WQ~VLg1Yzxj^CKW6#(;-^ZC|U=?X+-D>{FNf;OccCj8m zY2K330GAUrw3R!*^&S)LaL2u51=@x{Be<9Q*mw^0DMZk%s(!@rAIi6$DUZ|OK2=|` z`Dhc0LFX&i85d+~e|s4AK z+OlawW=(zqE-V5QQGhQ>AH>eKkrO$GS_}Bigo5CLMY$*K^+X7EB4BIe`@8@$GG)u|u}wi58@@@cpXA&^`M14*fe@|ISpu;HJg=3d}}*YJJcsA?K3A zUUz8X-B@$a@ExC8eU`?|ujc>_c;DN7X5pkp7X8)xkn2WR(lL(eG@P0ugL+<7lh=KC z%2QpXKo0Sn0a{V`=MrbrwoJJJ&=`IN7-nVqCOzNN@?tj782?f|9wxYrwXT~8bU&l1 z?L0kft;h=!$J16UmD^qYTF!nE7f^vwJD-Cp%axV>1f6947MOzpY~({l#BvP+Zngf` zSPy1oU*j^DzJhAZP9WNLyUgvokI7fOujk}AoXNEHz}LGy+Y9Qo>NCNDj5Yf6)En-gq5|Zxalf#_3OJN>{Xe184w8F^{sLA7WYI z@1HTo#IrZE?Gm+h^4BW&!YHb`+{hAi3T8Iv`Z#6t8{9(v+pVv1YsCUZy<8$5Yy}Bs|H7 zK7s?KTI(oki6%#SqPUXSL@mX}7;ST;UwdA9926B3?!t-@x3Q)}Pq-5}0yX6t0w>&y zVC4!Zu@g6HDacz5oI6(PlXxpQk<=f;!l>pX#20JgllqpiV)g$6(jbO0!Jwm{*v7jn zD?np<#y)tc^QOoxs$uOjAWIwCeBlnXQwzWoW z3LvFTJ245658{GVUi)3AaK%P&h;66$;(*qE(4AEsEO6sk zJ|*6>)SZfN?}P4z3*7AmZusaGh}IXovZmrX_cT}8P$b5c9U2W1rMV<^tM+iC@YR3O6}at zCN&s8LDbfC)B}KFF^h#xj3H5|jSbN3mwbn6dq00i0n3=|7JgCv^t zXEc*ng7tlK73`~6NC-*un^{>I$`dj6&*`ANG>pd>Yu!#%%gv{Z2{1As7!|&U6oHh4 zIh*y7l-Q5(EgS~b;JvdjsbS$Gmq*SMle{hp5bBZ(=HxY!p*0Ni1<*fd^E9i0L^rN0 zx9@>?vje%+s=>V!cfZ(4TEfvRAx>~7p!`|zZZO{^|A55p+QRbTvpBX2ijQyne}UpJ z%%E653{7IVfB2`U>OW5`+-dp7#5z4Z8nMp#&HtzQMYjbcXWQLt2I}#FZrl9DbD$9L zv!>#z#K3HWea<>2daGp4!NAU$RzoqRT;{7a2fP>t_(Jr(4;RP@DP6mdrgUN^q6(;E zrRbvQj2xJ*hRjL&!NI-qCPG1Dd-0YpNLN18DJQF~59TB&KXm3>gXd&|y6>7RZlI02 zW1Mpi76#^|j9u;oqize+xeFo8h2h1Dk_wgBh$(tABII&a&N+~2%IQ*XDb;m`|2I62 zXa$hib$tnNl@?dTJ3a1IT#G<$LNXMWsU4C6QUwX;XFo!g$5^3~T-)98abXW@9<(uN zX8o}ngYThgP=4Sxo=3tWdB384%wMDSQnZ9)2@3H5lh@y|#}gU8Jk?&<&B-(%2xX(& zq-(raLzDxg?%7hcKLJ&9F=$~HyFrp67oaz?o5bS(%*ZE`7lB$ zS{#_9Go8(9eu+#<@96xe{nq~v{o~g+4d@>il%3d?dQq(I@oc5V8;QtoXz|L6f!J?X zLav0wqSvO%QjTHyI6W-}sSI~x-HKHiiazi^X)22b>KunUqngSL2L6MlGL4cG7K_NT zf%}H?zWL2Ldj@G2Z7yn1gY$Bp2%iJm#V(|1?IIasbi4-X64y~ign*|mO7r{~v*vez zjG9G=3Q^@^=sv72^rkjBD|8n>!LoLQy04S3P?!Fl&J^`<3G!W`@`Wyu*cPU$5Q9V2uds|~DL-G7&t?34UOt2Td`dn|M}N+!Afm2a z^c6oVCG|;u{z^Uv6qJX!37rf}5-wHhbimau=X&J+p}iW5o39tVTI(d6Jfx!bU!fP7 z1Ji3`Ci}q61X_7o7xSxPp~d?5OCSb3fg5TnXO)+@P2gd8)9@}T7Y$jp1^ z2~nsjT`7bN(VjMl$d9EO+gddNScf2I!3R>=AU$eMD+D&tq$)Qm(4?9*O#mI!N3JUA zrxBDUwH*>Un8d$Nr)2&*>W!*5XJP3d7#HP>Qgn)X-dzFW#)( zD5^}Q)%>PTQ)@J-H84d1s1(w;rvYJLphIF8fMZ@%r&jyWe2@s6GU0;3-w^-tD0jushUMOhePu*V3BmV z^sPRFmApDlW=ha~N%5q0qR0FYdKeC^o~l9;niwubSA19$xjb+@d7;AR3;a24kR#6M}p{qGJAae5B zkDTHvotksJ(chz{H6+oZ71D=bCjb#_1o2_4*`X0qei{+N#hnQGJu?mJs8KsZBygfk zLwvb{I6`mzu_Iy0mE@emdPJVW*hl*WUF}52mm*RH4A20kmir19{q=9k@h1BP9Hm?-LRJpBWNSFv&%EJsrRZNQ|#L`Of zs!z={A!fW7?TiNhZHz4;-HFwLzmq|YF&bBoqjBY3D@Wlfmh{X#RTIvQVCzVaa+>f) zLeDom$YmlFKg6h^MU<}CJ_u92Q#ZYg#H2Y_%9u3CiO)1!Lc0}4UVQ&mDp84 z9l>sCB5>4|c1A!*O6m93yyb|pw0$BA34Ml2uq|5B0D!rXR@x8rC6B8g3GMdfYEnIb z96agb{P~88?6M5Y%K9~=M9;;s8D9MKx6Bjd0RA@WtWXh*ruh^$M?W8&1&ha7b-~N2K0DK$%#cPg3HK( z5nTCWw0g4Qi(P|JyNM_lLy2$I>J|HTr00Ha)GlW>;W5Gv%X-vF&wregE3Q)DPbZG& zWTh+Byd|na+08akMUDk41LT0=7!y5bphcasrNfN4?=?~wvtoV*k5eb-^h30IoGnU# z-7m|aI2Hjf?i7w<0Ej5_hkRLezPVRD2G7}cXC6}N)~;1CUrVGkF=H2>5?pZ7(4vT@ zM(sVS@kAJr#dXAai4RP3+;z(pALiAOa4~blPW|;z6%9bBC7)(=MoT`wn6CKF_f$bF zw4$;_S8Jz&>kMc(a)dDn_ZO{3oxzBBl*w$d6~l4`Xs9K!d_caRQgT;0mUWiODXTfaI9$ ziOg{rsMf`-#(E&Y7r~9gz99=vV`}$6D&7o0{Ky68F+LCcPQi)nxT43n@r)B#VZ+LZ z*E9~_gQ6AsZ2t$q0!Sf7vw}=XSjD)|^VQbyI^;yj!E{40P*crYSSPp|*vJQJixIGm z+HKNtrAaG4Kitg88MDwCwYWdVo{F9egTQSpf)q8C86OrqtvLgqwr6*XE{(*>W&IcE z9Kjq#2*H7sqRs9DY{xp>Xek6%k4%sLus~at#4!3DNl3+5H9GNsu`< zl)fu3oKbU#UfYeZONpwU+|mII7j#t_T&goLKLK{T+`mH$ETg=$3Cge%P-ccc_j2aO z!jU4mp-1e;IwYn{Ka@@c<^U3{tt^^EUBzvTP}sRmPD(a4mr3DqW&J93b9ZfN8E8J`3Ez^aORQZ)3)!VVyL@D0(Y;owcA_*&gNlJTu zCNvgu;Suwe!vyb|9KyCf5_(!oJ|`B*JWr3A+39PQvxaiNFi=4@_I6k@#mzn-U?=rs zqU#&jf1Kj0vwwApj|OjN7Fk&k;9!_FV)(T_z=1GpR-&~SZ}zB^gy8FO!N$UI;7}t@ z5?ZM$ko$C1lW?rFook^!SaR-z+e8{1s|@Fm!oekjxCaDh8E|eH{c`U^cm2l8_zWfAa(fI(=ozsvNpiq2 z2~mLBSbyA-0kxK_!m#imH=8h=BEJ(n9L~Esk9441oPEFB@QXR5!fE)2pyl;l3TtKq zD=?NOvjuDc)SRo4>Q&u1i{u0C(d_}xCfNe+tNbfo>UINCNB^nEEr2#ApEUg2(LT`P z9)1|xfF#3D*JOk4lj~6}MSeWWO00=Php4^3#?B8UJpqr<8Gd?n7)aOjCh2bYi#GhC zC_e1W2Sqhs{ebl+()GJPFsQsbG5V*ZCxz!DO(q1KAYrieZoNIJMm$#b2ZRnb1V|M= zx$2xUNyXJ20!sSzRaZ?~xpIVQ)ODS}c*s1#(HRhefFdYbhoxFaM{8jzDhVT>Tu_P!u6tm5hN)H5e zO>4U@CHTRCLM;+uGD1<)A0&dV;B}D&01q8}WT1>+vhcKn0RJBVbr{Ae{94tx4va4f z?}~wH8X51v%L9>bf%i;l>dS#bDH8D&BUJ52E@6)jGeVJjJ8}SCF@I4AeqFMh7$~zt zBEB9d^O8iIWP~d6TZ!l&C~`k)RqMO~Zi4#bK(a>NFdP)bF8?oa>BiFszzN*68MRL$ zjO+SoiE5D4W8sYPjQX|-a@cVZ^dV2cB<*oZ<79f^^Ig8rN6Rscw<(1ZFOR#Sq3 zYYhsG#o2TU0ifxS?Ai$cgd=ShUyd&hv00plFOIEQT!g|LQ?qzHT;$8q)iZw;jus%g z&84ra08wo&eOm>HW^-u|0~-Xx=F(0CB0p51TK<2M9_N`wk4?unX%KI@92^UuV*=pr zJ|P~2J@Q8-21d&|L@cn-yk>Jhw+7D5;<^P);mZ^GnW3|p?(#J^3&wWjy ztNJfs9csZT&cfubeG3b+CA?&i_lmF&r8)}7bLH6GxBHk`n7R9?d1ID&O}14y{&1ik zFeT6xf4o^Z-n)fCTv=L5W?491u9S*S0&Xj0vqXZUtR+`Y-J$!QQUkg27`Y|;2X7Po z;%h^7Kli3AqxMRICaWv?lQ_}LnUJ6K#`-E{IJYrglZ)y ztuzf3sgQ`@BEl||Cn;@s)!}YTN|Doh{&*Z~a)Xp9OdZ$dYn@;g!VORZfd@SjWC)g< zAbG{L^(C1J#@2w;r(Ks9LN*9+_D+tkfZDCgybkN^d(ofWmR+jbjkc zSquBctzAa#UPRgjuHAiHQVKJW$Vrc3w`5qbwX#GFJV}Dp-@{9)TnHRmV?VeI-1wjx zSzd9#*xRLB^tDDT6D?!eFgU*JICo1an9YY}oNzy#xMyPxL^0^hvWZ$Fun7M_h6Fi` zWw3u^Ccf0R5vMF1KG8-wy^pOPW)r0+%M2LB^BB_TZB853rkwp^0 zU1pdTFPidxEV1ze*=~>s^+Kbpn)wnz;Yt^oAQ6eIXf@`KXcVx&Rqvl;uRam)F@pt9 zxoFl!MIywM&u82s#Nihw^PgTMU!i~L-}m(IoBH=3`ga;i_>K=>aH;S3wF`!Cz808w z-pmt4@b8;`aou zxqR|_?fJ+UH|2*&-UP8Et}HBRkppwp(F?M`ZA@tky4$avI%U8>1ebT=UC8(8h#I)i z0FPbPhyU#6X&U&U;40WDnuY0%J@G#}G=`y1fI2@5kCTV?rVP0QEj%~nv{sBm1H2}#8gxH37N5L8NGDkjdr=tH z-g#8$y$bv}xZ%k^J_4;(=Jo@^_R@al-o=)RiIIUCGA`|?%l&04_m`;O@@;A)3 zO&jhQw!ZEC6tnZlLD#Eo$CAxak!}5Q%UV2I%Y2dB$8tYf-ONtoE$Kox-Zz9D*y(WR z=3ouasVJujjMGPq3*8 z94?!0-I$4Sx~uH~yhdiDA*>V%pt>}$?I?Zt`tqbTqwasmI195w50dB3{qhN?Z)Vrr z9l~|2OT{-*>-6*b;MgEB?sPU({y3aXOzA_T)n}^)HWgmL`$g{R#7%|gpryyzUgU9= z7>S&+|0tE#HNUzSvpH%s8K9GI{lM?MahL%(`quFcqPpiOP+@f&kF_ki zT-75It}B5m+>TGNeB9JwIBOS3yi80GmSU`W|Lg3ra9#LW5jnux(z8N8C{wGoMVLy` zS}s9NT%euoZeG!)iWBtvBQRE9UyiZ#He|M8Jcqcz2t2QWs&*XdYU>+ol{|g!4r>W% z*7|ibtD2LH8HeM5-?W-VBeSd(BkA4+=0DBq)g{x@gusj1Wd`1Y^1Q@aFGj6qyX{%e zz;_vFgWTSm`>xUG++}+jR0(DqT!CM+dt7gBC*B-v12*jR5tfe-m}SXXTj>DQoRyqy zdp40a*)<{{BTJU7iV89yOsymjMF@e_L_VW0bQi7$sgI$v$QI&KVORr%X zkiDFB`(~Um-nD!28JYOY!e2I=3Z>T|(u>5{csv=AZOu3%Yh35_szjDT7x%DNucUH* z_u8H}7`hU#Z~+jrO@mUMU|pRdtr3gX+@~%7C}Pfe<4T1<7dZBko(zXc6gXMU!mR$& z&=b0L^qss-9!fI&O{@bK%1(~4JWpE>%fNhYJ)OcDD-$=3Ve){miPj*CTcu5wU!GR6 zN}jFRAxaQ{F*n6EGYwCAIy~xX)KUH$~#~hiNsW>L| zufiv}OD)(Ef0NFaUve!^Z>aA)VPIBCuj%;^0OSU}=z~$)#0ubG?&_?Xqj94U!xzzg zl^@;#JmO9CfEVdH zG{~uU!2@dQ@saStNppLv-o{A=YRWV7Cs_H}p;u|;?FrGW0magdHQmHni{g~;<=&EK zELn{KB;W;;N!*GFQye4L1y!vA7M!<`mb9X)9iBt@j}`Gl`e5@MvVJ+)utSUi_Ls2c zDF4jCR0nEaL7cJ&hTgBV*HQ{WssdY_n?MMZ979U=#)r&h956* zV#d?Qtzj(t3+jU_)p|%U9eJrpVbdLX5Q@+?kaGI{18mN`1e6gOrlb}be&5c?4vnD$ zHH&20R>S`-ZaR2E(@+)kR?-h#`KY^!5+gcU@?mbtA>)w?5Q1O3&4RG3DQd=_0}y-< zUhalXI=kF*o|k*Dqa+RySL~6u3Zdd1^8m*DyWM& zQ{h#0Ila}29yk)jK+A#Pp>jCie+~$W&actIE_nKVsN&3E7jAgq2}uZ4*rUPFDsH=X zdus4{m~a%k+CuTc!gyo-O)kD{>^qPE&xpt#*A*<3m@ETcfRU6yFS{PpFKeI?pfXkW z%ufXfUVcRe+T=_j$EmvZ@QvVJ<0IKV9y#FZY<0+gdq&!L1_sY_oJ@Z?Ixx!@S>1UaX$ci#bn&yzD!4 zxyXas^^x!RFmardQZ)+C8JCYxo@}r;8^vOflwer||1rvW44LUh=$rYQ12zf=D*Sw2 zM?Ir|AH(mwJn#c0QH|RHwhO<*@Mk(Vl-mWaTmAd9jc)uW<93i4w@j#1`9g^*ZBs8IhU{PuTK4Ipp)fQOC^uwB zOIo$A_B|)9iQfvRzsPh=Ha^AN&#i&6gZpQ+^%S9Ng}Uozr7s*)Dp(NWbm zKnw`%L*|;wR;n2czZ_$EXyNLA3GppoYv8%@cO&Xsp%uDe!` zcO78m6cpve#&a1$)wZVvEsNR7rQhW)Aycw1_=&N8Zj0~u+11#P=XO_)#=z?Rh<9<~ z#<;R;^K!cvf9b7!BTn*{O(b8Q4oRWn0stb@F~y#i2zqjdUPZ+Mq(frv&>8nCmD3C@ z75H|}ka~1*kiJ9rcd=H+-3w0DvV)jG-IU7GvqB*VA6musw==0Og2YAfI<@6&_A_={ zq)QY7JHEaQg`1_^tAYEsyUzssOr>66DXKwMs-Z-Y!MI-`j=w);8qMCi)RjhMEWk~$ z-1=vhX*%oJvs95Y^zX%p@9p z{15L|Oy&2`KS7V%auFMf9cL2uEVcc;Wh}?~LSyLyQC4|cHbV;#H~DPp*}G9E&O(^v-n!j~;m=2#8*kpXgoFG2d4yHpp z93Qp8rvE_eSn&P#<9dv^nh)aQdgFW_Pi?~sCZ49YgGp`S;carIqb%9%b)Sa|%)VpQ zWkZ9IBiG_t?gE$ZD1)6=34{6Za4S{j@f{ygk=LKq_&T@)c)0KGCZjC`9?@jGy>@DW z?`Uz^xxS-$)!3k~1viFomrlx;ixPaTQ*kDPs$nGE?^(qmt!I}fm9DB9!BCKW4vz#= zR-gTFU^cgzNSeDkcZ^Z@FN_Y!S7w@HH9#|km?4py^gvtH9Xb0W!;l+qnN2EfuDTu+ zq5R}pWeJ(klzj*vJ$rH9Up}+ zvqL_MMr8>rvxJrXf{Wfg^| z8(Z;17tvDM>}yNS6;v6uaDCB#*wZWt;wz{86{+LMyOB+x+gSc?toNA+ zo3M*2NDB86A9L5Dnq;+IOvF8WPm?@?k`&%2*jn43pOC1F<2 z0ieccVTojwC=H_}XMuOtcbt=8Sr?yhi?C`;nSEnviQusO$5>%Q9;^Y8T*_Mr%;s_< z2SgVkdJ12YtC&`Eyd?kHlCo<-N$w~YW$r6D3-P-ImUEEbwyM=y&MFYQ7#xL+CN;V= zr^XK5#!OHLMTW@VwLI>eUqKOHp3Yf*^=Vv!J2AuPufX8sbLX2$OuASnz1nurJ%3LK z{8%!Wl4pra@(lad;>EIg{&eI()hHu{^UdNE9A5F9L7xxE`2sE@&rK&o{>~Zb?shv5 zYd~^EGLCZ4=b^XCX$KAz;IA*m6bgnf-ogxUyEvXR49Gjqcx1@+X6`mpTT+OF*wqHA z1Yc_wTl+T#0B$?9=kve- z(2P6uXRLwPbjztzl%7St#(1Y&_h*0~Uu4bBgsJ%Vsam=^m5R%2xhO(m02X-bm`N+8 z!MTSj6Me_0Rv9w%1H;CBZ3%|FXy|wf-0Yl|Fb;rYYE8<*e{^_y0XC@P5SlU8&qy1O z2S5GXq*=?!xufF+{T`RzM#M$+dvgyt`n{Dg`n{4gS%Q11fxz2wx4A>jBXIVOqa-!h zzmrgcKG9eqA$Vm-qdc}0AvhPg%RNC}x}y?sY(+9y=d-|^qe4SJrYY!hj~R6jaCHRu za|!;K@%_-Ju5S~qDpfPUX3n1eyfFiaarANUb`ojqC{Q{@_@*xygRaG?8<6To$$)4L z$X4GP#hPJKZxyCi3#{4*--~wC`&ZDXB^k?RAlUj@HAF7*M)q^dJWV`yW!;x zeCh!ClnXW%X?SnZs5?^?-GqlPe^ejPXX1^uMg-)%6ITtW z@Buwyn}<_AD0lLprz#_f!o}?Uxcd6Ns+&(a|AQ>jk_AL=LqD$>Jm4j_4;^(-u@3(Z(8c@9%YWh*M zS|iBO;2wK3`1uqpMe2!9BfwE%ybrwG*>4)lu4F9d1{@cYNnkmGP6Ew9AeVy=+%3Tb zt{sI5jKcF+>5S`caw_Exnei8)QVK)Vc#G_=pNvP+C?uUHTPb;!F^e@^>zU!yK(95d z;ZT~?pgeg)2dgD@sLhc04MMGUudan={g~!uNwj%AZp(RyD@9nMoib569epf!||5y!l@I6O$9s zMCE8SjpHx0CONz8z(Ud;c6}tS7ypSJ^BnAp%^iXLvVa+WK3$0wV^eFx>vy(f<%mLt z9dU=gz!sEi$;`*Jo^2dcnevuSX>w97a#FUbl#Q1nqGiJ4D9ENk_Mzug%BK4f*>ZVo zJC?4^%j^_7rZ~0zQl~UKDFsf-&AOdwY$tAIOgmF_J9&s~nGxI0_jGOb%+7YMcWN7= zQ!<~@DK|MOpF&t94rIo%>wjlfC?hmtG2mnj$Py~Li(_qw9W%nPF1Z1DEypA0&$e;% zVb@Yb(&`^|{$>{@nA;1*zVh4Mb6StlF{iK9%Vi=^hVeY|DPH8lFFbQ%*P@(rj-*8O z3|G?X7jjy0l^b8T@`#eKb)p+G-jR>#e>~P6>+9j@kcie_;H&2Ns8OzX8W9b1ot6&c z6`m3)S+9&D^>xXVPnAu;^y)hiwfRak6uJ!YOgB>0Z?gWKIuufT!Zi!eVB%@WXiqNogu=O5CEYj zNCBxN`tb%?n%Jv7ik84UTkg=qOF_V%i#Vkd`xTS5PE14+VD3u5j3UMc=)xpU92c06 z61`9dCRe2JA_r8%V+2bzI|U+rI4tjF>dL>;mD8ZhPY6-@xkJ$Nz)UbXG@;6GWE!?N zan);;%1mr7^yeci2bed`jIx!5HiQ&fnsdu&z04eZT=*D%)gx$mh>v9V%L~tPdY)1v z52%WHy~O6q+G*5^EG98>UQ2#P%_%U+74^9r6nUQxy3?x2f<)k^kqu+){H>6O&F~u(I zk*)*X2UWZ*+gpXYuxQ(jcK}9UNSS$JH1`feak?;&;RWR#xIQ{eM(_X`KGY|22y8t} z`hj;)dt%(Ab<%on=ch_9kTY0PGs+wh?>-ize`a8zu5Ux4CW>T4MiJu0jo#dwEA(9zSGW z;Y>d=S;_lE5>Yrkx6`P7l$A(%6tEgtg*l@h*0m|PR3{axJK0@TS7<;a7O17UI{Rk3 z3yk&CafF-(!?Yp0VJ?B$h4&k&^9D zZKydT^UbhrRB(!Yl_eR>ljGWJPR4a5$5kb6<&T~-BjN|fWgW(V20FL`i3X4x!icArNLYFj8NnD0U$ zt`%FA&=I)cUsdkUYVeZV^9;$8 zDhCRb-GC-iKWBXgxKsFST-)Ff2tOdl=KA3bflR2cun^!OB7c}yrPOQTp!KPLh1xX! z7^38L`QU7KeSbjk0V-A#qfvrORs$GZhods}Rdh}|UkWQzyk;nZYogT2GXw#}-TO=jeotoC3pEx3zpA?qIQUss7j|YF` zZaa=kriqUPf0QKe-KshR`-8XOR$u|Z^8Pd-KAejW*4`9bJ0Ej_g(lbtQXLo*o7lz> z#F+bh2aStPBT|mQVo*z|}fF8(Tnmmiet{FQHHfcB8ACs^aM`gdOC5u?4>b zAdLVB@W?Y1;466133M^Dy#QT=Hj@VloJTwGYZtoP`mmWFWz=1b!s?Q=gSbCI{T*f- ztb0CAS)+Bwqwer73=vbVi%oGcWerl)n-NAG1?FhE%}gDN8lwX>0<>(T-md^CR)RV99>B?*3V4v9vf+_X!9OB3reXWo%+J>uEV>%2S<9tGrh;+ z&)nlZcmt6(E-6Zh(-UIbKO_@IM)t-;TDI(GgdhZi*h_p+L;RPRSRgRZiGP9d0uPZP z$ej?TYdwzm?r5SK9c1~v3BR3HNLNp0mk}@0d%W@E>zj({Qybg|YTKhhxZWMUnzab+ zfk5NJlMs|Q;LCAjCw$qXE!cQ?rZ^#2PGJwYQw*Nmjn$US;a+fp@Vh9sIS=Ej7=W;z zfz|Pas}=ihK`v`KOQ=J)Z!n!lS8`N5(<+A{i=C5N;k=@jyh~-q)E_Fjn zy~5S@fg2Of3>2~Nq9uUwS~ z>#1h;sGu}Z;sY#Y>ei)zZ#PI)#0*rlupbe505$(<2IL|It-pcQ(k=ODtn2sC=&pZl@rtWbBA_e zi%St^779@|CI`+HJ{-ByQtVm89%FsFE7;}VbGXY09tL(H# z7{HWri(6HrTkAP+`-M6L9JVVG6a+%8{^WiWP?#5@_3*Bv;7w{jpvDDA78sy=C7L05 zMZq7c!EZnrOXXGz4!YR_lQx>5s3S93?3I8Xsk0i07aSQ~J>CV3;J`pC#^6!*0PTi< z3><>ZD*VYJ$4tzC5u+r_PPnr~d8itu2O&s-sf3a}Q_>5 z=D@I{zTCVqRTIrMnXs=uGqvl)-xhJUAQ^7Z1CK+NW+>dWxMh0G2+D=!(}^( zHY}Is5;|%wyUwzu%>H&awl{Ly9{7Z!T)*8mOArsFriLErKY^_eb61|pz1?BU$12!? z-8=C6GDDQBHQP`pxq&@Z3(dBe1J0;ET?u4*1Jw#$!+%pX;7tF1ueC|N1af5X!6@3K z>EcK=m!k)x)z6@#EpeIY;CHf@Si&P%(#3ZHE^LQFy(D9iT_DGVe@v=&*7UgW>j-kK z!ue%&^+SqPyS-r3DO^0)z|`1TyioQmTz8A9>JtW?#T`!Ec^S@)`*}p(Hre4&$%^6T zK9)p_Nf64whM&`NBQk~Q&n?&$P5{fFLP{`dzlef&xC?7g3fHD_fI{7>s%=IaYGrvI zU$j|*K1JDAidDs*LAF!ki#+-$^9*c=oGB(kW$5c^O0S{qAmzMC&SU0iu6OUC8jQgE z01Fu2dJkCN=1c@IXJkjdmwXj^1BsKvaq|hXC8GZEJa%#urW+h*{05Pz+@9M4Xvixa zmqG(vJv9336FAG~jy*0ijgwpQ!1{ps6?+gB;=9FYv~;bKlLudc_7$+rg%|gG*7_>f zo>Tn;vR7TizZ@&*bH%r~WLIuA)0Hk7m;CR(jo!?Il4@j{_F zYgo49Go@(Qco<2r&Ryu^Hcafe%|BsgY~nWt@xey+e-*6>tWm5JEb#(qtZCP}q^?9c z00f8rhN=A&@J(OePZTKxR)F4FIjZ$XtE~}pVQR6o&zL%{Sc0(+XiA0Xt%lgft!H8m!gN~>-H`Ip8L_*O7whi*VqbuZYs(V7Vcv#vya=ZbVjX`SAjZbJq zmi;11U(^i3EVd9uAY;ZKnj;NEv3$}!E9-@*KD>k;s~g#W_th8KR5-}w$HuUc<_ zLl_&*GB&(szPkJ1;Wn4;jxQSv6@gvonr9|i;2)%gLvm$cJ8T&^|G$|GG~xslHVqRzn zEwGPD!d=quSC66r%w+gK{}jVsbasoswftX{DOIh)d7EO|yfYsXH>PPE;vm#DaXrJe zN!E}wMOL*Sj~DtqO)wi8TeVWRs3-g=a-_$bkpVJsySe2aAOV+euLR??`K`TwJ0%Y(0Gj`SGH4q$}WN9J&MCP}UN*9eEmelXeoJ zj&YyI%Q@lNOir(!ilY?jKp=%3&{;M^FUq(K#4%qry4msKZo!qGXq(9mmo@Fqz!oxH!3B3Dew;DkZ5p|g>SG2%KPwld~2FFFA~ z!}><4qOc>t7_!JyV&*bY4%ht~47O$)bCWe2b?=aOmkw-2Nd%Pe0lQ-V!02@Y{PkH5 zLM5Jg>?M7CjBPl6jji1w>)&V#>!s&uCR9qxeVRr-{o;gjL)b!gF0#9jybS9BsXV0x zJAKeO*}M{M@E-?AT-1Ah#WkUsn>6quu2$s!`Y}o%qaM`{3}dRyXV+m4;%FfBD*ypJ zqZ=VA4N9689n=Ihdr-OL*dp*zbeMQvH&6sRH4#C#`(91)^~0yrUhM5SPabEqZeK>6 zlc8oiY1fLc*-oNItLE&~MZJ2KkG&#h66eY?(}XgtOf;4h}rG z*_!4yOM@n?O{XEa+M1SXZ4{Bl^Q;Yx-Wx$LGef8GvS-`o`6@ zQr`ZxJS#$vVy^&SJp>Gsx81W09(4)+-W~`@8@j8{4$npCq-UA!{tm*vb||eq%WwnG z_8@*{Id|QaScw=e!7(}iY7)U?^zzZP7Fs}%WMt|$;?K7JdxzX$6X4DJvy;hfZtnM7vgrmyGRg9AjXfkyr1=Cl+_I zuF|I5dM`R;)GeVR(RqCO;!lLZva4o0`$;3EFf)RoDFY{)QI;}uf{hdA{(udCFW3;) z)=YA5byluNO7w(_n7GS9XFshHNp!u40^we6vCXdYdI3LVKqv{shAnP; z5LY^>@y4%zPx(YKEo)X`d=Cvji|_V)-o1?(n!w$REp)|&@5G1qSby0?-ed3p_zMYr zR+i&E_IX*Z_t+PPzmW|d>s?UhSOSJ`kg{sj+6&`dVVX3dtr5tvJUnqAus8gD1e9G5 z4(}X9QUxKeeWj8_p{t}S!lh11&7CNrdVCU^2Gshe=)#I+fM#_>weM%>Fb+pLK*Gqg z94*I(H_1GZH>EC>g=M9g9R3$|7;2Ywj*gt>4u3olo8rW#gg=tlm87&^y@&}?0SNw! zy#MzI>KiaTU0~h+Bd1b9=NT_gw+I=s?DH-{_4}wxLuGZOWvO+h!P-%eprOYYex@=9d8z-S}wC7+w9dVvNbYv8Q_fSQ+Q4Uqf%V^ zwBq$m*rnX!gFjG=D#%1FnPx#2ezH&xuM$nlf>x4Oi3-N!x{;%pP2-N2lt43>FRzV) zy6~qRo)0IWMv&2A^GMFFBk!4&p~!di`S^!c!4=cEq*b2>L+axRRUcr# zT=l+H8e%eX`L<6V$W*o8ci)Gpg?PQ!cRZzP6^vwIiUtohGP%{Y6 zY}g4R3$3NF5_kolQAEI;Ow98)f(cBCn|`BGdf^=z9e?geC;C?kVf$L+;V;El_IsU@ zj1+dd|3meA1i$c%wg)=}|_=XO?s)F4*xcLA!PXS(9V9^&Ov|opQqq4q@ zApH6I`ufYT;cQ?%&Xc$iW$upCxi?fTJpK zqEyF4QQ|X#H2j5=HDc5$g&W{~q=o`;qktf{09%@Xj7R~nqdH!IXORSW0Ah`@q=nE4 ztWQn{f)pfR;9Z#tzMIeKDA^%A@fqT;K^&k;D{YXyf@KrXNsp3m81`ILfcI1g`Z1Vt zw;f2be4NCt?Ro}x#OEO+1lth$Zn<)Hbrhr_0-$GGD+I%2#g-5<@T>joCu4NzX-V3$ z5(eFGpO|H5)Q3tzR~>~}tP0@rWFnJ3y>X{vJeuc`42~oOrRwN~n=>jeGO|KvT|?v= z!QT?0rD@Xuw-uj%V2|?8RWYRbW6F4Q(_}98Cxo{E}4O(^aExF_Al0ogi~ zqY}ve1O?O{dlY%jmI;i2nqu8}d~k2`_P-Dvn21oIbt47=3iA&@nK`>Q%eay|LmjR+ zqVEBBdS!hU<)*;$1|rxb?1*u$R++Xn{Zdg9rEJba>+qmKqgEWp4 z2{^wc7}$4#(d!d9h~lG!!A+`94Q|ZRGB7TwB}w3C43r_I`Z0Ez=0J zoW%~=cK4@fk6yJ=q9qOzGzUfoN<1pw33Qu{tlaD!(igcJY7uy=9)qy)NE~ot)P4wf za4duvIQoA5-$;1&hzqZT;0xRK&xag?1sk)AYdQgQsseMZ#`3%G0$oatPIZD8uu@d% z7#vN738Q;}Ts?~A=K_y4a@@_0Y4vc+%Uq&isX9#tx@MZwQA$GiZ3WQ=C zbr}Xg;$^aIok|p;Ut$p>^r!^H;aDLFt={%4y$|x~d%!2b_B8F^h_0FII9z!66@;PH z;;z}L@CDj0gS_Z-fQCnmP~Q`>*T>Sb7!8~CytQLXUcAA5~P& z*}y)8NCR-gC)SgdNv5)*R6W?tWQFhMx48-{J5#$T;lwEltaCAjYIXojb+>(z&|md3 zM#x+DLK*Vl{X1YT#+oh=fm!b-_RtvvGcw91C=1~QY|d`DCFfj^*~zQ};!L4vRA4oG zQ2~wS{{H{4_x9mYRae{iOfrE10w+jNRD{%mhKe7l)Di)Wh5=NfC?B;gsnRO7Rx8zv z;3FgxW`@l1aFSR_MIWf3*iuDBg%|>XgkTaB+X#peEJi_{VW^ECh4Ar^-+iyW&m=+Y z`@639{p0=P&2?qYIs1FBz4lsbuf6u#AWIsa$!vEXPRg_sai*hf4w#I{OwwZ2rw>2i z%ugnq1O{WI??xH5QOK^;nQtHw;FDv9Jxr)_KFa}HJ_!MUi5d1XCd^M5<&BYq3%Ef? zB%X`>md&_GsP8m9AY3M!5>WWIC23VJIbN!l;@Y%B;9*480I(d+97J1T{=yOX5pzkn z3W#E^3opeZ2j!aoE#B9kEpK8fdDZZE3%oh1T7}KuyaGSrs;APfMen8vR zk5rDiRW5Uh%?i-wo~k&bYzDOjQdwPVit4Ok!=z3JS`}<#T~wSJ^Yz_!qjFsed+x?z zTYGQ?#>*wtBl5v6z3Bx7*bMLoQT6GjgsI5U;C>yG-P{_xk}PD^QF4r|eRZG7X2GBq zA|B~3&y5}jwcOjQ2|D=qWAqLzbf?ONBpZj5e{h?slVRKk)gQ{L;(7@b8PXI-Ld|%+ znJW16(aDaJpf7^Y@v{}07YhP@gKisTKj%VEV(s-TMd-fyk-OpRKl|TRG+IR)m5cj+ z!fJ#!(Z=!szrrKY{MbO2GF|IkM9mtTi&$92Aolv;DVJFxWWHnoI;KnYrE21jn+%YO z^Qh*9W;Hzu z)Mcd8i{&g{{7iYwa5~=IxXmpM&*DREFu#LqA+sVCpO9^GFxW=uAbyY3gLKx)3zRv3 zkryZ|O6BE>g8Sj0pT-<4W@82dtuTwQ%rqD|xP|rM?g50DQ#`iZX2_Am8>a!q2wNH= zN4=iA2!^MJp&-+}%zcl&WO49?4B;xiR7dRXjDXtydT(qlkxotA&4`QrvJ(kk=C_hBK*(3L?r9fGB}>A^Q+J0ook=j2fWeDRs9;EyyjE{jrxZ_Or`D z@wh4_%~SGCqgm6!i3|>+XTk;uE9P>c1-8u6>8aT=y&J;i00ag&LU^oSj9}@!uDK__k9M&Op%MIHlnXIdXKm==;WvHo=8fAkiY{;Bf$by+qBXCkg zT-S^yW;Yx5QSwhI1yzvDglivJj71FzEPQAhWe+0(mh3fboC{`;)JaQ2!(m8DNXae) zTaCI_NC1dCiGs6g12rtb1*1DW{67@`PHGv`(9;Dq;6!(aMCqE|eV*CIsGw5X&jR3j zx^&*0!Lq)6wFP@(&u@l(GRqk53czXsySLArxzR6ShXAyd}^lGN*5cF-Z^+bCETd#tG+Qit9|2nn;8Va3+J@6yY12kFsb_o+$2TA)Vv zE;(aGn}q*gV`YRMLLpt&8ZLvp5>)LTK<2rE2GmqG(=qPVi z0B|rx&YWh2q>*vs;IzQbpjR{I%y*FoBfONdn}{G*s6qgLJ{XrY<(2P5=|?)7f_5A* z&P1Zj?`TTwR+QhNXrl;D+462I4uVZX3nmjOPIY<1W+@>Jo?nOZQqV2lFd^Ly9_(MK-(~# z1=wN6*cJ0sd}~Anaq_mWr{)r_H zLK=-wk3JvByhn^E#0CK#yai&;moQse$Qb|#EU?2ThAU%eI7 z7CSRPl{E0v1F9XHOu;$91NXn}kVc_twXrM;;ECuhr$^7mmf4wyp&pGjDr({Z^4%@r zO=MauIYUeOAoe?2@-CW9Jo#2j+?25sAY1&F15q)+!!feh4c$Qg+e88-p2T`|i=KR1 z^cnjYn%gbUphTWTop&;UTBrXP_!1V5KloBGMfi5ZL~Jo$->u!dw>$0D+>PfEPv@ks zBocM!q_KA}V^2@K@btuOS`wo#woZWkJdsQ)ZjasAEqZMC=;qj$U~Z>ZbxtDDY3+LP z42cglIX%^hop#}5YL|A^Cz9!QK^M^_dR6!6w(jF(gi62>PjBX&M4s-=?3@cKhY^A` zXP3H0cg;s@#GSFcZVApwB#^d#t1$&|L^RaA#o&*}|O*#|vizk4}eY60Q1rM*-&_$e51!rylx!FXY2`DW1g&5iI-+}eCUNl3~2M)gjA!fsm*y&#F!UW;T zH3q<8G9Q(tF`D-mCOU4`_1bH`&z7}O-QzxDtZH;q-nj=bag=?kh{yvd!dxE(&o;m0 zRbUz5zge}tj+r%w8K%@aHwNX)1@$`Vb?HAr4YkM%|$iH%iT-PoX#kY3Hut(y`I z-AXqNyOIsQrMNta0l=L^s9rRm<%AJ>|%DpQGMtHrlyuL>}E8P>-`;g#;;M$=e7XsO{KWvFk>jUnQg%^Q(w`m{S0OP z1!aai=Jzbx1hv!LH>hS^&YV^`g*o>wjdX*-BF*qYMku|9)c^s>47Vc0v9krrvmSLk z!V`_5(-itFNd$}yktwM!XD9o63{g6mr!@{6k>@{mx~aq}+0qg1Fl!UBPefSY5$73h z2`g=-2EvH^7CD^(VOwp_08TvJyPJ3)4XH5_K#Db#~BSh0^WU@mM)Ju&NLoTG%n zpdWDM5JFgsq@ift(zRGoXSW!O|K~Hb27*Y!UP9O7Vm&0us+V(duiHSQ^zTS5DTDE| zDI%V}h42<2tlM%qs;4$dDvuYd(+INP%1%j-6wLmJJTVtKp|Ij~a7k*K1)T=2fBi$i zWj3IVGI3%*W>+8pKaaDZvH$rRA4ju}#IF4meHIDW8Lu?ZHoKw)>p0uynu0U}!-J8h zoGdL7Mub+d*!{k+d+5cY9bN$GAI-;vFM2M*x z$;m`~z{p{Aqivw6bb+T213C8Vj(vOs@?baEs7!*|7~c2`&I=wJTrg_v;D>uOV11wD zvK$Nf{CcCZkGSmj6l51=KzZ*!5V*!w(9)1p){yLu?`cSSu}k9Mu@rxOLsGz~Odbm* z-;w5FIg#Y}s|`v08j@?{f9s`<;&8dtMQw_utfc zh2Y`)=)MnT$q%MspD8>8kqCZQOHE-lK=J2K2(^q54VLs@4+(}`06ia4EA&4~z@FJwO^Hy(`2pZUM z>f*i}6v>G+5!^}p`CC&<6lwzyLbTe-euEs$SS*(nS%31_k(r%HaDcaS6 zOKBim;IfuT0L2((yyqBZbCA-Mf!Iwq&%>6twCi#f$Zgv8?59bk3eV9OVdovh6&>{d zk!F|+$QFq(}3*@>_l3dN6 zzLDfE`s$;N7-m<&pqu9n)QxxnIbndT>BG@R7Omo^r?JlRQ`C1F zzGJ_oCBrF=DQP6Gp z`^5QA5!>3-+Q=vkuyh5~^_bOWBM}9bp>i6Dpnis-jvVR!o$s-Fp;Ry$$-R2*@yUkB!FWUfn*;I2EPrZPjEXAPU3C=pn zOpZRbLB4{xt|r$Lov*&cdLY*uy+84Z>s_OFbook)-rD6WJ(`OzZWrM)JX~}*@8U6w z$Osk;4L<74C^|RzXzI|S0l`Pph8FdOf8a;chZYW$`6rDJ>T4L$Ew-<{n&zM5Umwhm zxc(Rd>-eFCtqh{PAouMZZH{j{BR&)#-o&v0N=!)y@##V5?*6pmZ4B)MS7Qz@QzFxW zOaLkrKvgi~$v$P++~GyIT`>u>8*zYt^i^OVWa$mRkwEf0+O}wq_1I=+O1QnndRe_) z0f!OlZ8T2ZtG67SS66T2-EVQ)TA}54Az-$7{Uqa!(DK=M&&9`$!L6R)3G{aYTC*7E zsBjXFjd#X2F`pFv7a!gs4NkXi2jZi@B)sS^Lp%Emcw}`n<_yxEW|wV_8tg3_u~msm z47=eB9k1fjs@A{uKXp9Rn=5|Z_fT(Xj_Q7>_il+12!winC?5iZQ14cL_|n~P!S!%_ zG~t26E9y3A0Yw5j3&|3?0BGT7_*O6~`hM_KQsH~X76m;_kB!0FNU;Js{~@^R^?pPw^Y_bb%(@C zvkGc-kyMx%how-+MsO-6;HNsWVCO-53WZ4Xml`7UB}#B!WMh09e7jxITKFoYa$kjq z{0I-0($FhI?)KTRj2i@tc+bVg+RwDpONwWhB0ji##j|?F=LlE#_pH?03DFTM4)^!m z8Py&x|Lnx|O~kbx(s3_3abM!J49eWF76JPHo+jU#}zp<-(@nR3?7a7W>J_9C8@h5YUc;CVf+>&X5iV|m|= za-XT$J2RIcvkXf7Am(52u(&C%$D+a9g9U?F*cp|si0^BfZs1C=YggwKoC84GFz$F;X93#QT;t&D>2&;yv2*qagM0dA+9P|pdUtEOVvuJOyeT?%Ci)RMe75ufN3;=R9#4D?7 z5CF*p(K18;kmJnoI(!nG42BmjKHL>+@!Pei=p9I};Z?&VmgI9wPt7pfXjSl6!4YcK zCVUu?xg3ca0+>sWyX1?&!A>uJN7N9pvIUIBVmLrSA_bNF_kq?Ku-_RQi!ISWz>j>wX(BIZ@Y{P-wzD05x!fn~f zfS2?H){sou`1PORd<<=cWVoKKi}eAPXKlB_96wPv%t%8M^!V&SiJV|uLd!I{mfb|V zoEBi3M41t_SFcw(j8vqxW_WDztrk3fty!@YDGIMKHcL_zSISesmSBuMe{_n%osKZ^ z$dVbBUBh>vDB2dQ1nR+GjXPN9vCBJ7ojP^2`FmI}2Jlx9JGwOxfS=PIb%)Y|bxE$B zRt5W^8WsE?c|;xVsZ22?FuvUS5%D9If)t{>32&DPVnlwy_9(A06&z+YNlb8MuQ}Rm zid}9hoij4YqR;h*PF7`oduR$S zuDZ$zH5=8CVZff;YW$&g^j67fgeL$f8^|eRWAS#fYK)VkbBO&HSLHaNET9!KLd-rM{ehP?!<6J_UUV?N2A)utf9!V}lRX*x2861y7cuhQ>}avzg9dgvAGX`IR% zKT#xJ|Lr8a+wBPxolZqRconci!a63LIw4OdyqpPl+PKL`4`Xz#O4zy0ruRMCj{`fg z@8LLi7saC17oj~oV;$?y5{yH0+e!>^MC2EDj;cJ6BUm~{P!oU~whLsIY5wul>v z@KuH{SRJJr5qJEb4M|C)oqQkX&(Ysy-{xco-=DIQ#(q0}F18uky13(^! zj1J$C^9G~WBD?@h5?N;gr=WEnjv&3Dee5rIoz5#-=mQ4C;t>WUPNLidX-qV&QboR# znEPVUTkr)v8!mSVe-En+v8$+8wgfaf`Omv~ppRsUx@*%=d=|qfxxsc1Y;MUY&$IzltxOQmVYFrh$w*gNq zWrB~@A~wlfxCxK7JTi28p28h^FEsRLcA81d;#Ekkfpb5D<)96LCx-6?-;D0TbZf)l zp@a^Q8XaBoA~UAqR0rU6aiZ`Xvv^r&=?@?gmR7n6?yjidubc?fz*;dSal!zeasYz& zkfQTQT%)A-22bP=8N?D*IV-W&_2#yZxwkN-I)@!S8)o6MsZx{z`~6Qm<_w%wqgxZG zGDDI!SWDeAwus~lzHp!lA(F7xTZWwAz*;tQD8q_`Q!uYNFH>LKAfUjFNh7TScLp|C z43$CeANC)1#8>Vv=wr!{2PY?uOhQ0X!8r|iKsg$ zes@M?S1m?&;024zuj#AcMPVNX7yHpmfn9I{^_5vMp9lrjIU9Zzrw}l5DOEaFAb?-& zuo|U50-orB{S{!?=wm$ej4i=PD0b!fI+ zY*5q_1cYro+K|D9hTlU6f}iCWA!?fA7tJm=+in_Oi>Pt@DS+Rm)SHMv&#%NZ_$gxazINKI!b&Lnu(2E?S>?+BCo6m{^D3NE=--g^sI`J4Af~ys@ z*GbgU@kN)}PR~3v+~zpwQ;{HzSo3kFJx{bJtzn@!eO%ScL0FEPK?B#q(=jjTF~SQ`z!6_4Lm<2w&9ppK-#R%oJz$S- z_Fz}r2#1ga>48Qsq44-w@Jk9Vi$Fmc(HbeP_6yY(U=5oSz#yV`VVJGp$oEaSnt@(D zLIGqf+Jt#gN2i2sHw_z#D;o6pT_6RlfHPkxDxu&4VVT5E4uljP$DO*u)!P3ghzZ5) zk%B>R)%aDgbq>7!z~_&g-%E0B4QvGkUI73_()1{8LmpIzyCGsf6pVFhPSG_##{|<+ za}U_UdUpwcI_iEIzL9ZdpucUt>6_q$J5=|265y40yl^5Y0RSe&Ga&#DjoK0X(K0uAk$OfK9}vjhE?Xuxhq z!KW|!FFN=fnAF_Z>GfBs$u|$ebPzA)6hu1L1L7YUr)l9~fdCnc^Z(1F;W$$4GR1@j zmT3rHi{R7kW`f&rqfZz8GS?UI3<^P;jy8aakLt3r#asx7%jNkqWP;!>_6@kd)68$@ zxcE=90qA}M*aDx|ATys=sY0ZeN-`_zoh=)p^ZUVUC%@fnw)`i}!?=%2LgR-LpI4!7hF8n zfOVX2A4FbM4mt#vd;93b`wk%z2OHeQv7h2~?Q`*u9Q}siR|5WEDlG3Vl*i{xJe9-^ z-&4O?&?aV2;yz6V+nU*P7?$XFgB2*7;|+s}{9x{I_ob)61~rHYk+$kWFmVn{w2aaP zfbi5>W5gT<8S3ZTN)Bd5& zTFUNNp`jv*PRV2i0~xE9TXZld*HT!^k|L;hJzUS1n_cD{2ZLwudLMfQ6ju&*YIJT;r{})f_p5LK9fh8kN7|fC1+EFMMlQ`n!UORB@Mq+^# z2P5t}PeHGOO-R~*q+H^l^;v@7_kj)390ViRi_lU0{S=#_Ucc^qZQ{^krB`c~PzK_& z9M5RRm&7r%UNNB1{Sb&`nYp=&%%+4Z&8m#v@6BQ_q`jbwYraNVu!^lgk_|b15D9Q# zm5jL|{$LT;tD&l#5#)MXHQS07sCbSGIQoO_)u37t{+yFZ-_a=kcTtWfI$W_l z$DfHOn$7^W3vKf99h_6`H-mSjB9zrf3$+AVs|t;lq9&_^?9qBAfZtBXy#g5p7qXt= zA19_CE*@cS1hyXN5_l~FVcbI{;VSlC%bW`Mi!db7x_@;8Z$I6!jMVpLZ5Fs_utsmk zdKfLPCO|f<=-UmZV-c5t&D&_Q0~-NLKLyoJu>6lIN}Yuu;0`n3jIjBoG|z~vQibA% z%Q;AEJxRC(kHgkY=&4nrh&!y%3x1lLy|?HK1;4C)5T!4+pR7XauKF;ja4uM#i}MOe zm@3)gBe^JET&88@BvFzENf7&uL{uJo#>GIwoQhvmJqT;&Ad!*0fZoc6fQvugO`ijJEBUQcdh4Ys%2A>lNAF_L z9!=EznU+X&f-mP`eT(RpKYUxRqa>ZGv7swIeM`RkZ)8TtbG}=?)B0}_E&-`~k%18V zrOGJiqh-1uX_@Y7#0#TWJe^=C^{CaDlc{oM?Q}09-Rx9!L#);E-{$X>{~lN4q~*US zF~i6vTC?TmQ9vCFus_MYtT4qdmbpgD(sE3{%wy68Co1Jk}yi@WAw z+!MV>CmVt%4zJ*D2OOQink9dYl4*mJlSjIb)FlTN^?&yf?mw?SDUy1 z&%hy@99#u(g^fEYLj!i8Rt@k`$cm=Y!IMs>TFs2(2aIN_#RGODJ%_a?6LXiL$^09R z#4DJX1<5()+g9FcY+;$p++3gOvRiBp6Xej<>Ouvx&MZh9Z!Sw~Wt#D6SKun*UJs`P z@9IDD6za27!z9ofTs45OIfbI2H&+KJ(uXM_mg*}iuE0#A=@sNP7YLdfi>6W|1z&FH z(rPWNPfor9cV7M6%wJ{hZ}gR;Ojod@SJ92u^m2P`M>n#x7BfO_#;Dy*yvNISahea zx7g`rAP^|4jw_V&aLSfRt^5_-77PvGk_dYOUZ~4^Z47WEX1dY$71pveiBcdt_81Dv zV?m||cb-YRKSh{BeQKlcGllfo%3r2BZB5^#Pqpxts%gp4vsamulLuLOYwUVks$6azMi4k7}?-_ zZ-(0_Euz|Y@G#rshCmLw;p{4MV}m+NPxNvutbpbb;~2?Dy462+6Y@aAos0k_r8)8- z&TlyD(MQ-5wGR4S=PUV-4joM-_8tD#dbIo#R+m_h-iW>{L+LgM!<*C6u`rTFsmR47 zc9;-@KNZBPb`3;q16uB_`nR*Lbg4M3Ip;8zQ{}i5cMuB<lrOFksMq$vFT#Tc41LPLz5RfaD=gAk7ALesjjz0EOP@i0;RV7LBd0 zJtqOZ1QfO+E&+wj?6_W)3jmfV_&Gbao@kH(XN1DBR)s|rZczpnnmv)WbD=q;tGwTJ zy*cCb_2w|U zO{_VmONeu+6bA&{kQZo&M-$2z|BV5>D8(BzaQ5dd*vj^`-$$m_f=h9Wpt2|vNg~WNM?!Djiw8VeQYHv&dXtB* za*UE{eA&t=%_hm)mc8F7<3it_*nvMQwtl;CF+pB|B()< zBG~8+*08Q2M(G^16AXX(op{>*PbiecUmnwLI7`6&v0QFcC>Go$@tZm^><_Tj)}_8RVU$AY zD-}8w=#Z&1T#7Ihf?#a)DVAhSGltpe*PGLfOk;Vi7FCzCX<)<5X^hnT+qwH|PG(gH zTmwOv&9ufF8PMkRQb;>_z_4P00vA0Ka05v2)R3YdlGvf&YJtop2ikFGvrKH0wv95x z#oIV6&U(nX^D(wihD8Jm$LX`!sEGa(k=^D$F0#c$S+DX$LTA%n1xLq<3O{A|I}pbl z%>uR?A)o{>*p}?6^YnNzw?bL&C~2FTW)a%gGWQ)JA$I^A%!0$)0G;S$1dUnG*9AAi zBzo+6cST3HM^s|XiT&>J- zif6V|uN_#f{niF_1@p-UPk0^Pj9@!g88&kpl}q}vPWWGA8c%OfncxSAwz=JaSZ|wz zU(N8kF5#mkeEeA+M3k&%d7Ijvs5j z_eShO=c6WNAFv^VmEq9WBvI6mb-)HXzlj1BPk=2ri5`hy&CKtB)WT|Y1JUK-(I+MI zmfH#P{ap;r8GB~-_7AWb$ZPrE;4Bzyu2DGljJwji=?WrHs)}$4`_cQn7$EHI0In1z zF|@?;QRF+y*~(K3@Jjnm?Bj4fOga-rm;_MStHtc!Go3OFRl6G?U-@0~26WyVoV?3A z^Zp27!7Us zk?3Kd*xtLz!lYHz=&s9rGQwZkma<9$c&}?sHcLWysk(yDCOON&7xUW_b6EaujX>|Q z!=nF%XJQA^?PI$*vXDe9Hv0H>g~StB225~= zqdwcNVg^*Nt>4gmB0akB8d!F)eYg?kRc0vCs$g{+&SooN&})aCoXFsb7QDj_%filP z8H885lKE zYT(HphZ0i&QJbB0#$BB^nhB!DB`LiQ0?%>c3Q0D*fJB%nT?UDB82H{7a>Td}SYsQD z9zYIzIg`U@z(C$7Hlg?w`s~8J;6Upq01CDEzzwKUv6UV%+l-TDo7DYL0pt+ zPU|sD)!eo8qGu_=lWsZk`h=db?P#RXjrc*mRj28%%y-b=%x?5IdS?2Y7vLoG3jOs@ zJ1J8AmZfK;zgO8<6=Od9?9LM%<6hbP(tgQgRBRo$x%#F34zT?Oum+r^2Oco>{1$EQ z)Mu!>d?%McKD|Av#M=|_y#;s4T&NL*wL+E#@k{6j+L|ClyBG=vax#~U%+$Nvp-l{) zuMhixW{T2|4EnAj@#Pi%HxqDy3an$Xa%ctQhiRHOvjQ^lzcX^wFxgFwny7+h;wog$ z0n{qZSqKu#nerObb`CgaWXHgz)OFxkHRV8*F2A1W-_ZzIzg&XSJSu|h(KD=L;4-GK zH}}Flg)_$ME<(Wy4v=*dg>(#zGA-FwXZcaTDtR+YMw$9-4@*8QCC68>gIliGD`S`g z4IUQ%7uVYmeD#SI7*r8q^S$;W=TI6Ud>)GCGYKqf+_b5_35jw4-c1+fCB}Uun}p>x zG(=2&uuyU(jwF$1au7#?I^hTr&a&Vl8Qf7leZzeA^3$JW?c9=%H{L{De0VJ7mwnP4 zDBb{3Gn@el17~UROC%hKo=9K29Oba>)r^In7#t+}5SnW)AIx0KH!*zqH^=dwA2rtx z!l$#JSWSL{#;LU#YO*RM-RrxV2k_WZtN5dkyCEo4O%hxKajj*u__gjx$Y#5Y%3uo~ z_!^j{yO#GJ94qqOZ1v>dt<9tAdp-Y4+d z4hzx|wLiWVQ3aqqD;$aHP4yz+n#$Dzz;=lc8KHMZ+wrS<7}&I&IOsA$KZoF8g_){)Fab8LCpINR%ZYaw zx^%u1Bk>M7D72ioiucs2W~bE|%!LlALSUB%82f5uEY)6u3i<@BAM`JL0s8>3D?qDF zTo~ZV=*XUpH~QojMJm5y(?Fe$SOM802_IzpCnK@67h6!bS&L;|l<=ozEoaYhuR?2& z3C8BBsdb+u8=H3?-D^(srs2D0UXtfl!>+AiCo%GrM5uu%gXssMU%I=okzW zXt>Rbse)m`aa1tON`_>M_R1)Gf&3qfHO!AZX?Zo!59i)Tv-$a0fvTahUJn3L9I#h0 zV0O(gl%a~&m z8HYOhlX>L&$;P5tEDbD!i22Jmxx~p$rdxti&c0xKKO_8Wyd{ve zY&PCl@`F8ybAy|li(T@?nWU@68+EgB)4c7u-l`DnAAg>6-8{C^M#kn*%`qW4wjZO1 z3twN0@$9!6e4?jdg|-SQo6Zr=SF7b>i^fyAXKDIe0}WczhpA%?YT=HaM{nKB5r3pcu%~z%d79?!SSmqCR+T^w2&WQQHD3O% z$7WMU{9=u?VTN%fP%LRgzoDslSpl&Gs?G|gQLIR-Jwr)y`(!vB5rIv@n_LAiVX_Nj z5~sV6jI8BksdcTr?a-jHq-vbT?{ z&M$h1uvL@ZW;gVT%WRXSJZ7yqKP?j=b0C$RK}}ooFp0)X<_7c*3%cZyS=#}?$#PtT zNUG!`1c>EDitPG65{bRSkrPt01^stz&cTmW!JcAB610tL15NU-Pb_S`JlH@PTwUJ= zs&)(bDn&Z*K1-lQEDqLA?p%wKKO<2vOknhk-HqCzSGgPyEp#jUDaStUPrs*(G%-)@ zKlmTuyt?szMfkTqgt)1>c?uu=Q^`fx1BKprcs0NbZ^Y_UUN9LmEv1W*tEwrlu zp1_J@<4H#b0?Un>^(xQre#nsC)!Skf$>*opn+;kDFtI(0LSPd zoqsEEL$zfzFoN1`rPx7L7drtfPyp*b`?p=xO$3nL9==yfjUL3acnbke zz!+r*(2L?NEAXj!$}W79)O?7i+9Jh{#1PmEqVUxyt3$<9Fg{zfMMVc?b69N&>(z?% z9a(h8JJ2=j8CL2PjpJrHTK%@^VuVX?CZT-vH@hT&0Hbsgn_#n|NGO{k*>%}vf+-SK z^bUcRvYxb4D5nt_jHIZvE98|kA3Z7Np&3pCl+p`~wsaf_3q$D&hfjLH5&KAMIqOc$ zJ>a+}`tM4`o!5Yga42Otpk^5<5ESy)zZ%eJ>;VixXgU3tXy2xQ>23sC z;&Dez?ZxM5@%-~L00H>4^sySGdYP$gwhWw4YmylL$3$*x@_EDDO(;W-1r)L>#6PT` zzhk;GY1nf1(^?`H4URp7`hxuCm@>S4;5b?(DV45FZ>OQi=YT*MBpRg2QGzG#QB_%Z zI*K*PsC=V3+g!-`8>GPXRodSwjPG%^ExSbD7`56Mzt6}cTa(~+6~c%HO7D^E$fdfL z;re-jeh$>nzWSM>(R_g>2!1>j;FRLUQr%Z$G~SKvHnlJf){Vjr+%U(sM$p?7fEUYk z=%(Z|r(|BQ9P^rz!YF%>0|Y$G>xzds($;;>>o#G3C z2ZN^0wu>(!ql`{*h_J+KcHv&>f)RNa;XH5J#OlT0PqrRcP1Y3VeuBaxpT>5bbLHE8gZ9p@9gomaDY69!QM+h8gfv0spI&7(JJ^ zXLU-uH3<%-(#B%*--{s)95N!eCUq#NDDPIv?agA2sHUZ&ULPYEVU+bjI4JHV)-wcE z6>sU|ST}lx0r;-yxGa1pYdE?ZT{#FOj?`Mqg*%Y|3GvmGHw@HJ79L#r5_w=+P`ZJ+ zsMloxMW^ULUsH5#ce~(Rv<5?KywO~ITycpS1Z#^BA&Qn~smV*FRmX&}qtSU?WJ+uY3wFuOVNvK$0({nDaUn*E3g}!5 z#sm$elmu|4X@xx$S%9K27cGWH!+%q7TnrVmYG{l~;xz(6S z2lVQM>VlJ4p8F0fC6T{fop7SEh|<{LVbRHCB#`oj!Q0U2lD$)_3rRocH?k}i{pQ0r zYi0N}jHm5yJAF5j-g{ssrWKwdr zw*rbH@1cxf!;tP7WLJ&77|RSw4f!}Tn4wE#nXVL(g?D1KLzhrDs+WrQsgU;=qO$!= zXX6T9S3OY&aTyQ2IT-BeKXW`Z7t>&V31AokNEc&KFvwafvZS)c;;Qp2Ydy1= z70dVwO_7^721OfQR5f1A8Y@`1Wiv&mR)>bQ=DX0{jNqX2PFqAQ2=6THtEz3hPPnLS2uOKV z8lO`Ej)`_?Ag2i-NtND>uVAGVW^buZ0W^aG6(|AOk|B=g6fU4Nd?)GNW|PM#_!1Mq z8S|w|Wofriry9Ui&=Kv^$IU%eW}RZ_mP}lumyk0lM7F0g>A^`cn^9` z*F}`zf+otoV+ax(wi**mUGdY1#}4IWqtaf5p5Ru}irTE5fn%$&M;G2&(9fz^is0s0 zpsp_t@jzgD9-q093D`gl{~52t;M42c$OLSphW~=k$OKQ(J!lT5inUPWJM@Gb@17PI z0*6_a==yOYfuMEPQyx3a+KDA?zfx+(5?%qICM3}{I}_N95V-6n!4qc#9H;CJ?5R;U zh^b+?1vt7anU7|bDCQ^>6i!1Im7|d3g_Dp?`_w5&h9{kZ&oRL67G-XoP{ff4I2PA6 z4GM98$2yStaZdO6S~W6k^D?Yjvua~B8CCnKAkF6cGt7ppTKGX2%$^eL&?%5wofp7(iWZ=6XE;s~_{2_|<8w7|pULo`ntzOS>PG7kZ)gG}xWOfka|+ zv8#Xd;Ng47KXHITndg8@o{grD`|b7jU#Ir^!c;($dls^8XpVL8<0@Ec-vad@Yxi#U z@&$MrZAIl>cK*WH`U&RYru)KGfzSgOsDmaOk;wK{Z;@dpSKG(_MCm_^h-LX&nXj{pv&h`0 zYt?^ggxyPrzxAKVl2LF~U#b&8lu`CmP6_epjs9^1Y!RoU7M^`{UZ#tWdRegAF1){M zY1A~S^O{)ipfppCbFyn!J(s|CBhp67TDcgB;WF31*eKo0fc(XE2U0k|KNyC!^NF6I zF^wjS6t4r3K55p~#gb^$#{-v(4f|zeR{WI1d4f4HcklcKAmM>)N!hEtjbG!hB>f`U zum7p^8zIiXzKRf>sk#z}eI&z5{oPOJcwFV6Ng^nmWK+AuN+XooiCN>Xl+z(Dpa7>@ zcy3QLZ=xG_C9t)NZwD;URorvhhT+tg23gZvtRAot!j2S1%~!52`6Zp7D?A%Ai@5S4 z*A@q4c+x;T_8j^?0vEM2kUJ*5u|qO`XexaYm8OvQbjD;>0eC>_-Xo1SrVZ_zWNJl@)0tFz{Lr*uV+Lme2_1x{350F>YI03BK)5FN(bxbOE6vkk*{^X( zP5&~Zlt#WdN+fiF9$-+G%za?OV!;F>k^^#KjUVci7Wfyva zQBUky1h6uZd*UmIe@}mpjTcejmab@D+s+njI`ZMNxKVZ5<*wmJAZO@uE0330N;&P@VQbw7Lw&W|BMcH8{F z*`BM+1{(&LGM!g(1b(RsL>jX$z7}l&)=C>%F|C8Oylc)Ay`L@cQ92PxrMA(xl<(TB zVsQZPL@{x%oxe;Z31@()F2Vr)e3jym+^f~+0o6SK^!5Eq;8*wazPcxO&p6r9;9JB> z!L}NFVTeG>to$VnzL3j$m9)n)NdX&tK{$ojgPjQXUMu}^RESF|%;^!F*oHg!+tZ`- z(E&3&A7h4gM(8pFX|hma31J~ht!RW?4^3^GPVlwOEg zi=05mPGTz&AHpMizE#L?yy2M?37snncH<4-3Nvq6c2iL+-Dv=u)?v|zcKORsYt%?I zs$^_50oT& zO^rgXXghktO+k{3_!^@!zohsxIWB==HQ$Dk+8>E{_5+BEBIEbFW4}l56}^YMv#;x- z-bh{GKvCf1qQJ3aNVi$Ffn&WO?S`8RE)N{*qvhUICHGzsIM!E(7{(td3HKpZ5)g@{}p%*X~ zM&&-(G@WqagbxI6AP?$^k6_;G&=H_YC^D@9a`p5eo}N>_lI*wPiw>=pq_x1DUGlof zM9ES`KvhvP$%O1*?2!yAIV=7!&P7%p?yZkgC|b7#8LU zj=V_VfDw56P66LYWWnT)Jq~0_sE{0c#L4>Zr)9Um^+8Co~c z>5{|rZNmxlU#ZE>$g>d1XK(%dCAu7p=1AgkwU{hM$t7$Ol1%(|6fZ4o^wpwrEOEDG z`)UpQ9lVQwkU>aJuLa22m#^6DZHOjIU=;(~r>emE=ofsevwWLSv97ZYr4%oyA`vyj z=GAQJ1-q0N@C}Exk!KlwiUKYsL-7gqqTMboV%#wX6%}Hm&})zH(~;d)^dOIy< z6E^liLW;B`R4;=3vQf!5WB7cvx-*MMk)A@;jk~GD<}e3?;fekZY{-${Wp5l^V|e8= z)WHR}O{Uc$?&iar0=oL_vL1KNzkLY!QKbkb8|K=AqH`dRoB$i**D5EYiJI7G%?Ky6 zCWvZNkSE@s_9J`?*6?>g(S;;>Hs1qdd-wH!(%|Wh8;QH5DBQng2bTm`K2iEY|IY_M z)&i6j)|aXVXz z6VhT$#14#-1T2>c=L9 zOb5^!Ed~QFWSwgPS7nJ8!RW_tHaj4!cbtKLeV9Mu!U_I4LyNW_Fk) z(zj7+jItjmpEt_R#c*)HMJ5!~i&h0uPVM6BBG;fViTN`mFiwe|LBiJl;18gE!ODC>IjSglG5c-r-ggBBAwk z0M*jR@lfFEh8%oguInkRX1z?(i!_G%o$S^^&M|6UTxP{&lw_1vAprM}0J4JL+8L3} zNcwV|79qMPd^_4>>3G<_!$UatL=Ukssr!3u62Fr5Dm5-&ZVkSF;44&Xgy{F!lNy=m zc_3hr7ku7B+&7A0wYe*^QvIz?^H1(o6B?KpxwX1W@+E z0Fvq>6Htw6%4f-d%N`!rf^u>KckD2S-o0zU&K*B-E)WT%Qb9zudAA!nY=tGzb0~Oi zVMW-!<4jjNG!20N!mN`a2C;U`%#cf5w?qHSr9DR~y7e_hMczd@U7G@e#hWV2iK4nq zW%r?@L<1ZV6*Lgx9OkJHnD1^J8jjyuT*uK=AW&uDNF}=Xx;IY5nI`WLjkkD>S?epRl5oO6VH8+ z6FFxB9(FZM^Z-FcU-3OqFU-EsNJ3STiBd?=K?ZR>53@~!K_9X%1a}W>}FDRp8v>5rf8OcUQF?+1niK2en#aTeS?jn0ITl66GGk-7s$_y&$=Q?PXqRYjpO_`CeW=TV(i^tY(aGJ5jNM6=qkkiAKq12yw3`Os(ZC8V!AajyEKst>oW0J;scnnB-#=q5g3b28sSMB+J7->@`H&0Ol#&goxoSCwM%k=rX7u z#g%nWds$j?f58$$eJI4y?3VexN3@Iyvv&`jCB?wDmZ+g*IZf?_b&^rC);B7kyplw) zmQcwYdl$%iAU?qbsV=`aKQbjbGRaeqXG&yJk9vxQhz}l4=c(03Oakc1v09YdeXzpM z_s+c&>&9uL_sj|$PccH=gbEz*;lBhrAV9@swpCN@6l`;o-I(psGJxx}`&f_E8%CIz zc%;6~2=BnlY5J9}chdw8BnM6;J)HD7%f*3s7UE zMH?x!_nW&G?OlfUhV~UaAFmFa=qUITiaJ$aO&LQK7vF>sESu!uD1xvJ=dIUKD-mV3 zRQE&TzUBBC{tSN5gm?rIwFi=_S0;*yJ&39q8c(WT(HS}up`G9XD|f&Xqp1d}S#21h zo+>MP7#oaN!YK4LqEVdfS&lreYHEOktz%Jlte2CdxqFhAI+J{c7zHM0y*Jj8H?9+c zgFOvc4H%(YKx;OS27s`r^KQ&R30Q|v6c5(Qq1bVYMZ-r@6fN${zPCBDLr84Bpl=sC zMV!aR1ZY#j6hGPu<}4J-So981rO_8f`Q&}jm@H^h(!4!U=nD@z!OMrDKJ)OAUH@>Z zl^;b*%%$X19dNSSm{zQ%bbj zh=Q*8tyW%(b!*0IFYckpZwcNsGRdf%*mreWK~Kxq5}Y*BgU#38*7Oe>ua})y)fy&(0l zm9@CL-pp^|K)|Cgxj0vHlWo-<7L57&EWd+N`9lb z++nsN@)t67Zl*o4A4$vZi-d4b!7d7%4DW-<NYX(2j6B8kzs6lf<)-HkNBk~Oa0O#pn9 z(Fz*#2DqRQS}E$`*EPd;T`M9xmw5T9AerXll+#%4XV*|`r_f2(fH~&7rifMB2-{gvdGl_gBU=#b>_^lC~gCL6+sv3&Gp#yHj>jpXr4MP z1x5Tq-eaNb=Kkzx^8>&FFf=MX13)`)Uy5|4Fhz6*z!cPC7E^wLpreWzGd)`LmR#80 z6P9VD<%On&s+i^vwMU2LDcypXE?T06lIG3?U|~mA6}HHHCaNqL=t!?CINWEIdzYIf$}}%jQQ`IU$S7x{tf! z3y9Ky9N?$jc|_nI)0(!{V+GeR1I!`Qo9v%q*S)74UmhmMmnXU>;O6-(toeQd6M$ie zov5#R4<92j{7G^`)xETJ|h-F=JVlDftqT&wU!Qg^}5YgpGGeC^y_@a(* z-p)>93mS`~8gD1vK>-^%jc~p1BpwO@Z^W%D%qo|?lWmK&VOJq~!Cz$hg$DtZIqB=w z74N8uB^6bJm{nbYH(6Di#V$y@u#Q=9IN5xht9}SKlY*@)vUaAFBavC`L44;-p@azf zEPdX-HC6Fm?@CYLy;;H0u7Yzq(yW2}uwmqRo98*c;_~v?c75-_)Tt|1_>r`|qhL6X z@fP%jezzliIRkItl}7dgU5O{rZA2G zsA7mwO0WFEV|@yTTYVV-z@2Xmyo+x;{r#VeQ~!<|<1EF<&*k{KoS z_~ltTaqneRE@WJ&7R=n-`beL?F7&WmK5QutYpn%Q+jBL8RGA`$Q`<9lCW{F@%kt_| z#k>=+G3!;U9=ZyBnCh{TlcfgL2A~wE(Y+oUbg?PQ`yzw&UW|gu^5EZ*-vK)A*z&JN zdL}-M#PsEZYLGaV!ZtE~v?XQ7CL_RjL*8ct1KAbB9E(5*9M}NnGMpv37fC)05U}tC@g<==$QgPVC;F9*9LL|^Gd|9}{l6^nmk( z=KxOV;KB%9q^1D@RNGNMJ?>q!Kgtij`@Iu?D6~{HT?a z5N}Q$Z4I2vm)x-{Z3uH3r_erJ zC({<~jbzy^=2!mL;;%*DOTwN=*S}lMkArpIaTG!xOe>D@8SLe{l+So=DER&$5t zwQ@Wit%?r>4`+z|6panJH1wr~_wmNp>FL^Eq~0CbX+)mj_~jiA?=&0yKgw=-_*Z6= zx%cQ17ziri4PK1$C_CYTnx02nf;(MDaWuWlt@q$VDq+_4?7ef}HEOm7+lImuxc`pq zU4lEtleO9Y!^RV`xcC1xYkT~8>{j;`mP(f-N56z!4GiQ^C!_@5Vb&ctk4|sXwZ(n` zxTD$l?Kt{DaF^@ozF02aE#JWn8EE_nNawBCgga=q?fL}IR`Y#x@2+UCMwG?iU7s;< z*CBa7An(y$SUn;`%h99eu3dK@HtUXlmc7?(m^%Q{K-SJNXzr8Pl{G>XQ*MZTh2Jg% z(lLA_cx-uj$MC!KbH09#*3YH-IYmEL>E{ytoTi`m>E~+wT&AD*=x2d`uGP;L{oJOX zIr_OnKb!UQPW_yxp8@?0>E|5%T%n(n^mDO(?$*zB`gyy4uF=nO{hXKWp`~ zN@1ai0Gt>-&FY{oe+Gz?T2iqH3x+fGH4ynU zN5aoND9<_Xf0FagjvYJJZTwii16x{i>i?ZN^OcPssqf+Y<>{*YFlT1j)_+HTy)Orw z6jl4L+AHBXLqAaQLt1j4e(I^G%q!l{Nq>3b$1hCVqw+`I%X$B~IpgkqYqv^w?(Q7! za(ExwCEsh`->Je~F4yhJnaRhKnv?#V6iAwxbam2sNhjT{?l;|Q+)LaG-1oSrx^vu@ zxi4_{b)Ryzxju32alPf*>{{n~!L`Emq^rzT;wo~@bN$|RTk?g;|4w>4>Di=X`)nAl9Ymqr(&;s70<;jks*$VonoC>B4&%pVvHD? zIh~H8sFkbLL)A{zWK~C1MO9&ylj^l{UfHh9Q${LXlwXwcN`exkM#fjw@@G-<33_tx{VdjiLA|^g2=Ai3j3}I3@Op&0?jPFQ$p{Vx&kD zy+s$%PK>tt@2NpUtt>TYp{n1%tU<4+K^Mfazoo*LBI>Yr=S ztN*YD^`!>2wfgU=LCvlHduq@xR{v=YI{BA1h(l0{5S>bJrKK3z?qXt%?!S;$e??UPxJgZ?yk-pWt=JiVrr9UGdt*Yjgn+TdWnSXM; zd@TPgulac>pR+usDf;6+d7mHmX~X=u&)v*vTc&AwzZ@_B<@+qpTkZ!i zu2t6fx(pY<1R>s(VvZWicK!Uc*QuiF2o@ua@$zpUrG2~D_xtOL3ehKX``Wio*VXNn zu6xlvU3ag2x^7e(Ijw*ErTydXfBBv#?~Fuw$cgvDZj7dhbsTUbH% zrk6wcSdN#^%h$=*%lB18W60^r>CT0mkDQ;Juch3rY^_C1SX@{%%kySex-NWox=w?# zsD$chhn}#*ub7W*S&xGmYWAe-N}wz%p*rfIAzGp%dSW1c#W*B_T3IZ!ApYt<<$FCX z%5x#`MIPjY{E{A7zvbmmC&)T4>%RPLFG=nTJrAYpR-xj-blo|IPvLktT{ja)k#Zzm zSA=oA^l$&s$o<#_qLe4Tu~e4qT2Wjz;i8_4Y;w~gFR za+}HRCx`N}950`jubT_`zR_pWb=goA6Hlk>jxapSuoS~O48NZI&WHOcr_y!v(28+o z7|O@f($jTKV4uN0bT(a=&iw$?;Qr6H^0@6!<9cL0ru4PlM)uL34C}6K`mUpP+POB` z^Jh}Ey&g5uzV&RVU6oo#o99$@?WziuwKwjU)A~&=rTx;NnD%axTH7!pQTsYMR_oU& zQrmA*5$%{;g|v6nL0X6P1++8beY7DNUfQbtJ+;e{b81gJx@jA~bk-VgJ8CQ3x7WV< zWTPFE*GhY)lF;t))oU&s{HRG8`bJY*_gpiy{v%D1j(0UX=iJcDd~#WnQt`aT{rDNp zlwVG0lAVrd24(EmJYKz9^J?C9P2LroHSdnC*O(2fHD^k#(7ar*MDxmhp{D7yxthD- zvoxw}(=?5zPSH$mK2cM&=@0UxKWx$Wru4tZH8!0%}mpzZttr}tk*-+DOYDr zn>TGWzdmZAiTk3{TncEUx!Sg_X7#BWn!}~5Xr^5)ubDHnw5EEQ;+hygjpmSRl4gWw zoW?3PN^_t^n5N3=5KV%8uqH=Oe@*IFAI-V3-kKM2c{CN@=G08s?WUXX{A?5+CZz!&O=T^_3^47#T-vGS(6Z6nQsBaJ6p-vdFMO|n92KC|eHEQRaE7kkjFIBg@wotvW z{yeqeWYH@o5?% zZWQOS_Ii%vMR_a_WBko4mbL$K{!ZKT{dJPuIutJU6%*$57KqJ z?x*YCzD(DRL>JUVV_p-DcaPF_$8qaLx~?@!UHR?|_tif=mgDa}|NdO(tl^Vq|9HK8 zzT2N3Tc-8@^XxuTvwH z`&HqE4{y_TH*pejI=?e)hFJ7qx#Yb4xqplKUBp(b!D7t90Ca>0ud%@=?mtEoWbU3P zGQJNp9}t_I{^R4U(SJL5bMlX`e{=SakN@_KSx>yFmZ9rZBSZJ5W`-`JPKGY6UWTq{ z1E$f4@r@a;%h26P&CsQ{&d^ouoT1y-i^u(Veh~LZ@_HZm@>)M07s$}L1n~Yq9tZK> z;0#@pLcBMWaS;sT7^)dxG($JOB-5+Fbn<5C=Aoz;<1x>h@%b2^pXuRWKA#nbTH+*2 z{3^sH+B|#|cKO?Lm6}%73X_>OOWX-jIg z+C*)PHcVSc>#xnP&8>CQI%#dRLisuTw8o&rwfNk5La%_fdCNw^TP$*Hl+f7gHyw!_)!lylPjqo!Xf4F6Bwet&|HX zCsOvMY)V;?GB0IH%IK6qDLqo!rZh>Zol-7En-Y^!C?$W2dx~9(A^C0c!{n>UXOa&l zZ%tm6JTG~2^2p?V$(@o@lj|l|Ox7kxCkH2cB|9gpl0PLqO}d_xo^&v2Ytr(hSxMuQ zh9vb!YMs>xUgCtrA&K1+TP4;@teB`y z3`_J&bW5~K{FLxG;cCK(gq;bi6Xqn0PZ*TYC81eD&4khk@d*VJ@+4$S_!j>n{$~8? z_&xD!;^)SXi%*O16t9b~7GFF*D&9ZdJzf?6KJI?p`M85|8{-zlO^O>5*EOzLT=lr( zaglL;aV~M@*f+7aW6#F!iCrB#D|U2j-`Li%^WQ7=8UzD{Sb36CL?BF%$k_l zF{5Mp#Ji$A&D>|Z!X;cp?2Le7Tl3|SH~F{EEetB~p;nvjAa9wDYePYPWqw71ZTLX!&(EYzk@ ztwKc$g%rwJNECWj@M6Ke1y>ZDQZTJxn}W3pY6})F=uyxd{51GN@ZR8M!IOgr1h)#V z8LSQt4t5JR20ac+584^DIB0xO-=Nf>%0UT1{z1+`Ujpw1o(kL?I6rW7VE4erf#m|D z1M>yi1-=Wo5pX16UBHZhp#dEN>IM`K2o1;;AOfEGU+~}Kzs!H4e?R{g{#E^x`~&=* z{XZADTi|4Y%?0Kb7*(Kafkp+&6o@F0w}5qlSAJLg4*0F|o8mXnueDzdKeb=5pNro& z-v_>De7E_|_Z{uq-M6uCIo~K>Z(m#AH$K;V4*IP2`Q2xbPaB__J{q5bK5jnx{15Y= z&A&bWg8XCh_sHKQfBF2;`Sazs%l|gt^?Zl&t;shn-{5?0^VQ0y%~vR&dp@K0Bky$Y z9o~z)$9nhj)_GU(j`jBOcJO}hb;Ik3*E+8mUPHY)c-8eP?iK2l%gdbiY2NdBcjsN2 zcS7F2c~kRN$(xwhKX3NDpYzGe4EceCSdvh<(Jt_Bq+^up~&#lfKoZB_GA=jf^8M$`mTAXWq zu0FX^b5+Telq(=tj$B`JKFE0{=k}b7a*oZ}J7@Epm2)QM49Mx6^Q*@LkFy@zJr;S4 z^XTJ|>QTib$s^Fi#Y6A@$UVb-m-|xpiSGT~Te;V8*SHsQ&*?7QpSxXh+wZo@ZJOH< zw+?Rg-AcJdxOuzTxxIJ2<$Bz8v+F$9F|Ivbo4HnTO>zx#b#pbkJaxI~vd?9e%QTmv zE}dK&x|DH=cJXm>bord)evY#_cIH@`V{(qP9PM({%~3K(WR83}9CCbgzUO?#d8hMI z=gH1#&h4G+IhS^ha`tg{bpDe4VfJ&`_het0eOmTm*}G(KoV{Z9#Oy)Y-Ls4AFP*MA z9d+8|G~a2QQ$MHHPIa70Iz>A9I5|0ebA0T0(eZ%eI>$MVqaAxYwsfrJSlltfF~6ge zzZnC39Tp@&1N zLk)-G4v`MN4mli5_Al*k*q^lDVZXwDy8TG|p7t&6YulHykF^i5_prCNe{Xl+?!4Ur zyA5^=>?Ya`w(DZo)ULW+al0tH0(Ne8D!cc#_ifMH9Vz+LpCV zv<{lQ_)6a6K>;Y<7Q)R^U3;&^)>5L z)_bhiSue1jY(3n%mvvj~M%GoVi(AK72V3W{cCt2Ey|sE^b=m5K)h?^GRtv1ASdFsk zXVuZFsa0*Oa#kr;5mx?OE68SLQoU0>Qe9P@R_#}9RxMY}R!t;3-bd9z)l5}~+<#G3 ztg4VIzsjB5y+L`aJW{UnT`q@}oyt08u`*K`uMFc#M`xvl(om_clu^`5v{Fd%QF3z4 zL#2EXuf#+0`sc`6?-g5qWaLM3{iFx^_~xRas39td;v$K5e<9&ZcE=?%1M$WDhD^&H z^A&T3`M7yMAHdsSUSVEfo@t(B9&H|K?q}|9?qF^~mZpxms=1uGxH-ujO)enNoZn0r zJF|mXW!9TMm|mJ5nQoh|n$DR{nhu%vn6{eMnO2wZjG?5Vm_cJmGQ=BV43UN~Lt#TfL!iOWkl)~C$YaQ5a5uOZ zvKz7)>p$q<>R;<$=%4Bz>mTUv>2K?A>aXdq=r8Hd>ofFc^r!SE z^vCpv^#}F)^?UWZ^gHz1^jq|s^c(c+^lS91^egns^h@-M^b7R!^mFvH^fUF-^}p+< z=qKqX>c{KH>VMOZ){oMU)DPDW(+|-P)~D$Q>ig^a>HFw=>wD^Z=)3E?>bvMW>pSW@ z=-cbt>D%aA>s#qt>Raej_09Fo^iB0m^o{ku=o@issBfUJudk=CtFNQ4t*^zcroM*0 zI=5>2s@$sRD|4%)ugI+exANS|aVwj7E2A%?FP(WSrI)voKW-)Tf4mjf|MB+6XG{Ee z-}mX1%9^U2ewoZU$$6H`oV#2KxipnBm#hj)Se0e1#uC@yRx@)QYO^+Vxz%Ic8nBLX zO@CpXo9K0{eKSfSmC|TQskEka+EPaCDXWh9PLx^~O0PSm*i+w&^6W#o_SX-fga=X5 zL-a!_^%0c)uWW-cY>RRF32c=~Y@Mn4X>6yNY_B=`x%&BRy+!)P`lW2k75bI>)%vw; z-3|JU`px>SZ0{Xx_uXv${nUa(`Xkhb^$!(hWu_M%aSG3-y{4U-I04Aa=ZW*g?Rr!6upVV_%RSYudc z*vLM(&9H;Laj)Tk;gI2|;ke-x`)G#YJbUXE!*#<=!yUst!$bDrXNH%C*M@iO)1TS1 z4gBzmVzg#YcVK^aHo6+!jk(zWy^Q&dzD9qJ2L(AQ6yewq%@HEOm~2!ViyDg?OL5#N z&(WhQ$BY~x(x0^?%iQsWBaYU5ht2IFSqR^txiZjN6EjE9X!IhLK~h<1+S+GUPzH;uQA z_lysXkB!faFO9E_?~ETg`h7DRjAoI_5UzF?pMOOn#;Sj+liw zZibm6P0^+}Q=%!EV`))S2~%lPSyKg5C62GvO|?vQP4zk2Ha0aiH8-{7*xSz3!PME* zl_PO4Q(semQ<`b8X_#q*=~vSj(>T)v(`1g;(@ir?b4>F%b}u$9OBqd2$yW*%!EZ=T3`Zi;!Td760!=e*hG zIp%rh`R0Y@Mdl^urRL?F3s;#}o7b4vnb(^)nm3s@o41;`nRl3Xns=FZoA;Xcan3ww zK4d;@K4Lz~8T5qtr1_NjG}-ZV&Zy_i=gk+)7tNQ&;YqZd4s^rXM#F^;v)a)cz+1a3L1(B_@a@HYiSvP=i>ZIWa>IVuz7j)t|xD z{Z+&idx%XI;+J&dm`B7j z2F0G(CO7B}?%0|rOPwbRJ3{{(0sv|Mg zC}OJx#8|tCwJsBLy|pq~IT3>e6N?omCTm1&){7WzGO^k^VzyJnZcnT~Sz8m!`4Q7; zi0$eVZ>k4Amlf;uHxj~%}`IuURkUj^ zxjlCiv~vp4-l;*mr$6nVrL==GXbqD*IEwb+X4;8&^L);eopxg)?Z;HwkrQZ7 z?xtP&G_N^tF4~#JX>WF*-8qBy=MmbW@4Xyolg83E)zL;BOIvjZZPrKLMsIi8uv*%( zZE4d^qiuVLHtySecC>e+Y4asZ*^0_u_z7)own9XWy<0q+9r$QeYFJ7`P} zVKljf&EypB1%3&1CdZIKt|672!+3HJJIO&j4l)M0k&{r9n`lLjVlugkz2q#O2AhLD z$YE&7WwaruF@@a5UUD4I3JUTaA>=)3k^dM-9%KdikPGBROocqik!Z-3v?6CRk=)5n zawv~NzJ=r2>G6x)|5-#H=oI;&_hEMAhQi4a)h1WepPbP` zaz`i0A-xT^A)gdVUa30yrC#Kj=8n`KtGk zw&bot$YE6>m(`7&)^u`PyUB6gi~0~{OU^5V+*f6CU|qX=vUE#T$w*P zvohq)T9ZQ?O)hN>IkgOOYae2)$+HEMZ!1UMtu^_#(d6M)laD(~UhYk-Io5?dT_pLs z>g4UZlE0fo9&aQ0yz}Js-p8rP@%fYMD^AW&NA53;9N=7XfqTda-Xu5pEj}B0!h+-r zOOrQjM*eURdBi#76L*qVyh?uYQ-T$_Mn7_nYI2YD$U$}|7de5P}{ z&U6*I(}UztuaZlBn`}t7Be$BL9BT}@)^g-rn~;0$K@N5_x!8H+WH*tUJwcB47P;DY zDaI5#a<_TO;f9gREk;haCb`{~m5VRcMiGVb>x5#kPALfPWV2#;g4#Q+J;AU2pUy`f- zrV-?=oycG3CXek;K0A!Ob|U%hlH|E7lkcue-djihyDfR}Zsf!JlNTROe*8D`S#J zL?R=T51CPlj8@)eMlP?3VPqupf|y1|HcyFh9%n{74~cv36aU;L4!TV|bd$K~I`Pp} z;-t&OOBaco&J#an5J#OQo;pQbb%OZnC~?+d;;nTpGtf`fjEB*@%{+n{=vlm{b>jEqCL=+c0mW)2d!x*G^f4Ln07;b+7Gp8 zM^vRfQGs?vY1$V>X=fzU-iV{!5lQ%HPCY<-bvNzSZM0uE(vDq2 zdv-bP+C{W)=hDudL3?)!?cVXUf5*@c9zlC}Fzw?0w2yn!PL_G4j+vRIRb zo4P)2>)N!jtI^i3M4P)TZSRt_!L_u-lWCL7Oj8tX^f21$A+*^8X}kN;hR>Ikaq^&T z??M~jiMGByZGM?|5(X1_fN$gjK9LuAM}FWHd4gw|`KO2E4(?`Vpsr`-pe~SK$RN*f znta1?@(xGHKYY(b?asVu*%Tvj0n#@wkJk`%x zs(;Q={d0!OlAroHJ7vjD4J7|3GgHGT^^xQSN0T2MOP=t1R_ga3IjMP>8L1_i`KVRo z8D%zV6M4t)xv1}%sKeBU6XYk)P(#jV<)Cg-d+w3Pl=-I@!z+&ZktC-|FjeS?FYcgewr zZx5+{s_R@|%lODp^@_%MYnGh-`B1T64|AdB`^!b-LFXvL^eN|l_ubgDs*P!}WqgOP zz4oWAsb*`_uS0s!0F&A>-t2fM=t$(|nUjZ1o<1O;-%ZQ-2IlZ>uT%EaT6S;g*@nAs zZm^7h*da2!Y1;nT;Q=+@kJ3(-KX{n=*Y-@}zBU8edbxl`}g$B=Qp$1 zxc!?xd?|4A$`;G`D+hKya!qfj8k>BwU-|wee!M=;GtZ*g3l?;&+vL#I> z8_>GsmW1rV9-SJMJagt|e57T(>(h=+?;bpSDtYa*))me)eqkAJJGQk_Zrtu1hOOg5 zCfptU#4^6~ZP!(eUf6wc>Bu*()T=quGX6yT80QgH@}FM#bo5Qv(!aH~jL(|=KMj^l z%Fyk=V|Yx?&;_9(dSfc~ARV1~{-55=h%Qb4YV1$rtn8d}IN9-Om#m?+os)}`owcwG zt?YT;p69cM*7iJa&+}PB8+#{LC%)(M$IyYt4m|!obP{&dJ3IOh|6^#K^;iy>FLTbE zH%q~CSlcn@%w=FH?5usfJl%gRpS!1*kGH4$kL7ds^k%|;x_R>WCoK6NZY=rFw|`ka znR}ny1ONM&`P9R|%fxH{%*Z$k1NSZT+?T#(`N~lGg3nn#G5m-Rc#n5@gV%V47kGxJ zc#Ma*k2|=9>$r+bIES-1g=08`eb|XDSdUd$f_a#MNf?7+=#Oq_ho-29DkzBr6oD_? zVS~>mMLfY39K{wa!UXh3D^y1c0^o?ZMwS&jFdGB#3)Jw!XM-X#uo8n&7e!#!DTfo!08 z%)I$Zz=aQ)&jYsgeMNX6{GK98-BkqNKQEfxRz!o80a7X~Y$ zM;hY?C}LS(%DlHC4)&njy0INQv#uSf7wr@g(nb+eTe43zS488cirC$lWo^WEtWRC8 z!?M<5zSR{mxr!n#R%CkR6;ZJadDXs5O0NuekDXbJ`geJi4dzE3UTcopUt>K$MKs&^tdL(`pbOAgbzzZofD$> zSs@Od;xkGo_%_y~LhL;xM7{%jb{?=9U+v{7;$pQl(YM3a?5 zd|4*M)FpgN=ptS_pBQ1T5H)A>S*Mvo+?vL6O%-CqWTrb&h)U!6P}*1_V#ct1L>oyX z`5ex0A({>qV(?%gR-_So3=qPjKc7(R%V&0a^Ld`0LR9U+XF9qG;n$Uzr8A#9=_JJL z4nl;s=kq;nnRXjKgVI`v116c zmKz>eS(#7Q;aMdiCP0H%6`41Ffj4ed;4wNN1=(@8Jl_U`iRggJ2!}hqloR3(j$lrgBmCZ1HEZaVFp?t z3?E7fu@yZLgI6V4C)9;Kw$LND3GA? z;c&_t^}~c%T!eZbO5MZI!ff9V$_-5l39-DO5buInJ`4}yOOpbH@IuP~%HN;Q|Dj3& zwu2wj@D-vsruy)?qx?dYz^r_fy*KqA8@*U=^vcV2&%<`Y22UY;F+Mltjy}1Bc%PHH zgx4O#VfgG$D+Spx%Z<8#Bd#nTj4ndVK?yw1!Msr#Uz{luv_=q~WT%|b9mU{+`%ZkX z5GJ7$sv!nmu*G{v>H#j}436R;4&V@u;ViB~zV02YcwbHwLQ&L37yO15IF6^t#{5H3 z72Pl$`|t?aS>9MQ!f>p?WtdTrb*qYAn1`cy33t{%0S%Fc1vrTNP*G04NI@NR!br@) z1{}sEJj6SgU`H9}fCq9T4?K|*E^vVSpxZ}Y`xsXsw~3tIEDS{(R6;nM@q%SJhWY4? zDky-DEdOClh7O_l#JcXmFqDTgGANr#r~!H=iVVte94f#La=Y|H9A0M=Vi|PEgA51O z8Ab8MUWj#&U$f?mD|Q^8P#)IUW6Sa(7H@4Rf3!y^URVpU8XXahFIK!B!%!KXc%b4q ziZoP30en)}FTrV9a7q=m!Rb!8;w?pa9$PUBL(v{}Q3~wFA`t8*1nu7=YCY-tkC2}Q zeubA=L-|;a{|088`PoBuCEt1h7n$rUm|Lw3&vtO_$?4|6Q7WsG7mr! z2 z&>eCaFSns2dziK@SZBQPC;D9HT+c7M~aHOIX z0$>F~QE>nZAh$^~5KalgBw>fAtkNm0#U%7ZLlj3ruxkl^@q{ZcX7e#@z--9R;C4q- zRD~Adke}IggEizAFTKP)T!s7|-QzfbUDyiw)9>rC7HfX8j{6(21v{`8hj9w$aUJsK z%U?mxM}BtL8D0oREQ+HV8lxiyU@YcfE%qS;_aXNIxq0P269QT9t3ZdY7>;RJfn7L* z+mQPrA!KI#_h%RbS-v$P%eo8FFb=ao$St-&ZWBU#aTO2n3N&9bcUJj@zpn5^e#mWE z2w{jq91@TOxj(6YA|K1~^7&ZE*UR_G_si+{AP?Lie=J)*ZR5a+zfv8jeBe2f1GI9MujjA?uY~ z_u8n23Mh@DAS@QKh(HJe;R`~|%+KVzFm!}16c{LTexseM*59|oGlp`T+=JXc*C4mm zIh@5Q9LEtHgsiV}yY9qxY=zv`n;?&=>#+{>vKHhaUltEyQM&# zMb>p~mZA)$Vt+x7x3IikzSlAxIZZijIgdoh`N{dpIwF@N8gjX0eF=kHR=Lb_*$W~F z0g&tE2Os2vH)Ngige(VH9`0~O4rGTcuWXQIC(F+`4@(={69f% z3t1=ML2jEjcn!I&WQ_L$a@$F=&OXf|x2g0vi>%B43CsKB&@wH{wB>v(^OW8sT#t{C>m%TJc0 zWCvNU4q0S5%kq|-vdC>9>#HQUiG@4{Sjg@5v#jP!=684eyZ3*7zr1gmwq^>@><%S+CTkS%EU6Xl-18e zOF8~|XesBv8d|o+|LNghEz4hx`}4Z|)#IPb;P38R%I)77{!`)qzi`CAv!4Guulc)j z{+~Ghe`h`a?|c7m3H;v@`2SN0{M8xe|J=BLx1YfOq}Tnqzrug|*wVM*?}nEC4u2k6 z`af8PmVOYH;m`dcWS@vX_lvOfjj;5O__>dS>?iRSmc9~}{t_=4_X5xHbH9m4JeGYY z9^fAC;x=R-iW|6wE4Yk{IFEFk!6_WaQOG_O`>_|hupOJR0c)`mOR*4hF%!RIBF17A zhGGDEqboX~6?ABTny7@*&>|k;2!;=GAv>(`%|sdC5w0U0hp`>2F&~pL0)5a9zn}_= zA_Bf}f!WA4d|bzIY{3GIMIWT13KCHO+3=2p{Z;J45{yPC)I>b;!a(BiCU#>s`k_AJ z;eprRxbBWc=#N?`0xMko%6ecBY9a`q=*w{gQ_u|I(32EBf^nz|A3WmX$VzlX6h3@Z z#3pn@6kdPed8EPzm*2ClD1k2|I#;40WdDy{^!;d!T-g7Hz6fx~j@R^2fEAXIoGpXL z^amM+0@(9{<-wchYy;%O`e)1o7f7Tw$Ga!=kw7*~dQATm%%`tN5SBkwL}9EX`5S_z z_Z8uf+4mHY6Jzeu&jsD@FyGsXsDmT7=(mA+H<>27-k^S8r!HaPHTt!n3m zyUaGf#CtI2BKyY$whewg&-io9AAK^Y|LLqV8l7cbNlL#wt%zv!JViNh5z26azCP%4 zToK!jQQk-CAA^=h*cT4d@8=MGfS^67h|VOo7wo6M&OVkOVSA|)dnmWv>_@xU7k5%0 zcPJtd<+rnsY*WPet?Xx8c+Y0aY!h`BMK;oZWCP{6o_%T^``TLGzlL>N&3?U#W5i1O z-@tPP<+q&WTSmW+rEJ$FifFr-eQ=Q?hA(9QTtJ!5r(eoE<}sIkCUfYUGFuTRXEDE- zEYA#%71QZ^HH~uqo#V??`r}MtyG~|VCefc~A|_xw#xZUz&;7=0#&A3uO+Tq$IsS~| zxHFRF8bMtf&UA-yY#GY34&it*n0!K9KD{KoQgXv(EjfH+@;RKGfUZ)Vp5v z4eH50(nApyy0Z^=W4m=#M4>L!tcskXr2e*N8QXD;YfFEsHXOHF(-*20({9Nz zsRi{sl{(j)?a+*Us44rFj^j-ewtHhm6#PXIc^Xl78nR#2XZh=~%ykuUx(@qrZAGl9 zML(ySOrr+NRh?~9jblnxMO3arKc~uU%SwvKUr`ax73jlLj(Sp-{l5(BTAKZ+6n)T2 zvJ53SRureM6l0x=($`GOcGS=(NX`6H6p=fbem+U;>j~_~@f?%mIIhKVtc~F~5zR3z zisNV`bvuIP4_8EuF!re;)W=ZvkHXZ`5cbJJY>QyFSrGeLAY~B1{_n4d#RceJo^HI;d>9^%YoyyDd=b?Ui(myOW^*ATX;6WX5=Q!m?8Mso%T&TY}I0iW@ zVq|uXX-*tx99foZ?1K($8++=x9oxp1ZDYgqtXU>2McAw8rzK>6Kl-njxb9)(I8J9H>v~Vg;Xfg#{g~@6kLd65kn8;qa3A-0e3$We1bxlu3v`R`L%vB4{08s8 zPJfkaOz$dv0Irbtzf9i$5_$iN^r5&wU!e2k{LisW8RYuY$-$o`FMoz>Q>VGEd5UYJ zC%HCsf*j;=a!|;7jC|)&a-&D+k8zm(0f$(=gY?5VzF;Ho_wfGRTm#xg z?g?Hy$?5Lk+U0hZZyVRNx01)-LV0ZFn!qNmfo&w#MZOK>VApdkdmYzp*9tLZ4cDMn zb4_X$*CAJuM@7;K)_FPQwTx>6OS!JFg!wEcZ;zBkl+!|%WdYX_=5t+m9=R|?&E-9F zSnt_vhgn<~ok{);+8LD3bgnH-W1WBJI`mX>yl6Uwc~9nA#Uyh76UqIe#RRV5jpusS zIP$e9HkS4Njl~|rb^g)hfT8=9*NkG@k7RjJeFWt^oM{gukB3S_>Dw`c$Aif;qS_$J zA&veT11Tdk89-m4{?ws7YS3u9bA< z8e$i&|6+1y%Cr-?YYgj1e~k`oH}q}KyxY;o06p4rU8W8BYV>T)_*UfP(Z40HZ$T~| zqf#lW=3G<4jAm?urd+GTIvx2^v~R*SpT;Z?#{9xH@kT5s);A>Ajb07-w$=JV6vdKy z)FE`KOWmkL`C&zE^5N)Li+&+BDKG44n?5je#V18xZhhdet zK3I`!KDb+f>s>fmo@rxSIo1J7%L?I(>1B8i#+D{$ieaV5ePTdKws8rzCB7Et`X;^> z<1zF_DGvw?(NdQ%T0`BzR5kg1EKK2A05&Fb4FQLe=-Yv-iR_1Xoxu9R9#iAFPJj(@ zEF&^vsWW&N!}O68%c7YM&PGv}@g9- zDa?CO7{^1{S7C>xh3IRCCk2K06`?p2%=I&PU|SH^&Y)mPAbrO0E`TybQ9SmiULyf_ z3s5GA#ce;PhgjV8W!^}_V;}Y>l)&5k9RE-S=6v)$Kohv)pf`Oc5R7YHydTBzF)wum zjp2b4d01D(?{qccMBBq#e9bjXM69;_4UASW)kv+tk= zJaEB{cJnc zoWA!h8_KXMyz$hLWycUygAZP2qyGU$qX7y-??9c$EOdYtu6SV2`!NcQ5CLmkwd1&p zA*hQm$bL-MY^h5aiN=UW4m`GDogn+PbU_8kek^8d-h)jThqfq<0x(;#-jKflI|W@( z75rL*aKdvH^%2W35-m{%!LY*MrG zz%6pf@|x#zjDx%e-vGr?5IOLP3jntu`;S)WYMzWi=zxYOhj;|S9em4|`3)B`ZsQDgV>M=B4EmuR8ln=^ z2!jt?px`|hM;_o3j$sE@V=g9Q7CenEAVLL!R554n&H@`B9=JjE@X$1&`|Ml8o% zOu-loMsIXN3p7G4R743RBN`zn057=15!Ntp;qN0};W6&u8qVW1j$j{lU=!A085UwT zrePv}!$|PUt>yvfgYM{zc4&p>Xo7~Qi<+p4N+^fYC=M-Bkcc=$BLZP4j6w)P01Chd z`QU}T@I)?nz#Xn|fitqh3697H2iU_7wpnZ#T4%9h_%juc|Lo`IE$@>+1)91R@x+Ok~*gZAizuILH5o%>@DhGGOpV=QF7n1bn$ zb!8qFVHs9pEjD5+c499M;wVnyEY9OHuH!cD<1wD&H9p`AWIa}>&o*#?Gu)61vd;S; z00mJ5k%&VQw2=EsS;+mS8fv3H8lyQ{p*^~wC;B1{@<*P3#aK+jG|a{VEWt{w!)ENj zUL3-4oWVI<#tq!XBRt0&e8e}HVa>6@0nTuTC-R{Hf)R>H#330)A&)WTQ3W+o5Ayia z46V=}UCfskOLo2jL7xaWYW~X5oe#JOU#&pcV zLM+27tj8AY#6BFxamaJQd0fE_+{Gh2hdf_=z*m?c&mnejf(vpYFY?151rdr!#32b< zlt5WjLN(MzeKbZhv_d;{MtAhV01UN(GgwI6MZlMgE0)F@EgWsGJc1Q59VS4mS8znV;weOD|TWJ4&X43 z;S|o|JTBoXWZZEF_wg9d@DgwE0iW>=MkvH8*09TpTe35Bfd_IUFY-agHU0=fA%r3v zQHVtXlA%E{ltdYnM)*oW(g@z$IM4 zb=<^l+{Jx7!V^5h3&{S*ZygMA^Wcq96KWAkr`h zgE17tFdQQ=62D?J#^5)M#W+mBL`=eDOuV8JLCHn1i{Phxu55g;<2eSc0Wk z2HBQaft6WSF0y>f45i0EdBT0^=}(?ga$$jb7 zPhNB1;tlsL-g5tE?|5wSp8G%hz+;P#-2d4p9{=n!kN@lo<9_y)$A9*Xaeqb6_`hOc z{NFM1-2aM+=l>O6@*n@v6#tihDgEk}C!c1cU{bcw;17Ra<>Gx<)f5>d~@61j= zPFMQc<`!P`#`UMSZZti7OYlj9W_+S!2)*17iu;1J{ZD@ie=7d0__OBEhQIGmbHzY> zpNAdO&(4(d2tRrR7Zd!%i`Xv|We{&wtQ2d-mLGF<;wMWz6<;NSpRH|TnSq?PoUVu)C*w|PLD=SB#vLZzz zdS1-XwYia@>jlmI3|*b`8M=xL``^mY-Gh8Q{9%SJ_%cIYBOgoOvhG*8lcDRvb9Py; zmCrfzSPnNcoyok{cqK!ZdNo7${`x=OZ<&sgH60zxQIz)`yp*B)h>lF}21EI}9=9`e z*I{|j-whYs%+QTy8qNMNnvO9ODDCR+25U%cV-`VQsJ4OTOdWA z`56Y8UzJFyXCl?kk@oxN97w@ue%^!BeCB5#NY`@={*JVM=4T>E^=E!Qf=d9Ip9$fz zfbfMM3cw!$2t*KqQ4oa?g2D(z5y%}c95U}4i6}%P2C;}kJQ9$IBqSpRoNO{bFIALb zF_b_lltDREKqXW`HPk>Y)ImKoKqE9kQ#3~lv_c!SLkDz17j#1p^g!vGAz5RAZR zjKd`Sj+vN;MOcPaScgs62AKojkHa{Q)5yR@$Q=1i+`}V0!z;Xl%%OjSISYgT_)nfO zEr0UNDgWfz^B?C=TmJ0+c)D|T&XI!?p1ViRT)92-P^DuXfC~iOpkbweK1; za_*oQgX6C;ldLDjw4OLCCTj1J810nxF_V0D$2@3#JZ5#;rI@(R4`P;-dml4$j1s%= zvqP-yYq!`QeZ6D%EeVQ^?;9C=%}O2nOT}`r$-3IH+p9E>H3W8z{k8X?*x~m_#rC^8 zF?Lwc*o~26%?;_kBrYh zB_+P&rLyr0?$?U{e7srwsNcK9uPrhte$T{F@!f_@jDKW5D}GPtlK3)T*Twhly(`|d z?O1%7Ll@&GF1sK9rR%%+eR-9HNdp`bzP5Kuuzly1(9|O+q4w>Fge#3w5+=?poA7Q? zt%T?i%@R6P?UHcbZcswoHlq>-*PWOUa(!lkgJE$(tHbLOl8f(3C^X<$!n|P@6RxJ- zPk0jgF5&41kyyI6L!xsDx5R3Pyb?Fx4@?}mG9qz7P)g$ACS?|9;}jhi?<}o#kWM zVGcT>}mmFL7ZSs;KB4z1K`;=)1TvG-od!;DV15;|cM5O2j zC8r!)S0?4*ikc};`ZZ0t5Ysv3Y^Su8smDjAB(0v1vM*p}%HhPtDZ@UkO?jBQGiC6k zqbb`*Ur5>1;9g2^*S9J9MnXMmv%UKE@2+Z zM%^GmXnOu;uZeE&su_PLuO|3yfF^8txMqZVvgSl`8BL|InwofigLdfBPMUFnX_~IR zM{4fXnV`9Ge1_)hl|`EN>MTA8~bQN+wmT<90R9HlW`2GstroDa3hgI#} zp+m zzI98TZ`CdxyM2#U!%K8*-$~c4b<=jKqDjt6x=!oP>C!i|ykYcIsN`3{PgDxxzsh{Q zx`->mxBeu^|4Nknf7<&N@F=Rg?_miT5HVI%RK!7pMC39vJF`2tok<`Gi6$Xr7mSuR z8L}I)u*t5;1_Gi+#FkRjNKvW9ngUe{(MFAmN+Bv$#8}g0L!*s0+NhM$nqt(HqP)K| zvl})cYTNI9zUS%pb)Nk8-2UgxnREGH&N(x2u=o*K%9DPh`NI*Po&4}rW*TGuIEYWA za?%RYsXTWs5y{kg+#^;O(*AcL9P1Mj-V_a!I1+wfNO)^B|45_}J?&?4VWNXQ5~U|H zhotY03zPK5XqcptdpsQ%CS&6HxG=fL{VOv!Ci~-Ao z41;M^^t?)Ag^xPj$#hA8jHbE4iWR=fu+K}rf|wcb)u6B%D&4=-A2tH9k%N8IOh;-NN!U?hOQnybm^blY>OIlh9RCuaAWT&ZS&D_LBshOjE@XUK4k zvauQ}yWChBq~}+L%6!!r^urees!(;HYG7~<&<*8%v*{RH1Q&!saZg*DvFdP}p#m)( zZN{y@*}$(OZN~lGZN@)<4}sqS2Z5${PUDHV@HY4#McR-yBxVe?_b5jDliJ7xHW@KWyUF>^7YD07C90O8dG?B4o1Ct=w^%t_ke zAZ8MkeCc7M{^K?y)Z1nh8%s*OxB5$|g?ZWT7y)Q9jY^}!8w~j9SZj5{ut*#x!tHk>&SMaI00pNaw#)?@OXl}MMCt-4+d5Zupz|JlORvVw;LfKMniZ% z;l0H6CiXS4p^4p0Y~^nO#5TSFxDdDqxEP4pzQpb&HZQSvF9&E~3UCE*C6EkEjp8b} z(|{BpX73JX^A5Fp<85Cu0psmo2f`S#rVSi#2ghvTczZZz6BDI}AT^5kHlp)AF>QgE zvXpjFyYa$>?M4T{!G9HS2{0b80iPlMDDVzI=!ahOmlJ`o8Ug{f?q!FKTI4Cd{50(; z#E$@oEG7Q00yR*6H;JW_ekJ~g0MggsQspMzKwJ?Ce88^UcCu3euX*YU-+%$L5LUU{u zErP;EwIQw*_+1plPw%fEFKW3LHB~Frx)gU=tWZ*yO&aFLWE16 z+HT~>Vez!V;jAIycv|8gnx7v+Pa|w<0F}maEL~FJ%MTmP(=nei+l`zV7$b3D;EzFu ze_Ax{2Dl5N{#bg2) z601&hZhB6X89^cchHHq7pi=3>Mt)AaK`*k#DCFDS1M;o*_Ax(zeEWVw(s_v+_MO@f zZoSsiZtMhtzI%x8ONW%cKDrGzU|JLk7weP_Yp0_7qZx zMM@z?;Z$$DB5CRin^7+FeT;=4;CW{{W;yW8nVBdohsw^&oR6uOhZ$xqU7K<&vyfiF z&a%&j0Yhrviu`r=fNwm|Zp6|_Qp^uhs`tKjVj zD}ClzPQ3zS8MKXC;%F~s=iRuh`j*>nsa|&DJoaMhqc@*>s#$0TNNl%< zoyA3MMzek5>WBvBOagm6L0YxfA9R;g2SVZMN*~KmgCmd$jdl7#5w=@5tO#3fn%i;> zvTZ?6PJn^80*?T-z+!-Wuj~@wBp7@* z@N1v}*bLxRDGIMQQFtYZN(Jyb5QSHID7>0ueq*c`o%KF&7&rv%1Db$cKs`X#Psv*9 z_kr60BCLpf_y_LyC~!NV0G9$^pv=br50D1nl_LtT5K(v)2s?$a*??^TQNBv6E0!2l zRajH63eR*%G6KGUAI4At`Ce6gYtY$+RQjy>v*yx+V#&aaP2*_0(X2rGE2_ek)#X03 z#R(_(mm6WVdHN8sNxue)>1 zsR@@}cJ?_*=Z*ixuIhd5#@;CY7Ii;}i|dN|+uqptEx`qjgNro|jF} z2?nde5H`5FQMaTP%x@q*jV?FWSg1j9Q)ikZITQU68^Xy~Va=i)yeIMQjCU-4pmjMfb zA>+z1JG*4Sm?3S^g=c96UH&^~(o#ccbNn||`@N?Xm6U1dAa89nA!Li7a1H&-FmY0k;F?KsHeS$H5R0Hx0ND04vGKUNB&c zm{yywiq5UB@|V!=Rp`=kssZ&V{uKTBdApGjLVT`osWHzeCv<7al_$pr0oLk237#efns0*kO{={u<&02Tm+1Zi;tzp+)+sTEa7y% zSo~1;EzleSUH}@thW^J$+XUPJgujL^2WbRD?=v*)28|E65%}b+h>?NzA}+ziIR8Hq zBgVTxERDENBb)n5R;6m zyXLUbJ1t_Qrl8-y;v%*;)CUS;+FTzcYohU6edERvD-9PsroYeprTY4gOq_^+Q$qC} z=`s`Gwhnl#EaVq^m{!2r!bAvLnDE1codWpaA*X@h#f$d1EFaZ53*#jU;?JHPF^C&O zEBqG?i8~Kr690VEeFE+z#)>;1?pB0rqiOx1I}V5lPm9KVi10CBDri56#*y;=70gGz zdy#(~uoC!J@-79vwPHliAq%eq42{rc|qQtQx;*+gn zPIr%4A~%a=W=E+>Qu9p6_;k$ajEI2@*y_klXUWf8tg+nr=LLHvk4lY^_k*^sFk&>` zVA67gj2Im;x&mL^QZ?e~Sy;PVhItW)7zLhOvQSRLrKd(091A>o=~RISW@dp0obHU( z?qcMpZjKnt2F$C$E8%oHOrzdAG1kBL)tDcbHa+Smd3M9U8b~J_C+=AbX2H5Ga9c_o zIXy(V7qJqRo(6j^JuTZqc`^#&8&U!2o_4bqv4pH(Idn{`XHYw{@4UlhgN90KAIoPh zT9AWDCes)$1-IhOENIigx&@s#A93qu!{)mS?R#+`#L7ISSa;T%jh zEV-S1)>vxfn8DeRx9>-g^FvU#$%?xk?vl-e)6az!sneK(WJKX_YvN zRqpdb--tdm^j`+!?>>ybpCVtDH@tSkrU$n@vg`3DpEv>S`yBTOKXB3qdAkxT{NGV=@|u7ZXQg# zH1d;cu5aZn#A-9~xic0lv__n{4raDjY(%(Mm50iL6{|>OF^f4@kM{Xl#CUe+X?*x7 zbTi-~#1Rlb3-=D-hG>|?t=(kaOo2ZE`0y7N-9fl9n)?x-3)q1R zK)Vd?<4E5er6uzF%;V0md@ewu8$j$>*Ysd3`5HafhhBhUOJEj_Gaxl{%g+7@B)|R&jOLzDgl6^q9 zq|eD^EM3yF1s3KO!rnpI%_q^8U!ZJoMC>MEi=3?6UZ1vz%FQSJ(hr({0H**Of7loe zj0KQnEnA)5s5VbbB4-9Qbfcci&dmq!pXaOaRYH8k=74Fqpq#}hul`Gn530i`Iu$V% zeGP8-inO01ehaV($Okq8-ver+VG{RsSdMfbK<<4M_+!*Rv@TtUZwFomo(ATn4=CAm z3Kti`hD2P5P8qs}5gkxu-(sE-Fltr}vg2q0R(r~|+#He~7SKLpI*i(+4w!Po(qiEc zJvhH0y&z7+4M)pkL81la)t%pABwgNtHFb#QA^CERr4_y~Y{yK$FW{}B^UYJW81D}B z`xU6il^w7}u_F%UCar2!pt?L-cS~0$YmHd-z&S(EH(%XhS$-I@23ftpKD)UikM%3ih1d?G7s#y+ zg@_K4VlKK}O_4Cp19LT}e<)%S$JQ@;khf7r9Tns~9Z%=Z^N^(Z$CZ{l-yLm%IYz~DYB6X+xgAC* zkJOtO@ia~7Zd=r0(AReuX9LH9A9^~BPPi`t4Zv+cHQ)!n11tapAeLt*^4|l@4Wcpq z)?QHyxmO|j?#2#dWl@LmjL~5{1{?(T1F`U0_^Xf}j}?e32fV8;$mOISLw${C6l5AgF9N$Tz|#Vm2_ow1r`u}bgAJFV8vG+OVRWq ze`UDZ2rQ`fRjx7imJ+tN}m_Qai(V8*5xv9A1qA)O;JWxkvl7`AS0cy z7o5nSjlZQOB{S`__*nvuNHGqEWt}rQ5;+@#sMNo7w%;x~W~1ntR?#z2_N)@{^l(}@ zSe}QDOQTZ^cxTX6_`{>(UR76LO;2&rCO05=`tS9h&;l2oeMK3m=ivpTDcBX}8FF%t zJSBfL6#;4y-~0mjI}TK*K7;R-+yEYo&4_yVTd}c_kAvUE-+}*ESYJlC_~-b>-gbOz zaRxR$z%-nVxEk*P1pG^C%0siffdB=!sHDuOsPF}f%B#b^ zK@ls0Q34!l3;T+QEXFA{lLRL(i$Vco6$CRWf&{C|{WWHww9+@2c&RU31YU`Sv!Z~% z$|}H&s|24Y@>i4w&3q)v+GiLX7k3|j#WG(>xX8DH?DUWu2ZDw-nrUdbsI)RzUQ}WP z0!yH=R1Ke8>c>gTAq80(%YEg+%2j4s1)jPHXMFsGcbhS!N<~YmOG~5AZ-z_B<5NrfcN{b*A-t?hzhc47#~$tVpI$Y`+Uobh$u2k#c@M4Ol+g82#7c zEQzQLt{kAn#y}`oR0_Elw0e*9+`uRZ8P+43k!JH&8Rem9E18kz!=A2)RW2#QOc+WX zd-C{r^SR@zY(@+WpsH{%G^iQKk;lpkYm`9N4r;Tw@NhkTM)E+9pOF&R;}EqaL9f;9 zQL&4;`2XLf784#6y}YBTBm?{|F75#0W*~03s|WGDz)4`-lF`%^01uEW9c}@z1PA~t zfLnnLz-C|@unTAc_5v>f2Z1)A3+Mrk0e!$pAfW{J044yFfU5uo5CILy0t$e|Kq(La z!oaP-I^b?#3$P7n0G|B4@R&vt@$V~+p7E()FB&Ken}ZD;MYxGIjoB}Odl!lx5O7fwW)UE zt0+No#PT8eF!7n0JBbf}IFn&BB?@)SwxTrFiWHgC!{EA%g1n3zJ7?+&82=MM^Ph(D zsud-b;n)+H)A+wX|7;5+K_>_8SKD6~M!Axceb35|`=1SqDrCpvaW>>IxvOC$m>`Ux#*$-J8H-o#KtK&Mj z-*bQDID4u+*Zz$CSN1mhTXtH+O>tw~o+=kth-*bwrc$kUV1LK_g<=54(pO-$CM#$sjY4W4;bMgWC5Atf|m&%Jui}I1OR9&U6 zQy*4yT`OF7xPIb###N`)Yx}fUv|s5TVr)>w_|7=$lEhraQ0&>PomJRH==*KlW87=p z`TSI#;dA&*N3CO%;~~d$j*;R8A}y+-UH*~0Q+`U`C)c{xySBS_ljjVLAVYzAianpB zIXkCul<+O#O5qyeDk&tbmF|*$A&pcnP-sO}GF^49ZLY^$ueq+&1wBPS4wr#HmOnCBh{(f)Th)JRI1MEqx0BH*>d}G@#o^R;z2PY zzAK&(%auB1moiT!|FCxgip^v0WA-yY5w?>t*l6{|F{xilkdtJp+3Lr=+;(ZXcxw&Hv2aIRz4G2apT#8;$N=|MHqMGp0mawki7$h(w?tBX8)FKk^n=Siv3 z93@YguHNq2;OcPg*4njWq%7?8ld{U0z04xEmM!Fd$t9DGk|djXuD#jOCjVU?txQ&C zE2+u?rBrphg0A~r54)aob-E^My!K;lo3>NiOUhzw<{564g+JA1jhx7vd^-UFpeMKN`!LZ4&g4rF5W8Ei;s)1 zi*JeT3e{{g-%ZbD%9)kSBTNJH0{FyTj=wvmJNJq!CDN`RpcV=8#d4}VR-L5IP*ruY zTB?Rra=4Pr(;s3)zRumt|B-hK@49AcyR;2D)onA|{0c^8GMP<`kNbi@Ptb)!QlE6Q zdQ_u&t!D^u+qqrbJjWzuud<)?6*baqhY9@O1uAKzS^j6tWsYYZ2b^`T7xhE>?=d$% z*C~3W**7-k0%kJ9GBR@=vxr&BR5EumcQZQ~5BoBEoISywVn=b8a1P;0HA|%!tL!m6 zZj)-||EuE@$4SR{=lRZQ&Kb@$=e5pnJH5^o&ikDYJ0EjC;~XVEr|eVOl`iF|LgAyb zgm)x!%lWrRU5l;q{z}?DWYu+)aEmYny!ZR!HEOE5Q@vmNkxu@>G-;l~r^G4JMrpTHuRNg~QvR&;D_5&U;1#>nXVni> zy!?iISpJiITpp>6 zS1wnkD=sBdxj|W?T&^xsf2)pkUFs4@{pu1Za_-X2eQv*&5A)UHFQt=m*!8H^puMOa z(tfY?XrF2)v~%?d`qet8&((AE@90bPmHHa}Uj0FRx89^v^;Ug;#NO`AC3SAJ!dcwA z{6Xh&@H#7;#Qa6Ng4DOw3eRM2a$IA|#{?=1(K+1pn9ZxXySV$gUvN)yFLS@){=gmO zzTigN=h>Hv-xD8@9+5dEOIZz0dqTNa6*Z3*((ctV^e0HWP@~MY|CmW~)R1zMMwxy2 z0n^JQvgfc@v9sAZ>~-uMZXUOoGq^IoT3@Yi0l#`i->{JHWreuNLkn@-=mo*;g;}_c|_-zHog^+Be^- z)6EW>@~RR9UmRtA+u|v{L|Er&7tdE|^%_-E-RgJ2b=IgG)CbkaA!l0DGS_Xcjjm0Q zojY7lyY@q3wYk1@jnk%TY1+57&DwVD7uu`ZDeY`MO<#l_c};KEKhpnZj*n61+3m?# zrk~IFn46gm;8G7V+rR-&Fry)DFEZQ0$!4?j+3TT)m9aNNHtb@bW}Dg9*~9F6>@l{F z{gR!_UB|h(Z}FG#SMbw$j+gm4{Iz@meiP;1B*UTJX4l*rFD-&TlnJ%WA>0ypA$Cz$skMoH0 zn6uZ}=j?Z$bW&o1m?(}Dlf(()L~#=Ij$|=KoFOtIFN)AXQpI$!R$K?Uw^6JU`ykOz zN|c-+CqfrWk|)R$Rd`XwH9)e^>KO< zIKo7Il1}T%dWt?nXLMc{brm{Qx}F6tk*|C7Lg-h;x>qmL1A0gg>owpSwfZ`Jy}nVe z(>G)8ZPn}b9r{kaL2m>n*`x2(oAm?wLA^z9)gyYR-UVHvM?az;(|h$ky2&0=%deAdGjvWqd#yqIYLHpGV68g>n4+&XqW^q4w!GrNV|%GR?xU=1~}jcgOU z2Q#sirMM(6l}qQcxEwB@^KgaWTgA}b%eVj+;=)`Fw}z{Q9>1R32;F%zw}sov)pI+z zom>Og$Te|$xV>C6cYr&{wQ#MFc%57q*Uj~CN4R5LFW1NQb0>*T)@<=S+L7!?am;Wq z4tzSsp*m6>>5eR-yHZ$N!|y?{MQnwx+bMR5-H=a5#A9Nw*eCXjCq+t1kP@YFQj#=5 znkY?@Xen7rk!DDY#7m;2LOV^DvZNd-U-C$W(qgGt@=9e=0Qz}Ys*%=6wbD9iJv4(l zX|uFN+A7scJEWab19a~uXy1FKX6b-*P-=n37LhuoE~#7Uk&Z~mq+aM;|IYj?lLK-{ z4$C$28o3rye!aX=t}|r@_Hw{`>iEt47QT^h;`i`-`DXqAe~@qCTlomTMyM6m3Ee`k zKsk~eG+Hawk?$yWgkY=GIqDsaj%G)zqubH!Jm5U&Y;m?aBhF4|m-FA@GFf7dm@j(7 zLUFNJEPBNL?R_IB4^WU1;J?s%k)=E_~ z%@~7yLcd_m*J6j)QRWC>9EKe=jx`vK>m2JH8!;v~JGS5}M)i&zj-8GMjL#;=9>-pc z(gTizjuwp7h@%sB0_99_icZy;>I^tT&akt_xyD)RT<2Wx+~}-xZgy^QS|j>Da~$VH zxyk_UxIg_fSL%YpU@)eI# zs4P~B6|Yhjok=yy8YQM5Y&GXqA#BxR)vK1N0qBllwFdfQEmmFDs~goib+fuf-Ky5B zJ7B3bsEulqx<}osHme8JgU~Kp)ri`ucB$QJk9tHsruM3RYQK6?rCbTFMAtZ1l52u% zqHB_ib|t$~Tr*sZi+71G)s^Z>cV)S9ToJ4ebh#)kK}*yatP+S({lc23Tfb7P*kVfj z$ncV#8EyU#6AC(D;t;v+F*Uw_PM`Z~`5gWy%>Jg3z$FSl_ z^o1PAK2Ma(SbU||(dX!QOmI$gPIA)DWM>N29vCMN-je0aapp(4OFUoM>a2I}aPD+A fI2)Z!&OOe(QBKqOFG|h-Eon(Kp8sCMx4{1ZjK2AM literal 0 HcmV?d00001 diff --git a/Windows/codecs/x86/libxmp.dll.a b/Windows/codecs/x86/libxmp.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..18b3869517805172e97dc81e934b88d8ce7868dd GIT binary patch literal 27802 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 EAF{6ku>b%7 literal 0 HcmV?d00001 diff --git a/Windows/misc/include/msinttypes/README.txt b/Windows/misc/include/msinttypes/README.txt new file mode 100644 index 0000000..6451c46 --- /dev/null +++ b/Windows/misc/include/msinttypes/README.txt @@ -0,0 +1,6 @@ + +msinttypes-r29 from: + +http://msinttypes.googlecode.com/ +http://code.google.com/p/msinttypes/ + diff --git a/Windows/misc/include/msinttypes/changelog.txt b/Windows/misc/include/msinttypes/changelog.txt new file mode 100644 index 0000000..dd21167 --- /dev/null +++ b/Windows/misc/include/msinttypes/changelog.txt @@ -0,0 +1,154 @@ +------------------------------------------------------------------------ +r29 | 2013-05-25 02:36:43 +0400 | 2 lines + +Fix Issue 9: Surround (U)INTMAX_C with #ifndef's to prevent compiler warnings. + +------------------------------------------------------------------------ +r28 | 2013-05-25 02:32:18 +0400 | 2 lines + +Fix Issue 10: Use system for Visual Studio 2010 and later. + +------------------------------------------------------------------------ +r27 | 2013-05-25 02:24:11 +0400 | 2 lines + +Fix license bug - the name of the product and the names of contributors +must not be used for promotion. + +------------------------------------------------------------------------ +r26 | 2009-10-02 13:36:47 +0400 | 2 lines + +[Issue 5] Change to "stdint.h" to let compiler search for it in local directory. + +------------------------------------------------------------------------ +r25 | 2009-09-17 23:46:49 +0400 | 2 lines + +[Issue 4] Fix incorrect int8_t behaviour if compiled with /J flag. + +------------------------------------------------------------------------ +r24 | 2009-05-13 14:53:48 +0400 | 2 lines + +Forgot about #ifdef __cplusplus guard around 'extern "C"', so inclusion to C files has been broken. + +------------------------------------------------------------------------ +r23 | 2009-05-12 01:27:45 +0400 | 3 lines + +[Issue 2] Always wrap with 'extern "C" {}'. +It turns out that not only Visual Studio 6 requires this, but also newer versions when compiling for ARM. + +------------------------------------------------------------------------ +r22 | 2009-05-11 22:22:15 +0400 | 3 lines + +[Issue 3] Visual Studio 6 and Embedded Visual C++ 4 doesn't realize that, e.g. char has the same size as __int8 so we give up on __intX for them. +his should close Issue 3 in issue tracker. + +------------------------------------------------------------------------ +r21 | 2008-07-17 09:47:22 +0400 | 4 lines + +Get rid of these compiler warnings when compiling for 32-bit: + warning C4311: 'type cast' : pointer truncation from 'void *' to 'uintptr_t' + warning C4312: 'type cast' : conversion from 'uintptr_t' to 'const void *' of greater size + +------------------------------------------------------------------------ +r20 | 2007-10-09 16:54:27 +0400 | 2 lines + +Better C99 conformance: macros for format specifiers should only be included in C++ implementations if __STDC_FORMAT_MACROS is defined before is included. + +------------------------------------------------------------------------ +r19 | 2007-07-04 02:14:40 +0400 | 3 lines + +Explicitly cast to appropriate type INT8_MIN, INT16_MIN, INT32_MIN and INT64_MIN constants. +Due to their unusual definition in Visual Studio headers (-_Ix_MAX-1) they are propagated to int and thus do not have expected type, causing VS6 strict compiler to claim about type inconsistency. + +------------------------------------------------------------------------ +r18 | 2007-06-26 16:53:23 +0400 | 2 lines + +Better handling of (U)INTx_C macros - now they generate constants of exact width. + +------------------------------------------------------------------------ +r17 | 2007-03-29 20:16:14 +0400 | 2 lines + +Fix typo: Miscrosoft -> Microsoft. + +------------------------------------------------------------------------ +r16 | 2007-02-24 17:32:58 +0300 | 4 lines + +Remove include, as it is not present in Visual Studio 2005 Epxress Edition and required only for INT_PTR and UINT_PTR types. + +'intptr_t' and 'uintptr_t' types now defined explicitly with #ifdef _WIN64. + +------------------------------------------------------------------------ +r15 | 2007-02-11 20:53:05 +0300 | 2 lines + +More correct fix for compilation under VS6. + +------------------------------------------------------------------------ +r14 | 2007-02-11 20:04:32 +0300 | 2 lines + +Bugfix: fix compiling under VS6, when stdint.h enclosed in 'extern "C" {}'. + +------------------------------------------------------------------------ +r13 | 2006-12-13 16:53:11 +0300 | 2 lines + +Make _inline modifier for imaxdiv default option. Use STATIC_IMAXDIV to make it static. + +------------------------------------------------------------------------ +r12 | 2006-12-13 16:42:24 +0300 | 2 lines + +Error message changed: VC6 supported from now. + +------------------------------------------------------------------------ +r11 | 2006-12-13 16:39:33 +0300 | 2 lines + +All (U)INT* types changed to (unsigned) __int*. This should make stdint.h compatible with VC6. + +------------------------------------------------------------------------ +r10 | 2006-12-13 16:20:57 +0300 | 3 lines + +Added INLINE_IMAXDIV define switch. +If INLINE_IMAXDIV is defined imaxdiv() have static modifier. If not - it is _inline. + +------------------------------------------------------------------------ +r9 | 2006-12-13 15:53:52 +0300 | 2 lines + +Error message for non-MSC compiler changed. + +------------------------------------------------------------------------ +r8 | 2006-12-13 12:47:48 +0300 | 2 lines + +Added #ifndef for SIZE_MAX (it is defined in limits.h on MSVSC 8). + +------------------------------------------------------------------------ +r7 | 2006-12-13 01:08:02 +0300 | 2 lines + +License chaged to BSD-derivative. + +------------------------------------------------------------------------ +r6 | 2006-12-13 00:53:20 +0300 | 2 lines + +Added include to avoid warnings when it is included after stdint.h. + +------------------------------------------------------------------------ +r5 | 2006-12-12 00:58:05 +0300 | 2 lines + +BUGFIX: Definitions of INTPTR_MIN, INTPTR_MAX and UINTPTR_MAX for WIN32 and WIN64 was mixed up. + +------------------------------------------------------------------------ +r4 | 2006-12-12 00:51:55 +0300 | 2 lines + +Rise #error if _MSC_VER is not defined. I.e. compiler other then Microsoft Visual C++ is used. + +------------------------------------------------------------------------ +r3 | 2006-12-11 22:54:14 +0300 | 2 lines + +Added include to stdint.h. + +------------------------------------------------------------------------ +r2 | 2006-12-11 21:39:27 +0300 | 2 lines + +Initial check in. + +------------------------------------------------------------------------ +r1 | 2006-12-11 21:30:23 +0300 | 1 line + +Initial directory structure. +------------------------------------------------------------------------ diff --git a/Windows/misc/include/msinttypes/inttypes.h b/Windows/misc/include/msinttypes/inttypes.h new file mode 100644 index 0000000..ac7e32b --- /dev/null +++ b/Windows/misc/include/msinttypes/inttypes.h @@ -0,0 +1,306 @@ +// ISO C9x compliant inttypes.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2013 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the product nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_INTTYPES_H_ // [ +#define _MSC_INTTYPES_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include "stdint.h" + +// 7.8 Format conversion of integer types + +typedef struct { + intmax_t quot; + intmax_t rem; +} imaxdiv_t; + +// 7.8.1 Macros for format specifiers + +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 + +// The fprintf macros for signed integers are: +#define PRId8 "d" +#define PRIi8 "i" +#define PRIdLEAST8 "d" +#define PRIiLEAST8 "i" +#define PRIdFAST8 "d" +#define PRIiFAST8 "i" + +#define PRId16 "hd" +#define PRIi16 "hi" +#define PRIdLEAST16 "hd" +#define PRIiLEAST16 "hi" +#define PRIdFAST16 "hd" +#define PRIiFAST16 "hi" + +#define PRId32 "I32d" +#define PRIi32 "I32i" +#define PRIdLEAST32 "I32d" +#define PRIiLEAST32 "I32i" +#define PRIdFAST32 "I32d" +#define PRIiFAST32 "I32i" + +#define PRId64 "I64d" +#define PRIi64 "I64i" +#define PRIdLEAST64 "I64d" +#define PRIiLEAST64 "I64i" +#define PRIdFAST64 "I64d" +#define PRIiFAST64 "I64i" + +#define PRIdMAX "I64d" +#define PRIiMAX "I64i" + +#define PRIdPTR "Id" +#define PRIiPTR "Ii" + +// The fprintf macros for unsigned integers are: +#define PRIo8 "o" +#define PRIu8 "u" +#define PRIx8 "x" +#define PRIX8 "X" +#define PRIoLEAST8 "o" +#define PRIuLEAST8 "u" +#define PRIxLEAST8 "x" +#define PRIXLEAST8 "X" +#define PRIoFAST8 "o" +#define PRIuFAST8 "u" +#define PRIxFAST8 "x" +#define PRIXFAST8 "X" + +#define PRIo16 "ho" +#define PRIu16 "hu" +#define PRIx16 "hx" +#define PRIX16 "hX" +#define PRIoLEAST16 "ho" +#define PRIuLEAST16 "hu" +#define PRIxLEAST16 "hx" +#define PRIXLEAST16 "hX" +#define PRIoFAST16 "ho" +#define PRIuFAST16 "hu" +#define PRIxFAST16 "hx" +#define PRIXFAST16 "hX" + +#define PRIo32 "I32o" +#define PRIu32 "I32u" +#define PRIx32 "I32x" +#define PRIX32 "I32X" +#define PRIoLEAST32 "I32o" +#define PRIuLEAST32 "I32u" +#define PRIxLEAST32 "I32x" +#define PRIXLEAST32 "I32X" +#define PRIoFAST32 "I32o" +#define PRIuFAST32 "I32u" +#define PRIxFAST32 "I32x" +#define PRIXFAST32 "I32X" + +#define PRIo64 "I64o" +#define PRIu64 "I64u" +#define PRIx64 "I64x" +#define PRIX64 "I64X" +#define PRIoLEAST64 "I64o" +#define PRIuLEAST64 "I64u" +#define PRIxLEAST64 "I64x" +#define PRIXLEAST64 "I64X" +#define PRIoFAST64 "I64o" +#define PRIuFAST64 "I64u" +#define PRIxFAST64 "I64x" +#define PRIXFAST64 "I64X" + +#define PRIoMAX "I64o" +#define PRIuMAX "I64u" +#define PRIxMAX "I64x" +#define PRIXMAX "I64X" + +#define PRIoPTR "Io" +#define PRIuPTR "Iu" +#define PRIxPTR "Ix" +#define PRIXPTR "IX" + +// The fscanf macros for signed integers are: +#define SCNd8 "d" +#define SCNi8 "i" +#define SCNdLEAST8 "d" +#define SCNiLEAST8 "i" +#define SCNdFAST8 "d" +#define SCNiFAST8 "i" + +#define SCNd16 "hd" +#define SCNi16 "hi" +#define SCNdLEAST16 "hd" +#define SCNiLEAST16 "hi" +#define SCNdFAST16 "hd" +#define SCNiFAST16 "hi" + +#define SCNd32 "ld" +#define SCNi32 "li" +#define SCNdLEAST32 "ld" +#define SCNiLEAST32 "li" +#define SCNdFAST32 "ld" +#define SCNiFAST32 "li" + +#define SCNd64 "I64d" +#define SCNi64 "I64i" +#define SCNdLEAST64 "I64d" +#define SCNiLEAST64 "I64i" +#define SCNdFAST64 "I64d" +#define SCNiFAST64 "I64i" + +#define SCNdMAX "I64d" +#define SCNiMAX "I64i" + +#ifdef _WIN64 // [ +# define SCNdPTR "I64d" +# define SCNiPTR "I64i" +#else // _WIN64 ][ +# define SCNdPTR "ld" +# define SCNiPTR "li" +#endif // _WIN64 ] + +// The fscanf macros for unsigned integers are: +#define SCNo8 "o" +#define SCNu8 "u" +#define SCNx8 "x" +#define SCNX8 "X" +#define SCNoLEAST8 "o" +#define SCNuLEAST8 "u" +#define SCNxLEAST8 "x" +#define SCNXLEAST8 "X" +#define SCNoFAST8 "o" +#define SCNuFAST8 "u" +#define SCNxFAST8 "x" +#define SCNXFAST8 "X" + +#define SCNo16 "ho" +#define SCNu16 "hu" +#define SCNx16 "hx" +#define SCNX16 "hX" +#define SCNoLEAST16 "ho" +#define SCNuLEAST16 "hu" +#define SCNxLEAST16 "hx" +#define SCNXLEAST16 "hX" +#define SCNoFAST16 "ho" +#define SCNuFAST16 "hu" +#define SCNxFAST16 "hx" +#define SCNXFAST16 "hX" + +#define SCNo32 "lo" +#define SCNu32 "lu" +#define SCNx32 "lx" +#define SCNX32 "lX" +#define SCNoLEAST32 "lo" +#define SCNuLEAST32 "lu" +#define SCNxLEAST32 "lx" +#define SCNXLEAST32 "lX" +#define SCNoFAST32 "lo" +#define SCNuFAST32 "lu" +#define SCNxFAST32 "lx" +#define SCNXFAST32 "lX" + +#define SCNo64 "I64o" +#define SCNu64 "I64u" +#define SCNx64 "I64x" +#define SCNX64 "I64X" +#define SCNoLEAST64 "I64o" +#define SCNuLEAST64 "I64u" +#define SCNxLEAST64 "I64x" +#define SCNXLEAST64 "I64X" +#define SCNoFAST64 "I64o" +#define SCNuFAST64 "I64u" +#define SCNxFAST64 "I64x" +#define SCNXFAST64 "I64X" + +#define SCNoMAX "I64o" +#define SCNuMAX "I64u" +#define SCNxMAX "I64x" +#define SCNXMAX "I64X" + +#ifdef _WIN64 // [ +# define SCNoPTR "I64o" +# define SCNuPTR "I64u" +# define SCNxPTR "I64x" +# define SCNXPTR "I64X" +#else // _WIN64 ][ +# define SCNoPTR "lo" +# define SCNuPTR "lu" +# define SCNxPTR "lx" +# define SCNXPTR "lX" +#endif // _WIN64 ] + +#endif // __STDC_FORMAT_MACROS ] + +// 7.8.2 Functions for greatest-width integer types + +// 7.8.2.1 The imaxabs function +#define imaxabs _abs64 + +// 7.8.2.2 The imaxdiv function + +// This is modified version of div() function from Microsoft's div.c found +// in %MSVC.NET%\crt\src\div.c +#ifdef STATIC_IMAXDIV // [ +static +#else // STATIC_IMAXDIV ][ +_inline +#endif // STATIC_IMAXDIV ] +imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) +{ + imaxdiv_t result; + + result.quot = numer / denom; + result.rem = numer % denom; + + if (numer < 0 && result.rem > 0) { + // did division wrong; must fix up + ++result.quot; + result.rem -= denom; + } + + return result; +} + +// 7.8.2.3 The strtoimax and strtoumax functions +#define strtoimax _strtoi64 +#define strtoumax _strtoui64 + +// 7.8.2.4 The wcstoimax and wcstoumax functions +#define wcstoimax _wcstoi64 +#define wcstoumax _wcstoui64 + + +#endif // _MSC_INTTYPES_H_ ] diff --git a/Windows/misc/include/msinttypes/stdint.h b/Windows/misc/include/msinttypes/stdint.h new file mode 100644 index 0000000..4fe0ef9 --- /dev/null +++ b/Windows/misc/include/msinttypes/stdint.h @@ -0,0 +1,259 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2013 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the product nor the names of its contributors may +// be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#if _MSC_VER >= 1600 // [ +#include +#else // ] _MSC_VER >= 1600 [ + +#include + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we should wrap include with 'extern "C++" {}' +// or compiler give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#ifdef __cplusplus +extern "C" { +#endif +# include +#ifdef __cplusplus +} +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types + +// Visual Studio 6 and Embedded Visual C++ 4 doesn't +// realize that, e.g. char has the same size as __int8 +// so we give up on __intX for them. +#if (_MSC_VER < 1300) + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; +#else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; +#endif +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; + + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef signed __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 signed int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +// These #ifndef's are needed to prevent collisions with . +// Check out Issue 9 for the details. +#ifndef INTMAX_C // [ +# define INTMAX_C INT64_C +#endif // INTMAX_C ] +#ifndef UINTMAX_C // [ +# define UINTMAX_C UINT64_C +#endif // UINTMAX_C ] + +#endif // __STDC_CONSTANT_MACROS ] + +#endif // _MSC_VER >= 1600 ] + +#endif // _MSC_STDINT_H_ ]

    u*`fdFA|1Wn{{Fzm=7DW8pEpM~6w8+0M(#%sKw%!>hRX5$|<8n!E?# zuvAWvy8&co(@P@8hHE+Q$|jrkv%0~Wk4^@&k8DrApQDeqE7uLq<@TJT;M^xUO>fbq z%(`Nhjq}g!CBi7+6TOuFXcxHD))pH_gl=$Jgj~YCa;Y-UndO!CmPEJ+ag~sZoobgV zvjtPu!U4_nBKp-EvWc6)-usnbYHz_DEci;uWZXTvz?Wc01lte+6C>u{Zd}^TGbNue zQxN<^+)eO`8&Y(Ea!Iq!nY{j%ZttJN;5=w>ii?O#m%WeY+m9uJpNK0)eUx{dZZK-U z$L=9Qv4~>|Mt#wA=`!0hh3(adOPH)#3TbFUEoXEKVOUUsnCl{n|*es>@CL(UK!o# z24l*47z`P80Li86=6X1;*yLCFy|b+(>@E1bgzr3J-{hD`{ENR!oOv8q60AB2=931q z9cOciGut=8D`fBfRK#mW@?6r)y-nK(PKT@_Sm;t^?Oz(xkYwTy4|``y^JIo2CL`e4 z1qmX+553#~XeGaEUYbIG-}QlZqMpo%+t; zQfBRIJ|%i`&S2DE99_!ny-e}ArVP&TcS$Z`);^}qqv<%G{v5M+-n7x2v3Qe~OxB*} zQ+&Kxn~{HZ<#sXiSgs^6;%7DZ9Si$G>i0>puU6gQPKXHLXFK=>O`O~QFy_){wRKw0 z7aVru)0<13+3IQIyl8PJY>C+!Q+B2$i!o_4%xd4X)pOor3_nr2X3ff&wofd(jPfIB R7kE?Vao*x}KeM{*zW^NgmrVcw literal 0 HcmV?d00001 diff --git a/Windows/codecs/x64/libvorbis-0.dll b/Windows/codecs/x64/libvorbis-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..f57124be12d45160efc2345c25277c708bc7d61a GIT binary patch literal 170496 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

2!!_sgQwM;5={yCecK-wol3nx*SYZ~1 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�&Qw7 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 literal 0 HcmV?d00001 diff --git a/Windows/SDL2/lib/SDL2.lib b/Windows/SDL2/lib/SDL2.lib new file mode 100644 index 0000000000000000000000000000000000000000..0ac84d292be475cdf212bc9f5f34e843b633f48c GIT binary patch literal 188076 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 L45TQ^bH@JxAxtA7 literal 0 HcmV?d00001 diff --git a/Windows/SDL2/lib/SDL2main.lib b/Windows/SDL2/lib/SDL2main.lib new file mode 100644 index 0000000000000000000000000000000000000000..53d85a2774a449ead902d635cd69d8e1c1df8250 GIT binary patch literal 3944 zcmdT{Uu;uV7(bVmZjL{zS_E}!k&8%>(rvVCg7$7JW6X9N8`}~Yc3pQjy0pE^ZO6bg z1}sY?WkwT46C*Fe12Hig13nnz0+aco#`qu)Mxze|0~&oHMq}phJLlf@cI`0u=4tMC zzkcWU{qA?Z^WAgLS-&f)#|}MRwas1JYW=?LK7YO6=P$NgX>08W zw>5=2l+KAvz^9D_d`UH_=|=;;Kx4oc9n$nnJT+S66^2u5=ic__kkT5>L=yquZe7=O zfr<3TQ{iYlrPTUaBngE@Ci(5ob5XaD3kk`{F5?MdQqk{!mxV=X__vCv-(gnDV3lWJ zGM=ih8_?B+8cnMMJ;6`}mSJr&%`@%MhQ?UcHnW%v$EBW7>-GBmsKffY?Zz_(t3r~K zwY_s@=!S!_M&z8DXINKbnZv61$CwSuYnY3oR^x7a9E@xn= z#uR61eCN?I4UB)e@O%)ra`7Q$EJ(uA%EfmV`rFIl%EZ?LT+F~O6(5C_1V*>uczk8} zvcR0O;L44c_)Y`!mIb#I-#K6|Sa9X|D#7evd?;h8B85@nP?oVL zsqhE-;^~QKqJ?x?UIwu2;MM59&8yMC?sYOyRj}3I*>pw7_2GC-*V5WZ#{GErW_Ra! zCZ3Exk0sCDq9w=U2~}roj2)s!b1~+;PI_+ESwC}`N~ao^gV89dLLK}+h3aB_adh*w zkzsXpYa?#4wz{{v&4m>}@d|Lo5JXnNayOm*(?QwZHNS@J#x4KH)cnb;?3}3S;_+}{ z4Jv}rF6TqCy(j+=`Snh_rtP?Qk5$fpW0G8-`eowbvIGYY)X#8=TvlGm`sRYNi&&~( zejRel+{vK4Zu+cDrhG-$b$(wv9b(J&br-@B=HGI&uBltqCq4nFPnfReX6@50QWrw8 zj%jKJ@vb{*Z>&D?3cx*mg4l2h%5rW-!l-g{_MJi5i4a`b7xP)UMhq~&Uv~A+1t~tp z1h04+u)RizPf=g}t=w#7V}>)-ys#!8y1@30F-pp}xhv96bYySz8issOu6gd@0iKES z(~n*wQ!Bu|373Q21Nj)&9)%Q@K|P`}JkUgCv_RX4%fb2~DVq)!gA^W=Na3MD6CP)w zZNTMXA3zejgI$Dtgliu|*5GonFCl4#atJ)RUC`F@-aXLn<60ORO`3z9f+iw;6`F|jO=u!gY(us-Fp{+0fCFQ+gxa}gr&SjZ zrTYGvRP^w_yvW#cGNIuuu@@y+Je?q49KRVWcy$_H zgn^gk^Fb@J4O@dkq&7ZP)^TC43JlFOmETAE{^}^8r(mI0u`sUF!oa1N?DGp28Y#68 zODvx)Sj?!eE?7*jpGqvhmRSBQvRJc9wPKTuFA%$S<{S(n8WcK}02*P6vr2_;lSopN z`o8+S;I-NCqF%wY*RWt4VOV+>EG8yiVmV%7dArDBoi92&6wg;h$$ZhGWs_*GiRQg? zvm1pb_UtgBtzZfO``l$%YhW|WKTRfo>0STIvpKVo3$h6 zaq6}QALAr)hes-&?#QT`i6w^<@s!FU5j;E+X;Y))t-7izwRIvcag^c_s+ll$Jl$$^ z_^1gFX|ZU6FMd22{V(SyJsfyNT<5$%uF%W zRYg_xJOaktTnG;lF(QPA7`YJ@5HS}Kk&6*AV#J6Txe=ox=5iwRUUR~)_k6m-dm7DEPZYnojF6FnC%bPc6 zrOEucd2_KmHC>eYo6Zno;@v`gry<05?-t_m3rT*kC_%{g@a*`H^psoLv+nDCaau&i$YmK{@ZMB+tr<5tL{5NS^a?F@o}AUnALau^2(Q z_z=mZa2_a^-Ai)$cf|#^7LAg$l?1h+7_TNHs;G<#$Wgg;2Ie0nA;bk#`^3(4mdFkiH z2+ED;k=*nWF@myu2TASIVg%*LVf8Mo@m~ ze3D<@Ek;n@ek;j4?hzv>?|O*jJ!gm!l)J7Xc`ww3a`%Tx-uG28g7RAzlYHPtF@o~j zcar=LTq~4&&LsKBoESm*C>#&vV;?8^I9xB3|8+IVAAt?!kMAS-6Szhw_mxRL1979= z{{xc0oEIY~e+Ae=`D-|Tln2ix`N9D)g7VO3Nd6wKHOfE0bwT;kStMVE*iat%0?Ge9 zM~tBSD_m=oe}nTu`T7{iH};AVlyAO<=BX&?h_f5zrKv*Z*CVEl)r^*hVszGBwuWb49dgzll&9-qx|#hN&e;YB7^dk zEXku#2g+B!Lh|o$Pf-5jPLlupmdKzyHc#>`I6su{oJsP%n?wfX`*5v6Mui~ByiAOu zjD4JB@;ot$@|0sFPyMtQMLFvVlC$3=Mp4fB7RfVi5Thv1{2q%bxs2D|AgmXkW1Z7cf_!!AcAP$t5 zPm?Tl#3)MT0g~D|Vie`b%_PU}6{9G}&m~zoAVyJIZzg#q#D>z_LUQ7W7)3dCH_5BU z#3;(o93uHyI1iNDE+BbLTa2RI4#z-w!`UQ12Rf9W|2)ZCE)%0Dcf6Y9t@nvhl(&Np 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